Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD

Post on 22-Feb-2016

40 views 0 download

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 Presentation

Transcript of Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD

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