Entiendo que es una buena práctica registrar los resultados de todos los módulos; entonces quiero hacer eso Sin embargo, no estoy seguro de qué significa exactamente registrar una señal de salida.
I.e. ¿Tengo que incluir la señal en un proceso cronometrado para asegurarme de que esté registrada? ¿O puedo simplemente usar una declaración concurrente?
Podría ser una de dos maneras:
entity mgmt_regs is
port map
(
-- Internal host bus interface
clk : in std_logic,
in_signal : in std_logic,
out_signal : out std_logic
);
end mgmt_regs;
architecture RTL of mgmt_regs is
signal sIn_signal : std_logic;
signal sOut_signal : std_logic;
begin
sIn_signal <= in_signal;
-------------------- THIS ONE?? -------------
out_signal <= sOut_signal;-------------------
process(clk)
begin
if (rising_edge(clk)) then
--do other stuff
------------------------- OR THIS ONE?? -----------
out_signal <= sOut_signal; ------------------------
end if;
end process;
end architecture RTL;
Además, me preguntaba sobre los casos en los que tengo una entidad principal. Si mis subcomponentes tienen sus señales que se conectarán a la parte de salida de mi entidad superior y dentro de esas entidades inferiores se registrará su señal, ¿todavía tengo que registrar la señal de salida en la hoja superior o puedo simplemente conectarlo a la puerto de salida?