Интерфейс внешней памяти в микроконтроллере 8051
Обзор :
Для приложений с минимальным объемом памяти 8051 имеет внутреннюю память для данных и кода. В таком положении. Для некоторых приложений этого объема памяти будет недостаточно. Чтобы расширить объем памяти микроконтроллера 8051, мы должны связать внешнее ПЗУ/СППЗУ и ОЗУ. Мы также понимаем, что ПЗУ служит памятью программ, а ОЗУ служит памятью данных. Давайте посмотрим, как 8051 получает доступ к этой памяти.
Внешняя память программ:

- Программные выборки по адресам с 0000H по OFFFFH направляются во внутреннее ПЗУ в 8051, когда вывод EA подключен к Vec, а программные выборки по адресам с 1000H по FFFFH направляются во внешнее ПЗУ/СППЗУ. Когда контакт EA заземлен, все адреса, выбранные программой (от 0000H до FFFFH), направляются к нему.

- ПЗУ/СППЗУ, которое является внешним по отношению к устройству. Как видно на рис. 1, сигнал PSEN используется для запуска вывода внешнего ПЗУ/СППЗУ.
- Порт 0 используется как мультиплексированный адрес/шина, как показано на рис. 2. В начальном Т-цикле он обеспечивает 8-битный адрес младшего разряда, а позже используется как шина данных. Внешняя защелка и сигнал ALE, предоставляемые 8051, используются для фиксации 8-битного адреса.
- Удаленное ПЗУ/СППЗУ (постоянное запоминающее устройство/электронно-программируемое ПЗУ/электронно-программируемое ПЗУ/электронная программа). Сигнал PSEN используется для активации выхода внешнего ПЗУ/СППЗУ, как показано на рис. 1.
- Как видно на рис. 2, порт 0 используется как мультиплексированный адрес/шина. Он предоставляет 8-битный адрес младшего разряда в первом Т-цикле, а затем служит шиной данных. 8-битный адрес фиксируется с помощью внешней защелки и сигнала ALE, выдаваемого 8051.

- 1Внешнее прерывание 0 — 0003H, Таймер 0 — 000BH, Внешнее прерывание 1 — 0013H, Таймер 1 — 001BH и т. д. Если должно использоваться прерывание, процедура его работы должна находиться в том же месте, что и прерывание. Если прерывание не используется, служебная ячейка может использоваться как память программ общего назначения.
Инструкции по доступу к внешнему ПЗУ/памяти программ:
В этой таблице поясняются инструкции по доступу к внешнему ПЗУ/памяти программ.
| Мнемоника | Операция |
|---|---|
| МОВК А, @ А+DPTR | Скопируйте содержимое внешнего адреса ПЗУ, сформированного путем добавления A и DPTR, в A |
| MOVC А, @ А + ПК | Эта операция скопирует содержимое внешнего адреса ПЗУ, сформированного путем добавления А и ПК к А. |
Интерфейс внешней памяти:
- 8051 может адресовать до 64 кбайт дополнительной памяти данных. Доступ к внешней памяти данных осуществляется с помощью команды «MOVX».
- Внутренняя память данных 8051 разделена на три части: нижние 128 байт, верхние 128 байт и SFR. Хотя они являются физически отдельными телами, старшие адреса и SFR используют один и тот же блок адресного пространства, 80H по FFH.
- Верхнее адресное пространство доступно только через косвенную адресацию, а SFR доступны только через прямую адресацию, как показано в более высоком адресном пространстве, с другой стороны, могут быть достигнуты с использованием прямой или косвенной адресации.
- На рис. 7 а и б показаны временные сигналы для циклов чтения и записи внешней памяти данных соответственно.

7(а)

