Интерфейс внешней памяти
Характеристики интерфейса внешней памяти позволяет его использовать не только для подключения к внешнему статическому ОЗУ или флэш-памяти, но и в качестве интерфейса с внешними периферийными устройствами, например, ЖК-дисплеи, АЦП и ЦАП. Его основными отличительными особенностями являются:
- Возможность задания четырех различных по длительности состояний ожидания, в т.ч. без состояния ожидания.
- Возможность установки различных состояний ожидания для разных секторов внешней памяти (размер сектора конфигурируется).
- Возможность выбора количества задействованных разрядов в старшем адресном байте.
- Устройство запоминания состояния шины для минимизации потребления тока (опционально).
Краткий обзор
После разрешения внешней памяти (XMEM) становится доступным адресное пространство за пределами внутреннего статического ОЗУ через предопределенные для этой функции выводы (см. рис. 1, табл. 27, табл. 33 и табл. 45). Конфигурация памяти показана на рис. 11.
Рисунок 11 – Внешняя память с выбором сектора
Прим. : Когда ATmega128 находится не в режиме совместимости с ATmega103, то доступна конфигурация памяти А ( конфигурация B не доступна), а когда ATmega128 в режиме совместимости с ATmega103, то доступна только конфигурация В.
Совместимость с ATmega103
Оба регистра управления внешней памятью (XMCRA и XMCRB) размещены в расширенном пространстве ввода-вывода. В режиме совместимости с ATmega103 эти регистры и функции, управляемые через них, не доступны. Но микроконтроллер сохранит совместимость, т.к. эти функции не поддерживаются у ATmega103. Ограничения на режим совместимости с ATmega103 следующие:
- Доступны только две установки состояний ожидания (SRW1n = 0b00 и SRW1n = 0b01).
- Количество используемых разрядов в старшем адресном байте является фиксированным.
- Внешняя память не может быть поделена на сектора с различными состояниями ожидания.
- Устройство запоминания состояния шины не доступно.
- Выводы RD, WR и ALE могут использоваться только для вывода (Порт G у ATmega128).
Использование интерфейса внешней памяти
Интерфейс состоит из:
- AD7:0: Мультиплексированная младшая шина адреса/шина данных.
- A15:8: Старшая шина адреса (с конфигурируемым числом разрядов).
- ALE: Строб адреса внешней памяти.
- RD: Строб чтения из внешней памяти.
- WR: Строб записи во внешнюю память.
Биты управления интерфейсом внешней памяти расположены в трех регистрах: регистр управления микроконтроллером – MCUCR, регистр А управления внешней памятью – XMCRA и регистр В управления внешней памятью – XMCRB.
После разрешения работы интерфейс XMEM изменит настройки регистров направления данных портов, линии которых предопределены для выполнения функций интерфейса XMEM. Более подробная информация об изменении настроек порта приведена в разделе "Порты ввода-вывода" при рассмотрении альтернативных функций. Интерфейс XMEM автоматически определяет к какой памяти внешней или внутренней осуществляется доступ. Во время доступа к внешней памяти интерфейс XMEM будет формировать сигналы шин адреса, данных и управления на линиях порта в соответствии с рисунком 13 (на рисунке представлены формы сигналов без состояний ожидания). При переходе ALE из 1 в 0 на линиях AD7:0 будут присутствовать действительные адресные сигналы. ALE находится на низком уровне во время передачи данных. После разрешения работы интерфейса XMEM доступ к внутренней памяти будет вызывать изменения на шинах данных и адреса, а также строба ALE, при этом, стробы RD и WR останутся неизменными. После запрета работы интерфейса внешней памяти используются обычные установки выводов и направления данных. Обратите внимание, что после отключения интерфейса XMEM адресное пространство свыше внутреннего ОЗУ не связано с последним. Рисунок 12 иллюстрирует как подключить внешнее статическое ОЗУ к AVR-микроконтроллеру с помощью 8-разр. регистра (например, “74x573” или аналогичный), который передает данные напрямую при высоком уровне на входе G.
Требования по фиксации адреса
Интерфейс XRAM характеризуется высоким быстродействием из-за чего фиксация адреса должна выполняться с осторожностью при частотах свыше 8МГц при 4В и 4МГц при 2.7В.
При использовании более высоких частот применение регистров устаревшей серии 74HC будет неадекватным. Интерфейс внешней памяти разработан для совместимости с регистрами серии 74AHC. Однако, большинство регистров может быть использовано, если они отвечают требованиям временной диаграммы. К основным параметрам, характеризующих фиксацию адреса, относятся:
- Длительность задержки на распространение сигнала с входа D на выход Q (tPD).
- Время установки данных перед тем как G станет равным 0 (tSU).
- Время удержания данных (адреса) после установки низкого уровня на входе G (tH).
Интерфейс внешней памяти разработан с учетом того, что после приложения низкого уровня на вход регистра G время удержания адреса tH составит до 5 нс. См. временные характеристики tLAXX_LD/tLLAXX_ST в таблицах 137…144. Задержка распространения с входа D на выход Q (tPD) должна быть учтена при вычислении требования по времени доступа к внешней памяти. Время установки данных перед тем как G станет равным 0 (tSU) должно не превышать разности времен действительного адреса до низкого уровня ALE (tAVLLC) и задержек в печатных проводниках (определяют емкостную нагрузку).
Рисунок 12 – Подключение внешнего статического ОЗУ к AVR-микроконтроллеру
Подтягивающие резисторы и устройство запоминания состояния шины
Подтягивающие к плюсу резисторы на линиях AD7:0 могут быть активизированы, если записать единицы в регистр соответствующего порта. Для снижения потребляемой мощности в режиме сна рекомендуется отключать подтягивающие резисторы путем записи нуля в регистр порта непосредственно перед переводом в режим сна.
Интерфейс XMEM также содержит устройство запоминания состояния шины на линиях AD7:0 Устройство запоминания состояния шины может быть программно подключено и отключено как описано в подразделе “Управляющий регистр В внешней памяти – XMCRB”. После активизации устройство запоминания состояния шины будет сохранять предыдущее состояние шины AD7:0 при переводе этих линий интерфейсом XMEM в третье состояние.
Временная диаграмма
Микросхемы внешней памяти характеризуются различными параметрами временных диаграмм. Для удовлетворения этих требований интерфейс XMEM у ATmega128 обеспечивает различные состояния ожидания (см. табл. 4). Перед выбором состояний ожидания очень важно уточнить требования к временной диаграмме микросхемы внешней памяти. Самыми главными параметрами являются время доступа к внешней памяти по сравнению с требованием по установке у ATmega128. Время доступа к внешней памяти определяется как промежуток времени с момента выбора микросхемы памяти и установки адреса до появления действительных данных соответствующих указанному адресу на шине. Время доступа не может превышать времени с момента установки импульса ALE к низкому уровню до стабильного установления данных во время чтении (см. tLLRL+ tRLRH - tDVRH в таблицах 137…144). Различные состояния ожидания устанавливаются программно. Реализована дополнительная функция, которая позволяет разделить внешнюю память на два сектора и для каждого из них индивидуально выполнить настройку состояний ожидания. Это делает возможным подключить две различных микросхемы памяти с различными требованиями к временной диаграмме доступа через один и тот же интерфейс XMEM. Характеристики временной диаграммы интерфейса XMEM приведены в таблицах 137… 144 и на рисунках 156…159 в разделе “Временная диаграмма внешней памяти данных”.
Обратите внимание, что интерфейс XMEM –асинхронный и что форма сигналов на следующих рисунках связана с внутренней синхронизацией. Расхождение между внутренней и внешней синхронизацией (XTAL1) не гарантируется (зависит от температуры и напряжения питания микросхем). Следовательно, интерфейс XMEM не подходит для синхронной работы.
Рисунок 13 – Временная диаграмма доступа к внешней памяти без состояний ожидания (SRWn1=0 и SRWn0=0).
Прим: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE присутствует на такте T5, только если следующая инструкция осуществляет доступ к ОЗУ (внутреннему или внешнему).
Рисунок 14 – Временная диаграмма доступа к внешней памяти с SRWn1=0 и SRWn0=1 (1).
Прим: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE присутствует на такте T5 только если следующая инструкция осуществляет доступ к ОЗУ (внутреннему или внешнему).
Рисунок 15 – Временная диаграмма доступа к внешней памяти с SRWn1=1 и SRWn0=0 (1).
Прим.: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE на такте T6 присутствует только если следующая инструкция осуществляет доступ к ОЗУ (внутреннему или внешнему).
Рисунок 16 – Временная диаграмма доступа к внешней памяти с SRWn1=1 и SRWn0=1 (1).
Прим: 1. SRWn1 = SRW11 (верхний сектор) или SRW01 (нижний сектор), SRWn0 = SRW10 (верхний сектор) или SRW00 (нижний сектор). Импульс ALE на такте T7 присутствует только, если следующая инструкция осуществляет доступ к ОЗУ (внешнему или внутреннему).
Описание регистра XMEM
Регистр управления микроконтроллером– MCUCR
Разряд 7 – SRE: Разрешение внешнего статического ОЗУ/XMEM
Запись в SRE лог. 1 разрешает работу интерфейса внешней памяти, после чего выводы AD7:0, A15:8, ALE, WR и RD выполняют свои альтернативные функции. После установки бита SRE игнорируются любые установки в соответствующих регистрах направления данных. Запись в SRE нуля отключает интерфейс внешней памяти, после чего вступают в силу обычные функции выводов и установки направления.
Разряд 6 – SRW10: Бит выбора состояния ожидания
При работе микроконтроллера не в режиме совместимости с ATmega103 описание действия данного бита подробно описывается ниже при рассмотрении бит SRWn регистра XMCRA. В режиме совместимости с ATmega103 запись в SRW10 лог. 1 разрешает состояние ожидание и один дополнительный период добавляется к стробу чтения/записи как показано на рис. 14.
Регистр А управления внешней памятью – XMCRA
Разряд 7 – Зарезервированный бит
Данный разряд является зарезервированным и всегда читается как 0. Во время записи в данной позиции необходимо указывать 0 для совместимости с последующими микроконтроллерами.
Разряд 6..4 – SRL2, SRL1, SRL0: Задание границ секторов с состоянием ожидания
Имеется возможность установить различные состояния ожидания для различных адресов внешней памяти. Адресное пространство внешней памяти может быть разделено на два сектора, каждый их которых имеет собственные биты выбора состояний ожидания. Биты SRL2, SRL1 и SRL0 определяют разбиение секторов (см. табл. 3 и рис. 11). По умолчанию значение бит SRL2, SRL1 и SRL0 равно нулю и все адресное пространство внешней памяти обслуживается как один сектор. Если все адресное пространство статического ОЗУ конфигурируется как один сектор, то состояния ожидания определяются битами SRW11 и SRW10.
Таблица 3 – Границы секторов памяти при различных настройках SRL2..0
SRL2 |
SRL1 |
SRL0 |
Границы сектора |
0 |
0 |
0 |
Нижний сектор = Нет
Верхний сектор = 0x1100 - 0xFFFF |
0 |
0 |
1 |
Нижний сектор = 0x1100 - 0x1FFF
Верхний сектор = 0x2000 - 0xFFFF |
0 |
1 |
0 |
Нижний сектор = 0x1100 - 0x3FFF
Верхний сектор = 0x4000 - 0xFFFF |
0 |
1 |
1 |
Нижний сектор = 0x1100 - 0x5FFF
Верхний сектор = 0x6000 - 0xFFFF |
1 |
0 |
0 |
Нижний сектор = 0x1100 - 0x7FFF
Верхний сектор = 0x8000 - 0xFFFF |
1 |
0 |
1 |
Нижний сектор = 0x1100 - 0x9FFF
Верхний сектор = 0xA000 - 0xFFFF |
1 |
1 |
0 |
Нижний сектор = 0x1100 - 0xBFFF
Верхний сектор = 0xC000 - 0xFFFF |
1 |
1 |
1 |
Нижний сектор = 0x1100 - 0xDFFF
Верхний сектор = 0xE000 - 0xFFFF |
Разряд 1 и разряд 6 регистра MCUCR – SRW11, SRW10: Биты выбора состояний ожидания для верхнего сектора
Биты SRW11 и SRW10 задают число состояний ожидания для верхнего сектора внешней памяти в соответствии с рисунком 4.
Разряды 3..2 – SRW01, SRW00: Биты выбора состояний ожидания для нижнего сектора
Биты SRW01 и SRW00 задают число состояний ожидания для нижнего сектора внешней памяти (см. табл. 4).
Таблица 4 – Состояния ожидания (1)
SRWn1 |
SRWn0 |
Состояния ожидания |
0 |
0 |
Нет состояний ожидания |
0 |
1 |
Задержка на один машинный цикл во время строба чтения/записи |
1 |
0 |
Задержка на два машинных цикла во время строба чтения/записи |
1 |
1 |
Задержка на два машинных цикла во время строба чтения/записи и задержка на один машинный цикл перед установкой нового адреса |
Прим.: 1. n = 0 или 1 для нижнего или верхнего сектора, соответственно. На рисунках 13…16 представлены временные диаграммы, которые соответствуют различным установкам бит SRW.
Разряд 0 – Зарезервированный бит
Данный бит является зарезервированным, поэтому, всегда считывается как ноль. Если осуществляется запись в данную ячейку, то для совместимости с последующими микроконтроллерами рекомендуется в позиции данного бита указывать 0.
Регистр В управления внешней памятью – XMCRB
Разряд 7– XMBK: Разрешение работы устройства запоминания состояния шины внешней памяти
Запись в XMBK лог. 1 разрешает работу устройства запоминания состояния шины на линиях AD7:0. После его активизации AD7:0 будут запоминать последнее установленное состояние, даже если интерфейс XMEM перевел линии в третье состояние. Запись в XMBK лог. 0 означает запрет работы устройства запоминания состояния шины. XMBK не подчинен SRE, так что даже если интерфейс XMEM отключен, то устройство запоминания состояния шины будет активным до тех пор пока XMBK=1.
Разряды 6..4 – Зарезервированные разряды
Данные разряды являются зарезервированными для будущих микроконтроллеров, поэтому, для совместимости с ними рекомендуется записывать в данные позиции лог. 0 во время записи в данный регистр.
Разряды 2..0 – XMM2, XMM1, XMM0: Маска старших адресных разрядов внешней памяти
После разрешения внешней памяти все выводы порта С по умолчанию используются в качестве старшего адресного байта. Если нет необходимости адресоваться ко всему 60 кбайтному пространству внешней памяти, то свободные адресные линии возможно использовать в качестве универсального ввода-вывода (см. табл. 5). Использование бит XMMn позволяет адресоваться ко всем 64 кбайт ячейкам внешней памяти (см. “Использование всех 64 кбайт ячеек внешней памяти".
Таблица 5 – Использование старших адресных сигналов в качестве линий универсального ввода-вывода после разрешения внешней памяти
XMM2 |
XMM1 |
XMM0 |
Число разрядов адреса внешней памяти |
Освобождаемые адресные линии порта С |
0 |
0 |
0 |
8 (Все пространство 60 кбайт) |
Нет |
0 |
0 |
1 |
7 |
PC7 |
0 |
1 |
0 |
6 |
PC7 - PC6 |
0 |
1 |
1 |
5 |
PC7 - PC5 |
1 |
0 |
0 |
4 |
PC7 - PC4 |
1 |
0 |
1 |
3 |
PC7 - PC3 |
1 |
1 |
0 |
2 |
PC7 - PC2 |
1 |
1 |
1 |
Старший байт адреса не используется |
Полностью порт С |
Использование всех ячеек внешней памяти размером менее 64 кбайт
Поскольку в соответствии с рисунком 11 адресное пространство внешней памяти следует за адресным пространством внутренней, то к младшим 4352 ячейкам внешней памяти не возможно адресоваться (адреса 0x0000…0x10FF). Однако, при подключении внешней памяти размером менее 64 кбайт, например, 32 кбайт к этим ячейкам можно легко адресоваться по адресам 0x8000…0x90FF. Поскольку адресный бит внешней памяти А15 не подключен к внешней памяти, то адреса 0x8000…0x90FF будут выступать в качестве адресов 0x0000…0x10FF для внешней памяти. Адресация по адресам свыше 0x90FF не рекомендуется, т.к. может затронуть ячейку внешней памяти, доступ к которой уже осуществлялся по другому (меньшему) адресу. Для прикладной программы 32 кбайта внешней памяти будут представлять линейное адресное пространство с адресами 0x1100…0x90FF (см. рис. 17). Конфигурация памяти В относится к режиму совместимости с ATmega103, а конфигурация памяти А к нормальному режиму работы.
Когда микроконтроллер находится в режиме совместимости с ATmega103 внутренняя память занимает 4096 байт. Это означает, что 4096 байт внешней памяти могут быть доступны по адресам 0x8000…0x8FFF. Для прикладной программы внешняя память размером 32 кбайт в этом случае будет линейным адресным пространством в диапазоне адресов 0x1000…0x8FFF.
Рисунок 17 – Подключение 32 кбайт внешней памяти
Использование всех 64 кбайт ячеек внешней памяти
Поскольку, внешняя память располагается после внутренней памяти, как показано на рис. 11, то только 60 кбайт внешней памяти доступно по умолчанию (адресное пространство от 0x0000 до 0x10FF зарезервировано для внутренней памяти). Однако, имеется возможность использовать весь объем внешней памяти путем маскирования старших адресных разрядов к нулю. Это может быть выполнено с помощью бит XMMn и программного управления старшими адресными разрядами. Интерфейс памяти будет иметь диапазон адресов 0x0000 - 0x1FFF, если установить на выходе порта С значение 0x00 и выбрать работу старших адресных разрядов как обычных линий ввода-вывода. См. нижеприведенные примеры.
Пример кода на Ассемблере (1)
; Определено СМЕЩЕНИЕ OFFSET=0x2000 для гарантирования доступа к внешней памяти
; Конфигурируем порт С (старший байт адреса ) на вывод 0x00, после чего настраиваем выводы
; на выполнение функций обычного порта
ldi r16, 0xFF
out DDRC, r16
ldi r16, 0x00
out PORTC, r16
; освобождаем PC7:5 от адресных функций
ldi r16, (1<<XMM1)|(1<<XMM0)
sts XMCRB, r16
; запись 0xAA по адресу 0x0001 внешней памяти
ldi r16, 0xaa
sts 0x0001+OFFSET, r16
; Разрешаем снова работу PC7:5 как адресных линий
ldi r16, (0<<XMM1)|(0<<XMM0)
sts XMCRB, r16
; Запись 0x55 по адресу (OFFSET + 1) внешней памяти
ldi r16, 0x55
sts 0x0001+OFFSET, r16
Пример кода на Си (1)
#define OFFSET 0x2000
void XRAM_example(void)
{
unsigned char *p = (unsigned char *) (OFFSET + 1);
DDRC = 0xFF;
PORTC = 0x00;
XMCRB = (1<<XMM1) | (1<<XMM0);
*p = 0xaa;
XMCRB = 0x00;
*p = 0x55;
}
Прим.: 1. В примере предполагается, что включена часть специфического файла заголовка.
|