В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Интерфейс памяти

В данном разделе описывается интерфейс памяти процессора ARM7TDMI в следующей последовательности:

1. Краткое описание интерфейса памяти

Процессор ARM7TDMI использует фон-неймановскую архитектуру с одной 32-разрядной шиной данных, по которой передаются, как инструкции, так и данные. Доступ к памяти могут осуществлять только инструкции чтения, записи и обмена.

2. Сигналы шинного интерфейса

Сигналы шинного интерфейса процессора ARM7TDMI можно сгруппировать в четыре категории:

  • синхронизация и управление синхронизацией
  • сигналы адресного класса
  • сигналы запроса памяти
  • сигналы, синхронизированные с данными.

К сигналам синхронизации и управления синхронизации относятся:

  • MCLK
  • nWAIT
  • ECLK
  • nRESET.

Сигналы адресного класса:

  • A[31:0]
  • nRW
  • MAS[1:0]
  • nOPC
  • nTRANS
  • LOCK
  • TBIT.

Сигналы запроса памяти:

  • nMREQ
  • SEQ.

Сигналы, синхронизированные с данными:

  • D[31:0]
  • DIN[31:0]
  • DOUT[31:0]
  • ABORT
  • BL[3:0].

Процессор ARM7TDMI использует, как нарастающие, так и спадающие фронты MCLK. Шинные циклы можно продлить с помощью сигнала nWAIT. Данный сигнал описывается в параграфе "Продление времен доступа". Во всех остальных параграфах данного раздела описывается простая система, когда nWAIT имеет постоянный высокий уровень.

3. Типы шинного цикла

Шинный интерфейс процессора ARM7TDMI является конвейеризованным. За счет этого предоставляется максимум времени для дешифрации адреса в цикле памяти и формирования отклика на запрос доступа:

  • сигналы запроса памяти передаются в шинном цикле до шинного цикла, к которому они относятся
  • сигналы адресного класса передаются в течение половины цикла синхронизации вначале шинного цикла, к которому они относятся.

Один цикл памяти показан на рисунке 3.1.

Простой цикл памяти
Рисунок 3.1. Простой цикл памяти

Шинный интерфейс процессора ARM7TDMI поддерживает 4 различных типа шинных циклов:

  • непоследовательный цикл запрашивает передачу в заданном направлении по адресу, который не связан с адресом, используемым в предшествующем цикле
  • последовательный цикл запрашивает передачу в заданном направлении по адресу, который или тот же или на слово или на полуслово больше адреса, используемого в предшествующем цикле
  • внутренний цикл не требует передачу, т.к. он выполняет внутреннюю функцию и не может использоваться для выборки в этот же момент времени
  • цикл передачи регистра сопроцессора использует шину данных для связи с сопроцессором, но он не требует каких-либо действий со стороны системы памяти.

Типы шинных циклов кодируются сигналами nMREQ и SEQ, которые представлены в таблице 3.1.

Таблица 3.1. Типы шинных циклов

nMREQ SEQ Тип шинного цикла Описание
0 0 N-цикл Непоследовательный цикл
0 1 S-цикл Последовательный цикл
1 0 I-цикл Внутренний цикл
1 1 C-цикл Цикл передачи регистра сопроцессора

Контроллер памяти процессора ARM7TDMI должен совершать доступ к памяти только с помощью циклов N или S.

3.1 Непоследовательные циклы

Непоследовательный цикл - самая простая форма шинного цикла, которая возникает, когда процессор запрашивает передачу в одном из направлений по адресу, который не связан с адресом, использовавшимся в предыдущем цикле. Контроллер памяти должен инициировать доступ к памяти для удовлетворения данного запроса.

Адресный класс и сигналы (nMREQ и SEQ), которые составляют N-цикл, передаются по шине. По завершении следующего шинного цикла данные передаются между ЦПУ и памятью. Данное не распространяется на системы памяти, которые требуют более длительные времена доступа (расширение цикла синхронизации) применительно к непоследовательным доступам. Этим обеспечивается достаточное время для полной дешифрации адреса или для фиксации строк и столбцов адреса в DRAM. Данный процесс иллюстрируется на рисунке 3.2.

Прим.: на рисунке 3.2 выделены сигналы nMREQ и SEQ в месте, где они указывают на действительность N-цикла.

Непоследовательный цикл памяти
Рисунок 3.2. Непоследовательный цикл памяти

Процессор ARM7TDMI может выполнять смежные непоследовательные циклы доступа.

Это происходит, например, когда выполняется инструкция STR. Если вы разрабатываете контроллер памяти для ядра ARM7TDMI и ваша система памяти не может учесть данную ситуацию, то необходимо использовать сигнал nWAIT для расширения шинного цикла и тем самым получения корректных циклов для системы памяти. См. "Продление времен доступа".

