Hochschule Kempten      
Fakultät Elektrotechnik      
Digitaltechnik       Fachgebiet Elektronik, Prof. Vollrath      

Digitaltechnik

06 VHDL, Test und ein Multiplexer

Prof. Dr.

Jörg Vollrath


05 Multiplexer und VHDL


Ein kurze Videozusammenfassung der Vorlesung



Länge: 9:07 min

0:11 VHDL Beschreibung

0:46 Kopieren und Verändern

1:57 Architecture

3:05 Beispiel ANDX

4:20 Klammern setzen

4:40 Test ANDX_test

5:45 Unit under test UUT ANDX wird realisiert

6:10 Testmuster erzeugen

7:40 Simulationsergebnis

Übungsaufgabe: Erstellung einer Wahrheitstabelle und eines Signalverlaufes aus einer VHDL Beschreibung


Länge: 10:47 min
0:40 Wahrheitstabelle: Eingänge, Ausgänge

1:48 Analyse Architecture

2:51 Spalte Y: Teilfunktion 2

3:46 Spalte Y Ergebnis

4:26 VHDL Testanalyse

5:35 Zeitdarstellung

6:09 X-Achse

6:35 undefined

7:10 100ns

7:37 VHDL Zeilen, Spalten in der Zeitdarstellung

9:03 Ausgang Y: Wahrheitstabelle und Zeitdarstellung

Wiederholung und Heute

Heute:

Darstellung eines Minterms durch NAND Funktionen

SOP-Ausdruck (sum of products) (AB)+(CD)

Verifikation mit einer Wahrheitstabelle

Schaltung zur Realisierung der Normalform

Stellen Sie die Wahrheitstabelle auf.
Geben Sie die logische Gleichung an.
Jedes Gatter hat eine Verzögerungszeit von 5 ns.
Geben Sie die maximale Verzögerungszeit an.

Schaltung zur Realisierung der Normalform

Stellen Sie die Wahrheitstabelle auf. Geben Sie die logische Gleichung an. Jedes Gatter hat eine Verzögerungszeit von 5 ns. Geben Sie die maximale Verzögerungszeit an.

Eingänge Signale Ausgänge
IN2 IN1 IN0 X1 X2 X3 X4 X6 X7 X8 OUT0 OUT1
0 0 0 1 1 1 1 1 1 1 0 0
0 0 1 1 1 0 1 1 1 1 0 0
0 1 0 1 0 1 1 1 0 1 0 1
0 1 1 1 0 0 1 0 1 0 1 1
1 0 0 0 1 1 0 1 1 1 1 0
1 0 1 0 1 0 1 1 1 1 0 0
1 1 0 0 0 1 1 1 1 1 0 0
1 1 1 0 0 0 1 1 1 1 0 0

Geben Sie die logische Gleichung für Out0 an:
OUT0 = (IN2 /IN1 /IN3) + (/IN2 IN1 IN0)

Geben Sie die logische Gleichung für Out1 an:
OUT1 = (/IN2 IN1/IN0) + (/IN2 IN1 IN0)

Die maximale Verzögerungszeit beträgt 3 * 5 ns = 15 ns.
Ein NAND Gatter hat nur dann eine 0 am Ausgang, wenn alle Eingänge auf 1 sind.
X4 ist nur dann 0, wenn IN2=1, /IN1=1 und /IN0=1 ist.
Eine ähnliche Schaltung wird im Versuch 2 realisiert.

Anzahl Eingänge, Stufigkeit und Verzögerung

  • Im einfachen Verzögerungsmodell gibt es pro Stufe eine Einheitsverzögerung
  • Im einfachen Modell kann man beliebig viele Variablen auf einmal Verknüpfen in der praktischen Realisierung ist das nicht möglich:
    • Praktische Realisierungen haben meist bis zu 4 Eingänge.
    • Bei mehr Eingängen verwendet man mehrere Stufen

VHDL Beschreibung

  • Steuerwörter:
    • Entity, is, port, end, architecture, of, begin, <=, and, end
  • Trennungszeichen
    • Strichpunkt ;
  • Programmierung durch Kopieren und Verändern.
  • Struktur
    • Entity: Schnittstelle: Eingänge und Ausgänge
    • architecture: Verbindung und Funktionen

VHDL Beschreibung


entity und is port (
    X1,X2: in STD_LOGIC;
    Y: out STD_LOGIC);
end und;
architecture logic of und is
begin
    Y <= X1 and X2;
end;

Typ: STD_LOGIC

Wert Bedeutung Verwendung
’U’Nicht initialisiertNicht initialisiertes Signal im Simulator
’X’UndefiniertMehr als ein Signaltreiber
’0’Logische '0'Boolescher Wert
’1’Logische '1'Boolescher Wert
’Z’HochohmigTri-State Ausgang
’W’Schwach unbekanntMehrere Treiber mit L und H
’L’Schwache logische '0'Pull-down Widerstand
’H’Schwache logische '1'Pull-up Widerstand
’-’,DDon't careLogikzustand ohne Bedeutung

Ein Simulator erweitert die Wahrheitstabellen für Verknüpfungen entsprechend.

Ports, Busse und Signale

Entwicklungsumgebung (IDE)

