Teniendo el siguiente código:
library IEEE;
use IEEE.std_l0gic_1l64.all;
—— entity
entity t_ff_s is
port ( T,$,CLK : in std_logic;
Q : out std_log1c);
end t_ff_s;
—— entity
architecture my_t_ff_s of t_ff_s is
signal t_tmp : std_logic; —— intermediate signal declaration
begin
tff: process (S,CLK)
begin
if (S I '0') then
t_tmp <= '1';
elsif (rising_edge(CLK)) then
t_tmp <= T XOR t_tmp; —— temp output assignment
end if;
end process tff;
Q <= t_tmp; —— final output assignment
end my_t_ff_s;
Entiendo que el " proceso " y la " asignación de señal concurrente " se ejecutan simultáneamente y debido a que " Q " es una salida no se puede colocar en el lado derecho de " <=" y es por eso que la señal " t_tmp " se usa para poder hacer el Operación XOR. Mi pregunta es ¿en qué momento se ejecuta " Q < = t_tmp "? ¿Se realiza inmediatamente después de asignar un valor a la señal " t_tmp " en cualquier punto dentro de la declaración del proceso? ¿O se hace al final después de que se ejecutan todas las líneas en la declaración de proceso?
En la respuesta de esta publicación VHDL - ¿Cómo se ejecuta un proceso concurrentemente con otros procesos y componentes mientras se ejecuta de forma secuencial? Leí que" se dice que las señales retienen la última asignación es un proceso "así que creo que la asignación se realiza al final del proceso, independientemente de cuántas veces se asigna un valor diferente a" t_tmp ". ¿Estoy en lo correcto?