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