Zewnętrzna pamięć danych i programu
Komunikacja procesora z zewnętrznymi
układami pamięci programu i danych odbywa się poprzez port
BUS, który pełni funkcję dwukierunkowej, multipleksowanej
magistrali adres / dane. Do portu BUS jest wysyłanych osiem mniej
znaczących bitów adresu, strobowanych sygnałem ALE. Cztery
bardziej znaczące bity 12-bitowego adresu pamięci programu są
wysyłane do portu P23-0. Przesyłanie danych jest sterowane za
pomocą sygnałów:
/PSEN - odczytywanie z zewnętrznej pamięci programu,
/RD - odczytywanie z zewnętrznej pamięci danych,
/WR - zapisywanie do zewnętrznej pamięci danych.
Przy wykorzystaniu uniwersalnych układów pamięci konieczne jest
zapamiętanie adresu wysłanego do portu BUS w dodatkowym
rejestrze adresowym. Może to być dowolny rejestr statystyczny np.
8212 (UCY 74S412), 8282 (UCY 74S482) czy 74LS373.W ten
sposób otrzymuje się typową strukturę systemu
mikroprocesorowego z 12-bitową magistralą adresową (8-bitowy
adres pamięci danych), 8-bitowąmagistralą danych i sygnałami
sterującymi /PSEN, /RD, /WR.
Odczytywanie z zewnętrznej pamięci programu jest wykonywane
przez procesor przy pobieraniu kodu rozkazu, argumentu
bezpośredniego lub danej z pamięci programu, spod adresu
większego lub równego1024 (400H) w układach 8048 i 8748 oraz
2048 (800H) w układach 8049 i 8749. Natomiast we wszystkich
układach rodziny MSC-48 odczytywanie to jest wykonywane, gdy
na wejściu EA jest stan wysoki (+ 5V) - przy każdym pobraniu z
pamięci programu.
Przebiegi czasowe sygnałów w cyklu odczytywania pokazano
na rys.
Adres jest wpisywany do portów BUS i P23-0, gdy ALE =
1. Jest on podtrzymywany na P2 do końca cyklu, natomiast na BUS -
do zakończenia (opadającego zbocza) impulsu ALE. Port BUS jest
ustawiany jako wejście (w stan dużej impedancji). W następnej
kolejności jest wytwarzany sygnał sterujący /PSEN. W odpowiedzi
układ pamięci wysyła do portu BUS zawartość zaadresowanej
komórki. Wczytanie danych przez procesor następuje w chwili
narastania zbocza sygnału /PSEN, po czym kończy się wysyłanie
adresu na P2.
Jeżeli wcześniej, przed wysyłaniem adresu, do portu P2 zostały
wpisane dane (rozkazem OUTL), to są one (bity od 0 do3)
blokowane na czas wysyłania adresu i odtwarzane po jego
zakończeniu. Dane wysyłane do P2 są obecne na wyjściu tego
portu zawsze w chwili narastania zbocza sygnału ALE i można je,
jeśli to konieczne, zapamiętać w zewnętrznym rejestrze
dynamicznym (np. 74LS175 na rys. poniżej).
W ten sposób - przy pracy z
zewnętrzną pamięcią programu - można jako wyjście
wykorzystać cały port P2.
Cykl maszynowy odczytywania lub zapisywania zewnętrznej
pamięci danych jest wykonywany jako drugi w cyklu rozkazowym
podczas realizacji rozkazów MOVX. Przebiegi czasowe sygnałów w
cyklu odczytywania pokazano na rys.
Cykl ten przebiega
podobnie jak odczytywanie pamięci programu, z tą tylko różnicą,
że 8-bitowy adres pamięci danych jest wysyłany jedynie do portu
BUS. Wytwarzany jest przy tym sygnał sterujący /RD, a nie /PSEN.
Przebiegi czasowe sygnałów w cyklu zapisywania do
zewnętrznej pamięci danych przedstawiono na rys.
Adres jest,
jak poprzednio, wysyłany do portu BUS i strobowany sygnałem
ALE. Wytwarzany jest sygnał sterujący /WR i do portu BUS
zostają wpisane dane do zapisywania. Są one obecne na wyjściu
BUS do końca (narastającego zbocza) impulsu /WR.
Dołączanie zewnętrznej pamięci programu
Na rysunku pokazano schemat
przykładowego układu mikrokomputera rodziny MCS-48, z
dołączonym układem pamięci EPROM 2716 jako zewnętrzną
pamięcią programu. W sposób analogiczny można dołączyć
dowolny układ pamięci.
Na rysunku poniżej przedstawiono sposób dołączenia
specjalizowanego układu 8355 (8755), którego pamięć ROM
(EPROM) pracuje jako pamięć programu mikrokomputera. Porty PA
i PB układu są umieszczone w przestrzeni adresowej zewnętrznej
pamięci danych (komunikacja za pomocą rozkazów MOVX) i mają
adresy 00 (PA) oraz 01 (PB).
Adresy pamięci zewnętrznej dla obu powyższych układów
zestawiono w tablicy. Zależą one od pojemności wewnętrznej
pamięci programu mikrokomputera.
Typ mikrokontrolera | Pojemnośę wewnętrznej pamięć programu | Adresy zewnętrznej pamięć programu |
8048, 8748 | 1K | $400-$0bff |
8049, 8749 | 2K | $800-$0fff |
8035, 8039, 8040,8048, 8049, 8050 | - | $000-$07ff |
8748, 8749 przyEA=+5V | - | $000-$07ff |
Dołączanie zewnętrznej pamięci danych
Na rysunku przedstawiono schemat systemu
z pamięcią RAM 6116 (2K x 8) jako zewnętrzną pamięcią
danych. Z układu pamięci wykorzystuje się tu tylko 256 słów -
tyle można zaadresować za pomocą ośmiu bitów.
W przypadku, gdy jest potrzebna większa pojemność
pamięci, trzeba zastosować technikę przełączania bloków. Polega
ona na tym, że dołączoną zewnętrzną pamięć danych dzieli się
na bloki po 256 słów, a numer bloku, z (do) którego rozkazem
MOVX będą przesłane dane, wysyła się wcześniej do jednego z
portów mikrokomputera. Układ zewnętrzny dekodera adresów musi
zapewnić uaktywnienie odpowiedniego bloku pamięci. W
przypadku, gdy pamięć danych jest jednym układem scalonym o
odpowiednio dużej pojemności, numer bloku określa po prostu
bardziej znaczące bity adresu w pamięci.
Do wysyłania
numeru bloku mogą być wykorzystane bity od 0 do 3 portu P2
i to również wtedy, kiedy do systemu jest dołączona
zewnętrzna pamięć programu, bowiem komunikacja procesora z
pamięcią programu i danych odbywa się w różnych cyklach
maszynowych.
Zastosowanie specjalizowanego układu 8155 jako zewnętrznej
pamięci danych przedstawiono na rys.
Porty oraz rejestry
układu czasowego są tu umieszczone w przestrzeni adresowej
zewnętrznej pamięci danych, oczywiście w innym bloku niż
pamięć RAM. Numer bloku określa bit P20, dołączony do
wejścia IO//M. Jeśli P20 =0, to przesłanie MOVX dotyczy
pamięci; jeśli natomiast P20 = 1, to dotyczy ono portów układu
według adresów podanych na rys. powyżej. Jeżeli ma być wykorzystana
tylko pamięć RAM tego układu, to należy jego wejście IO//M
dołączyć do masy.