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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.