32-разрядная реконфигурируемая система на кристалле А7
фирмы Triscend
Непрерывное усложнение методов цифровой обработки требует не только экстенсивного роста показателей элементной базы (быстродействия, количества эквивалентных вентилей), но и новых архитектурных решений системного уровня интеграции. В настоящий период времени особо остро стоит задача интеграции процессорного ядра и массива программируемой логики, что продиктовано необходимостью сочитания в реальных изделиях аппаратной и программной обработки.
В технических решениях производителей изделий класса «реконфигурируемая система на кристалле» (CSoC) в основном присутствует два подхода [1 ]:
- реализация синтезируемого (как правило, специа лизированного) процессорного ядра в виде загружаемой в FPGA структуры;
- реализация жесткого (как правило, стандартного) аппаратного процессорного ядра на одном кристалле с логической матрицей.
Первый подход к построению систем на кристалле применен компанией Xilinx (8-и 32-битные ядра PikoBlaze и MicroBlaze), компанией Altera (16/32-битное синтезируемое ядро Nios) и др. Достоинства такого подхода — возможность использования стандартных микросхем программируемой логики (ПЛИС) соответствующих производителей и возможность конфигурации архитектуры процессора под конкретную специфику задачи.Недостатков у такого подхода несколько больше:
- уменьшение ресурсов выбранной ПЛИС пропорционально размеру и разрядности синтезируемого ядра;
- синтезируемое процессорное ядро имеет аппаратную привязку к конкретному семейству ПЛИС;
- средства разработки программного обеспечения (ассемблер, компилятор С и т.д.) для нестандартного ядра, как правило, предоставляются ограниченным числом производителей;
- реализация периферийных стандартных блоков (таймеры, контроллеры DMA, контроллер прерываний, интерфейс с внешней памятью и т.д.) также производится за счет ресурсов ПЛИС;
- повышенное энергопотребление, вызванное формированием структуры процессора из стандартных ячеек, неоптимизированных по скоростным режимам работы.
Второй подход — реализация на одном кристалле аппаратного процессорного ядра совместно с программируемой логикой.Первой такой подход на практике реализовала фирма Triscend (www.triscend.com), выпустив в 1999 году 8-разрядную систему на кристалле Е5 на основе микроконтроллерного ядра «turbo » 8032. В 2001 году, также впервые в отрасли, фирма Triscend выпустила на рынок первую в мире 32-разрядную реконфигурируемую систему на кристалле A7 с ядром ARM7TDMI. В настоящее время этот подход используется также фирмами Altera — Excalibur ARM с 32-битным процессором ARM9, и Atmel — FPSLIC с 8-битным микроконтроллером AVR.
Второй подход технологически более трудоемок, так как связан с совмещением различных технологий изготовления приборов: микропроцессорной и FPGA. Недостаток такого подхода — жесткая архитектура процессора, которая ограничивает удобство его применения в специфических задачах. Достоинства такого решения являются антиподами недостатков первого и состоят в следующем:
- ресурсы программируемой логики кристалла не используются для реализации процессорного ядра;
- средства разработки программного обеспечения для стандартных процессоров предлагаются несколькими независимыми производителями.
В данной статье рассматриваются особенности архитектуры семейства реконфигурируемых систем на кристалле А7 фирмы Triscend.
Архитектура реконфигурируемой системы на кристалле Triscend A7 приведена на рис.1. Кристаллы семейства А7 содержат как традиционные для микропроцессорной технологии узлы, так и матрицу программируемой логики (Configurable System Logic,C SL), выполненной по технологии FPGA, а также средства их внутрисистемного взаимодействия. В настоящее время интеграция этих двух технологий зачастую осуществляется лишь на печатной плате, что приводит к необходимости проектирования сопряжения процессора и программируемой логики, и в конечном итоге увеличивает время проектирования, потребляемую мощность и массогабаритные показатели изделия. Ниже рассмотрим более подробно составные части системы на кристалле А7.
Центральный процессор включает в себя 32-разрядное RISC-ядро ARM7TDMI, которое имеет общее адресное пространство кода и данных объемом 4 Гбайт и 32 регистра общего назначения. Большинство команд выполняется за один такт, то есть для максимальной тактовой частоты менее чем за 20 нс. Для ускорения операции умножения используется аппаратный умножитель с поддержкой функции умножения с накоплением, актуальной для задач цифровой обработки сигналов. Кроме RISC-инструкций, в составе системы команд имеются и CISC-подобные инструкции, предназначенные для загрузки или сохранения группы регистров, трехадресные инструкции (для которых два регистра источника и регистр результата можно задавать независимо) и так далее, что нацелено на достижение наивысшей производительности. Как известно, в настоящее время процессоры с архитектурой ARM широко распространены и являются лидерами по соотношениям «производительность/потребляемая мощность » и «цена/качество », поэтому выбор ядра ARM7TDMI для построения первой в мире 32-х разрядной реконфигурируемой системы вполне оправдан.
Ядро ARM7TDMI, в зависимости от задачи, может работать в двух состояниях — ARM и THUMB. В состоянии ARM ядро исполняет 32-разрядные инструкции, выровненные по границе 4-байтного слова, и имеет самый большой набор команд. В состоянии THUMB ядро оперирует усеченным набором инструкций, при этом команды выровнены по границе полуслова. Выбор состояния производится программно и может изменяться в процессе работы пользовательского приложения, обеспечивая максимальную гибкость в применениях. В компиляторе С из состава программного пакета MULTI2000 фирмы Green Hills Software такой выбор осуществляется псевдооператорами
- #pragma ghs thumb
- #pragma ghs nothumb,
при этом компилятор переходит при трансляции конструкций языка высокого уровня на использование соответствующего набора команд, что позволяет совмещать в единой программе различные состояния ядра.На языке ассемблера такое указание производится директивами
- .thumb
- .nothumb.
Компилятор из состава пакета ARM Developer Suite (ADS) фирмы ARM имеет аналогичную возможность оперативно изменять состояние ядра процессора. Выбор состояния ядра процессора осуществляется исход из разрядности интерфейса подсистемы памяти, а также ограничений на размер кода и скорость выполнения приложения. На рис.2 приведены зависимости относительной производительности в различных состояниях ядра. Состояние THUMB во многих случаях позволяет сократить объем кода на 30 –50%, а производительность при использовании внешней 8-или 16-разрядной памяти может оказаться выше, чем в состоянии ARM за счет меньшего количества обращений к памяти [2 ].
Ядро ARM7TDMI имеет семь режимов работы, названия и назначение которых приведены в таблице 1. Режим работы может быть изменен программно или автоматически при возникновении внешнего прерывания или исключения, например выборки из памяти несуществующей инструкции. В зависимости от режима работы и состояния ядра изменяется видимость и набор доступных регистров, допустимость выполнения некоторых инструкций. Так, при настройке механизма кэширования и защиты памяти, реализованного в системе на кристалле Triscend A7, выполняются команды сопроцессора, что предполагает нахождение ядра в режиме Supervisor. Программная поддержка такой работы заключается прежде всего в распределении памяти, задании отдельных областей стека и точек входа исключительных ситуаций для различных режимов. Обычно это производится в С-startup коде, который выполняется непосредственно после сброса процессора.
Таблица 1. Режимы работы ядра ARM7TDMI
Режим |
Назначение |
User |
Нормальное состояние выполнения программ |
FIQ |
Поддержка скоростных процессов |
IRQ |
Поддержка прерываний обычного приоритета |
Supervisor |
Защищенный режим |
Abort |
Возникновение аномальной ситуации при выборке команды или данных |
System |
Привилегированный режим |
Undefined |
Выполнение неопределенной инструкции |
Система прерываний реализует семь различных видов прерываний (табл.2), часть из них характеризует исключительные ситуации, связанные с выполнением программы, часть — запросы от внешнего аппаратного окружения. Выполнение кода исключительной ситуации начинается с фиксированных предопределенных адресов в начальной области памяти. При помощи встроенного контроллера прерываний (за счет управления приоритетами и мультиплексирования)все многообразие внешних запросов прерываний сводится к двум точкам входа:
- быстрое прерывание FIQ со временем реакции в наихудшем случае 28 циклов процессора (420 нс при тактовой частоте 60 МГц), для обработки критичных ко времени процессов;
- обычное прерывание IRQ для стандартной реакции на внешнее воздействие.
Таблица 2. Типы векторов прерываний ядра ARM7TDMI
Тип исключения |
Приоритет |
Причина или источник |
Состояние ядра |
Адрес вектора |
Быстрое прерывание |
3 |
Запрос от контроллера на быстрое прерывание |
FIQ |
0*1C |
Обычное прерывание |
4 |
Запрос от контроллера на обычное прерывание |
IRQ |
0*18 |
Резерв |
|
|
|
0*14 |
Ошибка данных |
2 |
Ошибка памяти от устройства защиты |
Abort |
0*10 |
Ошибка выборки |
5 |
Выполнение ядром несуществующей инструкции |
Abort |
0*0C |
Программное прерывание |
6 |
Выполнение ядром инструкции SWI |
Supervisor |
0*08 |
Неопределенная инструкция |
6 |
Выполнение ядром внешней инструкции без реакции сопроцессора |
Undefined |
0*04 |
Сброс |
1 |
Любой источник системного сброса |
Supervisor |
0*00 |
Запросы на прерывание фиксируются в программно доступном регистре, что позволяет совмещать режим исключений с режимом опроса источников прерываний. При помощи встроенной программируемой логики количество внешних источников прерывания может быть значительно расширено, причем полярность срабатывания (фронт, спад, уровень) гибко задается соответствующей конфигурацией.
Системы на кристалле А7 содержат встроенную систему тактирования. Программно или при первоначальной конфигурации можно выбрать следующие источники для цепей тактирования процессора и массива программируемой логики:
- внутренний RC-генератор с низкой стабильностью и диапазоном частот 15 –30 МГц;
- вход внешней синхронизации;
- внутренний синтезатор частоты (Clock Synthesizer), работающий от внешнего часового кварцевого резонатора 32768 кГц, со стабильной выходной частотой в пределах 1 –60 МГц.
Во время работы возможна смена источников тактирования, изменение частоты синтезатора и прекращение генерации для уменьшения энергопотребления устройства.
Подсистема памяти в составе Triscend A7 является важной составляющей кристалла, она оптимизирована на достижение максимальной производительности,простоты подключения различных типов запоминающих устройств и состоит из следующих блоков:
- внутреннее быстрое ОЗУ объемом 16 кбайт (StratchPad SRAM);
- внутренняя кэш-память команд и данных объемом 8 кбайт (Cache);
- контроллер интерфейса с внешней системой памяти различных типов с суммарным объемом до 4 Гбайт (Memory Interface Unit).
Кроме этого, к подсистеме памяти можно отнести встроенные буферы ускорения обмена с внешней динамической и статической памятью, аппарат переназначения адресов, защиты и приоритетов областей памяти («ремапирование»), механизм конвейерной предвыборки команд и данных (рекомендуемый при частоте работы более 40 МГц). Кратко рассмотрим составляющие подсистемы памяти.
Операции записи-чтения во внутренне ОЗУ осуществляются за один такт, причем возможно одновременно проводить операции со старшими и младшими 8 кбайт, например, ядро по локальной шине записывает в младшую половину ОЗУ, а в это же время по каналу DMA производится чтение ячейки из старшей половины. Это делает внутреннее ОЗУ удобным для использования в качестве «моста » между ядром ARM7TDMI и массивом программируемой логики. Внутренняя память является наиболее быстрой, поэтому в нее целесообразно при распределении адресного пространства помещать наиболее чувствительный ко времени исполнения код, например обработчики прерывания. Компиляторы языка С пакетов MULTI2000 и ADS обладают возможностью гибко настраивать карту памяти.
Внутренняя кэш-память «прозрачна » для выполняемой программы, считываемые данные и инструкции могут сохраняться в ней, и для их использования в дальнейшем не потребуется длинный цикл обращения к внешней шине, все транзакции будут выполняться с локальной шиной, что приводит к значительному увеличению производительности. Так, при макетировании программного цикла ввода потока видеоданных, при включении механизма кэш-памяти осциллографические наблюдения процессов на шине показали, что выборка команд из внешней динамической памяти возникает только до момента первого прохождения тела цикла, в дальнейшем остаются только импульсы чтения данных. Имеется механизм назначения областей памяти, для которой включен аппарат кэширования. Естественно, назначать кэширование целесообразно для относительно медленных устройств памяти, например Flash или SDRAM, кэширование области внутреннего ОЗУ не является актуальным.
Контроллер интерфейса с внешней системой памяти ориентирован на поддержку статической и динамической памяти различной разрядности и информационной емкости с регулировкой временных параметров выборки, параметров регенерации, режимов энергопотребления и т.д. Возможно подключение стандартных модулей DIMM объемом до 256 Мбайт, а при организации страничной адресации возможен и больший объем внешнего динамического ОЗУ. Важной особенностью контроллера является автоматическое проведение нескольких транзакций записи-чтения в зависимости от разрядности интерфейса внешнего ЗУ. Так, операция записи 4-байтного числа во внешнюю SDRAM с шириной данных шины один байт приведет к «прозрачному » для разработчика выполнению четырех байтовых циклов записи. Наличие встроенного программируемого контроллера позволяет упростить подключение разнообразных видов памяти и отказаться от организации поддержки динамического ОЗУ на программируемой логике.
Массив конфигурируемой логики (Configurable System Logic, CSL — для разработчиков более привычен термин FPGA)предназначен для создания пользовательской периферии на одном кристалле с процессором и содержит, в зависимости от типа микросхемы, до 3200 логических ячеек.Каждая логическая ячейка (рис.3)содержит четырехвходовую таблицу перекодировки, схему расширителя ускоренного переноса, триггер с входами тактирования разрешения и сброса и подобна логической ячейке, применяемой в ПЛИС семейства XC4000 фирмы Xilinx. Ячейки конфигурируются при включении питания из внешней Flash-памяти или через JTAG-интерфейс от персонального компьютера в режиме отладки. Ячейки могут реализовывать комбинационную или последовательностную логику, могут быть сконфигурированы в качестве модулей памяти, в том числе и двухпортовой. В матрице конфигурируемой логики предусмотрены 6 глобальных сигналов с повышенной нагрузочной способностью, длинные и короткие связи для облегчения внутрикристальной разводки. Процесс проектирования аппаратной части устройства на встроенной матрице конфигурируемой логики имеет много общего с проектированием устройств на основе классических FPGA, особенностью является описание и моделирование взаимодействия аппаратной и программной части через механизм адресных селекторов и системную шину.
Непосредственно к массиву программируемой логики подключаются порты ввода-вывода (PIO), каждый из которых имеет в своем составе четыре триггера для синхронизации ввода-вывода, а также содержит дополнительные узлы, которые обеспечивают:
- управление временем нарастания выходного сигнала;
- управление выходным током вывода;
- поддержку выходных уровней для внешнего окружения с питанием 2,5 или 3,3 B;
- совместимость с шиной PCI 3,3 B;
- управление входным гистерезисом.
Порт ввода-вывода кроме традиционной фиксации входа подтягивающим резистором к потенциалу земли или питания может обеспечить интересный режим Bus Follower — отслеживания и запоминания последнего активного состояния вывода, что может быть использовано, в частности, для снижения динамического энергопотребления. Максимальное количество доступных линий вводавывода зависит от типа кристалла и выбранного варианта интерфейса с внешней памятью и достигает 252.
Стандартные периферийные устройства включают в себя:
- два 16-битных таймера, работающих в режиме счета тактовых импульсов;
- два последовательных интерфейса UART, совместимых с 16C450,с поддержкой сигналов квитирования и встроенной памятью FIFO объемом 16 байт;
- 16-входовой контроллер прерываний (описан выше);
- сторожевой таймер (32-bit Watchdog Timer) с возможностью формирования импульса сброса;
- схему сброса (Power-On Reset)с возможностью раздельного сброса только процессорного ядра, только массива конфигурируемой логики или кристалла в целом;
- схему управления энергопотреблением (Power Control).
Использование стандартных периферийных устройств кристалла Triscend A7 значительно облегчает процесс проектирования и высвобождает ресурсы матрицы программируемой логики для реализации только «нетиповых» функций.
Как известно, механическое объединение разнородных структур без средств их взаимодействия не образует системы. В качестве такого объединяющего звена служит высокопроизводительная конфигурируемая системная шина (CSI Bus) и механизм адресных селекторов. Системная шина (рис.4) имеет разрядность 128 бит, является строго синхронной (все процессы фиксируются по переднему фронту тактовой частоты ядра процессора) и на ней представлены текущие адрес, данные и управляющие сигналы взаимодействия процессора, контроллеров DMA, конфигурируемой логики и арбитра шины. Шина поддерживает 8-, 16-, и 32-битные транзакции с минимальной длительностью в один такт процессора. Арбитр шины разделяет запросы на использование шины от ядра процессора, четырех контроллеров DMA и блока JTAG-отладки реального времени. Максимальная пропускная способность конфигурируемой шины достигает 240 Мбайт/с. Важным для разработчиков моментом является возможность компьютерного моделирования процессов взаимодействия аппаратного и программного обеспечения при обмене по системной шине, при этом существующая VHDL-или Verilog-модель шины позволяет ускорить совместную отладку аппаратной и программной частей проекта.
Механизм адресных селекторов предназначен для обеспечения доступа к массиву программируемой логики со стороны процессора или контроллера DMA без использования ресурсов собственно встроенной матрицы программируемой логики. Селектор (рис.5) представляет собой гибкую аппаратную схему сравнения адреса в диапазоне 4 Гбайт с числом, характеризующим этом ресурс (Match Value), с учетом выравнивания (Byte Enable [3:0 ])и направления доступа (чтение или запись). В результате настройки определяется его адрес, который характеризует программно-доступный ресурс и будет использоваться при разработке математического обеспечения разрабатываемого приложения. Выходными сигналами селектора являются сигнал разрешения установки данных на шину со стороны массива программируемой логики (сигнал чтения) и сигнал стробирования для ввода данных с шины в массив программируемой логики (сигнал записи). Обычно такая транзакция проходит за один период тактовой частоты, но если устройство работает асинхронно, то имеется механизм ожидания готовности устройства, что весьма удобно для подключения приборов, не имеющих высокого быстродействия. Кроме того, селекторы имеют специальный режим поддержки DMA.
Селектор DMA,предназначенный для переноса данных из (или в) массива конфигурируемой логики, дополнительно имеет вход запроса цикла передачи по каналу DMA и выход предоставления такого цикла. Количество селекторов определяется типом кристалла и позволяет создавать в системе на кристалле большое количество программно доступных для чтения и записи 32-битных регистров, не используя при этом аппаратных ресурсов матрицы логики «вхолостую » на построение дешифраторов. Таким образом, встроенные механизмы межблочного взаимодействия действительно интегрируют ресурсы и превращают разрозненные элементы в целостную систему.
Еще одним общесистемным узлом является четырехканальный контроллер прямого доступа в память (DMA). Каждый канал контроллера является самостоятельным активным устройством на шине и выполняет блочную передачу информации без участия процессора в режимах «память — память», «память — массив программируемой логики », «массив программируемой логики — память ». Если достаточно тривиальный механизм пересылок «память — память » значительно увеличивает системное быстродействие, инициируется ядром микроконтроллера и похож на подобные механизмы в других процессорах,то другие два режима являются более интересными и новыми. На рис.6 приведена схема взаимодействия устройства, реализованного в матрице программируемой логики с селектором DMA и системной шиной при выполнении передачи «массив программируемой логики — память » и соответствующая временная диаграмма работы. Устройство в соответствии со своим алгоритмом функционирования в произвольный момент (1) формирует сигнал REQSEL, который информирует выбранный канал DMA о готовности данных для передачи в память по текущему для выбранного канала адресу записи. Спустя некоторый промежуток времени (минимум 4 периода тактовой частоты) арбитр шины предоставляет временной интервал контроллеру DMA для чтения данных (2), при этом вырабатывается сигнал ACKSEL, который разрешает устройству выставить данные на системную шину. Эти данные фиксируются контроллером DMA и далее в момент времени (3) передаются, например, в контроллер внешней памяти для записи в динамическое ОЗУ (при различной разрядности шины данных и внешней SDRAM соответствующие дополнительные транзакции добавляются контроллером внешней памяти автоматически). Контроллер DMA позволяет накапливать последовательные запросы REQSEL от устройств, реализованных в матрице программируемой логики (как показано на рис.7), и в дальнейшем также последовательно переносить данные в память. Количество запросов, полученных контроллером DMA, но реально не переданных, содержится в 10-разрядном регистре и программно доступно для анализа.
В режиме DMA-пересылки «память — массив программируемой логики » (рис.8) инициатором обмена опять является размещенное в матрице программируемой логики устройство, которое в момент времени (1) формирует сигнал REQSEL, поступающий в соответствующий канал контроллера DMA. В момент времени (2) производится считывание информации из внешней памяти,а в момент времени (3) производится запись считанных данных в указанный регистр устройства. Необходимо отметить, что диаграммы на рис.3 и рис.4 идеализированные. В зависимости от загрузки шины задержки могут быть больше, но в целом за счет высокой тактовой частоты и механизмов буферизации потери производительности не происходит.
Для повышения достоверности передачи существует аппаратный узел подсчета циклической избыточной контрольной суммы и механизм обнаружения и генерации повторных запросов. За одну пересылку контроллер DMA позволяет передать от источника к приемнику до 64 Кбайт. Наиболее простой режим работы контроллера DMA заключается в периодической инициализации процессором механизма DMA — так называемый direct mode. При больших объемах пересылаемой информации, например при вводе видеоданных, такой постоянный контроль над пересылками может быть затруднительным. В этом случае разработчику предоставляется еще один режим работы DMA-контроллера — descriptor mode, при котором в любой доступной памяти создается последовательность команд инициализации DMA-посылок, фактически вторая (третья, пятая …) параллельно выполняющаяся программа. Контроллер самостоятельно, без участия ядра процессора, по завершении текущей DMA-пересылки выбирает из памяти следующее двойное слово, определяющее новые параметры инициализации DMA и вновь начинает передачу массива данных. Такое решение позволяет значительно разгрузить процессор от рутинной работы по пересылке информации, сведя ее к периодическому мониторингу.
Таким образом, в системах на кристалле семейства А7 фирмы Triscend обеспечивается гибкая интеграция микроконтроллерного ядра и разнообразных «жестких » встроенных периферийных устройств через конфигурируемую системную шину с массивом программируемой логики. Для разработчика это означает возможность реализации различных аппаратно-программных проектов в едином окружении, а при смене структуры аппаратной обработки новая реализация помещается в тот же кристалл без изменения печатной платы.
Вниманию читателей предлагается одноплатная реализация расширяемой 32-разрядной платформы (рис.9), содержащая реконфигурируемую систему на кристалле TA7S20, блок внешней памяти в составе 16-разрядной Flash-памяти и стандартного DIMM-модуля SDRAM, узла аппаратного интерфейса Ethernet 10/100 Mb с поддержкой стека протоколов TCP/IP.
Литература
- Кривченко И. Системы на кристалле: общее представление и тенденции развития // Компоненты и технологии. 2001.№ 6.
- Емелин А., Шагурин И.
RISC-микроконтроллеры с процессорным ядром ARM. Часть 1 // Chip News.Инженерная микроэлектроника. 2002.№ 6
RISC-микроконтроллеры с процессорным ядром ARM. Часть 1 // Chip News.Инженерная микроэлектроника. 2002.№ 7
- Грушвицкий Р.И., Мурсаев А.Х., Угрюмов Е.П. Проектирование систем на микросхемах программируемой логики.СПб: БХВ-Петербург.2002.
Виктор Березин, Роман Золотухо
|