o t cyf

background image

1

Projektowanie układów

Projektowanie układów

cyfrowego przetwarzania

cyfrowego przetwarzania

sygnałów

sygnałów

i informacji w strukturach

i informacji w strukturach

programowalnych

programowalnych

background image

2

. . . Rozwój technologii

. . . Rozwój technologii

u

kła

d

y

p

ro

g

ra

m

o

w

a

n

e

p

rze

z u

ży

tko

w

n

ika

(P

LD

)u

kła

d

y

p

ro

je

kto

w

a

n

e

p

rze

z u

ży

tko

w

n

ika

(se

m

i-cu

sto

m

)u

kła

d

y

za

m

a

w

ia

n

e

p

rze

z u

ży

tko

w

n

ika

(fu

ll-cu

sto

m

)

ASIC

P

L

D

40 mln.

tranzystorów

10 mln. bramek

background image

3

Układy programowalne

Układy programowalne

 „Fabryka na biurku” – SOPC
 Osiągają pojemność pozwalającą

realizować w jednym układzie
systemy
o złożoności odpowiadającej
milionom bramek logicznych

 Układy mające możliwość

reprogramowania i rekonfiguracji

background image

4

Układy programowalne

przez użytkownika

FPLD

(C)PLD

FPGA

PAL

PLA

XPLA

Configurable Logic Block

GAL
Classic EPLD

MAX, ACEX
ispLSI
MACH
XC9500

XC 3000
XC 4000
Spartan

APEX
FLEX

XC 6200
Virtex
AT40
AT6000

Configurable Logic Block

background image

5

Struktury programowalne

Struktury programowalne

MAX

MAX

From

inputsFrom

PIAExpanderProductTerm

sI/O andM

acrocellFeedbackI/O OUTPUT ENABLESYSTEM

CLOCKPRESETARRAY CLOCKCLEARDQPCTOI/OCONTROLBLOCK

AND

Array

macro

cell

8

macro

cell

8

macro

cell

8

PLD

background image

6

Układy FPGA firmy Xilinx

Układy FPGA firmy Xilinx

Configurable

Logic blocks

(CLBs)

D

A

TA

IN

.diLO

G

IC

V

A

R

IA

B

LES.ec"1" (EN

A

B

LE)clkR

ESET.k.rd"0" (IN

H

IB

IT)(G

LO

B

A

L R

ESET)FD

IN

G

FD

IN

G

0M

U

X

10M

U

X

1D

Q

R

D

D

Q

R

D

G

Q

YQ

X

F.X

.YC

LB

O

U

TPU

TS

Q

X

FQ

YG

C

O

M

B

IN

A

TIO

N

A

LFU

N

C

TIO

N

EN

A

B

LEclk.a.b.c.d.e

background image

7

Układy FPGA w technice DSP

Układy FPGA w technice DSP

„FPGAs are on the verge
of revolutionizing digital
signal processing in the
manner that
programmable digital
signal processors
(PDSPs) did nearly two
decades ago.”

background image

8

MILIONY BRAMEK !!!

MILIONY BRAMEK !!!

+

Nowe możliwości

Nowe możliwości

Reprogramowalne

układy PLD/FPGA

Języki opisu sprzętu

background image

9

Technika produktów wirtualnych

Technika produktów wirtualnych

Układy reprogramowalne oraz języki opisu sprzętu
stały się postawą koncepcji produktu wirtualnego -
systemu, funkcji lub układu, który nie istnieje w
rzeczywistości materialnej, ale potencjalnie może
być zrealizowany w każdej chwili.

Rynek własności
intelektualnej IP

(Intellectual

Property) zawartej
w układach zaprojektowanych
i oferowanych do sprzedaży w
postaci
kodów źródłowych języków HDL.

background image

10

Firmy i stowarzyszenia

projektujące

wirtualne układy dla urządzeń

reprogramowalnych

- ALTERA MEGAFUNCTION
PARTNERS PROGRAM
- XILINX ALLIANCE CORE
- COMMON LICENSE
CONSORTIUM
- IP CATALYST PROGRAM
- EXEMPLAR LOGIC-
VENDOR
INCENTIVE PROGRAM
(VIP)
- D & R DESIGN-REUSE.

