projektowanie cyfrowych systemów w oparciu o układy (vlsi i) pld
DESCRIPTION
Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD. Ernest Jamro Kat. Elektroniki AGH, Kraków Układy mnożące, konwolwery. 1. 0. 0. 1. X. 1. 0. 1. 1. 1. 0. 0. 1. 1. 0. 0. 1. 0. 0. 0. 0. +. 1. 0. 0. 1. 1. 1. 0. 0. 0. 1. 1. Mnożenie. 9 x 11= 99. - PowerPoint PPT PresentationTRANSCRIPT
Projektowanie cyfrowych systemów w oparciu o układy
(VLSI i) PLD
Ernest JamroKat. Elektroniki AGH, Kraków
Układy mnożące, konwolwery
Mnożenie
1 0 0 1
X 1 0 1 1
1 0 0 1
1 0 0 1
0 0 0 0
+ 1 0 0 1
1 1 0 0 0 1 1
9 x 11= 99
Mnożenie równoległe
&
&
&
&
& +
& +
& +
& +
& +
& +
& +
& +
& +
& +
& +
& +
a0 a1 a2 a3
& +
ai
bj
ck-1 ck
sl-1
sl
b0
b1
b2
b3
2ck+sl= =sl-1+(ai
bj)+ck-1
p0 p1 p2 p3 p4 p5 p6 p7
Mnożenie sekwencyjne
A3 A2 A1 A0 B3
B2
B1
B0
FA FA HA
FF FF FF FF FF
Rejestr Przesuwny
Rejestr
Sumator
Rejestr (Przesuwny)
FF
Pn,0 Pn,1 Pn,2 Pn,3
Wallace Tree Multiplier(with Carry Save Adders)
W układach FPGA nie zaleca się stosowania CSA
Szybkie mnożenie w układach FPGA
AND
+
AND
+
+
+
+
27a7
b
26a6
b
AND
+
25a5
b
24a4
b
AND
+
23a3
b
22a2
b
AND
+
21a1
b
20a0
b Ewentualne rejestry potokowe
26·(2·a7 ·b + a6 ·b)
Układy mnożące w FPGA
Fragment of Virtex Configurable Logic Block (CLB)
Przykład:
G4 - a7
G3 - bi
G2 - a6
G1 - bi+1
F4 – a7
F3 – bi-1
F2 – a6
F1 – bi
(a7 and bi) xor (a6 and bi+1)
Mnożenie liczb ze znakiemReprezentacja: Znak, Moduł:
Mnożenie modułów jak liczb bez znaku
Znak= Znak1 XOR Znak2
Reprezentacja w kodzie uzupełnień do dwóch:
2
0
1 22N
ii
iN
N aaa Zwykła operacja mnożenia liczb dodatnich
C. R. Baugh and B. A.Wooley, “A two’s complement parallel array multiplication algorithm,” IEEE Trans. Comput., vol. C-22, pp. 1045–1047, Dec. 1973.
2
0
2
0
2
01
12
01
111
22 )2()2(22222N
ii
iN
i
N
ii
iNi
iNN
iNi
iNNN
N baabbababa
2
0
2
0
122N
iNi
iN
iNi
i baba
2
0
2
0
2
0
2
01
11
122 )2()2(222222N
ii
iN
i
N
ii
iN
iiN
iNNi
iNNNN
N baababbaba
Mnożenie w kodzie uzupełnień do 2
&
&
&
!&
& +
& +
& +
!& +
& +
& +
& +
!& +
!& +
!& +
!& +
& +
a0 a1 a2 a3
!& +
ai
bj
ck-1 ck
sl-1
sl
b0
b1
b2
b3
sl-1+(aibj)+ck-1=
=2ck+sl
p0 p1 p2 p3 p4 p5 p6 p7
1
Układ mnożący o zredukowanej szerokości
&
&
&
&
& +
& +
& +
& +
& +
& +
& +
& +
& +
& +
& +
& +
a0 a1 a2 a3
& +
ai
bj
ck-1 ck
sl-1
sl
b0
b1
b2
b3
sl-1+(aibj)+ck-1=
=2ck+sl
p0 p1 p2 p3 p4 p5 p6
truncation line
p7
Kompensacja błędu redukcji
&
&
&
&
& +
& +
& +
& +
& +
& +
& +
& +
& +
a0
a1
a2 a3
& +
ai
bj
ck-1 ck
sl-1
sl
b0
b1
b2
sl-1+(aibj)+ck-1=
=2ck+sl
p3 p4 p5 p6 p7
Mnożenie przez stały współczynnikZastosowanie pamięci Look Up Table (LUT)
PamięćROM
Adres Dana
Przykład mnożenia przez stałą wartość C= 5
Adres Dana
0 0
1 5
2 10
3 15 ...
Układy z wykorzystaniem pamięci LUT: mnożenie przez stały współczynnik CY = CA = CA(0:3) + 24 CA(4:7)wejscie
LUTB
LUTA
4 4
8
12 12
Sumator
8 4
12
16
wyjscie
Zastosowanie różnych pamięci ROMprzykład: szerokość wejściowa= 6
Mem161
Adder
Mem161
in
out
6
24
a)
Mem161
Adder
in
out
6
4
b)
Mem321
Adder
in
out
6
5
c)
Bardziej skomplikowany przykład Virtex: 161, 321, 4k1, 2k2, 1k4, 5128, 25616
szerokość wejścia i współczynnika mnożącego= 14
25616 321 3161
147
7 5 4 1
3116
21
25616 321 3161
7 5 4
3116
21
Adder
28
14
7
21
7
21
1
21
11
Migracja z CLB do BRAM
CLBBRAM
25616 321 3161
147
7 5 4 1
3116
21
7 5 4
3116
21
+
28
14
7
21
7
21
1
11
25616 321 3161 21LUT161
+
we
wy
14
4
LUT21
LUT161
4
LUT21
LUT161
4
LUT21
LUT161
2
LUT21
Koszt [CLB] dla różnych szerokości K wejścia i współczynnika mnożenia
0
2
4
6
8
10
12
4 6 8 10 12 14 16 18 20 22 24
tylko CLB, skala 1:10
liczna użytych BSR
ekwiwalentny koszt 1 BSR
MM (Multiplierless Multiplication)Mnożenie przez stały współczynnik
• Binary Representation, example B= 14= 11102
M= AB= (A<<1)+(A<<2)+(A<<3)
• Sub-structure Sharing (SS) example B= 27= 110112
tmp= A + (A<<1)
M= AB= tmp + (tmp<<3)
• Canonic Sign Digit (CSD)
set {0, 1, -1} (0 – no operation, 1 – addition, -1 – subtraction)
example: B= 7 = 1112 B= 100-1CSD
M=B·A= (A<<2) + (A<<1) + A M= (A<<3)-A
BINARNIE CSDinsert symbol ‘-1’ only if the total number of operation is reducedCoefficientBinary (TC) CSDMCSD3 11 101 117 111 1001 100111 1011 10101 101123 10111 101001 11001
Start
i=0, c0=0bn=bn-1
ci+1= bi+1bi bici bi+1cidi= bi+ci-2ci+1
i= i+1
YN i<n
Stop
Start
i=0carry= false
(bi=1 and carry)or
(bi=0 and not carry)
di=0
Y
iwN Y
N
j=i+1
jwNY
0Q(i,j)<2Y N
Q(i,j)<2and not
(Y<0 and j=w)(sign bit)
di= 1carry= false
di= -1carry= true
i= i+1
carry and B>0Y
di= 1
Stop
N
Y N
Standard Modified
Stosowane techniki optymalizacji układów MM
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
3 4 5 6 7 8 9 10 11 12K
CSD-SSSSCSDBR
The MM cost for different coefficients
0
2
4
6
8
10
12
14
16
18
0 50 100 150 200 250
coeff
CLBs
Filtr FIR
1
0
)()()(N
k
kixkhiy
Układ opóźniający
Układ arytmetyczny
x(i)
x(i) x(i-1) x(i-N+1)
y(i)
z -1 z -1 w 2 w 1 w 0
Input a y+2,x+2 a y+2,x+1 a y+2,x
+
Output
Filtr FIR (sposób pośredni)
1
0
)()()(N
k
kixkhiy
Układ opóźniający
Układy mnożące x(i)
x(i) h(0)
x(i-1) h(1)
x(i-N+1) h(N-1)
y(i) z-1 +
Input
Output z-1 + z-1 +
h(0) h(1) h(2)
FIR 2Dz-1 z-1
w2,2 w2,1 w2,0
Line Buf. z-1 z-1
w1,2 w1,1 w1,0
Line Buf. z-1 z-1
w0,2 w0,1 w0,0
Input ay+2,x+2 ay+2,x+1 ay+2,x
ay+1,x+2 ay+1,x+1 ay+1,x
ay,x+2 ay,x+1 ay,x
+ Output by+1,x+1
Przykłady filtrów FIR 2D
1 2 1
2 4 2
1 2 1
-1 -2 -1
0 0 0
1 2 1
1 1 1
1 -8 1
1 1 1
Dolno-przepustowy Sobel Laplace’a
Filtr FIR N=2 z układami mnożącymi LUT
z-1
LUTM0
LUTL0
LUTM1
LUTL1
In 8
4 4 4 4
Adder1 Adder0
Adder2
12 12 1212
13 134
18
4
Multiplier 1 Multiplier 2
Adder1 Adder0
Adder2
12 12 1212
139
41418
Adders Block
FIR, Arytmetyka w innej kolejności(Parallel) Distributed Arithmetic
1
0
1
0
1
0,2
N
i
N
i
L
jji
jiii ahah
1
0
1
0,2
L
j
N
ijii
j ahcoefficient
inputdifferent bits of
the input
Arytmetyka Rozproszona (Distributed Arithmetic)
a0,0 a1,0 ... aN-1,0
S0
a0,1 a1,1 ... aN-1,1
S1<<1
a0,L-1 a1,L-1 ... aN-1,L-1
SL-1<<(L-1)WDAC
. . .
1
00,
N
iii ah
1
01,
N
iii ah
1
01,
N
iLii ah
1
0
2L
jj
j S
1
0
1
0,2
L
j
N
ijii
j ah
WDAC=K+ log2(N+1)
WLC= K+WIN
The same input bit weight
(smaller LUT widths)
Filtry FIR z liniową fazą (symetryczne: h(0)=h(N-1), h(1)=h(N-2), ...)
Przykład dzielenia wspólnej podstruktury
H(z)= 5 + 13z-1 + 5z-2 = 1012 + 11012z-1 + 1012z-2
Przykład 1:
A= 5 = 1012- zmienna pomocnicza
H(z)= A + (1000 + A)z-1 + Az-2
Przykład 2:
A= 1 + z-1
H(z)= 5A + 8z-1 + 5z-2