unos serie resueltos registros registro que paralelo flop ejercicios desplazamiento corrimiento contador conclusiones con banco verilog

verilog - resueltos - registro de desplazamiento+serie+paralelo+vhdl



Usando cable o registro con entrada o salida en Verilog (5)

Cuando declara algo como entrada o salida, ¿cómo sabe si también debe declararlo como un reg o un wire ?


El compilador de código de Verilog que utilice determinará lo que tiene que hacer. Si usa una sintaxis ilegal, obtendrá un error de compilación.

Una output también debe declararse como reg solo si se asigna mediante una "asignación de procedimiento". Por ejemplo:

output reg a; always @* a = b;

No hay necesidad de declarar una output como un wire .

No es necesario declarar una input como un wire o reg .


Una output reg foo es solo una abreviatura de output foo_wire; reg foo; assign foo_wire = foo output foo_wire; reg foo; assign foo_wire = foo output foo_wire; reg foo; assign foo_wire = foo . Es útil cuando planeas registrar esa salida de todos modos. No creo que input reg sea ​​significativo para el module (quizás task ). input wire y output wire son lo mismo que la input y la output : es más explícito.


Verlo en el dominio del circuito digital.

  1. Un cable creará una salida de cable a la que solo se le puede asignar cualquier entrada mediante el uso de una declaración de asignación, ya que la instrucción de asignación crea una conexión de puerto / pin y el cable se puede unir al puerto / pin
  2. Un registro creará un registro (D FLIP FLOP) que obtiene o recibe entradas en función de la lista de sensibilidad, ya sea en forma de reloj (ascendente o descendente) o de combinación.

por lo tanto, depende completamente de su uso, ya sea que necesite crear un registro y marcarlo de acuerdo con la lista de sensibilidad o si desea crear una asignación de puerto / pin


básicamente reg se usa para almacenar valores. Por ejemplo, si desea un contador (que contará y por lo tanto tendrá algún valor para cada cuenta), usaremos un reg. Por otro lado, si solo tenemos una señal plana con 2 valores 0 y 1, la declararemos como cable. El cable no puede contener valores. Por lo tanto, la asignación de valores a los cables conduce a problemas ...


reg y wire especifican cómo se asignará el objeto y, por lo tanto, solo son significativos para las salidas.

Si planea asignar su salida en código secuencial, como dentro de un bloque always , declararlo como un reg (que realmente es un nombre inapropiado para "variable" en Verilog). De lo contrario, debería ser un wire , que también es el predeterminado.