- TILAB
- inSILICON CORPORATION
- SIBER CORE
TECHNOLOGIES
- DIGITAL
COMMUNICATION
TECHNOLOGIES
- ARC CORES
- VIRTUAL IP GROUP INC.
- IP SEMICONDUCTORS
- ALCATEL TECHNOLOGY
LICENSING

W Polsce:

- DIGITAL CORE DESIGN

EVATRONIX

background image

11

T

T

echnolog

echnolog

ia

ia

FPGA

FPGA

... zalety

... zalety

Elastycznosć architektury

Równoległość przetwarzania

Dowolna szerokość ścieżki danych

Wielokrotne użycie tych samych zasobów
sprzętowych

Rekonfigurowalność

Niedoskonałość narzędzi projektowania!

i wady

i wady

background image

12

Specyfikacja HDL

Synteza funkcjonalna

Synteza logiczna

Odwzorowanie

technologiczne

Poziom RTL

Sieć logiczna

Niedoskonałość metod

syntezy logicznej

Proces projektowania w

Proces projektowania w

systemach komercyjnych

systemach komercyjnych

FP

GA

background image

13

Układ kombinacyjny

Przykład – prosty układ

Przykład – prosty układ

kombinacyjny

kombinacyjny

.type fr
.i 10
.o 2
.p 25
0101000000 00
1110100100 00
0010110000 01
0101001000 01
1110101101 10
0100010101 10
1100010001 00
0011101110 10
0001001110 10
0110000110 10
1110110010 01
0111100000 00
0100011011 00
0010111010 10
0110001110 00
0110110111 11
0001001011 11
1110001110 01
0011001011 01
0010011010 10
1010110010 00
0100110101 11
0001111010 00
1101100100 01
1001110111 11
.e

x

0

x

2

x

3

x

9

UK

y

0

y

1

background image

14

Przykład (AHDL)

Przykład (AHDL)

AHDL: 35

komórek CLB

MAX+PLUSII

SUBDESIGN bul

SUBDESIGN bul

(

(

i[1..10] : INPUT;

i[1..10] : INPUT;

o[1..2] : OUTPUT;

o[1..2] : OUTPUT;

)

)

BEGIN

BEGIN

TABLE

TABLE

(i[1..10]) =>

(i[1..10]) =>

(o[1..2]);

(o[1..2]);

B"0101000000" =>

B"0101000000" =>

B"00";

B"00";

B"1110100100" =>

B"1110100100" =>

B"00";

B"00";

B"0010110000" =>

B"0010110000" =>

B"10";

B"10";

B"0101001000" =>

B"0101001000" =>

B"10";

B"10";

B"1110101101" =>

B"1110101101" =>

B"01";

B"01";

B"0100010101" =>

B"0100010101" =>

B"01";

B"01";

B"1100010001" =>

B"1100010001" =>

B"00";

B"00";

B"0011101110" =>

B"0011101110" =>

B"01";

B"01";

B"0001001110" =>

B"0001001110" =>

B"01";

B"01";

B"0110000110" =>

B"0110000110" =>

B"01";

B"01";

B"1110110010" =>

B"1110110010" =>

B"10";

B"10";

B"0111100000" =>

B"0111100000" =>

B"00";

B"00";

B"0100011011" =>

B"0100011011" =>

B"00";

B"00";

B"0010111010" =>

B"0010111010" =>

B"01";

B"01";

B"0110001110" =>

B"0110001110" =>

B"00";

B"00";

B"0110110111" =>

B"0110110111" =>

B"11";

B"11";

B"0001001011" =>

B"0001001011" =>

B"11";

B"11";

B"1110001110" =>

B"1110001110" =>

B"10";

B"10";

B"0011001011" =>

B"0011001011" =>

B"10";

B"10";

B"0010011010" =>

B"0010011010" =>

B"01";

B"01";

B"1010110010" =>

B"1010110010" =>

B"00";

