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
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
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
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
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
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
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.”
8
MILIONY BRAMEK !!!
MILIONY BRAMEK !!!
+
Nowe możliwości
Nowe możliwości
Reprogramowalne
układy PLD/FPGA
Języki opisu sprzętu
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.
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
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
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
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
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;
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
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)
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
18
Inny przykład – konwerter
Inny przykład – konwerter
Bin2BCD
Bin2BCD
BIN/BCD
Wejście
Wyjście
0 liczby 99
(00011011)
BIN
(00100111)
BCD
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
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
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
(!!!)
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
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
24
Proces
Proces
projektowania
projektowania
FP
GA
Specyfikacja HDL
Synteza
funkcjonalna
Synteza logiczna
Odwzorowanie
technologiczne
B-dekompozycja
Interfejs
25
Dekompozycja skutecznie
wpływa na redukcję
zasobów sprzętowych w
realizacjach układów DSP
(np. filtrów cyfrowych)
Zastosowanie
Zastosowanie
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
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!
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
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
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
31
Implementacja DA
Implementacja DA
–
–
co dalej
co dalej
Jaki jest wpływ
logiki DA na
implementację
całego filtru?
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
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
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
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).
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
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