49
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 6/96
działanie mikroprocesora, a nawet go zapro−
gramować, może dosłownie każdy. Nie potrze−
ba do tego wielkiej wiedzy − trzeba natomiast
nieco przestawić swój sposób myślenia.
Chcę to uzmysłowić na przykładzie: co−
dziennie rano budzisz się ze snu i ubierasz się.
To oczywiste i proste − zupełnie się nie zasta−
nawiasz, co masz po kolei zrobić, nawet, gdy
jesteś zaspany po “rozrywkowej” nocy, prawie
nigdy nie zdarza ci się założyć koszuli na swe−
ter. Pomyśl jednak − wykonujesz pewien ciąg
elementarnych czynności, czyli realizujesz pe−
wien program zapisany w twojej pamięci. Ty
się tego nauczyłeś i o tym pamiętasz; nie mu−
sisz już zatrudniać swojej świadomości. W cza−
sie wykonywania tego programu pewne kroki
realizujesz bezwarunkowo, podejmujesz też de−
cyzje zależne od warunków zewnętrznych, poza
tym niejednokrotnie realizujesz taki sam ciąg
czynności − nazwijmy go podprogramem lub
procedurą.
Rozłóżmy więc twoje poranne wstawanie na
składniki: otwierasz oczy, chwilę (?) leżysz, zie−
wasz, siadasz na łóżku, przeciągasz się,
opuszczasz... oczywiście prawą nogę, opusz−
czasz lewą nogę, wstajesz, znowu ziewasz, za−
stanawiasz się czy się trochę nie pogimnasty−
Był początek lat siedemdziesiątych, gdy
mnie, małoletniemu pacholęciu, wpadł do ręki
numer bodaj “Horyzontów Techniki”. Jeden z arty−
kułów był poświęcony mi.. mi.., o! mikroproce−
sorowi. Nie pamiętam treści artykułu, zapa−
miętałem natomiast rysunkowy żart stanowiący
doń ilustrację. Otóż dwóch naukowców − poważnych
panów ze staromodnymi bródkami, przechadzając
się po parku, natyka się na kopiaste mrowis−
ko, z którego startuje rakieta kosmiczna. Je−
den z nich wykrzykuje do drugiego: już wiem,
gdzie zgubiłem swój mikrokomputer!
Od tamtego zdarzenia minęło może dwa−
dzieścia kilka lat, a ten żart pomału zaczyna
się materializować − dziś, może nie mrówki, ale
bardzo młodzi ludzie mogą realizować projekty
o wręcz kosmicznym poziomie zaawansowania
− a wszystko to za sprawą niewielkiej krzemo−
wej kostki, w której zaklęto metody i sposoby
odpowiedzi na zadawane jej pytania. Niegdyś
nazywano komputery mózgami elektronowymi −
taka nazwa od początku budziła szacunek
i podziw − niektórych wręcz rzucała na kolana.
Jednak do mózgu, tego, który przychodzi nam
nosić w głowie, bardzo mu daleko.
Tymczasem w mikroprocesorach tak na−
prawdę nie ma nic tajemniczego. Zrozumieć
kować − podejmujesz jednak decyzję: NIE, bo
jest zbyt zimno. Pomijasz podprogram “gim−
nastyka poranna” i realizujesz podprogram
“droga do łazienki”, na który składają się kroki
w kierunku łazienki, chwycenie klamki, otwar−
cie drzwi, wejście, zamknięcie drzwi. Gdy jes−
teś w łazience nadal wykonujesz mnóstwo ele−
mentarnych czynności, które w sumie składają
się na dość duży program pt. “poranne wsta−
wanie” (rys. 1
rys. 1
rys. 1
rys. 1
rys. 1).
I tu pokazuję ci klucz do zrozumienia mikro−
procesora: jego działanie polega na wykonywa−
niu wielu naprawdę prostych czynności. Okazu−
je się bowiem, że każde, nawet najbardziej
skomplikowane zadanie można przedstawić ja−
ko złożenie pewnej liczby bardzo prostych kro−
ków. Z kolei mikroprocesor czy mikrokomputer
potrafi wykonywać tylko bardzo proste czyn−
ności i obliczenia, które nazywamy rozkazami.
Daleko mu więc do mózgu, za to jest pioruńsko
szybki.
Programowanie polega więc na zapisaniu
ciągu czynności, jakie potrafi mikroprocesor
wykonać, a takie czynności nazywane są rozka−
zami albo instrukcjami.
Mikroprocesor to maszyna, która wykonuje
rozkazy. Pobiera rozkaz i natychmiast przystę−
Mikroprocesor
Mikroprocesor
Mikroprocesor
Mikroprocesor
Mikroprocesor
a co to takiego?
część 1
50
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 6/96
Rys. 1. Treść zapisów może śmieszyć, jednak i tu zawiera się głębsza
myśl. Te czwotokąty tworzą algorytm, który jest graficznym przedstawie−
niem toku postępowania w celu wykonania jakiegoś zadania. W prostoką−
tach zawieramy pewne czynności, które uznajemy już za niepodzielne na
danym poziomie rozumowania. Gdy jednak chcemy je uszczegółowić,
wytwarzamy na boku kolejny ciąg czynności, jeszcze bardziej elementar−
nych. Proces taki nazwiemy zagnieżdżaniem algorytmu, a metoda
układania algorytmu w taki sposób jest nazywana metodą zstępującą. Naj−
pierw układamy algorytm ogólny, który przedstawia kilka bloków funkcjo−
nalnych, a potem każdy z nich zaczynamy rozpisywać na coraz prostsze
operacje. Ten proces zagnieżdżania możemy prowadzić w nieskończoność.
Dla naszego przykładu: opisujemy naciśnięcie klamki poprzez skurcze
kolejno uruchamianych mięśni.
Zapisz więc, w ramach ćwiczenia mikroprocesorowego myślenia, ciąg
czynności dla podprogramu “Gimnastyka poranna” i “Toaleta osobista”.
Jeśli zrobisz to uczciwie, z kilkoma poziomami zagnieżdżeń, to zobaczysz,
że kartka papieru będzie za mała dla pomieszczenia całego algorytmu.
Przy okazji poznajemy umowne znaki graficzne, służące do zapisu
elementów algorytmu. Realizowane czynności umieszczamy w prostoką−
tach, w owalach przyjęło się zapisywać początek i koniec algorytmu, przy
czym w owalu początkowym piszemy, czego dotyczy ten algorytm. To
później nam ułatwi analizę poprawności działania algorytmu i odszukiwa−
nie powiązań z innymi algorytmami. Przejścia pomiędzy blokami,
narysowane strzałkami, tworzą ścieżkę logiczną programu. Interesującym
blokiem jest romb − bloki warunkowego rozgałęzienia ścieżki logicznej
programu. Sformułowanie weń wstawiane jest przeważnie pytaniem, na
które można odpowiedzieć dwojako: tak albo nie. Zależnie od odpowiedzi
program obiera jedną z dróg dalszej realizacji.
Sygnał zegarowy może być wytworzony w samej kost−
ce mikroprocesora, jest to cecha większości mikrokont−
rolerów jednoukładowych. Producent takiego układu wy−
dziela wtedy końcówki, do których można podłączyć rezo−
nator kwarcowy czy ceramiczny. Te same końcówki mogą
też przyjmować sygnał zegarowy spoza układu, z innego,
zewnętrznego generatora. Rezonator kwarcowy daje syg−
nał o dużej stabilności, nieco gorszą stabilnością cha−
rakteryzuje się układ z rezonatorem ceramicznym. Kiedy
zależy nam na precyzyjnym odmierzaniu czasu, z pewnoś−
cią zegar zbudowany na kwarcu ma uzasadnienie. Jed−
nak zegar może mieć częstotoliwość znaną tylko orienta−
cyjnie, np. układ może wyłączać lampkę na biurku po
dwóch minutach ±3s. Wystarczy więc w miejsce kwarcu
wlutować prosty układ RC. Współczesne mikrokontrolery
jednoukładowe to zapewniają, ale po szczegóły musimy
sięgnąć do katalogu. Na rysunku pokazano trzy typowe
sposoby podłączeń oscylatorów do mikrokomputera jed−
noukładowego.
Bardziej skomplikowane mikroprocesory, szczególnie
te 16−bitowe i silniejsze, wymagają osobnego układu ze−
gara. Nierzadko taki zegar musi spełniać ostrzejsze wy−
magania niż to było w przypadku mikrokontrolerów jednoukładowych, a szczególnie zwraca się
w nim baczniejszą uwagę na stabilność częstotliwości sygnału, dopuszczalne nachylenia zbo−
czy generowanej fali prostokątnej. Musimy wiedzieć, że sygnał fali prostokątnej występuje tyl−
ko w teorii, to ideał, w praktyce zawsze dopatrzymy się pewnego czasu potrzebnego na zmia−
nę poziomu napięcia
z niskiego na wysoki
i odwrotnie. Czas po−
trzebny na zmianę z po−
ziomu niskiego na wy−
soki nazywamy czasem
narastania (rise time),
zaś czas potrzebny na
zmianę sygnału z pozio−
mu wysokiego na niski
to czas opadania (fall ti−
me). Oba te czasy zna−
ne są też pod wspólną nazwą czasów trwania zboczy. Im te czasy są dłuższe, to mówimy, że
zbocza posiadają coraz mniejsze nachylenie i fala prostokątna coraz bardziej przypomina
przebieg trapezowy.
Podajmy skrajny przykład. Układy zegarowe produkowane z myślą o procesorze Pentium
muszą zapewnić sygnał zegarowy o czasach trwania zboczy rzędu kilkudziesięciu ps! (1ps
= 1 pikosekunda = 10
−12
s = 0.000001µs, 1µs trwa okres przebiegu o częstotliwości 1MHz)
puje do jego wykonania. Skąd pobiera? Z pa−
mięci! W każdym systemie mikroprocesoro−
wym musi być jakaś pamięć. My też pamięta−
my o każdej czynności, jeśli idziemy do łazien−
ki, ale tego sobie nie uświadamiamy.
No tak, ale system zawierający “goły” mik−
roprocesor i pamięć pracowałby sam dla sie−
bie, czyli poza zużywaniem energii potrzebnej
do realizacji rozkazów nic innego nie potrafiłby
zrobić. Trzeba więc dodać jakieś usta, uszy:
nazwijmy je wrotami lub z angielska − portem.
Za pomocą portów kostka mikroprocesora kon−
taktuje się ze światem zewnętrznym. Wpiszmy
jeszcze, lub mówiąc mikroprocesorową nowo−
mową − zaimplementujmy do mikroprocesora
metody komunikacji z różnego rodzaju porta−
mi.
I tak oto stworzyliśmy mikrokomputer! I jeś−
li nawet piejesz z zachwytu nad możliwościami
współczesnych mikrokomputerów, to pamiętaj,
że mikrokomputer zawsze składa się z mikro−
procesora, pamięci i portów. Resztę stanowią
dodatki “uszlachetniające” cały wyrób.
Ten wstęp ma pokazać, że mikroprocesor
jest maszyną niewiele bardziej skomplikowaną
od tokarki (tokarka ma uchwyt, suport i łoże,
a reszta to dodatki “uszlachetniające” wyrób)
czy samochodu (samochód ma koła, hamulce
i silnik, a reszta to dodatki “uszlachetniające”
wyrób). Mikroprocesor − to ta straszna nazwa
powoduje, że wielu zapalonych elektroników
nie sięga po rozwiązania mikroprocesorowe,
pozostając przy tradycyjnym rozwiązaniu hard−
ware'owym. Wynika to ze strachu przed tabu.
A to jest zwykła zabawka, no może trochę naro−
wista, ale jednak zabawka, jedna z tych, jakimi
nam, dzieciom cywilizacji końca XX wieku, przy−
szło się bawić. W swojej zawodowej pracy tak
uzależniłem się od mikroprocesorów, że nawet
proste funkcje wolę zrobić na malutkim proce−
sorku insektowym niż kombinować z układem
bramek, przerzutników i liczników. Już przy nie−
wielkiej wprawie w posługiwaniu się mikropro−
cesorami ich “giętkość”, łatwość zmiany całe−
51
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 6/96
instrukcji, pora więc na coś, co będzie wykony−
wać instrukcje, tak pracowicie zdekodowane
przez naszego “bosmana”. Pora na
“marynarzy”, czyli elementy wykonawcze. Jed−
nym z nich jest jednostka arytmetyczno−logicz−
na.
Jednostka arytmetyczno−
logiczna
Kapitan każdego statku zawsze ma potrze−
bę wiedzy o swoim położeniu. Do tego celu za−
trudnia on nawigatora, który dba nie tylko
o prawidłowe obliczenie obecnej pozycji stat−
ku, ale również wykreśla kurs, przelicza czas
osiągnięcia celu przy danej prędkości itd. Pra−
cę nawigatora można było szczegółowo prześ−
ledzić na filmie “Polowanie na Czerwony Paź−
dziernik”, kiedy okręt płynął przez podwodny
korytarz według kursu zmienianego co do se−
kundy.
I u nas też jest potrzebny taki rachmistrz.
Rolę rachmistrza w mikroprocesorze pełni jed−
nostka arytmetyczno−logiczna ALU (Arithmetic
Logic Unit). Wykonuje ona wszystkie operacje
arytmetyczne (dodawanie, odejmowanie, mno−
żenie, dzielenie) oraz logiczne (suma logiczna,
iloczyn logiczny, przesunięcia bitowe). Zasad−
niczo jednostka arytmetyczno−logiczna jest
układem niezależnym od zegara. Zawiera ona
w sobie sumator, subtraktor (układ odejmują−
cy), multiplikator (układ mnożący), układ dzie−
lący, układ do wykonywania operacji logicznych
i rejestr przesuwny. W prostych mikroproceso−
rach, zwłaszcza współczesnych małych mikro−
kontrolerach jednoukładowych układ mnożący
i dzielący mogą być nieobecne, dlatego w nich
mnożenie i dzielenie musi być realizowane pro−
gramowo.
Jednostką ALU zawiaduje dekoder rozka−
zów, który najpierw ustawia rodzaj operacji,
wprowadza argument bądź argumenty operacji
na jej wejście, a potem odbiera wynik na wy−
jściu.
Z jednostką arytmetyczno−logiczną jest
ściśle związany element pamiętający, który
stanowi ciąg przerzutników, a nazywany jest re−
jestrem. Rejestr roboczy jednostki arytmetycz−
no−logicznej nazywany jest akumulatorem. Za−
wartość akumulatora jest jednym z argumen−
tów operacji arytmetyczno−logicznych i jedno−
cześnie miejscem przechowania wyniku, o ile
kod rozkazu nie stanowi inaczej.
Mirosław Lach
cesorem Pentium taktowanym zegarem
o częstotliwości 100 czy 150MHz. Mikroproce−
sor 8086, czyli ten, który zaczynał tę rodzinę
procesorów, był “napędzany” zegarem 4−
6MHz. W dalszym ciągu nie zmienia to faktu,
że zegar dalej służy do zapewnienia właściwej
kolejności zaprogramowanych czynności.
Dekoder rozkazów
Powtórzmy: mikroprocesor pobiera rozkazy
i natychmiast je wykonuje. Jak bosman wrzesz−
czy na swoich marynarzy i oni rozumieją co do
nich mówi, tak mikroprocesor musi wiedzieć,
jak przetłumaczyć ciąg zer i jedynek przycho−
dzących jako rozkaz na serię pojedynczych
czynności. Do tego służy dekoder rozkazów.
Zanim pojedynczy rozkaz − np. komenda
podniesienia jakiegoś żagla wydana przez kapi−
tana dotarła do marynarzy, po drodze przecho−
dziła przez bosmana. Rozkładał on całą opera−
cję podnoszenia danego żagla na operacje
jeszcze drobniejsze.
Podobnie jest w mikroprocesorze: na każdy
rozkaz składa się kilka jeszcze bardziej ele−
mentarnych czynności − nazywamy je mikroope−
racjami albo mikrorozkazami.
Wszystkie rozkazy mikroprocesora pobiera−
ne z pamięci są rozpoznawane przez układ
zwany dekoderem rozkazów. Odpowiada on, ni−
czym bosman na statku, za właściwą kolejność
wykonania mikrooperacji. Wykonanie rozkazu
wymaga kilku, kilkunastu, bywa, że kilkudzie−
sięciu okresów zegara, czyli żeby żagiel został
podniesiony, nasz szantimen musi odśpiewać
ileś zwrotek piosenki, czasem kilka piosenek.
Każdy cykl rozkazowy, znany także jako cykl
maszynowy albo cykl procesora składa się
z kilku taktów zegara. Długość cyklu maszyno−
wego liczona taktami zegara jest dla konkret−
nego typu mikroprocesora stała.
Mamy więc motorek, jakim jest zegar, jest
układ, który odpowiada za poprawną realizację
Jeszcze nie tak dawno, kiedy mikroprocesory posiadały słowo co najwyżej 8−bitowe, obok
nich spokojnie egzystowały układy mikroprogramowane jako osobne układy scalone. Układ
mikroprogramowany wymaga zewnętrznej pamięci ROM, w której były zapisane mikroinstruk−
cje, tworzące mikroprogram. Taka mikroinstrukcja zawierała kod bardzo prostej czynności,
z reguły były to sygnały zezwolenia na te czynności, ewentualny adres następnego rozkazu,
czasem kilka bitów reprezentujących stany warunkowe. Z chwilą, gdy mikroprocesory stawały
się coraz tańsze i gwałtownie zaczęły rosnąć ich możliwości, zaniechano produkcji pojedyn−
czych układów mikroprogramowanych. Układy mikroprogramowane nadal są, stały się frag−
mentem... mikroprocesorów. Właściwie bez nich nie można byłoby dekodować instrukcji przy−
chodzących do mikroprocesora. Pamięć mikroprogramu też została scalona w strukturze mik−
roprocesora i teraz cały układ mikroprogramowany nazwiemy dekoderem rozkazów.
go rozwiązania na inne, staje się zaletą nie do
odrzucenia.
Celem niniejszego artykułu nie jest przed−
stawienie dokładnego opisu konkretnego typu
mikroprocesora, temu służą katalogi firmowe,
lecz ukazanie Czytelnikowi podstawowego
słownictwa oraz mikroprocesorowego elemen−
tarza. Dla zrozumienia materiału wystarczy
podstawowa wiedza z zakresu techniki cyfro−
wej, a ponadto trochę uwagi i wyobraźni.
Zacznijmy od tego, co jest motorem działa−
nia każdego mikroprocesora. Jest nim zegar.
Zegar
A zatem, jako się rzekło, mikroprocesor po−
biera rozkazy i je wykonuje. Kiedy na dużym,
XVIII−wiecznym żaglowcu kapitan dawał rozkaz
do podniesienia żagli, to oznaczało, że trzeba
było wciągnąć na określoną wysokość kilkaset
kilogramów płótna. Żeby było trudniej, żagle
były podnoszone w ściśle określonej kolejnoś−
ci. Nie zrobi tego jeden człowiek, ale grupa lu−
dzi to potrafi. Niezmiernie ważną instytucją na
żaglowcu był szantimen. Człowiek ten zajmo−
wał się śpiewaniem prostych, rytmicznych
pieśni, przy czym tematyka ich nie była tak
ważna, jak właśnie ich rytmiczność. Marynarze
odpowiadali szantimenowi refrenem, jedno−
cześnie zgrywając swoje wysiłki. Jednoczes−
ność tych działań nazywamy synchronizacją.
Odpowiednikiem takiego szantimena jest
w mikroprocesorze generator impulsów syn−
chronizujących, który nazwano generatorem ze−
garowym lub krócej zegarem. Ma on wiele
wspólnego ze znanym wszystkim zegarkiem
naręcznym lub zegarem ściennym. Swoim re−
gularnym “tykaniem” wyznacza on początki
okresów czasu, które są przeznaczone do wy−
konania określonych operacji.
Szybciej “tykający” zegar to szybsze wyko−
nywanie operacji. Stąd już prosta droga do uza−
sadnionych zachwytów nad IBM PC z mikropro−
Cd. ze str. 4
Zbigniew Świerzewski z Pudliszek pisze:
Od niedawna jestem czytelnikiem mie−
sięcznika “EdW”. Długo szukałem odpo−
wiedniego czasopisma, które potrafi jak
najprościej przyswoić artykuły takim elekt−
ronikom jak ja (amatorom). To fajnie, że
istnieje miesięcznik, który czyta się po
prostu “od deski do deski” i z niecierpli−
wością czeka się na następny numer.
Mam do redakcji “EdW” prośbę. Czy
mógłbym uzyskać od Was (nawet odpłat−
nie) schemat regulatora temperatury:
analogowego lub cyfrowego z wyświet−
laczem LED lub LCD. (...)
Zbyszku, jesteśmy elektronikami nie od
dziś i śmiemy przypuszczać, że sam sche−
mat niewiele ci pomoże. Nie wiemy, do
czego Ci ten regulator jest potrzebny,
czym ma sterować, jaka ma być maksy−
malna temperatura. W serii modułów AVT
opisywanych w Elektronice Praktycznej
możesz znaleźć wszystkie “klocki” do bu−
dowy potrzebnego ci regulatora (seria
AVT−104 i 147).
Możemy opracować w redakcji EdW do−
wolny regulator, wykonamy też płytki, za−
pewnimy części, i to nie tylko dla Ciebie,
lecz i dla innych. Napiszcie więc, kochani
jakiego regulatora się spodziewacie.
Prosty regulator temperatury można wy−
konać na płytce wielofunkcyjnej PW−01,
opisujemy go na stronie 9.
Nie wiemy, gdzie w kraju można kupić
obudowy do wieży “Diora” − w Warszawie
na Wolumenie piszący te słowa kupuje
takowe u p. Czarka z Łodzi.
Cd. na str. 59
52
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 6/96
Adresy i adresowanie
Pojęcie adresu kojarzy się z listem, kopertą
i listonoszem. Dokładnie adresujemy list, po−
nieważ nie znamy innego sposobu wyróżnienia
odbiorcy, tak aby niezawodnie otrzymał on
przeznaczone dlań wieści. Nie wystarczy napi−
sać na kopercie: “Dla sympatycznego pana He−
nia” − trzeba podać nazwę miejscowości, ulicę,
numer domu, ewentualny numer mieszkania.
Rodzajem adresu jest też numer telefonu,
czyli liczba, którą trzeba wybrać za pomocą tar−
czy aparatu telefonicznego.
Co ważne, adres w postaci liczby jest zrozu−
miały dla mikroprocesora! Dla niego adres jest
liczbą określającą jednoznacznie miejsce w pa−
mięci − poszczególne komórki pamięci są więc
ponumerowane. Pamięć ma zwykle organizację
bajtową, to znaczy że pod jednym adresem za−
pisuje się lub odczytuje jednocześnie osiem bi−
tów.
Adresowanie to dla nas, ludzi, napisanie
adresu, czyli wskazanie odbiorcy. Podobnie na−
leży rozumieć tę czynność wykonywaną przez
mikroprocesor. Jednak sposoby adresowania
są najprzeróżniejsze. Kilka z nich (nie wszyst−
kie) przedstawimy poniżej. Na rysunkach linie
przerywane dotyczą wystawiania adresu na szy−
nę adresową, zaś linią ciągłą transmisję po−
trzebnych danych do akumulatora.
Niektóre ze sposobów adresowania mogą
wydać się abstrakcyjne i niezrozumiałe, ale za−
pewniam − są przydatne. Rodzaje adresowań
prześledzimy na przykładzie przesyłania da−
nych do akumulatora.
Adresowanie bezpośrednie
Adresowanie bezpośrednie
Adresowanie bezpośrednie
Adresowanie bezpośrednie
Adresowanie bezpośrednie polega na zapi−
saniu w kodzie rozkazu adresu komórki pamię−
ci danych (rys. 2
rys. 2
rys. 2
rys. 2
rys. 2).
Adresowanie pośrednie
Adresowanie pośrednie
Adresowanie pośrednie
Adresowanie pośrednie
Adresowanie pośrednie polega na zapisa−
niu w kodzie rozkazu adresu komórki pamięci,
w którym znajduje się już właściwy adres (rys.
rys.
rys.
rys.
rys.
3
3
3
3
3).
Adresowanie rejestrowe
Adresowanie rejestrowe
Adresowanie rejestrowe
Adresowanie rejestrowe
Adresowanie rejestrowe jest odmianą ad−
resowania pośredniego i polega na zawarciu
w kodzie rozkazu umownego adresu (lub na−
zwy) rejestru.
Adresowanie indeksowe
Adresowanie indeksowe
Adresowanie indeksowe
Adresowanie indeksowe
Adresowanie indeksowe jest realizowane
poprzez dodanie do adresu znajdującego się
w kodzie rozkazu zawartości pewnej, wyróżnio−
nej komórki pamięci, tzw. rejestru indeksowe−
go (rys. 4
rys. 4
rys. 4
rys. 4
rys. 4).
Adresowanie natychmiastowe
Adresowanie natychmiastowe
Adresowanie natychmiastowe
Adresowanie natychmiastowe
Adresowanie natychmiastowe polega na
zapisaniu stałej w kodzie rozkazu jako jednego
z argumentów operacji, np. dodania do akumu−
latora liczby 5 (rys. 5
rys. 5
rys. 5
rys. 5
rys. 5).
Na rysunku 6
rysunku 6
rysunku 6
rysunku 6
rysunku 6 pokazano przykładową zawar−
tość pomięci programu (zapisanej w EPROMIE)
i pamięci danych (w pamięci RAM).
Należy zwrócić uwagę, że komórki pamięci
programu mogą mieć te same numery adre−
sów, co komórki pamięci danych, a przecież fi−
zycznie są to dwie różne pamięci. Dekoder roz−
kazów “wie”, o którą pamięć chodzi w danym
rozkazie. Jednak nie zawsze pamiętają o tym
początkujący programiści, co może powodo−
wać wiele zamieszania przy analizie działania
programu. Dotyczy to też interpretacji rysun−
ków 2...5.
W informatyce dane i adresy zapisuje się
zwykle w postaci liczby szesnastkowej. Cyfry
liczby szesnastkowej to dziesięć znanych nam
cyfr systemu dziesiętnego oraz litery od A do F,
które reprezentują liczby dziesiętne od 10 do
15. Wagi poszczególnych pozycji liczby szes−
nastkowej to 16
0
=1, 16
1
=16, 16
2
=256 itd.
W celu łatwiejszego wyróżnienia tego zapisu,
liczby zaczynające się na literę poprzedza się
cyfrą 0.
[okienko11]
Wspominając o kodzie szesnastkowym mu−
simy powiedzieć o różnych kodach, które spo−
tykamy w technice cyfrowej. Kody liczbowe to
sposób zapisu informacji liczbowej. Jeśli infor−
macja przetwarzana zawiera symbole literowe
i znaki specjalne to taki kod nazwiemy kodem
alfanumerycznym. Inne kody, które służą do
wykrywania błędów i ewentualnego ich usuwa−
nia z informacji przesyłanej na pewną odleg−
łość (np. łączem telefonicznym) nazywają się
kodami korekcyjnymi.
Możemy więc powiedzieć, że kody, jakie
przyjdzie nam spotykać w praktyce mikroproce−
sorowej są zapisem informacji według pewne−
go, ściśle określonego przepisu.
Najbardziej rozpowszechnionymi kodami
liczbowymi są kody naturalne. Znanym wszyst−
kim od przedszkola jest kod dziesiętny. Cały
świat powszechnie go używa. Nie ma w nim nic
ciekawego, ot, dziesięć cyfr i już. Jednak ten
kod ma pewne cechy, które są wspólne dla
wszystkich naturalnych kodów liczbowych. Po
pierwsze, liczba zapisana w kodzie naturalnym
jest ciągiem cyfr, czyli pozycji, z którego każda
cyfra reprezentuje wielokrotność tzw. wagi da−
nej pozycji. W kodzie dziesiętnym waga jest za−
wsze potęgą liczby 10, czyli patrząc od prawej
strony liczby jest 10
0
=1, potem 10
1
=10, na−
stępnie 10
2
=100 itd. Nikt z nas jednak nie za−
stanawia się nad tym.
Każdy kod naturalny ma swoją podstawę.
Podstawą jest podstawa potęgi wagi. W kodzie
dziesiętnym podstawa wynosi 10.
[koniec okienka 11]
Powiedzieliśmy sobie, że rozkazy są pobie−
rane z pamięci, zatem przyszła kolej na omó−
wienie pamięci. Zrobimy to za miesiąc.
Mirosław Lach
51
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 7/96
Mikroprocesor
Mikroprocesor
Mikroprocesor
Mikroprocesor
Mikroprocesor
a co to takiego?
a co to takiego?
a co to takiego?
a co to takiego?
a co to takiego?
kojęzycznych zwrotów, które oznaczają
pamięci o określonych cechach.
Pamięć ROM
Pamięć ROM to Read Only Memo−
ry, czyli jest to pamięć tylko do odczytu.
No dobrze, ktoś zapyta, po co mi taka pa−
mięć, jeśli nie można w niej nic zapisać,
bo tylko się z niej odczytuje. Zapisać
można do niej, jak najbardziej. Zawartość
pamięci ROM nie może być jednak mody−
fikowana w samym systemie mikroproce−
sorowym, czyli w niej nie przechowamy
przetwarzanych danych. Możemy za to
przechowywać nasz program. Pamięć ty−
pu ROM jest pamięcią programowaną
maską. Programowanie maską polega na
takim wytrawieniu połączeń wewnętrznej
struktury pamięci, żeby komórki pamięci
miały trwałe i określone wartości zer i je−
dynek. Robi się to na etapie produkcji pa−
mięci, zanim płyteczka krzemu zostanie
zamknięta w obudowie i połączona z ze−
wnętrznymi kontaktami.
Po co jednak trzymać program i tylko
program w pamięci, która jest taka niewy−
godna, nie może być modyfikowana,
mało tego, może być programowana tylko
u producenta pamięci? Czy nie staje się
ona przeszkodą w czasie uruchamiania
systemu mikroprocesorowego?
Najważniejszą z zalet wszystkich pa−
mięci ROM jest nieulotność zapisanych
danych po wyłączeniu zasilania. Takiej
właściwości nie mają pamięci RAM. Mo−
żemy być więc spokojni o nasz program,
nie stracimy go bezpowrotnie. Pewność
przechowywanych informacji w pamięci
ROM dała tym pamięciom inną nazwę −
pamięci stałe. Możemy bowiem przecho−
wywać w nich pewne ustalone dane na
równi z samym programem.
Zbudujmy model pojedynczej komórki
pamięci ROM. Pokazano to na rysunku 7
rysunku 7
rysunku 7
rysunku 7
rysunku 7.
Komórka taka może pamiętać osiem bi−
tów, czyli cały bajt. Sygnał do odczytu ko−
Kontynujemy artykuł o podstawach
budowy i działania miroprocesorów.
W tym odcinku zajmujemy się
pamięciami.
Pamięć
Pamięć jest nieodzownym elementem
każdego systemu mikroprocesorowego,
chociaż fizycznie nie musi ona znajdować
się wewnątrz kostki mikroprocesora.
W systemie mikroprocesorowym pa−
mięć służy do przechowywania rozkazów
(kodu programu), ale też potrzebna jest
jakaś pamięć do przechowywania wyni−
ków obliczeń pośrednich, czy innych da−
nych liczbowych. Dlatego mówimy
o dwóch pamięciach: pamięci programu
i pamięci danych.
W ”prawdziwych” komputerach i nie−
których większych sterownikach przemys−
łowych, w pamięci stałej zapamiętany
jest tylko program podstawowy, zwany
czasem monitorem (w PC−tach zwany
BIOS−em). Zapisano w nim procedury ini−
cjujące działanie całego systemu mikro−
procesorowego, podprogramy współpracy
z urządzeniami zewnętrznymi. Natomiast
wykonywany program użytkowy jest łado−
wany z dysku do pamięci zapisywalnej
(RAM) i potem kolejne rozkazy pobierane
są z tej pamięci.
W prostych sterownikach cały program
zapisany jest do pamięci stałej. W takich
sterownikach całkowicie wystarcza pa−
mięć zapisywalna (pamięć RAM) o pojem−
ności dosłownie kilkudziesięciu bajtów.
Przy omiawianiu sprawy pamięci spoty−
ka się tajemnicze terminy, jak: ROM, EP−
ROM, EEPROM czy RAM. Posiadacze ja−
kiegokolwiek komputera orientują się, co
może oznaczać RAM. Znajomy czy kolega,
który też ma do czynienia z komputerami,
zawsze zapyta, ile nasz komputer ma te−
go “megaRAMu”. I tu pada jakaś liczba,
i wprost proporcjanalnie do wartości RA−
Mu rośnie szacunek dla posiadacza ta−
kiego komputera. Rzadko kto pyta, ile
“siedzi” ROMu, EPROMu czy EEPROMu.
Te tajemnicze słowa to skróty angiels−
Cały proces programowania za po−
mocą maski przypomina po trosze wy−
konanie płytki drukowanej, ale w mik−
roskopijnym wymiarze. Jak na płytce
laminatu jednolicie pokrytego miedzia−
ną folią wytrawiamy połączenia, tak
i tutaj na płytce krzemu pokrytej mikro−
skopijnie cienką warstwą aluminium,
wytrawiamy w tej warstwie układ cie−
niutkich ścieżek.
Rys. 7. Model komórki pamięci ROM.
część 2
część 2
część 2
część 2
część 2
52
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 7/96
bo tylko jedynkami. Programowanie pole−
ga więc na fizycznej zmianie zawartości
komórki pamięci stanu na przeciwny,
oczywiście tylko w tych miejscach, gdzie
to jest konieczne. Jeśli stan niezaprogra−
mowania jest stanem właściwym, to taka
komórka jest uznawana za prawidłowo
zaprogramowaną.
Popatrzmy z powrotem na rysunek 7.
Gdyby udało nam się umieścić coś w ro−
dzaju bezpiecznika pomiędzy każdym
tranzystorem a rezystorem emiterowym,
to przepalając ten bezpiecznik moglibyś−
my zmienić w sposób trwały stan każde−
go bitu. Jeśli zrobimy to wybiórczo, to za−
chowamy się tak samo jak projektant
maski dla pamięci ROM: wykonamy,
a właściwie pozostawimy te połączenia,
które należy pozostawić.
Samo programowanie komórki polega
więc na trwałym uszkodzeniu każdego bi−
tu pamięci w taki sposób, aby stan tej ko−
mórki zmienił się na przeciwny. Można to
wykonać poprzez przepalenie tego
“bezpiecznika” (rys. 8
rys. 8
rys. 8
rys. 8
rys. 8). Przeważnie jest
to zwężony odcinek ścieżki połączenio−
wej, wykonany z materiału o dużej rezys−
tancji własnej, np. ze stopu niklu i chro−
mu. Na cały układ podaje się przez chwilę
podwyższone napięcie, wymuszając tym
samym zwiększony pobór prądu i lokalne
rozgrzanie wąskiej ścieżki oporowej.
Ścieżka ta przepala się w taki sam spo−
sób, jak bezpiecznik topikowy przeciążo−
nej instalacji elektrycznej. Układ scalony
jest specjalnie przygotowany na to i jemu
jako całości to nie szkodzi.
Wadą pamięci PROM jest ich jednora−
zowość. Układ raz zaprogramowany nie
może być przeprogramowany. Nie pozwa−
lają na to przepalone w sposób nieodwra−
calny oporowe ścieżki komórek pamięci.
Pamięci PROM są to przeważnie pa−
mięci wykonane z tranzystorów bipolar−
nych, czyli są to pamięci bipolarne. Pa−
mięci te nie mogą mieć wielkich pojem−
ności ze względu na znaczną moc pobie−
raną przez komórkę pamięci oraz jej dość
duże rozmiary.
Pamięć EPROM
Kolejną odmianą pamięci PROM jest
wersja wykonana w technologii polowej
MOS. Tranzystor polowy jest mniej ener−
gożerny od tranzystora bipolarnego i do
tego może być mniejszy. W tej technologii
zapis
informacji
nie
polega
na
przepalaniu połączeń, lecz opiera się na
zjawisku tunelowego przenikania i
gromadzenia. Tranzystor polowy posiada
dwie bramki, z tego jedna nazywana jest
bramką programującą, bo na nią podaje
się napięcie programujące, zaś druga −
bramką
pływającą,
bo
została
“zatopiona” w środku izolatora. W bram−
ce pływającej może być gromadzony ładu−
nek, “wtłoczony” przez bramkę programu−
jącą, włączający tranzystor, gdy na na
bramkę programującą podano sygnał od−
czytu. Bez tego ładunku tranzystor nie
może przewodzić, ponieważ napięcie na
bramce programującej w czasie odczytu
jest za niskie. Pokazuje to rysunek 9
rysunek 9
rysunek 9
rysunek 9
rysunek 9.
Zaletą tej komórki pamięci jest zdol−
ność do zaprogramowania bez fizycznego
uszkodzenia układu. Usunięcie ładunku
z bramki pływającej jest możliwe poprzez
dostarczenie energii w postaci promie−
niowania ultrafioloetowego.
Opisana wyżej komórka pamięci stała
się podstawowym elementem budowy pa−
mięci EPROM (Erasable PROM). Pamięci
EPROM są programowane w programato−
rach, z reguły uniwersalnych, bo przysto−
sowanych do wielu typów pamięci i ich
wielkości. Kasowanie pamięci odbywa
się za pomocą lamp jarzeniowych, które
mórki, który przyjdzie na bazy tranzysto−
rów jest sygnałem wysokim. Powoduje on
wprowadzenie tranzystorów w stan prze−
wodzenia. W procesie produkcji część
tranzystorów (tych, które mają mieć za−
programowane zera), nie ma wykonanych
połączeń emiterów z rezystorami, co
skutkuje niskim stanem wyjściowym, czy−
li zerem logicznym. Istniejące połączenie
z rezystorem da stan wysoki, czyli na re−
zystorze połączonym z emiterem będzie
potencjał bliski napięciu zasilania.
Do pamięci ROM, która jest programo−
wana u producenta, zapisuje się program
sprawdzony, przetestowany, którego już
nie zamierzamy poprawiać ani ulepszać.
Programowanie maską jest najtańszym
sposobem programowania pamięci, pod
warunkiem, że zamówimy olbrzymią ich
ilość, rzędu dziesiątek i setek tysięcy
sztuk. Na to mogą sobie pozwolić tylko
wielkie montownie komputerów. Dla nas
ten rodzaj pamięci jest więc mało przydat−
ny. Należało go jednak wymienić, ponie−
waż pamięć ROM programowana u produ−
centa funkcjonuje do dziś i stała się pod−
stawą do kolejnych technologicznych mo−
dyfikacji sposobu zapisu do niej, bardziej
przyjaznego dla konstruktora małego sys−
temu mikroprocesorowego.
Pamięć PROM
Idea prostszego zapisu do pamięci
ROM szybko doczekała się realizacji
w postaci pamięci PROM (Programmable
ROM), programowalnych pamięci ROM.
Pamięci typu PROM cechuje zdolność do
zaprogramowania w programatorze, który
może stać u użytkownika na stole. Pa−
mięć nie zaprogramowana jest pamięcią,
której komórki wypełniono tylko zerami al−
Rys. 8. Model komórki pamięci PROM.
Wprawdzie do pamięci stałych mo−
żemy zaliczyć również inne rodzaje pa−
mięci, np. pamięci ferrytowe, ale tylko
elektronicy zaawansowani wiekiem
mogą kojarzyć ten termin, więc go po−
miniemy. Ale pamięcią stałą jest też zna−
na wszystkim mikrokomputerowcom
pamięć magnetyczna, do której zalicza
się wspomniana pamięć ferrytowa. Oni
jednak tak jej nie nazywają. Znają ją
pod postacią dyskietek i dysków twar−
dych czy kaset do streamerów.
Jeśli rezystor jest połączony z emiterem tranzystora, to mówimy, że rezystor jest
rezystorem emiterowym tranzystora albo rezystor znajduje się w obwodzie emitera
tranzystora. Podobnie możemy powiedzieć o rezystorze znajdującym się w obwo−
dzie kolektora czy bazy.
Grupę tranzystorów z rys. 7, które mają wspólne kolektory i wspól−
ne bazy, wykonuje się jako jeden tranzystor o jednym kolektorze
i jednej bazie, za to o tylu emiterach, ilu potrzeba. Taki jeden tranzys−
tor nazywamy tranzystorem wieloemiterowym. Symbol tranzystora
czteroemiterowego jest w tej ramce. Niech już więcej nikogo nie zdzi−
wi symbol takiego tranzystora, kiedy będzie przeglądał schematy we−
wnętrznych struktur układów scalonych.
53
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 7/96
wydzielają silne promieniowanie ultrafio−
letowe. Kostka pamięci EPROM jest za−
opatrzona w okienko wykonane ze szkła
kwarcowego, przez które promienie ultra−
fioletowe przenikają do struktury.
Dość popularną odmianą pamięci EP−
ROM jest wersja OTP (One−Time Program−
mable). Jest to pamięć EPROM umiesz−
czona w obudowie bez okienka, czyli nie
może ona być przeprogramowana i służy
do jednokrotnego zapisu. Projektant mo−
że do takiej kostki zapisać końcową wers−
ję oprogramowania. Zaletą tej odmiany
pamięci EPROM jest niska cena w porów−
naniu z obudową z okienkiem.
Wadą pamięci EPROM jest koniecz−
ność kasowania całej zawartości pamię−
ci, nawet jeśli ma być zmieniony tylko je−
den bit. Dodatkowo obudowa z okien−
kiem kwarcowym jest technologicznie
trudna do wykonania i droga.
Pamięć EEPROM
Producenci pamięci wpadli więc na po−
mysł, aby zmodyfikować tak komórkę pa−
mięci EPROM, aby każda komórka mogła
być kasowana elektrycznie niezależnie od
innych, sąsiednich komórek. Przebudo−
wali oni komórkę pamięci EPROM w taki
sposób, że ładunek gromadzony w bram−
ce pływającej można wprowadzać i usu−
wać poprzez dren wykorzystując zjawisko
tunelowe.
Tak otrzymana komórka pamięci jest
podstawą do budowy pamięci EEPROM
(Electrically EPROM). Programowanie ko−
mórki pamięci EEPROM polega na skaso−
waniu wybranego bajtu, a potem selek−
tywnej modyfikacji wybranych bitów ko−
mórki.
Komórki pamięci z czasem starzeją
się i tracą własności utrzymywania ładun−
ku w bramce pływającej. Proces przepro−
gramowywania to przyspiesza. Dlatego
warto wiedzieć, jaką liczbę programowań
zapewnia producent pamięci. Wartość
10
5
jest wynikiem przyzwoitym.
Wadą typowych pamięci EEPROM jest
czas kasowania komórki, który dochodzi
do 20ms. Jesli przemnożymy ten czas
przez liczbę komórek (np. 65536) to
otrzymujemy czas przeprogramowania ca−
łej pamięci porównywalny z czasem kaso−
wania pamięci EPROM. Z tego powodu
pamięci EEPROM znalazły zastosowanie
jako pamięci pamiętające dane ważne,
których nie chcemy stracić po wyłączeniu
zasilania. Takie pamięci mają małe po−
jemności w porównaniu z pamięciami EP−
ROM, które pamiętają kod programu.
Pamięci Flash EEPROM
Długi czas kasowania całej pamięci
EEPROM zmusił producentów do opraco−
wania odmiany pamięci EEPROM zwanej
Flash EEPROM. W pamięci Flash EEP−
ROM proces kasowania zachodzi całymi
blokami komórek, do tego bez wyjmowa−
nia kostki z urządzenia, w czasie kilku se−
kund.
Pamięci Flash osiagają znaczne po−
jemności i ich podstawowym zastosowa−
niem jest pamiętanie dużych bloków da−
nych, w tym zastępowanie w niektórych
wykonaniach pamięci masowych (np. dys−
kietek).
System
mikroprocesorowy
Nawet najprostszy system mikroproce−
sorowy musi składać się więc z mikropro−
cesora, pamięci programu i pamięci da−
nych, ale istnieją mikroprocesory zawiera−
jące pamięć programu i pamięć danych
w jednej kostce − nazywamy je mikrokom−
puterami jednoukładowymi. Wtedy cały
system składa się naprawdę z jednej
kostki.
Mikrokomputery jednoukładowe są po−
wszechnie wykorzystywane do budowy
najróżniejszych sterowników o zastoso−
waniach niekomputerowych. Nas, amato−
rów, ta klasa mikroprocesorów interesuje
najbardziej.
Do odczytania informacji z pamięci po−
trzebne są szyna adresowa i szyna da−
nych oraz ewentualnie linie współpracy
z pamięcią. W mikroprocesorze jedno−
układowym szyny te mogłyby być całkowi−
cie ukryte w jego wnętrzu, jednak szyna
danych, a często także szyna adresowa
wyprowadzone są na zewnątrz, co umożli−
wia dołączenie zewnętrznej pamięci i róż−
nych układów współpracujących.
Popularne procesory jednoukładowe
zawierają “na pokładzie” pamięć progra−
mu ROM lub EPROM o pojemności 1...8
kilobajtów i pamięć danych RAM o pojem−
ności kilkudziesięciu, do kilkuset bajtów.
Pamiętajmy, że jeśli np. szyna adreso−
wa mikroprocesora jest 16−bitowa, to mo−
że on zaadresować 2
16
= 65536 komó−
rek pamięci. Taka jest więc wielkość ob−
szaru adresowego dla tego mikroproce−
sora, czyli potrafi on bezpośrednio obsłu−
żyć pamięć o tej wielkości. A w sześćdzie−
sięciu czterech kilobajtach pamięci moż−
na zmieścić program o naprawdę dużych
możliwościach.
Mirosław Lach
Mirosław Lach
Mirosław Lach
Mirosław Lach
Mirosław Lach
Jeszcze nie tak dawno, kiedy mikro−
procesory posiadały słowo co najwyżej
8−bitowe, obok nich spokojnie egzysto−
wały układy mikroprogramowane jako
osobne układy scalone. Układ mikro−
programowany wymaga zewnętrznej
pamięci ROM, w której były zapisane
mikroinstrukcje, tworzące mikropro−
gram. Taka mikroinstrukcja zawierała
kod bardzo prostej czynności, z reguły
były to sygnały zezwolenia na te czyn−
ności, ewentualny adres następnego
rozkazu, czasem kilka bitów reprezen−
tujących stany warunkowe. Z chwilą,
gdy mikroprocesory robiły się coraz
tańsze i gwałtownie zaczęły rosnąć ich
możliwości, zaniechano produkcji poje−
dynczych układów mikroprogramowa−
nych. Układy mikroprogramowane na−
dal są, stały się fragmentem ... mikro−
procesorów. Właściwie bez nich nie
można byłoby dekodować instrukcji
przychodzących do mikroprocesora.
Pamięć mikroprogramu też została
scalona w strukturze mikroprocesora
i teraz cały układ mikroprogramowany
nazwiemy dekoderem rozkazów.
Rys. 9. Tranzystor polowy.
Bity i bajty
Jednostką miary w informatyce jest bit. Oznacza on możliwość zapamiętania
dwóch różnych, wykluczających się wzajemnie informacji. Większą jednostką miary
jest bajt, który jest równy ośmiu bitom, na których można zapamiętać 2
8
=256 infor−
macji. Oznaczamy go jako B. Jeszcze większymi jednostkami są kilobajt, megabajt,
gigabajt i terabajt, oznaczane odpowiednio jako KB, MB, GB, TB.
1KB = 2
10
B = 1 024 bajty = 8192 bity,
1MB = 2
10
KB = 2
20
B = 1 048 576 bajtów = 8 388 608 bitów,
1GB = 2
10
MB = 2
20
KB = 2
30
B= 1 073 741 824 bajty = 8 589 934 592 bity,
1TB = 2
10
GB = 2
20
MB = 2
30
KB = 2
40
B = 1.0995 x 10
12
bajtów = 8.796 x 10
12
bi−
tów.
Przez analogię tworzymy jednostki pokrewne, takie jak kilobit, megabit, gigabit
czy terabit. Jednostki terabajtu i gigabajtu mają dla nas wymiar astronomiczny.
Trzeba jednak wiedzieć, że parametry współczesnych mikroprocesorów najnowszej
generacji muszą być opisywane takimi właśnie jednostkami. Np. przestrzeń adreso−
64
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 8/96
część 3
część 3
część 3
część 3
część 3
ci. W ten sposób program zapisany w pa−
mięci jest realizowany kolejno krok po
kroku. Istnieją jednak rozkazy, które
zmieniają zawartość licznika rozkazów,
tym samym powodują, że wykonywany
jest fragment programu (podprogram lub
procedura obsługi przerwania) umiesz−
czony w jakimś odległym zakątku pamięci
programu.
Stos
Stos jest wydzielonym fragmentem pa−
mięci RAM systemu mikroprocesorowe−
go. Nazwa ta dokładnie odzwierciedla
W ostatnim odcinku cyklu
przedstawimy dalsze informacje
o budowie i działaniu
mikroprocesora. Oczywiście artykuł
ten nie kończy tematu
mikroprocesorów na łamach EdW.
To jest dopiero szkic, ogólny zarys
arcyciekawego zagadnienia.
Przygotowujemy praktyczny kurs
programowania jednego
z popularnych mikrokontrolerów
jednoukładowych. Obejmie on nie
tyle omówienie właściwości
i rozkazów mikroprocesora −
dotyczyć będzie przede wszystkim
praktycznego wykorzystania tych
układów. Zainteresowanych
Czytelników zaopatrzymy w płytki,
mikroprocesory i niezbędne
oprogramowanie. Cykl ten
rozpocznie się za kilka miesięcy.
Kody liczbowe
Kody liczbowe to sposób zapisu informacji liczbowej. Jeśli informacja przetwa−
rzana zawiera symbole literowe i znaki specjalne to taki kod nazwiemy kodem al−
fanumerycznym. Inne kody, które służą do wykrywania błędów i ewentualnego
ich usuwania z informacji przesyłanej na pewną odległość (np. łączem telefonicz−
nym) nazywają się kodami korekcyjnymi.
Możemy więc powiedzieć, że kody, jakie przyjdzie nam spotykać w praktyce
mikroprocesorowej są zapisem informacji według pewnego, ściśle określonego
przepisu.
Najbardziej rozpowszechnionymi kodami liczbowymi są kody naturalne. Zna−
nym wszystkim od przedszkola jest kod dziesiętny. Cały świat powszechnie go
używa. Nie ma w nim nic ciekawego, ot, dziesięć cyfr i już. Jednak ten kod ma
pewne cechy, które są wspólne dla wszystkich naturalnych kodów liczbowych. Po
pierwsze, liczba zapisana w kodzie naturalnym jest ciągiem cyfr, czyli pozycji,
z którego każda cyfra reprezentuje wielokrotność tzw. wagi danej pozycji. W ko−
dzie dziesiętnym waga jest zawsze potęgą liczby 10, czyli patrząc od prawej stro−
ny liczby jest 10
0
=1, potem 10
1
=10, następnie 10
2
=100 itd. Nikt z nas jednak
nie zastanawia się nad tym.
Każdy kod naturalny ma swoją podstawę. Podstawą jest podstawa potęgi wa−
gi. W kodzie dziesiętnym podstawa wynosi 10.
Adresy i adresowanie
Pojęcie adresu kojarzy się z listem, ko−
pertą i listonoszem. Dokładnie adresuje−
my list, ponieważ nie znamy innego spo−
sobu wyróżnienia odbiorcy, tak aby nieza−
wodnie otrzymał przeznaczone dlań wieś−
ci. Nie wystarczy napisać na kopercie:
“Dla sympatycznego pana Henia” − trze−
ba podać nazwę miejscowości, ulicę,
numer domu, ewentualny numer miesz−
kania.
Rodzajem adresu jest też numer tele−
fonu, czyli liczba, którą trzeba wybrać za
pomocą tarczy aparatu telefonicznego.
Co ważne, adres w postaci liczby jest
zrozumiały dla mikroprocesora! Dla niego
adres jest liczbą określającą jednoznacz−
nie miejsce w pamięci − poszczególne ko−
mórki pamięci są więc ponumerowane.
Pamięć ma zwykle organizację bajtową,
to znaczy że pod jednym adresem zapisu−
je się lub odczytuje jednocześnie osiem
bitów.
Rejestry
Rejestry są szczególnymi fragmentami
(komórkami) wewnętrznej pamięci zapisy−
walnej mikroprocesora. Oprócz “central−
nego rejestru”, nazywanego akumulato−
rem, współpracującego z jednostką aryt−
metyczno−logiczną, istnieje szereg rejest−
rów pomocniczych. Rejestry tym różnią
się od “zwykłych” komórek pamięci, że
można ich zawartość przetwarzać w różny
sposób, a nie tylko zapisywać i odczyty−
wać. Na zawartości rejestrów zazwyczaj
mogą być wykonywane operacje arytme−
tyczne i logiczne.
Licznik rozkazów
Każdy mikroprocesor posiada licznik
rozkazów PC (Program Counter). Licznik
rozkazów jest nie tyle licznikiem liczącym
“w górę”, ale raczej rejestrem, w którym
jest pamiętany bieżący adres wykonywa−
nej instrukcji. Jego długość odpowiada dł−
ugości szyny adresowej pamięci progra−
mu. W zasadzie po każdym cyklu rozkazo−
wym licznik zwiększa swą zawartość o 1,
czyli adresuje następną komórkę pamię−
a co to takiego?
a co to takiego?
a co to takiego?
a co to takiego?
a co to takiego?
Mikroprocesor
Mikroprocesor
Mikroprocesor
Mikroprocesor
Mikroprocesor
65
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 8/96
sposób dostępu do informacji. Przypomi−
na on stos talerzy. Ażeby zdjąć talerz, np.
czwarty od góry, bez rozrzucenia całego
stosu, trzeba zdjąć wszystkie na nim le−
żące − w naszym przykładzie trzy. Każde
dołożenie do stosu jeszcze jednego tale−
rza powoduje, że dostęp do pierwszych
z nich jest coraz bardziej utrudniony.
Stos jest realizacją kolejki danych typu LI−
FO (Last In First Out − ostatni wszedł,
pierwszy wyjdzie). Zapewne zmywanie
naczyń nie jest twoją ulubioną czyn−
nością, wiedz jednak, że stos w mikro−
procesorze jest naprawdę bardzo uży−
teczny.
Na stos są zapisywane adresy powro−
tu z podprogramów oraz mogą być prze−
chowywane parametry dla tychże podpro−
gramów. Mikroprocesor pamięta tylko ad−
res ostatnio zapisanej komórki pamięci,
czyli adres wierzchołka stosu. Adres
wierzchołka stosu jest przechowywany
w specjalnym rejestrze, zwanym wskaźni−
kiem stosu, w skrócie oznaczanym SP
(stack pointer).
Wskaźniki procesora
Wskaźniki procesora stanowią poje−
dyncze bity pamięci, przechowywane
w wydzielonym rejestrze zwanym słowem
stanu PSW (Program Status Word). Naj−
częściej spotykane wskaźniki:
− wskaźnik przeniesienia/pożyczki CY
(Carry), pamiętający stan przeniesie−
nia/pożyczki po wykonaniu operacji
arytmetycznych,
− wskaźnik przepełnienia OV (Overload),
pamiętający skutki ewentualnego prze−
kroczenia zakresu dla wybranych ope−
racji, np. dzielenia przez zero,
− wskaźnik zerowania, w którym jest pa−
miętana informacja o zerowym wyniku
ostatniej operacji arytmetycznej bądź
logicznej,
− wskaźnik parzystości, w którym jest in−
formacja, że w ostatnim wyniku opera−
cji arytmetycznej czy logicznej przepro−
wadzanej przez jednostkę centralną za−
warta była parzysta liczba jedynek.
Oprócz powyższych wskaźników, wy−
stępujących niemal we wszystkich mikro−
procesorach, pojawiają się inne, charak−
terystyczne dla konkretnego typu.
Przerwania
Jednym z wielu elementów w czasie
podróży po morzu, jakie musi brać pod
uwagę kapitan statku, są komunikaty me−
teo. Gdy kurs przecina strefę burz, trzeba
podjąć decyzję: wpłynąć w nią czy ją omi−
nąć. Co ważne, na początku rejsu nie
można przewidzieć, czy i ewentualnie kie−
dy, statek taką burzę napotka.
Mikroprocesor jest maszyną synchro−
niczną, która pracuje w pewnym otocze−
niu, jakim są urządzenia zewnętrzne, np.
klawiatura, wyświetlacz, układ grafiki,
urządzenia pamięci masowej (dyski, stre−
amery), interfejsy itp. Wiele z nich co pe−
wien czas wymaga interwencji mikropro−
cesora, czy to w celu odebrania danych,
czy też ich przekazania, czasem wystero−
wania wybranych linii itp. Ponieważ czas
pomiędzy zgłoszeniami takich potrzeb
jest nieokreślony, możemy uznać, że przy−
chodzą one asynchronicznie, czyli nieza−
leżnie od aktualnie wykonywanych rozka−
zów, a tym bardziej od impulsów zegaro−
wych. Asynchroniczne zdarzenie wymaga−
jące reakcji mikroprocesora nazywamy
przerwaniem.
Mikroprocesor w każdym cyklu maszy−
nowym sprawdza stan wskaźników prze−
rwań lub specjalnych linii przerwań. Jeśli
wykryje żądanie obsługi przerwania, na−
stępuje zawieszenie wykonywania progra−
mu głównego i przejście do procedury ob−
sługi przerwania.
Mikroprocesor posiada zwykle cały
system przerwań, który może przyjmować
przerwania z kilku źródeł. Istnieje więc
potrzeba arbitrażu obsługi przerwań, czyli
zadecydowania, które z przerwań jakie
nadeszły jednocześnie, powinno być ob−
służone w pierwszej kolejności.
W celu ich rozróżnienia narzucane są
priorytety jednych przerwań nad drugimi,
polegające na tym, że przerwanie o prio−
rytecie wyższym może przerwać obsługę
przerwania o priorytecie niższym, ale ni−
gdy odwrotnie, a w przypadku wykrycia
kilku przerwań jednoczesnych, będzie ob−
sługiwane to z nich, które ma najwyższy
priorytet.
Wprowadzane są też znaczniki progra−
mowego zezwolenia na obsługę przerwa−
nia, czyli po zablokowaniu obsługi przez
taki znacznik, mikroprocesor nie będzie
reagował na to przerwanie i takie prze−
rwania nazwiemy maskowalnymi. Jeśli są
przerwania maskowalne, zatem muszą is−
tnieć przerwania niemaskowalne, które
posiadają najwyższy priorytet i służą prze−
de wszystkim do reakcji na zdarzenia ka−
tastroficzne, np. wyłączenie zasilania,
awaryjne zatrzymanie działania sterowa−
nego urządzenia itp. Bywa również tak, że
system priorytetów jest budowany progra−
mowo, a więc jeden podprogram obsługi
jest wspólny dla wszystkich źródeł i w sa−
mej procedurze zawarto kolejność reak−
cji. O tym, jak pracuje układ przerwań de−
cyduje konstruktor mikroprocesora i my,
użytkownicy, nie mamy na to wpływu.
Interfejs we/wy
Interfejs we/wy jest przeznaczony do
komunikacji mikroprocesora ze światem
zewnętrznym. Są to “usta i uszy” mikro−
procesora, nazywane wrotami albo porta−
mi. Do iterfejsu są podłączone “oczy i rę−
ce” − czyli wszelkiej maści urządzenia ze−
wnętrzne, takie bez których mikroproce−
sor w zasadzie może się obejść, ale
z którymi musi współpracować, bo po to
został włożony do urządzenia.
Fizycznie interfejs zawiera pewną ilość
linii sygnałowych, podzielonych na kilka
grup, zwanych szynami. Mamy więc szyny
danych, szyny adresowe, szyny linii
współpracy i inne. O ich strukturze i sze−
rokości (ilości linii składowych) decyduje
obszar zastosowań samego mikroproce−
sora.
Szyna danych służy do przesyłania da−
nych do/z mikroprocesora.
Na szynę adresową mikroprocesora
wystawiany jest adres potrzebny dekode−
rowi adresów do uaktywnienia właściwe−
go urządzenia zewnętrznego (np. pamięci
zewnętrznej).
Szyna linii współpracy zawiera w sobie
pojedyncze linie, po których przesyłane
są sygnały informujące o stanie urządzeń
zewnętrznych i o stanie mikroprocesora.
Może być to linia informująca o wystawie−
niu danych na szynę danych i adresu na
szynę adresową w celu przesłania ich do
pamięci zewnętrznej, linia potwierdzenia
odebrania danych, linia żądania przerwa−
nia oraz komplementarna do niej, linia
potwierdzenia odebrania przerwania itp.
Do szyny linii współpracy zaliczono też li−
nie przerwań, chyba słusznie, bowiem
one również wnoszą jakąś jednobitową
informację.
Mikroprocesor jednoukładowy ma
często kilka portów, których poszczegól−
ne linie mogą pełnić różne funkcje okreś−
lone przez program.
Rozkazy
Rozkazy to polecenia. Mikroprocesor
nie rozumie poleceń wydawanych ludzkim
głosem. Rozumie za to liczby. Rozkaz jest
więc liczbą. Rozkazy są kolejno odczyty−
wane z pamięci i przesyłane do dekodera
rozkazów, który jak wiemy powoduje wy−
konanie w efekcie szeregu elementar−
nych mikrooperacji.
Pamięć programu większości proceso−
rów ma organizację bajtową, co oznacza,
że wystawienie adresu przez licznik rozka−
zów powoduje wczytanie z pamięci pro−
gramu 8−bitowego kodu rozkazu. Daje to
2
8
= 256 różnych rozkazów − wydawałoby
się, że to wystarczy.
Tymczasem wiele rozkazów nawet
prostego ośmiobitowego mikroprocesora
powinno być zbudowanych z kilku części:
części operacyjnej, która określa czyn−
ność (przesłanie, dodawanie itp.) oraz
części argumentowej. Argumentem może
być adres, stała (liczba), kod rejestru itp.
W rzeczywistości 8 bitów to zbyt mało,
aby w nich zmieścić część operacyjną
i jeszcze mieć miejsce na argumenty. Wy−
myślono więc, że długość rozkazu będzie
zmienna, równa wielokrotności bajtu.
Tak więc w pamięci programu oprócz
liczb przedstawiających kody rozkazów
66
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
Mikrokomputery
E
LEKTRONIKA DLA WSZYSTKICH 8/96
zawarte są także liczby reprezentujące
dane. Ta sama liczba dwójkowa
00000100 zawarta w pamięci programu
może oznaczać “zwiększ zawartość aku−
mulatora o 1” lub też po prostu liczbę 4.
O interpretacji, czyli liczbie bajtów do od−
czytania decyduje część operacyjna, czyli
pierwszy bajt rozkazu.
Czas wykonania rozkazów jest mierzo−
ny w cyklach procesora. Są takie mikro−
procesory, które wszystkie swoje rozkazy
realizują w jednym cyklu maszynowym
i jest to cechą procesorów o zredukowa−
nej liście rozkazów RISC (Reduced In−
struction Set Computer). Mikroprocesory
wykonujące rozkazy w czasie kilku cykli to
przedstawiciele grupy procesorów CISC
(Complete Instruction Set Computer).
Trudno nam będzie opisać szczegóło−
we właściwości rozkazów mikroproceso−
ra, jeśli nie mamy na myśli konkretnego
typu. Można jednak znaleźć cechy wspól−
ne i określić je dla pewnych grup rozka−
zów.
Rozkazy przesłań to wszelkiego rodza−
ju rozkazy służące do powielania danych
w różnych miejscach pamięci systemu
mikroprocesorowego. Lista tych rozkazów
może być bardzo bogata i umożliwia ona
przesłanie informacji w dowolne miejsce
obszaru adresowego mikroprocesora
z wykorzystaniem różnych sposobów ad−
resowania. Rozkazy przesłań są zazwy−
czaj dwuargumentowe, z których jednym
argumentem jest miejsce (adres) źródła
danych, a drugim miejsce (adres) jego
przeznaczenia, niekoniecznie w takiej ko−
lejności. Mikroprocesor może przesyłać
dane jednobitowe, jednobajtowe i wielo−
bajtowe.
Rozkazy operacji arytmetycznych i lo−
gicznych − ich liczba jest zależna od możli−
wości (można powiedzieć − ”inteligencji”)
samej jednostki arytmetyczno−logicznej.
Spotykamy następujące rozkazy:
− dodawania, z przeniesieniem lub bez
niego;
− odejmowania, z pożyczką lub bez niej;
− inkrementacji (zwiększenia o 1);
− dekrementacji (zmniejszenia o 1);
− porównania;
− mnożenia;
− dzielenia;
− korekcji dziesiętnej w celu uzyskania
wyniku w kodzie BCD;
− iloczynu logicznego;
− sumy logicznej;
− wyłącznej sumy logicznej;
− przesunięcia bitowego, w prawo i w le−
wo.
Rozkazy sterujące wykonaniem progra−
mu (skoki) przenoszą wykonanie progra−
mu w jego inne miejsce. Ich działanie po−
lega na odpowiedniej modyfikacji licznika
rozkazów w taki sposób, ażeby po wyko−
naniu skoku, następnym rozkazem był
rozkaz odczytany z innego miejsca pamię−
ci programu. Skoki dzielimy na bezwarun−
kowe, warunkowe, skoki do podprogra−
mów i powroty z podprogramów. Ze
względu na zasięg skoku mogą to być
skoki krótkie, długie i względne.
Skoki mogą być wykonane w ramach
pewnego, wydzielonego obszaru całej
przestrzeni adresowej i takie skoki na−
zwiemy skokami w ramach strony albo
skokami krótkimi. Praktyka programowa−
nia dowodzi, że wiele skoków jest wyko−
nywanych do pobliskich adresów, nie ma
więc istotnej potrzeby wprowadzania do
kodu rozkazu pełnego adresu, który może
mieć np. 32 bity, jeśli mamy pewność, że
zmieni się tylko mniej niż np. 10 najmłod−
szych bitów. Oszczędzamy w ten sposób
na długości programu. Oczywiście muszą
istnieć skoki długie, adresujące w swym
kodzie całą dostępną przestrzeń progra−
mu.
Innym sposobem skrócenia długości
kodu skoku jest skok względny. Metoda
zmiany zawartości licznika rozkazów pole−
ga na dodaniu do licznika programu pew−
nego przesunięcia zawartego w części ar−
gumentowej. Przesunięcie to może być
jednobajtowe, rozumiane jako liczba zapi−
sana w kodzie uzupełnieniowym do
dwóch. Oznacza to, że skok odbywa się
w granicach od +127 (w przód) do −128
bajtów (wstecz).
Skoki bezwarunkowe, jak sama ich na−
zwa wskazuje, są wykonywane niezależ−
nie od stanu mikroprocesora.
Skoki warunkowe są wykonywane, jeś−
li zostanie spełniony warunek stanu
określonego znacznika. Może to być stan
bitu albo bajtu. Niespełnienie warunku
powoduje przejście do rozkazu znajdują−
cego się bezpośrednio po rozkazie skoku
warunkowego. W kodzie rozkazu może
być umieszczony adres jako jeden argu−
ment operacji, drugim argumentem ope−
racji jest adres bitu czy bajtu warunkują−
cego. Innym rozwiązaniem skoku warun−
kowego jest skok z ominięciem. W ko−
dzie instrukcji nie ma adresu skoku, na−
tomiast spełnienie warunku powoduje, że
następna instrukcja pozostanie zignoro−
wana i procesor wykona kolejną instruk−
cję programu. Omijana instrukcja jest
z reguły skokiem bezwarunkowym.
Skok do podprogramu różni się nieco
od wyżej opisanego skoku. Oprócz prze−
niesienia wykonania programu w inne
miejsce musi on zapamiętać adres po−
wrotu do instrukcji następującej po nim.
Adres ten jest pamiętany na stosie.
Z chwilą zdekodowania instrukcji sko−
ku do podprogramu, wyznaczany jest ad−
res następnej instrukcji i wysyłany jest na
stos. Wskaźnik stosu jest modyfikowany
w taki sposób, ażeby wskazywał adres
wierzchołka stosu, czyli komórki pamięci,
w których zapisano adres powrotu z pod−
programu (rysunek 10
rysunek 10
rysunek 10
rysunek 10
rysunek 10).
Instrukcja powrotu z podprogramu
działa odwrotnie niż skoku do podprogra−
mu. Zdejmuje ona z wierzchołka stosu
adres powrotu z podprogramu i zapisuje
go do licznika rozkazu, jednocześnie mo−
dyfikując wskaźnik stosu, który będzie
wskazywał na ewentualny adres powrotu
z innego, wcześniej wywołanego podpro−
gramu. Nieco inaczej działa instrukcja po−
wrotu z podprogramu obsługi przerwania.
W odróżnieniu od instrukcji powrotu ze
zwykłego podprogramu, informuje ona
system przerwań o zakończeniu obsługi
przerwania. Ma to znaczenie dla innych
przerwań, które mogą “starać” się
o “dostęp” do procesora.
Instrukcje skoku do podprogramu i po−
wrotu z nich mogą być wykonywane wa−
runkowo na zasadach przedstawionych
wyżej.
Podane informacje mogą, choć nie po−
winny nikogo stresować − programista na−
prawdę nie musi znać szczegółów budo−
wy mikroprocesora. Powinien orientować
się w jego architekturze, znać listę rozka−
zów i przede wszystkim rozumieć sposób
działania.
Niech przedstawiony artykuł ośmieli
Czytelników do bliższego zapoznania się
z mikroprocesorami i do stosowania ich
w swoich konstrukcjach!
Mirosław Lach
Mirosław Lach
Mirosław Lach
Mirosław Lach
Mirosław Lach
Rys. 10.