B"00";

B"0100110101" =>

B"0100110101" =>

B"11";

B"11";

B"0001111010" =>

B"0001111010" =>

B"00";

B"00";

B"1101100100" =>

B"1101100100" =>

B"10";

B"10";

B"1001110111" =>

B"1001110111" =>

B"11";

B"11";

END TABLE;

END TABLE;

END;

END;

background image

15

Project Information d:\maxplus2\work\bul.rpt
MAX+plus II Compiler Report File
Version 10.2 07/10/2002
Compiled: 04/18/2004 15:57:42
***** Project compilation was successful
Converted from PLA file: bul
** DEVICE SUMMARY **
Chip/ Input Output Bidir Memory Memory

LCs

POF Device Pins Pins Pins Bits % Utilized

LCs

% Utilized

bul EPF10K10LC84-3 10 2 0 0 0 %

35

6 %

User Pins: 10 2 0
Device-Specific Information: d:\maxplus2\work\bul.rpt
bul
***** Logic for device 'bul' compiled without errors.
Device: EPF10K10LC84-3

Fragment raportu

Fragment raportu

MAX+PLUSII

MAX+PLUSII

background image

16

Dekompozycja funkcji

Dekompozycja funkcji

F

F

w systemie

w systemie

Quartus

Quartus

36 komórek
(FLEX)

QuartusII

-- 02-05-14 09:21:40

-- 02-05-14 09:21:40

-- PLA -> VHDL converter ver.1.02

-- PLA -> VHDL converter ver.1.02

-- MILITARY UNIVERSITY OF

-- MILITARY UNIVERSITY OF

TECHNOLOGY

TECHNOLOGY

-- WARSAW

-- WARSAW

-- zjachna@wel.wat.waw.pl

-- zjachna@wel.wat.waw.pl

library IEEE;

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_1164.all;

entity bul is

entity bul is

port(i : in std_logic_vector(1 to

port(i : in std_logic_vector(1 to

10);

10);

o : out std_logic_vector(1 to

o : out std_logic_vector(1 to

2));

2));

end bul;

end bul;

architecture arch1 of bul is

architecture arch1 of bul is

begin

begin

PLA: process(i)

PLA: process(i)

begin

begin

case i is

case i is

when "0101000000" => o <=

when "0101000000" => o <=

"00";

"00";

when "1110100100" => o <=

when "1110100100" => o <=

"00";

"00";

when "0010110000" => o <=

when "0010110000" => o <=

"10";

"10";

when "0101001000" => o <=

when "0101001000" => o <=

"10";

"10";

when "1110101101" => o <=

when "1110101101" => o <=

"01";

"01";

when "0100010101" => o <=

when "0100010101" => o <=

"01";

"01";

when "1100010001" => o <=

when "1100010001" => o <=

"00";

"00";

when "0011101110" => o <=

when "0011101110" => o <=

"01";

"01";

when "0001001110" => o <=

when "0001001110" => o <=

"01";

"01";

when "0110000110" => o <=

when "0110000110" => o <=

"01";

"01";

when "1110110010" => o <=

when "1110110010" => o <=

"10";

"10";

when "0111100000" => o <=

when "0111100000" => o <=

"00";

"00";

when "0100011011" => o <=

when "0100011011" => o <=

"00";

"00";

when "0010111010" => o <=

when "0010111010" => o <=

"01";

"01";

when "0110001110" => o <=

when "0110001110" => o <=

"00";

"00";

when "0110110111" => o <=

when "0110110111" => o <=

"11";

"11";

when "0001001011" => o <=

when "0001001011" => o <=

"11";

"11";

when "1110001110" => o <=

when "1110001110" => o <=

"10";

"10";

when "0011001011" => o <=

when "0011001011" => o <=

"10";

"10";

when "0010011010" => o <=

when "0010011010" => o <=

"01";

"01";

when "1010110010" => o <=

when "1010110010" => o <=

"00";

"00";

when "0100110101" => o <=

when "0100110101" => o <=

"11";

"11";

when "0001111010" => o <=

when "0001111010" => o <=

