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.

Verwandte Einträge: