Elementos importantes dos circuitos lógicos digitais são os codificadores e os decodificadores. Assim. dando prosseguimento aos artigos sobre eletrônica digital, fundamental para o entendimento do princípio de funcionamento dos computadores e de muitos outros equipamentos, falaremos dos codificadores e decodificadores. Estes importantes sistemas combinacionais que podem ser elaborados tanto a partir de componentes discretos como obtidos totalmente na forma integrada aparecem numa infinidade de aplicações que os leitores devem conhecer.

Os codificadores e decodificadores são circuitos que transformam informações obtidas de determinada maneira em uma informações em outra forma de código que possam ser usadas pelos circuitos seguintes.
Como a transformação dos códigos que ocorrem com maior frequência nos circuitos digitais são as que envolvem a passagem de sinais na forma binária para a forma digital e vice-versa, os termos codificadores e decodificadores são específicos para estes tipos de sinais.
Assim, denominamos codificadores os circuitos que transformam sinais obtidos na forma decimal em sinais binários ou BCD (Binary Coded Decimal)ou ainda sinais obtidos a partir de 16 entradas em sinais codificados em hexadecimal enquanto que denominamos decodificadores os circuitos que convertem sinais binários ou BCD em sinais decimais ou de outro tipo, como por exemplo os hexadecimais ou ainda capazes de excitar um mostrador de 7 segmentos.
Analisemos os dois tipos de circuitos.

CODIFICADORES
Podemos definir de forma simples um circuito codificador como um circuito que seja capaz de converter um sinal de determinado tipo, como por exemplo decimal, num sinal digital ou BCD.
Assim, se tivermos 10 chaves de acionamento ou 10 entradas de sinais diferentes que representem valores entre 0 e 9, um codificador, como o mostrado na figura 1 fará a conversão desses sinais em BCD.



Neste sistema temos 10 entradas e 4 saídas com a obtenção de níveis lógicos conforme a seguinte tabela verdade:    


Observe que nesta tabela a saída que representa o dígito menos significativo (LSB) é S1 enquanto que a saída que representa o dígito mais significativo MSB) é S4.
Assim, os "pesos"das saídas nesta tabela e nas que são dadas como exemplo neste artigo são:
S1 = 1
S2 = 2
S3 = 4
S4 = 8

Da mesma forma podemos ter um circuito codificador que converta os sinais de 16 entradas em sinais correspondentes a uma informação hexadecimal.


A tabela verdade para tal codificador mostrado na figura 2 será:



Um circuito prático de um codificador pode ser obtido tanto a partir da utilização de portas lógicas como a partir de uma matriz de diodos.
O processo que utiliza uma matriz de diodos é o mais simples de entender pela sua própria estrutura que visualmente corresponde a própria tabela verdade.
Assim, para o caso da decodificação de 10 entradas em saídas BCD podemos elaborar a matriz mostrada na figura 3.

 

Veja então que o que temos de fazer é simplesmente colocar um diodo nas linhas em que precisamos de um nível lógico 1 e não colocar diodo nenhum nas linhas em que o nível lógico deva ser 0.
Isso significa que nas linhas em que temos o diodo, quando a entrada vai ao nível alto, a corrente pode circular produzindo assim uma tensão de saída (nível alto) no resistor de carga correspondente, conforme mostra a figura 4.



Deve-se apenas considerar que neste circuito, utilizando-se diodos de silício temos uma queda de tensão da ordem de 0,7 volts na saída, o que deve ser compensado.
Veja que, com este tipo de circuito é possível "programar" o codificador para se ter saídas digitais de qualquer combinação a partir de uma entrada.
Assim, conforme mostra a figura 5, nada impede que tenhamos uma sequência completamente diferente da convencional para a codificação de um circuito de 4 entradas.


Neste circuito temos a seguinte tabela verdade:



Circuitos integrados que reúnem esta função tanto em lógica TTL como CMOS são disponíveis, mas deles falaremos mais adiante.

 


DECODIFICADOR
Segundo nossa definição, um circuito decodificador faz exatamente "o contrário" do codificador, passando um conjunto de sinais BCD, binário ou de outra forma normalmente usada pelos circuitos digitais para a forma decimal ou outra forma que seja apropriada a excitação de um display.
Na figura 6 temos o que seria um bloco de um decodificador de 4 entradas operando em binário que fornece uma saída de 10.



