vhdl crashkurs ss02 - startseite tu ilmenau · pdf file2 vhdl • hardware-beschreibung zum...
TRANSCRIPT
1
VHDL, VHDL-AMS
zur Vorlesung E+VSommersemester 2003
T. Vangelov
Vorlesung E+V
2
VHDL
• Hardware-Beschreibung zum Zwecke der– Patentanmeldung von Algorithmen
– Simulation
– Synthese von IC‘s
• Beschreibung erfolgt unter den Gesichtspunkten– Verschaltung
– Verhalten ? Struktur
– Hierarchie
• synthesefähiges Subset!
VHDL: Very high speed integrated circuits Hardware Description Language
Die Geschichte von VHDL
• 1981: Vom Verteidigungsministerium der USA (DoD) begründet,um Kosten zu senken
• 1983: Intermetrics, IBM und Texas Instruments entwickeln imAuftrag des DoD Software und verbessern VHDL weiter
• 1985: Version 7.2, Übergabe an IEEE zur Standardisierung
• 1987: IEEE 1076-1987, VHDL´87, bislang erster und einzigerHDL-Standard
• 1991: IEEE 1164, Neunwertige Logik std_logic
• 1993: IEEE 1076-1993, VHDL´93, neuer Standard
• 1999: IEEE 1076.1-1999, VHDL-AMS (Analog and Mixed-Signal)
high level of abstraction
Functional (Behavioral)Structural
Geometric “Y-chart” due to Gajski & Kahn
low level of abstraction
Entwurfsebenen
FunctionalStructural
Geometric
Algorithm(behavioral)
Register-TransferLanguage
Boolean Equation
Entwurfsebenen
Differential Equation
FunctionalStructural
Geometric
Processor-MemorySwitch
Register-Transfer
Gate
Entwurfsebenen
Transistor
7
Entity – Hülle und Schnittstellendefinition
• logische Kapselung einer Einheit
• Definition der Schnittstelle: Signale? X
• Signale werden durch Bezeichner, Richtung und Datentyp definiert– Richtungs-Bsp.: in, out, inout, buffer
– Datentyp-Bsp.: bit , std_logic(_vektor )
ENTITY
xx
x
parameter
Sicht von außen
ENTITY
x2y
Sicht von innen
Signale sind innen wie außen bekannt und können dort genutzt, d.h. verdrahtet werden
x1ENTITY
x2y
x1
8
Entity als „Black Box“
two_gate
x1
x2
y
• Nach außen „black box“? Kapselung der inneren Struktur und des Verhaltens (Funktionalität)
• hier: Entity mit zwei Eingängen und einem Ausgang
• Port ist definiert, Funktionalität aber noch völlig offen
Strukturund
Verhalten ?
Port
PortName
9
Entity – Beispiel
Schlüsselwörter sind blau
Schlüsselwörter entweder groß- oder kleinschreiben, nicht gemischt !
LIBRARY ieee;USE ieee.std_logic_1164.all;
Zu verwendende Bibliothek
Was soll aus der Bibliothek verwendet werden
Vorspann
Name der Entity
Schnittstelle
Zwei Eingangs-Signale mit Namen: x1 und x2
Datentyp der Signale (mehrwertige Logik)Name der Entity
Entity-Definition
Ausgangs-Signalmit Namen: y
ENTITY two_gate IS
PORT ( x1, x2 : IN std_logic;y : OUT std_logic );
END two_gate;
10
Architecture – Verhalten einer Entity
• Das Verhalten einer Entity wird in einer Architecture beschrieben.
• Die Architektur – bekommt einen eindeutigen Namen,
– kann einen Deklarationsteil für interne Signale haben,
– ist einer Entity zugeordnet.
• Es können verschiedenen Architekturen für dieselbe Entity erstellt werden.
ARCHITECTURE <Architekturname> OF <Entity-Name> IS[Deklarationsteil]BEGIN
[Architektur Statements]END <Architekturname>;
x1
x2
yStrukturund
Verhalten
Architecture
11
Architecture – Beispiel
• Beispiel eines NAND-Gatters basierend auf der vorhergehendenEntity-Definition:
ARCHITECTURE two_gate_nand OF two_gate ISBEGIN
y <= NOT ( x1 AND x2 );
END two_gate_nand;
Name dieser Architektur
Verhaltensbeschreibung:
Ein Statement mit vordefinierten Befehlen:
AND, OR, NOTName dieser Architektur
Zuweisungsoperatorfür Signale
Name der Schnittstellen-Definition (Entity)
&x1 yx2
Architecture
12
Configuration – Das Bindeglied
Durch die Konfiguration wird eine Verhaltens-Beschreibung einer Entity eindeutig zugeordnet.
– Unterschiedliche Verhaltensbeschreibungen für ein Entityfür die Simulation oder zur Synthese.
? verschiedene Ausprägungen des Verhaltens? Simulation unterschiedlich aufwendig und schnell
– Schnittstellendefinition gilt für eine Klasse von Entitys,z.B.: UND,ODER, XOR, ...-Gatter jeweils mit zwei Eingängen? nur Erstellen einer neuen Verhaltensbeschreibung
13
two_gate_nand_conf
x1
x2
y
Configuration – Beispiel
• Die Konfiguration bettet eine Architektur in eine Entity ein.
-- Configuration for nand with two Inputs
CONFIGURATION two_gate_nand_conf OF two_gate ISFOR two_gate_nand
. . .END FOR;
END two_gate_nand_conf;
Name der Entity
Name der zu verwendenden
Architektur
Name der Konfiguration
&x1 yx2 VHDL Kommentar
eingeleitet mit: --
14
Zwischenstand
• bisher behandelt– Entity beschreibt die Kapsel einer logischen Einheit und
definiert deren Schnittstelle– Architecture beschreibt das Verhalten einer Entity als
Verhaltens- oder Strukturbeschreibung– Configuration verknüpft eine Architecture mit einer Entity
• was fehlt noch:– Komponenten
• zur Erstellung von Strukturbeschreibungen und • zum Einführen von Hierarchie-Ebenen
– Prozesse– Kontrollfluss, Automaten und Bitvektoren– Zeitverhalten
15
Verwendung von Komponenten
• Hierarchische Verwendung von Komponenten
• Komplexeres Gatter – Beispiel: XOR– Strukturbeschreibung
– Port: 2 Eingänge und 1 Ausgang
– Wiederverwendung von two_gate,hier mit neuem Namen xor_gate.
&
&>
x1
y
x2
Geplanter Aufbaudes Entity xor_gate:
Komponenten
• ent1, ent2 (Und-Gatter)
• ent3 (Oder-Gatter)
• invx1, invx2 (Inverter)
16
XOR-Entity
• Entity-Deklaration
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY xor_gate IS
PORT( x1, x2 : IN std_logic;y : OUT std_logic );
END xor_gate;
17
XOR – Deklarationen
• Architektur-Deklarationsteil• Einbinden von fertigen Komponenten
ARCHITECTURE xor_behavior OF xor_gate IS
COMPONENT two_gatePORT ( x1, x2: in std_logic; y: out std_logic );
END COMPONENT;
SIGNAL connect1, connect2: std_logic;SIGNAL invx1, invx2: std_logic;
BEGIN...
Gater-Deklarationmit zwei Eingängen und einem Ausgang
Zwei Verbindungsleitungen für die 2 Und-Gatter und
das Oder-Gatter
Zwei Verbindungsleitungen für die invertierten Eingangssignale
18
XOR – Instanzierungen
• Instanzierung und Verdrahtung der Komponenten
...ent1: two_gate PORT MAP (x1 => x1, x2 => invx2, y => connect1 );ent2: two_gate PORT MAP (x1 => invx1, x2 => x2, y => connect2 );ent3: two_gate PORT MAP (x1 => connect1, x2 => connect2, y => y );...
Instanz
Typ der Instanz Verdrahtung: Intern => Extern(aus Sicht der Komponente)
19
XOR-Verschaltung
• Im einzelnen:
ent1: two_gatePORT MAP ( x1 => x1,
x2 => invx2,y => connect1 );
ent2: two_gatePORT MAP ( x1 => invx1,
x2 => x2,y => connect2 );
20
XOR-Verschaltung
ent3: two_gatePORT MAP ( x1 => connect1,
x2 => connect2,y => y );
Zeilenumbrüche nicht von Bedeutung !!
21
Process – Parallele Beschreibung
• Auswertung eines Prozesses:– Anweisung innerhalb eines Prozesses laufen sequentiell !– Ein Prozess ist wie eine Endlosschleife zu sehen– Ein Prozess muß mindestens eine Warteanweisung
( veränderliches Signal, Zeitdauer, Ereignis ) enthalten, damit keine „Endlosschleife“ ohne Zeitverbrauch entsteht.
Prozesssequentiell abarbeiten
Werte am Ende desProzesses bestimmen
Elvaluations-Zyklus
getriggertes Event
Veränderung eines sensitiven Signals zum vorigen Durchlauf
Signalestabil
22
Process – Parallele Beschreibung
...BEGIN
[label:] PROCESS ( x1, x2, ... )BEGIN
parallele Umgebung;
END PROCESS [label];
END;
Prozessname (optional)
Prozessname(optional)
Innerhalb einer Architecture
Sensitivliste:angegebenen Signale aktivieren bei Signaländerung den Prozess.Analog zu: „warte darauf das sich bei x1 oder x2 irgend etwas ändert“ ( alternativ: wait-statement )
Verhalten wird parallel ausgewertet !Unterschied zu Variablen einer„gewöhnlichen“ Programmiersprache
VHDL
A <= B;C <= A;
JAVA
A = B;C = A;=
• Syntax eines Prozesses
23
XOR-Architektur
• Invertierung der Eingangssignale
...INV : PROCESS ( x1, x2 )BEGIN
invx1 <= NOT x1;invx2 <= NOT x2;
END PROCESS INV;
END xor_arch;
Sensitiv-Liste
Zuweisung des invertierten Eingangssignals
Prozessname
24
XOR-Kofiguration
• Zuweisen des Verhaltens an die instanzierten Entitys
CONFIGURATION xor_conf OF xor_gate ISFOR xor_behavior
FOR ent1,ent2 : two_gateUSE ENTITY work.two_gate(two_gate_and);
END FOR;
FOR ent3 : two_gateUSE ENTITY work.two_gate(two_gate_or);
END FOR;END FOR;
END xor_conf;
Entity 1 und 2 sind vom Typ:two_gate
Verwende das folgende Entity
Entity-Name
Zugewiesene Architektur der Entitys: AND-gate
Zugewiesene Architektur der Entity: OR-gate
25
Kontrollfluss
• Verzweigung– IF – THEN – ELSE– CASE
LOGIC : PROCESS ( x1, x2, x3 )BEGIN
IF ( x1 = '1' ) THENy <= '0' ;
ELSIF ( x2 = '1' ) THENy <= '1' ;
ELSEy <= 'Z' ;
END IF;...
...
CASE x3 IS
WHEN '0' =>z <= '0' ;
WHEN others =>z <= '1' ;
END CASE;
END PROCESS LOGIC;
Default Fall
nichtelseif
26
Automaten
• Zustandsbasierte Moore- oder Mealy-Automaten• Zustandsübergangsfkt. : current_state? next_state
TYPE state_type IS ( S0, S1 ) ;SIGNAL current_state, next_state: state_type ;
Automata : PROCESS ( current_state )BEGIN
CASE current_state ISWHEN S0 =>
next_state <= S1 ; ...WHEN others =>
next_state <= S0 ; ...END CASE;
END PROCESS Automata;...
Definition eines Zustandsvektors
Instanzierung eines Zustandsvektors
Setzen der Zustands-übergangsfunktion
Default Fall
S0
S1
? ?
27
Automaten
• Fortschaltung der Zustände in separatem Prozess• Asynchrones Reset ? Rücksetzen auf Zustand „S0“• Synchroner Zustandsübergang bei steigender Flanke
vom Clock-Signal „CLK“
...Synch : PROCESS ( CLK, RESET )BEGIN
IF ( RESET = '1' ) THEN -- define an asynchronous resetCURRENT_STATE <= S0;
ELSIF ( CLK'EVENT and CLK = '1' ) THENCURRENT_STATE <= NEXT_STATE;
END IF;
END PROCESS Synch;
triggert auf steigende CLK-Flanke
Zustandsübergang
S0
S1
CLKCLK
28
Bitvektoren
• Einzelne Leitungen können zu Vektoren zusammengefasst werden:std_logic ? std_logic_vector( )
• Beispiel: codierte Position mit 3 bit
ENTITY Position ISPORT( SOLL : in std_logic_vector( 2 downto 0 );
IST : out std_logic_vector( 0 to 2 ) );END Position;
3 Bit breiter binär codierter Positions-Vektor,Schreibweise (x downto y) entspricht der üblichen Interpretation der Binärstellen mit MSB und LSB(MSB: most significant bit, LSB: least ...)
22
1 1 021 20
LSBMSB? Pos: 6
20
0 1 121 22
MSBLSB? Pos: 6
steigende Wertigkeit
steigende Wertigkeit
29
VHDL-AMS Vorteile und Eigenschaften
• Erweiterung von VHDL um Elemente zur Beschreibung analoger undgemischt analog- digitaler Systeme
• AMS = Analoge Mixed Signal• Spezifikation in IEEE 1076.1 (Obermenge von VHDL 1076 - 1993)
VHDL-AMSIEEE 1076.1-1999
VHDLIEEE 1076-1993
30
VHDL-AMS Vorteile und Eigenschaften
• Vorteile beim Systementwurf- Betrachtung analog / digital gemischter Systeme- Betrachtung von nicht elektrischen Systemen- Einbeziehung der Umgebung in Entwurf
• Vorteile beim Analogentwurf- analoge Verhaltensmodellierung und –simulation
• Vorteile beim Digitalentwurf- genauere Modellierung (z. B. Submicron- Effekte)
• Vorteile beim Entwurfsablauf- Modellaustausch erleichtert- simulatorunabhängige Modelle- Rechenzeitreduzierung durch Verhaltensmodellierung
• Anwendungsgebiete- Digitale Systeme, analoge Netzwerke und regelungstechnische Systeme
31
VHDL-AMS Vorteile und Eigenschaften
• Neues Simulationsmodell mit Unterstützung von kontinuierlichem Verhalten- kontinuierliches Modell basiert auf Diffentialgleichungssystemen (DAEs)- DAEs werden von einem unabhängigen Simulationskern gelöst- Bearbeitung von Initialbedingungen, stückweise definiertem Verhalten und Diskontinuitäten
• Erweiterte Strukturbeschreibungsmöglichkeiten- konservative Modelle und nicht-konservative Modelle- Gemischtsignalschnittstelle
• Gemischtsignalbeschreibungsmöglichkeiten- Vereinheitlichtes Modell der Zeit für Synchronisation von gemischtem ereignisorientierten und
kontinuierlichen Verhalten
• Frequenzbereichunterstützung- Kleinsignalfrequenz und -rausch Modellierung und Simulation
terminal – analoge Klemme
externe und interne Verbindungspunkte
Die Erweiterung AMS -Neue Sprachelemente
konservative Klemmen
Beschreiben von Fluss(through)- und Differenz(across)-Größen gegenüber einem zugehörigen Bezugsknoten
nichtkonservative Klemmen
Beschreiben den zeitlichen Verlauf eines Signals (z.B. Ein- und Ausgänge von regelungstechnischen Blöcken)
33
Neue Sprachelemente – Terminals
Komponente
Terminal n
i = n'contribution
n'reference
• Basis für strukturelle konservativeModelle
• Eigenschaft contribution gibt Flußin Komponente am Konten alsQuantity wieder
• Eigenschaft reference dieDifferenzgröße bezogen zurReferenz der Natur
nature – Definition der Klemmentypen
✗ werden in Packages zusammengefasst
✗ Definitionen gehören nicht zum Sprachumfang
✗ fehlende Standardisierung
Vorsicht beim Einsatz von Packagesunterschiedlicher Hersteller !
Die Erweiterung AMS -Neue Sprachelemente
35
Neue Sprachelemente – Nature
package electrical_ system issubtype voltage is REAL tolerance "default_ voltage";subtype current is REAL tolerance "default_ current";subtype charge is REAL tolerance "default_ charge";
nature electrical isvoltage acrosscurrent throughelectrical_ref reference;
alias ground is electrical_ ref;nature electrical_ vector isarray( NATURAL range <>) of electrical;end package electrical_ system;
Differenzgröße
Flußgröße
Bezugsknotender Natur
Vergabe vonToleranzklassen
quantities – Definition physikalischer Größen✗ wirken entlang der Zweige des Systems✗ zeitabhängige Funktion✗ physikalische Dimension✗ Ableitungen und Integrale
Die Erweiterung AMS -Neue Sprachelemente
8
Neue Sprachelemente – Quantities, SimultaneousStatements
ARCHITECTURE sd OF SigmaDelta ISQUANTITY input_v ACROSS input;QUANTITY output_v : REAL := 0.0;QUANTITY sum1 : REAL;QUANTITY voutint : REAL := 0.0;SIGNAL vref_help : REAL := vref;
BEGINSDW : ENTITY DigComparator(behav) GENERIC MAP
(vref=>vref) PORT MAP (clk, sum1, vref_help, output);
voutint == 1.0/tau1*output_v'INTEG;sum1 == input_v - voutint;output_v == vref_help;
END ARCHITECTURE sd;
Deklaration
Initialwert
Integrationeiner Größe
nichtlinearessimultanes DLG-System
NeuerZuweisungsoperator
38
Neue Sprachelemente – Branch Quantities
p
m
VSinus ENTITY VSinus ISGENERIC (Va : REAL := 1.0;
freq : REAL := 1.0 );PORT (TERMINAL p, m : ELECTRICAL);
BEGINEND ENTITY VSinus;
ARCHITECTURE v1 OF VSinus ISQUANTITY v ACROSS i THROUGH p TO m;
BEGIN
v == Va* SIN( 2.0* math_pi* freq*NOW );END ARCHITECTURE v1;
v
i
Bezugsknoten
Differenzgröße
Flußgröße
entity RC_GLIED isport(terminal P0,P1,P2 : electrical);
end;architecture STRUKTUR of RC_GLIED isbegin
R: entity RESISTOR port map(P1,P2);C: entity CAPACITOR port map(P2,P0);
end;
R
C
p1 p2
p0
Die Erweiterung AMS - Beispiel: RC-Glied
entity RESISTOR isgeneric(R: REAL := 1000.0); -- default: 1kOhmport(terminal A,B: electrical);
end;architecture VERHALTEN of RESISTOR is
quantity U across I through A to B;begin
U == R*I;end VEHALTEN;
A B
UI
R
Die Erweiterung AMS - Beispiel: RC-Glied
R
entity CAPACITOR isgeneric(C: REAL := 100.0e-9); -- default: 100nFport(terminal A,B: electrical);
end;architecture VERHALTEN of CAPACITOR is
quantity U across I through A to B;begin
I == C * U'dot;end VERHALTEN;
A B
UI
C
Die Erweiterung AMS - Beispiel: RC-Glied
C
Simulationsergebnis des RC-Gliedes
Die Erweiterung AMS - Beispiel: RC-Glied
43
Timing-Verhalten
• Timing kann unterschiedlich modelliert werden– wait for– after– Sensitivliste
• Benutzung eines Generic-Parameters• Hier: verzögerte Zuweisung (Ausgangsverzögerung)
ENTITY two_gate ISGENERIC( del_time: time := 2 ns );PORT( x1, x2: in std_logic; y: out std_logic );
END two_gate;
ARCHITECTURE two_gate_del_nand OF two_gate ISBEGIN
y <= NOT ( x1 AND x2 ) AFTER del_time;END two_gate_del_nand ;
Verzögerte Zuweisung nach 2ns
Parameter für Verzögerungszeit mit Defaultwert
44
• Literatur– Vorlesung "VHDL-Crashkurs": S. Ihmor, T. Lehmann– Buch "Schaltungsdesign mit VHDL": G. Lehmann, B. Wunder, M. Selz
E O F ( end of file )
VHDL, VHDL-AMS
– Vortrag "VHDL Quick Start": P.J. Ashender
– Hauptseminare "VHDL-AMS": M. Zens; A. Stahl– Broschüre "VHDL-AMS Einführung" TU Darmstadt: A. Huss