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.