Serwisy partnerskie:
Close icon
Serwisy partnerskie

Zbuduj kalkulator TTL część 2 - omówienie modułów

W poprzednim numerze projektem okładkowym był, robiący ogromne wrażenie, niekonwencjonalny kalkulator, który zrealizowany został z wykorzystaniem klasycznych układów TTL. Oto dalsza część opisu.
Article Image

Opis modułów kalkulatora TTL

  • 11) Zespół liczników specjalnych. Moduł ten ma za zadanie obsługiwać algorytmy, które potrzebują wykonać jakąś instrukcję n razy. Podzespół ten składa się z trzech skaskadowanych liczników BCD: z sześciobitowego licznika CU, którego maksymalny stan to 25; dwunastobitowego licznika CARYT, którego maksymalny stan to 120 oraz z sześciobitowego licznika CSQRT, którego maksymalny stan to 22. Również w tym module znajdują się trzy czterobitowe liczniki BCD: CAA, CAB i CAW.
  • 12) Sterownik ustawiania trybów pracy skonsolidowanych rejestrów. Moduł ma za zadanie ustawiać odpowiednie poziomy logiczne na wejściach trybu pracy wszystkich skonsolidowanych czterech rejestrów urządzenia: A, B, M i W. Istnieją cztery możliwości przygotowania skonsolidowanych rejestrów do pracy: blokada, przesuw danych w lewo lub w prawo oraz ładowanie danych równolegle. W moim urządzeniu istnieje dwadzieścia kombinacji przygotowania składowych skonsolidowanych rejestrów do pracy.
  • 13) Multipleksery obsługujące dane dla przesuwu w lewo w skonsolidowanych rejestrach. Moduł ma za zadanie dostarczać odpowiednie dane do wejść szeregowych SL skonsolidowanych trzech rejestrów urządzenia: A, B i W. W tym przypadku istnieje 13 kombinacji dostarczania danych do składowych skonsolidowanych rejestrów.
  • 14) Multipleksery obsługujące dane dla przesuwu w prawo w skonsolidowanych rejestrach. Moduł ma za zadanie dostarczać odpowiednie dane do wejść szeregowych SR skonsolidowanych czterech rejestrów urządzenia: A, B, M i W. W tym przypadku istnieje również 13 kombinacji dostarczania danych do składowych skonsolidowanych rejestrów.
    Należy nadmienić, że kolejna 27. kombinacja dostarcza do składowych skonsolidowanych rejestrów dane do wejść szeregowych SL i SR. Natomiast ostatnie dwie kombinacje: 28 i 29, służą do ładowań równoległych, więc stany na wejściach szeregowych nie mają znaczenia.
  • 15) Skonsolidowany rejestr M. Moduł ma za zadanie dekodować położenie punktu dziesiętnego MDP na wyświetlaczach; zapamiętywać wprowadzane dane MBR odpowiedzialne za aktywacje wyświetlaczy; zapamiętywać wprowadzane dane M odpowiedzialne za wartości dziesiętne pierwszych dwunastu cyfr (LSB); prezentować na kolejnych dwunastu wyświetlaczach (MSB) wartości specjalne odczytywane ze strategicznych modułów kalkulatora w trybie krokowym ręcznym lub automatycznym; kontrolować na bieżąco, czy wartość wprowadzonej liczby M jest różna od zera dla przedziału pierwszych dwunastu cyfr LSB.
  • 16) Skonsolidowany rejestr A. Moduł ma za zadanie na bieżąco dekodować położenie punktu dziesiętnego ADP na wyświetlaczach lub ewentualnie zamrozić jego lokalizację; zapamiętywać wprowadzane dane ABR odpowiedzialne za aktywację wyświetlaczy; zapamiętywać wprowadzane dane A odpowiedzialne za wartości dziesiętne cyfr lub ewentualnie zamrozić wyświetlaną wartość; odczytywać stan znaku „minus” AZ i ewentualnie zamrozić jego status na wyświetlaczu; przełączać pomiędzy trybem 12- a 24-cyfrowym; kontrolować na bieżąco, czy wartość wprowadzonej liczby A jest różna od zera dla przedziału pierwszych dwunastu cyfr LSB.
  • 17) Skonsolidowany rejestr B. Moduł ma za zadanie na bieżąco dekodować położenie punktu dziesiętnego BDP na wyświetlaczach lub ewentualnie zamrozić jego lokalizację; zapamiętywać wprowadzane dane BBR odpowiedzialne za aktywację wyświetlaczy; zapamiętywać wprowadzane dane B odpowiedzialne za wartości dziesiętne cyfr lub ewentualnie zamrozić wyświetlaną wartość; odczytywać stan znaku „minus” BZ i ewentualnie zamrozić jego status na wyświetlaczu; przełączać pomiędzy trybem 12- a 24-cyfrowym; kontrolować na bieżąco, czy wartość wprowadzonej liczby B jest różna od zera dla przedziału pierwszych dwunastu cyfr LSB.
  • 18) Skonsolidowany rejestr W. Moduł ma za zadanie na bieżąco dekodować położenie punktu dziesiętnego WDP na wyświetlaczach; zapamiętywać wprowadzane dane WBR odpowiedzialne za aktywację wyświetlaczy; zapamiętywać wprowadzane dane W odpowiedzialne za wartości dziesiętne cyfr.
    Należy dodać, że wszystkie wyjścia równoległe skaskadowanych składowych rejestrów liczb i aktywacji wyświetlaczy oraz wyjścia dekoderów 1 z 12 lub 1 z 24 podłączone są do wejść 12- lub 24-bitowych multiplekserów, na których wyjściach powstają szeregowe informacje, podawane w danej chwili na odpowiedni wyświetlacz (dla punktu dziesiętnego i aktywacji wyświetlaczy jest to po jednym wyjściu, natomiast dla danych BCD są to cztery wyjścia).
  • 19) 96-bitowy komparator. Moduł ten ma za zadanie porównywać na bieżąco wartość bezwzględną wprowadzonych liczb rejestrów A i B. Moduł ten przyspiesza algorytmy, które badają relację między wartościami rejestrów, np.: kontynuuj odejmowanie A – B dopóki A≥B. Gdyby nie komparatory, trzeba by było badać, czy powstało przepełnienie na ostatniej cyfrze MSB – gdyby było, świadczyłoby to, że A<B, ale trzeba byłoby przywrócić poprzedni stan rejestrów poprzez operację A+B.
  • 20) Selektor funkcji warunkowych. Moduł ma za zadanie zezwalać na wykonanie bieżącej przygotowanej instrukcji w przetwarzanym algorytmie pod warunkiem spełnienia aktywnej jednej z czterdziestu funkcji warunkowych (gdy instrukcja nie jest warunkowana – „sygnał” instrukcji przechodzi transparentnie). Moduł również na bieżąco monitoruje stan dwóch warunków: CU=0? oraz CARYT=0? w ewentualnej uaktywnionej którejś procedurze pętli instrukcji programu w sekwencerze.
  • 21) Dekoder funkcji wykonawczych. Gdy z selektora funkcji warunkowych sygnał zezwalania dotrze do wejścia strobującego dekodera 1 z 64 – nastąpi wykonanie instrukcji, która przez dodatkową logikę wyjściową może zawierać od jednej do kilkunastu funkcji wykonawczych. Moduł ten dekoduje 59 instrukcji.
    Podsumowując działanie dwóch ostatnich modułów, należy oznajmić, że w pierwszej fazie cyklu dane z pamięci ROM ustawiają i przygotowują niezbędne obwody urządzenia oraz przygotowują bieżącą instrukcję przetwarzanego algorytmu do wykonania. Odnosząc się do analogii z bronią palną, w powyższym etapie broń zostaje załadowana i przygotowana jest do strzału. Natomiast w drugiej fazie cyklu następuje próba wykonania bieżącej instrukcji w przetwarzanym algorytmie. Gdy instrukcja nie podlega warunkowaniu lub warunek, który ją obejmuje, zostaje spełniony, wtedy następuje wykonanie bieżącej instrukcji. W przeciwnym wypadku warunek obejmujący instrukcję nie zostaje spełniony i bieżąca instrukcja nie zostaje wykonana. Na tym etapie odnosząc się do broni palnej – następuje wystrzał pocisku z wycelowanej broni do odpowiedniego miejsca na tarczy składającej się z 59 pól (dekoder instrukcji), a o tym, do którego miejsca na tarczy zostaje wycelowana broń, decyduje instruktor, czyli pamięć ROM :). Selektor funkcji warunkowych zadecydował, jaki nabój zostanie załadowany – w przypadku ostrej amunicji pozostaje ślad na tarczy (instrukcja została wykonana), w przypadku ślepego pocisku – tarcza zostaje nienaruszona (brak wykonania instrukcji).
  • 22) 4-bitowy arytmometr BCD, 5-bitowy arytmometr BIN. Moduł ma za zadanie wykonywać dwa podstawowe operacje arytmetyczne: dodawanie (ADD) oraz odejmowanie (SUB). Arytmometr BCD operuje na wartościach dziesiętnych cyfr z rejestrów: A, B, W. Natomiast arytmometr BIN operuje na wartościach dwójkowych z liczników punktów dziesiętnych: ADP, BDP, WDP. Arytmometr BCD realizuje następujące funkcję: A+B=W, A–B=W, B–A=W, A+B=A, A– B=A, B+W=W. Z kolei arytmometr BIN: ADP+BDP=WDP, ADP–BDP=WDP, 0– WDP=WDP. W tym przypadku dzieje się to w zamkniętym zapętlonym zbiorze 24-elementowym (wartości od 0 do 23).
  • 23) 3840-bitowa pamięć ROM. Moduł jest pamięcią stałą zbudowaną z elementów dyskretnych. Pojedynczy bit w stanie wysokim reprezentuje dioda przełączająca; diod tych jest około 1100. Pamięć ma ośmiobitowe adresowanie oraz szesnastobitowe wyjścia danych. Jej organizacja to 240 na 16 bitów, gdzie pierwsze osiem bitów, licząc od LSB, ustawia multipleksery punktów dziesiętnych, multipleksery skonsolidowanych rejestrów, tryb pracy skonsolidowanych rejestrów, multipleksery arytmometru. W komórkach tych mogą się też znajdować 6-bitowe adresy funkcji warunkowych, 8-bitowe adresy skoków oraz dane w postaci BCD dla liczników specjalnych. Reasumując, dane te są argumentami wejściowymi dla funkcji instrukcji wykonawczych. Kolejny obszar jest 6-bitowym kodem instrukcji wykonawczej, ostatni 2-bitowy obszar, kończąc na bicie MSB, służy do warunkowania instrukcji wykonawczych. W pamięci tej znajduje się piętnaście algorytmów:
    - DIG (wpisywanie cyfr od 0 do 9 lub ciągu 00 do aktywnego rejestru)
    - MS (kopiowanie aktywnego rejestru do rejestru M)
    - MR (kopiowanie rejestru M do aktywnego rejestru)
    - WRC (przeniesienie zawartości rejestru W do aktywnego rejestru)
    - AB (zamiana krzyżowa zawartości rejestrów A i B)
    - BK (cofanie ostatniej wprowadzonej cyfry w aktywnym rejestrze)
    - PI (załadowanie liczby PI do aktywnego rejestru)
    - ADD/SUB (dodawanie lub odejmowanie arytmetyczne rejestrów A i B)
    - MUL (mnożenie arytmetyczne rejestrów A i B)
    - DIV (dzielenie arytmetyczne rejestrów A i B)
    - SQRT (pierwiastkowanie aktywnego rejestru)
    - X2 (podnoszenie do kwadratu aktywnego rejestru)
    - 1/X (dzielenie przez odwrotność aktywnego rejestru)
    - +%-% ( przeniesienie zawartości rejestru W zawierającego wynik działania: [(B/100)*A] do rejestru B)
    - ACW (pozycjonowanie ku prawej stronie wyniku w rejestrze
    W poprzez pozbywanie się niepotrzebnych zer z lewej i prawej strony). Stworzony język maszynowy, który koduje wszystkie instrukcje i funkcje, jest mojego autorstwa.
  • 24) Transkoder DEC/HEX dla rejestru M. Moduł ma za zadanie przekształcać wartość powyżej 9DEC na znaki heksadecymalne, tj. A, B, C, D, E, F. W normalnym trybie na wejścia podawane są sygnały do 9DEC, więc konwersja nie występuje, jednak w trybie diagnostycznym niektóre sygnały wejściowe przyjmują wartość do 15DEC. W związku z tym, że sygnały powyżej 9DEC przyjmują wartość dwucyfrową, konieczne jest ich przekształcenie na wartość HEX. Dzięki takiemu rozwiązaniu czterobitowa wartość zawsze znajdzie się tylko na jednym wyświetlaczu.
  • 25) Dekodery i obwody sterujące zespołem 105 wyświetlaczy LED. Moduł ma zadanie pełne dekodowanie sygnałów ze skonsolidowanych rejestrów: A, B, W oraz częściowo ze skonsolidowanego rejestru M na kod wyświetlania cyfr lub znaków wyświetlaczy siedmiosegmentowych. Moduł podzielony jest na pięć podstawowych zbiorów zbudowanych z wyświetlaczy LED: zbiór podstawowy rejestru M zawiera 13 wyświetlaczy, natomiast zbiór specjalny zawiera ich 17, zbiory rejestrów: A, B i W zawierają ich po 25 sztuk. Wszystkie wyświetlacze są multipleksowane.
  • 26) Sterownik multipleksowania wyświetlaczy. Moduł ma za zadanie wytworzyć odpowiednie impulsy sterujące, które z odpowiednią częstotliwością sekwencyjnie będą załączać kolumny wyświetlaczy siedmiosegmentowych LED. Moduł ten też zawiera obwód, który usuwa całkowicie efekt poświaty, tzw. duszków, dzięki odpowiednio dobranym czasom wyświetlania bieżącej i ładowania kolejnej cyfry. Również tu znajdują się obwody wyłączania wyświetlaczy w przypadku ewentualnej awarii generatora, co jest bardzo ważne ze względu na specyficzne sterowanie elementami mocy.
  • 27) Zespół diod LED wyświetlających sygnały kontrolne w trybie diagnostycznym. Moduł ma za zadanie wyświetlanie sygnałów kontrolnych, które obrazują poprawną pracę urządzenia.

