std_logic <=> std_ulogic

OP #4028130
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 :)
Gast #4028218
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
Moderator (Firma: Titel) Persönliche Seite #4028282
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.
Gast #4028407
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.