3.10 Division 167

Transcription

3.10 Division 167
3.10 Division
167
Steuerung
0 1
Dividend
0
clk_rest
init/<<1
n
0
1..n-1
Clk
Init/<<1
Rest
<<1
0..n-1
n
1
clk_div
Rest und
Quotient
neg
n
Clk
2n
0
a-b
n
0
n
Sub
b
Divisor
n
immer
a
n
n
0
0
0
0
2n
n..2n-1
1
Divisor
clk_div =
clk_rest =
ini/<<1 =
mux =
0..n-1
n..2n-1
mux
1
Init
n
immer
2
Init
3
Schieben
1
1
0
0
clk_div =
clk_rest =
ini/<<1 =
mux =
0
0
1
X
clk_div =
clk_rest =
ini/<<1 =
mux =
0
1
0
1
clk_div =
clk_rest =
ini/<<1 =
mux =
0
0
0
1
4
Schieben
clk_div = 0
clk_rest = 1
ini/<<1 = 1
mux = X
0
neg
==
1
&&
=
_n=
runde_n == 0
de
n
ru
0
==
g
immer
e
n
6
5
7
Sub; Rest |= 1
Sub; Rest |= 1
Ende
neg == 1
&&
runde_n
== 1
clk_div =
clk_rest =
ini/<<1 =
mux =
immer
runde_n == 1
clk_div =
clk_rest =
ini/<<1 =
mux =
0
0
X
X
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?
• Runden: Insgesamt 4 Runden ) ld(4) = 2 Bits notwendig ) Q3 und Q4.
• Zustand: 7 Zustande ) dld(4)e = 3 Bits notwendig ) Q0, Q1 und Q2.
Prinzipiell trägt die Information über die bisher durchgeführten Runden auch zum
aktuellen Zustand bei. Im Rahmen dieser Aufgabe ist die Information über die aktuelle Runde jedoch aus der Information über den aktuellen Zustand ausgegliedert
und wird separat als ‘‘Rundenzähler’’ geführt.
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
T
XXXX
00
0000
11
1100
22
001X
33
011X
4
0001
5
0101
6
00XX
7
4
Bit 3: clk_div
Bit 2: clk_rest
Bit 1: init/<<1
Bit 0: mux
b) Geben Sie die Folgezustände für alle unbedingten Verzweigungen an.
Zustand
3
(1)
00
2
11
3
22
4
33
4
6
5
6
7
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
3
0
7
1
3
Folgezustand
von Zustand 6
d) Geben Sie eine Schaltung zur Bestimmung des Folgezustands von Zustands 6 an,
die ohne Multiplexer auskommt.
1
runde_n
3
1
3
Folgezustand
von Zustand 6
1
T
e)
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
2
0
1
2
5
3
5
runde_n
1
7
0
3
3
3
1
2
3
3
3
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
3
0
1
2
Aktuelle
Runde
1
1
1
0
1
2
2
Add
2
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
0
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.
Der Speicher verfügt über 26 = 64 Datenworte zu je 9 Bit.
3.10 Division
T
b) Geben Sie den ROM-Inhalt an, der zur Implementierung der Zustände 1 und 2
benötigt wird.
Zust. 1
Zust. 2
T
173
c)
neg
Runde
Zustand
Ausgang
Folgerunde
Folgezust.
0
00
001
0000
00
010
1
00
001
0000
00
010
0
00
010
0110
00
011
1
00
010
0110
00
011
Geben Sie den ROM-Inhalt an, der zur Implementierung des Zustands 3 benötigt
wird.
Zust. 3
neg
Runde
Zustand
Ausgang
Folgerunde
Folgezust.
0
00
011
X001
01
100
0
01
011
X001
10
100
0
10
011
X001
11
100
0
11
011
X001
00
100
1
00
011
X001
01
100
1
01
011
X001
10
100
1
10
011
X001
11
100
1
11
011
X001
00
100
174
T
3 Arithmetische Schaltungen
d) Geben Sie den ROM-Inhalt an, der zur Implementierung des Zustands 4 benötigt
wird.
Zust. 4
neg
Runde
Zustand
Ausgang
Folgerunde
Folgezust.
0
00
100
X011
01
101
0
01
100
X011
10
101
0
10
100
X011
11
101
0
11
100
X011
00
101
1
00
100
X011
01
011
1
01
100
X011
10
011
1
10
100
X011
11
011
1
11
100
X011
00
111