latch probleme

Gast #1749154
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;
Moderator (Firma: Titel) Persönliche Seite #1751648
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.

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