Technika Cyfrowa 1 Wykład 7 Cyfrowe bloki funkcjonalne
Transkrypt
Technika Cyfrowa 1 Wykład 7 Cyfrowe bloki funkcjonalne
JS TC 1 IV CYFROWE BLOKI FUNKCJONALNE JS TC 1 1 UKŁADY KONWERSJI KODÓW Technika Cyfrowa 1 1.1 Kody Wykład 7 Cyfrowe bloki funkcjonalne Kod = sposób reprezentacji sygnału cyfrowego za pomocą grupy sygnałów binarnych: sygnał cyfrowy ↔ wektor bitowy Gdzie np. sygnał cyfrowy: dr inż. Jarosław Sugier [email protected] • znaki A..Z, a..z, 0..9, znaki specjalne, interpunkcyjne i inne => tzw. kody alfanumeryczne; IIAR, pok. 227 C-3 • cyfry 0..9 => tzw. kody dwójkowo-dziesiętne; • wartość całkowita z pewnego przedziału, np. <–128,+127>; • liczba z częścią ułamkową; • inne... 7-1 JS TC 1 1.1.1 Klasyfikacje kodów n - długość słowa kodowego (liczba bitów wektora) P - pojemność kodu (liczba wszystkich występujących słów w kodzie) 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 JS TC 1 1.1.2 Kody dwójkowo-dziesiętne „Jak zakodować binarnie cyfry 0...9?” P = 10 n = 4 ... 10 • Kody zupełne i niezupełne P = 2n ⇒ kod zupełny P < 2n ⇒ kod niezupełny • Kody systematyczne (np. naturalny kod binarny) i niesystematyczne (np. alfanumeryczne) • Kody wagowe: każda pozycja w słowie kodowym (bit) ma określoną i niezmienną wartość - tzw. wagę. Np. 3-bitowy naturalny kod binarny (NKB): Wagi n=3 4 2 1 P = 8 = 2M ⇒ kod zupełny 0 1 2 3 4 5 6 7 7-2 Najpopularniejsze (n = 4): 0 1 2 3 4 5 6 7 8 9 Naturalny BCD (8421) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Aikena (2421) (2*421) (7421) 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1001 1010 Plus 3 (+3, excess 3, XS3) niewagowy! 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 7-3 7-4 JS TC 1 1.1.3 Kody o stałej liczbie jedynek: „k z n” JS TC 1 1.1.5 Kod Gray’a • Zupełny kod niewagowy, w którym każde dwa kolejne słowa kodowe (także pierwsze i ostatnie) różnią się między sobą dokładnie jednym bitem. W słowie n bitowym dokładnie k bitów jest równych 1 • Jeśli k = 1 ⇒ kod „1 z n”, zwany też kodem pierścieniowym lub prostym. n=1 0 1 • Dla kodów pierścieniowych P = n. Np. kod 1 z 4: 0001 0010 0100 1000 1.1.4 Kod pseudopierścieniowy (Johnsona) • Systematyczny, ale niewagowy. • P = 2n. Np. kod 4b (P = 8): 1.1.6 Inne kody 0000 0001 0011 0111 1111 1110 1100 1000 n=2 n=3 0 0 1 1 0 0 0 0 1 1 1 1 0 1 1 0 00 01 11 10 10 11 01 00 • Detekcyjne i korekcyjne: dodany nadmiar umożliwia wykrycie lub wykrycie i korekcję określonej klasy błędów. Np. dodawanie bitu parzystości… • Alfanumeryczne, np. kod ASCII (7-bitowy); w komputerach PC stosowany 8-bitowy tzw. kod ASCII rozszerzony (extended ASCII), znaki o kodach powyżej 127 bywają różne. • Kody kompresji danych... 7-5 7-6 1 JS TC 1 1.2 Układy konwersji kodów JS TC 1 Np. układ scalony TTL 7442 - dekoder kodu BCD 8421 UKŁAD Kod WE Kod WY KOMBINACYJNY A B C D • Podstawowa klasyfikacja: 42 Enkoder (lub Koder): kod WE jest kodem prostym („1 z n”). Dekoder: kod WY jest kodem prostym („1 z n”). A 0 0 0 0 0 1 2 3 4 5 6 7 8 9 C 0 0 1 1 D 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 Transkoder: żaden z kodów WE ani WY nie jest „1 z n”. • Enkoder priorytetowy: jeśli na WE zamiast kodu 1 z n pojawi się więcej niż jedna jedynka, ustalona ranga priorytetów WE decyduje która z nich określa odpowiedź układu (np. najstarsza). B 0 0 0 0 1 1 1 1 1 1 2 1 1 0 1 ... 1 1 1 ... 1 3 1 1 1 0 4 1 1 1 1 5 1 1 1 1 6 1 1 1 1 7 1 1 1 1 8 1 1 1 1 9 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 • Dekoder niepełny. • Dekoder pełny: kod WE jest zupełny (czyli m = 2n, gdzie n = liczba WE, m = liczby WY). 7-7 JS TC 1 1.3 Dekodery NKB Ang. „k-to-n decoders” (2-to-4, 3-to-8 etc.) 7-8 JS TC 1 Dekodery „3 na 8” C B A Dekodery „2 na 4” A LSB A LSB A m0 MSB B m1 m0 = CBA m1 = CBA m1 m2 = CBA m2 m2 m3 A m4 m4 = CBA (b) m5 = CBA (b) WY aktywne „0” m6 = CBA m1 (c) realizacja uproszczona A m6 B m7 A m0 MSB B m5 A C m7 = CBA LSB A (b) (a) m2 m3 (c) Dekoder „4 na 16” (a) postać kanoniczna (b) regularna struktura na 2WE bramkach iloczynu (+ negacje zmiennych WE) 7-9 7-10 JS TC 1 JS TC 1 - struktura matrycowa: m0 Dekoder „2 na 4” z sygnałem Enable m1 m2 m3 x0 m4 m5 m6 y0 x1 m7 y0 x0 k1 D MSB A B m3 = CBA m3 (a) 2-to-4 A C B m3 C m1 A m2 (a) postać kanoniczna k0 m0 B m0 MSB B y1 m8 m9 m10 m11 m12 m13 m14 m15 y1 x1 k2 y2 k3 l1 y3 y3 l2 l0 E l3 (a) 2-to-4 B y2 E (b) A LSB 7-11 7-12 2 JS TC 1 Kaskadowe łączenie dekoderów I0 x0 I1 x1 y0 O0 y1 O1 y2 O2 y3 O3 y0 O4 y1 O5 y2 O6 y3 O7 y0 O8 y1 O9 y2 O10 y3 O11 y0 O12 y1 O13 y2 O14 y3 O15 • Multiplekser: układ kombinacyjny umożliwiający wybór i przesłanie na swoje wyjście sygnału z jednego z n WE informacyjnych; numer WE określany jest stanem WE adresowych (sterujących). • Zwykle numer WE podawany jest w NKB jako liczba m bitowa; n = 2m. E (a) NOT + 2 x „2 na 4” ⇒ „3 na 8” (b) 4 x „2 na 4” ⇒ „4 na 16” z Enable x0 x1 I2 x0 I3 x1 • Demultiplekser: układ kombinacyjny umożliwiający wybór i przesłanie sygnału ze swojego wejścia na jedno z n WY; numer WY określany jest stanem WE adresowych (sterujących) – j.w. y0 E y1 y2 1 JS TC 1 1.4 Multipleksery i demultipleksery E y3 I0 x0 I1 x1 y0 O0 y1 O1 y2 O2 y3 O3 y0 O4 y1 O5 y2 O6 y3 O7 x0 x1 E I2 • Przykład: multipleksowany (przełączany, komutowany) układ transmisji danych: E WE x0 x1 x0 x1 E E (a) WY Numer WE Multiplesker (b) Numer WY Demultiplesker Linia przesyłowa 7-13 7-14 JS TC 1 JS TC 1 1.5 Realizacje funkcji boolowskich na układach konwersji kodów • Idea realizacji: dekoder NKB bramkujący WE informacyjne. Np. układy czterokanałowe (n = 4, m = 2): 1.5.1 Wykorzystanie multiplekserów • Realizacja funkcji n zmiennych na multiplekserze 2m kanałowym ⇒ podanie na jego wejścia funkcji n – m zmiennych. B A Przykłady (multipleksery 4-kanałowe, 2 WE adresowe): B A a) n – m = 0 „1” A B A B Dekoder f(0, 0) f(0, 1) f(1, 0) f(1, 1) Dekoder „0” | „1” b) n – m = 1 f(0, 0, c) f(0, 1, c) f(1, 0, c) f(1, 1, c) f(a, b, c) a b „0” | „1” | c | /c ab c 00 0 00 1 01 0 01 1 10 0 10 1 11 0 11 1 a → b (a implikuje b) f(a, b) „0” a b a b 7-15 7-16 JS TC 1 JS TC 1 1.5.2 Wykorzystanie dekoderów f1 0 0 0 1 1 1 1 0 „0” c „1” /c A. Postać kanoniczna sumy iloczynów (jedynki funkcji) f1(a, b, c) Np.: f (Q, X, P) = Σ(000, 001, 100, 110, 111) a b 0 P c) n – m > 1 – przykładowy przypadek szczególny: X f2(a, b, c, d) = Σ(0001, 0011, 1000, 1001, 1011, 1100) a 0 0 1 1 1 1 bc 00 01 00 10 00 01 d 1 1 0 0 1 1 f2 1 1 1 1 1 1 Q A 1 B 2 C 3 4 „0” /b /c /b f2(a, b, c, d) 0 P X f(Q, f (Q,X,X,P)P) ⇒ Q A 1 B 2 C 3 ff(Q, (Q,X,X,P)P) 4 5 5 6 6 7 7 a d 7-17 7-18 3 JS TC 1 B. Postać kanoniczna iloczynu sum (zera funkcji) Najogólniej: f (Q, X, P) = Π(010, 011, 101) 0 P X Q A 1 B 2 Rejestr n-bitowy = grupa n przerzutników o wspólnych sygnałach sterujących, służąca do przechowywania (pamiętania) n wartości binarnych. 0 P X ff(Q, (Q,X,X, P) P) 3 C JS TC 1 2 REJESTRY 4 Q ⇒ A 1 B 2 C 3 f (Q,X,X, f(Q, P) P) • Sposób wprowadzania / wyprowadzania informacji: a) szeregowy (serial): WE WY CLK 4 5 5 6 6 7 7 WE b) równoległy (parallel): Load WY Podsumowanie • Klasyfikacja: PIPO (Parallel In – Parallel Out) PISO (Parallel In – Serial Out) SIPO (Serial In – Parallel Out) SISO (Serial In – Serial Out) Jedna uniwersalna struktura + zmieniana dla konkretnej funkcji sieć połączeń WE (multiplekser) lub WY (dekoder) ⇓ Przydatność w architekturze programowalnych układów logicznych. 7-19 7-20 JS TC 1 JS TC 1 2.1 Rejestry równoległe 2.2 Rejestry przesuwne Np. 4-bitowy rejestr PIPO = bufor 4-bitowy: • Jedno i dwukierunkowe. A B C • Zwykle kaskada przerzutników typu D z różnymi konfiguracjami połączeń. Np. 4b rejestr jednokierunkowy: D WE równoległe D Q D Q D Q D Q Load Q Q Q Q Load QA QB QC Serial In QD D P C Q D P C Q D P Q C D P Q Serial Out C Clk • 4 przerzutniki D o wspólnym WE zegarowym. /Clear • W zależności od rodzaju przerzutników D może to być bufor typu zatrzask („latch”) lub rejestr synchroniczny. WY równoległe • Ładowanie zawartości zboczem narastającym lub opadającym. • Load aktywne poziomem wysokim, Clear – poziomem niskim. • Przed każdym zapisem (Load) wymagane wyzerowanie rejestru (Clear). 7-21 7-22 JS TC 1 JS TC 1 3 LICZNIKI • Układ wpisu równoległego bez konieczności uprzedniego kasowania: Układy sekwencyjne, służące do zliczania i zapamiętywania liczby impulsów. WE równoległe • Automaty o WE synchronizującym Clk, którego impulsy podlegają zliczaniu (plus inne WE sterujące, np. zerujące, bramkujące WE itp.), i o sygnale wyjściowym Y = A (a więc automat Moore’a). Load Serial In D P C Q D P C Q D P C Q D P Q • Liczba stanów automatu – pojemność licznika = N. Dla liczników w NKB najczęściej N = 2n, n = liczba WY licznika. Serial Out • Jeśli w grafie występuje przejście qN-1 → q0 – licznik „modulo N”. C • Jeśli nie – licznik „do N” oraz osobny sygnał zerujący. Clk • Jeśli w grafie występują przejścia zwrotne pomiędzy sąsiednimi stanami – licznik rewersyjny (dodatkowe sygnały sterujące); jeśli nie – licznik jednokierunkowy (zliczający w przód / wstecz). • Podstawowy podział: liczniki asynchroniczne (≈ prostsze) i synchroniczne (≈ szybsze). 7-23 7-24 4 JS TC 1 JS TC 1 3-bitowy asynchroniczny licznik NKB (modulo 8) = kaskada trzech dwójek liczących: 3.1 Liczniki asynchroniczne (szeregowe) Q0 • Podstawowa komórka liczników asynchronicznych: tzw. dwójka licząca - na przerzutniku typu T, JK lub D: J „1” Q Q1 „1” Q T Q0 Q J „1” Clk Q0 D Q K Q „1” K J K Clk Q0 Q0 Clk Clk J Q2 Q Clk K „1” Q Q1 Q Q Q2 Clk • Podstawowa wada liczników asynchronicznych: propagująca się kaskadowo lawina przełączeń przerzutników przy przejściu np. ze stanu 111 do 000: Q0 Clk • Dwójka licząca = dzielnik częstotliwości przez 2 przełączany zboczem opadającym. Q0 • Naturalny element konstrukcji liczników w NKB. Q2 Rzeczywista sekwencja stanów: Q1 111 Æ 110 Æ 100 Æ 000 τ = czas przełączania się przerzutnika t 0 τ 2τ 3τ 7-25 7-26 JS TC 1 • Zliczane impulsy podawane równolegle na wejścia synchronizujące wszystkich przerzutników - nie ma kaskadowego przełączania się kolejnych przerzutników! • Dodatkowe układy logiczne tzw. generacji przeniesienia. Warunek przełączania się bitu Qk: Tk = Q0 ⋅ Q1 ⋅ ... ⋅ Qk-1 = 1 Q0 Q2 „1” J Q K Q2 Q J J K Q0 Q J K szybsze • Alternatywa - konfiguracja szeregowa (bramki tylko dwuwejściowe, ale wolniejsza): Tk = Tk-1 ⋅ Qk-1, T0 = 1. Clk Q1 opóźnienia, • O częstotliwości pracy decyduje szybkość układu generacji przeniesienia; na rysunku powyżej pokazana jest konfiguracja tzw. przeniesienia równoległego (szybsza, ale na wielowejściowych bramkach AND): Tk = Q0 ⋅ Q1 ⋅ ... ⋅ Qk-1 Q1 Q0 JS TC 1 • Zaleta liczników synchronicznych: mniejsze przełączanie się, większa częstotliwość pracy. 3.2 Liczniki synchroniczne „1” K Q J J K Clk Q1 Q2 Q J K Q J K K Clk 7-27 JS TC 1 3.3 Zliczanie wstecz 7-28 Q0 Gate Clk JS TC 1 Rewersyjny licznik asynchroniczny (idea): Q1 Q2 Up Up / Down Q0 J Q J Q J Q K Q K Q K Q Clk Q1 Q2 …0 7 6 5 4 3 2 1 0 … Down • Liczniki asynchroniczne – przełączanie bitu Qk zboczem narastającym Qk-1. Rewersyjny licznik synchroniczny (idea; szeregowa generacja przeniesienia): • Liczniki synchroniczne – warunek przełączania się bitu Qk: (generacja równoległa) Tk = /Q0 ⋅ /Q1 ⋅ ... ⋅ /Qk-1 = 1 lub Tk = Tk-1 ⋅ /Qk-1 = 1 (generacja szeregowa) • Przełączanie bitu Q0 wciąż opadającym zboczem zegara ⇒ problemy z kaskadowym łączeniem liczników, sygnał Clk nie może być traktowany jako „Q-1” bit słowa licznika. 7-29 Q0 Q1 Q2 Up / Down J Q J Q J Q K Q K Q K Q „1” Clk 7-30 5 JS TC 1 JS TC 1 • Elementy sumatora równoległego – półsumator oraz sumator pełny: 4 UKŁADY ARYTMETYCZNE A 4.1 Sumatory C • Prawie wszystkie obliczenia matematyczne dają się sprowadzić do działań arytmetycznych, te zaś dają się sprowadzić do dodawania. A 0 0 1 1 B ∑/2 B 0 1 0 1 C 0 0 0 1 S 0 1 1 0 Ai Bi Ci S=A⊕B C=A⋅B S Ci-1 Si Si = Ai ⊕ Bi ⊕ Ci-1 Ci = Ai ⋅ Bi + Ai ⋅ Ci + Bi ⋅ Ci • Podstawowy podział: a) szeregowe (był przykład syntezy abstrakcyjnej automatu) – układy sekwencyjne; ∑ Ai Bi Ci-1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Ci 0 0 0 1 0 1 1 1 Si 0 1 1 0 1 0 0 1 • Kompletny kaskadowy 4-bitowy sumator równoległy: b) równoległe – układy kombinacyjne. A3 B3 C3 ∑ S3 7-31 A2 B2 C2 ∑ S2 A 1 B1 C1 ∑ S1 A0 B0 C0 ∑/2 S0 7-32 JS TC 1 Generacja przeniesienia w sumatorach kaskadowych • Szybkość propagacji przeniesienia w kaskadzie decyduje o szybkości pracy całego sumatora. • Na rysunku powyżej, przy czysto szeregowej propagacji przeniesienia pomiędzy poszczególnymi stopniami, całkowity czas sumowania jest wprost proporcjonalny do długości sumowanych słów. • Aby zwiększyć maksymalną częstotliwość pracy sumatora konstruuje się specjalne szybkie układy generacji przeniesień, w których szeregowa propagacja jest eliminowana. • Każdy bit – tzw. stopień sumatora – znajduje się w jednym z trzech stanów: a) generacji przeniesienia zerowego (Ci = 0), b) generacji przeniesienia jedynkowego (Ci = 1), c) propagacji przeniesienia (Ci = Ci-1). 7-33 6