logo

Declaración de asignación de Verilog

Las declaraciones de asignación se utilizan para impulsar valores en la red. Y también se utiliza en Modelado de flujo de datos .

Las señales de tipo cable o de datos requieren la asignación continua de un valor. Siempre que se aplique la batería de +5 V a un extremo del cable, el componente conectado al otro extremo del cable obtendrá el voltaje requerido.

Este concepto se implementa mediante la declaración de asignación donde cualquier cable u otro cable similar (tipo de datos) se puede controlar continuamente con un valor. El valor puede ser una constante o una expresión que consta de un grupo de señales.

Sintaxis

La sintaxis de asignación comienza con la palabra clave asignar, seguida del nombre de la señal, que puede ser una señal o una combinación de diferentes redes de señales.

El fuerza motriz y demora son opcionales y se utilizan principalmente para modelar flujo de datos que para sintetizar en hardware real.

La señal del lado derecho se evalúa y se asigna a la red o expresión de redes del lado izquierdo.

 assign = [drive_strength] [delay] 

Los valores de retardo son útiles para especificar retardos para puertas y se utilizan para modelar el comportamiento de temporización en hardware real. El valor dicta cuándo se debe asignar a la red el valor evaluado.

Normas

Es necesario seguir algunas reglas durante el uso de una declaración de asignación:

  • LHS siempre debe ser un registro escalar, vectorial o una combinación de redes escalares y vectoriales, pero nunca un registro escalar o vectorial.
  • RHS puede contener registros escalares o vectoriales y llamadas a funciones.
  • Siempre que cualquier operando en el RHS cambie de valor, el LHS se actualizará con el nuevo valor.
  • Las declaraciones de asignación también se denominan asignaciones continuas.

Asignar variables de registro

No podemos conducir ni asignar registro escriba variables con una instrucción de asignación porque una variable de registro es capaz de almacenar datos y no se controla continuamente.

Las señales de registro solo se pueden generar en bloques de procedimientos como siempre e inicial.

Asignación continua implícita

Cuando se utiliza una declaración de asignación para asignar algún valor al neto dado, se llama explícito asignación

Si se declara una asignación a realizar durante la red, se denomina implícito asignación.

 wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment 

Diseño de lógica combinacional

Considere el siguiente circuito digital hecho de puertas combinacionales y sus correspondientes Verilog código.

Declaración de asignación de Verilog

La lógica combinacional requiere que las entradas se controlen continuamente para mantener la salida, a diferencia de los elementos secuenciales como los flip-flops, donde el valor se captura y almacena en el borde de un reloj.

Una declaración asignada satisface el propósito porque la salida o se actualiza cada vez que cambia cualquiera de las entradas en el lado derecho.

 // This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule 

Esquema de hardware

Después de la elaboración y síntesis del diseño, un circuito combinacional se comporta de la misma manera que lo modela la declaración de asignación.

Declaración de asignación de Verilog

La señal o se vuelve 1 siempre que la expresión combinacional en el RHS se vuelve verdadera.

De manera similar, o se convierte en 0 cuando RHS es falso. La salida o es X de 0 ns a 10 ns porque las entradas son X durante el mismo tiempo.