3.2 Последовательные циклы

Последовательные циклы используются для выполнения пакетной передачи по шине. Данная информация может использоваться для оптимизации разработки вашего контроллера памяти, который подключается к памяти с поддержкой пакетного режима передачи, например, DRAM.

В ходе последовательного цикла процессор ARM7TDMI запрашивает положение в памяти, которое является частью последовательного пакета. В первом цикле пакета может использоваться тот же адрес, что и в предыдущем внутреннем цикле. Во всех остальных случаях каждый последующий цикл выполняется инкрементирование адреса:

  • при пакетной передаче слов адрес инкрементируется на 4 байта;
  • при пакетной передаче полуслов адрес инкрементируется на 2 байта.

Пакетная передача байт невозможна.

Пакет всегда начинается с N-цикла или объединенного IS-цикла (см. "Непоследовательные циклы"), а затем продолжается S-циклами. Пакет составляет передача одного и того же типа. Сигналы A[31:0] инкрементируются в процессе передачи пакета. Прочие сигналы адресного класса не затрагиваются при передаче пакета.

Возможные типы пакетов представлены в таблице 3.2.

Таблица 3.2. Типы пакетов

Тип пакета Инкрементирование адреса Причина инициации пакетной передачи
Чтение слова 4 байта Выборка кода ядром ARM7TDMI или инструкция LDM
Запись слова 4 байта Инструкция STM
Чтение полуслов 2 байта Выборка Thumb-кода

Все доступы внутри пакета должны иметь одинаковую разрядность данных, направление передачи и тип защиты. См. более детально в "Сигналы адресации".

Системы памяти, зачастую, могут более быстро реагировать на последовательный доступ и требуют более короткие времена доступа по сравнению с непоследовательным доступом. Пример пакетного доступа показан на рисунке 3.3.

 Последовательные циклы доступа
Рисунок 3.3. Последовательные циклы доступа

3.3 Внутренние циклы

В течение внутреннего цикла процессор ARM7TDMI не требует доступа к памяти, т.к. выполняется внутренняя функция и нет смысла в это же время выполнять предварительную выборку.

Для того, чтобы была возможность начать дешифрацию процессор ARM7TDMI передает адрес для следующего доступа, но контроллер памяти не должен совершать доступ к памяти. Это демонстрируется на рисунке 3.4, а дальнейшее описание может быть найдено в параграфе "Непоследовательный цикл памяти".

Внутренние циклы
Рисунок 3.4. Внутренние циклы

3.4 Объединенные IS-циклы

Процессор ARM7TDMI там, где возможно, выполняет оптимизацию на шине, чтобы предоставить достаточное время для дешифрации памяти. Когда это происходит, адрес следующего цикла памяти передается по этой шине в течение внутреннего цикла. Это позволяет контроллеру памяти дешифрировать адрес, но он не должен инициировать доступ к памяти в течение этого цикла. В объединенном IS-цикле следующим циклом является последовательный цикл, использующий то же положение в памяти. В нем совершается доступ и контроллер памяти должен инициировать доступ к памяти. Данный процесс показан на рисунке 3.5.

Объединенный IS-цикл
Рисунок 3.5. Объединенный IS-цикл

Прим.: При разработке контроллера памяти необходимо также гарантировать возможность работы I-цикла, следующего за N-циклом, с другим адресом. Данная последовательность может возникнуть при возникновении исключительных ситуаций или в процессе записи счетчика программы (PC). Важно, чтобы контроллер памяти не выполнял цикл памяти в течение I-цикла.

3.5 Циклы передачи регистра сопроцессора

В течение цикла передачи регистра сопроцессора, процессор ARM7TDMI использует шины данных для передачи данных в сопроцессор и обратно. Цикл памяти в данном случае не требуется и контроллер памяти не инициирует транзакцию. Система памяти не должна управлять шиной данных в процессе цикла передачи регистра сопроцессора.

Интерфейс сопроцессора описывается в разделе 4 "Интерфейс сопроцессора". Цикл передачи регистра сопроцессора показан на рисунке 3.6.

Циклы передачи регистра сопроцессора
Рисунок 3.6. Циклы передачи регистра сопроцессора

3.6 Итоговая информация по временной диаграмме цикла памяти ARM

Итоговая временная диаграмма цикла памяти процессора ARM7TDMI показана на рисунке 3.7..

Временная диаграмма цикла памяти
Рисунок 3.7. Временная диаграмма цикла памяти

4. Адресные сигналы