"00";

"00";

when "1101100100" => o <=

when "1101100100" => o <=

"10";

"10";

when "1001110111" => o <=

when "1001110111" => o <=

"11";

"11";

when others => o <= "XX";

when others => o <= "XX";

end case;

end case;

end process;

end process;

end;

end;

37 komórek

(Stratix)

background image

17

Ile komórek CLB ?

.type fr
.i 10
.o 2
.p 25
0101000000 00
1110100100 00
0010110000 01
0101001000 01
1110101101 10
0100010101 10
1100010001 00
0011101110 10
0001001110 10
0110000110 10
1110110010 01
0111100000 00
0100011011 00
0010111010 10
0110001110 00
0110110111 11
0001001011 11
1110001110 01
0011001011 01
0010011010 10
1010110010 00
0100110101 11
0001111010 00
1101100100 01
1001110111 11
.e

y 0

0 1 3

4

7

6

y 1

0 1 2

1

6

7 9

G 1

H 1

G 2

H 2

Zagadka

Zagadka

4 komórki CLB

Dekompozycj
a

background image

18

Inny przykład – konwerter

Inny przykład – konwerter

Bin2BCD

Bin2BCD

BIN/BCD

Wejście

Wyjście

0  liczby  99

(00011011)

BIN

(00100111)

BCD

background image

19

-- kowersja liczby binarnej na liczbe bcd (lb<99)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
--USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;

ENTITY bin2bcd IS

PORT(

start, zegar : IN

STD_LOGIC;

lb

: IN

STD_LOGIC_VECTOR(7 DOWNTO

0);

koniec

: OUT STD_LOGIC;

ld

: OUT STD_LOGIC_VECTOR(7 DOWNTO

0));

END bin2bcd;

Bin2BCD – opis behawioralny

Bin2BCD – opis behawioralny

VHDL

VHDL

background image

20

ARCHITECTURE a_bin2bcd OF bin2bcd IS
BEGIN

PROCESS (zegar)

VARIABLE lk

: INTEGER RANGE 0 TO 8;

VARIABLE lda, ldb

: STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE lb_r : STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

IF (zegar'EVENT AND zegar = '1') THEN

IF start = '1' THEN

lda := "0000";
ldb := "0000";
ld <= "00000000";
lb_r := lb;
lk := 8;
koniec <= '0';

ELSE

IF lk > 0 THEN

IF ldb >= 5 THEN

lda := (lda(2 DOWNTO 0) & '1'); -- bit lb[3]

= 1

ldb := ((ldb(2 DOWNTO 0) + "011") &

lb_r(7));

ELSE

lda := (lda(2 DOWNTO 0) & '0'); -- bit lb[3]

= 1

ldb := (ldb(2 DOWNTO 0) & lb_r(7));

END IF;
lb_r := (lb_r(6 DOWNTO 0) & '0'); -- przesun w

lewo

lk := lk - 1; -- zmniejsz lk

ELSE

ld <= (lda & ldb);
koniec <= '1';

END IF;

END IF;

END IF;

END PROCESS;

END a_bin2bcd;

Bin2BCD – opis behawioralny

Bin2BCD – opis behawioralny

VHDL

VHDL

background image

21

QUARTUS

.type fr
.i 9
.o 8
.p 100
000000000 0000
0000
000000001 0000
0001
000000010 0000
0010
000000011 0000
0011
000000100 0000
0100
000000101 0000
0101
000000110 0000
0110
000000111 0000
0111
000001000 0000
1000
000001001 0000
1001
000001010 0001
0000
000001011 0001
0001
000001100 0001
0010
000001101 0001
0011
* * *
001100001 1001
0111
001100010 1001
1000
001100011 1001
1001
.e

Konwerter Bin2BCD na

Konwerter Bin2BCD na

poziomie logicznym

poziomie logicznym

DEMAI
N

Tradycyjna
synteza

Dekompozycja

 29 komórek

13 komórek

(!!!)

background image

22

Niedoskonałość metod

Niedoskonałość metod

syntezy

syntezy

f

Sieć dwupoziomowa

f

Sieć wielopoziomowa

FPGA

y = f(x

1

, x

2

, x

3

, x

4

) !!!

x

1

x

2

x

3

x

4

CLB

x

1

x

2

x

3

x

4

CLB

background image

23

Dekompozycja zrównoważona

Dekompozycja zrównoważona

BD

BD

wykorzystuje naprzemiennie

wykorzystuje naprzemiennie

dekompozycję szeregową

dekompozycję szeregową

i dekompozycję równoległą

i dekompozycję równoległą

F

X

Y

G

H

X

Y

X

1

X

2

B

A

X

Y

1

Y

2

X

3

X

4

Dekompozycja szeregowa

Dekompozycja szeregowa

Dekompozycja równoległa

Dekompozycja równoległa

background image

24

Proces

Proces

projektowania

projektowania

FP

GA

Specyfikacja HDL

Synteza

funkcjonalna

Synteza logiczna

Odwzorowanie

technologiczne

B-dekompozycja

Interfejs

background image

25

Dekompozycja skutecznie
wpływa na redukcję
zasobów sprzętowych w
realizacjach układów DSP
(np. filtrów cyfrowych)

Zastosowanie

Zastosowanie

background image

26

Wiele operacji

mnożenia

i dodawania

Mnożenie z

Mnożenie z

akumulacją

akumulacją

]

1

[

]

1

[

...

]

1

[

]

1

[

]

0

[

]

0

[

]

[

]

[

,

1

0

N

x

N

c

x

c

x

c

n

x

n

c

y

N

n

x

c

… suma iloczynów:

Ustalony
współczynnik

n-ta próbka

Registe

r

Data in

Data out

MAC
unit

Loop

algorithm

Filtry ze skończoną odpowiedzią

Filtry ze skończoną odpowiedzią

impulsową

impulsową

Finite Impulse Response (FIR) filters

Finite Impulse Response (FIR) filters

background image

27

Realizacja bezpośrednia

Realizacja bezpośrednia

(klasyczna)

(klasyczna)

]

1

[

]

1

[

...

]

1

[

]

1

[

]

0

[

]

0

[

]

[

]

[

,

1

0

N

x

N

c

x

c

x

c

n

x

n

c

y

N

n

x

c

X[N-

1]

●●●

X[1]

X[0]

C[N-

1]

●●●

C[1]

C[0]

Rejestr przesuwający

+

R

Układ mnożący

Akumulator

Ogólnego przeznaczenia!

background image

28

X[N-

1]

●●●

X[1]

X[0]

C[N-

1]

●●●

C[1]

C[0]

Rejestr przesuwający

+

R

Układ mnożący

Akumulator

Realizacja bezpośrednia

Realizacja bezpośrednia

nie jest odpowiednia dla struktur

nie jest odpowiednia dla struktur

FPGA

FPGA

wygodna dla procesorów sygnałowych

wygodna dla procesorów sygnałowych

background image

29

Arytmetyka rozproszona

Arytmetyka rozproszona

X

B-1

[0]

●●●

X

1

[0]

X

0

[0]

X

B-1

[1]

●●●

X

1

[1]

X

0

[1]

X

B-1

[N-1]

●●●

X

1

[N-1]

X

0

[N-1]

LUT

+

R

Rejestr przesuwający

Logika DA

Akumulator

)

]

[

,

]

