VHDL, VHDL-AMS

Transcrição

VHDL, VHDL-AMS
Vorlesung E+V
VHDL, VHDL-AMS
zur Vorlesung E+V
Sommersemester 2003
T. Vangelov
1
VHDL
VHDL: Very high speed integrated circuits Hardware Description Language
• 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!
2
Die Geschichte von VHDL
•
1981: Vom Verteidigungsministerium der USA (DoD) begründet,
um Kosten zu senken
•
1983: Intermetrics, IBM und Texas Instruments entwickeln im
Auftrag 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 einziger
HDL-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)
3
Entwurfsebenen
Functional (Behavioral)
Structural
high level of
abstraction
low level of
abstraction
Geometric
“Y-chart” due to
Gajski & Kahn
4
Entwurfsebenen
Functional
Structural
Algorithm
(behavioral)
Register-Transfer
Language
Boolean Equation
Differential Equation
Geometric
5
Entwurfsebenen
Functional
Structural
Processor-Memory
Switch
Register-Transfer
Gate
Transistor
Geometric
6
Entity – Hülle und Schnittstellendefinition
• logische Kapselung einer Einheit
ENTITY
x
x
x
• Definition der Schnittstelle: Signale ? X
• Signale werden durch Bezeichner,
Richtung und Datentyp definiert
– Richtungs-Bsp.: in, out, inout, buffer
parameter
– Datentyp-Bsp.: bit, std_logic(_vektor )
ENTITY
x1
x2
ENTITY
y
Sicht von außen
x1
x2
y
Signale sind innen wie
außen bekannt und
können dort genutzt,
d.h. verdrahtet werden
Sicht von innen
7
Entity als „Black Box“
• 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
Name
two_gate
Port
x1
Port
x2
Struktur
und
Verhalten ?
y
8
Entity – Beispiel
Schlüsselwörter
sind blau
Vorspann
Zu verwendende
Bibliothek
Was soll aus der
Bibliothek
verwendet werden
LIBRARY ieee;
USE ieee.std_logic_1164.all;
Name der Entity
Entity-Definition
ENTITY two_gate IS
Schnittstelle
Zwei Eingangs-Signale
mit Namen: x1 und x2
PORT ( x1, x2 : IN
std_logic;
y
: OUT std_logic );
END two_gate;
Name der Entity
Ausgangs-Signal
mit Namen: y
Datentyp der Signale
(mehrwertige Logik)
Schlüsselwörter entweder groß- oder kleinschreiben, nicht gemischt !
9
Architecture – Verhalten einer Entity
• Das Verhalten einer Entity wird
in einer Architecture beschrieben.
x1
Architecture
• Die Architektur
x2
Struktur
und
Verhalten
y
– 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>;
10
Architecture – Beispiel
Architecture
• Beispiel eines NAND-Gatters
basierend auf der vorhergehenden
Entity-Definition:
Zuweisungsoperator
für Signale
Name dieser
Architektur
x1
x2
&
y
Name der SchnittstellenDefinition (Entity)
ARCHITECTURE two_gate_nand OF two_gate IS
BEGIN
y <= NOT ( x1 AND x2 );
END two_gate_nand;
Name dieser
Architektur
Verhaltensbeschreibung:
Ein Statement mit
vordefinierten Befehlen:
AND, OR, NOT
11
Configuration – Das Bindeglied
Durch die Konfiguration wird eine VerhaltensBeschreibung einer Entity eindeutig zugeordnet.
– Unterschiedliche Verhaltensbeschreibungen für ein Entity
fü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
12
Configuration – Beispiel
• Die Konfiguration bettet eine Architektur in eine Entity ein.
two_gate_nand_conf
x1
x2
x1
x2
&
y
y
VHDL Kommentar
eingeleitet mit: -Name der Entity
-- Configuration for nand with two Inputs
CONFIGURATION two_gate_nand_conf OF two_gate IS
FOR two_gate_nand
Name der
...
Konfiguration
Name der zu
END FOR;
verwendenden
END two_gate_nand_conf;
Architektur
13
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
14
Verwendung von Komponenten
• Hierarchische Verwendung von Komponenten
x1
&
>
x2
&
y
• Komplexeres Gatter – Beispiel: XOR
– Strukturbeschreibung
– Port: 2 Eingänge und 1 Ausgang
– Wiederverwendung von two_gate,
hier mit neuem Namen xor_gate.
Geplanter Aufbau
des Entity xor_gate:
Komponenten
• ent1, ent2 (Und-Gatter)
• ent3 (Oder-Gatter)
• invx1, invx2 (Inverter)
15
XOR-Entity
• Entity-Deklaration
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY xor_gate IS
PORT( x1, x2
y
: IN
std_logic;
: OUT std_logic );
END xor_gate;
16
XOR – Deklarationen
• Architektur-Deklarationsteil
• Einbinden von fertigen Komponenten
Gater-Deklaration
mit zwei Eingängen
und einem Ausgang
ARCHITECTURE xor_behavior OF xor_gate IS
COMPONENT two_gate
PORT ( x1, x2: in std_logic; y: out std_logic );
END COMPONENT;
SIGNAL connect1, connect2: std_logic;
SIGNAL invx1, invx2: std_logic;
BEGIN
...
Zwei Verbindungsleitungen
für die invertierten
Eingangssignale
Zwei Verbindungsleitungen
für die 2 Und-Gatter und
das Oder-Gatter
17
XOR – Instanzierungen
• Instanzierung und Verdrahtung der Komponenten
Typ der Instanz
Verdrahtung: Intern => Extern
(aus Sicht der Komponente)
...
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
18
XOR-Verschaltung
• Im einzelnen:
ent1: two_gate
PORT MAP ( x1 => x1,
x2 => invx2,
y => connect1 );
ent2: two_gate
PORT MAP ( x1 => invx1,
x2 => x2,
y => connect2 );
19
XOR-Verschaltung
ent3: two_gate
PORT MAP ( x1 => connect1,
x2 => connect2,
y => y );
Zeilenumbrüche nicht
von Bedeutung !!
20
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.
getriggertes Event
ElvaluationsZyklus
Prozess
sequentiell abarbeiten
Werte am Ende des
Prozesses bestimmen
Signale
stabil
Veränderung eines
sensitiven Signals zum
vorigen Durchlauf
21
Process – Parallele Beschreibung
• Syntax eines Prozesses
Innerhalb einer Architecture
...
BEGIN
Prozessname (optional)
[label:] PROCESS ( x1, x2, ... )
BEGIN
parallele Umgebung;
END PROCESS [label];
END;
Prozessname
(optional)
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;
22
XOR-Architektur
• Invertierung der Eingangssignale
Prozessname
...
INV : PROCESS ( x1, x2 )
BEGIN
invx1 <= NOT x1;
invx2 <= NOT x2;
END PROCESS INV;
Sensitiv-Liste
Zuweisung des invertierten
Eingangssignals
END xor_arch;
23
XOR-Kofiguration
• Zuweisen des Verhaltens an die instanzierten Entitys
Entity 1 und 2
CONFIGURATION xor_conf OF xor_gate IS
sind vom Typ:
FOR xor_behavior
two_gate
FOR ent1,ent2 : two_gate
USE ENTITY work.two_gate(two_gate_and);
END FOR;
Zugewiesene Architektur
der Entitys: AND-gate
FOR ent3 : two_gate
USE ENTITY work.two_gate(two_gate_or);
END FOR;
END FOR;
Zugewiesene Architektur
END xor_conf;
Entity-Name
der Entity: OR-gate
Verwende das folgende Entity
24
Kontrollfluss
• Verzweigung
– IF – THEN – ELSE
– CASE
LOGIC : PROCESS ( x1, x2, x3 )
BEGIN
IF ( x1 = '1' ) THEN
y <= '0' ;
ELSIF ( x2 = '1' ) THEN
y <= '1' ;
nicht
elseif ELSE
y <= 'Z' ;
END IF;
...
...
Default Fall
CASE x3 IS
WHEN '0' =>
z <= '0' ;
WHEN others =>
z <= '1' ;
END CASE;
END PROCESS LOGIC;
25
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 ;
Definition eines
Zustandsvektors
Automata : PROCESS ( current_state )
BEGIN
Instanzierung eines
Zustandsvektors
CASE current_state IS
Setzen der Zustandsübergangsfunktion
WHEN S0 =>
next_state <= S1 ; ...
Default Fall
WHEN others =>
next_state <= S0 ; ...
END CASE;
END PROCESS Automata;
...
S0
?
?
S1
26
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
triggert auf steigende
CLK-Flanke
IF ( RESET = '1' ) THEN
-- define an asynchronous reset
CURRENT_STATE <= S0;
S0
ELSIF ( CLK'EVENT and CLK = '1' ) THEN
CURRENT_STATE <= NEXT_STATE;
CLK
CLK
END IF;
END PROCESS Synch;
Zustandsübergang
S1
27
Bitvektoren
• Einzelne Leitungen können zu Vektoren
zusammengefasst werden:
steigende Wertigkeit
std_logic ? std_logic_vector( )
22 21 20
• Beispiel: codierte Position mit 3 bit
1 1 0 ? Pos: 6
MSB LSB
ENTITY Position IS
PORT( SOLL
IST
END Position;
: in std_logic_vector( 2 downto 0 );
: out std_logic_vector( 0 to 2 ) );
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 ...)
20 21 22
0 1 1 ? Pos: 6
LSB MSB
steigende Wertigkeit
28
VHDL-AMS Vorteile und Eigenschaften
• Erweiterung von VHDL um Elemente zur Beschreibung analoger und
gemischt analog- digitaler Systeme
• AMS = Analoge Mixed Signal
• Spezifikation in IEEE 1076.1 (Obermenge von VHDL 1076 - 1993)
VHDL-AMS
IEEE 1076.1-1999
VHDL
IEEE 1076-1993
29
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
30
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
31
Die Erweiterung AMS -Neue Sprachelemente
terminal – analoge Klemme
 externe und interne Verbindungspunkte
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)
32
Neue Sprachelemente – Terminals
Komponente
Terminal n
i = n'contribution
n'reference
• Basis für strukturelle konservative
Modelle
•
Eigenschaft contribution gibt Fluß
in Komponente am Konten als
Quantity wieder
• Eigenschaft reference die
Differenzgröße bezogen zur
Referenz der Natur
33
Die Erweiterung AMS -Neue Sprachelemente
nature – Definition der Klemmentypen
✗ werden in Packages zusammengefasst
✗ Definitionen gehören nicht zum Sprachumfang
✗ fehlende Standardisierung
 Vorsicht beim Einsatz von Packages
