www.mikrocontroller.net

Forum: FPGA, VHDL & Co. latch probleme


Autor: mikrofriendly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..
  sw0_process:process(clk,sw0)
  variable y:std_logic;
  begin
  if(clk='1' and sw0='1' and y='0') then
    start<='1';
  elsif(clk='0')then
    start<='0';
    y:='1';
  elsif(y='1' and sw0='0')then
    y:='0';
  end if;
  
  
  end process sw0_process;

Autor: Morin (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.