Tutorial de Verilog: Conversor de Código Gray para Código Binário

Código Gray para Código Binário

No post anterior apresentei um Conversor de Código Binário para Código Gray, expliquei brevemente como funciona o Código Gray e qual foi a sacada de seu criador, Frank Gray, mostrei um circuito digital que pode converter números em código binários em código Gray e apresentei dois códigos em Verilog, para um conversor 4-bits e para um conversor 8-bits. Neste post mostro então a direção contrária. Vou desenvolver nesse texto um Conversor de Código Gray para Código Binário.

Abaixo está disposta uma tabela que mostra um conversor de codificação Gray para binário para 4-bits. É a mesma tabela mostrada no post anterior, mas com ordem inversa.

Código Gray para Código Binário

Representação do Circuito Conversor de Código Gray 4-bits para Binário com portas lógicas digitais

Para representar o circuito conversor de Gray para binário, basta utilizarmos portas XOR, conectando a saída do bit seguinte à entrada da XOR responsável pelo bit anterior, conforme ilustrado no circuito abaixo. Isso é o mesmo que aplicar a porta XOR para os dois bits significativo, uma porta XOR para os três bits mais significativos e assim por diante.

Código Gray para Código Binário
Figura 2: Representação do Circuito Conversor de Código Gray 4-bits para Binário

Representação do Conversor de Código Gray 4-bits para Binário em Verilog

Comentários sobre o código

Nesse código mostro que a implementação com XORs é dependente de todos os bits de entrada para o bit menos significativo do sinal de saída e que o bit mais significativo para o sinal de entrada é igual ao bit mais significativo para o sinal de saída. Veja que todos os bits da saída são independentes dos bits de saída, apenas dependem dos bits de entrada.

Outra forma de escrever o mesmo código

Comentários sobre o código

Neste caso represento o circuito exatamente conforme a figura deste post. A entrada do anterior faz parte do XOR do bit menos significativo que vem em seguida. Isso só é possível com o uso do operador <=. Com isso, a sequência de ações é respeitada. A saída é gerada e depois aplicada ao XOR seguinte. 

Testbench para o Conversor de Código Gray 4-bits para Binário

Forma de Onda resultante do teste

A forma de onda resultante foi de acordo com o esperado, conforme a primeira imagem, que ilustra a conversão entre código Gray para Código Binário.

Código Gray para Código Binário
Figura 3: Conversor de Código Gray 4-bits para Binário – Forma de Onda resultante
Código Gray para Código Binário
Figura 4: Conversor de Código Gray 4-bits para Binário – Forma de Onda resultante

Caso queira reproduzir o teste feito acima, faça Download do Projeto para o Quartus da Altera e aperte o play:

download_proteus_arduino_lcd

O segundo projeto pode ser baixado clicando na imagem abaixo:

download_proteus_arduino_lcd

Representação do Circuito Conversor de Código Gray 8-bits para Binário com portas lógicas digitais

Da mesma forma que fizemos com o circuito anterior, basta acrescentar mais quatro entradas e saídas e continuar a conectar as portas lógicas XOR da mesma forma que antes até que se tenha o circuito abaixo:

Código Gray para Código Binário
Figura 5: Representação do Circuito Conversor de Código Gray 8-bits para Binário

Representação do Conversor de Código Binário 8-bits para Gray em Verilog

Comentários sobre o código

Implementei o código com formato comportamental (behavioral), que diz que o código representa as ações que ele deseja tomar. No bloco de always usei o Asterisco, que indica que na mudança de qualquer sinal de entrada, o bloco always executaria. O circuito foi desenvolvido com operações ^, mas poderia ser escrito com portas logicas XOR.

Testbench para o Conversor de Código Binário 8-bits para Gray

Forma de Onda resultante do teste

A forma de onda resultante foi de acordo com o esperado. A inspeção do resultados foi totalmente visual. Isso é impraticável para grandes projetos. Vou explicar nos próximos posts como utilizar um arquivo com diversos sinais de entrada para que se possa aplicar esse vetor de testes ao circuito e se possa obter uma saída também comparável a um arquivo de entrada que possui esses resultados. Esse arquivo pode ser feito com qualquer software de alto nível e a vida do desenvolvedor muito mais prática.

Código Gray para Código Binário
Figura 6: Conversor de Código Gray 8-bits para Binário – Forma de Onda resultante

Caso queira reproduzir o teste feito acima, faça Download do Projeto para o Quartus da Altera e aperte o play:

download_proteus_arduino_lcd

É isso ai pessoal, deixem seus comentários.

Outros artigos da série

<< Tutorial de Verilog: Conversor de Código Binário para Código GrayTutorial de Verilog: Somador com Propagação do Carry – Somador Ripple-Carry >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware, Sistemas Digitais
, ,
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
elder
elder
02/11/2020 15:28

nas imagens ta o contrario, indica binario para codigo gray.

Talvez você goste:

Séries



Outros da Série

Menu

EVENTO ONLINE

Simplificando seus projetos de Internet das coisas com o iMCP HT32SX Sigfox

DATA: 18/05 às 15:00h