El código de la figura siguiente crea un cierre innecesario. a) ¿Qué declaración (s) se debe escribir y dónde se debe eliminar?
signal next_p, p: std_logic_vector(1 downto 0);
signal a, b, c, d, q, next_q: std_logic;
process(select,a,b,c,d)
begin
if (select=”00”) then
next_q<=a;
next_p<=”00”;
elsif (select=“01”) then
next_q<=b;
next_p<=”10”;
elsif (select=“10”) then
next_q<=c;
<------- next_P isnt assigned here (latch?)
else
next_q<=d;
<------- next_P isnt assigned here (latch?)
end if;
end process;
process(clk)
begin
if (clk’event and (clk=’1’)) then
q<=next_q;
p<=next_p;
end if;
end process;
Realmente no puedo encontrar el pestillo en este código. Pero no estoy seguro al 100 por ciento de si esa es la respuesta, ¿puede alguien ayudarme a comprender dónde ocurre el cierre?
saludos
un estudiante.