Использование контроллера SDRAM реконфигурируемых систем на кристалле семейства A7 фирмы Triscend
Реконфигурируемые системы на кристалле (CSoC) семейства A7 фирмы Triscend [1] имеют в своем составе аппаратный блок интерфейса внешней памяти MSSIU (Memory Sub-System Interface Unite), который позволяет работать с различными видами внешней памяти — статической (Flash-ПЗУ, SRAM) и синхронной динамической (SDRAM). Наибольшей информационной емкостью и наименьшей стоимостью хранения бита информации обладают микросхемы динамической памяти. Рассмотрим возможности встроенного аппаратного интерфейса CSoC семейства A7 при организации подсистемы динамической памяти в устройствах цифровой обработки сигналов.
Блок MSSIU семейства A7 ориентирован на работу с синхронной динамической памятью SDRAM емкостью до 256 Мбайт. Устройства динамической памяти могут иметь различную емкость: 64, 128 или 256 Мбит, а также различную разрядность данных: 8 или 16 бит. Контроллер SDRAM, входящий в состав блока MSSIU, поддерживает внешнюю подсистему памяти с разрядностью данных до 32 бит с возможностью осуществления 8-, 16- и 32-битных транзакций. Например, если внешняя динамическая память является 8-битной, то для осуществления пересылки 32-битного слова SDRAM-контроллер сформирует четыре эквивалентных обращения к памяти. Формирование таких последовательных циклов пересылки происходит прозрачно для программного обеспечения процессорного ядра CSoC. Блок MSSIU позволяет встроенными средствами организовать подключение до двух банков памяти, причем в каждом банке может быть до четырех микросхем SDRAM. Интерфейс с динамической памятью рассчитан на частоты синхронизации до 60 МГц, что позволяет применять микросхемы SDRAM с временем доступа 8 нс и меньше.
Перед ознакомлением с возможностями встроенного контроллера SDRAM кратко остановимся на особенностях самих микросхем динамической памяти. В микросхемах SDRAM внешние управляющие сигналы фиксируются положительным фронтом сигнала синхронизации и используются для формирования команд, управляющих процессами в запоминающей матрице. Такие микросхемы являются устройствами с программируемыми параметрами, со своим набором команд, внутренней организацией чередования банков и т. д. Настройка микросхемы SDRAM производится путем программирования внутреннего регистра режима работы (Mode Register). На рис. 1 приведен формат такого регистра применительно к микросхеме фирмы Micron MT48LC32M8A2 с информационной емкостью 256 Мбит, имеющей байтовую организацию с четырьмя внутренними банками (8Mx8x4). Подобная элементная база разнообразных производителей используется при построении модулей DIMM с объемом памяти до 512 Мбайт.
Первое поле (Burst Length) устанавливает длину пакетного цикла, в соответствии с величиной которого работает внутренний счетчик адреса. Длина пакетного цикла может программироваться на передачу 1, 2, 4, 8 элементов данных или «полной страницы» (full page), составляющей 1024 байта. Второе поле — поле пакетного режима (Burst Type) устанавливает порядок счета адресов внутри пакетного цикла — последовательный или перемежающийся (interleave). Им определяется специфический порядок считывания адресов, используемый для некоторых режимов работы. Третье поле (CAS latency) определяет задержку данных в тактах частоты относительно момента подачи команды чтения или записи. CAS-латентность может быть установлена равной 2 или 3 в зависимости от характеристик микросхемы и соответствует минимальному времени в тактах, которое требуется для выдачи устойчивого первого слова данных на шину. Последующие слова, количество которых соответствует длине пакета, появляются в каждом последующем такте без дополнительной задержки. Четвертое (Operation Mode) и пятое (Write Burst Mode) поля в совокупности определяют вид операции с памятью:
- нормальная — пакетное чтение или пакетная запись;
- специальная — пакетное чтение или одиночная запись.
Регистр режимов программируется в начале работы, перед первым обращением к SDRAM (подачей любой активной команды), и затем по мере необходимости может быть перепрограммирован путем изменения соответствующих полей.
Контроллер SDRAM блока MSSIU CSoC A7 выполнен аппаратно, без использования ресурсов встроенной матрицы программируемой логики. Реализация контроллера полагает сочетание неизменных и варьируемых разработчиком параметров функционирования подсистемы памяти (другими словами, логика работы контроллера имеет две составляющие — предопределенную и настраиваемую пользователем). Микросхемы памяти предоставляют довольно много вариантов функционирования, однако ввиду ограниченной сложности контроллера и схемотехники его сопряжения с элементами системы на кристалле, в контроллере SDRAM CSoC A7 реализован только предопределенный режим: последовательный пакетный режим чтения с длиной 4 и одиночной записью. Такая конфигурация содержится в регистре режима работы SDRAM. Она является подходящей для большинства применений, так как в этом случае минимально допустимый объем модифицируемой информации составляет при записи один байт, а при чтении осуществляется автоматическая выборка последовательных четырех байт информации для ускорения обмена. Увеличение скорости записи в динамическую память достигается за счет реализации последовательной записи до четырех слов данных без дополнительных временных издержек при обмене с кэш-памятью и контроллером DMA. Ограничения вариантов функционирования SDRAM для CSoC A7 проявляются при необходимости реализации специфичных режимов доступа к запоминающему массиву, однако в этом случае у разработчика остается возможность создания своего собственного специализированного контроллера синхронной динамической памяти во встроенной матрице программируемой логики.
Изменяемые параметры функционирования контроллера SDRAM позволяют настроить его на применение запоминающих устройств с различной организацией и временными характеристиками. В таблице 1 приведены доступные для модификации разработчиком настройки контроллера, значения которых могут быть изменены при создании программного обеспечения разработки.
Контроллер SDRAM обеспечивает режим автоматической регенерации содержимого ОЗУ — auto-refresh. Внутренняя схема на основе 12-разрядного счетчика обеспечивает регулярные запросы регенерации с программируемым периодом, выраженным числом тактовых импульсов системной частоты между двумя последовательными запросами. На каждый такой запрос можно выполнить до 15 циклов регенерации. При большой загруженности интерфейса SDRAM-контрол-лер может не успевать проводить регенерацию в требуемый временной интервал, что потенциально может привести к потере информации. Для анализа подобной ситуации существует программно доступный регистр, который содержит количество необработанных требований регенерации.
Специфика формирования адреса для динамической памяти состоит в том, что он подразделяется на следующие три составляющие: адрес строки, адрес столбца и номер внутреннего банка. Для разных типов SDRAM эти три составляющие могут иметь различные значения. Контроллер SDRAM производит трансляцию линейного непрерывного адресного пространства процессорного ядра CSoC в соответствующие три составляющие адреса динамической памяти. В соответствии с распределением адресного пространства CSoC A7 четыре старшие линии адресной шины A[31:28] находятся в неизменном состоянии 1100b. Максимальный объем линейного адресного пространства динамической памяти составляет 256 Мбайт, однако возможно его расширение с помощью механизма организации банков памяти.
Архитектура контроллера SDRAM включает составляющие, предназначенные для ускорения обмена данными между системой на кристалле и внешней памятью:
- Во-первых, структура контроллера SDRAM оптимизирована для блочных пересылок, таких, как заполнение кэш-памяти или обмен по каналу DMA.
- Во-вторых, с целью увеличения производительности в режиме DMA возможно использование дополнительного буфера типа FIFO объемом восемь 32-разрядных слов. При записи в SDRAM через механизм DMA в этом буфере накапливается четыре слова, и эта порция данных передается в память наиболее эффективно. Буфер FIFO позволяет совмещать во времени прием информации по каналу DMA и запись во внешнюю память. При поступлении последней порции данных содержимое буфера FIFO автоматически пересылается в SDRAM. При чтении из SDRAM производится предварительное блочное считывание (предвыборка) четырех слов в буфер FIFO и последующие одиночные передачи по запросу. Когда передача завершена, для сброса неиспользованных пред-выбранных данных буфер FIFO автоматически опустошается.
- В-третьих, при системной частоте выше 40 МГц рекомендуется включение дополнительной ступени конвейера между интерфейсом памяти и процессором.
Для увеличения производительности контроллера SDRAM важно понимать архитектуру динамической памяти. При работе в текущем внутреннем банке SDRAM обращение к ячейке с адресом строки, отличным от активной строки, потребует дополнительных циклов выполнения команд PRECHAGE и ACTIVE, что увеличивает время доступа. Из этого следует, что по возможности необходимо избегать одновременных запросов к различным строкам одного банка. Например, при размещении программного кода приложения в одном банке SDRAM и проведении DMA-пересылок в другом банке, исключаются потери времени при переходе границ строки, и, таким образом, отсутствуют непроизводительные затраты времени.
Блок MSSIU имеет четыре конфигурационных регистра, определяющих его функционирование:
- Memory Subsystem Configuration Register (MSS_CONFIG_REG) определяет разрядность шины данных и порядок выборки для внешней статической памяти, разрядность шины данных, распределение адресов строк и банков, количество внутренних и внешних банков для внешней динамической памяти, разрешение дополнительной ступени конвейера и буферизации DMA-каналов.
- Static Memory Interface Timing Control Register (MSS_TIM_CTRL_REG) определяет временные параметры сигналов чтения и записи для внешней статической памяти.
- SDRAM Mode Register (MSS_SDR_MODE_REG) определяет основные временные параметры обращения к внешней динамической памяти.
- SDRAM Oontrol Register (MSS_SDR_CTRL_REG) определяет параметры регенерации и управления энергопотреблением внешней динамической памяти.
Содержимое этих конфигурационных регистров по умолчанию определяется на основании временных параметров выбранных устройств памяти и их организации. Этот процесс происходит прозрачно для разработчика на этапе системной интеграции, во время создания конфигурационного файла в FastChip DeviceLink Utility. Разработчик может при создании программного кода для процессорного ядра CSoC переопределять содержимое конфигурационных регистров, тем самым динамически изменяя параметры обращения к внешней памяти. На рис. 2 приведен пример временной диаграммы обращения к динамической памяти.
Физический интерфейс с SDRAM использует общие со статической памятью шины данных и адреса, при этом перераспределение ролей управляющих сигналов производится в зависимости от области адресного пространства, к которой производится обращение. В случае обращения к SDRAM линии шины адреса выполняют функции сигналов выборки строк RAS и столбцов CAS, выборки внутреннего банка BS[1:0], маскирования байт DQMB[3:0] и собственно адреса A[12:0]. Кроме этого, общим для интерфейса статической и динамической памяти является сигнал записи WE. Четыре внешних сигнала CSoC А7 являются выделенными для интерфейса с динамической памятью:
- сигнал SDCLK передним фронтом синхронизирует все операции с SDRAM;
- сигнал SDCKE требуется для работы памяти в режиме пониженного энергопотребления;
- сигналы SDCE[1:0] используются для выбора одного или двух внешних банков SDRAM.
Методика проектирования подсистемы динамической памяти на первом этапе предполагает определение основных характеристик: информационной емкости, архитектуры, физической реализации, алгоритмов работы. Этот этап тесно связан с целевым назначением проектируемой системы. Так, например, при разработке специализированной системы для астрономических наблюдений [2] одним из технических требований было накопление в буферной памяти 1,5 Гбайт видеоинформации, поступающей высокоскоростным потоком с трех синхронно работающих телекамер. Было принято решение в качестве основы подсистемы памяти использовать стандартные DIMM-модули SDRAM объемом 512 Мбайт. На втором этапе проектирования использовались методы системной интеграции для обеспечения работоспособности подсистемы динамической памяти в окружении CSoC А7. Среда проектирования FastChip полноценно поддерживает решение подобных вопросов, в частности ее возможности допускают использование разнообразных типов динамической памяти, как стандартных одиночных микросхем, так и DIMM-модулей. Однако встроенная поддержка устройств DIMM168 SDRAM в пакете FastChip отсутствовала, что потребовало дополнительных изысканий для подключения таких модулей в технологическую цепочку автоматизированного проектирования.
Рассмотрим такое подключение более подробно. Собственно в среде FastChip на этапе конфигурирования MSSIU для динамической памяти определяется ее объем, разрядность и количество внешних банков. При этом среда резервирует для использования SDRAM необходимое количество контактов ввода-вывода. Физическая интерпретация памяти осуществляется в утилите FastChip DeviceLink Utility, которая использует базу данных конкретных типов динамической памяти со своими временными характеристиками и архитектурными особенностями. Такая база состоит из предопределенных типов, заданных в файлах каталога ..fastchipdatamemoryregistry*.mr, и может расширяться пользовательскими типами, заданными в каталоге ..fastchipdatausermemories*.mr. Структура файла *.mr организована по иерархическому принципу:
- сначала определяется класс памяти;
- затем для SDRAM описывается структура хранения одного бита информации;
- затем описывается структура отдельной микросхемы;
- затем описывается организация микросхем в модули (ширина доступа с шины данных), временные характеристики выборки;
- и, наконец, определяется наименование памяти, под которым она будет доступна в среде проектирования для конфигурации на целевой плате.
В качестве примера приведем содержимое файла описания модуля памяти DIMM168 на 256 Мбайт с необходимыми комментариями (см. листинг).
Созданное таким образом описание модуля памяти содержит в себе всю необходимую информацию для автоматической настройки контроллера SDRAM на конкретные параметры из таблицы 1. Такая настройка производится утилитой DeviceLink, в ходе выполнения которой определяется содержимое конфигурационных регистров блока MSSIU. Разработчик при этом освобожден от побитной настройки контроллера SDRAM, его основной задачей является корректное определение архитектуры и временных параметров подсистемы памяти.
Практическая работа по подключению к CSoC А7 динамической памяти большого объема показала гибкость и широкие возможности системной интеграции. Внешняя подсистема памяти с использованием внутреннего арбитража является прозрачно-доступной как со стороны процессорного ядра (ARM7TDMI) CSoC A7, так и со стороны матрицы программируемой логики. Указанные преимущества, предоставляемые использованием технологии «реконфигурируемая система на кристалле», весьма актуальны при проектировании устройств обработки сигналов, поэтому данная технология представляет интерес для разработчиков.
Литература
- Березин В., Золотухо Р. 32-разрядная ре-конфигурируемая система на кристалле A7 фирмы Triscend // Компоненты и Технологии. 2003. № 4.
- Алексеев С. Ю., Березин В. Б., Березин В. В. Астрономические телевизионные камеры с перестраиваемыми параметрами на основе технологии «система на кристалле» // Сборник материалов 6-ой международной конференции «Оптико-электронные приборы и устройства в системах распознавания образов, обработки изображений и символьной информации — Распознавание 2003». Курск. 2003. Часть 1.