Salida del registro Verilog: reg o wire?

2

Si quiero modelar un registro simple, esperaría tener un elemento interno 'reg' para mantener el valor y lo conectaría con una salida 'cableada'. El reg acciona una salida interna.

Sin embargo, he buscado varios ejemplos y la mayoría utiliza una salida de tipo 'reg'. No entiendo por qué harías eso. ¿No estás almacenando el valor en dos lugares de esta manera? ¿Hay alguna diferencia en el comportamiento?

    
pregunta ErwinM

1 respuesta

5

La manera de elegir cómo declarar su señal no es cómo se creará una instancia física, sino cómo se asignará sintácticamente su valor.

Si la señal es controlada por asignaciones en un bloque de procedimiento (un bloque que comienza con always o initial ), debe declararse como reg .

Si la señal es controlada por una asignación continua (una declaración assign ) o es la salida de una instancia de módulo, entonces debe declararse como wire (o una de sus variantes como wor o wand ), o como una salida sin el calificador reg .

Una señal reg podría ser físicamente la salida de un latch o un flip-flop o de lógica combinatoria (por ejemplo, hay una forma muy común de inferir un multiplexor combinatorio usando un bloque always ). Un wire podría ser físicamente la salida de un latch o un flip-flop o lógica combinatoria (por ejemplo, si el flip-flop está dentro de un submódulo).

    
respondido por el The Photon

Lea otras preguntas en las etiquetas