architecture rtl of goodFFstyle is
signal q1 : std_logic;
begin
process (clk)
begin
if (clk'event and clk = '1') then
if (rst_n = '0') then
q1 <= '0';
else
q1 <= d;
end if;
end if;
end process;
process (clk)
begin
if (clk'event and clk = '1') then
q2 <= q1;
end if;
end process;
end rtl;
En el ejemplo anterior, el segundo proceso podría haberse evitado si q2 asignado se incluyera en el primer proceso.
architecture rtl of goodFFstyle is
signal q1 : std_logic;
begin
process (clk)
begin
if (clk'event and clk = '1') then
if (rst_n = '0') then
q1 <= '0';
else
q1 <= d;
end if;
q2 <= q1;
end if;
end process;
El segundo ejemplo usa menos líneas de código, pero la mayoría prefiere la primera forma de codificación. Entonces, mi duda, ¿hay alguna ventaja si codificamos en el primer método?
No hay nada malo con el segundo estilo a menos que se lleve en exceso.
Si la funcionalidad de Q1 y Q2 están estrechamente relacionadas, preferiría el proceso único. Perseguir señales intermedias entre cientos de pequeños procesos solo oscurece el diseño.
Y nunca he visto una herramienta de síntesis que tampoco pueda generar hardware óptimo a partir de ella.
miedo_jeff
if (clk'event and clk = '1') then
generalmente no se recomienda el estilo, sino que se usaif (rising_edge(clk)) then
.