3.10 Division 167

3.10 Division
167
Steuerung
0 1
Dividend
0
clk_rest
init/<<1
n
0
n
1..n-1
Clk
Init/<<1
Rest
<<1
0..n-1
1
0..n-1
2n
n..2n-1
n..2n-1
mux
clk_div
n
neg
n
Clk
2n
0
1
a-b
Rest und
Quotient
n
0
n
Sub
Divisor
n
b
Divisor
n
a
n
1
Init
2
Init
3
Schieben
clk_div =
clk_rest =
ini/<<1 =
mux =
clk_div =
clk_rest =
ini/<<1 =
mux =
clk_div =
clk_rest =
ini/<<1 =
mux =
6
Sub; Rest |= 1
5
Sub; Rest |= 1
clk_div =
clk_rest =
ini/<<1 =
mux =
clk_div =
clk_rest =
ini/<<1 =
mux =
4
Schieben
clk_div =
clk_rest =
ini/<<1 =
mux =
7
Ende
clk_div =
clk_rest =
ini/<<1 =
mux =
168
3 Arithmetische Schaltungen
Die Steuerung der Dividierer-Schaltung wird nun für die Wortbreite n = 4 wie folgt
implementiert:
clk_div
clk_rest
Kombinatorische
Logik
init/<<1
mux
3
2
D0
Q2
Q0
2
Clk
D2
Q3
Q4
2
D3
D4
3
3
neg
T
c)
In welchen Bits des Zustandsregisters wird der aktuelle Zustand und die Anzahl
der bisher durchgeführten Runden abgespeichert?
3.10 Division
169
Implementierung des Zustandsautomaten mit Multiplexern
T
a)
Geben Sie für die Eingänge des Multiplexers binär die Ausgangsworte an, mit
denen sich die Ausgangsfunktion des Moore-Automaten ergibt.
Zustand
3
00
11
22
33
4
4
Bit 3: clk_div
Bit 2: clk_rest
Bit 1: init/<<1
Bit 0: mux
5
6
7
T
b) Geben Sie die Folgezustände für alle unbedingten Verzweigungen an.
Zustand
3
00
11
22
33
4
5
6
7
3
Folgezustand
170
T
c)
3 Arithmetische Schaltungen
Geben Sie eine Multiplexer-Schaltung an, die mittels des Signals runde_n die
Folgezustände des Zustands 6 an ihrem Ausgang bereitstellt.
1
runde_n
T
Folgezustand
von Zustand 6
d) Geben Sie eine Schaltung zur Bestimmung des Folgezustands von Zustands 6 an,
die ohne Multiplexer auskommt.
1
runde_n
T
3
e)
3
Folgezustand
von Zustand 6
Geben Sie eine Multiplexer-Schaltung an, die mittels der Signale runde_n und neg
den Folgezustand des Zustands 4 an ihrem Ausgang bereitstellt.
neg
1
3
runde_n
1
Folgezustand
von Zustand 4
3.10 Division
T
f)
171
Geben Sie eine kombinatorische Schaltung für den Rundenzähler an, der jedesmal,
wenn sich der Moore-Automat im Zustand 3 befindet, die in Bits 3 und 4 des
Zustandsworts gespeicherte Rundenanzahl um Eins erhöht.
Aktueller
Zustand
3
2
Aktuelle
Runde
Nächste
Runde
2
Der Rundenzähler zählt wie folgt: Runde 1 , 012 , Runde 1 , 102 , Runde 3 , 112 und
Runde 4 , 002 .
T
g) Tragen Sie in nachfolgende Abbildung eine kombinatorische Schaltung ein, die in
der 4. Runde, aus dem Rundenzähler das Signal runde_n erzeugt.
Aktuelle
Runde
2
1
runde_n
172
3 Arithmetische Schaltungen
Implementierung des Zustandsautomaten mit Speicherbausteinen
Im Folgenden wird anstelle der kombinatorischen Logik ein ROM-Speicher verwendet.
Multiplexer
Clk_Divisor
Clk_Rest
Init/<<1
Datenausausgang
Q0
Clk
D0
5 4 3 2 1 0
Q1
Q2
Q3
Q4
ROM-Speicher
D1
D2
D3
D4
8 7 6 5 4 3 2 1 0
AdressEingang
neg
Der ROM-Speicher funktioniert wie folgt: Die Bitkombination, die am Adress-Eingang
anliegt, wird als Adresse interpretiert. Am Datenausgang wird dann das Datenwort
ausgegeben, das an der durch den Adress-Eingang spezifizierte Adresse liegt.
Die sog. Speicherorganisation beschreibt den Speicheraufbau:
• Wie breit (in Bit) sind die Datenworte?
• Wieviele Datenworte können abgespeichert werden?
T
a)
Geben Sie die Organisation des gezeigten ROM-Speichers an.
3.10 Division
T
173
b) Geben Sie den ROM-Inhalt an, der zur Implementierung der Zustände 1 und 2
benötigt wird.
neg
Runde
Zustand
Ausgang
Folgerunde
Folgezust.
Zust. 1
Zust. 2
T
c)
Geben Sie den ROM-Inhalt an, der zur Implementierung des Zustands 3 benötigt
wird.
neg
Zust. 3
Runde
Zustand
Ausgang
Folgerunde
Folgezust.
174
T
3 Arithmetische Schaltungen
d) Geben Sie den ROM-Inhalt an, der zur Implementierung des Zustands 4 benötigt
wird.
neg
Zust. 4
Runde
Zustand
Ausgang
Folgerunde
Folgezust.