Syntax Frage zu Zählvariablen

OP #2806781
Lesenswert?
• ▲
▼
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
OP #2806807
Lesenswert?
• ▲
▼
Das bedeutet also, dass man es auch so betrachten kann:
1
...
2
if COUNT_DELAY = 0 then
3
  ...       
4
  COUNT_DELAY <= 2;
5
  COUNT_DELAY <= 1;
6
  ...
7
...

Ganz grob betrachtet, wenn ich einen Signal innerhalb eines Prozesses 
zweimal hintereinander einen Wert zuweise (ergibt ja normalerweise 
keinen Sinn), dann würde COUNT_DELAY = 1 sein, oder?

Danke für die Antwort.

Cihan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren