Tipo de asignación de señal

¿Cuál es el significado de "asignación combinada" y "asignación registrada" a las señales? En particular, ¿cuáles son las diferencias entre estos dos tipos de asignaciones?

Respuestas (2)

Esencialmente, la diferencia se reduce a si la señal se asigna en un borde de reloj o no.

El código combinacional, como A <= B + 1, tendría que asignar a A B+1 "inmediatamente", mientras que

    process(clk)
    begin
        if(rising_edge(clk)) then
            A <= B + 1;
        end if;
    end process;

daría como resultado que a A se le asigne B+1 solo en un flanco ascendente del reloj. Con un código como este, otros bloques pueden usar el valor de A con la garantía de que su valor será estable y no cambiará después de un borde de reloj.

Los registros, o la activación del reloj en general, supongo, son realmente los que hacen posibles los diseños de cualquier complicación. Crea una canalización de operaciones colocando un registro en el borde entre operaciones. Por ejemplo, los operandos de entrada a una ALU deben ser estables, en un registro, para que la ALU pueda ejecutarse correctamente, y el resultado de la ejecución de la ALU debe estar en un registro para que cualquier bloque que lo use no "vea" el cambio. valores dentro de la ALU a medida que se realizan los cálculos, pero solo el último resultado estable.

Pregunta: ¿Un pestillo transparente se considera combinatorio o registrado?
Sí y no: la entrada a un pestillo transparente se propaga directamente a la salida, no en el borde del reloj. Pero la adición de una señal de habilitación podría hacer que el pestillo se controlara en un borde de reloj, es decir, opaco.

Las asignaciones en VHDL nunca se especifican como registradas o combinatorias. En VHDL, el tipo de asignación real (el tipo de lógica RTL generada) simplemente se deduce.

Los registros en VHDL se crean explícitamente al asignar una señal en un borde de reloj, aunque el hecho de que un proceso tenga un reloj no significa que todas las señales en ese bloque se asignarán en cada borde.

También se pueden inferir registros sin un reloj, si alguna ruta a través de un proceso no asigna una señal, entonces VHDL asume que usted pretendía bloquear esa señal entre pases sucesivos. Esto se denomina pestillo inferido (y debe evitarse).

VHDL no conoce la tecnología que va a utilizar. No sabe si su motor de síntesis puede generar T, D, JK, SR o cualquier otro tipo de pestillo. Por esa razón, solo sugiere un pestillo, depende de la síntesis decidir qué pestillo se ajusta a la factura o si es simplemente imposible. De manera similar, el instalador podría decir que un pestillo en particular solicitado por el engendrador de síntesis no está disponible o no hay suficientes.