Xilinx Vivado

Integrated development environment (IDE).
Entwicklungsumgebungen sehen alle sehr ähnlich aus und sind folgendermaßen aufgebaut:
Links gibt es den "Flow Navigator" der die Schritte Entwurf("IP Integrator"), Simulation und Hardware Konfiguration ("RTL Analysis", "Synthesis", "Implementation") bereitstellt.
Entwurf: Zusammenstellung von Schaltungen durch VHDL, Verilog oder vordefinierten Blöcken (IP-Catalog).
Simulation: Eine logische Schaltung wird mit geeigneten Stimuli (Eingangssignalen) simuliert.
Mit Hilfe der Simulation erzeugt man eine Wahrheitstabelle um die Schaltung zu verifizieren.
Hardware Konfiguration: Aus einer textuellen Beschreibung soll eine Konfigurationsdatei für einen Logikschaltkreis erzeugt werden.
Diese Punkte entsprechen dem Kompilieren und Debuggen einer Programmierumgebung.
In Abhängigkeit des Schrittes ändern sich die rechts daneben gezeigten Fenster.
Rechts ist der Texteditor mit Syntaxhighlighting.
Schlüsselwörter werden farbig hervorgehoben.
In der Mitte ist der Baum mit allen verwendeten Dateien.
Im unteren Bereich sieht man Statusmeldungen (Fehler).

Beispiel: Logikfunktion

entity ANDX is
    Port ( X : in  STD_LOGIC_VECTOR (3 downto 0);
           y : out  STD_LOGIC);
end ANDX;

architecture Behavioral of ANDX is
signal H1:STD_LOGIC;
begin
 h1 <= x(1) and x(2);
 y<= (h1 or x(0)) and x(3);
end Behavioral;
Hier wird das Steuerwort 'signal' verwendet.

Test (1)

ENTITY ANDX_test IS
END ANDX_test;
 
ARCHITECTURE behavior OF ANDX_test IS 
    -- Component Declaration for the Unit Under Test (UUT)
    COMPONENT ANDX
    PORT(
         X : IN  std_logic_vector(3 downto 0);
         y : OUT  std_logic
        );
    END COMPONENT;
   --Inputs
   signal X : std_logic_vector(3 downto 0); -- := (others => '0');
   --Outputs
   signal y : std_logic;

Die entity ANDX_test hat keine Eingänge oder Ausgänge.
In der Architecture findet man erst die verwendeten Komponenten (COMPONENT) und dann die Leitungen oder Register (signal).

Test (2)

BEGIN
	-- Instantiate the Unit Under Test (UUT)
   uut: ANDX PORT MAP (
          X => X,
          y => y
        );
Als erstes wird die zu testende Schaltung (unit under test, uut) implementiert und verbunden (PORT MAP).
Da die Schaltung ANDX mehrmals verwendet werden kann, wird dieser Instanz der name uut zugeordnet.

Test (3)


   -- Stimulus process
   stim_proc: process
   begin		
 -- hold reset state for 100 ns.
      wait for 100 ns;	
 -- insert stimulus here 
      x <= (others => '0'); wait for 100 ns;
      x <= "1000"; wait for 100 ns;
      x(1) <='1'; wait for 100 ns;
      x(2) <='1'; wait for 200 ns;
      x(3 downto 2) <= "00"; wait for 100 ns;
      x <= "1001"; wait for 100 ns;
      wait;
   end process;
END;
Mit der Anweisung 'process' kann man eine Abfolge definieren.
Die 'wait' Anweisungen bestimmen das zeitliche Verhalten.
Die Anweisungen werden nacheinander von oben nach unten abgearbeitet.
Nur bei einer expliziten Zuweisung kann sich ein Signal ändern.

Simulationsergebnis


Schaltungsblöcke

Wiederverwendbarkeit, Componenten, mehrstufige Logik

Die Entwicklungsumgebung generiert ein Template (leere Hülle) zum Test einer Schaltung.
Man muss nur die zeitliche Abfolge der Signale einfügen.

Ein Multiplexer in VHDL

  • Entity
    • Input
    • Output
    • Std_logic
    • Std_logic_vector
      Bus
  • Architecture
    • When Anweisung (Statement)
entity Multiplexer_VHDL is
   port   (
      a, b, c, d: in std_logic; 
      Sel : in std_logic_vector(1 downto 0);
      Y : out std_logic
   );
end entity Multiplexer_VHDL;
 
architecture Behavioral of Multiplexer_VHDL is
begin 
     Y<= a when Sel="00" else
         b when Sel="01" else
         c when Sel="10" else
         d; 
end architecture Behavioral;

Fragen und Diskussion

  • Skizzieren Sie eine Schaltung zur Realisierung einer Normalform.
  • Welche Größen muss ein Verzögerungsmodell berücksichtigen?
  • Warum modelliert man mehr Zustände als nur '0' und '1'?
  • Welche Abschnitte und Dateien hat ein VHDL-Projekt?
  • Wie sieht eine VHDL-Testdatei aus?
07 Zeichen und Codes

Begriffe

Begriff/Bauteil Kenn ich nicht Kenne ich Verstehe ich Kann ich erklären Kann ich anwenden
Mikroprozessor


Submit