[2021] Sumador completo de Verilog


El sumador completo es un dispositivo digital que realiza tres números y se implementa con puertas lógicas. Es el componente principal dentro de la ALU de un procesador y se usa para incrementar direcciones, índices de tablas, punteros de búfer y otros lugares donde se requieren adiciones.

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

Un sumador completo se forma a partir de dos medios sumadores y O enlace su resultado final. Un medio sumador suma dos números binarios. El sumador completo es un circuito combinatorio, por lo que se puede modelar en el lenguaje Verilog.

La expresión lógica para las dos salidas. aditivo Y tener puesto se dan a continuación. A, B son las variables de entrada para números binarios de dos bits, Cin es el acarreo y Cout son las variables de suma y acarreo.

Sumador completo de Verilog

mesa de la verdad

A B. cine cout aditivo
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 a y b.

Un sumador es un circuito combinatorio. Entonces Verilog puede modelarlo con una asignación continua asignar o un Siempre Bloque con una lista de sensibilidad que cubre todas las entradas.

El siguiente código muestra los usos. Siempre Bloque que se ejecuta cada vez que una de sus entradas cambia de valor.

esquema de hardware

Sumador completo de Verilog

Banco de pruebas

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

Luego viene el módulo y la declaración de variables.

  • El tipo de registro (reg) mantiene el valor hasta que el siguiente valor es impulsado por el pulso del reloj y siempre está por debajo inicial o Siempre Bloquear. Se utiliza para aplicar un estímulo a la entrada.
  • Los cables (wire) se declaran para variables pasivas. Sus valores no cambian y no se pueden asignar internamente, siempre un encabezado.

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 de la suite de pruebas con los de los módulos de diseño.
  • Ahora damos a las variables de entrada un primer estímulo. Esto sucede bajo inicial Bloquear.
  • También podemos detener la simulación en el tiempo de retraso mencionado anteriormente con $finish.

El uso de dos tareas del sistema es diferente:

  • $archivo de volcado se utiliza para volcar cambios de red y registrar valores en un archivo VCD (Value Change Dump File).
  • $dumpvars se utiliza para especificar qué variables deben volcarse en el nombre de archivo dado por el argumento de nombre de archivo.
  • Ahora depende del usuario mostrar o no el resultado de la simulación en la consola TCL. usamos uno $supervisarque muestra el valor de la señal en cada cambio de valor.
  • se ejecuta en el interior Siempre Block, y la lista de sensibilidad sigue siendo la misma que se explicó 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.

Si a y b se suman para obtener 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 fila resaltada en amarillo da 0x11 y los 4 bits inferiores se asignan a la suma y al bit #. 4 a c_out.






[2021] Sumador completo de Verilog

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada.