Was ist in VHDL der Unterschied zwischen "Downto" und "To"?

7

Gibt es Unterschiede zwischen

 (x downto y) and (y to x)?

Wo sollen wir verwenden (x nach unten bis y)? Die gleiche Frage gilt für (y bis x).

Notation: x und y sind ganze Zahlen

stevenvh
quelle
Ich wünschte wirklich, Sie wären nicht daran interessiert zu gehen, aber schauen Sie sich diesen Beitrag an, um den letzten Schritt zum Löschen eines Kontos zu sehen. Sie müssen den Support per E-Mail kontaktieren und dürfen keinen Moderator markieren.
Kortuk

Antworten:

9

Hier können Sie feststellen, dass VHDL von einem Regierungsausschuss erfunden wurde. Wenn VHDL konsistent ausgelegt wäre, würde das, was Sie als "to" bezeichnen, als "upto" bezeichnet - wie im Gegenteil von "downto". In dieser Antwort werde ich auf "bis" verweisen. Verstehe nur, dass ich diesen Begriff aus Gründen der Klarheit verwende - er ist immer noch kein offizielles VHDL-Schlüsselwort.

Vektoren oder Arrays können einen absteigenden oder ansteigenden Bereich haben. Zum Beispiel:

signal foo :std_logic_vector (7 downto 0);
signal bar :std_logic_vector (0 to 7);

Dies ist streng genommen eine Nummerierungskonvention und hat wenig mit der resultierenden logischen Effizienz zu tun. Meistens hängt die richtige Verwendung davon ab, was für den Verfasser des Codes am sinnvollsten ist.

Verwenden Sie jedoch niemals "bis", es sei denn, Sie müssen. Was folgt, ist meine persönliche Meinung, aber sie basiert auf 20 Jahren professionellem Schreiben von VHDL und 30 Jahren Schreiben von Software:

Das Mischen von Downto und Upto im selben Code ist immer problematisch. Dies ist möglich, erfordert jedoch eine sorgfältige Planung und Notation, um die richtigen Ergebnisse zu erzielen. Selbst dann ist der Code später schwer zu lesen und zu ändern. Es ist sehr leicht zu verwechseln, welche Signale nach unten und welche nach oben gerichtet sind.

Die meisten Busse sind mit "N bis 0" nummeriert, wobei Bit 0 am wenigsten signifikant und N am signifikantesten ist. Aus diesem Grund ist Downto das wichtigste von beiden. Und da wir nicht Downto und Upto mischen wollen, erhält Upto den Boot. In jedem Fall, in dem ich bis verwendet habe, habe ich es bereut und normalerweise den Code neu geschrieben.

Verstehen Sie, dass die Verwendung / der Missbrauch von bis zu hauptsächlich ein Problem in großen "Programmen" wird. Es macht es schwierig, Module gemeinsam zu nutzen (auch bekannt als Code-Wiederverwendung) und Code zu warten und zu debuggen. Wenn Sie nur ein oder zwei Seiten von VHDL schreiben, spielt dies möglicherweise keine Rolle. Wenn Sie jedoch FPGAs mit mehr als 30.000 VHDL-Zeilen schreiben, ist dies ein großes Problem.

Es gibt nur wenige Nachteile, nur Downto zu verwenden. Aber die Nachteile sind winzig im Vergleich zu den Problemen, auf die ich beim Mischen von Downto und Upto gestoßen bin.

Als Randnotiz: Der Typ, der beschlossen hat, die PowerPC-Busse umzukehren (wobei Bit 0 das wichtigste Bit ist), sollte tariert und gefiedert sein. Oder zumindest gezwungen, Richard Simmons in Einzelhaft rund um die Uhr zu beobachten. Ich sag bloß.


quelle
+1 für die Verwendung von Downto und die Vermeidung von "Upto" um jeden Preis. Es wird wirklich zurückkommen, um dich anders zu beißen. Auch Bit 0 als MSB macht mich verrückt, da es die Idee des Platzwerts völlig verworfen hat.
Josh
Manchmal müssen Sie das 'to'-Formular verwenden, beispielsweise beim Erstellen von Peripheriegeräten für die Schnittstelle zu einem PowerPC-Bus (wie bei Xilinx' Big-Endian Microblaze). Ich verwandle sie wieder in 'Downtos', so schnell ich kann
Martin Thompson
Sollte es also nicht darum gehen, Downto für Architekturen zu verwenden, bei denen ein hoher Bitindex = MSB ist, und "bis zu", bei denen ein hoher Bitindex = LSB ist?
Herr Mystère
0

Sie sind gleichwertig und es ist nur eine persönliche Präferenz, welche Sie verwenden. downtowird häufig für Adress- oder Datenbusse verwendet, bei denen das Lesen von links nach rechts mit dem Bit höchster Ordnung beginnt.

stevenvh
quelle
2
Nein, sie sind nicht gleichwertig. Ganz und gar nicht. Siehe Davids Antwort, warum.
Akohlsmith