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

Tutorial VHDL – 21: Diseño de un circuito sumador completo de 8 bits usando VHDL

Nota: Se recomienda seguir esta serie de tutoriales de VHDL en orden, comenzando con el primer tutorial .

En el tutorial anterior, Tutorial VHDL – 20, aprendimos cómo diseñar convertidores de código binario a gris y de gris a 4 bits usando VHDL.

En este tutorial, vamos a:

  • Escriba un programa VHDL que construya un circuito sumador completo de 8 bits
  • Verifique la forma de onda de salida del programa (el circuito digital) con la operación del circuito.

El diagrama de bloques del sumador completo de 8 bits:

Ahora escribamos, compilemos y simulemos un programa VHDL. Luego obtendremos la salida de la forma de onda y la verificaremos.

Antes de comenzar, asegúrese de revisar el procedimiento paso a paso proporcionado en el Tutorial VHDL – 3 para diseñar el proyecto. Esto asegurará que edite y compile correctamente el programa y el archivo de forma de onda, así como el resultado final.

Para este proyecto, utilizamos un estilo de modelado estructural para construir el circuito sumador completo de 8 bits. Como componente se utiliza un sumador completo de 1 bit.

Programa VHDL

biblioteca ieee;
utilice ieee.std_logic_1164.all;

entidad FA_8bit es
puerto(x,y: en std_logic_vector(7 a 0);
cin: en std_logic;
suma: salida std_logic_vector(7 a 0);
co: salida std_logic);
finalizar FA_8bit;

La arquitectura FA_arch de FA_8bit es
señal de cary: std_logic_vector (6 a 0);

El componente full_adder es
puerto (p,q,r:in std_logic; sm,cr:out std_logic);
componente final;
para comenzar
a0:portmap full_adder (x(0),y(0),cin,sum(0),cary(0));
a1:portmap full_adder (x(1),y(1),cary(0),suma(1),cary(1));
a2:portmap full_adder (x(2),y(2),cary(1),suma(2),cary(2));
a3:portmap full_adder (x(3),y(3),cary(2),suma(3),cary(3));
a4:portmap full_adder (x(4),y(4),cary(3),suma(4),cary(4));
a5:portmap full_adder (x(5),y(5),cary(4),suma(5),cary(5));
a6:portmap full_adder (x(6),y(6),cary(5),suma(6),cary(6));
a7:portmap full_adder (x(7),y(7),cary(6),suma(7),co);
finalizar FA_arch;

biblioteca ieee;
utilice ieee.std_logic_1164.all;
la entidad full_adder es
puerto (p,q,r:in std_logic; sm,cr:out std_logic);
finalizar complete_adder;

La arquitectura FA_arc de full_adder es
para comenzar
sm <= p xor q xor r;
cr <= (peq) o (qer) o (rep);
finalizar FA_arc;

Puede resultar útil revisar los dos primeros tutoriales de VHDL ( 1 y 2 ) de esta serie para refrescar su memoria sobre cómo funciona.

Luego compile el programa anterior, creando y guardando un archivo de forma de onda con todas las entradas y salidas requeridas enumeradas (asegurándose de que se apliquen todas las combinaciones de entradas diferentes). Luego simule el proyecto. Deberías obtener el siguiente resultado...

Forma de onda de simulación

Como puede verse en esta figura, la suma de x, y y cin están resaltadas en rojo y azul.

En el próximo tutorial, aprenderemos cómo diseñar un comparador digital usando VHDL.

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.