Nota: é recomendado seguir esta série de tutoriais VHDL em ordem, começando com o primeiro tutorial.
No tutorial anterior, Tutorial VHDL – 19projetamos um contador binário de 4 bits usando VHDL.
Neste tutorial, iremos:
- Escreva um programa VHDL para construir um conversor binário de 4 bits para cinza e cinza para um conversor de código binário
- Verifique a forma de onda de saída do programa (circuito digital) com a tabela verdade do conversor de código
O conversor de código binário para cinza de 4 bits
Tabela verdade
Agora vamos escrever, compilar e simular um programa VHDL. Então, obteremos a saída em forma de onda e a verificaremos com a tabela verdade fornecida.
Antes de começar, certifique-se de revisar o procedimento passo a passo fornecido em Tutorial VHDL – 3 para elaborar o projeto. Isso garantirá que você edite e compile corretamente o programa e o arquivo de forma de onda, bem como a saída final.
Programa VHDL
biblioteca ieee;
use ieee.std_logic_1164.all;
entidade b2g_code é
porta (b: em std_logic_vector(3 até 0);
g: out std_logic_vector(3 até 0));
fim b2g_code;
arquitetura b2g_arch de b2g_code é
começar
g(3) <=b(3);
g(2) <= b(3) xou b(2);
g(1) <= b(2) xou b(1);
g(0) <= b(1) xou b(0);
fim b2g_arch;
Pode ser útil revisar os dois primeiros tutoriais de VHDL (1 e 2) desta série para refrescar sua memória sobre como isso funciona.
Em seguida, compile o programa acima, criando e salvando um arquivo de forma de onda com todas as entradas e saídas necessárias listadas (garantindo a aplicação de todas as diferentes combinações de entrada). Em seguida, simule o projeto. Você deve obter o seguinte resultado…
Forma de onda de simulação
É fácil verificar todas as diferentes combinações da entrada do código binário (b0-b3) com a saída do código cinza (g0 – g3). A seguir, vamos fazer o procedimento inverso. Construiremos um circuito conversor de código cinza para binário.
O circuito conversor de código cinza para binário
Programa VHDL
biblioteca ieee;
use ieee.std_logic_1164.all;
entidade g2b_code é
porta (g: em std_logic_vector(3 até 0);
b: saída std_logic_vector(3 até 0));
fim g2b_code;
arquitetura g2b_arch de g2b_code é
começar
b(3) <= g(3);
b(2) <= g(3) xou g(2);
b(1) <= g(3) xou g(2) xou g(1);
b(0) <= g(3) xou g(2) xou g(1) xou g(0);
fim g2b_arch;
Formas de onda de simulação
Fica claro na figura que a entrada do código cinza (g0 – g3) e a saída do código binário (b0 – b3) correspondem à tabela verdade fornecida.
No próximo tutorial, construiremos um circuito somador completo de 8 bits usando VHDL.