Rechnerentwurf und Mikroprogrammierung
Transcription
Rechnerentwurf und Mikroprogrammierung
Rechnerentwurf und Mikroprogrammierung Einführung in die Simulation und Synthese mit ModellSim/Quartus II Wolfgang Heenes FG Rechnerarchitektur 16. April 2009 Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 1 / 58 1 Anwendung von Hardware-Beschreibungssprachen 2 Simulation ICARUS ModelSim Xilinx ISE 3 FPGAs 4 Ein Beispiel 5 Quartus II 6 Der einfache Modellrechner WKP 7 Synthese von Schaltwerken Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 2 / 58 Anwendung von Hardware-Beschreibungssprachen Komplexität technischer Systeme steigt ständig. I z. B. Intel Pentium Prozessor, 42 Millionen Transistoren Ohne rechnergestützte Hilfsmittel sind komplexe Systeme nicht zu beherrschen. Eine Beschreibungsmöglichkeit für Systeme sind HDLs. HDL - Hardware Description Language Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 3 / 58 Anwendung und Entwicklung der Hardware-Beschreibungssprachen I Designspezifikation, Simulation, Verifikation und Dokumentation Kommunikation zwischen Entwicklern Zur Beschreibung von Hardware wurden verschiedene Sprachen eingesetzt. I z. B. Simula, Pascal, LISP, Petri-Netze In den 60er Jahren wurden Register-Transfersprachen entwickelt. In den 70er Jahren Entwicklung von: I I I HDL (Hardware Description and Microprogramming Language, Hoffmann) RTS (Register Transfer System Language, Piloty) Verilog HDL Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 4 / 58 Anwendung und Entwicklung der Hardware-Beschreibungssprachen II In den 80er Jahren Entwicklung von: I I Ansatz für eine allgemeine, erweiterbare Sprache (CONLAN, 1983) VHDL (1983), Department of Defense, IEEE-Standard 1987 In den 90er Jahren Entwicklung von: I I Verilog HDL, IEEE-Standard SystemC Heute für Hardwarebeschreibung und Verifikation verbreitet: I I I Verilog HDL VHDL (Very High Speed Integrated Circuit HDL) AHDL (Altera Hardware Description Language) Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 5 / 58 Anwendung und Entwicklung der Hardware-Beschreibungssprachen III Ende der 80er Jahre wurde begonnen, die Hardware-Beschreibungssprachen zur Programmierung von FPGAs1 zu verwenden. Ursprünglich wurden dafür Spezialsprachen, wie z. B. Logik verwendet. Weitere Sprachen existierten bzw. existieren um Gleichungen für PALs, PLAs bzw. GAL2 s zu beschreiben (ABEL). Daraus wurde von Altera die Sprache AHDL3 abgeleitet. Die Anwendung von Verilog HDL und VHDL bei der Beschreibung von Hardware-Strukturen ist nicht immer unproblematisch (Stichwort: Semantic Gap). 1 Field Programmable Gate Array Generic Array Logic 3 Altera Hardware Description Language 2 Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 6 / 58 Simulatoren I ICARUS Verilog freier Simulator für verschiedene Plattformen (Windows, Linux) auf den Rechnern der Rechnerbetriebsgruppe (RBG) installiert Visualisierung mit GTKWave möglich HowTo auf den Webseiten verfügbar Mittlerweile wieder Weiterentwicklung, Unterstützung neuen Sprachfeatures Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 7 / 58 Verilog HDL Beschreibung eines Halbaddierers module hadd ( a , b , c , s ) ; input a , b ; output c , s ; a s s i g n s = a ˆ b ; // ˆ e x k l u s i v −o d e r a s s i g n c = a & b ; // & und endmodule Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 8 / 58 Verilog HDL der Testumgebung module t e s t b e d ( c , s ) ; reg a , b ; output c , s ; hadd t e s t ( a , b , c , s ) ; i n i t i a l begin a = 0; b = 0; # 10 a = 1 ; b = 0 ; # 20 a = 1 ; b = 1 ; end i n i t i a l #50 $ f i n i s h ; a l wa ys @ ( c or s ) $ d i s p l a y ( ” Ausgang s (Summe ) i s t %b . Ausgang c ( C a r r y ) i s t %b . Z e i t p u n k t e %d” , s , c , $ t i m e ) ; endmodule Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 9 / 58 Verilog HDL der Testumgebung für GTKWave ‘ t i m e s c a l e 1 ns /1 ns module t e s t b e d 1 ( c , s ) ; reg a , b ; output c , s ; hadd t e s t ( a , b , c , s ) ; i n i t i a l begin a = 0; b = 0; # 5 a = 1; b = 0; # 5 a = 1; b = 1; # 5 a = 0; b = 0; end i n i t i a l #30 $ f i n i s h ; i n i t i a l begin $ d u m p f i l e ( ” hadd . vcd ” ) ; $dumpvars ( 0 ) ; end Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 10 / 58 Simulatoren II ModelSim-Altera kommerzielles Tool - Vertrieb über Altera HowTo auf Anfrage verfügbar bzw. auf der Webseite von Altera (www.altera.com) ModelSim ist von MentorGraphics und wird in einer speziellen Version mit Quartus II gebündelt. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 11 / 58 Simulatoren III Xilinx-ISE erlaubt neben funktionaler Simulation auch Postsynthese-Simulationen Synthese für Xilinx-Bausteine Außerdem integration von ModelSim-Xilinx möglich Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 12 / 58 Entwicklung der FPGAs PAL/PLA, PLD, CPLD4 , FPGA FPGA - Field Programmable Gate Array Erste Entwicklung 1984 von der Firma Xilinx Rasch wachsender Markt, zwei große Firmen I I Altera - http://www.altera.com Xilinx - http://www.xilinx.com Integration von CPU und FPGAs auf einem Die (Excalibur (Altera), Virtex II (Xilinx)) 4 Complex Programmable Logic Device Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 13 / 58 Aufbau eines FPGAs I (Cyclone Device Handbook, Altera) Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 14 / 58 Aufbau eines FPGAs II Als Beispiel wird ein FPGA der Cyclone-Familie der Firma Altera betrachtet. Dieses FPGA enthält vier Grundkomponenten. I I I I 5 6 Ein- /Ausgabeelemente (IOEs). Bei dem betrachteten FPGA gibt es 233 IO-Pins, die dem Entwickler zur Verfügung stehen. Logik Felder (Logic Arrays). Diese Logic Arrays bestehen aus sogenannten Logic Elements (LE). Das betrachtete FPGA enthält 20.060 Logic Elements, wobei zehn Logic Elements zu einem LAB5 zusammengefaßt werden. Taktgenerator (PLL6 ). Speicherblöcke (M4K Blocks). Logik Array Block Phase Looked Loop Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 15 / 58 LABs eines FPGAs Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 16 / 58 Logic Element eines FPGAs (allgemein) I Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 17 / 58 Logic Element eines FPGAs (Normal Mode) II Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 18 / 58 Speicher (Embedded Memory) I Der FPGA besitzt eingebettete Speicher. Die Gesamtgröße des Speichers beträgt 294.912 Bits. Verschiedene Speicherstrukturen sind realisierbar. I I I I Single-Port Speicher Dual-Port Speicher ROM FIFO Die Konfiguration der Speicher kann in Quartus II mit dem MegaWizzard Plug-In Manager (Tools) durchgeführt werden. Zur Belegung der Speicher steht ein Speichereditor zur Verfügung mit dem sog. MIF7 -Files generiert werden können. 7 Memory Information File Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 19 / 58 Speicher II Anschlüße des Speichers: Konfiguration möglich (z. B. Ausgang registered, nonregistered) Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 20 / 58 Ein-/Ausgabeblöcke Die Ein-/Ausgabeblöcke besitzen z. B. Tri-State Buffer und programmiere Eingangs- und Ausgangsverzögerungen. Struktur eines IO-Blocks: Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 21 / 58 Zum Begriff Synthese: Mit den Begriffen High-Level-Synthese, Architektursynthese oder Mikroarchitektursynthese bezeichnet man in der Literatur die Umsetzung einer algorithmischen Spezifikation in eine Schaltungsstruktur auf der Registertransferebene unter Einhaltung bestimmter Randbedingungen. Sehr komplexer Vorgang, Aufteilung in Aufgaben wie z. B.: I I I lexikalische und syntaktische Analyse Ablaufplanung (scheduling, z. B. ASAP, ALAP) Zuweisung von Operationen zu bereitgestellten Betriebsmitteln (assignment, binding) Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 22 / 58 Ein einfaches Beispiel Folgendes Schaltnetz ist gegeben: Y = (A1 and A2) or ((B1 exor B2) and (C1 or C2)) Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 23 / 58 Verilog HDL Beschreibung module s c h a l t n e t z ( A1 , A2 , B1 , B2 , C1 , C2 , Y ) ; i n p u t A1 , A2 , B1 , B2 , C1 , C2 ; output Y ; and myand1 ( outand1 , A1 , A2 ) ; xor myxor ( o u t x o r , B1 , B2 ) ; or myor1 ( o u t o r , C1 , C2 ) ; and myand2 ( outand2 , o u t x o r , o u t o r ) ; or myor2 (Y , outand2 , out a nd1 ) ; endmodule Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 24 / 58 RTL View Die Benutzung des RTL Viewers ergibt folgendes Bild: Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 25 / 58 Technology View I Aufruf des Technology Map Viewers ergibt: Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 26 / 58 Technology View II Markieren des rechten Blocks, rechte Maustaste - Locate in Resourcen Property Editor: Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 27 / 58 Technology View III Markieren des linken Blocks, rechte Maustaste - Locate in Resourcen Property Editor: Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 28 / 58 Technology View IV Die Sum Equations für den rechten Block sind: A # B & C. Für den linken Block ergeben sich: A & (B $ C) # !A & D & (B $ C). Diese Gleichungen entsprechen nicht den Gleichungen, die aus dem RTL Viewer abgeleitet werden können. Durch Umformung kann man die Äquivalenz zur Ausgangsgleichung zeigen. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 29 / 58 Design Flow in Quartus II Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 30 / 58 Die Schritte eines Design Flows Das Analysis & Synthesis Modul analysiert das Design und generiert eine Datenbank bzw. Datenbankeinträge. Außerdem wird das Design für die Zielarchitektur optimiert (Minimierung der Logik). Der Fitter paßt das Design an die verfügbaren Resourcen der Zielarchitektur an (Place und Route). Der Assembler generiert ein Programmierfile (programming image) des Designs für das ausgewählte Device (in diesem Fall Cyclone). Der Timing Analyzer erlaubt die Analyse des zeitlichen Verhaltens (Durchlaufzeit, Takt). Quelle: Quartus II Handbuch, Altera Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 31 / 58 Synthese eines Zählers Zählersimulation in Quartus II Zählersynthese mit Quartus II Programmierung des FPGAs über USB-Blaster Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 32 / 58 Der einfache Modellrechner WKP MEM madr mindat moutdat rw en Speicherschnittstelle 8 8 MD_IN IR ldmdin selpc ldir opc ld... clrpc PC incpc ldpc 8 8 aluop STW ALU STATUS D_OUT moutdat AKKU lddout Ausgabe Wolfgang Heenes (FG Rechnerarchitektur) lda ldstat, setC, clrC 8 Rechnerentwurf und Mikroprogrammierung 16. April 2009 33 / 58 Der einfache Modellrechner WKP Abkürzungen: I I I I I I I I I I MEM - Speichersystem (memory) madr - Adressen, die an den Speicher angelegt werden. mindat - Daten, die aus dem Speicher gelesen werden. moutdat - Daten, die in den Speicher geschrieben werden rw und en - Steuersignale für den Speicher (read/write bzw. enable) PC8 - Programmzähler ALU9 - Rechenwerk, auch Operationswerk IR10 - Befehlsregister AKKU - Akkumulator STW - Steuerwerk 8 Program Counter Arithmetic Logical Unit 10 Instruction Register 9 Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 34 / 58 Der Speicher I Der Speicher besitzt fünf verschiedene Anschlüsse: I I I I Adressen - Zum Speichern und Lesen von Befehlen/Daten müssen Adressen an den Speicher angelegt werden. Daten: Din - An diesen Anschluss werden die Daten angelegt die in den Speicher geschrieben werden. Daten: Dout - Von diesem Anschluss werden die Daten aus dem Speicher gelesen. Steuerinformationen (r/w - en) - Diese Anschlüsse dienen der Steuerung des Speichers, also z. B. Lesen und Schreiben. r/w /w Adresse Mem Din en Dout Abbildung: Speicher Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 35 / 58 Der Befehlssatz I Die folgende Tabelle zeigt einen Teil der Befehle des Modellrechners. Die Kodierung der Befehle wird auch als OP-CODE (Operation Code - kurz OPC) bezeichnet. Zur besseren Lesbarkeit wurden sogenannte symbolische Befehle (MNEMONICs) eingeführt. OPC I Befehl MNEMONIC Byte1 Byte2 0 0 lade Akku mit Wert LDA #C 0000 0000 WERT 0 1 lade Akku mit dem Speicherinhalt von Adresse LDA N 0000 0001 ADRESSE 1 X Akku bitweise negieren NOT 0001 000x 2 0 Akku mit Wert verunden AND #C 0010 0000 WERT 2 1 Akku mit dem Speicherinhalt von AND N 0010 0001 ADRESSE 4 0 Wert zum Akku addieren ADD #C 0100 0000 WERT 4 1 Speicherinhalt von Adresse zum Akku addiere ADD N 0100 0001 ADRESSE 5 X Akku nach rechts schieben SHR 0101 000x Adresse verunden Beispiel: Der Befehl LDA #C hat den OP-Code 0000 0000. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 36 / 58 Der Befehlssatz II Fortsetzung der Befehle 6 X Akku nach rechts schieben ASR 0110 000x Vorzeichen nachziehen 7 X Akku nach links schieben SHL 0111 000x 8 X Carrybit im Statusregister löschen CLRC 1000 000x 9 X Carrybit im Statusregister setzen SETC 1001 000x 10 X NOP, keine Operation NOP 1010 000x 11 X Sprung zur Adresse Label BRA L 1011 0000 LABEL 12 X Sprung zur Adresse Label falls BRZ L 1100 0000 LABEL STA N 1101 0000 ADRESSE OUT 1110 000x Z-Statusbit gesetzt ist 13 X Schreibe Inhalt des Akkus an Adresse in den Speicher 14 X Schreibe Inhalt des Akkus in das Ausgaberegister Eine Beschreibung der von den Befehlen gesetzten Statusbits findet sich auf dem Prozessorhilfsblatt. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 37 / 58 Interpretation und Ausführung der Befehle Funktionsweise des Steuerwerks PC<-0 RESET STATE0 Fetch_OPC IR<-MEM(PC) PC<-PC+1 Decode_OPC mit Operand Fetch1_Operand Direktoperand ohne Operand MDin<-MEM(PC) PC<-PC+1 exec_ALUOP Adresse MDin<-MEM(MDin) Fetch2_Operand Post_Decode Storebefehl Sprungbefehl else Exec_Store Exec_Jump Wolfgang Heenes (FG Rechnerarchitektur) PC<-MDin MEM(MDin)<-AKKU Rechnerentwurf und Mikroprogrammierung 16. April 2009 38 / 58 Modellierung des Prozessors in Verilog HDL Viele verschiedene Möglichkeiten denkbar. Hier, ausgehend vom Strukturbild Instanzen von I I I Steuerwerk Speicher ALU Demonstration/Besprechung des Beispiels Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 39 / 58 Beschreibung von Schaltwerken in Verilog HDL Schaltwerk mit drei Zuständen Ausgänge sind an Zustand gekoppelt Zustandsgraph Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 40 / 58 Beschreibung von Schaltwerken in Verilog HDL module s t a t e m a c h i n e ( c l k , i n , r e s e t , o ut ) ; i n p u t c l k , i n , r e s e t ; o u t p u t [ 1 : 0 ] o ut ; r e g [ 1 : 0 ] o ut ; r e g [ 1 : 0 ] s t a t e ; p a r a m e t e r S0 = 0 , S1 = 1 , S2 = 2 ; always @ ( s t a t e ) begin case ( s t a t e ) S0 : o ut = 2 ’ b01 ; S1 : o ut = 2 ’ b10 ; S2 : o ut = 2 ’ b11 ; d e f a u l t : o ut = 2 ’ b00 ; e n d ca s e end always @ ( posedge c l k or posedge r e s e t ) begin i f ( r e s e t ) s t a t e <= S0 ; e l s e case ( s t a t e ) S0 : s t a t e <= S1 ; S1 : i f ( i n ) s t a t e <= S2 ; e l s e s t a t e <= S1 ; S2 : i f ( i n ) s t a t e <= S0 ; e l s e s t a t e <= S1 ; e n d ca s e end endmodule Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 41 / 58 Beschreibung von Schaltwerken in Verilog HDL entspricht diese Implementierung der Trennung von kombinatorischer Logik und den Speichern/Registern? Blockschaltbild einer Zustandsmaschine Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 42 / 58 Ein Beispiel: Schiebeautomaten Schiebeschaltung Entnommen aus Verilog - Modellbildung für Synthese und Verifikation Funktion I synchron zur steigenden Flanke des Taktes clk wird eine 1 relativ zu den drei Nullen in einem 4-Bit-Wort out(3:0) in Abhängigkeit vom Eingangssignal a zyklisch nach rechts (a=1) oder nach links (a=0) geschoben. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 43 / 58 Ein Beispiel: Zustandsgraphen für Moore-Schiebeautomaten Jeder Zustand enthält eine Kodierung Eine 1 am Eingang führt aus dem Zustand S1 in den Zustand S2, eine Null hingegen in den Zustand S0. Zustandsgraph Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 44 / 58 Ein Beispiel: Zustandsgraphen für Mealy-Schiebeautomaten Jeder Zustand enthält eine Kodierung Ausgaben hängen vom Eingang ab. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 45 / 58 Realisierung in Verilog HDL Um Zustandsgraphen als synchrone Moore- oder Mealy-Maschinen in Verilog HDL zu übersetzen, gibt es zwei Vorgehensweisen Explizite Beschreibung des Automaten11 Implizite Beschreibung des Automaten12 I Beispiel: In der Übung ist z. B. ein Zähler vorgestellt worden. Achtung: Das oben vorgestellte Beispiel module state machine ist eine Mischform! 11 12 engl. explicit state machines engl. implicit state machines Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 46 / 58 Realisierung in Verilog HDL Benötigte Komponenten? Zustandsregister, das den aktuellen Zustand der Maschine speichert ein Taktsignal Vorgaben für die Zustandsübergänge die Zuordnung der Zustände zu den Ausgangssignalen optional: eine Reset/Set-Spezifikation I I ist im Zustandsgraph nicht angegeben es wird angenommen, dass Zustand S0 der Startzustand ist Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 47 / 58 Beschreibung von Automaten in Verilog HDL - Moore module a uto m a t m o o r e ( m o o r e o ut , a , c l k , r e s e t ) ; parameter S 0 = 4 ’ b1000 , S 1 = 4 ’ b0100 , S 2 = 4 ’ b0010 , S 3 = 4 ’ b0001 ; output [ 3 : 0 ] moore out ; input a , clk , r e s e t ; reg [ 3 : 0 ] state , n e x t s t a t e ; a s s i g n moore out = s t a t e ; always@ ( posedge c l k or posedge r e s e t ) i f ( r e s e t ==1) s t a t e <=S 0 ; e l s e b e g i n s t a t e <= n e x t s t a t e ; end ... Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 48 / 58 Beschreibung von Automaten in Verilog HDL - Moore ... always@ ( s t a t e , a ) begin case ( s t a t e ) S 0 : i f ( a==0) b e g i n n e x t e l s e i f ( a==1) b e g i n n e x t S 1 : i f ( a==0) b e g i n n e x t e l s e i f ( a==1) b e g i n n e x t S 2 : i f ( a==0) b e g i n n e x t e l s e i f ( a==1) b e g i n n e x t S 3 : i f ( a==0) b e g i n n e x t e l s e i f ( a==1) b e g i n n e x t d e f a u l t : begin n e x t s t a t e e n d ca s e end endmodule Wolfgang Heenes (FG Rechnerarchitektur) state = S 3 ; state = S 1 ; state = S 0 ; state = S 2 ; state = S 1 ; state = S 3 ; state = S 2 ; state = S 0 ; = S 0 ; end end end end end end end end end Rechnerentwurf und Mikroprogrammierung 16. April 2009 49 / 58 Beschreibung von Automaten in Verilog HDL - Moore Simulation zeigt das gewünschte Verhalten Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 50 / 58 Beschreibung von Automaten in Verilog HDL - Mealy module a u t o m a t m e a l y ( m e a l y o u t , a , c l k , r e s e t ) ; parameter S 0 = 4 ’ b1000 , S 1 = 4 ’ b0100 , S 2 = 4 ’ b0010 , S 3 = 4 ’ b0001 ; output [ 3 : 0 ] m ea l y out ; input a , clk , r e s e t ; reg [ 3 : 0 ] mealy out ; reg [ 3 : 0 ] state , n e x t s t a t e ; always@ ( posedge c l k or posedge r e s e t ) i f ( r e s e t ==1) s t a t e <=S 0 ; e l s e b e g i n s t a t e <= n e x t s t a t e ; end ... Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 51 / 58 Beschreibung von Automaten in Verilog HDL - Mealy always@ ( s t a t e , a ) begin case ( s t a t e ) S 0 : i f ( a==0) b e g i n n e x t s t a t e = S 3 ; end e l s e i f ( a==1) b e g i n n e x t s t a t e = S 1 ; end S 1 : i f ( a==0) b e g i n n e x t s t a t e = S 0 ; end e l s e i f ( a==1) b e g i n n e x t s t a t e = S 2 ; end S 2 : i f ( a==0) b e g i n n e x t s t a t e = S 1 ; end e l s e i f ( a==1) b e g i n n e x t s t a t e = S 3 ; end S 3 : i f ( a==0) b e g i n n e x t s t a t e = S 2 ; end e l s e i f ( a==1) b e g i n n e x t s t a t e = S 0 ; end d e f a u l t : b e g i n n e x t s t a t e = S 0 ; end e n d ca s e case ( s t a t e ) S 0 : i f ( a==0) b e g i n m e a l y o u t = 4 ’ b0001 ; end e l s e i f ( a==1) b e g i n m e a l y o u t = 4 ’ b0100 ; end S 1 : i f ( a==0) b e g i n m e a l y o u t = 4 ’ b1000 ; end e l s e i f ( a==1) b e g i n m e a l y o u t = 4 ’ b0010 ; end S 2 : i f ( a==0) b e g i n m e a l y o u t = 4 ’ b0100 ; end e l s e i f ( a==1) b e g i n m e a l y o u t = 4 ’ b0001 ; end S 3 : i f ( a==0) b e g i n m e a l y o u t = 4 ’ b0010 ; end e l s e i f ( a==1) b e g i n m e a l y o u t = 4 ’ b1000 ; end d e f a u l t : b e g i n m e a l y o u t = 4 ’ b1000 ; end e n d ca s e end endmodule Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 52 / 58 Beschreibung von Automaten in Verilog HDL - Mealy Simulation zeigt das gewünschte Verhalten? Achtung: In dem Diagramm sind die Ausgaben, nicht die Zustände dargestellt. Beim Übergang vom Zustand S3 nach S2 wird die zwei ausgegeben. Mit der nächsten Taktflanke wird in den Zustand S2 gewechselt. Dann wird zunächst eine vier ausgegeben (Übergang S2 nach S1). a wird auf eins gesetzt, Folgezustand ist S3, Ausgabe ist eins. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 53 / 58 Weitere Beschreibungsmöglichlichkeiten von Automat in Verilog HDL Alle Zustandsänderungen in einem einzigen Prozess abgearbeitet. Der Automat wird damit kompakter geschrieben. Beschreibung von taktsynchronem Zusammenhang zwischen Eingangs- und Ausgangsgrößen Zustände und Zustandsübergangslogik werden zusammen in einem Block beschrieben. Das Verhalten des folgenden Automaten entspricht dem eines Moore-Automaten. Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 54 / 58 Beschreibung von Automaten in Verilog HDL module automat ( m o o r e o ut , a , c l k , r e s e t ) ; parameter S 0 = 4 ’ b1000 , S 1 = 4 ’ b0100 , S 2 = 4 ’ b0010 , S 3 = 4 ’ b0001 ; output moore out ; input a , clk , r e s e t ; reg [ 3 : 0 ] moore out ; always@ ( posedge c l k or posedge r e s e t ) i f ( r e s e t ==1) m o o r e o u t <=S 0 ; e l s e begin case ( moore out ) S 0 : i f ( a==0) b e g i n m o o r e o u t <= S 3 ; e l s e i f ( a==1) b e g i n m o o r e o u t <= S 1 ; S 1 : i f ( a==0) b e g i n m o o r e o u t <= S 0 ; e l s e i f ( a==1) b e g i n m o o r e o u t <= S 2 ; S 2 : i f ( a==0) b e g i n m o o r e o u t <= S 1 ; e l s e i f ( a==1) b e g i n m o o r e o u t <= S 3 ; S 3 : i f ( a==0) b e g i n m o o r e o u t <= S 2 ; e l s e i f ( a==1) b e g i n m o o r e o u t <= S 0 ; d e f a u l t : b e g i n m o o r e o u t <= S 0 ; end e n d ca s e end endmodule Wolfgang Heenes (FG Rechnerarchitektur) end end end end end end end end Rechnerentwurf und Mikroprogrammierung 16. April 2009 55 / 58 Beschreibung von Automaten in Verilog HDL Simulation zeigt das gewünschte Verhalten Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 56 / 58 Synthese von Schaltwerken - Moore Was ergibt die Synthese dieses Schaltwerks (Automaten)? Für den Moore-Automaten ergibt sich folgendes Bild Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 57 / 58 Synthese von Schaltwerken - Mealy Für den Mealy-Automaten ergibt sich folgendes Bild Hier wurde auch eine Umkodierung der Zustände vorgenommen Wolfgang Heenes (FG Rechnerarchitektur) Rechnerentwurf und Mikroprogrammierung 16. April 2009 58 / 58