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

Documents pareils