Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> VHDL

Master VHDL:Umfassende Einführung in FPGA- und ASIC-Design

Tutorial – Einführung in VHDL

VHDL ist ein schreckliches Akronym. Es steht für V HSIC H Hardware D Beschreibung L Sprache. Ein Akronym in einem Akronym, großartig! VHSIC steht für V ery H oh S habe ich gepinkelt Integriertes C Schaltung. Daher ist VHDL erweitert V Sehr schnelle integrierte Schaltung H Hardware D Beschreibung L Sprache. Puh, das ist ein Bissen. VHDL ist eine der beiden Sprachen, die von Bildung und Wirtschaft zum Entwerfen von FPGAs und ASICs verwendet werden. Wenn Sie mit diesen faszinierenden Schaltkreisen nicht vertraut sind, könnte Ihnen zunächst eine Einführung in FPGAs und ASICs von Nutzen sein. VHDL und Verilog sind die beiden Sprachen, die digitale Designer zur Beschreibung ihrer Schaltkreise verwenden, und sie unterscheiden sich vom Design her von Ihren traditionellen Softwaresprachen wie C und Java.

Für das folgende Beispiel erstellen wir eine VHDL-Datei, die beschreibt ein Und-Tor. Zur Erinnerung:Ein einfaches Und-Gatter hat zwei Eingänge und einen Ausgang. Die Ausgabe ist nur dann gleich 1, wenn beide Eingaben gleich 1 sind. Unten sehen Sie ein Bild des Und-Gatters, das wir mit VHDL beschreiben werden.

Ein Und-Tor

Machen wir uns an die Arbeit! Die Grundeinheit von VHDL wird als Signal bezeichnet . Nehmen wir zunächst an, dass ein Signal entweder eine 0 oder eine 1 sein kann (es gibt tatsächlich auch andere Möglichkeiten, aber dazu kommen wir gleich). Hier ist einige grundlegende VHDL-Logik:

signal and_gate : std_logic;
and_gate <= input_1 and input_2;

Die erste Codezeile definiert ein Signal vom Typ std_logic und heißt and_gate. Std_logic ist der Typ, der am häufigsten zum Definieren von Signalen verwendet wird, aber es gibt noch andere, die Sie kennenlernen werden. Dieser Code generiert ein UND-Gatter mit einem einzelnen Ausgang (and_gate) und zwei Eingängen (input_1 und input_2). Das Schlüsselwort „and“ ist in VHDL reserviert. Der <=-Operator wird als Zuweisungsoperator bezeichnet. Wenn Sie den obigen Code verbal analysieren, können Sie laut sagen:„Das Signal and_gate ERHÄLT Eingang_1 und verknüpft ihn mit Eingang_2.“

Jetzt fragen Sie sich vielleicht, woher input_1 und input_2 kommen. Da es sich, wie der Name schon sagt, um Eingaben in diese Datei handelt, müssen Sie die Tools darüber informieren. Eingaben und Ausgaben in eine Datei werden in einer Entität definiert . Eine Entität enthält einen Port, der alle Ein- und Ausgaben in eine Datei definiert. Lassen Sie uns eine einfache Entität erstellen:

entity example_and is
 port (
 input_1 : in std_logic;
 input_2 : in std_logic;
 and_result : out std_logic
 );
end example_and;

Dies ist Ihre Grundeinheit. Es definiert eine Entität namens example_and und 3 Signale, 2 Eingänge und 1 Ausgang, die alle vom Typ std_logic sind. Um dies zu vervollständigen, ist ein weiteres VHDL-Schlüsselwort erforderlich:architecture . Eine Architektur wird verwendet, um die Funktionalität einer bestimmten Entität zu beschreiben. Betrachten Sie es als eine Abschlussarbeit:Die Entität ist das Inhaltsverzeichnis und die Architektur ist der Inhalt. Lassen Sie uns eine Architektur für diese Entität erstellen:

architecture rtl of example_and is 
 signal and_gate : std_logic;
begin
 and_gate <= input_1 and input_2;
 and_result <= and_gate;
end rtl;

Der obige Code definiert eine Architektur namens rtl der Entität example_and. Alle von der Architektur verwendeten Signale müssen zwischen den Schlüsselwörtern „is“ und „begin“ definiert werden. Die eigentliche Architekturlogik liegt zwischen den Schlüsselwörtern „begin“ und „end“. Sie sind mit dieser Datei fast fertig. Eine letzte Sache, die Sie den Tools mitteilen müssen, ist, welche Bibliothek verwendet werden soll. Eine Bibliothek definiert, wie sich bestimmte Schlüsselwörter in Ihrer Datei verhalten. Gehen Sie zunächst davon aus, dass diese beiden Zeilen oben in Ihrer Datei stehen müssen:

library ieee;
use ieee.std_logic_1164.all;

Herzlichen Glückwunsch! Sie haben Ihre erste VHDL-Datei erstellt. Die fertige Datei können Sie hier einsehen:

library ieee;
use ieee.std_logic_1164.all;
entity example_and is
 port (
 input_1 : in std_logic;
 input_2 : in std_logic;
 and_result : out std_logic
 );
end example_and;
architecture rtl of example_and is
 signal and_gate : std_logic;
begin
 and_gate <= input_1 and input_2;
 and_result <= and_gate;
end rtl;

Scheint es, als müssten Sie eine Menge Code schreiben, nur um ein Dummkopf-Gate zu erstellen? Erstens:Tore sind nicht dumm. Zweitens haben Sie Recht; VHDL ist eine sehr ausführliche Sprache. Gewöhnen Sie sich daran, dass Sie in einem HDL wie Verilog oder VHDL deutlich länger brauchen, um etwas zu erledigen, was in der Software sehr einfach war. Aber bitten Sie einfach einen Software-Typen, ein Bild auf einem VGA-Monitor zu erzeugen, das Conways „Spiel des Lebens“ anzeigt, und beobachten Sie, wie ihm vor Erstaunen der Kopf schwirrt! Dieses Video wurde übrigens mit VHDL und einem FPGA erstellt. Das wird Ihnen schon bald gelingen!

Als nächstes besprechen wir ein weiteres grundlegendes VHDL-Schlüsselwort:Prozess.


VHDL

  1. So verwenden Sie Konstanten und generische Karten in VHDL
  2. So initialisieren Sie RAM aus einer Datei mit TEXTIO
  3. So generieren Sie Zufallszahlen in VHDL
  4. Verwenden von Integrated Logic Analyzer (ILA) und Virtual Input/Output (VIO)
  5. Wie sich ein Signal von einer Variable in VHDL unterscheidet
  6. Automatisieren Sie die FPGA-Entwicklung mit Jenkins, Vivado und GitHub auf einem Linux-VPS
  7. Prozeduranweisung – VHDL-Beispiel
  8. So verzögern Sie die Zeit in VHDL:Wait For
  9. So verwenden Sie signiert und unsigniert in VHDL
  10. So erzeugen Sie einen atmenden LED-Effekt mit einer im Block-RAM gespeicherten Sinuswelle