Układ kombinacyjny

Układ kombinacyjny jest jednym z rodzajów układów cyfrowych. Charakteryzuje się tym, że stan wyjść zależy wyłącznie od stanu wejść; stan wyjść opisują funkcje boolowskie - w przeciwieństwie do układów sekwencyjnych, których stan wyjść zależy od stanu wejść oraz od poprzedniego stanu wyjść. W układach kombinacyjnych nie występuje sprzężenie zwrotne.
W układach cyfrowych ma miejsce niekorzystne zjawisko, nazwane hazardem, którego podłożem jest niezerowy czas propagacji (przenoszenia) sygnałów.
W układach synchronicznych zjawisko hazardu praktycznie nie występuje.
Przykłady układów kombinacyjnych:
multiplekser, demultiplekser
koder, dekoder
komparator
sumator
Multiplekser
Multiplekser należy do klasy układów kombinacyjnych. Należy do grupy układów scalonych o średniej skali integracji (MSI).
Multiplekser jest układem komutacyjnym (przełączającym), posiadającym k wejść informacyjnych (zwanych też wejściami danych), n wejść adresowych (sterujących) (zazwyczaj k=2n) i jedno wyjście y. Posiada też wejście sterujące działaniem układu oznaczane S (ang. strobe) lub e (ang. enable).
Jego działanie polega na połączeniu jednego z wejść xi z wyjściem y. Numer wejścia jest określany przez podanie jego numeru na linie adresowe A.
Jeśli na wejście strobujące (blokujące) S podane zostanie logiczne zero, to wyjście y przyjmuje określony stan logiczny (zazwyczaj zero), niezależny od stanu wejść X i A.
Demultiplekser
Demultiplekser należy do klasy układów kombinacyjnych.
Demultiplekser jest układem posiadającym jedno wejście x, n wejść adresowych, oraz k wyjść (zazwyczaj k=2n).
Jego działanie polega na połączeniu wejścia x do jednego z wyjść yi. Numer wyjścia jest określany przez podanie jego numeru na linie adresowe a0... an-1. Na pozostałych wyjściach panuje stan zera logicznego. W praktyce spotykane są jedynie demultipleksery w wyjściach zanegowanych, czyli na wybranym wyjściu jest stan a na wszystkich pozostałych 1 logiczna.
Jeśli na wejście strobujące (blokujące) S (ang. strobe) podane zostanie logiczne zero, to wyjścia yi przyjmują określony stan logiczny (zwykle zero), niezależny ani od stanu wejścia x, ani wejść adresowych.
Koder
Koder należy do klasy układów kombinacyjnych. Jest to układ posiadający k wejść oraz n wyjść (k=2n).
Jego działanie polega na zamianie kodu "1 z k" na naturalny kod binarny o długości n.
Jeśli na wejście strobujące (blokujące) S (ang. strobe) podane zostanie logiczne zero, to wyjścia yi przyjmują określony stan logiczny (zwykle zero), niezależny od stanu wejść x.
Dekoder
Dekoder należy do klasy układów kombinacyjnych. Jest to układ posiadający n wejść oraz k wyjść (k=2n). Jego działanie polega na zamianie naturalnego kodu binarnego (o długości n), lub każdego innego kodu, na kod "1 z k" (o długości k).
Niektóre źródła podają, że dekoderem jest także układ, który zamienia dowolny kod cyfrowy na kod wyświetlacza siedmiosegmentowego (poprawnie taki układ powinien być nazwany transkoderem).
Komparator
Komparator jest układem kombinacyjnym służącym do porównywania dwóch liczb dwójkowych (kod binarny)(wykonanie cyfrowe) albo dwóch napięć (wykonanie analogowe).
Komparator analogowy
Komparator analogowy porównuje napięcia (lub prądy) przyłożone do wejść, a na wyjściu podaje sygnał zależny od tego, który z sygnałów wejściowych jest większy. Komparatory wykonuje się w oparciu o wzmacniacze operacyjne.
Przykładem komparatora analogowego jest układ scalony LM339.
komparator cyfrowy
Jedynka na jednym z trzech wyjść komparatora informuje, w jakiej relacji względem siebie (mniejsze, równe, większe) są liczby podawane na jego wejścia.
Komparatory można łączyć kaskadowo, co umożliwia porównywanie liczb (w naturalnym kodzie dwójkowym lub w kodzie BCD) o dowolnej długości.
Sumator (układ logiczny) Wstęp
Sumator jest cyfrowym układem kombinacyjnym, który wykonuje operacje dodawania dwóch (lub więcej) liczb dwójkowych.
Rozróżnia się dwa główne rodzaje sumatorów:
z przeniesieniami szeregowymi (ang. ripple-carry adder)
z przeniesieniami równoległymi (ang. carry look-ahead adder)
Teoria
Tabelka dodawania dwóch liczb dwójkowych przedstawia się następująco:
ai
|
bi
|
ci-1
|
si
|
ci
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
gdzie:
ai -- pierwszy składnik sumy
bi -- drugi składnik sumy
ci-1 -- przeniesienie z poprzedniej pozycji
si -- suma
ci -- przeniesienie
Wyrażenia boolowskie opisujące sumę i przeniesienie:
ci = aibi + ci − 1(ai + bi)
Wprowadza się jeszcze oznaczenia:
gi = aibi -- grupa generacyjna
pi = ai + bi -- grupa propagacyjna
Można wówczas zapisać:
ci = gi + ci − 1pi
Sumator z przeniesieniami szeregowymi
Sumator ten zbudowany jest z bloków funkcjonalnych, które realizują funkcje si i ci. Bloki są połączone kaskadowo (ripple), tzn. wyjście ci jest łączone z wejściem ci − 1 bloku następnego.
Aby np. otrzymać bit sumy s4 uprzednio muszą zostać wyznaczone sygnały przeniesień c1, c2 oraz c3 (c3 zależy od c2, a ten zależy od c1).
Czas otrzymania ostatecznego wyniku jest więc ograniczony do dołu przez , gdzie n to liczba elementarnych bloków z których zbudowanych jest sumator.
Sumator z przeniesieniami równoległymi
W sumatorze przeniesieniami równoległymi bity przeniesień są wyznaczane równolegle. Wyrażenia opisujące ci są [rekursywnie] rozwijane, tzn. występujęce w nim składnik ci − 1 jest zastępowany stosownym wyrażeniem, np.:
c0 = const
c1 = g1 + c1 − 1p1 = g1 + c0p1
c2 = g2 + c2 − 1p2 = g2 + c1p1 = g2(g1 + c0p1)p2
Układ buduje się z dwóch głównych części:
bloków wyznaczających sumę si oraz grupy generacyjne gi i propagacyjne pi (które są liczone niezależnie!)
bloku generującego przeniesienia, zgodnie z rozwiniętymi wyrażeniami
W praktyce buduje się 4-bitowe sumatory tego typu, ze względu na znaczne skomplikowanie wyrażeń (a więc obwodów elektrycznych bloku nr 2).
Sumator z przeniesieniami równoległymi jest ok. 20-40% szybszy niż sumator z przeniesieniami szeregowymi
|