[

(

2

1

0

1

0

N

n

b

B

b

b

n

x

n

c

f

1

0

]

[

]

[

N

n

n

x

n

c

y

Układ kombinacyjny typu LUT

background image

30

Wyniki eksperymentów dla układów

Wyniki eksperymentów dla układów

DA

DA

FIR

Tablica DA

wejścia/wyjści

a

Komórki LUT

DA bez

dekompozycji

DA

z

dekompozycją

F4

7/8

12

9

F5

11/11

45

32

F6

11/11

66

45

F7

11/12

48

35

F8

15/12

136

64

F9

19/16

279

159

586

344

%

100

58

Ponad 40% redukcja zasobów sprzętowych

background image

31

Implementacja DA

Implementacja DA

co dalej

co dalej

Jaki jest wpływ

logiki DA na

implementację

całego filtru?

background image

32

Implementacja całej

Implementacja całej

struktury filtru

struktury filtru

FIR

Struktura

sumatorów

Bez dekompozycji

Z dekompozycją

LCs

F

max

[MHz]

LCs

F

max

[MHz]

F4

pipel.

288

51.28

264

53.76

comb.

224

25.25

204

26.60

F5

pipel.

642

47.62

530

52.36

comb.

527

21.05

444

22.03

F6

pipel.

808

38.61

632

41.49

comb.

710

19.27

551

19.61

F7

pipel.

680

47.62

560

47.85

comb.

576

20.62

476

20.96

F8

pipel.

1404

42.74

834

48.31

comb.

1314

22.73

746

22.73

F9

pipel

2624

31.25

1672

38.61

comb.

2533

14.47

1564

20.92

12330

8477

%

100

68

background image

33

Polepszenie wyników

Polepszenie wyników

FIR

Liczba komórek

Quartu

s

Dekompozycja

automatyczna

Dekompozycja

interaktywna

F4

12

9

9

F5

45

32

24

F6

66

45

29

F7

48

35

26

F8

136

64

53

F9

279

159

144

Σ

586

344

285

%

100

58

49

Ponad 50% redukcja zasobów sprzętowych

background image

34

ROM

2

n

słów

n-bitowy adres

m-bitowe wyjście

Logika kombinacyjna

...

x

1

x

2

x

n

...

y

1

y

2

y

m

S-box

S-box

n

n

x

x

m

m

n

m

S

Podstawieni

Podstawieni

e:

e:

Układy kryptograficzne

Układy kryptograficzne

background image

35

Hierocrypt – 3 (NESSIE)

Hierocrypt – 3 (NESSIE)

TOSHIBA Corp.

TOSHIBA Corp.

27000 komórek

P = 52,6 Mbit/s

WAT + (DEMAIN)

WAT + (DEMAIN)

9758 komórek / 48kb EAB

P = 352 Mbit/s

Rogawski M.:

Rogawski M.:

Analysis of implementation of HIEROCRYPT-3 algorithm

Analysis of implementation of HIEROCRYPT-3 algorithm

(and its comparison to CAMELLIA algorithm)

(and its comparison to CAMELLIA algorithm)

using Altera devices

using Altera devices

.

.

Strona Międzynarodowego Stowarzyszenia Badań Kryptologicznych

Strona Międzynarodowego Stowarzyszenia Badań Kryptologicznych

(IACR), artykuł nr. 2003/258 (http://eprint.iacr.org).

(IACR), artykuł nr. 2003/258 (http://eprint.iacr.org).

background image

36

Realizacje Rijndaela – porównanie

Realizacje Rijndaela – porównanie

przepustowości (Mb/s) dla FLEX 10K200

przepustowości (Mb/s) dla FLEX 10K200

0

100

200

300

400

500

600

700

800

TSI/
TUKE

GMU

WU
T

MUT

451

316

248

752

TSI/TUKE – TSI France & Technical
Unversity of Košice, Slovakia

GMU - George Mason Univeristy, USA

MUT – Military University of Technology, Poland

WUT - Warsaw University of Technology,
Poland

background image

37

WNIOSKI

WNIOSKI

Komercyjne narzędzia projektowania
nie są doskonałe i nie pozwalają
wykorzystanie wszystkich możliwości
oferowanych przez struktury FPGA

Jedyną możliwością pokonania tych
trudności jest zastosowanie narzędzi
uniwersyteckich


Document Outline


Wyszukiwarka

Podobne podstrony:
Cl2 Osc anal i cyf
26 11 2013 Pytania na Zaliczenie INFORM Modelowanie cyf
me reg cyf RADEK
cyf toc
spr cyf
Zegar cyf z budzikiem
em cyf hrd
dekalog cyf obywatela
em cyf hrd 2
Cyf uklad scal CMOS 74

więcej podobnych podstron