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 >>
Website | Veja + conteúdo

Sou formado em Engenharia Elétrica na USP Sao Carlos, com mestrado em Engenharia Elétrica no Rochester Institute of Technology pelo CsF. Tenho 17 anos de experiência em projetos de circuitos eletrônicos. Escrevo regularmente para o Embarcados, adoro eventos sobre tecnologia, onde posso rever amigos e conhecer pessoas do ramo.

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.

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