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

 

 

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

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 

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