К сигналам адресного класса относятся:

  • A[31:0];
  • nRW;
  • MAS[1:0];
  • nOPC;
  • nTRANS;
  • LOCK;
  • TBIT.

4.1 Сигналы A[31:0]

A[31:0] - 32-разрядная шина адреса, которая определяет адрес для передачи. Все адреса являются байтными адресами, следовательно, каждый цикл доступа при передаче пакета слов шина адреса инкрементируется на 4.

Шина адреса охватывает 4 Гбайта линейного адресного пространства.

Когда сигнализируется доступ со словным форматом данных, необходимо игнорировать нижние два бита адреса A[1:0], а при доступе с полусловным форматом данных необходимо игнорировать младший бит адреса A[0].

Все значения данных должны быть выровнены к их естественным границам. Все слова должны быть со словным выравниванием.

4.2 nRW

nRW определяет направление передачи. Если nRW имеет высокий уровень, то этим процессор ARM7TDMI сигнализирует цикл записи, если низкий - цикл чтения. Пакет S-циклов всегда является или пакетным чтением или пакетной записью. Направление не может изменяться внутри пакета.

4.3 Сигналы MAS[1:0]

Шина MAS[1:0] кодирует размер передачи. Процессор ARM7TDMI может передавать слова, полуслова и байты.

Вся записываемая память в системе на основе процессора ARM7TDMI должна поддерживать запись индивидуальных байт или полуслов, чтобы была возможность использовать C-компилятор и отладочные средства для процессоров ARM, например, Multi-ICE.

Адрес, сгенерированный процессором, всегда является адресом байта. Однако, система памяти должна игнорировать нижние избыточные биты адреса. Значащие адресные биты представлены в таблице 3.3.

Таблица 3.3. Значащие адресные биты

MAS[1:0] Размер Значащие адресные биты
00 Байт A[31:0]
01 Полуслово A[31:1]
10 Слово A[31:2]
11 Зарезервировано -

Размер передачи не изменяется в течение пакетных S-циклов.

Процессор ARM7TDMI не может генерировать пакеты байтных передач.

Прим.: В ходе доступа к инструкциям избыточные адресные биты являются неопределенными. Система памяти должна игнорировать данные избыточные биты.

Записываемая система памяти для процессора ARM7TDMI должна иметь раздельное разрешение записи байт. Си-компилятор и отладочные средства для процессоров ARM, например, Multi-ICE, полагают, что возможна запись произвольных байт в памяти. Если возможность записи индивидуального байта не обеспечивается, тогда у вас не будет возможности использовать любое из указанных инструментальных средств без повреждения данных.

4.4 nOPC

Выход nOPC передает информацию о передачи. Блок управления памятью (MMU) может использовать данный сигнал для определения, является ли доступ выборкой кода операции или передачи данных. Данный сигнал может использоваться совместно с nTRANS для реализации схемы разрешения доступа. Назначение nOPC представлено в таблице 3.4.

Таблица 3.4. nOPC

nOPC Код операции /данные
0 Код операции
1 Данные

4.5. nTRANS

Выход nTRANS передает информацию о передаче. Блок управления памятью MMU может использовать данный сигнал для определения, выполняется ли доступ в привилегированном режиме или пользовательском режиме. Данный сигнал может использоваться совместно с nOPC для реализации схемы разрешения доступа. Назначение nTRANS показано в таблице 3.5..

Таблица 3.5. Назначение nTRANS

nTRANS Режим
0 пользовательский
1 привилегированный

Более подробная информация по сигналу nTRANS и защите приведена в параграфе "Доступ в привилегированном режиме".

4.6 LOCK

Сигнал LOCK используется для индикации арбитру, что на шине выполняется элементарная операция. LOCK в нормальном состоянии имеет низкий уровень. Если же он имеет высокий уровень, то это означает выполнение инструкции SWP или SWPB. Данные инструкции выполняют элементарные операции чтения/записи, а также могут использоваться для реализации семафоров.

4.7 TBIT

Сигнал TBIT используется для индикации рабочего состояния процессора ARM7TDMI. Если процессор находится в состоянии ARM, то сигнал TBIT имеет низкий уровень. Если же TBIT имеет высокий уровень, то процессор находится в состоянии Thumb.

Прим.: система памяти обычно не требует использования TBIT, т.к. MAS[1:0] индицируют размер инструкции.

5. Временная диаграмма адресных сигналов

Шина адреса процессора ARM7TDMI может работать в двух конфигурациях:

  • конвейеризованная;
  • неконвейеризованная.

Прим. Компания ARM Limited настоятельно рекомендует использовать в новых разработках только конвейеризованную конфигурацию шины адреса для поддержания оптимальной системной производительности.

