Estoy tratando de aprender VHDL y me encontré con 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 así.
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 sustituir esta línea
Pre_Q <= Pre_Q - Pre_Q;
con algo así? (No estoy seguro de poder hacerlo)
Pre_Q <= 0;
¿Hay alguna razón por la que deba utilizar el primer método en lugar del segundo?
Pido disculpas por haber borrado mi pregunta anterior pero me equivoqué al reescribir el código y se me olvidó explicar cuál era realmente mi duda.