Całe urządzenie napędzane jest zasilaczem liniowym dającym jedno napięcie +5V (fotografia 7).

Fot.7 Urządzenie napędzane jest zasilaczem liniowym dającym jedno napięcie +5V

Zasilacz ten oparty jest na słynnej kostce LM723 i to jest jedyny analogowy układ scalony w tym projekcie :). Zastosowany transformator jest transformatorem toroidalnym o napięciu znamionowym 9V, jego wydajność prądowa to 18A. Napięcie zbijane jest do odpowiedniej wartości na czterech równolegle połączonych tranzystorach mocy BDP491 (fotografia 8).

Urządzenie pobiera do 12A prądu (pobierany prąd jest cały czas pokazywany na wbudowanym wskazówkowym amperomierzu). W pierwszych testach zauważyłem, że po ponaddwugodzinnej ciągłej pracy trafo bardzo się przegrzewa, więc musiałem dodać aktywne chłodzenie w postaci wentylatora z zasilacza ATX i problem minął całkowicie.

Fot.8 Napięcie zbijane jest na czterech tranzystorach BDP491

Od strony sieciowej urządzenie zabezpieczone jest dwoma warystorami, no i oczywiście bezpiecznikiem topikowym. Natomiast od strony wtórnej zabezpieczeń jest kilka. Zabezpieczenie nadprądowe oparte jest na obwodach w kostce LM723 i ogranicza z grubsza prąd do 18A. Zabezpieczenia nadnapięciowe oparte są na bardzo szybkich dwukierunkowych transilach, których jest sześć i które są rozmieszczone w różnych miejscach urządzenia. Dodatkowym elementem, który przy okazji niweluje bardzo krótkie przepięcia, jest filtr EMI serii BNX.