Также ARM Limited рекомендует установить высокий уровень на ALE и не использовать его в новых разработках.

Деконвейеризованная конфигурация шины адреса управляется входным сигналом APE или ALE. Данная конфигурация обеспечивает простоту разработки систем на основе процессора ARM7TDMI с использованием SRAM и DRAM.

APE оказывает влияние на шина адресу A[31:0], а также на сигналы nRW, MAS[1:0], LOCK, nOPC и nTRANS.

В большинстве систем, особенно в системах на основе DRAM, желательно как можно раньше получить адрес от процессора ARM7TDMI. Когда APE имеет высокий уровень, адрес процессора ARM7TDMI становится действительным после нарастающего фронта MCLK перед циклом памяти, к которому он относится. Такая временная диаграмма обеспечивает достаточно большое время для дешифрации адреса и генерации сигналов управления DRAM. На рисунке 3.8 демонстрируется влияние высокого уровня APE на временную диаграмму.

Конвейеризованные адреса
Рисунок 3.8. Конвейеризованные адреса

Статические ОЗУ и ПЗУ требуют, чтобы адрес удерживался стабильным в течение цикла памяти. В системе, содержащей только статическое ОЗУ и ПЗУ сигнал APE может иметь постоянный низкий уровень для генерации необходимой временной диаграммы адреса. В этой конфигурации адрес становится действительным после падающего фронта MCLK, как показано на рисунке 3.9.

Прим.: технические требования AMBA для усовершенствованной высокопроизводительной шины AHB и усовершенствованной системной шины (ASB) требуют конвейеризации шины адреса. Это означает, что APE должен иметь высокий уровень.


Рисунок 3.9. Деконвейеризованные адреса

Многие системы содержат смесь DRAM, статического ОЗУ и ПЗУ. Для удовлетворения различным требованиям к временной диаграмме сигнал APE может безопасно изменяться, когда MCLK имеет низкий уровень. Обычно, APE устанавливается к высокому уровню, когда выполняется пакет последовательных доступов к одному типу памяти. Когда возникает непоследовательный доступ, то временная диаграмма большинства систем предусматривает введение состояний ожидания для обеспечения возможности дешифрация адреса. Как результат дешифрации адреса APE может принимать корректное значение для доступа к специфическому банку памяти. Значение APE может удерживаться до того момента, когда сигналы управления памятью укажут на другой последовательный доступ.

Предшествующие процессоры ARM содержали сигнал ALE, поэтому, поддержка данного сигнала сохранена для обеспечения обратной совместимости. Данный сигнал также позволяет модифицировать временную диаграмму шины адреса для достижения того же результата, что и с помощью APE, но динамически. Для поддержания чистоты шины адреса во время существования низких уровней синхронизации MCLK необходимо на ALE устанавливать высокий уровень одновременно с появлением падающего фронта MCLK и низкий уровень при появлении нарастающего фронта MCLK. ALE можно формировать простым инвертированием MCLK, но задержка от MCLK к ALE должна тщательно управляться, чтобы выполнить ограничение к временной диаграмме Tald. На рисунке 3.10 показывается, как можно использовать ALE для получения временной диаграммы, совместимой со статическим ОЗУ. Более подробно о точных значениях ограничений к временной диаграмме см. в разделе 7 "Статические и динамические характеристики".


Рисунок 3.10. Временная диаграмма, совместимая со статическим ОЗУ

Прим.: Если ALE используется для изменения временной диаграммы шины адреса, то необходимо установить на входе APE высокий уровень. Аналогично, если используется APE, то высокий уровень необходимо подать на вход ALE.

Достичь более лучшей системной производительности можно, используя конвейеризованную конфигурацию с высоким уровнем на входе APE. Этим обеспечивается большее время для дешифрации адреса.

6. Сигналы, синхронизированные с данными

В данном параграфе описываются:

  • D[31:0], DOUT[31:0] и DIN[31:0]
  • ABORT
  • Разрешение фиксации байта
  • Байтный и полусловный доступы.

6.1. D[31:0], DOUT[31:0] и DIN[31:0]

Процессор ARM7TDMI поддерживает как однонаправленные шины данных DIN[31:0], DOUT[31:0], так и двунаправленную шину данных D[31:0]. Вход конфигурации BUSEN используется для выбора активной шины. На рисунке 3.11 демонстрируется организация шин данных и логика разделения шин.

Организация внешней шины
Рисунок 3.11. Организация внешней шины

При использовании двунаправленной шины необходимо отключить однонаправленные шины путем установки низкого уровня на входе BUSEN. Временная диаграмма трех циклов шины чтения-запись-чтение показана на рисунке 3.12.


