Jednostka arytmetyczno-logiczna

|



Chociaż dziś nikt jej nie używa, jest ona ogniwem w łańcuchu ewolucji elektroniki cyfrowej, łączącym bramkę logiczną z mikroprocesorem.



Co to za czort?


Weźmy na przykład bramkę AND. Ma ona dwa wejścia, jedno wyjście i koniec. Bramka AND jest tylko bramką AND i niczym więcej. Tak samo bramki OR, NAND, NOR, EXOR, EXNOR pełnią tylko jedną funkcję. Budując zatem zaawansowane układy, trzeba by mieć całą garść różnorakich bramek, które oczywiście zajmują dużo miejsca, ciągną dużo prądu i są drogie. Ktoś wpadł na pomysł, by stworzyć bramkę uniwersalną, która mogła by wykonywać wszystkie te funkcje.

Elementy elektroniczne, zestawy prototypowe, Arduino

Takim właśnie układem jest 4-bitowa jednostka arytmetyczno-logiczna 74181 (zwana dalej ALU). Realizuje 16 funkcji logicznych, m.in. potwierdzenie A, B, negację A, B, AND, OR, IF, NAND, NOR, EXOR, EXNOR i kilka innych, powstałych poprzez połączenie wymienionych. Można także zrealizować 16 funkcji arytmetycznych, jak pokazuje tabelka:

Wybór żądanej funkcji odbywa się poprzez podanie odpowiednich sygnałów na wejścia funkcyjne S0 S1 S2 S3 i pomocnicze M (wejście trybu pracy: logicznego lub arytmetycznego) oraz wejście Cn (przeniesienie nadmiaru na poprzedniego układu systemu).

W trybie logicznym, ALU zachowuje się jak cztery niezależne od siebie bramki logiczne - np. wejścia A1 i B1 sterują tylko sygnałem F1. W trybie arytmetycznym, stan wejść reprezentuje dwie liczby binarne od 0 do 15.


Aby było widać gdzie jakie są stany, dałem diodę* na każde wejście i wyjście. Zapalona dioda oznacza 1, zgaszona 0. Umiejscowienie diod jest dobrane nie bez powodu - kolumny odpowiadają kolejnym potęgom dwójki: 16, 8, 4, 2, 1; a wiersze, to wejście A, B i wynik. Taka konfiguracja diod przypomina dodawanie w słupku znane ze szkoły. Szczegóły działania tego wynalazku wyjaśnia film







Co było dalej?


Układy ALU były stosowane w latach 60-tych i 70-tych. Jednak mimo fajnej idei działania miały swoje wady. ALU to układ kombinacyjny, który nie ma pamięci. Nie potrafi też zrobić nic ambitniejszego niż 32 standardowe operacje. Aby układ wykorzystać w praktyce, trzeba było dołączyć do niego pamięć operacyjną, coś co będzie sterowało wejściami i wyjściami i jakąś pamięć z programem do wykonania. Na początku lat 70-tych w firmie Intel wpadli na pomysł, by wszystkie te układy wepchnąć do jednej obudowy, i tak powstał pierwszy mikroprocesor Intel 4004. Obecnie nikt już nie stosuje ALU w postaci pojedynczego układu, ale są one częścią składową wszystkich zaawansowanych mikroprocesorów.

Moduł prototypowy X3-DIL64

Ciekawostka - układy 74181 można było łączyć dla uzyskania systemów o większej liczbie bitów niż 4. Układem 74182 można było połączyć tyle ALU, by uzyskać system 64 bitowy.

*Diody pochodzą z mrugającego serduszka, które kiedyś robiłem dla mojej byłej kochanej :) serduszko nie działało, więc Elcia musiała zadowolić się czymś innym, a niedorobiony układ na 2 lata trafił do szuflady. Niedawno go znalazłem i wymyśliłem, że przerobię romantyczny prezent na zimny układ logiczny :)

Pliki do pobrania:

19 komentarze :

e.bassior pisze...

heh przypomniały mi się czasy technikum gdzie profesur próbował wytłumaczyć nam co to takiego jest to ALU, oczywiście nikt nie kumał o co kaman Razz

Przydałaby się wtedy taka zabaweczka, może było by łatwiej

e.RMB13 pisze...

A ja mam pytanie Very Happy
Co znaczy w tej tabelce to "IF" ? Czyżby to była jakaś nowa funkcja logiczna Very Happy

e.serferek pisze...

no generalnie rzecz biorąc, to jak się nie mylę, to masz w tej tabelce trochę błędów.
1111 AND 1010 = 1010, a nie 1011
1111 OR 1010 = 1111, a nie 1110
w tym momencie podobnie będzie dla nand'a i nor'a... czyli odpowiednio 0101 oraz 0000
jeżeli chodzi o xor'a i xnor'a to:
1111 XOR 1010 = 0101
1111 XNOR 1010 = 1010

Proponuję również przyjrzeć się układom PLD oraz FPGA.

e.rafalkosc pisze...

