VHDL-Grundlagen: Design und Syntax
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 4,61 KB
Allgemeines
Design:
- CAD (Computer-Aided Design)
- Simulation
- EDA (Electronic Design Automation)
Grundlegende Design-Einheiten:
- Entity: Definiert die Schnittstelle eines Blocks.
- Architektur: Beschreibt das Verhalten oder die Struktur des Designs.
- Pakete: Enthalten Deklarationen für die Wiederverwendung.
- Signale und Variablen: Speichern und übertragen Daten.
- Anweisungen: IF, ELSE, CASE (für bedingte Logik).
Entity-Deklaration
Die Entity zeigt an, was das Design ist, und definiert die Schnittstelle, ohne das Verhalten zu definieren.
Beispiel:
ENTITY Beispiel IS PORT ( -- Eingänge -- Ausgänge -- I/O -- Puffer ); END Beispiel;
ENTITY Ejem1 IS PORT ( a, b: IN BIT; s: OUT BIT; ); END Ejem1;
ENTITY MUX1 IS PORT ( Data: in bit_vector (3 downto 0); Select: in bit_vector (1 downto 0); Enable: in bit; Sal: out bit; ); END MUX1;
Architektur
Die Architektur gibt an, wie das Design funktioniert. Sie kann Modelle, Verhalten oder Struktur (RTL) haben. Eine Entity kann mehrere Architekturen haben.
Beispiel:
ARCHITECTURE archejem1 OF Ejem1 IS -- Deklaration von Signalen und anderem Zubehör BEGIN -- Kernprogramm END archejem1;
ARCHITECTURE archejem1 OF Ejem1 IS BEGIN s <= a and b; END archejem1;
Signal- und Variablenzuweisung
- SIGNAL-Zuweisung:
<=
- VARIABLE-Zuweisung:
:=
x und
s
Modi und Datentypen
- Modi: IN, OUT, INOUT, BUFFER
- Datentypen:
- INTEGER: Wertebereich wird vom Benutzer oder Compiler definiert.
- BIT: '0', '1'
- BIT_VECTOR: "0101", "00111010"
- STD_LOGIC: '0', '1', 'x', 'z'
- STD_LOGIC_VECTOR: "0z1x011"
- TIME: 20 ns, 2.5 ps
Beispiele für INTEGER:
Paul: INTEGER RANGE 0 TO 255; John: INTEGER RANGE 200 DOWNTO 54; Peter: INTEGER; -- Standardbereich
Beispiele für BIT_VECTOR:
flehende: bit_vector (7 downto 0); flehende: bit_vector (0 to 3);
Bus-Zuweisung
- Vollständiger Bus:
Jose <= "11111111";
- Einzelnes Bit:
dino(3) <= '1';
jose(5) <= '1';
- Teil des Busses:
SIGNAL pablo: bit_vector (7 downto 0); <---- Signaldeklaration pablo(3 downto 2) <= "11"; <---------- Verwendung des Signals
Verkettungen
SIGNAL vilma: bit_vector (8 downto 0); <---- Signaldeklaration Vilma <= a(1) & b(3 downto 0) & '0' & "010"; <---------- Verkettung
Signalzuweisung
- Einfach:
R oder T b <= ((R or T) and not (XOR g h)); c <= a and b; -- Erzeugt ein UND-Gatter x <= y + z and z;-- Summiert, dann weist das Ergebnis x zu
ENTITY Ejm2 IS PORT ( a, b: IN BIT; c: OUT BIT ); END Ejm2; ARCHITECTURE maxpld OF Ejm2 IS BEGIN c <= a and b; END maxpld;
- Bedingt: Eine Reihe von Ausdrücken, die nach einer positiven Bewertung logischer Ausdrücke zugewiesen werden.
q <= '0' WHEN clr = '0' ELSE '1' WHEN set = '1' ELSE 'x'; ARCHITECTURE mux OF MUX2 IS BEGIN f <= a when s = '0' ELSE b; END mux;
- Selektiv:
WITH sel SELECT
WITH sel SELECT q <= a WHEN '0', b WHEN '1';
Beschreibungsstile
- Verhaltensbasiert: Verwendet Anweisungen wie IF, CASE, THEN. Unabhängig von der Logikgatterverteilung. Benötigt "PROCESS" für sequentielle Strukturen.
CPLD: Complex Programmable Logic Devices FPGA: Field Programmable Gate Array
- Datenfluss: Beschreibt, wie Informationen von Signal zu Signal übertragen werden, ohne sequentielle Anweisungen, sondern nebenläufige. Keine "PROCESSES".
- Strukturell: Eine "Netzliste" von VHDL-Komponenten, die durch Signale verbunden sind. Benötigt oft Hilfssignale, "Pakete" und Bibliotheken.
Paketdeklaration: PACKAGE Paketname IS -- Deklaration der Prozeduren -- Deklaration der Funktionen -- Komponentendeklaration END Paketname;
- Gemischt: Kombination der obigen Stile.