Рисунок 3.12. Временная диаграмма двунаправленной шины

Однонаправленная шина данных

Когда BUSEN имеет высокий уровень, все инструкции ввода данных выполняются на шине ввода данных DIN[31:0]. Временная диаграмма ввода данных аналогична двунаправленной шине в режиме ввода. Данные должны устанавливаться и удерживаться относительно падающего фронта MCLK. Точные требования к временной диаграмме приведены в разделе 7 "Статические и динамические характеристики".

В этой конфигурации выводимые данные присутствуют на DOUT[31:0]. Состояние данной шины изменяется только при выполнении процессором цикла записи. Временная диаграмма также аналогична двунаправленной шине данных. Значение DOUT[31:0] изменяется после падающего фронта MCLK.

Временная диаграмма шины с сочетанием циклов чтение-запись-чтение показана на рисунке 3.13.

Временная диаграмма однонаправленной шины
Рисунок 3.13. Временная диаграмма однонаправленной шины

При использовании однонаправленных шин данных на вход BUSEN необходимо подать высокий уровень, а при использовании двунаправленной шины D[31:0] его необходимо оставить неподключенным.

Однонаправленные шины данных обычно используются внутренне в специализированных интегральных схемах. Для подключения к внешней памяти большинство систем требуют двунаправленной шины данных. На рисунке 3.14 демонстрируется подключение однонаправленных шин к выводам специализированной интегральной схемы для подключения к внешней двунаправленной шине.

Внешнее подключение однонаправленных шин
Рисунок 3.14. Внешнее подключение однонаправленных шин

Двунаправленная шина данных

Когда BUSEN имеет низкий уровень, отключается буфер между DIN[31:0] и D[31:0]. Игнорируются любые данные, присутствующие на DIN[31:0]. Кроме того, когда на вход BUSEN подан низкий уровень, на выходах DOUT[31:0] устанавливается значение 0x00000000.

Когда процессор ARM7TDMI считывает из памяти, DIN[31:0] функционируют как входы. В течение циклов записи ядро ARM7TDMI должно выводить данные. В течение фазы предыдущего цикла сигнал nRW принимает высокий уровень для сигнализации цикла записи. В течение фактического цикла nENOUT принимает низкий уровень для сигнализации вывода данных процессором на линиях D[31:0]. Рисунок 3.15 демонстрирует временную диаграмму шины с разрешенной шиной данных. На рисунке 3.16 показана схема, которая используется в процессоре для точного управления, когда внешняя шина настроена на вывод.

Шинный цикл записи данных
Рисунок 3.15. Шинный цикл записи данных

Схема управления шиной данных
Рисунок 3.16. Схема управления шиной данных

Макроячейка содержит дополнительный сигнал управлений шиной nENIN, который позволяет внешней системе установить третье состояние на шине. В самых простых системах на nENIN устанавливается низкий уровень, а nENOUT можно игнорировать. Во многих применениях, когда внешняя шина данных является общеиспользуемым ресурсом, требуется большее управление. В данной ситуации nENIN может использоваться для задержки во время управления внешней шиной.

Прим: для обратной совместимости предусмотрен сигнал DBE. На уровне макроячейки DBE и nENIN функционируют практически идентично и в большинстве приложений один из них может использоваться для разрешения работы шины данных.

Процессор содержит другой сигнал управления выводом - TBE. Данный сигнал обычно используется при тестировании и должен быть подключен к высокому уровню в остальных случаях. При подаче на вход TBE низкого уровня все тристабильные выходы переходят в высокоимпедансное состояние так, как если бы на оба входа DBE и ABE были поданы низкие уровни, вызывая переход шины данных, шины адреса и других сигналов, обычно управляемых ABE, в высокоимпедансное состояние.

Прим.: На TBE нет ячейки сканирования. Поэтому, TBE полностью не зависит от сканирования данных и может использоваться для перевода выходов в высокоимпедансное состояние при выполнении тестирующего сканирования.

В таблице 3.6 показаны сигналы, которые управляют тристабильностью процессорных выходов.

Таблица 3.6. Управление тристабильностью процессорных выходов

Выход процессора ABE DBE TBE
A[31:0] Да - Да
D[31:0] - Да Да
nRW- Да - Да
LOCK Да - Да
MAS[1:0] Да - Да
nOPC Да - Да
nTRANS Да - Да

Пример построения тестового кристалла на основе ядра ARM7TDMI

Подключение шины данных процессора ARM7TDMI D[31:0] к внешней общеиспользуемой шине требует применения дополнительной логики, которая варьируется между применениями, как и в случае тестового кристалла.

