Forum: FPGA, VHDL & Co. std_logic <=> std_ulogic


von Andreas B. (loopy83)


Lesenswert?

Hallo zusammen,

ich habe gerade einen IP vor mir, der an allen IN und OUT den Typen 
std_ulogic verwendet.

Bisher konnte ich so gar keinen Unterschied beim Verhalten dieser 
Signale ggü. std_logic finden.
Ich simuliere schon lange mit std_logic und auch hier werden bei Fehlern 
oder falscher Initialisierung 'U' oder 'X' angezeigt.

Kann ich also beim Ändern des IP einfach std_ulogic durch std_logic 
ersetzen und bin damit mit mir vertauten Typen unterwegs, oder bringt es 
irgendwelche Vorteile, wenn ich mit std_ulogic arbeite?

Im IP selber werden alle Signale und Zustände ebenfalls mit std_logic 
verwendet und dann erst im Toplevel auf std_ulogic gebracht. Welche 
Vorteile soll das bringen?

Ist der einzige Unterschied wirklich nur die Fehlermeldung im Compiler 
mit mehrern Treibern, so dass man mit std_ulogic sicherer designen kann?

Vielen Dank!
Andi :)

: Bearbeitet durch User
von Thomas (Gast)


Lesenswert?

Hallo,

also der Unterschied zwischen std_logic und std_ulogic ist, dass 
std_logic 'resolved' ist. Das bedeutet, wenn ein Signal zwei Treiber 
hat, dann wird mit Hilfe der Resolution Function der wirkliche Wert 
ermittelt. So wird aus '0' und '1' z.B. ein 'X'. Da std_ulogic 
allerdings nicht resolved ist wirst du für diesen Fall eine 
Fehlermeldung erhalten.

Du kannst also in deinem Design ganz normal std_logic verweden.

Grüße

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


Lesenswert?

In frühen Jahren (gegen Ende des letzten Jahrtausends) galt das 
Argument, dass der Simulator für die Auflösung der std_logic mehr 
Rechenzeit braucht. Deshalb wurde damals(tm) gelehrt, die 
unresolved-Datentypen zu nehmen. Heute sind die Simulatoren so 
optimiert, dass dieses Argument nicht mehr zieht. Und in der Hardware 
wird eine Kollision zweier Treiber sowieso erkannt und angemeckert.

von Andreas B. (loopy83)


Lesenswert?

Vielen herzlichen Dank!

von Klakx (Gast)


Lesenswert?

Vorteil, auch wenn logic in der Hardware angemeckert wird (worst case: 
nur eine Warning), du fängst mit ulogic diesen Fehler noch vor der 
Simulation ab, da diese im Gegenteil zu logic nicht anläuft. Dies kann 
manchmal viel Zeit bei der Fehlersuche sparen und schützt einen vor 
Fehlern die oft bei Copy&Paste entstehen.

Jedoch hast du den Nachteil, dass du in der Regel im Toplayer gezwungen 
bist dann zwischen ulogic und logic-Vektoren zu casten, denn IPs sind in 
der Regel auf logic im Top-Level designt.

Also frei deine Entscheidung.

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.