Jak na mój gust, to ta tabelka ma być ściągą kodów działań, a nie wynikami działań.

e.tomekMMT pisze...

asne jest, że to tablica wyboru realizowanej funkcji. IF to realizacja sumy logicznej A/+B

e.DARK$$ pisze...

Genialne! Teraz przydało by się zaprojektować 4 bitowy ALU od podstaw!

Dominik Leon Bieczyński pisze...

@RMB13
IF to funkcja JEŻELI. W elektronice właściwie nieużywana, ale po dwóch semestrach logiki teoretycznej nie mogłem się oprzeć, by jej nie zamieścić w ściądze.

@serferek
Nie czaję o co kaman. Tabelka to ściąga tego co ma być ustawione na wejściu funkcyjnym aby wykonać daną funkcję. Jest przepisana z dokumentacji 74181 od producenta i na 100% jest poprawna.

@DARK$$
Bardzo proszę
http://obrazki.elektroda.net/14_1251399634.png

e.lukas2305 pisze...

Projekcik super. Przeznaczenie czysto edukacyjne-oby więcej takich na elektrodzie. A czy kolega podzieliłby się z nami wzorem płytki drukowanej?

e.radekdjredi pisze...

Witam dołączam się do prośby kolegi wyżej. Aha a nikt nie myślał nad zrobieniem płytki jednostronnej??

Mój brat jest mgr inż. elektrotechnik a pewnie jak mu to pokaże to nawet nie będzie wiedział jak to włączyć.



Ale pomysł na odświeżeniem tak starego układu jest wspaniały 6/6

Dominik Leon Bieczyński pisze...

Płytkę wrzucę dziś wieczorem albo później, bo muszę poprawić parę błędów, które wyszły "w praniu" :)

e.Jacek31 pisze...

Super, teraz tylko połącz 2x 181 + rejestr przesuwny i zbuduj 8-bitowy kooprocesor arytmetyczny do CPU na magistrali pamięci operacyjnej. Ja gdzieś mam nawet schemat jak na tych układać zbudować 16-bitową jednostkę ALU właśnie z rejestrami przesuwającymi.
http://obrazki.elektroda.net/44_1251536000.jpg
Co do nietypowych operacji jakie wykonuje to ALU (181) to układy te były projektowane w takich trochę przewrotnych czasach kiedy to technologia LSI raczkowała i zakładano że znajdą sie chętni do budowania mikroprocesorów (dziwnie brzmi w tym kontekście ) Laughing na układach dyskretnych, i z tego co wiem to układach 74LS można zbudować cały procesor podobny nieco do 8080, właśnie z wykorzystaniem ALU 181.

Anonimowy pisze...

Witam! Mam zamiar zbudować taki bajer ale mam 2 pytania :)
1. Jaki tranzystor umieścić pod ALU? Czy obojętnie jaki byle by był NPN?
2. Czy zamiast układu 74LS181 można wstawić 74HC181?

Anonimowy pisze...

Bardzo fajny pomysł ze starymi układami. Czy na wyjściu można podłączyć wskażnik led do zobrazowania wyniku i dodać jakąś pamięć.ekielpinski@wp.pl

Dominik Leon Bieczyński pisze...

Trzeba by zaprojektować nową płytkę, bo ta wersja nie przewiduje możliwości rozbudowy.

Zastosowany tranzystor to BC368 a wersja 74HC181 też będzie dobra.

Anonimowy pisze...

Witam serdecznie! Czy miałby Kolega do sprzedania samą wykonaną płytkę pod ten układ?

Dominik Leon Bieczyński pisze...

Niestety już nie.

Anonimowy pisze...

Witam, dopiero dzisiaj na lekcji o budowie mikrokontrolerów dowiedziałem się co to jest Alu. Ale bardzo ciekawi z czego on jest zbudowany?? Tak samo jak bramki logiczne posiada pełno tranzystorów i rezystorów??

Dominik Leon Bieczyński pisze...

Wszystko zależy od stopnia abstrakcji, który jesteś w stanie zrozumieć. Można by powiedzieć, że to jest zbudowane z kilkunastu bloków logicznych (multiplekser, dekoder, itp), z kilkudziesięciu bramek (w dokumentacji jest schemat na bramkach), z kilku tysięcy tranzystorów, z kilkuset tysięcy pól ma warstwach struktury scalonej, albo z milionów atomów :) Każdy układ można rozłożyć na prostsze jednostki, ale nie zawsze ma to sens. Lepiej to traktować jako czarną skrzynkę, do której coś wchodzi i coś wychodzi, a to co siedzi w środku to już mniej istotne.

Anonimowy pisze...

"Układy ALU były stosowane w latach 60-tych i 70-tych."
TE akurat ALU czyli 74181 nie były stosowane w latach'60 ponieważ nazwa SYSTEM 74 pochodzi od roku rozpoczęcia produkcji przez twórcę czyli Texas Instruments.
Kodowanie temperatury pracy pierwszą cyfrą to późniejszy "wynalazek".

Prześlij komentarz

Skomentuj!