Estoy tratando de aprender VHDL y encontré un código de ejemplo para un contador que me parece algo extraño.
Entiendo lo que hace, pero no estoy seguro de por qué está escrito como está.
El código es el siguiente:
entity counter is
generic(n: natural :=2);
port( clock: in std_logic;
clear: in std_logic;
count: in std_logic;
Q: out std_logic_vector(n-1 downto 0)
);
end counter;
architecture behv of counter is
signal Pre_Q: std_logic_vector(n-1 downto 0);
begin
-- behavior describe the counter
process(clock, count, clear)
begin
if clear = '1' then
Pre_Q <= Pre_Q - Pre_Q;
elsif (clock='1' and clock'event) then
if count = '1' then
Pre_Q <= Pre_Q + 1;
end if;
end if;
end process;
-- concurrent assignment statement
Q <= Pre_Q;
end behv;
-----------------------------------------------------
¿No podemos reemplazar esta línea?
Pre_Q <= Pre_Q - Pre_Q;
con algo como esto? (No estoy seguro de poder hacer esto)
Pre_Q <= 0;
¿Hay alguna razón por la que deba usar el primer método en lugar del segundo?
Pido disculpas por eliminar mi pregunta anterior, pero cometí un error al reescribir el código y olvidé explicar lo que realmente era mi duda.