projektowanie cyfrowych systemów w oparciu o układy (vlsi i) pld

30
Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD Ernest Jamro Kat. Elektroniki AGH, Kraków Układy mnożące, konwolwery

Upload: ulfah

Post on 22-Feb-2016

42 views

Category:

Documents


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

Page 1: 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

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

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

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

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

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

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

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

Wallace Tree Multiplier(with Carry Save Adders)

W układach FPGA nie zaleca się stosowania CSA

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

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)

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

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)

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

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

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

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

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

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

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

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

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

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 ...

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

The MM cost for different coefficients

0

2

4

6

8

10

12

14

16

18

0 50 100 150 200 250

coeff

CLBs

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

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

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

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)

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

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

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

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

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

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

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

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

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

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)

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

Filtry FIR z liniową fazą (symetryczne: h(0)=h(N-1), h(1)=h(N-2), ...)

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

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