Es scheint, dass die Welt entschieden hat, dass std_logic
(und std_logic_vector
) die Standardmethode für die Darstellung von Bits in VHDL sind. Die Alternative wäre std_ulogic
, die nicht gelöst wird.
Das überrascht mich , weil in der Regel, sind Sie nicht eine Beschreibung von Bus , so dass Sie tun Sie nicht wollen , mehrere Treiber und Sie nicht brauchen , zu lösen ein Signal aus . Der Vorteil std_ulogic
wäre, dass der Compiler Sie frühzeitig warnt, wenn Sie mehrere Treiber haben.
Frage: Ist das nur eine kulturhistorische Sache oder gibt es noch technische Gründe, std_logic zu verwenden?
Antworten:
Std_logic ist ein Subtyp von std_ulogic und hat genau eine zusätzliche Eigenschaft: Es wird aufgelöst, wenn mehrere Treiber vorhanden sind.
Unabhängig von der üblichen Vorgehensweise ist std_ulogic der richtige Typ für nicht aufgelöste Signale, die eine 9-wertige Logik benötigen. (Oft ist die Verwendung von "bit" sogar noch korrekter - zum Beispiel bei einigen FPGA-Architekturen, die kein "X" oder "U" haben.)
Grundsätzlich ist es am besten, den richtigen Typ für den Job zu verwenden. Oft werden schlechte Praktiken von Leuten verbreitet, die nur den Stil nachahmen, den andere verwenden, ohne zu verstehen, warum.
quelle
Meine Geschichte ist folgende:
Ich habe angefangen (ungefähr 1999 IIRC) die
std_ulogic*
ganze Zeit damit zu arbeiten - weil es das Richtige ist, nur aus den von Ihnen beschriebenen Gründen.Dann musste ich eine Schnittstelle zu einer Reihe von Wizard generierten Vendor-IPs herstellen, die alle über die
std_logic
gesamte Schnittstelle verteilt waren. Was bedeutete, dass die Port-Zuordnungen (für die_vector
Elemente) konvertiert wurden , und ich wurde faul und wechselte zur Verwendungstd_logic*
.Allerdings mache ich anscheinend nur sehr wenige "Doppelfahrer" -Fehler, sodass ich nicht
std_ulogic
so viel verpasst habe, wie ich gedacht hätte. Und Modelsimsdrivers
Befehl macht es sehr einfach, "wer fährt was" zu finden, wenn ich gelegentlich ...quelle
*vector
müssen noch umgebaut werdenIIRC Das berühmte Handbuch zur Wiederverwendung von Methoden wird empfohlen
std_logic(_vector)
, sodass möglicherweise Methodengruppen in Unternehmen usw. dies in Form von (obligatorischen) Codierungsleitfäden weiter verbreiten. Persönlich +1 für die Verwendung,std_ulogic
wenn möglich.quelle
Ich weiß, es ist eine schrecklich bunte Diashow, aber es erklärt den Unterschied ziemlich gut:
http://web.archive.org/web/20151026150828/http://www.cs.auckland.ac.nz/~jmor159/reconfig/ppt/ResolutionFunctions.ppt
quelle