Autorzy projektu postanowili wziąć udział w konkursie „74XX logic competition” (i – nota bene – zajęli pierwsze miejsce), budując wyłącznie z układów logicznych kalkulator. Swoje urządzenie ochrzcili mianem „DIGICALC”. Pracę nad projektem rozpoczęto od symulacji układu, począwszy od dodawania prostych liczb w formacie dwójkowym, a następnie nad ich odejmowaniem. Wyzwaniem było zaimplementowanie klawiatury do wprowadzania numerów, która wymagała użycia rejestrów przesuwnych. Dla uproszczenia, autorzy zrezygnowali z klawiatury szesnastkowej, używając w to miejsce własnej, składającej się z 15 przycisków.
Stworzony kalkulator pozwala dokonywać odejmowania i dodawania liczb 5-bitowych, wraz ze znakiem. W założeniu, kalkulator powinien być wyposażony w obwody analizujące naciśnięcie przycisków, dokonujące obliczeń, aż wreszcie – w dekoder i wyświetlacze 7-segmentowe.
Do budowy kalkulatora wykorzystano całkiem pokaźną liczbę układów z serii 74XX (liczba użytych sztuk w nawiasie): 7404 (2), 7408, 7411 (2), 7432 (3), 7447, 7476, 7483 (5), 7485, 7486 (2), 74122, 74147, 74157 (2), a także układy 4035 (4) oraz 555.
Do detekcji naciśniętego przycisku wykorzystywany jest układ 74147 (enkoder priorytetowy 4 z 10), z wyjściami zanegowanymi za pomocą bramek NOT. Ze względu na właściwości układu, jeśli zostanie naciśnięte na raz kilka przycisków, stan na wyjściu będzie odpowiadał najwyższej liczbie.
Dane dotyczące wciśniętego przycisku przechowywane są w rejestrze przesuwnym 4035. W kalkulatorze pracują dwa takie układy. Po naciśnięciu przycisku dane wpisywane są do pierwszego rejestru. Jeśli nastąpi naciśnięcie kolejnego przycisku (przed wyborem rodzaju operacji), najbardziej znaczący bit przepisywany jest do drugiego rejestru, co pozwala na wprowadzenie liczb większych od 9 (ale mniejszych od 16). Następnie wykorzystywany jest układ sumatora pełnego (7483), służący do dodania liczby 10 do danych przechowywanych w drugim rejestrze. Tak uzyskana liczba stanowi dane wejściowe, na których będzie następowało obliczenie.
Kolejna para rejestrów przesuwnych służy do przechowywania danych w zależności od pożądanej operacji matematycznej: w przypadku naciśnięcia symbolu dodawania/odejmowania, dane wpisywane są do drugiego rejestru w tej parze układów.
Mózgiem kalkulatora jest obwód pokazany na powyższym schemacie, służy on wykonaniu działania na zadanych dwu liczbach. Tablica bramek XOR służy uzyskaniu komplementarności w momencie wykonywania odejmowania, następnie dwa sumatory pełne są używane do uzyskania wyniku działania. Układ składający się z dwu bramek AND i bramki OR służy dodaniu do wyniku działania liczby 9, w przypadku gdy wynik działania jest także wyższy od 9 – po to, aby wygenerować dane zdatne do zdekodowania w dekoderze BCD-wyświetlacz 7-segmentowy.
Układ komparatora 7485 służy określaniu znaku działania na podstawie danych wejściowych – steruje wyświetlaniem znaku „minus”, kiedy jest to potrzebne.
W oparciu o dwa przerzutniki JK zbudowane są obwody służące do wyboru działania (dodawanie/odejmowanie) i do obsługi zatwierdzenia operacji („równa się”) i czyszczenia danych.
Timer 555 pracuje w obwodzie generującym po włączeniu zasilania krótki impuls dodatni, pozwalający na właściwą konfigurację przerzutników JK – domyślne ustawienie sumowania i wyczyszczenie danych.
Autorzy napotkali również problem z obsługą rejestrów przesuwnych: po naciśnięciu przycisku wyboru operacji dane w pierwszych rejestrach były czyszczone, zanim zostały zapisane do drugiej pary rejestrów. Aby wyeliminować tę niedogodność zastosowano obwód z układem 74122 (retrygerowalny multiwibrator monostabilny), który odpowiada za czyszczenie pierwszej pary rejestrów z kilku-milisekundowym opóźnieniem, co pozwala bezbłędnie przepisać dane do drugiej pary rejestrów.
Do multipleksowania wyświetlaczy kalkulatora wykorzystano układ 74157 (poczwórny multiplekser) – normalnie na wyświetlacz przekazywane są dane z rejestru wprowadzonej liczby (wejścia A), dopiero po naciśnięciu przycisku „równa się” układ multipleksera wystawia na wyświetlacze wynik działania (wejścia B). Naciśnięcie przycisku czyszczenia powoduje ponowne wyświetlenie wprowadzanej liczby (wejścia A multipleksera). Do dekodowania kodu BCD użyto układu 7447.
Na poniższym filmie można przyjrzeć się działaniu kalkulatora.
Na stronie projektu dostępny jest pełny schemat i wzór płytki drukowanej, a także dokumentacja w formacie PDF.
Fajne? Ranking DIY
