Hallo allezusammen,
habe wieder mal eine kleine Frage. Es geht um folgenden Code:
1 | ...
|
2 | signal COUNT_DELAY: natural range 0 to 2;
|
3 |
|
4 | process(clk)
|
5 | begin
|
6 | if clk = '1' and clk'event then
|
7 | ...
|
8 | if START = '1' then -- irgendeine Start-Bedingung
|
9 | if COUNT_DELAY = 0 then
|
10 | COUNT_DELAY <= 2; -- *** (1)
|
11 | ...
|
12 | if END = '1' then
|
13 | COUNT_DELAY <= 0; -- *** (2)
|
14 | START <= '0';
|
15 | end if;
|
16 | elsif COUNT_DELAY > 0 then
|
17 | COUNT_DELAY <= COUNT_DELAY - 1;
|
18 | end if;
|
19 | end if;
|
20 | end if;
|
21 | end process;
|
22 | ...
|
Meine Frage beläuft sich auf die Zeilen mit den ***. Wenn die Bedingung
START erfüllt ist, startet die Funktion und jedesmal wenn die Funktion
aufgerufen wird ein Delay = 2 gesetzt (siehe (1)). Irgendwann wird nun
die Endbedingung END = 1 aufgerufen, sodass nun COUNT_DELAY = 0 (siehe
(2)) gesetzt wird. Doch aber noch im gleichem Takt wird das Delay auf 2
gesetzt, d.h. konkret, welchen Wert würde COUNT_DELAY beim Verlassen der
Funktion einnehmen? 2 oder 0?
Gruß Cihan