Lehrstuhl für Eingebettete Systeme Hardwarearchitekturen und Rechensysteme 7. Hardwareentwurf mit VHDL Folien zur Vorlesung Hardwarearchitekturen und Rechensysteme von Prof. Dr. rer. nat. U. Brinkschulte Prof. Dr.-Ing. L. Hedrich (basierend auf Materialien von Prof. Dr.-Ing. K. Waldschmidt) Gliederung 7.1 Hardwareentwurf 7.2 VHDL Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:2 7.1 Hardwareentwurf Durch die steigenden Integrationsdichten und die anwachsende Schaltungskomplexität ist der Entwurf integrierter Schaltungen heute nur schwer beherrschbar. Um die Komplexität heutiger Hardwareentwürfe in den Griff zu bekommen, werden die folgenden Prinzipien und Strategien verfolgt: Hierarchische Strukturierung: Bei der hierarchischen Strukturierung wird ein komplexes Problem in lösbare Teilprobleme zerlegt. Lokalität: Die Lokalität fordert, dass Module untereinander möglichst wenig Seiteneffekte aufweisen, d.h. Änderungen innerhalb eines Moduls sollten sich nicht auf andere Schaltungsteile auswirken. Regularität: Durch die Verwendung regulärer Strukturen wird das Design überschaubarer und daher einfacher zu beschreiben und zu überprüfen. Auf Gatterebene bedeutet Regularität, daß möglichst wenig verschiedene Gatter- und Registertypen verwendet werden. Testbarkeit: Der Test einer integrierten Schaltung dient der Qualitätssicherung. Fatale Folgen einer Fehlfunktion, insbesondere bei sicherheitskritischen Anwendungen, sollen verhindert werden. Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:3 7.1 Hardwareentwurf Hierarchische Strukturierung Eine hierarchische Strukturierung beim Schaltungsentwurf führt zu einer Zerlegung in Module (Teilschaltungen), die exakt festgelegte Teilfunktionen ausführen und über eine definierte Schnittstelle verfügen. Jedes Modul wird weiter zerlegt, bis es entworfen, validiert und in seinem zeitlichen und logischen Verhalten dokumentiert werden kann. Eine sinnvolle Strukturierung von Schaltungsentwürfen führt zu einer Zerlegung in Module, die in ihrer Funktion so allgemein gehalten sind, dass sie als universell einsetzbare, überprüfte Einheiten vielfach wieder verwendet werden können (design reuse). Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:4 7.1 Hardwareentwurf Hierarchische Strukturierung c in a s VA b c c out in VA a f 1 s 1 c in b f f f & VA a s s s c c c 1 & out b & Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik 1 c out HWR · K7 Nr.:5 7.1 Hardwareentwurf Idealisierter Entwurfsablauf Informelle Spezifikation ? Entwurfseingabe automatisierbare Entwurfsschritte ArchitekturBeschreibung Simulation Architektursynthese Simulationsergebnisse ? Register-TransferBeschreibung Simulation Logiksynthese Simulationsergebnisse ? GatterBeschreibung Simulation Technologieabbildung Layout Simulationsergebnisse ? Simulation Simulationsergebnisse Validierung Fertigung Chip Vermeidung von Entwurfsfehlern Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:6 7.1 Hardwareentwurf 7.2 VHDL Die Sprache VHDL VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuit wurde 1983 vom amerikanischen Department of Defense initiiert und ist seit 1987 als IEEE Standard 1076 genormt. VHDL ermöglicht die Beschreibung und Simulation digitaler Systeme und deren Umgebung. Die Sprache ist an höhere Programmiersprachen wie C und Pascal angelehnt und ermöglicht die Beschreibung von Verhalten und Struktur auf unterschiedlichen Abstraktionsebenen. Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:7 7.2 VHDL VHDL Eine VHDL-Beschreibung besteht aus: package: Fasst Gruppen verwandter, globaler Deklarationen zusammen. entity: Beschreibt die Schnittstelle einer Komponente zur Umwelt. architecture: Beschreibt die Implementierung einer Entity. configuration: Beschreibt die Zuordnung einer Architecture zu einer Entity. Weiterhin unterstützt VHDL die Verwaltung von VHDL-Komponenten in Bibliotheken und somit die Wiederverwendung von Entwürfen (design reuse). Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:8 7.2 VHDL Package In einer Package werden Gruppen verwandter Deklarationen zusammengefasst. Hierzu gehören: Unterprogramm Zu den Unterprogrammen zählen Funktionen, die einen einzigen Wert zurückliefern, und Prozeduren, die mehrere Werte Zurückliefern. Typdeklaration Zu den wesentlichen Typdeklarationen zählen Enumerated Typ (z.B. Boolean, Bit,…), Array, Record und File. Konstantendeklaration Dateideklaration Aliasdeklaration Beispiel: package my_defs is constant unit_delay := 1ns; end my_defs; Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:9 7.2 VHDL Entity Die Entity beschreibt die Eingangs- und Ausgangssignale einer Komponente (Schnittstelle zur Umwelt). Eingangssignale Ausgangssignale Komponente Für jedes Signal wird eine Richtung (in, out, inout, . . . ) und ein Datentyp (BIT, INTEGER, . . . ) angegeben. Beispiel: entity COMPARE is generic (delay: time); port (A, B: in BIT; C: out BIT); end COMPARE; A B BIT BIT COMPARE Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik BIT C HWR · K7 Nr.:10 7.2 VHDL Architecture Die Architecture beschreibt die Implementierung einer Komponente. Für eine durch eine Entity beschriebene Komponente können mehrere Implementierungen existieren. Die Auswahl einer Implementierung erfolgt in der Configuration. Wenn keine Configuration angegeben wird, wird jeweils die (zeitlich) zuletzt analysierte Architecture verwendet. Entity Architecture 1 Architecture n Die Architecture kann durch eine Verhaltens-, eine Datenfluß- oder eine Strukturbeschreibung beschrieben werden. Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:11 7.2 VHDL Architecture – Verhaltensbeschreibung Das Verhalten von Hardwareelementen wird durch Prozesse beschrieben, die immer und gleichzeitig aktiv sind. Die Anweisungen innerhalb eines Prozesses werden in einer Endlosschleife ständig sequentiell abgearbeitet und können mit einer ’wait’-Anweisung unterbrochen werden, bis die Bedingung der ’wait’-Anweisung erfüllt ist. Alternativ zu der ’wait’Anweisung kann nach dem Schlüsselwort process eine Liste von Signalen angegeben werden, die zur Aktivierung eines Prozesses führen (sensitivity list). Dies entspricht einer ’wait on’-Anweisung am Ende des Prozesses. Beispiel: architecture BEHAVIOR of COMPARE is begin process ( A, B ) begin if ( A = B ) then C <= ’1’ after delay; else C <= ’0’ after delay; end if; end process; end BEHAVIOR; Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:12 7.2 VHDL Architecture –Datenflussbeschreibung Die Datenflussbeschreibung besteht aus einer strukturellen Beschreibung von Datenpfaden in Kombination mit funktionalen Beschreibungen der Datenpfadkomponenten. Sie beschreiben den Datenfluss und die Modifikation der Daten durch Operationen (z.B. Addition, Vergleich, . . . ). Beispiel: architecture DATAFLOW of COMPARE is begin C <= not ( A xor B ) after delay; end DATAFLOW; Architecture A 1 1 C B delay Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:13 7.2 VHDL Architecture – Strukturbeschreibung Die Strukturbeschreibung besteht aus einer Netzliste von vordefinierten Komponenten. Beispiel: architecture STRUCTURE of COMPARE is signal I: BIT; component XOR2 port ( x, y: in BIT; z: out BIT ); end component; component INVERTER port ( x: in BIT; z: out BIT ); end component; begin U0: XOR2 port map ( A, B, I ); U1: INVERTER port map ( I, C ); end STRUCTURE; Architecture component A x XOR2 B component y z I x INVERTER z Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik C HWR · K7 Nr.:14 7.2 VHDL Beispiel – endlicher Automat entity MEALY is port ( X, CLK: in BIT; Z: out BIT ); end MEALY; S0 0/1 1/1 -/0 1/0 S1 S2 0/0 Exemplarisch wird die Modellierung der sequentiellen Logik (COMBIN) und der Zeitglieder in den Rückkopplungspfaden (SYNCH) in getrennten Prozessen vorgestellt: architecture BEHAVIOR of MEALY is type STATE_TYPE is ( S0, S1, S2 ); signal CURRENT_STATE, NEXT_STATE: STATE_TYPE; begin COMBIN: process ( CURRENT_STATE, X ) … SYNCH: process … end BEHAVIOR; Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:15 7.2 VHDL Beispiel - COMBIN COMBIN: process ( CURRENT_STATE, X ) begin case CURRENT_STATE is when S0 => Z <= ’0’; NEXT_STATE<= S1; when S1 => if X = ’0’ then Z <= ’1’; NEXT_STATE<= S0; else Z <= ’0’; NEXT_STATE<= S2; end if; when S2 => … end case; end process; S0 0/1 1/1 -/0 1/0 S1 Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik S2 0/0 HWR · K7 Nr.:16 7.2 VHDL Beispiel – SYNCH SYNCH: process begin wait until CLK’event and CLK = ’1’; CURRENT_STATE <= NEXT_STATE; end process; Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:17 7.2 VHDL Beispiel ALU Uwe Brinkschulte Eingebettete Systeme Lars Hedrich Entwurfsmethodik HWR · K7 Nr.:18 7.2 VHDL