unterschiedlicher Hersteller !
34
Neue Sprachelemente – Nature
package
subtype
subtype
subtype
electrical_ system is
voltage is REAL tolerance "default_ voltage";
current is REAL tolerance "default_ current";
charge is REAL tolerance "default_ charge";
Vergabe von
Toleranzklassen
Differenzgröße
nature electrical is
voltage across
Flußgröße
current through
electrical_ref reference;
Bezugsknoten
alias ground is electrical_ ref;
der Natur
nature electrical_ vector is
array( NATURAL range <>) of electrical;
end package electrical_ system;
35
Die Erweiterung AMS -Neue Sprachelemente
quantities – Definition physikalischer Größen
✗
wirken entlang der Zweige des Systems
✗
zeitabhängige Funktion
✗
physikalische Dimension
✗
Ableitungen und Integrale
36
Neue Sprachelemente – Quantities, Simultaneous
Statements
ARCHITECTURE sd OF SigmaDelta IS
QUANTITY input_v ACROSS input;
QUANTITY output_v : REAL := 0.0;
QUANTITY sum1 : REAL;
QUANTITY voutint : REAL := 0.0;
SIGNAL vref_help : REAL := vref;
Deklaration
Initialwert
BEGIN
Integration
SDW : ENTITY DigComparator(behav) GENERIC
MAP
einer Größe
(vref=>vref) PORT MAP (clk, sum1, vref_help, output);
voutint == 1.0/tau1*output_v'INTEG;
sum1 == input_v - voutint;
output_v == vref_help;
Neuer
Zuweisungsoperator
END ARCHITECTURE sd;
nichtlineares
simultanes DLGSystem
8
37
Neue Sprachelemente – Branch Quantities
VSinus
i
p
v
m
ENTITY VSinus IS
GENERIC (Va : REAL := 1.0;
freq : REAL := 1.0 );
PORT (TERMINAL p, m : ELECTRICAL);
BEGIN
END ENTITY VSinus;
Bezugsknoten
ARCHITECTURE v1 OF VSinus IS
QUANTITY v ACROSS i THROUGH p TO m;
Flußgröße
BEGIN
Differenzgröße
v == Va* SIN( 2.0* math_pi* freq*NOW );
END ARCHITECTURE v1;
38
Die Erweiterung AMS - Beispiel: RC-Glied
entity RC_GLIED is
port(terminal P0,P1,P2 : electrical);
end;
architecture STRUKTUR of RC_GLIED is
begin
R: entity RESISTOR port map(P1,P2);
C: entity CAPACITOR port map(P2,P0);
end;
p1
R
p2
C
p0
39
Die Erweiterung AMS - Beispiel: RC-Glied
R
entity RESISTOR is
generic(R: REAL := 1000.0);
-- default: 1kOhm
port(terminal A,B: electrical);
end;
architecture VERHALTEN of RESISTOR is
quantity U across I through A to B;
begin
U == R*I;
end VEHALTEN;
U
A
I
R
B
40
Die Erweiterung AMS - Beispiel: RC-Glied
C
entity CAPACITOR is
generic(C: REAL := 100.0e-9); -- default: 100nF
port(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;
U
A
I
B
C
41
Die Erweiterung AMS - Beispiel: RC-Glied
Simulationsergebnis des RC-Gliedes
42
Timing-Verhalten
• Timing kann unterschiedlich modelliert werden
– wait for
– after
– Sensitivliste
• Benutzung eines Generic-Parameters
• Hier: verzögerte Zuweisung (Ausgangsverzögerung)
Parameter für Verzögerungszeit
mit Defaultwert
ENTITY two_gate IS
GENERIC( 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 IS
BEGIN
y <= NOT ( x1 AND x2 ) AFTER del_time;
END two_gate_del_nand ;
Verzögerte Zuweisung nach 2ns
43
VHDL, VHDL-AMS
• Literatur
–
–
–
–
–
Vorlesung "VHDL-Crashkurs": S. Ihmor, T. Lehmann
Buch "Schaltungsdesign mit VHDL": G. Lehmann, B. Wunder, M. Selz
Hauptseminare "VHDL-AMS": M. Zens; A. Stahl
Broschüre "VHDL-AMS Einführung" TU Darmstadt: A. Huss
Vortrag "VHDL Quick Start": P.J. Ashender
EOF
( end of file )
44

Documentos relacionados