uklady arytmetyczne
TRANSCRIPT
Układy cyfrowe (logiczne)
1
1.1. Układy arytmetyczne I Układami arytmetycznymi nazywa się układy, umoŜliwiające wykonywanie operacji arytme-
tycznych na liczbach, przedstawionych w zapisie dwójkowym. PoniewaŜ wszystkie podstawowe działania arytmetyczne: dodawanie, odejmowanie, mnoŜe-
nie i dzielenie, a takŜe wszystkie inne operacje matematyczne, wykonać moŜna przy zastosowaniu odpowiednich algorytmów za pomocą jednego tylko działania arytmetycznego - dodawania, pod-stawowym układem arytmetycznym jest układ, realizujący dodawanie, nazywany sumatorem.
Do układów arytmetycznych zalicza się ponadto układy do porównywania dwu liczb, nazy-wane komparatorami oraz uniwersalne układy arytmetyczno - logiczne, realizujące róŜne ope-racje arytmetyczne i logiczne.
1.1.1. Sumatory Sumatory to układy wykonujące dodawanie liczb, przedstawionych w zapisie dwójkowym. Na Rys. 1.1.1 przedstawiono schemat i tabelę stanów podstawowego układu do dodawania
dwóch jednobitowych liczb dwójkowych A i B, zwanego półsumatorem. Sumę arytmetyczną A+B oblicza się zgodnie z następującymi regułami:
0 + 0 = 0; 0 + 1 = 1; 1 + 0 = 1; 1 + 1 = 10 (dziesiętnie 2).
Wynik dodawania musi być przedsta-wiony przy uŜyciu dwóch bitów. Młodszy bit wyniku wyprowadzany jest na wyjście S, starszy bit wyniku na wyjście C. Wyjście S znajduje się w stanie 1 gdy jedno z wejść (A lub B) znajduje się w stanie 0 a drugie w sta-nie 1. Wyjście S związane jest zatem z wej-ściami A i B funkcją nierówności ALBO (Exclusive OR, XOR):
S A B= ⊕ . Na wyjściu C pojawia się 1 gdy jednocześnie A i B jest równe 1, wyjście C realizuje zatem funkję iloczynu logicznego (AND):
C A B= ∧ . Układ do dodawania dwóch jednobitowych liczb dwójkowych moŜna zatem zrealizować przy
uŜyciu jednej bramki Exlusive OR i jednej bramki AND (Rys. 1.1.1.c). W przypadku dodawania liczb o większej liczbie bitów wartość wyprowadzana przez wyjście
C układu do sumowania liczb jednobitowych musi być dodana do bitów na wyŜszej pozycji (prze-niesiona do wyŜszej pozycji). Wyjście C jest w związku z tym nazywane wyjściem przeniesienia (ang. Carry). Sumowanie bitów na pozycji i wymaga dodania wartości i-tych bitów liczb A i B oraz przeniesienia z niŜszej pozycji:
A i + Bi +Ci a układ realizujący takie dodawanie, zwany jednobitowym sumatorem pełnym, musi zawierać dodatkowe wejście, wprowadzające przeniesienie Ci (Rys. 1.1.2.a). Zgodnie z tabelą stanów układu (Rys. 1.1.2.b) wyjścia Si i Ci+1 realizują funkcje:
C
B A
S
Wej ścia Wyjścia
B A C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
b) a) A B c)
C=AB
S=A⊕B
Rys. 1.1.1. Schemat (a), tabela stanów (b) i sposób realizacji (c) układu do dodawania dwóch liczb jedno-
bitowych (pólsumatora).
Układy arytmetyczne
2
S A B C A B C A B C A B Ci i i i i i i i i i i i i= + + + ;
C A B C A B C A B C A B Ci i i i i i i i i i i i i+ −= + + +1 1 . które moŜna przekształcić do postaci:
S C A B A B C (A B A Bi i i i i i i i i i i= + + +( ) ) ;
S Ci i= ⊕ + ⊕ = ⊕ ⊕C A B A B A B Ci i i i i i i i( ) ( ) ; oraz:
C A B C A B C A B C A B Ci i i i i i i i i i i i i+ = + + +1 ;
C C A B A B A B C C A B C A Bi i i i i i i i i i i i i i i+ = + + + = + ⊕1 ( ) ( ) ( ) PowyŜsze równania potwierdzają wyczuwaną intuicyjnie moŜliwość realizacji jednobitowego
sumatora pełnego przy uŜyciu dwóch półsumatorów i dodatkowej bramki sumy logicznej (OR), sumującej przeniesienia obydwu półsumatorów (Rys. 1.1.2.c).
W celu dodawania liczb wielobitowych sumatory jednobitowe łączy się w większe zespoły. W najprostszym przypadku tworzy się kaskadę sumatorów z szeregowo połączonymi wejściami i wyj-ściami przeniesień (z tzw. przeniesieniami szeregowymi, Rys. 1.1.3). Wadą takiego po-łączenia jest ustalanie wyniku n-tego sumatora dopiero po ustaleniu kolejnych stanów wszystkich poprzedzających sumatorów, co opóźnia otrzy-manie wyniku. Lepszym roz-wiązaniem jest wstępne wy-znaczenie wszystkich przeniesień na podstawie wartości liczb wejściowych A i B przez tzw. blok generacji przeniesień i następnie jednoczesne dodanie bitów na wszystkich pozycjach przez zespół
Wejścia WyjściaBi Ai Ci Ci+1 Si
0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1
b)a) c)
Ci
C=AiBi
BiAi
S=Ai⊕Bi
Półsumator
Si = Ai⊕Bi⊕Ci
C=Ci(Ai⊕Bi)Półsumator
Ci+1 = AiBi + Ci(Ai⊕Bi)
Ci+1 Ci
BiAi
Si
ΣΣΣΣ
Rys. 1.1.2. Schemat (a), tabela stanów (b) i sposób realizacji (c) układu do sumowania i-tego bitu dwójkowych liczb wielobitowych (jednobitowego sumatora pełnego).
Cn+1 Cn
BnAn
Sn
ΣΣΣΣC2 C1
B1A1
S1
ΣΣΣΣC1 C0
B0A0
S0
ΣΣΣΣ
Rys. 1.1.3. Sumator n-bitowy z przeniesieniami szeregowymi.
Układy arytmetyczne
3
sumatorów (Rys. 1.1.4). Układy takie nazywane są sumatorami z przeniesieniami równoległymi (ang. look ahead).
W rodzinie układów scalonych TTL i TTL LS dostępne są sumatory dwójkowe 4-bitowe: 7483 (starego typu, z przeniesieniami szeregowymi) oraz 7483A, 74LS83A i 74LS283 (z przenie-sieniami równoległymi). Symbol takiego sumatora przedstawiono na Rys. 1.1.5. Tab. 1.1.1 przed-stawia fragment tabeli stanów układu.
1.1.2. Komparatory Komparatory to układy do porównywania liczb, przedstawionych w zapisie dwójkowym. Informację o równości dwóch liczb jednobitowych a i b uzyskać moŜna za pomocą funkcji:
( )a b a b a b a b= = ∨ = ⊕ . która przyjmuje wartość 1 wtedy, gdy a=b=1 lub a=b=0. Funkcją taką jest negacja funkcji ALBO (Exclusive OR). Układ do badania równości liczb wielobitowych zbudować moŜna z realizujących powyŜszą funkcję dwuwejściowych bramek Exclusive NOR, badających równość poszczególnych
Cn+1
Cn
BnAn
Sn
ΣΣΣΣC1
B1A1
S1
ΣΣΣΣC0
B0A0
S0
ΣΣΣΣ
BnAn B1A1 B0A0
C0 blok generacji przeniesień
Rys. 1.1.4. Sumator n-bitowy z przeniesieniami równoległymi.
S2
B3A3
CIΣΣΣΣ
B2A2 B1A1 B0A0
S1 S0S3
CO
Rys. 1.1.5. Scalony dwójkowy sumator 4-bitowy 7483, 7483A, 74LS83A lub 74LS283.
Tab. 1.1.1. Fragment tabeli stanów sumatora 7483 ... 74LS283.
Wejścia Wyjścia działanie B3 B2 B1 B0 A3 A2 A1 A0 CI CO S3 S2 S1 S0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 10+9=19 0 1 1 0 0 1 0 1 1 0 1 1 0 0 CI+5+6=12
Układy arytmetyczne
4
bitów i wielowejściowej bramki iloczynu logicznego AND, zbierającej wyniki tych badań (Rys. 1.1.6. Na wyjściach bramek Ex NOR uzyskuje się 1 gdy bit ai = bi. Na wyjściu y występuje 1 gdy bity na wszystkich pozycjach są sobie równe.
Informację o relacjach a>b lub a<b dwóch liczb jednobitowych uzyskać moŜna za pomocą funkcji:
( )a b ab> = ; ( )a b ab< = gdyŜ jednobitowa liczba a jest większa od jednobitowej liczby b tylko wtedy, gdy a=1 a b=0. Funkcje takie moŜna zrealizować przy uŜyciu dwuwejściowej bramki AND i negacji. Relacje A>B lub A<B liczb wielobitowych określają relacje a>b lub a<b między bitami na najwyŜ-szej pozycji, na której wartości bitów są róŜne. Relacje między bitami niŜszych pozycji są nieistotne.
Scalonym komparatorem, wyznaczającym re-lacje:
A<B, A=B lub A>B dla dwóch 4-bitowych liczb A i B jest układ 74LS85 o symbolu przedstawionym na Rys. 1.1.8. Wynik porównania znaczony jest stanem 1 na jednym z trzech osobnych wyjść.
Układ wyposaŜony jest w wejścia I A B< , I A B= ,
I A B> , umoŜliwiające kaskadowe łączenie kilku komparatorów w celu porównywania liczb o więk-szej liczbie bitów (Rys. 1.1.7). Wejścia te łączy się z odpowiednimi wyjściami poprzedzającego kompara-tora, porównującego mniej znaczące bity liczb. W komparatorze porównującym bity na najniŜszych
y
a2b2
a1b1
a0b0
Rys. 1.1.6. Przykład reali-zacji komparatora 3-
bitowego.
A<BA=BA>B
IA<B
IA=B
IA>B
B0
B1
B2
B3
A0
A1
A2
A3
A<BA=BA>B
IA<B
IA=B
IA>B
B4
B5
B6
B7
A4
A5
A6
A7"1"
74LS8574LS85
Rys. 1.1.7. Komparator liczb 8-bitowych z dwóch połączonych kaskadowo układów
74LS85.
A<BA=BA>B
IA<B
IA=B
IA>B
B0
B1
B2
B3
A0
A1
A2
A3
Wejścia komparacyjneWejścia do połączeń
kaskadowych Wyjścia
A3 , B3 A2 , B2 A1 , B1 A0 , B0 A<B A=B A>B A<B A=B A>BA3<B3 x x x x x x 1 0 0A3>B3 x x x x x x 0 0 1A3=B3 A2<B2 x x x x x 1 0 0A3=B3 A2>B2 x x x x x 0 0 1A3=B3 A2=B2 A1<B1 x x x x 1 0 1A3=B3 A2=B2 A1>B1 x x x x 0 0 1A3=B3 A2=B2 A1=B1 A0<B0 x x x 1 0 1A3=B3 A2=B2 A1=B1 A0<B0 x x x 0 0 1A3=B3 A2=B2 A1=B1 A0=B0 1 0 0 1 0 0A3=B3 A2=B2 A1=B1 A0=B0 0 1 0 0 1 0A3=B3 A2=B2 A1=B1 A0=B0 0 0 1 0 0 1
b)a)
74LS85
Rys. 1.1.8. Komparator scalony typu 74LS85: a) symbol b) tabela stanów.
Układy arytmetyczne
5
pozycjach wejścia te ustawia się na stałe w stan: I A B< = 0 , I A B= = 1, I A B> = 0 ,
co neutralizuje wpływ tych wejść na wynik porównania. Stan wejść I A B< , I A B= , I A B> wpływa na stan wyjść komparatora tylko gdy porównywane przez komparator 4-bitowe części liczb są równe. Stan tych wejść jest wówczas po prostu przenoszony na wyjścia. W przypadku A<B lub A>B wynik porównania mniej znaczącej części liczb przez poprzedzający komparator nie ma znaczenia.
1.1.3. Uniwersalna jednostka arytmetyczno-logiczna (ALU) W rodzinie układów scalonych TTL i TTL LS produkowana jest uniwersalna jednostka aryt-
metyczno-logiczna 74LS181 (74181), zwana ALU (ang. Arythmetic Logic Unit). Jednostka taka umoŜliwia wykonywanie róŜnorodnych operacji arytmetycznych i logicznych na dwóch 4-bitowych liczbach dwójkowych. Liczby, na których wykonywane są operacje doprowadza się do wejść A3..A0 i B3..B0 (Rys. 1.1.9). Rodzaj operacji programuje się za pomocą wejść M i S3..S0. Przy M=1 wyko-
nywane są operacje logiczne, przy M=0 wykonywane są operacje arytmetyczne. Rodzaj operacji określa stan wejść S3..S0. Cztery linie wejściowe S3..S0 umoŜ-liwiają wybór 16-tu róŜnych funkcji. Układ wykonuje zatem 16 róŜnych funkcji logicznych i 16 róŜnych funkcji arytmetycznych (łącznie 32 róŜne funkcje). Wynik operacji ustawiany jest na wyjściach F3..F0 i
wyjściu przeniesienia Co . Podstawowe wykonywane funkcje logiczne to:
negacja A lub B , suma logiczna A B∨ , iloczyn lo-giczny A B∧ , róŜnica symetryczna A B⊕ i róŜne
funkcje kombinowane: A B∧ , A B∨ , A B∧ ,
A B∨ , A B⊕ itp. Funkcje logiczne wykonywane są na pojedynczych bitach, tzn. kaŜda funkcja wykony-
wana jest niezaleŜnie i równolegle na wszystkich bitach Ai i Bi (i = [0,3]). Podstawowe wykonywane funkcje arytmetyczne to: suma arytmetyczna A+B, róŜnica arytme-
tyczna A-B-1 oraz mieszane funkcje logiczno-arytmetyczne: (A B∨ )+A, A+( A B∧ ) itp. Przy
funkcjach arytmetycznych uwzględniany jest stan wejścia przeniesienia Ci , a zatem funkcje te re-
alizowane są jako A+B+Ci lub A-B-1+Ci . Za pomocą funkcji A-B-1(+Ci ) moŜna uzyskać bezpo-średnio wynika A-B przy ustawieniu na wejściu przeniesienia () stanu 0.
Wyjście A=B ustawiane jest w stan 1 przy F3F2F1F0 = 1111. MoŜna to wykorzystać do po-
równywania liczb A i B za pomocą funkcji A-B-1 (przy Ci =0) która daje wynik F3F2F1F0 = 1111
(dziesiętnie -1) przy równości A=B. Przy wykorzystaniu wyjścia Co za pomocą tej samej funkcji moŜna ustalić zaleŜności A>B i A<B.
Układ 74LS181 zaopatrzony jest w blok generacji przeniesień równoległych, w związku z czym jest bardzo szybki. Do operacji na liczbach o większej liczbie bitów moŜna łączyć kaskadowo
kilka układów tego typu. W najprostszym przypadku wejście przeniesienia Ci układu operującego
F2
B3A3
ALU74LS181
B2A2 B1A1 B0A0
F1 F0F3
CO
A=B
GP
Ci
MS3
S2
S1
S0
Rys. 1.1.9. Uniwersalna jednostka arytme-tyczno - logiczna (ALU) 74LS181.
Układy arytmetyczne
6
na starszych czterech bitach liczby łączy się przy tym z wyjściem Co układu operującego na młod-szych czterech bitach liczby. Przeniesienia między kaŜdą czwórką bitów są wówczas przekazywane szeregowo. MoŜna równieŜ zastosować równoległą generację przeniesień między kolejnymi czwór-kami bitów, realizowaną za pomocą specjalnych układów generacji przeniesień równoległych 74LS182. Do połączenia z tymi układami słuŜą wyjścia G i P. RównieŜ wyjścia A=B, które są wyj-ściami z otwartym kolektorem, łączy się równolegle do wspólnego rezystora, otrzymując sygnaliza-cję stanu A = B liczb o długości większej niŜ 4 bity.
I Opracował dr inŜ. Grzegorz Stępień