Latch im synchronen Prozess ?

Gast #3388793
Lesenswert?

Hallo zusammen,

momentan bastele ich einem Counter der je nach Ereignis hoch und runter 
zählt. Dazu habe ich einen synchronen Prozess verwendet:
1
signal cnt: integer range 0 to 10; 
2

3
...
4

5
begin
6

7
counter_p : process (clk, reset_n)
8
begin
9
  if reset_n = '0' then
10
    cnt <= 0;
11
  elsif rising_edge(clk) then
12
    if (ir_disable = '1' and (cnt < 10) then
13
      cnt <= cnt+1;
14
    elsif (ir_enable = '1' and cnt > 0) then
15
      cnt <= cnt-1;
16
    end if;
17
  end if;
18
end process counter_p;

Meine Fragen sind nun, ensteht durch den fehlenden "else"-Zweig ein 
Latch ? Ist der Code so synthetisierbar ?

Gruß
Bohrhans
Moderator (Firma: Titel) Persönliche Seite #3389766
Lesenswert?

Max schrieb:
> Wird vermutlich an "ir_disable" und/oder "ir_enable" in einem
> Programmteil der nicht sichtbar ist.
Die Frage war /nicht/: "WARUM entsteht ein Latch", sondern nur "entsteht 
ein Latch"? Und hier lautet die Antwort ganz klar: Nein, weil ein Takt 
beteiligt ist.

Bohrhans schrieb:
> Meine Fragen sind nun, ensteht durch den fehlenden "else"-Zweig ein
> Latch ? Ist der Code so synthetisierbar ?
Nein. Ja. BTW: bitte nicht Plenken! Und zum Thema "Asynchroner Reset" 
einfach mal hier im Forum suchen...

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