Tutorial VHDL – 21: Projetando um circuito somador completo de 8 bits usando VHDL

Nota: é recomendado seguir esta série de tutoriais VHDL em ordem, começando com o primeiro tutorial.

No tutorial anterior, Tutorial VHDL – 20aprendemos como projetar conversores de código binário para cinza e cinza para binário de 4 bits usando VHDL.

Neste tutorial, iremos:

  • Escreva um programa VHDL que construa um circuito somador completo de 8 bits
  • Verifique a forma de onda de saída do programa (o circuito digital) com a operação do circuito

O diagrama de blocos de somador completo de 8 bits:

Agora vamos escrever, compilar e simular um programa VHDL. Então, obteremos a saída da forma de onda e a verificaremos.

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.

Para este projeto, usamos um estilo de modelagem estrutural para construir o circuito somador completo de 8 bits. Um somador completo de 1 bit é usado como componente.

Programa VHDL

biblioteca ieee;
use ieee.std_logic_1164.all;

entidade FA_8bit é
porta(x,y: em std_logic_vector(7 até 0);
cin: em std_logic;
soma: out std_logic_vector(7 até 0);
co: saída std_logic);
fim FA_8bit;

arquitetura FA_arch de FA_8bit é
sinal cary: std_logic_vector (6 até 0);

componente full_adder é
porta (p,q,r:in std_logic; sm,cr:out std_logic);
componente final;
começar
a0:mapa de porta full_adder (x(0),y(0),cin,sum(0),cary(0));
a1:mapa de porta full_adder (x(1),y(1),cary(0),sum(1),cary(1));
a2:mapa de porta full_adder (x(2),y(2),cary(1),sum(2),cary(2));
a3:mapa de porta full_adder (x(3),y(3),cary(2),sum(3),cary(3));
a4:mapa de porta full_adder (x(4),y(4),cary(3),sum(4),cary(4));
a5:mapa de porta full_adder (x(5),y(5),cary(4),sum(5),cary(5));
a6:mapa de porta full_adder (x(6),y(6),cary(5),sum(6),cary(6));
a7:mapa de porta full_adder (x(7),y(7),cary(6),sum(7),co);
fim FA_arch;

biblioteca ieee;
use ieee.std_logic_1164.all;
entidade full_adder é
porta (p,q,r:in std_logic; sm,cr:out std_logic);
fim completo_adder;

arquitetura FA_arc de full_adder é
começar
sm <= p xor q xor r;
cr <= (p e q) ou (q e r) ou (r e p);
fim FA_arc;

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

Como pode ser observado nesta figura, a soma de x, y e cin estão destacadas em vermelho e azul.

No próximo tutorial, aprenderemos como projetar um comparador digital usando VHDL.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.