Tengo un fragmento de código que debe ejecutarse después de otro. Por ejemplo, tengo un slv_reg2 <= slv_reg0 + slv_reg1;
adicional y luego necesito que se reste el resultado de un número.
architecture IMP of user_logic is
signal slv_reg0 : std_logic_vector(0 to C_SLV_DWIDTH-1); --32 bits wide
signal slv_reg1 : std_logic_vector(0 to C_SLV_DWIDTH-1);
signal slv_reg2 : std_logic_vector(0 to C_SLV_DWIDTH-1);
signal slv_reg3 : std_logic_vector(0 to C_SLV_DWIDTH-1);
signal flag : bit := '0';
begin
slv_reg2 <= slv_reg0 + slv_reg1;
flag <= '1';
process (flag)
begin
IF (flag = '1') THEN
slv_reg3 <= slv_reg0 - slv_reg2;
END IF;
end process;
end IMP;
No he probado el código anterior, pero me gustaría recibir algunos comentarios si mi pensamiento es correcto. Lo que está contenido en el process
no necesita ejecutarse en secuencia, ¿cómo puedo hacer que esta parte también se ejecute en paralelo?
En resumen, tengo dos trozos de código que deben ejecutarse en secuencia, pero el código en sí debe ejecutarse en paralelo.
--UPDATE--
begin
process (flag, clk)
begin
IF (flag = '1' AND rising_edge(clk)) THEN
slv_regX <= (slv_reg0 - slv_reg1) + (slv_reg2 - slv_reg3) +(slv_reg4 - slv_reg5); --...etc
flag = '0';
END IF;
end process;
end IMP;