Upload
vantuyen
View
215
Download
0
Embed Size (px)
Citation preview
ОРТ2 2/55
Садржај
• Подсетник
– Основни комбинациони модули– Основни секвенцијални модули
• Основни појмови– Структра дигитаног уређаја– Повезивање јединица
• Операциона јединица– Пример: Операција множења – MULU
• Управљачка јединица– Шетајућа јединица– Стандардна секвенцијална мрежа– Бројач корака– Микропрограмска
ОРТ2 3/55
Структура дигиталног уређаја
• Дигитални уређај су прекидачке мреже које реализују једну или више операција над подацима који су представљени у бинарном облику.
• Дигитални уређаји су најчешће толико сложене прекидачке мреже да се пројектовање дигиталних уређаја не може реализовати формалним поступцима синтезе прекидачких мрежа.
ОРТ2 4/55
Структура дигиталног уређаја
• Један од поступака је да се извршавање операције или операција подели на логичке целине које се називају фазе и да за извршавање сваке фазе у дигиталном уређају постоји посебна јединица.
JEDINICA 1 JEDINICA 2 JEDINICA 3 JEDINICA N...
ОРТ2 5/55
Операциона јединица
• Операциона јединица се састоји од комбинационих и секвенцијалних прекидачких мрежа које се према својој функцији могу поделити у три групе.
1. Секвенцијалне прекидачке мреже које служе за памћење бинарних речи којима се дефинишу операције и подаци (регистри и меморије).
2. Комбинационе и секвенцијалне прекидачке мреже које реализују изабрани скуп микрооперација(мултиплексер, сабирач, АЛУ, декодер, ...).
3. Комбинационе и секвенцијалне прекидачке мреже које формирају сигнале логичких услова. (компаратори и бројачи, али и наменске мреже).
ОРТ2 6/55
Операциона јединица
• Операције се разлажу на одређен број корака и то тако да у сваки корак уђе једна или више микрооперација.
• Сваки од корака на које је разложена операција се извршава за време трајања једне периоде сигнала такта, па реализација операција захтева онолико тактова на колико корака је разложена операција.
• Под микрооперацијама се подразумевају операције које се реализују за време трајања једне периоде сигнала такта у комбинационим или секвенцијалним мрежама.
ОРТ2 7/55
Операциона јединица
• Време извршавања операције се добија као производ броја корака на које је операција разложена и вредности периоде сигнала такта.
• Ово време се може смањити
– смањивањем броја корака неопходних за извршавање микрооперација на које је једна операција разложена и
– смањивањем периоде сигнала такта.
ОРТ2 8/55
Операциона јединица
• Уређени низ корака на које је разложена нека операција и логички услови на основу којих се одређује редослед корака дефинишу алгоритам операције.
• За представљање алгоритама операција користе се дијаграми тока који се цртају помоћу операционих и управљачких блокова.
• Операциони и условни блокови се повезују линијама тако да излаз неког блока води на улаз једног и само једног блока.
ОРТ2 9/55
Операциона јединица
• У операциони блок се уписују микрооперације које се реализују у истом кораку алгоритма. Операциони блок има један или више улаза и један излаз.
MIKROOPERACIJE
ОРТ2 10/55
Операциона јединица
• У условни блок се уписује логички услов које дефинише гранање алгоритма.
• Управљачки блок има један или више улаза и два излаза код обичног гранања и више излаза код вишеструког условног скока.
LOGICKIUSLOV
0 1
ОРТ2 11/55
Управљачка јединица
• Управљачка јединица се састоји из секвенцијалних и комбинационих прекидачких мрежа које сагласно алгоритму операције и вредностима сигнала логичких услова који се формирају у операционој јединици генеришу управљачке сигнале за операциону јединицу.
• Ови сигнали одређују које микрооперације и по ком редоследу треба извршавати у операционој јединици да би се као резултат после одређеног броја сигнала такта реализовала операција.
ОРТ2 12/55
Управљачка јединица
• Управљачки сигнали су сигнали којима се у операционој јединици– одређују садржаји који у неком кораку треба да се
пропусте кроз мултиплексере и појаве не излазима мултиплексера,
– одређује која аритметичка или логичка операција треба да се реализује у ALU,
– врши упис у регистре,– инкрементира или декрементира садржај бројача итд.
ОРТ2 13/55
Управљачка јединица
• Управљачка јединица се реализује као секвенцијална мрежа која има онолико стања колико има корака на које је разложена операција.
• Посебно стање секвенцијалне мреже се додељује сваком кораку.
• У зависности од тога како се стање секвенцијалне мреже користи за генерисање управљачких сигнала операционе јединице разликују се две групе реализација управљачких јединица и то реализације са ожиченим и микропрограмским генерисањем управљачких сигнала.
ОРТ2 14/55
Управљачка јединица
• У случају ожичених реализација сигнал декодованог стања секвенцијалне мреже придружен неком кораку се користи за генерисање оних управљачких сигнала операционе јединице који у датом кораку треба да имају вредност 1.
• У случају микропрограмских реализација стање секвенцијалне мреже се користи као адреса микропрограмске меморије из које се чита контролна реч формирана за дати корак и на основу њеног садржаја генеришу одговарајуће вредности управљачких сигнала операционе јединице.
ОРТ2 15/55
Повезивање јединица
• Повезивања регистара се може реализовати на више начина, при чему су они варијанте два основна начина повезивања:– повезивање директним везама и – повезивање магистралом.
ОРТ2 16/55
Повезивање директним везама
0
CLKCLK
n-1
n
R10
n
LD
0
CLKCLK
n-1
n
R11
n
LD ldR11
0
CLKCLK
n-1
n
R12
n
LD ldR12
0
CLKCLK
n-1
n
R13
n
LD ldR13
0
1
2
3
MX
1 00
CLKCLK
n-1
n
R20
n
LD ldR20mxR201 mxR200
R10R11R12R13
0
1
2
3
MX
1 00
CLKCLK
n-1
n
R21
n
LD ldR21mxR211 mxR210
R10R11R12R13
N мултиплексера!
ОРТ2 17/55
Повезивање директним везама
• Добра страна повезивања директним везама је да се у истом кораку могу реализовати микрооперације преноса садржаја од више изворишних регистара до више одредишних регистара
• Лоша страна повезивања директним везама је да је потребан велики број мултиплексера.
ОРТ2 18/55
Повезивање магистралом
0
CLKCLK
n-1
n
R10
n
LD
0
CLKCLK
n-1
n
R11
n
LD ldR11
0
CLKCLK
n-1
n
R12
n
LD ldR12
0
CLKCLK
n-1
n
R13
n
LD ldR13
0
CLKCLK
n-1
n
R20
n
LD ldR20
0
CLKCLK
n-1
n
R21
n
LD ldR21
rdR13
nn
rdR12
nn
rdR11
nn
rdR10
nn
ldR10
N бафера!
ОРТ2 19/55
Повезивање магистралом
• Добра страна повезивања магистралом је да не постоји потреба за мултиплексерима, већ да се уместо њих користе бафери са три стања.
• Лоша страна је да се истовремено не може преносити садржај више од једног изворишног регистара у одредишне регистре.
ОРТ2 20/55
Реализација јединица са једном и више операција
WU
M_EU/WU7..0
...
ZQ
EU
out
M_RU/EU7..0
n
X1EULD
n
n
X2EULD
n
n
XPEULD
n
n
n
n
...
...
RU
Z1EUn
n
ZQNEUn
n
Z2EUn
n
...
EU
nn
n
n
n
ldX1EURUldX2EURU
ldXPEURU
...
stOEURU
OEUcl
OE
US
R
CLK
Q
Q
PU
Z2E
Uou
t
Z1E
Uou
t
...
lc0...r-1
cs0
...s-
1
r s
PREKIDAČKE MREŽE
ldZ1WUEU
stOWUEU
ldZ2WUEU
ldZQWUEU
...
CU
RU (Read Unit)
EU (Execution Unit)
WU (Write Unit)
CU (Control Unit)
PU (Processing Unit)
ОРТ2 21/55
Операција множења – MULU
∑∑−
=
−
=
⋅⋅=
⋅⋅=⋅=1n
0i
ii
1n
0i
ii 2YX2YXYXP
P(0)=0+X∙Y0∙20
P(1)=P(0)+X∙Y1∙21
... P(i)=P(i-1)+X∙Yi∙2
i
... P(n-1)=P(i-2)+X∙Yn-1∙2
n-1
ОРТ2 22/55
Операција множења – MULU
• Приликом рачунања парцијалног производа чланови се могу груписати и на следећи начин:
• P(i)=P(i-1)+(X∙2i)∙Y i, где је P(0)=0.
• Израз X∙2i се може исказати рекурзивно D(i)=D(i-1)∙2, где је D(0)=X.
• Овим се добије да је P(i)=P(i-1)+D(i)∙Y i, – у случају када је Yi једнако нула даје P(i)=P(i-1), – у случају када је Yi једнако један даје P(i)=P(i-1)+D(i).
ОРТ2 23/55
Операција множења – MULU
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
ОРТ2 24/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
Dclk
Iclk
cl clP
ld ldP
il 0
ld ldDsl slD
inc incI
cl clI
ir0srsrY Y
ldclkX
ldclk
Pclk
ADD
CMP
L
L
n
Y0
MULUS
clk
RclMULU
Q
ОРТ2 25/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
Dclk
Iclk
cl clP
ld ldP
il 0
ld ldDsl slD
inc incI
cl clI
ir0srsrY Y
ldclkX
ldclk
Pclk
ADD
CMP
L
L
n
Y0
MULUS
clk
RclMULU
Q
ОРТ2 26/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
MULU0
1
K0
P <= 0 K1
D <= X K2
I <= 0 K3
L0
1
K4
Y0
0 1
K5
P <= P K6 P <= P + D K7
D <= Dn-2..00 K8
Y <= 0Yn-1..1 K9
I <= I + 1 K10
MULU <= 0K11
ОРТ2 27/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
MULU0
1
K0
P <= 0 K1
D <= X K2
I <= 0 K3
L0
1
K4
Y0
0 1
K5
P <= P K6 P <= P + D K7
D <= Dn-2..00 K8
Y <= 0Yn-1..1 K9
I <= I + 1 K10
MULU <= 0K11
ОРТ2 28/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
MULU0
1
K0
P <= 0
K1D <= X
I <= 0
L0
1
K2
Y0
0 1
K3
P <= P K4 P <= P + D K5
D <= Dn-2..00
K6Y <= 0Yn-1..1
I <= I + 1
MULU <= 0K7
ОРТ2 29/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
MULU0
1
K0
P <= 0
K1D <= X
I <= 0
L0
1
K2
Y0
0 1
K3
P <= P K4 P <= P + D K5
D <= Dn-2..00
K6Y <= 0Yn-1..1
I <= I + 1
MULU <= 0K7
ОРТ2 30/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
p = p;
d = d << 1;
y = y >> 1;
} else {
p = p + d;
d = d << 1;
y = y >> 1;
}
}
return p;
}
MULU0
1
K0
P <= 0
K1D <= X
I <= 0
L0
1
K2
Y0
0 1
K3
K4
D <= Dn-2..00
P <= P + D
K5
Y <= 0Yn-1..1
I <= I + 1
MULU <= 0K6
D <= Dn-2..00P <= P
Y <= 0Yn-1..1
I <= I + 1
ОРТ2 31/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = 0; i < n; i++) {
if ((y & 1) == 0) {
d = d << 1;
y = y >> 1;
} else {
p = p + d;
d = d << 1;
y = y >> 1;
}
}
return p;
}
MULU0
1
K0
P <= 0
K1D <= X
I <= 0
L0
1
K2
Y0
0 1
K3
K4
D <= Dn-2..00
P <= P + D
K5
Y <= 0Yn-1..1
I <= I + 1
MULU <= 0K6
D <= Dn-2..00
Y <= 0Yn-1..1
I <= I + 1
ОРТ2 32/55
Операција множења – MULU
MULU0
1
T0
clP
T1ldD
clI
L0
1
T2
Y0
0 1
T3
T4
slD
ldP
T5
srY
incI
clMULUT6
slD
srY
incI
ОРТ2 33/55
Операција множења – MULU
inc
ldCNT
clk
DCT0 T1 T2 T3 T4 T5 T6 T7
Сигнали операционе јединице
Сигнали управљачке јединице
clP ldD clI ldP slD srY incI clMULU
MULU
L
Y0
3
3
CNT2..0 ldCNT
ОРТ2 34/55
Операција множења – MULU
inc
ldCNT
clk
DCT0 T1 T2 T3 T4 T5 T6 T7
Сигнали операционе јединице
Сигнали управљачке јединице
clP ldD clI ldP slD srY incI clMULU
MULU
L
Y0
3
3
CNT2..0 ldCNT
ОРТ2 35/55
Операција множења – MULU
Сигнали операционе јединице
ldP =
clP =
ldD =
slD =
clI =
incI =
srY =
clMULU =
T5
T1
T1
T4
T1
T4
T4
T6
+ T5
+ T5
+ T5
ОРТ2 36/55
Операција множења – MULU
Сигнали операционе јединице
ldP =
clP =
ldD =
slD =
clI =
incI =
srY =
clMULU =
T5
T1
T1
T4
T1
T4
T4
T6
+ T5
+ T5
+ T5
Мрежа Мурогов типа
ОРТ2 37/55
Операција множења – MULU
Сигнали управљачке јединице
ldCNT =
CNT2 =
CNT1 =
CNT0 =
T0*MULU
T0*MULU*0
T0*MULU*0
T0*MULU*0
+T2*L
+T2*L*1
+T2*L*1
+T2*L*0
+T3*Y0
+T3*Y0*1
+T3*Y0*0
+T3*Y0*1
+T4
+T4*0
+T4*1
+T4*0
+T5
+T5*0
+T5*1
+T5*0
+T6
+T6*0
+T6*0
+T6*0
ОРТ2 38/55
Операција множења – MULU
Сигнали управљачке јединице
T0*MULU +T2*L
T2*L
T2*L
+T3*Y0
+T3*Y0
T3*Y0
+T4
+T4
+T5
+T5
+T6ldCNT =
CNT2 =
CNT1 =
CNT0 =
ОРТ2 39/55
Операција множења – MULU v2
MULU0
1
T0
clP
T1ldD
clI
L0
1
T2
Y0
0 1
T4
slD
ldP
T5
srY
incI
clMULUT6
slD
srY
incI
ОРТ2 40/55
Операција множења – MULU v2
Сигнали операционе јединице
ldP =
clP =
ldD =
slD =
clI =
incI =
srY =
clMULU =
T5
T1
T1
T4
T1
T4
T4
T6
+ T5
+ T5
+ T5
ОРТ2 41/55
Операција множења – MULU v2
Сигнали управљачке јединице
ldCNT =
CNT2 =
CNT1 =
CNT0 =
T0*MULU
T0*MULU*0
T0*MULU*0
T0*MULU*0
+T2*L
+T2*L*1
+T2*L*1
+T2*L*0
+T2*L*Y0
+T2*L*Y0*1
+T2*L*Y0*0
+T2*L*Y0*0
+T4
+T4*0
+T4*1
+T4*0
+T5
+T5*0
+T5*1
+T5*0
+T6
+T6*0
+T6*0
+T6*0
+T2*L*Y0
+T2*L*Y0*1
+T2*L*Y0*0
+T2*L*Y0*1
ОРТ2 42/55
Операција множења – MULU v2
Сигнали управљачке јединице
ldCNT =
CNT2 =
CNT1 =
CNT0 =
T0*MULU +T2
T2
T2*L
+T4
+T4
+T5
+T5
+T6
T2*L*Y0
ОРТ2 43/55
Операција множења – MULU v2’
MULU0
1
T0
clP
T1ldD
clI
L0
1
T2
Y0
0 1
T4
slD
ldP
T5
srY
incI
clMULUT6
slD
srY
incI
ОРТ2 44/55
Операција множења – MULU v2’
Сигнали операционе јединице
ldP =
clP =
ldD =
slD =
clI =
incI =
srY =
clMULU =
T4
T1
T1
T3
T1
T3
T3
T5
+ T4
+ T4
+ T4
ОРТ2 45/55
Операција множења – MULU v2’
Сигнали управљачке јединице
ldCNT =
CNT2 =
CNT1 =
CNT0 =
T0*MULU
T0*MULU*0
T0*MULU*0
T0*MULU*0
+T2*L
+T2*L*1
+T2*L*1
+T2*L*0
+T4
+T4*0
+T4*1
+T4*0
+T5
+T5*0
+T5*1
+T5*0
+T6
+T6*0
+T6*0
+T6*0
+T2*L*Y0
+T2*L*Y0*1
+T2*L*Y0*0
+T2*L*Y0*1
ОРТ2 46/55
Операција множења – MULU v2’
Сигнали управљачке јединице
ldCNT =
CNT2 =
CNT1 =
CNT0 =
T0*MULU +T2*L
T2*L
T2*L
+T4
+T4
+T5
+T5
+T6+T2*L*Y0
+T2*L*Y0
T2*L*Y0
ОРТ2 47/55
Операција множења – MULU v3
MULU0
1
T0
clP
T1ldD
clI
L0
1
T2
Y0
0 1
T4
slD
ldP
T5
srY
incI
clMULUT6
slD
srY
incI
ОРТ2 48/55
Операција множења – MULU v3
MULU0
1
T0
clP
T1ldD
clI
L0
1
T2
If Y0 then {ldP}
T3slD
srY
incI
If L then {clMULU}
ОРТ2 49/55
Операција множења – MULU
inc
ldCNT
clk
DCT0 T1 T2 T3
Сигнали операционе јединице
Сигнали управљачке јединице
clP ldD clI ldP slD srY incI clMULU
MULU
L
2
2
CNT1..0 ldCNT
Y0
L
ОРТ2 50/55
Операција множења – MULU v3
Сигнали операционе јединице
ldP =
clP =
ldD =
slD =
clI =
incI =
srY =
clMULU =
T3 * Y0
T1
T1
T3
T1
T3
T3
T2 * L
Мрежа Милијевог типа
ОРТ2 51/55
Операција множења – MULU v3
Сигнали управљачке јединице
ldCNT =
CNT1 =
CNT0 =
T0*MULU
T0*MULU*0
T0*MULU*0
+T2*L
+T2*L*0
+T2*L*0
+T3
+T3*1
+T3*0
ОРТ2 52/55
Операција множења – MULU v3
Сигнали управљачке јединице
ldCNT =
CNT1 =
CNT0 =
T0*MULU
T3
0
+T2*L +T3
ОРТ2 53/55
Операција множења – MULU
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = n; i != 0; i--) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
ОРТ2 54/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = n; i != 0; i--) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
Dclk
Iclk
cl clP
ld ldP
il 0
ld ldDsl slD
dec decI
ld ldI
ir0srsrY Y
ldclkX
ldclk
Pclk
ADD
n
Y0
MULUS
clk
RclMULU
Q
L
ОРТ2 55/55
Операција множења – MULU
const int n = ...
int mulu(int x, int y) {
int p = 0;
int d = x;
for (int i = n; i != 0; i--) {
if ((y & 1) == 0) {
p = p;
} else {
p = p + d;
}
d = d << 1;
y = y >> 1;
}
return p;
}
Dclk
Iclk
cl clP
ld ldP
il 0
ld ldDsl slD
dec decI
ld ldI
ir0srsrY Y
ldclkX
ldclk
Pclk
ADD
n
Y0
MULUS
clk
RclMULU
Q
L
Која је величина регистара и сабирача?