System cyfrowy Sygnały sterujące Dane wejściowe Układ sterujący (kontroler) Układ operacyjny (Datapath) Mikrooperacje wywoływane przez sygnały sterujące Stan części operacyjnej Dane wyjściowe Z
System cyfrowy - realizacja X Z D Z US UO Z Y X F UO z bloków funkcjonalnych US automat lub (coraz rzadziej stosowany) układ mikroprogramowany Z 2
rzykład syntezy strukturalnej Konwerter kodu binarnego na kod BCD ) : kodzie BCD (Binary Coded Decimal) każda cyfra liczby zapisanej w kodzie dziesiętnym jest przedstawiana czterobitową liczbą binarną Np. liczba 489 zostanie zapisana jako wektor binarny z wykorzystaniem 2 bitów (3 4 bity) 4 8 9 ) rzykład ten dokładnie omówiony jest w książce: Z 3
Konwerter Bin2BCD BN/BCD ejście yjście () BN () BCD liczby 99 Z 4
Metoda +3 27 = LDA LDB LB LDB 5 NE AK LDB := LDB LDB := LDB+3 8 Z 5
LDA LDB LB LDB < 5 LDB < 5 2 LDB < 5 3 LDB < 5 4 LDB < 5 5 LDB < 5 6 LDB 5 + 7 LDB < 5 8 LD BCD = 2 7 = 27 Z 6
Algorytm konwersji z kodu BN na BCD SAR LOAD (LB) LDA := LDB := LK := 8 LDB 5 AK NE LDB := LDB + 3 LDA 5 AK NE LDA := LDA + 3 LDA := SHL(LDA,LDB 3 ) LDB := SHL(LDB,LB 7 ) LB := SHL(LB) LK := DEC(LK) Z NE LK = AK LD := LDA LDB KONEC 7
Opis strukturalny 4 4 8 LB 8 4 R3 R2 R A S3 S2 S B LK LK = LOAD DEC MUX 3 Σ 4 K 5 MUX A B 4 4 S US LK = K 5 LB UO Y K 5 8 R4 Y = LD LOAD2 Z 8
Sieć działań z uwzględnieniem UO S A A Synteza układu sterującego! LOAD CLEAR 2,3 LOAD (LK) MUX := K > 5 A 2 A 6 A 3 LOAD 2 Numeracja stanów wewnętrznych MUX := K > 5 A 7 A 4 LOAD 3 SHL, SHL 2, SHL 3, DEC (LK) LK = A 5 LOAD 4 Z 9
S LOAD CLEAR 2,3 LOAD (LK) MUX := Zamiana SD na automat sterujący A A A 2 x 2 A /Z A /Z x 2 Nowe oznaczenia sygnałów predykatowych K > 5 A 6 A 3 MUX := LOAD 2 A 2 /Z 2 x A 6 /Z 4 K > 5 A 7 x A 4 LOAD 3 A 3 /Z 3 x A 7 /Z 5 Z SHL, SHL 2, SHL 3, DEC (LK) LK = A 5 LOAD 4 x A 4 /Z 6 x x A 5 /Z 7
ablica p-w automatu sterującego A /Z x 2 x 2 S x 2 x x Z A /Z A 2 /Z 2 A 3 /Z 3 x x x x A 6 /Z 4 A 7 /Z 5 A A A A A A A A A Z A A 2 A 2 A 2 A 2 A 2 A 2 A 2 A 2 Z A 2 A 3 A 3 A 6 A 6 A 6 A6 A 3 A 3 Z 2 A 3 A 4 A 4 A Z 4 3 A 4 A 2 A 5 A 2 Z 6 A 5 A A A Z 7 A 6 A 3 A 3 A 3 Z 4 A 7 A 4 A 4 A 7 A 5 A A 3 A 4 A 7 A 2 A A 3 A 4 A 7 A 2 A A 3 A 4 A 7 A 5 A A 3 A 4 A 4 A 5 A A 3 A 4 A 4 Z 5 x A 4 /Z 6 x A 5 /Z 7 ablica p-w wystarcza do realizacji automatu! Z
Opis strukturalny 4 4 8 LB 8 4 R3 R2 R A S3 S2 S B LK LK = LOAD DEC MUX MUX S LB 3 Σ 4 K 5 US LK = K 5 UO Y A B 4 4 K 5 Z 8 R4 Y = LD LOAD2 Zrealizowany automat jest Układem Sterującym 2
a jak jest w rzeczywistości uzyskaną strukturę zapisujemy w języku opisu sprzętu i kompilujemy LB[7..] NU r3_v r2_v r_v N OU N OU LB[7..] OU CK NU LOAD CK DA[3..] LOAD CK DB[3..] LOAD CK RB[7..] CLK SAR NU NU Us_v CLK CLOK SAR LOAD SO Lk_v CK L[3..] LOAD SO OUU OUU CLOK SO r4_v SO] CLK LD[7..] LD[7..] QDB[3..] QDA[3..] OUU Z 3
Realizacja wg języka VHDL (raport systemu MAX+LUS) ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized bin2bcd EFK2RC24-3 9 % 72 6 % User ins: 9 Z 4
Można inaczej: Bin2BCD specyfikacja behawioralna w języku AHDL Z SUBDESGN bin2bcd ( lb[7..], start, zegar ) VARABLE BEGN END; ld[7..], koniec lda[3..], ldb[3..] lb_r[7..], lk[3..] ld[7..], koniec : NU; : OUU; : DFF; : DFF; : DFF; (lda[], ldb[], lb_r[], lk[]).clk = zegar; (ld[], koniec).clk = zegar; F start HEN lb_r[] = lb[]; lk[] = 8; ELSE F lk[] > HEN F ldb[] >= 5 HEN lda[] = (lda[2..], B""); -- bit lb[3] = ldb[] = (ldb[2..] + 3, lb_r[7]); ELSE lda[] = (lda[2..], B""); -- bit lb[3] = ldb[] = (ldb[2..], lb_r[7]); END F; lb_r[] = (lb_r[6..], B""); -- przesun w lewo lk[] = lk[] - ; -- zmniejsz lk ELSE lda[] = lda[]; ldb[] = ldb[]; ld[] = (lda[], ldb[]); koniec = B""; END F; END F; 5
Opis behawioralny (raport systemu) ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized bin2bcd EFK2RC24-3 9 % 4 3 % User ins: 9 ynik otrzymujemy po 8 taktach zegara więc jedna liczba konwertowana jest w około 27 ns, czyli szybkość konwersji wynosi 7,8 mln liczb na sekundę Z 6
Opis behawioralny (symulacja) LDA LDB LB + Z 7
Opis behawioralny... Spisuje się doskonale, ale czy rzeczywiście jest to zawsze najlepsza metoda syntezy. Są podobno doskonałe procedury syntezy logicznej, np. Espresso Z 8
.type fr.i 9.o 8.p * * *.e Konwerter Bin2BCD BCD na poziomie logicznym AHDL/VHDL MAX+LUS??? komórek Z 9
ablica prawdy bin2bcd Rozwiązanie bardzo szybkie gdyby nie ta ogromna ilość zasobów potrzebnych do realizacji Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized binbcd99 EKC- 7 8 % 3 28 % User ins: 7 8 Z 2
A jak sobie poradzą z tym konwerterem najnowsze algorytmy dekompozycji Z 2
ablica prawdy bin2bcd # Konwerter bin2bcd.type fr.i 7.o 8.p.......e Demain + ans2hdl LE " Decomposed project: bin2bcd "; % ranslated from DEMAN format % % arsaw University of echnology % % nstitute of elecommunications % SUBDESGN A ( in_, in_2, in_3, in_4 :NU; in_5, in_6, in_7 :NU; out_, out_2, out_3, out_4 :OUU; out_5, out_6, out_7, out_8 ) VARABLE g_, g_2, g_3, g3_ :OUU; :LCELL; :LCELL; g2_, g2_2 BEGN ---- Level ---- ABLE (in_, in_2, in_3, in_4) => (g_); B"" => B""; B"" => B"";... B"" => B""; B"" => B""; END ABLE; ABLE (in_6, g_, g2_, g2_2) => (out_7); B"X" => B"";... B"" => B""; END ABLE; END; Z 22
Realizacja Bin2bcd wg Demaina in_ in_2 in_3 in_4 in_ in_2 in_3 in_4 in_5 in_7 g_ g_2 g_3 in_6 g2_ g2_2 out_ out_2 out_4 out_5 out_6 out_7 out_3 out_8 Z 23
Bin2bcd wg Demaina i MAX+LUS Rozwiązanie jeszcze lepsze i mało komórek Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized binbcd99 EKC- 7 8 % 3 2 % User ins: 7 8 Z 24
.type fr.i 9.o 8.p * * *.e Konwerter Bin2BCD BCD na poziomie logicznym AHDL/VHDL MAX+LUS 3komórek DEMAN DEMAN 3 komórek (!!!) Z 25