in

Sumador completo de Verilog – javatpoint

verilog full adder

El sumador completo es un componente digital que realiza tres números y se implementa utilizando las puertas lógicas. Es el componente principal dentro de una ALU de un procesador y se utiliza para incrementar direcciones, índices de tablas, punteros de búfer y otros lugares donde se requiere la adición.

Un sumador completo de un bit agrega tres números binarios de un bit, dos bits de entrada, un bit de acarreo y genera una suma y un bit de acarreo.

Un sumador completo se forma utilizando dos medios sumadores y ORing sus resultados finales. Un medio sumador suma dos números binarios. El sumador completo es un circuito combinacional para que pueda modelarse en lenguaje Verilog.

La expresión lógica para las dos salidas suma y llevar se dan a continuación. A, B son las variables de entrada para números binarios de dos bits, Cin es la entrada de acarreo y Cout son las variables de salida para Sum y Carry.

Sumador completo de Verilog

Mesa de la verdad

A B Cin Cout Suma
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

Ejemplo

A continuación se muestra un ejemplo de un sumador de 4 bits, que acepta dos números binarios a través de las señales ay b.

Un sumador es un circuito combinacional. Por lo tanto, Verilog puede modelarlo usando una asignación continua con asignar o un siempre bloque con una lista de sensibilidad que comprende todas las entradas.

El siguiente código muestra los usos siempre bloque que se ejecuta cada vez que alguna de sus entradas cambia de valor.

Esquema de hardware

Sumador completo de Verilog

Banco de pruebas

Primero, agregue la directiva de escala de tiempo. Comienza con un acento grave `pero no termina con un punto y coma. La directiva de escala de tiempo se utiliza para especificar la unidad de tiempo utilizada en otros módulos y la resolución de tiempo (un picosegundo). La resolución de tiempo es el factor de precisión que determina el grado de precisión de la unidad de tiempo en los módulos.

A continuación, se encuentran el módulo y la declaración de variables.

  • El tipo de registro (reg) retiene el valor hasta que el siguiente valor es impulsado por el pulso del reloj y siempre está por debajo de inicial o siempre cuadra. Se utiliza para aplicar un estímulo a la entrada.
  • Los cables (cable) se declaran para las variables pasivas. Sus valores no cambian y no se les puede asignar dentro, siempre un bloque inicial.

Luego viene la instanciación del módulo.

  • El banco de pruebas aplica estímulos al dispositivo bajo prueba (DUT). Se debe crear una instancia del DUT en el banco de pruebas. El mapeo de puertos es la vinculación de los módulos del banco de pruebas con los de los módulos de diseño.
  • Ahora daremos un estímulo inicial a las variables de entrada. Esto se hace bajo el inicial cuadra.
  • También podemos detener la simulación en un tiempo de retardo mencionado anteriormente usando $ finish.

Lo diferente es el uso de dos tareas del sistema:

  • $ dumpfile se utiliza para volcar los cambios en la red y los valores de los registros en un archivo VCD (archivo de volcado de cambio de valor).
  • $ dumpvars se utiliza para especificar qué variables se deben volcar en el nombre de archivo especificado por el argumento de nombre de archivo.
  • Ahora, depende del usuario si desea mostrar el resultado de la simulación en la consola TCL o no. Usamos un $ monitor, que muestra el valor de la señal cada vez que cambia su valor.
  • Se ejecuta por dentro siempre bloque, y la lista de sensibilidad sigue siendo la misma que se explica en la sección anterior.
  • El especificador de formato % t nos da el tiempo de simulación actual, y %D se utiliza para mostrar el valor de la variable en decimal.

Cuando ayb se suman para dar un número de más de 4 bits de ancho, la suma se convierte en cero y c_out se convierte en 1. Por ejemplo, la línea resaltada en amarillo se suma para dar 0x11 y los 4 bits inferiores se asignan a la suma y bit # 4 a c_out.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

apple touch icon@2

agnóstico del lenguaje – ¿Qué son los operadores de desplazamiento de bits (bit-shift) y cómo funcionan?

pyQcYNEtGAfPyXCWRdDmkm 1200 80

Revisión del disco duro Seagate BarraCuda Pro 10TB – Tom’s Hardware