Перейти к основному содержимому

MPORT

Данный документ содержит рекомендации по применению порта внешней памяти общего назначения (MPORT) процессоров серии «Мультикор» и предназначен для случаев, когда к порту внешней памяти подключается аппаратура, отличающаяся от микросхем памяти со стандартными интерфейсами (такими, как SRAM, SDRAM, NAND-флеш, etc).

подсказка

Детальное описание порта внешней памяти находится в руководстве пользователя на конкретный процессор. Реализация MPORT в конкретном процессоре может иметь отличия от описанной в данном документе. Для уточнения всех возникающих вопросов необходимо связаться со службой технической поддержки – support@elvees.com.

Состояния выводов MPORT

После окончания обращения во внешнюю память MPORT переводит выходы в следующие состояния:

Таблица 1

Группа выводовСостояние
A[31:0]Остается неизменным до следующего обращения к внешней памяти
D[31:0]При записи: остается неизменным до следующего обращения во внешнюю память При чтении: переключается в режим выхода через один такт после снятия сигнала nRD и удерживает уровни, соответствующие считанному слову.
nRDНеактивное (логическая 1)
nWE, SWE, nWR[3:0], nBE[3:0], DQM[3:0]Неактивное (логическая 1)
nCS[4:0] (тот nCS, по которому происходило обращение; остальные – в неактивном состоянии)Остается в активном состоянии (логический “0”) до тех пор, пока не последует обращение к внешней памяти, адресуемой другим выводом nCS. Только тогда перейдет в неактивное состояние (логическая “1”)

В состоянии активного сброса (активный ноль на входе nRST микросхемы) линии шины адреса находятся в нулевом состоянии, линии шин данных – в третьем состоянии.

Сигналы байтовой выборки

В зависимости от конкретного процессора, порт внешней памяти может иметь сигналы байтовой записи nWR[3:0] или сигналы байтовой выборки nBE[3:0]. Кроме того, каждый процессор имеет сигналы байтовой выборки SDRAM – DQM[3:0]. Если в процессоре есть выводы nBE[3:0] – сигналы DQM[3:0] не будут активизироваться до того, как будет инициализирована SDRAM.

Важно: сигналы DQM переходят в единицу в случае, если они активны. Однако, так как изначально эти маскирующие сигналы, байты, которым соответствует активный уровень сигнала DQM (то есть, единица), не участвуют в процедуре обмена данными (не записываются и не считываются). Это позволяет использовать их как сигналы байтовой выборки и для статической памяти. Поведение сигналов байтовой выборки при чтении и записи указано в таблице 3.1.

Таблица 2

Группа выводовСостояние при записиСостояние при чтении
DQM[3:0]Запись целого слова (инструкция SW, DMA-обмен, выборка инструкции) – 0000b. Запись полуслова (инструкция SH) – 0011b или 1100b, в зависимости от адреса. Запись байта (инструкция SB) – 1110b, 1101b, 1011b или 0111b, в зависимости от адресаНеактивное (0000b)
nBE[3:0]Аналогично DQM[3:0]Активное (0000b)
nWR[3:0]Аналогично DQM[3:0]Неактивное (1111b)

Чтение и запись данных

Одиночные чтения/записи

Происходят в случае, когда между инструкциями чтения из одного блока памяти проходит время большее, чем необходимо порту внешней памяти на это чтение. В случае, если несколько чтений из одного блока памяти происходит несколько одиночных чтений подряд (например, несколько инструкций LW подряд) – они могут объединяться портом внешней памяти в одно чтение пачкой. Если необходимо обеспечить одиночное чтение – гарантированно это можно сделать, лишь вставив обращения к другим блокам памяти (на других выводах nCS) между обращениями к требуемому блоку памяти. В случае одиночных обращений к памяти выводы MPORT между чтением/записью каждого слова переходят в состояния, указанные в таблице 2.

Чтения/записи пачками

Возникают в следующих случаях:

  • промах кэш (в этом случае вычитывается область памяти, соответствующая по размерам строке кэш);
  • вычитка инструкции для исполнения (с выключенным кэшированием);
  • DMA-обмен;
  • одиночные инструкции чтения/записи также могут «склеиваться» в пачку.

В случае чтения/записи пачки слов в SDRAM обращение происходит в режиме burst, как это обозначено в спецификации протокола SDRAM. В случае чтения/записи пачки слов в статическую память все задействованные стробы (nCS, nRD, nWE, байтовые стробы) устанавливаются в активное состояние. При записи/чтении каждого слова переключается только шина адреса и шина данных.

Использование кода Хэмминга для защиты данных во внешней памяти

При включенной защите внешней памяти кодом Хэмминга обращения к внешней памяти происходят следующим образом:

На шину данных D[31:0] устанавливаются записываемые данные. При этом аппаратно формируется семиразрядный код Хэмминга для записываемого 32-разрядного слова. Полученный код устанавливается на шине DH[6:0] одновременно с установкой записываемых данных на шине D[31:0]. В случае, если процессор обладает 64-разрядной шиной данных и настроен на обращения в 64-разрядном режиме, формируется два кода Хэмминга, для каждого из записываемых 32-разрядных слов. Код для слова D[63:32] выставляется на шине DHH[6:0], а код для слова D[31:0] – на шине DHL[6:0]. При чтении из внешней памяти контроллер считывает код Хэмминга с шины DH[6:0] (DHH[6:0] и DHL[6:0] в случае 64-разрядного обращения).

Невозможна защита кодом Хэмминга обычной флеш-памяти, подключенной к процессору, так как 7 разрядов шины DH[6:0] недостаточно для формирования управляющих кодов для байтовой флеш-памяти, которую предполагается использовать для хранения кодов Хэмминга. Сигналы nWEHL и nWEHH выведены отдельно, чтобы реализовать режимы тестирования контроллера Хэмминга (см. поле MODE регистра CSR_EXT MPORT).

В режиме MODE=01 эти сигналы формируются одновременно с сигналами nWEL и nWEH и осуществляют запись кода Хэмминга в асинхронную память, соответственно по шинам DHL и DHH.

Особенности 64-разрядного порта внешней памяти

Часть процессоров серии «Мультикор» имеет 64-разрядную шину данных порта внешней памяти, а также дополнительные стробы чтения и записи – для младшего и старшего 32-разрядных слов. Поскольку архитектура MIPS32 не имеет инструкций для записи/чтения 64-разрядных слов из памяти, работа с 64-разрядной внешней памятью имеет свои особенности:

  1. В регистре CSCON, соответствующем тому выводу nCS, к которому подключен 64-разрядный блок памяти, должен быть выставлен в единицу соответствующий разряд.
  2. Если обращение к 64-разрядному блоку памяти производится инструкцией LW или SW – происходит 32-разрядное чтение или запись соответственно. Если младшие разряды адреса A[3:0] равны 0x0 или 0x8 – активизируются «младшие» стробы и разряды D[31:0] шины данных. Если разряды адреса A[3:0] равны 0x4 или 0xC – активизируются «старшие» стробы и разряды D[63:32] шины данных.
  3. В ряде случаев при обращении к 64-разрядному блоку внешней памяти активизируются одновременно и старшие, и младшие стробы, а также разряды D[63:0] шины данных.

Перечень соответствующих ситуаций:

  • обращение по DMA;
  • вычитывание инструкций процессором при выполнении программы из 64-разрядного блока внешней памяти;
  • выполнение операции cache refill.