Podstawy Sterowania Logicznego
PROJEKT nr 10
UKŁAD ARYTMETYCZNY 1
PROWADZĄCY: WYKONANIE:
dr inż. Zbigniew Mikoś Kwieciński Seweryn
Uszko Łukasz
Cel projektu:
Celem projektu jest opracowanie prostego układu arytmetycznego dla danych 4 bitowych o szeregowym wprowadzaniu liczb wejściowych i wyjściu równoległym. Dane wejściowe są wprowadzane na wejścia szeregowe jednocześnie, poczynając od najmłodszego bitu.
Schemat blokowy, wejścia i wyjścia układu:
Schemat blokowy układu jest pokazany na rysunku 1.
Rys. 1. Schemat blokowy układu
Wejścia i wyjścia układu:
W tabeli 1 są zestawione wszystkie wejścia i wyjścia bloku.
Elementy użyte w układzie:
a) Przerzutnik typu D – jeden z podstawowych rodzajów przerzutników synchronicznych, nazywany układem opóźniającym. Przerzutnik ten przepisuje stan wejścia informacyjnego D na wyjście Q. Przepisanie informacji następuje tylko przy odpowiednim stanie wejścia zegarowego.
![]() |
---|
D |
0 |
0 |
1 |
1 |
b) Bramki logiczne realizują fizycznie pewną prostą funkcję logiczną, której argumenty (zmienne logiczne) oraz sama funkcja mogą przybierać jedną z dwóch wartości, np. 0 lub 1
REALIZACJA PROJEKTU- Omówienie poszczególnych bloków całego układu
Sumator 4-bitowy
Pierwszym i w sumie najważniejszym podzespołem jednostki arytmetyczno-logicznej dla dwóch liczb 4-bitowych jest blok sumatora 4- bitowego.
Sumator jest zrealizowany jako równoległe połączenie odpowiedniej liczby sumatorów jednobitowych, które są realizowane w oparciu o bramkę EXOR. Obok wyniku sumy, każdy stopień sumatora generuje sygnał przeniesienia na kolejno straszą pozycję. Każdy stopień, z wyjątkiem sumatora na najmłodszej pozycji bierze pod uwagę przeniesienie z pozycji młodszej.
Przeniesienie z pozycji najstarszej jest dodatkowym bitem wynikowym sumy.Tablice karnough a sumatora 1-bitowego przedstawiające wartości wyniku si i przeniesienia ci+1 dla różnych wartości ai , bi ,ci
ai bi ci | 00 | 01 | 11 | 10 |
---|---|---|---|---|
0 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 |
Cyfry wyniku si
ai bi ci | 00 | 01 | 11 | 10 |
---|---|---|---|---|
0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 1 | 1 |
Wartości przeniesienia ci+1
Stąd po zminimalizowaniu tablic otrzymujemy funkcje wyjść następującej postaci:
si = ai xor bi xor ci
ci+1= ai bi + aici + bici
Schemat pełnego sumatora 1 – bitowego:
Schemat pełnego sumatora 4 bitowego jest następujący:
Jak można zaobserwować w wyniku dodawania dwóch liczb 4 bitowych otrzymany wynik nigdy nie będzie większy niż 5 – bitowy.
Układ mnożący 4 bitowy
W przypadku układu realizującego mnożenie arytmetyczne dla argumentów 4-bitowych wynik jest liczbą 8-bitową. Algorytm działania jest następujący:
0101 (5)
x 1001 (9)
===========
0101
0000
0000
+ 0101
===========
0101101 (45)Budowa układu mnożącego sprowadza się do kaskadowej realizacji kilku sumatorów. Warto zauważyć, że w rzeczywistości nie jest potrzebny sumator przetwarzający liczby 8-bitowe i w zupełności wystarczy dla liczb 4-bitowych sumator dla liczb 5-bitowych. Dlatego też przedstawiony w poprzednim punkcie sumator 4 bitowy rozszerzyliśmy o jedną pozycję i w efekcie otrzymaliśmy następujący układ:
Mając do dyspozycji taki “komponent” układ obliczania iloczynu arytmetycznego wygląda następująco:
Pełny równoległy układ arytmetyczny
Kolejnym krokiem do wykonania było połączenie wcześniej zaprojektowanych układu sumatora i układu mnożącego w jeden równoległy układ arytmetyczny, z możliwością dokonywania wyboru która w danej chwili operacja ma być przeprowadzona w zależności od stanu znajdującego się na wejściu SELECT. Zrealizowaliśmy to za pomocą prostego układu składającego z 3 bramek logicznych typu NAND. Układ ten wraz z całościowym schematem przedstawiającym Pełny równoległy układ arytmetyczny przedstawiony jest na poniższym schemacie.
4.4. Dwa rejestry przesuwne 4-bitowe
Kolejnym krokiem do stworzenia całego układu było zaprojektowanie 4 bitowego rejestru przesuwnego. Jego zadaniem będzie wczytywanie i zapamiętywanie podanych szeregowo dwóch liczb na wejście. Jest to tzw. układ typu SIPO (serial input paralel output) Opiszę teraz zasadę działania pojedynczego 4-bitowego rejestru przesuwnego.
Zasada działania:
Dane z wejścia DataIn1 są wprowadzane do rejestru przy dodatnim zboczu sygnału zegarowego CLK Jednocześnie dane z wyjść Q0 do Q3 zostają przesunięte o jeden bit w prawo. Na zwolnionym wyjściu Q0 pojawią się dane wprowadzone z wejścia D. W naszym układzie wejścia RST wszystkich przerzutników służące do zerowania ich wartości wyjściowych, zostały na stałe podłączone do stanu logicznego „0” (GND) . Nie potrzebujemy zerować przerzutników gdyż układ sterowania całym rejestrem przesuwnym pochodzi z zewnątrz (zostanie omówiony w kolejnym punkcie).
Budowa takiego rejestru jest bardzo prosta - wystarczy połączyć wejścia D przerzutników z wyjściami Q poprzednich przerzutników. Wejście D pierwszego przerzutnika łączymy bezpośrednio z wejściem S. Jeśli teraz wystąpi impuls zegarowy, to pamiętana informacja przemieści się o jeden bit w prawo.
Poniżej demonstrujemy symulację sieci logicznej rejestru przesuwnego opartego na przerzutnikach typu D.
Przebiegi czasowe w zaprojektowanym układzie:
Układ pomocniczy
Układ ten powstał w celu zapewnienia poprawnej pracy rejestrów , równoległego układu sumacyjno - mnożącego, oraz ogólnie całego układu oraz sygnalizacji występujących stanów w układzie.
Licznik modulo 4
Pierwszym elementem układu sterowania jest licznik modulo 4
Licznik elektroniczny - układ cyfrowy, którego zadaniem jest zliczanie wystąpień sygnału zegarowego. Licznik złożony najczęściej z kilku przerzutników. Działanie licznika cyfrowego opiera się najczęściej na układzie dzielnika częstotliwości. Przerzutnik D połączony jak na rysunku podaje na wyjście Q sygnał o częstotliwości będącej połową częstotliwości zegara. Następny przerzutnik również dzieli częstotliwość o połowę, itd. Bramki AND w układzie powodują, że przełączenie przerzutnika starszego bitu następuje tylko wtedy gdy wszystkie młodsze bity będą ustawione na ‘1’. Poniższa tabela przejść obrazuje tą sytuację (oznaczenia wejść i wyjść jak na schemacie poniżej tabeli):
Clock | Count | ClockDiv4 | ClockDiv2 |
---|---|---|---|
↑ | 0 | 0 | 0 |
↑ | 1 | 0 | 1 |
↑ | 2 | 1 | 0 |
↑ | 3 | 1 | 1 |
↑ | 4 | 0 | 0 |
Przebiegi czasowe w układzie licznika modulo 4:
Schemat pełnego licznika modulo 4:
Do licznika - do jego wyjść ClockDiv2 i ClockDiv4 dodaliśmy bramkę typu AND na której wyjściu pojawienie się stanu wysokiego oznacza zliczenie licznika do 3.
Po zaprojektowaniu licznika modulo 4 , dodaliśmy układ sygnalizujący zajętość (wczytywanie danych) tzw. flaga BUSY. Flaga ta jest ustawiana w momencie gdy na wejściu WRITE pojawi się stan wysoki. Po wykryciu kolejno czterech zboczy narastających sygnału CLK , flaga ta jest wygaszana – wprowadzanie danych dobiegło końca. Jest to prosty układ na przerzutniku typu D. Po zliczeniu przez licznik do 3 na wejściu zegarowym przerzutnika pojawia się zbocze stan wysoki. Jako że używane przez nas przerzutniki mają zanegowane wejścia zegarowe (stan z wejścia D przepisywany jest na wyjście przy opadającym zboczu) to znaczy że w momencie gdy licznik wyzeruje się ( zacznie zliczać od nowa ), na wyjście Q zostanie przepisana logiczna „1” co po zanegowaniu wygasi flagę BUSY.
Dodaliśmy także flagę SAVE. Jej ustawienie w czasie gdy licznik zliczy do 3, spowoduje podobny efekt jak w przypadku flagi BUSY. W momencie wyzerowania licznika na wyjściu SAVE pojawia się zbocze opadające, co spowoduje kolejno przepisanie wartości z 8-bitowej pamięci równoległej ( o której mowa w kolejnym punkcie) na wyjście układu arytmetyczno-logicznego.
Poniżej schemat licznika z układem obsługującym flagę BUSY i sygnał SAVE:
Na samym końcu został zaprojektowany prosty układ zerujący wszystkie przerzutniki w momencie wystąpienia zbocza narastającego sygnału zezwalającego na zapis WRITE.
Jego działanie polega na tym iż w momencie pojawienia się zbocza narastającego na wejściu WRITE na krótką chwilę na wyjście Q przerzutnika wpisywana jest logiczna jedynka zerująca wszystkie przerzutniki. Po krótkim czasie spowodowanym opóźnieniami występującymi na szeregowo połączonych 3 bramkach logicznych typu NOT na wejściu RST (reset) przerzutnika pojawi się stan wysoki co oczywiście spowoduje następnie wyzerowanie wyjścia Q (stan logiczny „0”). Tym samym stan wysoki zostaje zdjęty z wejść RST wszystkich przerzutników występujących w układzie. Układ jest gotowy do wczytywania danych.
Schemat układu do zerowania stanów przerzutników:
Rejestr równoległy 8 bitowy
Ostatnim elementem naszego układu jest 8- bitowy rejestr równoległy.
Jest on zbudowany z ośmiu przerzutników typu D. Na wejścia podawane są dwie liczby 4- bitowe ( są to liczby pobrane z rejestru przesuwnego- wczytane jako liczby na których przeprowadza się dalsze operacje arytmetyczne). Po wczytaniu pełnej 4 bitowej liczby na wejściu SAVE pojawia się zbocze opadające , co powoduje automatycznie przepisanie liczb z wejść przerzutników na ich wyjście. Liczby z wyjścia pobierane są do jednostki wykonującej zadaną operacją arytmetyczną na nich.
Zaprojektowanie tego układu miało na celu zapobiegnięcie ciągłemu zmienianiu się wartości wynikowej na wyjściach całego układu podczas wczytywania danych.
Schemat 1- bajtowej pamięci równoległej:
Złożenie poszczególnych bloków w pełny, działający układ
Po zaprojektowaniu i przetestowaniu każdego układu z osobna, zamknęliśmy je w tak zwane bloki funkcyjne - nadając im odpowiednie nazwy. Krok ten dokładnie przedstawia poniższy schemat:
Następnie cały , gotowy układ arytmetyczno - logiczny został zamknięty w końcowy blok. Podłączono sygnał zegarowy , a także pozostałe sygnały wejściowe. Na wyjściach do sygnalizacji otrzymanego wyniku podłączoczony diody LED. Po sprawdzeniu poprawności połączeń oraz działania układu , uznano że układ działa poprawnie i spełnia przyjęte założenia konstrukcyjne.
Schemat końcowy układu arytmetycznego dla liczb 4 – bitowych:
WNIOSKI
Zaprojektowany przez nas układ działa poprawnie oraz zgodnie z postawionymi wytycznymi. Dodatkowym elementem nie zawartym w poleceniu jest blok 1-bajtowej pamięci równoległej który wyeliminował niedogodności związane z zmianą stanów na wyjściach podczas wczytywania danych.
Projekt stanowił bardzo ciekawe wyzwanie dla nas jako konstruktorów układów cyfrowych. Pozwoliło nam to zapoznanie się z obowiązującymi metodami projektowania układów cyfrowych oraz działaniem struktury wewnętrznej układów arytmetyczno-logicznych.
BIBLIOGRAFIA
1. J. Kalisz: „Podstawy Elektroniki Cyfrowej”
2. W. Głocki: „Układy cyfrowe”
3. C. Zieliński: „Podstawy projektowania układów cyfrowych”
4. Paul Horowitz - Sztuka elektroniki
5. Barbara, Marek Pióro cz. I i cz.II - Podstawy Elektroniki
Tietze, Schenk - Układy półprzewodnikowe
Teoria układów logicznych - Zygmunt Leszczyński (1990)
Układy Cyfrowe - Mikuła, Małysiak, Pochopień