Fot.9 Elementy wykorzystane w kalkulatorze TTL

W sumie kalkulator ten składa się z: 477 układów scalonych i tyle samo podstawek, 370 rezystorów, 7 drabinek rezystorowych, 165 kondensatorów, 1678 diod przełączających, 4 diod prostowniczych, 6 transili, 400 diod LED, 105 wyświetlaczy 1” LED, 270 tranzystorów, 33 podświetlanych przycisków, 7 przełączników i kilkunastu innych elementów. Zastosowanych elementów mechanicznych takich jak śruby, dystanse, podkładki, nakrętki jest około 250 sztuk (fotografia 9, fotografia 10).

Fot.10 Elementy wykorzystane w kalkulatorze TTL

W związku z tym, że artykuł ma ograniczoną objętość i nie sposób urządzenia opisać bardziej szczegółowo – odsyłam do mojej właśnie tworzonej strony internetowej: www.fantazja.tech, na której będę cyklicznie wstawiał dokładniejsze opisy modułów wraz z ich bardziej szczegółową zasadą działania. Na tej stronie znajdzie się również więcej zdjęć oraz filmiki z pracy urządzenia. Serdecznie pozdrawiam wszystkich Czytelników.

Tematyka materiału: kalkulator, układy TTL
AUTOR
Źródło
Elektronika dla Wszystkich sierpień 2020
Udostępnij
UK Logo