Forum: FPGA, VHDL & Co. Verhindern von latches


von gast (Gast)


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

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


Lesenswert?

Eine Zuweisung wie das hier ist garantiert explizit speichernd:
1
variable x : integer range 0 to 10;
2
:
3
x:= x;
4
:
5
:

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.

von gast (Gast)


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

von Klaus (Gast)


Lesenswert?

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

von gast (Gast)


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.

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


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

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.