Me pregunto por qué la síntesis de este código no funciona, pero la simulación sí funciona. SOLO AL INTENTAR LA SINTETIZACIÓN obtengo el siguiente error:
Signal sig_enable no se puede sintetizar, mala descripción síncrona. El estilo de descripción que está utilizando para describir un elemento síncrono. (registro, memoria, etc.) no es compatible con el software actual lanzamiento.
Aquí está mi código:
architecture Behavioral of myModule is
signal sig_outSerial: std_logic := '1';
signal tri_output: std_logic := '1';
signal sig_enable: std_logic := '0';
signal sig_done: std_logic := '1';
component triBuffer
port(
input: in std_logic;
control: in std_logic;
output: out std_logic
);
end component;
begin
U1: triBuffer port map(input => CLK_IN, control => sig_enable, output => tri_output);
process(tri_output, SEND)
variable i: integer := 0;
begin
if falling_edge(tri_output) and sig_enable = '1' then
if i = 8 then
i := 0;
sig_enable <= '0';
sig_outSerial <= '1';
sig_done <= '1';
else
sig_outSerial <= inByte(i);
i := i + 1;
sig_done <= '0';
end if;
end if;
if rising_edge(SEND) then
sig_enable <= '1';
end if;
end process;
outSerial <= sig_outSerial;
done <= sig_done;
CLK_OUT <= tri_output;
end Behavioral;