So erstellen Sie Ihr erstes VHDL-Programm: Hallo Welt!
Wenn ich eine neue Programmiersprache lerne, beginne ich immer damit, das Drucken zu lernen. Wenn Sie die Ausgabe von „Hallo Welt!“ Sie wissen, dass Sie die Umwelt arbeiten haben. Es zeigt Ihnen auch das Grundgerüst der Sprache, den minimalen Code, der erforderlich ist, um eine Ausgabe zu erzeugen.
Sie denken vielleicht: Aber VHDL ist eine Hardwarebeschreibungssprache, wie kann es überhaupt Text ausgeben? Sie würden einen Bildschirm benötigen, der mit einem FPGA oder so verbunden ist, und alle Arten von Logik dazwischen, und das wäre überhaupt nicht einfach. Während all dies wahr ist, lassen Sie uns FPGAs und Asics für einen Moment vergessen und unsere Aufmerksamkeit auf die VHDL-Sprache richten.
Dieser Blogbeitrag ist Teil der Basic VHDL Tutorials Serie.
VHDL kann als parallele Programmiersprache betrachtet werden, und daher können wir den Ansatz dieses Programmierers zum Lernen verwenden. Da wir die Sprache verwenden, um digitale Schaltungen zu beschreiben, können wir sie nur mit einem Simulator auf unserem Computer ausführen, und der Simulator kann definitiv „Hallo Welt!“ auf den Bildschirm.
So installieren Sie einen VHDL-Simulator und -Editor kostenlos
Übung
Dieses Video-Tutorial zeigt Ihnen, wie Sie Ihr erstes VHDL-Programm erstellen:
Der endgültige Code, den wir erstellt haben:
entity T01_HelloWorldTb isend entity;architecture sim of T01_HelloWorldTb isbegin process is begin report "Hello World!"; wait; end process;end architecture;
Die Ausgabe an die Simulatorkonsole, wenn wir in ModelSim die Schaltfläche Ausführen gedrückt haben:
VSIM 2> run# ** Note: Hello World!# Time: 0 ns Iteration: 0 Instance: /t01_helloworld
Analyse
In den ersten beiden Zeilen haben wir die Entität deklariert. Die Entität eines Moduls deklariert seine Ein- und Ausgänge. Damit ein Modul in einem Simulator ausgeführt werden kann, kann es keine Ein- oder Ausgänge haben. Daher hat unser Modul nichts anderes als eine leere Entitätsdeklaration.
Als nächstes haben wir die Architektur des Moduls deklariert. Während die Entität die Schnittstelle eines Moduls zur Außenwelt ist, ist die Architektur seine interne Implementierung. Ein Modul kann mehrere Architekturen haben, die mit derselben Entität verwendet werden können. Ich würde mir an dieser Stelle keine allzu großen Sorgen um diese Dinge machen, da es sich um erweiterte VHDL-Funktionen handelt.
Innerhalb der Architektur haben wir einen Prozess deklariert. Im Moment können wir uns einen Prozess als einen Thread in unserem Programm vorstellen, in dem die Dinge nacheinander ablaufen.
Innerhalb des Prozesses drucken wir „Hallo Welt!“ mit dem Schlüsselwort report
. In der nächsten Zeile befindet sich ein einzelnes wait;
. Wenn der Simulator diese Linie erreicht, wird nichts mehr passieren. Der Prozess wird hier ewig warten.
Als wir dieses Design in ModelSim simulierten, konnten wir sehen, dass „Hallo Welt!“ wurde in die Konsolenausgabe gedruckt. Danach passierte nichts mehr.
Takeaway
- Sie können sich einen Prozess als Programmthread vorstellen
- Die
report
-Anweisung gibt Text an die Simulatorkonsole aus - Die Ausführung eines Prozesses wartet ewig auf eine
wait;
-Anweisung
Gehe zum nächsten Tutorial “