В данном применении необходимо уделить внимание предотвращению столкновения на шине данных D[31:0] при изменении направления шины данных. Временная диаграмма nENIN и сигналы управления необходимо организовать таким образом, чтобы во время инициации вывода ядром управление выводами D[31:0] было отключено до то того момента, когда ядро начнет управление. Аналогично, когда шина обратно переключается на ввод, ядро должно приостановить управление до активизации выводов.

Схема тестового кристалла на основе процессора ARM7TDMI показана на рисунке 3.17.


Рисунок 3.17. Схема тестирования шины данных

Прим.: на уровне ядра TBE и DBE - неактивны, привязаны к высокому уровню, т.к. в упакованном исполнении вы не можете вручную переводить внутренние шины в высокоимпедансное состояние. На уровне выводов, сигнал тестового кристалла EDBE используется логикой управления шины для представления возможности контроллеру внешней памяти выполнять арбитрирование шины и, при необходимости, асинхронного отключения тестового кристалла с ядром ARM7TDMI.

6.2 ABORT

Сигнал ABORT индицирует, что операция с памятью не смогла завершиться успешно. ABORT опрашивается по окончании шинного цикла в течение S-циклов и N-циклов.

Если ABORT устанавливается во время доступа к данным, то он вызывает выполнение процессором обработки события Аварийных данных. Если он устанавливается при выборке кода операции, то аварийная инструкция передается по конвейеру и при ее выполнении возникает событие Аварийная предварительная выборка.

ABORT может использоваться системой управления памятью для реализации, например, базовой схемы защиты памяти или системы виртуальной памяти с подкачкой страниц по требованию.

6.3 Разрешение фиксации байта

Для простоты подключения ядра ARM7TDMI к системам памяти, использующих подсловные форматы, ввод данных и инструкций необходимо выполнить на побайтной основе. Это достигается за счет использования сигналов BL[3:0] следующим образом:

  • BL[3] управляет фиксацией данных на D[31:24]
  • BL[2] управляет фиксацией данных на D[23:16]
  • BL[1] управляет фиксацией данных на D[15:8]
  • BL[0] управляет фиксацией данных на D[7:0].

Прим.: рекомендуется, чтобы в новых разработках на входы BL[3:0] подавались высокие уровни и чтобы значения слов из узких систем памяти фиксировались во внешних регистрах по отношению к ядру ARM7TDMI.

В системе памяти, которая поддерживает только память со словным форматом, на входы BL[3:0] можно подать высокие уровни. В системах памяти с подсловным форматом сигналы BL[3:0] используются для фиксации данных при считывании из памяти. Например, словный доступ к памяти с полусловным форматом должен выполняться в течение двух циклов памяти:

  • в первом цикле данные D[15:0] выводятся из памяти и фиксируются в ядре по падающему фронту MCLK, когда оба сигнала BL[1:0] имеют высокий уровень.
  • во втором цикле данные D[31:16] фиксируются в ядре по падающему фронту MCLK, когда BL[3:2] имеют высокие уровни, а BL[1:0] - низкие.

На рисунке 3.18 словный доступ из полусловной системы памяти выполняется за два цикла:

  • в первом цикле считываемые данные подаются на младшую половину шины;
  • во втором цикле считываемые данные подаются на старшую половину шины.

Поскольку требуется два цикла памяти, то nWAIT используется для продления внутренней синхронизации процессора. nWAIT не оказывает влияния на работу регистров фиксации данных. При использовании этого метода данные могут считываться из памяти в виде слов, полуслов или байт, а также имеется возможность вставки любого требуемого количества состояний ожидания. При многоцикловых доступах к памяти nWAIT должен удерживаться в низком состоянии до фиксации последней части.

В примере, показанном на рисунке 3.18, сигналы BL[3:0] принимают значение 0x3 в первом цикле, чтобы были открыты только регистры на D[15:0]. Если подать на BL[3:0] значение 0xF, то все регистры будут открыты. Это не оказывает влияние на работу ядра, т.к. регистры на линиях D[31:16] записываются корректным значением в ходе второго цикла.

Прим.: BL[3:0] должны иметь высокий уровень в течение циклов записи.


Рисунок 3.18. Доступ памяти

На рисунке 3.19 демонстрирует чтение полуслова из памяти с байтным форматом и одним состоянием ожидания. На рисунке каждый доступ к памяти выполняется два цикла:

  • в первом цикле доступа:
    - на входы BL[3:0] подается значение 0xF
    - корректные данные защелкиваются с D[7:0]
    - неизвестные данные защелкиваются с D[31:8].
  • во втором цикле защелкивается байт на D[15:8], тем самым, завершая корректное считывание полуслова на D[15:0] из памяти. То, что D[31:16] имеют неизвестное значение - не играет никакой роли, т.к. ядро извлекает только полуслова.