7(б)
Инструкции по доступу к внешней памяти данных:
В таблице поясняется инструкция по доступу к внешней памяти данных.
| Мнемоника | Операция |
|---|---|
| MOVX А, @Rp | В этой операции он скопирует содержимое внешнего адреса в Rp в A. |
| MOVX А. @DPTR | Скопируйте содержимое внешнего адреса в DPTR на A. |
| MOVX @Rp. А | Скопируйте данные из A на внешний адрес в Rp |
| ДВИГАТЕЛЬ ДПТР, А | Скопируйте данные из A на внешний адрес в DPTR. |
Важные моменты, которые следует помнить при доступе к внешней памяти:
- В случае доступа к внешней памяти все внешние данные, перемещаемые с внешней ОЗУ или ПЗУ, включают регистр А.
- При доступе к внешней памяти R может адресовать 256 байт, а DPTR — 64 кбайт.
- Инструкция MOV X используется для доступа к внешнему ОЗУ или адресам 1/0.
Примечание -
Следует отметить, что хотя программный счетчик (ПК) будет использоваться затем для доступа к внешнему ПЗУ, он будет увеличен на 1 (чтобы указать на следующую инструкцию) перед тем, как будет добавлен к A для формирования физического адреса внешнего ПЗУ.
Декодирование адреса памяти:
Мы знаем, что память для чтения/записи состоит из массива регистров, в котором каждый регистр имеет уникальный адрес: длина слова в битах.
Пример-1:
Если память имеет 12 строк адреса и 8 строк данных, то количество регистров/ячеек памяти = 2^N=
Длина слова = Мбит = 8 бит.
Пример-2:
- Если память имеет 8192 ячейки памяти, то она имеет :3 адресных строки.
| Объем памяти | Адресная строка обязательна |
|---|---|
| 1 К = 1024 ячейки памяти | 10 |
| 2 К = 2048 ячеек памяти | 11 |
| 4 К = 4096 ячеек памяти | 12 |
| 8K= 8192 ячейки памяти | 13 |
| 16 К = 16384 ячейки памяти | 14 |
| 32 К = 32768 ячеек памяти | 15 |
| 64 К = 65536 ячеек памяти | 16 |
- Микросхема памяти имеет 11 адресных линий A10-A0, одну линию выбора микросхемы (CS) и две линии управления, как видно из таблицы. Чтобы включить буфер вывода, нажмите RD, а чтобы включить буфер ввода, нажмите WR.
- Адресные строки декодируются с помощью внутреннего декодера: (b) отображает логическую схему 4096 (4 КБ) регистра EPROM (Erasable Programmable Read-Only Memory).
- Он имеет в общей сложности 12 адресных блоков. Один сигнал выбора стружки (CS) и один управляющий сигнал считывания (A11-A0). СППЗУ не нуждается в сигнале (WR), так как это память только для чтения.
- Модули памяти и 1/0 используются в структуре микропроцессора/микроконтроллера. Поскольку шины данных, адресов и управления являются общими для всех устройств, микропроцессор может одновременно обмениваться данными (чтение/запись) только с одним устройством.
- Очень важно декодировать адрес микропроцессора/микроконтроллера, чтобы соединиться с памятью или устройствами ввода/вывода. Стратегии декодирования адресов описаны в следующем разделе.
- Интерфейс памяти требует следующих компонентов.
- Выберите чип.
- Определить регистр.
- Включите соответствующий буфер.
Методы декодирования адреса:
- Абсолютное декодирование/Полное декодирование
- Линейное декодирование/частичное декодирование
Техника-1 :
Абсолютное декодирование –
- В этом методе все старшие адресные строки декодируются для выбора микросхемы памяти, и микросхема памяти выбирается только для логических уровней, определенных в этих старших адресных строках, и никакие другие логические уровни не будут выбирать микросхему.
- Интерфейс памяти с полным кодированием показан на рис. 11.22. В массивных структурах памяти эта стратегия адресации обычно используется.
Карта памяти –
| ИС памяти | А15 | А14 | А13 | А12 | А11 | А10 | А9 | А8 | А7 | А6 | А5 | А4 | А3 | А2 | А1 | А0 | Адрес |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Начальный адрес СППЗУ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0000ч |
| Конечный адрес СППЗУ | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 03FFH |
| Начальный адрес оперативной памяти | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2000 ч |
| Конечный адрес ОЗУ | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 23FFH |
Техника-2 :
Линейное декодирование –
- Отдельные адресные линии высокого порядка могут использоваться для выбора микросхем памяти в компактных системах, что устраняет необходимость в аппаратном обеспечении для декодирования логики. Линейное декодирование является термином для этого метода.
- Адресация ОЗУ с использованием метода линейного кодирования показана на рис. 10. Частичное декодирование — другое название этого процесса.
- Это снижает стоимость кодирования и схемы, но имеет тот недостаток, что требуется несколько адресов (теневых адресов).
- Адресация ОЗУ с использованием метода линейного кодирования показана на рисунке 10. После инверсии линия А представляет собой линию, присоединенную к сигналу выбора микросхемы СППЗУ, а затем к сигналу выбора микросхемы ОЗУ. В результате EPROM выбирается, когда состояние линии A равно «пусто», а RAM выбирается, когда состояние линии A15 равно «один». Поскольку другие адресные линии не используются для генерации сигналов выбора фишек, их статус не принимается во внимание.
Карта памяти –
| ИС памяти | А15 | А14 | А13 | А12 | А11 | А10 | А9 | А8 | А7 | А6 | А5 | А4 | А3 | А2 | А1 | А0 | Адрес |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Начальный адрес СППЗУ | 0 | Икс | Икс | Икс | Икс | Икс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0000ч |
| Конечный адрес СППЗУ | 0 | Икс | Икс | Икс | Икс | Икс | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 03FFH |
| Начальный адрес оперативной памяти | 1 | Икс | Икс | Икс | Икс | Икс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 8000 ч |
| Конечный адрес ОЗУ | 1 | Икс | Икс | Икс | Икс | Икс | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 83FFH |