Компоненты и технологии, № 4'2004
Использование контроллера SDRAM
реконфигурируемых систем на кристалле семейства A7 фирмы Triscend
Реконфигурируемые системы на кристалле (CSoC) семейства A7 фирмы Triscend [1] имеют в своем составе аппаратный блок интерфейса внешней памяти MSSIU (Memory Sub-System Interface Unite), который позволяет работать с различными видами внешней памяти — статической (Flash-ПЗУ, SRAM) и синхронной динамической (SDRAM). Наибольшей информационной емкостью и наименьшей стоимостью хранения бита информации обладают микросхемы динамической памяти. Рассмотрим возможности встроенного аппаратного интерфейса CSoC семейства A7 при организации подсистемы динамической памяти в устройствах цифровой обработки сигналов.
е-
Виктор Березин
bvv73@mail.ru Роман Золотухо
roman@efo.ru
Блок MSSIU семейства A7 ориентирован на работу с синхронной динамической памятью SDRAM емкостью до 256 Мбайт. Устройства динамической памяти могут иметь различную емкость: 64, 128 или 256 Мбит, а также различную разрядность данных: 8 или 16 бит. Контроллер SDRAM, входящий в состав блока MSSIU, поддерживает внешнюю подсистему памяти с разрядностью данных до 32 бит с возможностью осуществления 8-, 16- и 32-битных транзакций. Например, если внешняя динамическая память является 8-битной, то для осуществления пересылки 32-битного слова SDRAM-контроллер сформирует четыре эк-
ВА1ВА0А11A10 A9 A8 A7 A6A5A4 АЗ A2 A1 A0
u u 4 u Ш 4 Ш
Reserved WB Op Mode CAS Latency ВТ Burst Length
Регисгр режима (Mode Register (Мх))
M9 Пакетная запись
0 Пакетная запись
1 Одиночная запись
М8 М7 Режим (Op Mode)
0 0 Стандартные операции
- - Зарезервировано
■Ц
Пакетный режим (Burst Туре)
М3 Тип (Туре)
0
1
Латентность CAS (CAS Latency]
Длина пакетного цикла (Burst lengHif-
Мб М5 М4 Latency
0 0 0 Зарезервировано
0 0 1 Зарезервировано
0 1 0 2
0 1 1 3
1 0 0
1 0 1 Зарезервировано
1 1 0
1 1 1
М2 Ml МО Длина (Length)
Последовательный (Sequential) Перемежающийся (Interleave)
0 0 0 1 1
0 0 1 2 2
0 1 0 4 4
0 1 1 8 8
1 0 0 Зарезервировано Зарезервировано
1 0 1
1 1 0
1 1 1 Полная страница
Рис. 1. Структура регистра режима (Mode Register) микросхем 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)
e
Компоненты и технологии, № 4'2004
Таблица. Настраиваемые параметры контроллера SDRAM
Наименование параметра Назначение Пределы изменения
Refresh/Active Period Определяет время TRC между последовательными командами AUTO REFRESH регенерации динамической памяти Ts<=TRC<=8*Ts
Write Recovery Time Определяет время TWR задержки между записываемыми данными и последующей командой предзаряда шин Ts<=TWR<=8*Ts
Precharge Period Определяет время задержки TRP для выполнения команды PRECHARGE (деактивации банка памяти и предзаряда шин) Ts<=TRP<=8*Ts
Command DelayPeriod Определяет время TRCD задержки для выполнения команды ACTIVE (активация банка и строки) Ts<=TRCD<=8*Ts
CAS latency Определяет время появления в тактах синхронизации первого слова устойчивых данных после подачи активного уровня сигнала CAS 2 — cycle latency 3 — cycle latency
Refresh Burst Size Определяет количество циклов регенерации Nr на каждый запрос регенерации 0<=Nr<=15
Refresh Rate Количество тактов синхронизации между двумя запросами регенерации памяти 0<=TRCD<=2047*Ts
SDRAM Power Management Mode Определяет возможные режимы функционирования SDRAM SDRAM disable SDRAM normal operation SDRAM normal operation with stand-by Power down (self-refresh) mode
устанавливает порядок счета адресов внутри пакетного цикла — последовательный или перемежающийся (interleave). Им определяется специфический порядок считывания адресов, используемый для некоторых режимов работы. Третье поле (CAS latency) определяет задержку данных в тактах частоты относительно момента подачи команды чтения или записи. CAS-латентность может быть установлена равной 2 или 3 в зависимости от характеристик микросхемы и соответствует минимальному времени в тактах, которое требуется для выдачи устойчивого первого слова данных на шину. Последующие слова, количество которых соответствует длине пакета, появляются в каждом последующем такте без дополнительной задержки. Четвертое (Operation Mode) и пятое (Write Burst Mode) поля в совокупности определяют вид операции с памятью:
1. нормальная — пакетное чтение или пакетная запись;
2. специальная — пакетное чтение или одиночная запись.
Регистр режимов программируется в начале работы, перед первым обращением ^DRAM (подачей любой активной команды), и затем по мере необходимости может быть перепрограммирован путем изменения соответствующих полей.
Контроллер 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 имеет четыре конфигурационных регистра, определяющих его функционирование:
e
Компоненты и технологии, № 4'2004
sdclk
Command
DQM
Address
Bank
Data
1
1____I L
1____I L
{precharge У ( NOP ) ^ACTIVE) { NOP )
< BANK >
< ROW У
1Ц
< BANK >
Precharge Command Period
(TRP_FIELD +1) .
1
1
WRITE
NOP
J Y_L J V
І
> < J V
NOP
> €
BANK )
Zl
Command Delay Period (TRCD_FIELD+1)
< BANK У
Рис. 2. Временная диаграмма обращения к SDRAM
Write Recovery Time |jWR_FIELD+1^
• 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 Control 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, которая использует базу данных конкретных типов динамической памяти со своими временными характеристиками и архитектурными особенностями. Такая база состоит из предопределенных типов, заданных в файлах каталога ..\fastchip\data\memoryregistry\*.mr, и может расширяться пользовательскими типами, заданными в каталоге ..\fastchip\data\usermemories\*.mr. Структура файла *.mr организована по иерархическому принципу:
• сначала определяется класс памяти;
• затем для SDRAM описывается структура хранения одного бита информации;
• затем описывается структура отдельной микросхемы;
О
#-- Файл DIMM168-256M.mr — описание модуля DIMM168 на 256 мегабайт #-- Первый этап — определяем вид памяти _SDRAM-NEW (
device_type = SDRAM, # тип памяти
vendor_name = «Generic» ) # производителя не уточняем
#-- Второй этап — определяем структуру хранения бита информации #-- DIMM 256 Mбайт с 64-разрядной шиной данных, виден для CSoC А? как
#-- два модуля 128 Mбайт c 32-разрядной шиной данных,
#-- выполнен на 16 микросхемах SDRAM организацией 16М8.
#-- DIMM — двухсторонний, т.е. требуется два внешних банка памяти.
#-- в FastChip задать в SDRAM Memory — 32Mx32, Number of External Banks — 2
#-- определяем структуру SDRAM на 1 бит _SDRAM-128Mbit (
inherit = _SDRAM-NEW, # определенный выше тип памяти
device_size = 16384, # объем памяти в килобитах
number_of_banks = 4 # кол-во внутренних банков внутри микросхемы
number_of_rows = 4096, # кол-во строк в микросхеме SDRAM
refresh_internal = 64.0, # временной интервал регенерации
refresh_count = 4096) # кол-во циклов регенерации
#-- Третий этап — определяем структуру микросхемы #-- в модуле DIMM используются 8-битовые SDRAM 48LC16M8
_SDRAM-16MBYTE(
inherit = _SDRAM-128Mbit, # определенная выше структура хранения бита
width_bits = 8, # разрядность 8
number_of_cols = 1024) # число столбцов в микросхеме SDRAM
#-- Четвертый этап — определяем ширину доступа _DIMM168-16M32 (
inherit = _SDRAM-16MBYTE, # определенная выше структура микросхемы
width_bits = 32, # используем 32-разрядный доступ
device_size = 65536) # объем модуля в килобайтах
#-- Пятый этап — задаем временные параметры DIMM168 _DIMM168-256-662 (
precharge = 30.0, # tRP = precharge (ns)
active_to_read_write = 30.0, # tRCD = active to read/write (ns)
write_recovery = 15.0, # tWR = write recovery (ns) for CAS=2
refresh_active = 90.0) # TRC = refresh active (ns)
#-- Шестой этап — завершение описания
#-- присвоение уникального имени для доступа к модулю из утилиты DeviceLink
DIMM168-256MBYTE ( part_name = DIMM168-256MBYTE,
inherit = «_DIMM168-16M32;_DIMM168-256-662» ) # определенные выше параметры
Листинг
е
Компоненты и технологии, № 4'2004
• затем описывается организация микросхем в модули (ширина доступа с шины данных), временные характеристики выборки;
• и, наконец, определяется наименование памяти, под которым она будет доступна в среде проектирования для конфигурации на целевой плате.
В качестве примера приведем содержимое файла описания модуля памяти Б1ММ168 на 256 Мбайт с необходимыми комментариями (см. листинг).
Созданное таким образом описание модуля памяти содержит в себе всю необходимую информацию для автоматической настройки контроллера ЗБИЛМ на конкретные параметры из таблицы 1. Такая настройка производится утилитой ОеукеЬтк, в ходе выполнения которой определяется содержимое кон-
фигурационных регистров блока М88ГО. Разработчик при этом освобожден от побитной настройки контроллера вЭИЛМ, его основной задачей является корректное определение архитектуры и временных параметров подсистемы памяти.
Практическая работа по подключению к С8оС А7 динамической памяти большого объема показала гибкость и широкие возможности системной интеграции. Внешняя подсистема памяти с использованием внутреннего арбитража является прозрачно-доступной как со стороны процессорного ядра (ЛКМ7ТБМ1) СвоС Л7, так и со стороны матрицы программируемой логики. Указанные преимущества, предоставляемые использованием технологии «реконфигурируемая система на кристалле», весьма актуальны при проектировании устройств обработки сигна-
лов, поэтому данная технология представляет интерес для разработчиков. НМ
Литература
1. Березин В., Золотухо Р. 32-разрядная реконфигурируемая система на кристалле А7 фирмы Ттесе^ // Компоненты и Технологии. 2003. № 4.
2. Алексеев С. Ю., Березин В. Б., Березин В. В. Астрономические телевизионные камеры с перестраиваемыми параметрами на основе технологии «система на кристалле» // Сборник материалов 6-ой международной конференции «Оптико-электронные приборы и устройства в системах распознавания образов, обработки изображений и символьной информации — Распознавание 2003». Курск. 2003. Часть 1.