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
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Mikrooperac
je
wywoływane przez
sygnały sterujące
I
T
P
W
ZPT
2
System cyfrowy - realizacja
UO – z bloków funkcjonalnych
US – automat lub (coraz rzadziej stosowany)
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
Wejście
Wyjście
0 liczby 99
(00011011)
BIN
(0010
0111)
BCD
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
I
T
P
W
ZPT
8
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
9
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
10
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
11
Tablica p-w automatu sterującego
x
2
x
1
x
0
S
00
0
00
1
01
1
01
0
11
0
11
1
10
1
10
0
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
12
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
13
Co dalej ...
AHDL lub VHDL
…dalej automatycznie
…aż do zaprogramowania
I
T
P
W
ZPT
14
IN
CLK
CK
IN
LB[7..0]
STOP]
OUT
CLOK
L[3..0]
OUT
OUT
LOAD
START
LOAD
LOAD
LOAD
CLK
DA[3..0]
LOAD
STOP
DB[3..0]
RB[7..0]
LD[7..0]
CK
STOP
CK
CK
QDB[3..0]
QDA[3..0]
r3_v
Us_v
r2_v
r1_v
r4_v
Lk_v
LB[7..0]
CK
CLK
START
CLOK
STOP
LD[7..0]
INPUT
INPUT
INPUT
INPUT
OUTPUT
OUTPUT
OUTPUT
Najstarszy inżynier…
Najstarszy inżynier…
uzyskaną strukturę bezpośrednio zapisuje w
języku opisu sprzętu i kompiluje
I
T
P
W
ZPT
15
SUBDESIGN bin2bcd
(
lb[7..0], start, zegar
: INPUT;
ld[7..0], koniec
: OUTPUT;
)
VARIABLE
lda[3..0], ldb[3..0]
: DFF;
lb_r[7..0], lk[3..0]
: DFF;
ld[7..0], koniec
: DFF;
BEGIN
(lda[], ldb[], lb_r[], lk[]).clk = zegar;
(ld[], koniec).clk = zegar;
IF start THEN
lb_r[] = lb[];
lk[] = 8;
ELSE
IF lk[] > 0 THEN
IF ldb[] >= 5 THEN
lda[] = (lda[2..0], B"1"); -- bit lb[3]
= 1
ldb[] = (ldb[2..0] + 3, lb_r[7]);
ELSE
lda[] = (lda[2..0], B"0"); -- bit lb[3]
= 0
ldb[] = (ldb[2..0], lb_r[7]);
END IF;
lb_r[] = (lb_r[6..0], B"0"); -- przesun w lewo
lk[] = lk[] - 1; -- zmniejsz lk
ELSE
lda[] = lda[];
ldb[] = ldb[];
ld[] = (lda[], ldb[]);
koniec = B"1";
END IF;
END IF;
END;
Młodszy inżynier opisuje działanie
układu behawioralnie (np. w języku
AHDL)
I
T
P
W
ZPT
A najmłodszy .. ma pełną
świadomość, że
FP
GA
Specyfikacja HDL
Synteza
funkcjonalna
Synteza logiczna
Odwzorowanie
technologiczne
Specjalistyczne
oprogramowanie
akademickie
metody syntezy
logicznej są
niedoskonałe
I
T
P
W
ZPT
0 00000000 0000 0000
1 00000001 0000 0001
2 00000010 0000 0010
3 00000011 0000 0011
4 00000100 0000 0100
5 00000101 0000 0101
6 00000110 0000 0110
7 00000111 0000 0111
8 00001000 0000 1000
* * * *
97 01100001 1001 0111
98 01100010 1001 1000
99 01100011 1001 1001
BIN/BCD
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
Wejścia Wyjścia
0
1
1
0
0
0
0
0
1
1
0
0
0
0
1
1
1
0
0
1
0
1
1
1
0
0
1
0
1
1
1
1
Konwerter Bin2BCD na poziomie
Konwerter Bin2BCD na poziomie
logicznym
logicznym
QUARTUS 29
komórek
…ale czy zastosujemy do tych
obliczeń system komercyjny
..nie, bo systemy komercyjne
nie mają wbudowanych
procedur dekompozycji
I
T
P
W
ZPT
18
A jak sobie poradzą z
tym konwerterem
najnowsze algorytmy
dekompozycji
I
T
P
W
ZPT
19
Bin2bcd realizowany metodą
dekompozycji
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
Np..
DEMAIN
13 komórek
(!!!)
I
T
P
W
ZPT
Porównanie realizacji BIN2BCD
Najstarszy inżynier: synteza strukturalna – 72 LEs
Młodszy: synteza behawioralna – 41 LEs
Najmłodszy: synteza logiczna:
system komercyjny Quartus – 29 LEs
system specjalizowany – 13 LEs
I
T
P
W
ZPT
21
Cały projekt konwertera
kodu binarnego na kod
BCD
jest dokładnie omówiony
w książce:
Inny przykład syntezy
strukturalnej jest
omówiony w książce
(przykład 5.4 rozdz. 5):
Warto przeczytać przed
LAB!
Errata do książki SUC na
www.zpt.tele.pw.edu.pl