Forum: FPGA, VHDL & Co. Latch im synchronen Prozess ?


von Bohrhans (Gast)


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

von Uwe (Gast)


Lesenswert?

Was passiert wenn cnt > 10 ? Oder wenn kleiner Null ?

von pks (Gast)


Lesenswert?

Uwe schrieb:
> Was passiert wenn cnt > 10 ? Oder wenn kleiner Null ?

Dann behält cnt seinen Wert. Ein latch ist das in diesem Fall 
(getakteter Prozess, der asynchrone Reset ist vollständig beschrieben) 
aber nicht.

von Max (Gast)


Lesenswert?

Wird vermutlich an "ir_disable" und/oder "ir_enable" in einem 
Programmteil der nicht sichtbar ist.

von Olga (Gast)


Lesenswert?

Max schrieb:
> Wird vermutlich an "ir_disable" und/oder "ir_enable" in einem
> Programmteil der nicht sichtbar ist.

Dieser Satz kein Verb.

von Max (Gast)


Lesenswert?

ja, das hab ich vergessen. Danke!

Verbesserung:

Es wird vermutlich an "ir_disable" und/oder "ir_enable" liegen, die in 
deinem
Programmteil nicht sichtbar sind.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.