Рисунок 3.19. Двухцикловый доступ к памяти

Байтный и полусловный доступы

Процессор индицирует размер передачи за счет использования сигналов MAS[1:0] в соответствии с описанием в параграфе Сигналы MAS[1:0].

Байтный, полусловный и словный доступы описываются в параграфах "Чтение" и "Запись".

Чтение

Если выполняется чтение полуслов или байт, то 32-разрядная система памяти может вернуть полное 32-разрядное слово, а процессор извлечет из него действительное полусловное или байтное поле. Извлекаемые поля зависят от состояния сигнала BIGEND, который определяет конфигурацию порядка следования данных в системе. См. также Форматы памяти.

С

читанное слово из 32-разрядной памяти представляет собой значение слова на всей шине данных, как показано в таблице 3.7.

При подключении к процессору 8-16-разрядной системы памяти необходимо гарантировать, чтобы данные были представлены на корректных линиях данных, как показано в таблице 3.7.

Таблица 3.7. Доступы чтения

Тип доступ MAS[1:0] A[1:0] Прямой порядок (Little-endian) BIGEND = 0 Обратный порядок (Big-endian) BIGEND = 1
Слово 10 XX D[31:0] D[31:0]
Полуслово 01 0X D[15:0] D[31:16]
01 1X D[31:16] D[15:0]
Байт 00 00 D[7:0] D[31:24]
00 01 D[15:8] D[23:16]
00 10 D[23:16] D[15:8]
00 11 D[31:24] D[7:0]

Прим.: при чтении подслов значение, расположенное в младших битах регистра ARM, независимо от положения байтных линий, используется для чтения данных. Например, при чтении байта с A[1:0] = 01 в системе с прямым порядком означает, что байт считывается с линий D[15:8], но размещается в разрядах [7:0] регистра ARM.

Запись

Когда процессор ARM7TDMI выполняет запись байта или полуслова, то записываемые данные передаются по шине данных, как показано на рисунке 3.20.

Записываемая система памяти должна быть способна выполнять запись в любой один байт в системе памяти. Данная возможность требуется при использовании ARM Си-компилятора и отладочных средств.


Рисунок 3.20. Копирование данных

7. Продление времен доступа

Процессор ARM7TDMI не содержит динамической логики, которая для поддержания внутреннего состояния требует подачи регулярной синхронизации. Следовательно, нет ограничений по максимальному периоду, в течение которого MCLK может затягиваться т или nWAIT удерживаться в низком состоянии. Существует два метода продления времен доступа:

  • Модуляция MCLK
  • Использование nWAIT для управления шинными циклами

Прим.: если вы желаете использовать встроенную макроячейку трассировки (ETM) для получения информации о трассируемой инструкции и данных в порте трассировки, то вы можете использовать сигнал nWAIT для продления времен доступа.

7.1 Модуляция MCLK

Временная диаграмма памяти полностью определяется MCLK и длинные времена доступа можно получить путем продления этой синхронизации. Как правило, продлевают низкий полупериод MCLK, т.к. это позволяет менеджеру памяти прервать операцию, если в конечном счете доступ претерпевает неудачу.

MCLK может продлеваться перед подачей к процессору; вход nWAIT также может использоваться вместе с исходным тактовым сигналом MCLK. Подача низкого уровня на вход nWAIT оказывает такой же эффект, что и продление низкого полупериода MCLK.

7.2 Использование nWAIT для управления шинными циклами

Использование конвейеризации в шинном интерфейсе процессора означает, что между циклами синхронизации и шинными циклами имеются различия. nWAIT может использоваться для продления шинного цикла, следовательно, он может длиться множество циклов синхронизации. Вход nWAIT позволяет расширить временную диаграмму шинных циклов с инкрементами полных циклов MCLK:

  • когда nWAIT имеет высокий уровень при падающем фронте MCLK, шинный цикл завершается
  • когда nWAIT имеет низкий уровень, шинный цикл расширяется за счет продления низкого уровня сигнала внутренней синхронизации.

nWAIT должен изменятся только при существовании низкого уровня на MCLK.

Сигналы адресного класса и сигналы запроса памяти на конвейере опережают передачу данных на один шинный цикл. В системе, использующей nWAIT, это может происходить более одного цикла MCLK. Данный процесс иллюстрируется на рисунке 3.21, где демонстрируется использование nWAIT для расширения непоследовательного цикла. В примере первый N-цикл следует на 5 циклов позже любого N-цикла относительно несвязанных адресов, а адрес для второго доступа передается перед завершением первого доступа.

Временная диаграмма типичной системы
Рисунок 3.21. Временная диаграмма типичной системы

