I
T
P
W
ZPT
1
Układ
sterujący
(kontroler
)
Dane wyjściowe
Dane
wejściowe
Sygnały
sterujące
Stan części
operacyjnej
Układ operacyjny
(Datapath)
System cyfrowy
Mikrooperacje
wywoływane przez
sygnały sterujące
I
T
P
W
ZPT
2
System cyfrowy - realizacja
UO – z bloków funkcjonalnych
US – automat lub układ mikroprogramowany
X
Z
X
P
Z
Y
Z
D
F
US
UO
I
T
P
W
ZPT
3
Przykład syntezy strukturalnej
W kodzie BCD (Binary Coded Decimal) każda
cyfra liczby zapisanej w kodzie dziesiętnym jest
przedstawiana czterobitową liczbą binarną
Konwerter kodu binarnego na kod BCD:
4 8 9
Np. liczba 489 zostanie zapisana jako wektor
binarny z wykorzystaniem 12 bitów (3
× 4 bity)
BCD
0100 1000 1001
I
T
P
W
ZPT
4
Konwerter Bin2BCD
BIN/BCD
0
≤ liczby ≤ 99
0
0
0
1
1
0
1
1
27
BIN
Celem jest pokazanie różnych metod
projektowania
27
BCD
0
0
1
0
0
1
1
1
I
T
P
W
ZPT
5
0
0
0 0 0 0 0 0
0
0
0 1 1 0 1 1
27
LDA
LDB
LB
=
0
0
0 0 0 0 0 0
LDB
≥≥≥≥ 5
LDB := LDB+3
NIE
TAK
LDB := LDB
×××× 8
Metoda +3
I
T
P
W
ZPT
6
0
0
0 1 1 0 1 1
LDA
LDB
LB
0
0
0 0 0 0 0 0
0
0
0
0
0 0 0 0 0 0
0
0
0
0 0 0 0 0 0
0
0
0 0 0 0 0 0
0
0
0 0 0 0 0 1
0
0
0 0 0 0 1 1
0
0
0 0 0 1 1 0
0 0 1 1
0
0
0 0 1 0 0 1
0 1 1
0
0
0 1 0 0 1 1
0
0
1 0 0 1 1 1
LDB < 5
LDB < 5
LDB < 5
LDB < 5
LDB < 5
LDB < 5
LDB
≥≥≥≥ 5
+
LDB < 5
1
2
3
4
5
6
7
8
1 1 0 1 1
1 1 0 1 1
1 1 0 1 1
1 0 1 1
1 1
1
0
0
1 0 0 1 1 1
LD
BCD
=
2
7
= 27
I
T
P
W
ZPT
7
Algorytm konwersji
z kodu BIN na BCD
KONIEC
LOAD (LB)
LDA := 0
LDB := 0
LK := 8
LDB
≥≥≥≥ 5
LDB := LDB + 3
LDA := LDA + 3
LDA
≥≥≥≥ 5
START
LDA := SHL(LDA,LDB
3
)
LDB := SHL(LDB,LB
7
)
LB := SHL(LB)
LK := DEC(LK)
LD := LDA
LDB
LK = 0
NIE
TAK
NIE
NIE
TAK
TAK
Liczba konwertowana zapisana
jest w postaci binarnej
Przekształcenie polega na
wykonaniu określonej liczby
prostych operacji
Przy konwersji liczb z zakresu 0
– 99 można algorytm uprościć
Wykorzystuje proste operacje na
liczbach binarnych:
przesunięcie w lewo,
zwiększenie o 3,
porównanie ze stałą.
I
T
P
W
ZPT
8
Algorytm konwersji
Rejestry LB, LDA, LDB z
operacjami:
zeruj
wpisz,
przesuń.
Licznik LK z operacjami:
ustaw,
zmniejsz o 1.
Sumator
Komparator
KONIEC
LOAD (LB)
LDA := 0
LDB := 0
LK := 8
LDB
≥≥≥≥ 5
LDB := LDB + 3
LDA := LDA + 3
LDA
≥≥≥≥ 5
START
LDA := SHL(LDA,LDB
7
)
LDB := SHL(LDB,LB
7
)
LB := SHL(LB)
LK := DEC(LK)
LD := LDA
LDB
LK = 0
NIE
TAK
NIE
NIE
TAK
TAK
I
T
P
W
ZPT
9
Opis strukturalny
R3
R2
R1
ΣΣΣΣ
K
S3
S2
S1
A
B
8
4
4
4
„3”
„5”
K
≥≥≥≥ 5
LK
4
„8”
LOAD1
DEC
LK = 0
R4
LOAD2
8
Y = LD
UO
LB
Y
LK = 0
10
US
S
K
≥≥≥≥ 5
MUX
1
0
MUX
4
A
B
4
LB
I
T
P
W
ZPT
10
Sieć działań
z uwzględnieniem UO
LK = 0
0
0
SHL 1, SHL 2, SHL 3,
DEC (LK)
MUX := 0
MUX := 1
LOAD 4
LOAD 2
LOAD 3
S
0
1
1
0
1
1
LOAD 1
CLEAR 2,3
LOAD (LK)
K > 5
K > 5
A
0
A
1
A
3
A
4
A
5
A
6
A
7
A
2
Synteza układu
sterującego!
Numeracja stanów
wewnętrznych
I
T
P
W
ZPT
11
Zamiana SD na automat sterujący
LK = 0
0
0
SHL 1, SHL 2, SHL 3,
DEC (LK)
MUX := 0
MUX := 1
LOAD 4
LOAD 2
LOAD 3
S
0
1
1
0
1
1
LOAD 1
CLEAR 2,3
LOAD (LK)
K > 5
K > 5
A
0
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
0
/Z
0
A
1
/Z
1
A
2
/Z
2
A
3
/Z
3
A
4
/Z
6
A
6
/Z
4
A
7
/Z
5
A
5
/Z
7
x
1
x
1
x
0
x
2
0
x
1
x
1
x
2
x
Zamiana SD na automat sterujący
Nowe oznaczenia sygnałów
predykatowych
I
T
P
W
ZPT
12
Tablica p-w automatu sterującego
x
2
x
1
x
0
S
000
001
011
010
110
111
101
100
Z
A
0
Z
0
A
1
Z
1
A
2
Z
2
A
3
Z
3
A
4
Z
6
A
5
Z
7
A
6
Z
4
A
7
Z
5
A
0
/Z
0
A
1
/Z
1
A
2
/Z
2
A
3
/Z
3
A
4
/Z
6
A
6
/Z
4
A
7
/Z
5
A
5
/Z
7
x
1
x
1
x
0
x
2
0
x
1
x
1
x
2
x
A
0
A
0
A
0
A
0
A
1
A
1
A
1
A
1
A
2
A
2
A
2
A
2
A
2
A
2
A
2
A
2
A
6
A
6
A
6
A
6
A
3
A
3
A
3
A
3
A
4
A
4
A
7
A
7
A
7
A
7
A
4
A
4
A
2
A
5
A
5
A
2
A
2
A
5
A
5
A
2
A
0
A
0
A
0
A
0
A
0
A
0
A
0
A
0
A
3
A
3
A
3
A
3
A
3
A
3
A
3
A
3
A
4
A
4
A
4
A
4
A
4
A
4
A
4
A
4
Tablica p-w wystarcza do
realizacji automatu!
I
T
P
W
ZPT
13
Opis strukturalny
R3
R2
R1
ΣΣΣΣ
K
S3
S2
S1
A
B
8
4
4
4
„3”
„5”
K
≥≥≥≥ 5
LK
4
„8”
LOAD1
DEC
LK = 0
R4
LOAD2
8
Y = LD
UO
LB
Y
LK = 0
10
US
S
K
≥≥≥≥ 5
MUX
1
0
MUX
4
A
B
4
LB
Zrealizowany automat jest
Układem Sterującym
I
T
P
W
ZPT
14
Opis strukturalny
R3
R2
R1
ΣΣΣΣ
K
S3
S2
S1
A
B
8
4
4
4
„3”
„5”
K
≥≥≥≥ 5
LK
4
„8”
LOAD1
DEC
LK = 0
R4
LOAD2
8
Y = LD
UO
LB
Y
LK = 0
10
US
S
K
≥≥≥≥ 5
MUX
1
0
MUX
4
A
B
4
LB
Co dalej?
I
T
P
W
ZPT
Stosując rutynowe metody…
FPGA
FPGA
FPGA
FPGA
SPECYFIKACJA
FUNKCJONALNA
(HDL)
SYNTEZA
FUNKCJONALNA
OPIS RTL
TRANSLACJE
SPECYFIKACJI
SIEĆ
LOGICZNA
OPTYMALIZACJA
LOGICZNA
ODWZOROWANIE
TECHNOLOGICZNE
uzyskaną strukturę zapisujemy w języku opisu sprzętu i
kompilujemy w systemie Quartus
54 LEs ─ 33 mln/sek
FPGA
34 LEs ─ 39 mln/sek
I
T
P
W
ZPT
16
.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 Bin2
Konwerter Bin2
BCD na poziomie logicznym
BCD na poziomie logicznym
AHDL/VHDL
I
T
P
W
ZPT
17
Komputerowe projektowanie…
FPGA
FPGA
FPGA
FPGA
SPECYFIKACJA
FUNKCJONALNA
(HDL)
SYNTEZA
FUNKCJONALNA
OPIS RTL
TRANSLACJE
SPECYFIKACJI
SIEĆ
LOGICZNA
OPTYMALIZACJA
LOGICZNA
ODWZOROWANIE
TECHNOLOGICZNE
24 LEs ─ 313 mln/sek
I
T
P
W
ZPT
18
.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 Bin2
Konwerter Bin2
BCD na poziomie logicznym
BCD na poziomie logicznym
AHDL/VHDL
I
T
P
W
ZPT
19
Tablica prawdy – bin2bcd
TITLE " Decomposed project: bin2bcd ";
%
Translated from DEMAIN format
%
%
Warsaw University of Technology
%
%
Institute of Telecommunications
%
SUBDESIGN A
(
in_1, in_2, in_3, in_4
:INPUT;
in_5, in_6, in_7
:INPUT;
out_1, out_2, out_3, out_4 :OUTPUT;
out_5, out_6, out_7, out_8 :OUTPUT;
)
VARIABLE
g1_1, g1_2, g1_3, g3_1
:LCELL;
g2_1, g2_2
:LCELL;
BEGIN
---- Level 1 ----
TABLE
(in_1, in_2, in_3, in_4) => (g1_1);
B"1000" => B"0";
B"0011" => B"0";
.................
B"0001" => B"1";
B"1011" => B"1";
END TABLE;
TABLE
(in_6, g1_1, g2_1, g2_2) => (out_7);
B"0X10" => B"0";
.................
B"1011" => B"1";
END TABLE;
END;
# Konwerter
bin2bcd
.type fr
.i 7
.o 8
.p 100
0000000
00000000
0000001
00000001
0000010
00000010
0000011
00000011
0000100
00000100
0000101
00000101
. . . ..........
1011111
10010101
1100000
10010110
1100001
10010111
1100010
10011000
1100011
10011001
.e
Procedura syntezy logicznej
13 komórek (!!!)
19
352 mln/sek
I
T
P
W
ZPT
Realizacja programowa
Procesor AMD Athlon™
64X2 Dual Core 4200+
2.2 GHz
–
9,17 mln/sek
KONIEC
LOAD (LB)
LDA := 0
LDB := 0
LK := 8
LDB
≥≥≥≥ 5
LDB := LDB + 3
LDA := LDA + 3
LDA
≥≥≥≥ 5
START
LDA := SHL(LDA,LDB
3
)
LDB := SHL(LDB,LB
7
)
LB := SHL(LB)
LK := DEC(LK)
LD := LDA
LDB
NIE
TAK
NIE
NIE
TAK
TAK
LK = 0
I
T
P
W
ZPT
21
Porównanie realizacji BIN2BCD
Synteza strukturalna – 54 LEs ─ 33 mln/sek
Synteza logiczna:
system komercyjny Quartus – 24 LEs ─ 313 mln/sek
system specjalizowany – 13 LEs ─ 352 mln/sek
Liczba elementów logicznych ─ liczba słów
Procesor AMD Athlon™ 64X2 Dual Core 4200+
2.2 GHz – 9,17 mln/sek
I
T
P
W
ZPT
Mając świadomość, że…
FPGA
Specyfikacja HDL
Synteza funkcjonalna
Synteza logiczna
Odwzorowanie
technologiczne
Specjalistyczne
oprogramowanie
akademickie
metody syntezy
logicznej są
niedoskonałe
nowocześnie wykształcony
inżynier
System komercyjny
I
T
P
W
ZPT
Niedoskonałość metod 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