¿Por qué Verilog no introduce un FF para la variable de tipo reg en el bloque always @ * y por qué se permite el reg en circuitos combinacionales

1

que yo sepa, registre (por ejemplo, reg reg1) y registre el archivo (por ejemplo, reg [3: 0] reg2)

se puede usar en el bloque siempre, ya sea secuencial (es decir, siempre @ (campo de posición)) o combinacional (es decir, siempre @ *).

Sin embargo, solo cuando se usan en bloque secuencial siempre, los Flip-flops se deducen.

Creo que es porque los archivos de registro y registro en bloque combinado siempre se asignan continuamente, por lo que la memoria puede no ser necesaria.

Sin embargo, no sé por qué Verilog permite el uso de registros y archivos de registro dentro del bloque always @ *, que es un circuito combinado.

¿Se debe a que se habilite la descripción del nivel de RT como, por ejemplo, declaración de caso, declaración de caso, etc. en lógica combinacional?

El nombre 'reg' me confunde porque su nombre implica el almacenamiento (FF), pero actúa como un cable dentro del bloque always @ *.

Parece que el 'reg' funciona como se espera como un almacenamiento solo dentro del bloque siempre secuencial.

A pesar de que asignar palabra clave permite asignar un valor a una variable de cable, ¿Hay alguna otra razón por la que Verilog permita que los archivos de registro y registro se usen dentro del bloque always @ * como cable?

Para mí, un registro y un archivo de registro solo se declaran como un tipo de registro en el bloque de combinación combinada que se utilizará en LHS de asignación, pero actúa como una variable de tipo de cable.

Aprecio cualquier ayuda.

    
pregunta JaeHyuk Lee

2 respuestas

3
  

Sin embargo, no sé por qué Verilog permite el uso de registros y archivos de registro dentro del bloque always @ *, que es un circuito combinado.

Porque la designación de una señal como reg o wire no tiene nada que ver con si se implementa como la salida de un registro o un circuito combinatorio. Solo se refiere a si la señal puede asignarse mediante una asignación de procedimiento (asignación en un bloque initial o always ) o mediante una asignación continua (asignación por un assign o salida de instancia).

Reg se pueden asignar señales en bloques de procedimiento. Las señales Wire pueden asignarse por asignación continua. Eso es absolutamente lo que significan todos los diferentes tipos de señales, y esto es algo a lo que tienes que acostumbrarte cuando trabajas en Verilog.

Los nombres parecen implicar un significado diferente porque Verilog originalmente fue pensado para ser una herramienta para modelar hardware que fue diseñado por otras herramientas en lugar de una herramienta para sintetizar nuevos diseños, por lo que usarlo para síntesis tiene algunas verrugas que reflejan la torpeza inherente de hacer eso.

    
respondido por el The Photon
1

El LRM Verilog 1364-2001 cambió la terminología para que reg sea en realidad un tipo de datos de una variable. Los cables representan una señal sostenida que es impulsada por una asignación continua. Una herramienta de síntesis reconoce el patrón de cómo se usa una variable y determina si la variable se convierte en lógica combinacional, un latch o un FF.

SystemVerilog reemplaza la palabra clave reg con logic para evitar esta confusión. También agrega construcciones como always_ff para que pueda indicar la intención de su bloque always . Consulte enlace

    
respondido por el dave_59

Lea otras preguntas en las etiquetas