Ich stimme mit allem überein nur mit c nicht.
Hier der Code der etwas an c macht:
- Code: Alles auswählen
proc_3 : process(clk, reset)
begin
if reset = ’1’ then
x <= ’0’;
c <= ’0’;
elsif clk’event and clk = ’1’ then
x <= input;
if x = ’1’ then
c <= not input;
end if;
end if;
end process;
Meiner Meinung nach müsste c die ganze Zeit 0 sein.
An der Stelle an dem die Musterlösung sagt, dass es 1 wird denke ich mir folgendes:
1) Der "elsif clk’event and clk = ’1’ then"-Block wird aufgerufen.
2) input ist 0 also wird x = 0.
3) Das "if x = ’1’ then" trifft nicht zu, also wird an c nichts geändert.
Innerhalb der einzelnen Prozesse sollte ja nichts parallel laufen.
Also wo ist mein Denkfehler?