mikrocontroller.net

Forum: FPGA, VHDL & Co. Verhindern von latches


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wenn ich in eine Process Variablen verwende darf ich denen dann gleich 
am Anfang sich slebst zuweisen um keine Latches zu erzeugen wenn ich sie 
in If Abfragen nicht in jeden Zweig zuweise? Oder ist das nicht erlaubt? 
Danke im vorhinein für die Antworten.

variable x : integer range 0 to 10;

x:= x;

MFG Gast

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

Bewertung
0 lesenswert
nicht lesenswert
Eine Zuweisung wie das hier ist garantiert explizit speichernd:
variable x : integer range 0 to 10;
:
x:= x;
:
:

Wenn eine Variable gelesen wird, bevor sie geschrieben wird, muß sie 
speichernd sein. Wenn das in einem kombinatorischen Prozess passiert, 
hast du ein Latch. In einem getakteten Prozess gibt das ein Flipflop.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Habe das ganze in einen kombinatorischen Prozess und wenn ich die 
Zuweisung x:= x weglasse sagt mir die Synthese das er latches erzeugt 
nachdem ich den variablen nicht in allen if zweigen was zuweise und wenn 
ich die zuweiung drin habe bekomme ich keine latches.

MFG Gast

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß nicht, wo du  x:= x; her hast, aber vermutlich willst du eher 
ein  x:=0;

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja ich will gerade nicht x:=0 weil ich in x einen Wert habe den ich 
ständig brauch und nicht bei jeden durchlauf auf 0 setzen kann.

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

Bewertung
0 lesenswert
nicht lesenswert
>> Habe das ganze in einen kombinatorischen Prozess...
> weil ich in x einen Wert habe den ich
> ständig brauch und nicht bei jeden durchlauf auf 0 setzen kann.
Dann willst du explizit ein Latch.
Sieh dir mal den RTL Plan nach der Synthese an, da sollten dann sowohl 
mit als auch ohne diese Zuweisung Latches entstehen. Wenn das mit der 
Zuweisung nicht passiert, dann sind noch irgendwelche Wechselwirkungen 
oder die Synthese übersetzt deine Beschreibung falsch...

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.