A tabela verdade para um circuito decodificador deste tipo seria a seguinte:



A implementação deste circuito pode ser feita facilmente com portas lógicas conforme mostra a figura 7.


Conforme podemos ver, o circuito para decodificação BCD em decimal com saídas ativadas "uma de 10" usa tanto portas AND como inversores.
Uma característica importante deste circuito é que ele possui uma entrada STROBE que impede o funcionamento do circuito quando se tem uma combinação ilegal dos estados de entrada, já que temos apenas a decodificação BCD e não hexadecimal.
Assim, se aparecer na entrada a combinação 1011 o circuito é inibido.
Para a decodificação hexadecimal teremos a seguinte tabela verdade:



Um outro tipo de decodificador muito usado em projetos eletrônicos que envolvem displays é o decodificador BCD para 7 segmentos.
Conforme mostra a figura 8, os displays de 7 segmentos podem formar algarismos de 0 a 9 e alguns outros símbolos acendendo uma combinação de 7 diodos eletroluminescentes ou LEDs.



Assim, o que temos de fazer é entrar com os sinais BCD no circuito conveniente e obter na saída os níveis que acionem os segmentos correspondentes ao dígito que deve aparecer.
Uma tabela verdade para os algarismos de 0 a 9 seria a seguinte:



Observe que a condição de máximo consumo do display ocorre quando temos o algarismo 8 pois todos os dígitos são acesos.
Para um circuito hexadecimal poderíamos ter as condições adicionais mostradas na figura 9.


Para implementar o circuito capaz de fazer a decodificação podemos usar portas numa configuração que é mostrada na figura 10.


Na prática, os circuitos integrados que contém estas funções precisam ter a capacidade de excitar cargas de maior consumo que as normalmente correspondentes às entradas de outros circuitos lógicos da mesma família.
Assim, os circuitos integrados que contém estas funções normalmente são dotados de buffers que em alguns casos podem até fornecer correntes elevadas sob tensões diferentes das normalmente utilizadas pela mesma família.
De fato, se bem que hoje já não sejam mais encontrados com a mesma frequência, houve tempo em que displays a gás e de filamento eram usados com estes circuitos.
Nos displays a gás havia um circuito de alta tensão que ionizava os segmentos a serem acionados de modo que eles "apareciam" acesos enquanto que nos displays Numitron da RCA, os segmentos eram filamentos de tungstênio montados numa base isolante na disposição correspondente aos displays comuns de 7 segmentos.
Percorridos por uma corrente intensa, estes filamentos acendiam.
Dentro da família TTL, por exemplo, ainda encontramos nos manuais decodificadores projetados para excitar tais displays.
Hoje, entretanto, os displays mais usados são os de LEDs ou eletroluminescentes que apenas necessitam de resistores externos de limitação de corrente.
Observe ainda que no circuito que demos, as saídas do decodificador vão ao nível alto no segmento que deve acender. Isso significa que os LEDs correspondentes que acendem devem ficar com o anodo ligado na saída do decodificador e com o catodo à terra.
Conforme mostra a figura 11, estes decodificadores exigem displays do tipo que tem todos os catodos do display ligados à terra. Dizemos que tais decodificadores são para displays de catodo comum.



Em contrapartida existem os decodificadores para displays de anodo comum, ou seja, em que os segmentos são ativados quando a saída correspondente vai ao nível baixo, conforme mostra a figura 12.



O circuito decodificador para tais displays pode ser exatamente o mesmo que demos como exemplo na figura 10, com a única diferença que, ou acrescentaríamos inversores nas saídas ou ainda usaríamos portas NOR em lugar de portas OR na saída, conforme mostra a figura 13.




EXEMPLOS DE INTEGRADOS CODIFICADORES/DECODIFICADORES
Nos manuais TTL e CMOS praticamente não se fazem distinções entre codificadores e decodificadores. Os dois tipos de circuito costumam ser indistintamente chamados de "decodificadores".


Damos a seguir alguns exemplos:

TTL:
7442 - decodificador BCD para decimal
7445 - decodificador BCD para decimal com driver
7447 - decodificador BCD para 7 segmentos com saída de 30 V x 40 mA
74145 - decodificador BCD para decimal com saída de 15 V


CMOS:
4028 - decodificador BCD para decimal
4027 - contador decodificador com saída de 7 segmentos
4017 - contador decodificador com saída 1 de 10