Architektura komputerów – Podstawy działania układów cyfrowych
1
Cyfrowe układy funkcjonalne
W tej części wykładu przedstawimy działanie wybranych bardziej rozbudowanych układów cyfrowych,
zwanych cyfrowymi układami funkcjonalnymi, ze szczególnym uwzględnieniem tych układów, których
znajomość jest istotna dla zrozumienia zasady działania komputera.
Omówimy kolejno działanie prostych układów pamiętających (rejestrów), układów związanych z
pojęciem magistrali, układów arytmetycznych, dekoderów, koderów oraz liczników.
Nazywamy je układami funkcjonalnymi, gdyż pełnią one w systemach cyfrowych określone funkcje,
takie jak na przykład wykonywanie działań arytmetycznych, krótkoterminowe przechowywanie informacji
czy dekodowanie adresów.
Będą one, jak poprzednio, omawiane w większości wypadków jako czarne skrzynki, nie opisując
sposobu, w jaki zostały one zrealizowane za pomocą elementów podstawowych.
Architektura komputerów – Podstawy działania układów cyfrowych
2
1. Rejestry
Definicja
Rejestrem nazywamy układ cyfrowy przeznaczony do krótkoterminowego prze-
chowywania niewielkich ilości informacji lub do zamiany postaci informacji z
równoległej na szeregową albo odwrotnie.
W definicji rejestru wystąpiło pojecie szeregowej i równoległej postaci informacji. Jest ono intuicyjnie
dość jasne, poniżej podajemy jednak jego dokładniejsze określenie.
Pojecie postaci informacji jest związane z wprowadzaniem, wyprowadzaniem i przesyłaniem
informacji. Określenie postaci informacji wystarczy podać dla jednego z tych przypadków, gdyż następnie
łatwo je uogólnić na pozostałe przypadki.
Architektura komputerów – Podstawy działania układów cyfrowych
3
Definicja
Wejściem cyfrowym równoległym nazywamy takie wejście, które
umożliwia wprowadzenie do układu cyfrowego wszystkich bitów
słowa w jednym takcie zegarowym.
Z określenia tego wynika, że ilość zacisków wejściowych w wejściu równoległym musi być równa
ilości bitów we wprowadzanym słowie. Równoległe wprowadzanie informacji pokazane jest na
rysunku 13.
Architektura komputerów – Podstawy działania układów cyfrowych
4
Rysunek 13. Równoległe wprowadzanie informacji do układu
Architektura komputerów – Podstawy działania układów cyfrowych
5
Definicja
Wejściem cyfrowym szeregowym nazywamy takie wejście, które umożliwia
wprowadzanie informacji do układu bit po bicie. Do wprowadzenia słowa n-bitowego
potrzeba n taktów zegara.
Wejście szeregowe wymaga wiec tylko jednego zacisku wejścia danych. Kolejne etapy wprowadzania
do układu cyfrowego słowa 4-bitowego przedstawione są na rysunku 14.
Architektura komputerów – Podstawy działania układów cyfrowych
6
Rysunek 14. Szeregowe wprowadzanie informacji do układu
Architektura komputerów – Podstawy działania układów cyfrowych
7
Definicja
Jeżeli informacje wprowadzamy, wyprowadzamy lub przesyłamy bit po bicie (jeden bit na
jeden takt zegara), to taką postać informacji nazywamy szeregową.
Jeżeli wprowadzamy, wyprowadzamy lub przesyłamy wszystkie bity słowa informacji
jednocześnie, w jednym takcie zegara, to taką postać informacji nazywamy równoległą.
Ze sposobem wprowadzania i wyprowadzania informacji w rejestrach wiąże się podział rejestrów na
następujące grupy:
• rejestry z wejściem i wyjściem równoległym - PIPO (ang. parallel input, parallel
output). Rejestry te często nazywane są rejestrami buforowymi lub (w przypadku
reagowania wejścia taktującego na poziom) rejestrami zatrzaskowymi (ang. latch)
Architektura komputerów – Podstawy działania układów cyfrowych
8
•
rejestry z wejściem i wyjściem szeregowym - SISO (ang. serial input, serial
output). Są to tak zwane rejestry przesuwające
• rejestry z wejściem szeregowym i wyjściem równoległym - SIPO (ang. serial
input, parallel output)
• rejestry z wejściem równoległym i wyjściem szeregowym - PISO (ang. parallelinput, serial output)
Przykłady zastosowania rejestrów buforowych to przykład sposobu adresowania pamięci DRAM.
Architektura komputerów – Podstawy działania układów cyfrowych
9
Rejestry SIPO i PISO stosuje się do zamiany postaci informacji z szeregowej na równoległą i odwrotnie.
Potrzeba takiej zamiany istnieje przy stosowaniu układu transmisji szeregowej (UART lub USART, ang.
universal synchronous/asynchronous receiver/transmitter). Układ ten przesyła informację na zewnątrz
komputera w sposób
szeregowy. Z kolei wewnątrz systemu informacja przesyłana jest w sposób równoległy.
Układ USART musi więc dokonać konwersji postaci informacji i mogą być do tego użyte rejestry SIPO i
PISO.
Architektura komputerów – Podstawy działania układów cyfrowych
10
2. Bramki trójstanowe
W układach cyfrowych, a szczególnie w układach i systemach mikroprocesorowych (a wiec i w
komputerach), występuje często potrzeba odseparowania elektrycznego dwóch lub więcej punktów w
systemie, na przykład wyjścia pewnego układu i wspólnego przewodu, po którym przesyłamy informację.
Odseparowanie elektryczne oznacza, że wartości wielkości elektrycznych (takich jak napięcie czy prąd) w
obydwu punktach nie wpływają wzajemnie na siebie i mogą przyjmować dowolne, dozwolone wartości.
Inaczej mówiąc, w układach cyfrowych, stan logiczny w jednym punkcie, odseparowanym od innego
punktu, nie wpływa na niego i nie jest z nim w żaden sposób związany.
Architektura komputerów – Podstawy działania układów cyfrowych
11
Układami umożliwiającymi odseparowanie dwóch punktów w układzie są tak zwane bramki
trójstanowe. Schemat logiczny takiej bramki i tabela przedstawiająca jej działanie pokazane są na rysunku
15 i w tabeli 7 .
Rysunek 15. Schemat logiczny bramki trójstanowej
Architektura komputerów – Podstawy działania układów cyfrowych
12
Tabela 7. Tabela prawdy bramki trójstanowej
WE
ENABLE
WY
0
1
0
1
1
1
X
0
Z
Klucz (przełącznik) występujący w schemacie tej bramki jest oczywiście kluczem elektronicznym. Sposób
elektronicznej realizacji bramek trójstanowych nie jest dla nas istotny i nie będziemy go opisywać. Stan Z
występujący w tabeli opisującej działanie bramki trójstanowej oznacza tak zwany stan wysokiej
impedancji czyli właśnie brak wzajemnego wpływu wartości elektrycznych na wejściu na wartości
elektryczne na wyjściu bramki. Stan Z jest więc oprócz stanów O i l trzecim stanem, w którym może znaj-
dować się bramka, stąd też bierze się jej nazwa. W przypadku zamknięcia klucza bramka ta transmituje
wartość sygnału logicznego z wejścia na wyjście.
Przykładowe użycie bramek trójstanowych zostanie pokazane w przy omawianiu pojęcia magistrali.
Architektura komputerów – Podstawy działania układów cyfrowych
13
3. Pojęcie magistrali
Zasada działania magistrali
W systemach mikroprocesorowych istnieje konieczność zapewnienia komunika cji pomiędzy wieloma
układami. Przykładami tych układów są: mikroprocesor, pamięć RAM, ROM i układy
wejścia/wyjścia. Połączenie wielu układów metodą każdy z każdym doprowadziłoby do nadmiernej
ilości połączeń i jest praktycznie nierealne. Dlatego stosuje się sposób połączenia tych układów przy
pomocy tak zwanej magistrali. Magistrala jest wspólną drogą, dzięki której komunikują się pomiędzy
sobą poszczególne układy wchodzące w skład systemu. Aby jednak zapewnić poprawne jej
funkcjonowanie i brak kolizji pomiędzy połączonymi nią układami, magistrala obsługiwana jest według
ściśle określonych, podanych w definicji reguł.
Architektura komputerów – Podstawy działania układów cyfrowych
14
Definicja
Magistralą nazywamy zestaw linii oraz układów przełączających, łączących dwa lub więcej
układów mogących być nadajnikami lub odbiornikami informacji. Przesyłanie informacji
zachodzi zawsze pomiędzy dokładnie jednym układem będącym nadajnikiem a dokładnie
jednym układem będącym odbiornikiem, przy pozostałych układach odseparowanych od
linii przesyłających.
Architektura komputerów – Podstawy działania układów cyfrowych
15
Jak wynika z powyższej definicji, układy dołączone do magistrali muszą mieć możliwość elektrycznego
odseparowania się od linii, którymi przesyłana jest informacja. Wynika to miedzy innymi z konieczności
zapewnienia jednoznacznego stanu każdej z linii. W przypadku jednoczesnego dołączenia do linii przesyłającej
dwóch nadajników, mógłby wystąpić konflikt, gdyby przykładowo jeden z nich próbował wymusić stan
logiczny linii równy 0 , a drugi 1.Układami zapewniającymi możliwość separacji są właśnie bramki
trójstanowe, opisane w poprzednim podpunkcie. Przykładowy rejestr z takim wyjściem przedstawiony jest na
rysunku 16a. Idea współpracy kilku układów za pośrednictwem magistrali zilustrowana jest
na rysunku 16b.
Architektura komputerów – Podstawy działania układów cyfrowych
16
Rysunek 16. Idea działania magistrali
Architektura komputerów – Podstawy działania układów cyfrowych
17
4. Dwukierunkowe wzmacniacze buforowe (transcivery)
Pomiędzy układem będącym w danym momencie nadajnikiem na magistrali a układem-odbiornikiem
stosuje się zwykle układy buforowe, pośredniczące w wymianie informacji. Zadaniem tego typu układów jest
zmniejszenie obciążenia nadajnika przez odbiornik, zwiększenie prądu wyjściowego i, co za tym idzie,
poprawa kształtu zboczy (poprzez szybsze przeładowywanie pojemności pasożytniczych).
W przypadku magistral, po których informacja może być przesyłana w obydwu kierunkach, takich jak na
przykład magistrala danych , układy wzmacniaczy buforowych muszą działać w obydwu kierunkach. Nazywane
są one wówczas nadajnikami/odbiornikami lub transciverami (ang. transmitter-receiver). Dodatkowo
układy te potrafią przejść także w stan wysokiej impedancji, separując nawzajem od siebie łączone układy.
Przykład tego typu układu, wykonanego jako pojedynczy układ scalony, INTEL 8286, przedstawiono na
rysunku 17.. Oczywiście układy transciverów mogą wchodzić w skład większych układów scalonych (np.
chipsetów).
Architektura komputerów – Podstawy działania układów cyfrowych
18
Rysunek 17. Układ transcivera (nadajnika/odbiornika) 18286
Architektura komputerów – Podstawy działania układów cyfrowych
19
5.Układy arytmetyczne
Cyfrowe układy arytmetyczne służą do wykonywania działań arytmetycznych na liczbach binarnych
(na liczbach binarnych ze znakiem,na liczbach binarnych zapisanych w różnych formatach-np.
zmiennoprzecinkowych). My ograniczymy się tylko do krótkiego omówienia ALU .
Architektura komputerów – Podstawy działania układów cyfrowych
20
Jednostka arytmetyczno-logiczna
Definicja
Jednostką arytmetyczno-logiczna (ALU, ang. Arithmetic-Logic Unit) nazywamy
uniwersalny układ cyfrowy przeznaczony do wykonywania operacji arytmetycznych i
logicznych.
Przykładowy symbol oznaczający jednostkę arytmetyczno-logiczna (niestety istnieje tu pewna
dowolność) przedstawiono na rysunku 18
.
Architektura komputerów – Podstawy działania układów cyfrowych
21
Rysunek 18. Symbol jednostki arytmetyczno-logicznej
Architektura komputerów – Podstawy działania układów cyfrowych
22
Słowo „uniwersalny" w definicji ALU oznacza, że zestaw operacji, które potrafi zrealizować jednostka
arytmetyczno-logiczna, powinien być funkcjonalnie pełny. Zestaw operacji jest funkcjonalnie pełny, jeżeli za
jego pomocą jesteśmy w stanie zrealizować dowolny algorytm przetwarzania informacji.
Do zestawu operacji wykonywanych przez jednostkę arytmetyczno-logiczna należą najczęściej:
dodawanie i odejmowanie algebraiczne, przesuwanie bitów słowa w prawo i w lewo, porównywanie
(komparacja) wartości dwóch słów, operacje iloczynu i sumy logicznej, negacji i alternatywy
wykluczającej. Oczywiście dokładna lista wykonywanych operacji zależy od konkretnego typu jednostki
arytmetyczno-logicznej. W naszych rozważaniach interesujemy się jednostką arytmetyczno-logiczna głównie
jako elementem składowym mikroprocesora. Wówczas jej „umiejętności" decydują o dość dużym fragmencie
tak zwanej listy rozkazów procesora, o której dokładniej powiemy przy omawianiu architektury procesora.
Architektura komputerów – Podstawy działania układów cyfrowych
23
Aby możliwe było dokonanie wyboru operacji realizowanej w danym momencie przez jednostkę
arytmetyczno-logiczna, musi ona posiadać zestaw wejść zwanych wejściami sterującymi. Pozwalają one
dokonać tego wyboru na drodze elektrycznej, przez podanie na te wejścia określonej kombinacji zer i jedynek
przyporządkowanej żądanej operacji.
Jednostka arytmetyczno-logiczna nie ma własnych układów pamiętających, dlatego musi współpracować
z pewnym zestawem rejestrów. Dwa z nich pełnią szczególne funkcje i dlatego też mają swoje nazwy.
Rejestr, który zawiera jeden z argumentów operacji i do którego ładowany jest wynik wykonywanej
operacji, zwany jest akumulatorem.
Architektura komputerów – Podstawy działania układów cyfrowych
24
Rejestr zawierający pewne dodatkowe cechy wyniku wykonywanej operacji, takie jak przeniesienie czy
też przekroczenie zakresu dla działań w kodzie U2 są przechowywane w postaci określonych bitów (np. o
nazwach CY czy OV) w rejestrze flagowym. .
Pewnych wyjaśnień wymaga realizacja przez jednostkę arytmetyczno-logiczna operacji logicznych.
W sposób naturalny operacje te dotyczą pojedynczych bitów (l lub O możemy interpretować jako
prawdę lub fałsz). Jednakże nie każda jednostka arytmetyczno-logiczna potrafi operować na pojedynczych
bitach. Jak więc operacje te są wykonywane w przypadku argumentów będących słowami (np. bajtami)?
Wyjaśnienie znajduje się na rysunku 19.
Architektura komputerów – Podstawy działania układów cyfrowych
25
Rysunek 19. Sposób wykonywania przez ALU działań logicznych na bajtach
Jak widzimy, przykładowa realizacja operacji mnożenia logicznego w przypadku argumentów bajtowych
jest równoznaczna obliczeniu ośmiu iloczynów logicznych.
Architektura komputerów – Podstawy działania układów cyfrowych
26
6. Dekodery i kodery priorytetu
Dekodery i kodery pełnią w systemach mikroprocesorowych ważne funkcje pomocnicze. Dekodery
stosowane są w tych miejscach, gdzie za pomocą liczby zwanej adresem wybieramy jeden z wielu
obiektów, na przykład określone miejsce w pamięci czy też określony układ wejścia/wyjścia. Układy te
spotkamy przykładowo w pamięciach półprzewodnikowych zaś układ kodera priorytetu występuje w takich
układach jak sterownik przerwań czy sterownik DMA.
Architektura komputerów – Podstawy działania układów cyfrowych
27
Dekodery
Definicja
Dekoderem nazywamy układ cyfrowy mający n wejść oraz k wyjść, przy czym k < 2
n
.
Na wejście dekodera podajemy zakodowany numer wyjścia, na którym ma pojawić się
wyróżniony sygnał o wartości np. 0. Na pozostałych wyjściach dekodera powinien
występować stan przeciwny do sygnału wyróżnionego o wartości np. 1.
Symbol dekodera przedstawiony jest na rysunku 20. Podana tam jest też pewna kombinacja sygnałów
wejściowych i odpowiadające im sygnały wyjściowe
.
Architektura komputerów – Podstawy działania układów cyfrowych
28
Rysunek 20. Symbol dekodera wraz z przykładową kombinacją sygnałów
Architektura komputerów – Podstawy działania układów cyfrowych
29
Działanie dekodera jest proste. Na jednym z jego wyjść pojawia się wyróżniona wartość (może to być
O lub 1). Na pozostałych wyjściach występują wartości przeciwne do wyróżnionej. O tym, na którym
wyjściu pojawi się wartość wyróżniona, decyduje kombinacja sygnałów podawana na wejście.
Kombinacja ta jest zakodowanym numerem wyjścia, na którym wystąpi wyróżniony sygnał.
Teoretycznie numer ten może być zakodowany w dowolnym kodzie. Praktycznie w dekoderach używa się
niemal wyłącznie kodu NKB (jako najprostszego).
W przykładowym dekoderze przedstawionym na rysunku 20 występuje dodatkowe wejście
zezwalające (sterujące) ENABLE. Brak zezwolenia, czyli w naszym przypadku wartość l, powoduje, że
dekoder jest nieaktywny i na żadnym z jego wyjść nie ma stanu wyróżnionego.
Warunek na wartość k, występujący w definicji, wynika stąd, że musimy mieć co najmniej tyle różnych
numerów, ile jest wyjść dekodera, zaś ilość różnych liczb n-bi-towych wynosi 2
n
.
Architektura komputerów – Podstawy działania układów cyfrowych
30
Koder priorytetu
Koder priorytetu jest pewną modyfikacją układu zwanego koderem, dlatego najpierw przedstawimy
działanie kodera, a następnie kodera priorytetu.
Działanie kodera jest w pewnym sensie odwrotne do działania dekodera
Definicja
Koderem nazywamy układ cyfrowy o n wyjściach i k < 2
n
wejściach, przy czym na wyjściu
pojawia się zakodowany numer tego wejścia, na którym ten sygnał występuje.
Podobnie jak dla dekoderów na wyjściu, dla koderów zakładamy, że na ich wejściu pojawia się tylko
jeden wyróżniony sygnał.
W systemach cyfrowych zachodzi niejednokrotnie potrzeba przyjmowania sygnałów zgłoszeń od wielu
urządzeń i następnie zdecydowania, które z nich będzie obsługiwane. Realizację tych czynności umożliwia
układ kodera priorytetu.
Architektura komputerów – Podstawy działania układów cyfrowych
31
Definicja
Koderem priorytetu nazywamy układ kodera, w którym wprowadzono następujące
zmiany:
1. Na jego wejściu może pojawić się więcej niż jeden sygnał wyróżniony.
2. Każdemu wejściu przyporządkowano pewien stopień ważności, zwany
priorytetem.
3. Na wyjściu pojawia się zakodowany numer tego wejścia z wyróżnionym
sygnałem, które posiada najwyższy priorytet.
Symbol kodera priorytetu wraz z przykładową kombinacją sygnałów wejściowych i wyjściowych,
przedstawione są na rysunku 21.
Na wyjściu układu z rysunku 21 pojawił się kod liczby 5, ponieważ wyróżniony sygnał jest podany na
wejścia o numerach 3 i 5 i spośród nich wejście 5 ma najwyższy priorytet.
Architektura komputerów – Podstawy działania układów cyfrowych
32
Rysunek 21. Symbol i przykładowe wartości sygnałów dla kodera priorytetu.
Architektura komputerów – Podstawy działania układów cyfrowych
33
Liczniki
Definicja
Licznikiem nazywamy układ cyfrowy, na którego wyjściu pojawia się zakodowana
liczba impulsów podanych na wejście zliczające licznika, zliczona przez licznik.
Definicja ta wymaga pewnych dodatkowych założeń. Po pierwsze zakładamy, że licznik zawsze
zaczyna liczyć od tej samej wartości początkowej, najczęściej od zera. Po drugie założyliśmy, że licznik
może zliczyć dowolną ilość impulsów, co w praktyce nie jest prawdą.
Architektura komputerów – Podstawy działania układów cyfrowych
34
Podstawowymi parametrami charakteryzującymi licznik są jego pojemność oraz kod, w którym jest
podawana ilość zliczanych impulsów.
Pojemność określa maksymalną ilością impulsów, którą może zliczyć licznik. Po przekroczeniu tej
wartości licznik zaczyna zliczanie impulsów od początku.
Liczniki w systemach mikroprocesorowych są w zasadzie układami pomocniczymi. Pewną formą
licznika jest tak zwany wskaźnik instrukcji, pełniący bardzo ważną funkcje w działaniu mikroprocesora.