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