Rozdział 4.
Pamięci stałe i statyczne
Do przechowywania informacji służą układy pamięci. Można wśród nich wyróżnić następujące
grupy:
f& pamięci stałe, które nie tracą zawartości po wyłączeniu zasilania:
" pamięci typu ROM (ang. Read Only Memory), produkowane z zawartością określoną
na etapie produkcji;
" pamięci typu PROM (ang. Programmable Read Only Memory), które mogą być
jednokrotnie zaprogramowane przez użytkownika;
" pamięci typu EPROM (ang. Erasable Programmable Read Only Memory), które mogą
być wielokrotnie programowane, jednak przedtem należy skasować ich zawartość
przez naświetlenie promieniami UV;
" pamięci typu EEPROM lub E2PROM (ang. Electrically Erasable Programmable Read
Only Memory), które różnią się od pamięci EPROM tym, że kasowanie jest sterowane
elektrycznie i nie wymaga naświetlania;
f& pamięci o swobodnym dostępie RAM (ang. Random Access Memory), które tracą zawartość
po wyłączeniu zasilania:
" pamięci statyczne SRAM (ang. Static Random Access Memory), nie wymagające
odświeżania, charakteryzujące się krótszym czasem dostępu, ale też mniejszą
pojemnością i wyższą ceną;
" pamięci dynamiczne DRAM (ang. Dynamic Random Access Memory), które wymagają
złożonych układów sterujących i mają dłuższy czas dostępu, ale za to mają większą
pojemność i są tańsze;
" pamięci pseudostatyczne PRAM (ang. Pseudostatic Random Access Memory), mające
wewnętrzną strukturę pamięci dynamicznej, ale na zewnątrz zachowujące się jak pamięć
statyczna.
Cechą każdego układu pamięci jest tzw. organizacja. Określa ona liczbę słów pamiętanych
przez układ oraz długość pojedynczego słowa wyrażoną w bitach. Organizację konkretnego
układu pamięci można łatwo ustalić, biorąc pod uwagę wyprowadzenia adresowe
i wyprowadzenia danych. Jeżeli liczba wejść adresowych wynosi n, a liczba wejść-wyjść danych
w, to pamięć ma organizacjÄ™ 2n × w. WyjÄ…tkiem od tej reguÅ‚y sÄ… dynamiczne pamiÄ™ci RAM,
w których liczba wejść adresowych jest zazwyczaj dwukrotnie mniejsza, niż wynikałoby to
z liczby słów w układzie pamięci.
Pamięci PROM i EPROM oraz pamięci statyczne mają niemal identyczne zasady stosowania.
Pamięci dynamiczne natomiast wymagają odmiennych, specyficznych technik konstrukcyjnych
i dlatego został im poświęcony osobny rozdział.
Pamięci PROM
PamiÄ™ci typu PROM mogÄ… mieć pojemność od 32 × 8 bitów do 1 024 × 8 lub 2 048 × 4 bity.
Wyjścia układów pamięci są najczęściej trójstanowe albo z otwartym kolektorem, dzięki czemu
można je łatwo podłączać do magistral w systemach mikroprocesorowych. Każdy układ ma
co najmniej jedno wejście bramkujące CS (ang. Chip Select) lub CE (ang. Chip Enable), aktywne
w stanie wysokim lub niskim. Stan nieaktywny na tym wejściu powoduje w układach z wyjściami
trójstanowymi przejście wyjść w stan wysokiej impedancji, natomiast w układach z wyjściem
z otwartym kolektorem pozostawia wyjścia w stanie 1 . Jeżeli układ ma kilka wejść
bramkujących, to wszystkie muszą być aktywne, aby można było odczytać zawartość pamięci.
Wyprowadzenia pamięci PROM o różnych organizacjach ilustruje rysunek 4.1.
Rysunek 4.1. Wyprowadzenia układów pamięci PROM
Pamięci PROM są produkowane przez wiele firm. Niestety, oznaczenia stosowane
przez poszczególne firmy nie są zgodne ze sobą. Przykładowo, układy firmy AMD mają
przedrostek 27S, Texas Instruments 74S, Signetics 82S, a Intel 36. Oznaczenia
niektórych układów PROM o różnych organizacjach i typach wyjść zebrano w tabeli 1.
Ze względu na stosunkowo nieduże pojemności i krótki czas dostępu, pamięci PROM stosuje się
w układach dekoderów adresów lub w innych układach kombinacyjnych, których realizacja
oparta na bramkach TTL, lub nawet na bardziej złożonych układach (demultiplekserach,
komparatorach itp.), byłaby zbyt trudna. Przykładem może być dekoder kodu dwójkowego na kod
wyświetlacza 7-segmentowego pozwalający na wyświetlanie cyfr szesnastkowych lub dekoder
rodzaju cyklu maszynowego mikroprocesora Z-80.
Pamięci EPROM
PamiÄ™ci EPROM majÄ… najczęściej organizacjÄ™ 8- lub 16-bitowÄ… i pojemnoÅ›ci od 2 048 × 8 (2K ×
8) do 65 536 × 8 (64K × 8). Wszystkie ukÅ‚ady majÄ… wyjÅ›cia trójstanowe. Oprócz wejść
adresowych i wyjść danych układy posiadają także wejścia sterujące. Podczas normalnej pracy
układu wykorzystywane jest wejście CE (ang. Chip Enable) oraz OE (ang. Output Enable), oba
aktywne w stanie niskim. Jeżeli na wejściu CE jest 0 , to układ dekoduje stan wejść adresowych
w celu znalezienia żądanej komórki pamięci. Jednakże zawartość tej komórki jest podawana
na wyjścia danych dopiero wtedy, gdy na wejściu OE jest również 0 . Wyprowadzenia układów
pamięci EPROM ilustruje rysunek 4.2. Warto zauważyć, że rozkład wyprowadzeń umożliwia
zastosowanie układu o większej pojemności bez znaczących zmian w układzie.
Tabela 1. Organizacja przykładowych układów pamięci PROM
Organizacja Wyjście z otwartym kolektorem Wyjście trójstanowe
27S08, 74S188, 82S23 27S09, 74S288, 82S123
32×8
82S186
64×8
27S10, 74S387, 82S126, 3601 27S11, 74S287, 82S129, 3621
256×4
74S470 74S471, 82S114
256×8
74S570, 82S130, 3602 74S571, 82S131, 3622
512×4
74S472, 3604 74S473, 3624
512×8
82S140 82S141
512×8
74S572, 82S136 74S573, 82S137
1024×4
82S180, 3608 82S181, 82S28
1024×8
82S184 82S185
2048×4
Rysunek 4.2. Wyprowadzenia układów pamięci EPROM
Pamięci EPROM są obecnie stosowane najczęściej jako pamięć programu. Oczywiście mogą one
także przechowywać duże obszary danych, np. wzorce znaków do wyświetlania lub parametry
sterowanego obiektu.
Pamięci statyczne RAM
Pierwsze pamięci statyczne RAM miały organizację 1- i 4-bitową, natomiast obecnie najczęściej
stosuje siÄ™ ukÅ‚ady o organizacji 8-bitowej. Pojemność pamiÄ™ci wynosi od 4K × 1 do 256K × 1,
od 1K × 4 do 64K × 4 lub od 2K × 8 do 128K × 8. PamiÄ™ci o organizacji 1-bitowej majÄ…
rozdzielone wejście i wyjście danych. Pozostałe układy mają dwukierunkowe linie wejścia-
wyjścia danych, przy czym wyjścia te są trójstanowe. Wszystkie układy mają wejście CE (ang.
Chip Enable) oraz WE (ang. Write Enable), oba aktywne w stanie niskim. Niektóre układy
pamięci statycznych mają ponadto wejście OE (ang. Output Enable) aktywne w stanie niskim.
Jeżeli układ posiada więcej niż jedno wejście CE, to każde z nich musi być w stanie aktywnym,
aby było możliwe wykonanie operacji na pamięci. Operacją tą może być odczyt lub zapis. Jeżeli
układ nie ma wejścia OE , to odczyt jest możliwy, jeżeli CE = 0 i WE = 1 ; zapis następuje,
gdy oba te sygnały są w stanie 0 . W układach wyposażonych w sygnał OE stan niski
na wejściach OE i CE powoduje odczyt, a na wejściach CE i WE zapis.
Rozkład wyprowadzeń układów pamięci statycznej RAM o organizacji 1- i 4-bitowej ilustruje
rysunek 4.3.
Rysunek 4.3. Wyprowadzenia układów pamięci statycznej RAM o organizacji 1- i 4-bitowej
Rozkład wyprowadzeń układów pamięci statycznej RAM o organizacji 8-bitowej ilustruje rysunek
4.4.
Układy pamięci statycznej stosuje się jako pamięć danych w układach mikroprocesorowych.
Układy pamięci mogą też być wykorzystywane jako pamięć programu, jednak wówczas system
musi zawierać też pamięć stałą. W pamięci tej zawarty jest fragment oprogramowania, który
wczytuje do pamięci RAM program użytkowy.
W dużych systemach mikroprocesorowych pamięci statyczne stosowane są jako pamięci
podręczne mikroprocesorów, podczas gdy główna pamięć takiego systemu jest pamięcią
dynamiczną. Dzięki takiemu rozwiązaniu możliwe jest wyposażenie układu we względnie tanią
pamięć dynamiczną o dużej pojemności przy jednoczesnym zachowaniu wysokiej efektywności
pamięci statycznej. Efektywność ta zwiększa się podczas wielokrotnego wykonywania małych
fragmentów programu lub podczas wielokrotnych odwołań do tych samych obszarów danych.
Rysunek 4.4. Wyprowadzenia układów pamięci statycznej RAM o organizacji 8-bitowej
Konstrukcja modułów pamięci
Dostępne scalone układy pamięci, jakkolwiek liczne, bardzo rzadko w pełni zaspokajają potrzeby
konstruktorów systemów jeśli chodzi o organizację projektowanego modułu pamięci. Zarówno
liczba słów, jak i długość słowa, mogą okazać się niewystarczające. Należy wówczas odpowiednio
połączyć układy pamięci, aby uzyskać pożądaną organizację modułu. Techniki te umożliwiają:
" zwiększenie liczby słów w pamięci,
" zwiększenie długości słowa,
" zwiększenie liczby słów i długości słowa pamięci.
Wymienione techniki stanowią podstawę konstrukcji modułów pamięci i są wykorzystane
w przykładach.
Przykłady
Przykład 1.
Zaprojektować moduÅ‚ pamiÄ™ci statycznej RAM o pojemnoÅ›ci 16K × 8 dla mikroprocesora Z-80.
Do budowy ukÅ‚adu należy wykorzystać ukÅ‚ady pamiÄ™ci o organizacji 8K × 8 i 16K × 4. Pamięć
powinna zajmować adresy 0000 3FFFh.
W przypadku zastosowania pamiÄ™ci o organizacji 8K × 8 należy zastosować technikÄ™ zwiÄ™kszania
liczby słów, ponieważ długość słowa pamięci jest równa szerokości magistrali danych. Linie
danych łączy się do wspólnej magistrali, a wejścia adresowe należy dołączyć do magistrali
adresowej. Po tej operacji pozostają trzy najstarsze bity adresu. Należy je wykorzystać do wyboru
jednego z dwóch przyłączonych układów pamięci. W celu spełnienia tego zadania należy je
podłączyć do wejść adresowych demultipleksera 74138. Demultiplekser powinien być aktywny
tylko wtedy, gdy mikroprocesor żąda dostępu do przestrzeni adresowej pamięci (sygnał MRQ =
0 ). Jeden z układów pamięci (sterowany wyjściem Y0 układu 74138) zajmuje pierwszą połowę
wyznaczonej przestrzeni adresowej, tj. zakres 0000 1FFFh, drugi natomiast (sterowany wyjściem
Y1 ) 2000 3FFFh. W zależności od tego, czy procesor przeprowadza odczyt czy zapis
pamięci, należy odpowiednio uaktywnić sygnał OE lub WE pamięci. Sygnał ten może być
aktywny w obu układach, ponieważ co najwyżej jeden z nich jest włączony.
Rysunek 4.5.
W przypadku zastosowania pamiÄ™ci o organizacji 16K × 4 należy zastosować technikÄ™
zwiększania długości słowa, ponieważ liczba słów pamięci jest wystarczająca. Linie danych łączy
się do magistrali w ten sposób, że jeden układ pamięci jest dołączony do bardziej znaczącej
połowy magistrali, a drugi do mniej znaczącej. Wejścia adresowe należy dołączyć do magistrali
adresowej. Po tej operacji pozostają dwa najstarsze bity adresu. Należy je wykorzystać
do uaktywnienia obu układów pamięci, ponieważ mikroprocesor Z-80 operuje na danych 8-
bitowych. Podczas operacji odczytu aktywny jest tylko sygnał CE w obu układach, natomiast
podczas operacji zapisu sygnały CE i WE . Wykorzystanie pozostałych wyjść demultipleksera
74139 umożliwia powiÄ™kszenie moduÅ‚u pamiÄ™ci do 64 KB (4 × 16 KB).
Przykład 2.
Zaprojektować moduÅ‚ pamiÄ™ci statycznej RAM o pojemnoÅ›ci 16K × 8 dla mikroprocesora Z-80.
Do budowy ukÅ‚adu należy wykorzystać ukÅ‚ady pamiÄ™ci o organizacji 16K × 1. Pamięć powinna
zajmować adresy C000 FFFFh.
Ponieważ moduÅ‚y pamiÄ™ci o organizacji 16K × 1 majÄ… rozdzielone wejÅ›cie i wyjÅ›cie danych,
proste dołączenie ich do magistrali danych nie gwarantuje poprawnej pracy układu. Pamięci te nie
mają osobnego wejścia odczytu ( OE ). Jeżeli zatem na wejściu WE jest stan wysoki, a na wejściu
CE niski, to pamięć wykonuje cykl odczytu. W większości mikroprocesorów (np. Z-80) sygnał
zapisu ( WR ) jest jednak generowany z pewnym opóznieniem w stosunku do chwili wysłania
danych na magistralę. Może się więc zdarzyć w cyklu zapisu, że pamięć rozpocznie już operację
odczytu i wyśle dane na magistralę, gdy mikroprocesor dopiero uaktywni sygnał WR .
W najlepszym przypadku takie zderzenie sygnałów na magistrali danych spowoduje tylko
zakłócenia, w najgorszym możliwe jest nawet spalenie wyjść układów pamięci lub mikro-
procesora.
Rysunek 4.6.
Aby zapobiec niekorzystnym zjawiskom na magistrali stosuje siÄ™ bufor 8216, przeznaczony
specjalnie do sprzęgania dwukierunkowych magistral danych z pamięciami o rozdzielonych
wejściach i wyjściach. Jest on wyposażony w cztery linie dwukierunkowe (D0 D4), czetry
wyjściowe (DO0 DO4) i cztery wejściowe (DI0 DI4). Ponadto zawiera wejście bramkujące CS
oraz wejście wyboru kierunku DIEN (ang. Data Input Enable), oba aktywne stanem niskim.
Jeżeli CS = 1 , to wyjścia danych (jedno- i dwukierunkowe) układu są w stanie wysokiej
impedancji. W przeciwnym przypadku kierunek przesyłu danych zależy od stanu wejścia wyboru
kierunku: jeżeli DIEN = 0 , to układ przekazuje dane z wejść DI na odpowiadające im linie D,
gdy natomiast DIEN = 1 , stan linii D powielany jest na wyjściach DO. Dlatego też wyjścia DO
bufora należy połączyć z wejściami DI układów pamięci, zaś wejścia DI bufora z wyjściami
DO pamięci.
Ponieważ magistrala mikroprocesora Z-80 jest 8-bitowa, a pojedynczy bufor 8216 jest w stanie
przesłać tylko cztery bity, do konstrukcji modułu potrzebne są dwa takie układy, z których każdy
obsługuje cztery układy pamięci. Oba bufory, jak również wszystkie układy pamięci, powinny
być uaktywnione tylko wówczas, gdy mikroprocesor żąda dostępu do przestrzeni adresowej
pamięci (sygnał MRQ w stanie niskim), o ile adres na magistrali zawiera się w założonym
przedziale C000 FFFFh. Spełnienie obu warunków sprawdzane jest w demultiplekserze 74139,
którego wejścia adresowe A i B dołączone są do bitów A14 i A15 magistrali adresowej, a wejście
bramkujące do sygnału MRQ . Gdy warunki te są spełnione, układ ten wyprowadza stan 0
na wyjście Y3 . Wobec tego na wejściach CE układów pamięci i na wejściach CS buforów
znajduje się stan aktywny, co powoduje włączenie układów.
Sygnał WE pamięci powinien być sterowany sygnałem żądania zapisu mikroprocesora Z-80
( WR ). Natomiast sygnał RD steruje pracą buforów 8216, wybierając w nich kierunek przesyłu
danych.
Rysunek 4.7.
Przykład 3.
Zaprojektować moduÅ‚ pamiÄ™ci statycznej RAM o pojemnoÅ›ci 4K × 8 dla mikroprocesora Z-80.
Do budowy ukÅ‚adu należy wykorzystać ukÅ‚ady pamiÄ™ci o organizacji 2K × 8. Pamięć powinna
zajmować adresy x000 xFFFh, gdzie x jest dowolną liczbą z zakresu 0 15 (innymi słowy jest
dowolnÄ… cyfrÄ… szesnastkowÄ… z zakresu 0 F).
Ponieważ projektowany moduł pamięci ma zapewnić możliwość dowolnego ustawienia czterech
najstarszych bitów adresowych, do konstrukcji dekodera adresów należy zastosować komparator
4-bitowy (7485). Wejścia A komparatora dołączone są do bitów A12 A15 magistrali adresowej,
natomiast wejścia B mogą być dowolnie ustawiane za pomocą przełączników. Komparator
rozpoczyna porównywanie wejść A i B, gdy sygnał MRQ jest w stanie niskim, co oznacza, że
mikroprocesor adresuje pamięć. Jeżeli A = B, to w zależności od stanu linii A11 następuje
uaktywnienie jednego z dwóch układów pamięci poprzez ustawienie jej wejścia CS w stan 0 .
W przeciwnym przypadku natomiast żaden układ nie zostanie uaktywniony.
Pozostałe linie adresowe (A0 A10) należy dołączyć bezpośrednio do wejść adresowych obu
układów pamięci. Podobnie linie danych pamięci powinno się dołączyć bezpośrednio
do magistrali danych. Wejścia OE i WE powinny być dołączone odpowiednio do sygnałów RD
i WR mikroprocesora.
Warto zauważyć, że zamiast układów pamięci statycznej RAM można zastosować pamięć
EPROM o identycznej organizacji (np. 2 716). Mają one bowiem taki sam rozkład wyprowadzeń.
Co prawda pamięć EPROM nie ma wejścia WE , jednak pozostawienie sygnału WR nie
przeszkadza w poprawnej pracy układu.
Rysunek 4.8.
Przykład 4.
Zaprojektować moduł dla mikroprocesora Z-80, zawierający pamięć EPROM o pojemności 16 KB
(adresy 0000 3FFFh) oraz pamięć statyczną RAM o pojemności 32 KB (adresy 8000 FFFFh).
W zadaniu należy wykorzystać ukÅ‚ady pamiÄ™ci o organizacji 8K × 8.
Rysunek 4.9.
Ze względu na wykorzystanie układów pamięci o pojemności 8 KB należy podzielić przestrzeń
adresową mikroprocesora (64 KB) na 8 fragmentów po 8 KB każdy. Dwa pierwsze fragmenty są
zajęte przez pamięć EPROM, następne dwa są wolne, a kolejne cztery przeznaczone są
dla pamięci RAM. Wejścia adresowe i linie danych układów pamięci należy połączyć razem
do odpowiednich magistral. Po takim połączeniu pozostają trzy linie adresowe (A13 A15), które
należy wykorzystać do podziału pamięci na fragmenty o rozmiarze 8 KB. Dekodowanie stanu tych
linii adresowych odbywa się w układzie 74 138, który jest aktywny tylko wtedy, gdy
mikroprocesor żąda dostępu do pamięci (sygnał MRQ w stanie niskim). Wówczas jedno
(wybrane na podstawie stanu wejść A C) wyjście układu ustawia w stan aktywny wejście CE
układu pamięci. Pozostałe sygnały sterujące pamięci ( OE i WE ) należy połączyć razem tak, aby
były sterowane sygnałami RD i WR mikroprocesora.
Przykład 5.
Zaprojektować moduł pamięci dla mikroprocesora 8048, zawierający 4 KB pamięci EPROM,
widzianej jako pamięć programu oraz 2 KB pamięci SRAM, widzianej jako pamięć danych.
Do stronicowania pamięci SRAM należy użyć port PC mikroprocesora. W zadaniu należy również
wykorzystać ukÅ‚ady o organizacji 2K × 8.
Rysunek 4.10.
Mikroprocesor 8048 potrafi zaadresować 4 KB pamięci programu i 256 B pamięci danych. Są to
oddzielne przestrzenie adresowe, sterowane różnymi sygnałami.
W przestrzeni adresowej pamięci programu należy umieścić układy pamięci EPROM. Ponieważ
każdy z nich ma po 2 KB, wybór układu odbywa się na podstawie najstarszego bitu adresowego
(A11), sterującego wejścia CE obu układów pamięci. Otwarcie buforów wyjściowych następuje,
gdy sygnał PSEN mikroprocesora jest w stanie aktywnym, co oznacza dostęp do pamięci
programu. W przypadku zastosowania tylko jednego układu pamięci EPROM wejście CE można
także sterować sygnałem PSEN lub dołączyć do masy.
Pamięć SRAM należy umieścić w przestrzeni adresowej pamięci danych. Pojemność dołączanego
układu przekracza możliwości mikroprocesora. Można zatem pogodzić się z tym faktem i używać
tylko 256 B dołączonego układu, albo zastosować technikę stronicowania. Polega ona na tym, że
w danym momencie mikroprocesor widzi tylko jedną stronę o pojemności 256 B, jednak do jego
dyspozycji jest więcej takich stron (w rozpatrywanym przykładzie pamięć 2 KB umożliwia
utworzenie 8 stron po 256 B). Wybór strony aktywnej ( widocznej ) odbywa się programowo.
Numer strony można umieścić w rejestrze, jednak w mikrokomputerach jednoukładowych
wygodniej jest wykorzystać do tego celu linie portu. W omawianym przykładzie mogą być to linie
PC0 PC2. Linie te i tak wykorzystywane są podczas odwołań do pamięci programu, zatem strata
funkcjonalności portu jest niewielka. Należy tylko zwrócić uwagę na to, że użycie mechanizmu
stronicowania jest na przedstawionym schemacie niewidoczne. Dzieje się tak dlatego, że
wykorzystane linie portu służą także do generowania adresów pamięci programu, której
maksymalna pojemność jest większa.
Linie sterujące OE i WE należy sterować sygnałami RD i WR mikroprocesora, gdyż są one
aktywne podczas odwołań do zewnętrznej pamięci danych.
Nieco większego komentarza wymaga sposób sterowania sygnału CE pamięci SRAM.
Na podstawowym schemacie nie jest on podłączony, ponieważ istnieje wiele możliwości,
z których kilka pokazano pod schematem. Dołączenie sygnału CE na stałe do masy powoduje, że
układ pamięci stale monitoruje stan wejść adresowych, skutkiem czego pobiera zwiększony prąd
ze zródła zasilania. Można zatem dołączyć to wejście do linii adresowej A11. Jest to rozwiązanie
lepsze, ale nie idealne, ponieważ układ pamięci jest aktywny, gdy A11 = 0 , także podczas
odwołań mikroprocesora do pamięci programu. Ostatnie z pokazanych rozwiązań pozwala
włączyć układ pamięci tylko wtedy, gdy mikroprocesor przeprowadza cykl odczytu lub zapisu
zewnętrznej pamięci danych. To rozwiązanie ma też pewne wady. Przede wszystkim wymaga
zastosowania dodatkowej bramki lub nawet bardziej złożonego układu, jeżeli moduł zawiera
więcej układów umieszczonych w przestrzeni pamięci danych. Ponadto narzuca się tu większe
wymagania na szybkość układu pamięci. Wybrane rozwiązanie powinno zatem uwzględniać
specyficzne wymagania stawiane wobec układu.
Przykład 6.
Zaprojektować moduł pamięci dla mikroprocesora 8051, zawierający 32 KB pamięci EPROM
widzianej jako pamięć programu oraz 64 KB pamięci SRAM widzianej jako pamięć danych. W
zadaniu należy wykorzystać ukÅ‚ady o organizacji 32K × 8.
Rysunek 4.11.
Mikroprocesor 8051 może bezpośrednio zaadresować 64 KB pamięci programu i 64 KB pamięci
danych. Podobnie jak w mikroprocesorze 8048 sÄ… to oddzielne przestrzenie adresowe, sterowane
różnymi sygnałami.
Pamięć EPROM należy umieścić w przestrzeni pamięci programu. Do sterowania układu tej
pamięci wystarczy sygnał PSEN , dołączony zarówno do wejścia OE , jak i CE . Pamięć jest
aktywna tylko wtedy, gdy mikroprocesor realizuje odczyt z przestrzeni pamięci programu
sygnał PSEN jest wówczas w stanie 0 . Takie połączenie sygnałów (a szczególnie sygnału CE )
powoduje, że układ jest widoczny nie tylko pod adresami 0000 7FFFh, lecz także 8000 FFFFh.
Dzieje się tak dlatego, że nie jest sprawdzany stan najstarszej linii adresowej A15. Takie
dekodowanie nazywamy dekodowaniem niepełnym. Można oczywiście spowodować, że pamięć
będzie aktywna tylko w czasie dostępu do adresów 0000 7FFFh w pamięci programu. Wówczas
będzie to dekodowanie pełne. Niepełne dekodowanie upraszcza układ, może jednak być stosowane
tylko wtedy, gdy mamy pewność, że nie spowoduje ono konfliktów między dołączonymi
układami. Należy podkreślić, że takie konflikty mogą się pojawić dopiero w przyszłości, gdy
do istniejącego układu zostanie dołączony dodatkowy moduł.
Do wysterowania układów pamięci statycznej można wykorzystać demultiplekser 74139
oraz bramkę AND. Jeżeli mikroprocesor przeprowadza operację odczytu lub zapisu zewnętrznej
pamięci danych, to demultiplekser jest aktywny i zależnie od stanu wejścia A (dołączonego
do najstarszej linii adresowej A15) wybiera jeden z dwóch układów pamięci statycznej. Linie
sterujące OE i WE dołączone są do sygnałów RD i WR mikroprocesora.
Przykład 7.
Zaprojektować moduł pamięci dla mikroprocesora 8051, zawierający 32 KB pamięci EPROM
oraz 32 KB pamięci SRAM. Obie pamięci powinny być widziane zarówno w przestrzeni
adresowej programu, jak i danych. Pamięć EPROM powinna zajmować adresy 0000 7FFFh,
natomiast SRAM 8000 FFFFh.
Rysunek 4.12.
Umieszczenie pamięci EPROM w przestrzeni danych, podobnie jak umieszczenie pamięci SRAM
w przestrzeni programu, wymaga, by sygnał odczytu pamięci ( OE ) był aktywny zarówno w cyklu
odczytu pamięci programu (sygnał PSEN w stanie 0 ), jak i podczas cyklu odczytu pamięci
danych (stan niski sygnału RD ). Ponadto wejścia CS obu pamięci powinny być uzależnione
tylko od adresu generowanego przez mikroprocesor, a niezależne od przestrzeni adresowej,
do której ten adres jest kierowany. Sygnał zapisu pamięci WE może być dołączony bezpośrednio
do wyjścia WR mikroprocesora, ponieważ zapis możliwy jest tylko dla pamięci danych.
Prezentowane rozwiązanie umożliwia zarówno wygodny dostęp programowy np. do dużych tablic
umieszczonych w pamięci programu (pamięci stałej), jak i ładowanie dowolnego programu
do pamięci danych (pamięci RAM). Wadą tego układu jest jednak połączenie rozdzielonych
przestrzeni adresowych, co wiąże się ze zmniejszeniem całkowitej pojemności pamięci adresowa-
nej przez mikroprocesor.
Przykład 8.
Zaprojektować moduł pamięci dla mikroprocesora 8051, zawierający 32 KB pamięci EPROM
widzianej jako pamięć programu, 32 KB pamięci SRAM systemowej i 32 KB pamięci SRAM
użytkownika . Zapewnić możliwość pracy modułu w dwóch trybach:
1. Tryb systemowy . Kody rozkazów pobierane są z pamięci EPROM, odczyt i zapis danych
odwołują się tylko do pamięci systemowej .
2. Tryb użytkownika . Kody rozkazów pobierane są z pamięci systemowej , odczyt i zapis
danych odwołują się tylko do pamięci użytkownika .
Wykorzystać ukÅ‚ady pamiÄ™ci o organizaji 32K × 8. PamiÄ™ci programu i danych powinny
zajmować adresy 0000 7FFFh w odpowiednich przestrzeniach adresowych niezależnie od trybu.
Rysunek 4.13.
Najważniejszym fragmentem zadania jest odpowiednie bramkowanie sygnałów sterujących.
Do tego celu służy zespół sześciu bramek OR. Do przełączania trybu wprowadzono sygnał
Sys/Usr, generowany przez układ zewnętrzny (może to być przełącznik, rejestr albo wyjście portu
mikroprocesora). W zależności od stanu tego sygnału ( 0 tryb systemowy, 1 tryb
użytkownika ) zbiór sygnałów sterujących mikroprocesora ( PSEN , RD , WR ) jest rozdziela-
ny na sygnały trybu systemowego (PSs, RDs, WRs) i sygnały trybu użytkownika (PSu, RDu,
WRu). Sygnały te następnie sterują wejścia pamięci. Odczyt z pamięci RAM systemowej jest
możliwy w dwóch przypadkach:
" w trybie systemowym przy odwołaniach do pamięci danych,
" w trybie użytkownika przy odwołaniach do pamięci programu.
Dlatego też wejście OE tego układu pamięci jest pobudzane, gdy aktywny jest sygnał RDs lub
PSu. Wejścia CE wszyskich układów pamięci jest dołączone do linii adresowej A15, co zapewnia
ich widoczność w żądanym zakresie adresów.
Układ sterujący jest dość skomplikowany. Można go nieco uprościć, stosując zamiast bramek
demultipleksery, np. 74139. Każdy demultiplekser rozdziela wówczas jeden sygnał sterujący.
Sygnał Sys/Usr jest podłączony do jednego wejścia adresowego. Drugie wejście adresowe
pozostaje nie wykorzystane, można jednak podłączyć je do linii A15, co umożliwi pózniejszą
rozbudowę układu o dodatkowe pamięci. Wejścia bramkujące G są sterowane odpowiednimi
sygnałami sterującymi (rysunek 4.14 a).
Dalsze uproszczenie (rysunek 4.14 b) można uzyskać, stosując pojedynczą pamięć PROM
o organizacji 32 × 8. Jest to najmniejsza pamięć PROM. Pamięć ta wymaga tylko odpowiedniego
zaprogramowania. Aby jeszcze bardziej uprościć układ, należy tę pamięć zaprogramować tak, aby
generowała bezpośrednio sygnały dla układów pamięci EPROM i SRAM, dzięki czemu nie będzie
już potrzebna bramka AND (rysunek 4.14 c).
a) b) c)
Rysunek 4.14.
Wyszukiwarka
Podobne podstrony:
Lab5 1 R4 lab51Lab4 1 R4 lab41R4 VI(1)Tazbir Kultura szlachecka w Polsce R4T R4 2R4 Austria i PrusyR4 próby stabilizacji 1924 1926Instrukcja R4 Silnik krokowyR4R4Instrukcja R4 Zał3 Sterownik SSK B03R4Instrukcja R4 Zał2 Sterownik SSK B05r4r4więcej podobnych podstron