Forum: FPGA, VHDL & Co. latch probleme


von mikrofriendly (Gast)


Lesenswert?

Guten Abend,
ich prbiere schon eine ganze weile herum aber ich bekomme diese 
Latchwarnungen nicht weg. dabei ist es doch im grunde ganz einfach.
sowohl meine variable y als auch start sollen latches sein. wenn ich das 
programm durch ein testbench mit modelsim simuliere, kommt genau das 
raus, ohne irgendwelche warungen was ich wollte .. was kann ich am 
quellcode verbessern und solche fehler wegzubekommen?
meiner meinung nach kann hier kein latch auftreten..
1
  sw0_process:process(clk,sw0)
2
  variable y:std_logic;
3
  begin
4
  if(clk='1' and sw0='1' and y='0') then
5
    start<='1';
6
  elsif(clk='0')then
7
    start<='0';
8
    y:='1';
9
  elsif(y='1' and sw0='0')then
10
    y:='0';
11
  end if;
12
  
13
  
14
  end process sw0_process;

von Morin (Gast)


Lesenswert?

Der Fall clk=1, sw0=0, y=0 scheint mir nicht abgedeckt.

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


Lesenswert?

Und die Simulaation wird falsch sein.
Denn nach dem Berechnen des Prozesses kann sich die Variable y geändert 
haben. Weil die aber nicht in der Sensitivliste steht (bzw. gar nicht 
stehen kann) wird der Prozess nicht mehr neu berechnet. y ist ein 
ungetaktetes Speicherelement, mithin ein Latch. Da haben wir das Ding... 
:-o

Das hatten wir schonmal im Beitrag "Variable vs Signal"

BTW:
Diese Abfrage ist sowieso absolut grenzwertig:
>   if(clk='1' and sw0='1' and y='0') then
Takte werden (zumindest von mir) nur auf eine Flanke abgefragt. Dann 
gibt es keine Probleme.

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.