Прим.: При разработке контроллера памяти рекомендуется считывать значения nMREQ, SEQ, а также сигналов адресного класса только когда nWAIT имеет высокий уровень. Этим гарантируется, что состояние контроллера памяти не случайно обновляется в процессе расширенного шинного цикла.

8. Действие ядра ARM7TDMI в режиме отладки

Когда ядро ARM7TDMI находится в состоянии отладки, сигналы nMREQ и SEQ сигнализируют о внутренних циклах. Это позволяет оставшейся части системы памяти игнорировать процессор и функционировать обычным образом. Поскольку оставшаяся часть системы продолжает функционировать, то ядро игнорирует аварии и прерывания при работе в состоянии отладки.

Сигнал BIGEND не должен изменяться системой в процессе отладки. Если BIGEND изменит свое состояние, то возникнут не только проблемы с синхронизацией, но и с изменениями процессора, независимо от отладчика. Сигнал nRESET должен поддерживаться в стабильном состоянии в процессе отладки. Если nRESET принимает низкий уровень, то состояние процессора изменяется без уведомления отладчика.

Если инструкции выполняются в состоянии отладки, то все выходы шинного интерфейса, кроме nMREQ и SEQ, изменяются асинхронно к системе памяти. Например, адресная шина изменяется при каждом помещении новой инструкции на конвейер. Несмотря на асинхронность, данный процесс не оказывает влияния на систему, т.к. nMREQ и SEQ предназначены для индикации внутренних циклов, независимо от того, что делает остальная часть процессора. Схемой контроллера памяти должно гарантироваться, что асинхронная работа не оказывает влияния на остальную систему.

9. Доступ в привилегированном режиме

Компания ARM Limited рекомендует использовать вывод ядра nTRANS, если доступ к системе памяти необходимо осуществлять только в привилегированном режиме. Данный сигнал различается между доступами в пользовательском и привилегированном режимах.

Причиной такой рекомендации является ситуация, когда операционная система (ОС) осуществляет доступ к памяти от имени текущего приложения, когда она должна выполнять данные доступы в пользовательском режиме. Это достигается с помощью инструкций LDRT и STRT, которые соответствующим образом устанавливают сигналы nTRANS.

Данная мера позволяет избежать возможности хакеру сознательно ввести в ОС неверный указатель и предоставить ОС привилегированный доступ к данной памяти. Данный способ в противном случае может быть использован хакером для предоставления приложению пользователя доступа к любой области памяти, например, области ввода-вывода.

Младшие значащие биты CPSR являются также выходными инвертированными сигналами ядра nM[4:0]. Они индицируют о текущем режиме процессора в соответствии с таблицей 3.8.

Таблица 3.8. Использование nM[4:0] для индикации текущего процессорного режима

M[4:0] nM[4:0] Режим
10000 01111 Пользователя
10001 01110 FIQ
10010 01101 IRQ
10011 01100 Супервизорный
10111 01000 Аварийный
11011 00100 Неопределенный
11111 00000 Системный

Прим.: Сигналы nM[4:0] необходимо использовать только для диагностики и отладки.

10. Последовательность сброса после подачи питания

Сброс статического устройства после подачи питания является хорошим способом устранения любых неопределенных состояний, которые могут привести к увеличению потребляемого тока. Большинство систем для сброса используют простую RC-цепь на входе сброса.

В процессе сброса сигналы nMREQ и SEQ показывают внутренние циклы, в течение которых адресная шина продолжает инкрементирование на 2 или на 4 байта. Начальный адрес и инкрементируемое значение зависит от состояния ядра, в котором был активизирован вход сброса nRESET. Они имеют неопределенное состояние после подачи питания.

После установления высокого уровня на входе nRESET ядро ARM выполняет еще два внутренних цикла перед выборкой первой инструкции по вектору сброса (адрес 0x00000000). Затем перед выполнением первой инструкции потребуется еще три цикла MCLK для продвижения инструкции по ступеням выборка-дешифрация-исполнение конвейера инструкций ARM. Это показано на рисунке 3.22.

Прим.: для полного сброса ядра необходимо удерживать вход nRESET в активном состоянии как минимум два цикла MCLK. Также необходимо сбросить логику EmbeddedICE и TAP-контроллер, независимо от того используется функция отладки или нет. Это выполняется путем удержания входа nTRST в низком состоянии в течение времени не менее Tbsr, но дольше, чем на входе nRESET.

На рисунке 3.22 x, y и z - значения инкрементируемого адреса.

Последовательность сброса
Рисунок 3.22. Последовательность сброса



<-- Предыдущая страница Оглавление Следующая страница -->