Sebastian Jaroszczuk 09.11.1998 Wrocław
III rok FIZYKA
prow. Dr F.Gołek
ĆWICZENIE NR 34
Temat : UKŁADY ARTMETYCZNO LOGCZNE.
Bramki logiczne
AND ( „i” koniunkcji)
AND
A B Wy
0 0 0
0 1 0
1 0 0
1 1 1
NOT AND - NAND (bramka AND z zanegowanym wyjściem)
A B Wy
0 0 1
0 1 1
1 0 1
1 1 0
AND z zanegowanymi wejściami
A B Wy
0 0 1
0 1 0
1 0 0
1 1 0
OR ( „lub” suma)
OR
A B Wy
0 0 0
0 1 1
1 0 1
1 1 1
NOT OR - NOR (bramka OR z zanegowanym wyjściem)
A B Wy
0 0 1
0 1 0
1 0 0
1 1 0
OR z zanegowanymi wejściami
A B Wy
0 0 1
0 1 1
1 0 1
1 1 0
EXOR
A B Wy
0 0 0
0 1 1
1 0 1
1 1 0
Sumatory
Półsumator - układ umożliwiający dodawanie bitów według tabeli :
A B ∑ C
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1
gdzie A, B są wejściami danych wprowadzanymi do półsumatora, ∑ - wynik sumowania, C - przeniesienie. Układ półsumatora składa się z dwóch bramek logicznych ExOR i AND połączonych według schematu :
Sumator jest to układ półsumatorów umożliwiając pobranie oprócz samych danych, także poprzedniego przeniesienia.
gdzie A, B są naszymi wprowadzanymi danymi (słowami), Cn-1 -pobranym przeniesieniem z poprzedniego bitu, Cn - zwróconym przeniesieniem. Układ sumatora działa według tabeli :
Cn-1 A B ∑ Cn
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Układy ALU, układ 74181
Jednostki arytmetyczno-logiczne (Arithmetic Logic Unit) są układami służącymi do realizacji operacji logicznych i arytmetycznych. Jednym z takich układów jest układ typu 74181 :
Układ ten posiada 22 wprowadzenia (14-wejść i 8-wyjść). Wejścia A0,A1,A2,A3 i B0,B1,B2,B3 są wejściami 4-bitowych danych, wejścia S0,S1,S2,S3 sterują według tabeli wyborem operacji :
Nr |
Wejście selekcjonujące S3 S2 S1 S0 |
Funkcje logiczne |
Funkcje arytmetyczne |
2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. |
L L L L L L L H L L H L L L H H L H L L L H L H L H H L L H H H H L L L H L L H H L H L H L H H H H L L H H L H H H H L H H H H |
F=Ā F=A∪B F=ĀB F=0 F=AB F=B F=A+B F=AB F=Ā∪B F=A+B F=B F=AB F=1 F=A∪B F=A∪B F=A |
F=A F=A+B F=A+B F=-1 F=A+AB F=(A∪B)+AB F=A-B-1 F=AB-1 F=A+AB F=A+B F=(A∪B)+AB F=AB-1 F=A+A F=(A∪B)+A F=(A∪B)+A F=A-1 |
Stan wejście MC określa charakter wykonywanej operacji. (stan wysoki - operacje logiczne, niski - arytmetyczne) A w przypadku wykonywania operacji arytmetycznych wykorzystywane jest także wejście C0.
Na wyjściach F0,F1,F2,F3 otrzymujemy wynik operacji logicznej, na wyjściach C4,F3,F2,F1,F0 wynik operacji arytmetycznych. Wyjścia P i G są stosowane do tworzenia wielopozycyjnych ALU. Ostatnie wyjścia A=B informuje w stanie wysokim o równości wprowadzonych słów.
Dekodery i kodery
Dekoder jest to element który przekształca jednoznacznie wektor wejściowy o n współczynnikach na wektor wyjściowy o k <= 2n współczynnikach. Każda ze współrzędnych wektora wejścia lub wyjścia przyjmuje wartości 0 lub 1. Dekoder pełny to dekoder o wektorze wyjścia k=2n.
Koder jest to urządzenie przeciwnie działające do dekodera. Kodery pracują wyłącznie w taki sposób, aby każdorazowo na jednym wejściu był wyróżniony sygnał. W przypadku gdy wyróżniony sygnał będzie wprowadzony na kilka wejść kodera, wyjście kodera nie są ściśle zdefiniowane - zależą od budowy kodera.
Rejestry
Podczas wykonywania operacji arytmetycznych często potrzebna jest zdolność przechowywania informacji. Do tego służą rejestry mogące zapamiętać wielobitowe słowa.
WYKONANIE ĆWICZENIA
Korzystając z zestawu UMILOG-2 zbudowałem układ według poniższego schematu.
Taki układ połączeń umożliwił mi kontrolowanie wejść i wyjść układu ALU. Wejście A ustaliłem jako stałe słowo o wartości A = 1010 (10), a wejście B = 0011 (3). Wejścia MC i CO umożliwiły zmianę operacji logicznych ( MC=1) na operacje arytmetyczne ( MC=0, C0=0 ) a wejście S dawało możliwości wyboru konkretnych funkcji ( według powyższej tabeli ). Na wyjściu F otrzymywałem konkretny wynik wybranej operacji. Ostatnie wyjścia A=B informowało o stanie w którym wprowadzone słowa na wejścia A i B były jednakowe i C4 dawało wartości stanu przeniesienia przy wykonywaniu funkcji arytmetycznych.
Do sprawdzenia poprawności układu AUL wykonałem teoretyczne obliczenia :
A = 1010 B = 0011
1. Ā = 0101 (negacja) A = 1010
2. A∪B = 1011 (or) A∪B = 0100 (negacja) A+B = 1101 (sumator)
3. ĀB = 0001 (and) A+B = 0110 (sumator)
4. 0 = 0000 -1 = 1111
5. AB = 0010 (and) AB = 1101 (negacja) AB = 1000 (and) A+AB = 0010 (sumator)
6. B = 1100 (negacja) A∪B = 1011(or) AB=1000(and) A∪B+AB = 0011
7. A+B = 1001 (exor) A-B-1= 0110 (sumator)
8. AB = 1000 (and) AB = 1000 (and) AB-1 = 0111 (sumator)
9. Ā∪B = 0111 (or) AB = 1000 (and) A+AB = 1100 (sumator)
10. A+B = 1001 (exor) A+B = 0110(negacja) A+B = 1101 (sumator)
11. B = 0011 A∪B = 1110(or) AB=0010(and) A∪B+AB = 0000
12. AB = 0010 (and) AB = 0010 (and) AB-1 = 0001 (sumator)
13. 1 = 0001 A+A = 0100 (sumator)
14. A∪B = 1110 (or) A∪B = 1011 (or) A∪B + A = 0101 (sumator)
15. A∪B = 1011 (or) A∪B = 1110 (or) A∪B + A = 1000 (sumator)
16. A = 1010 A-1 = 1001 (sumator)
logiczne arytmetyczne
( nawias - wykonana operacja )
które zestawiłem z wynikami otrzymanymi w doświadczeniu w tabeli :
Nr |
Operacja LOGICZNE |
Operacje ARYTMETYCZNE |
||||
|
Teoretyczne |
Doświadczalne |
Teoretyczne |
Doświadczalne |
||
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
0101 0100 0001 0000 1101 1100 1001 1000 0111 0110 0011 0010 0001 1110 1011 1010 |
0101 0100 0001 0000 1101 1100 1001 1000 0111 0110 0011 0010 1111 1110 1011 1010 |
Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Zły Dobry Dobry Dobry |
1010 1101 0110 1111 0010 0011 0110 0111 1100 1101 0000 0001 0100 0101 1000 1001 |
1010 1011 1110 1111 0010 0011 0110 0111 1100 1101 0000 0001 0100 0101 1000 1001 |
Dobry Zły Zły Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry Dobry |
WNIOSKI :
Jak widać z powyższej tabeli nie ma zgodności wyników doświadczalnych z teoretycznymi obliczeniami. Niezgodności wynika prawdopodobnie z niepoprawnych opisów działania funkcji podanych w tabeli dostarczonej wraz z ćwiczeniem (Np. nr 13 operacji logicznych według tabeli F=1, a według doświadczenia F=-1). Pozostałe przypadki dowodzą poprawności działania układu typu AUL.