Преимущества систем на кристалле (СнК) сегодня хорошо известны. Они позволяют уменьшить размеры и энергопотребление электронных приборов и существенно расширяют их функциональность. Однако чтобы в полной мере реализовать преимущества СнК, необходимо учитывать особенности их архитектуры. В данной статье рассматриваются некоторые аспекты построения СнК на ПЛИС, а также варианты их реализации с использованием ПЛИС Actel.
Сегодня аббревиатура СнК (или SoC – System on Chip) достаточно прочно вошла в лексикон многих инженеров. Использование микросхем программируемой логики для построения подобных систем имеет ряд преимуществ, которые, однако, не всегда задействуются в полной мере. Нередко при создании СнК разработчики применяют ту же архитектуру и те же принципы, что и при разработке системы на аппаратных (реализованных на отдельных микросхемах) процессоре и контроллерах.
Для примера рассмотрим небольшую микропроцессорную систему. В ее задачи входят оцифровка входного аналогового сигнала, его обработка, например, с использованием быстрого преобразования Фурье (БПФ), передача по нескольким коммутируемым каналам, а также прием управляющей информации по дополнительному последовательному каналу (рис.1).

Рис.1. Пример структуры системы сбора информации на базе аппаратного процессора
При реализации этой архитектуры полностью на аппаратной платформе в функции процессора входят инициализация контроллеров, сбор и обработка данных с АЦП, прием и обработка управляющей информации по дополнительному каналу и передача обработанной информации по одному или нескольким основным каналам передачи данных. Для этого нередко требуется достаточно мощный и быстродействующий процессор.
При реализации схемы на микросхемах программируемой логики они нередко используются лишь как интегратор процессора и контроллеров с добавлением небольшой функциональности. Например, в них может быть реализован простой контроллер управления АЦП, который автоматически считывает данные и помещает их в память FIFO, или ряд других небольших контроллеров (рис.2). При таком подходе нагрузка на процессор практически не уменьшается, и для реализации системы необходима быстродействующая ПЛИС большого объема.

Рис.2. Реализация структуры на ПЛИС, аналогичной аппаратной
Построение СнК на ПЛИС требует зачастую иного подхода, нежели построение систем на базе аппаратных процессоров и контроллеров. Ведь ПЛИС – это не просто микросхема, позволяющая создать микроконтроллер c нужным набором интегрированных периферийных контроллеров и уменьшить габариты и потребление системы в целом. Программируемая логика позволяет реализовывать структуры, которые на аппаратной платформе реализовать невозможно.
Преобразуем структуру, выделив БПФ и коммутацию каналов в отдельные блоки (рис.3). В функции процессора теперь входят только инициализация контроллеров, прием и обработка управляющей информации, задание параметров для блока БПФ и управление коммутацией каналов. Задачи, выполняемые процессором, существенно упростились, и для их решения можно использовать значительно менее мощный процессор. Следовательно, снижаются требования к быстродействию и нередко – к объему используемой ПЛИС.

Рис.3. Структура системы с выделенными контроллерами приема, обработки и передачи данных
Тем не менее, желательно, чтобы блок БПФ работал на достаточно высокой частоте. Тактовая частота, на которой должны работать периферийные контролеры, обычно определяется внешними устройствами, для работы с которыми они разрабатывались. Так, контроллер жесткого диска, разработанный в соответствии со спецификацией АТА-5, должен работать на частоте более 120 МГц. Для остальной части схемы, включая процессор, столь высокое быстродействие нужно не всегда. Отметим, что с увеличением тактовой частоты усложняется трассировка, увеличивается потребляемая мощность, а следовательно, и нагрев микросхемы. Сегодня создание проекта, в котором блоки внутри ПЛИС работают на разных тактовых частотах, не является проблемой, поскольку ПЛИС большой степени интеграции, как правило, имеют встроенные умножители частоты и архитектуру, позволяющую организовать так называемые тактовые домены (рис.4). В пределах тактовых доменов все элементы работают на своей частоте. Однако для правильной работы всей системы необходимо согласовывать переходы с одного тактового домена на другой.

Рис.4. Использование тактовых доменов
Мы привели весьма общий пример, но он наглядно показывает различие в подходах. При разработке данной архитектуры был использован важный принцип – распараллеливание выполняемых задач с разделением системы на функциональные блоки. На аппаратной платформе его зачастую невозможно реализовать, поскольку и процессор, и контроллеры имеют ограниченный фиксированный набор интерфейсов. Как правило, все периферийные контроллеры подключаются на одну и ту же шину процессора, и, соответственно, обращаться к ним процессор может только последовательно. Но главное – большинство контроллеров требуют внешнего управления и не могут самостоятельно обмениваться данными или выполнять какие-либо совместные действия.
Применение ПЛИС при построении СнК позволяет разработчикам создавать системы с требуемым набором периферийных контроллеров. В случае аппаратных микроконтроллеров этот набор фиксирован и не всегда оптимален. Поэтому приходится ставить на плату дополнительные микросхемы контроллеров, что увеличивает габариты и энергопотребление системы.
С увеличением функциональности и усложнением алгоритмов работы аппаратные периферийные контроллеры усложняются и требуют больше процессорного времени для их инициализации и обслуживания. Поэтому все чаще встречаются аппаратные контроллеры со встроенными простыми процессорами, такими как 8051, а также системы, в которых наряду с мощным главным процессором, выполняющим основные вычислительные и управляющие действия, имеются один или несколько менее мощных процессоров. Они производят управление периферийными контроллерами и предварительную обработку передаваемых и принимаемых от основного процессора данных. Построение многопроцессорных систем на аппаратных микропроцессорах и микроконтроллерах сопряжено с рядом трудностей, а также приводит к увеличению габаритов и энергопотребления системы в целом. Кроме того, нужно написать несколько программ под различные процессорные архитектуры.
Однако для работы с периферийными контроллерами часто не нужен полноценный дополнительный микропроцессор – достаточно не очень сложного программного автомата, выполняющего небольшой набор функций по обслуживанию этих контроллеров. Для построения подобной распределенной системы также применима ПЛИС, в которой наряду с процессором и контроллерами можно либо реализовать собственный, либо использовать готовый автомат для интеллектуального управления периферией, например процессор АВС фирмы Actel (рис.5).

Рис.5. Использование процессора ABC в качестве вспомогательного контроллера
Компания Actel предлагает целый ряд других решений для построения СнК на базе ПЛИС. Рассмотрим их и начнем с IP-ядер процессоров.
Actel предлагает ряд условно бесплатных IP-ядер процессоров и контроллеров, адаптированных для использования в ПЛИС Actel семейств ProASIC3, IGLOO и Fusion. Они поставляются в постсинтезированном виде и могут бесплатно использоваться для разработки проектов на базе ПЛИС Actel. Сегодня Actel предоставляет четыре процессорных IP-ядра – CoreMP7 (ARM7), Cortex-M1, 8051 и ABC. Ядра ARM-процессоров применяются только со специализированными версиями ПЛИС Actel, имеющими соответствующий префикс в названии – М7 или М1. В этих ПЛИС создана отдельная область, в которую прошивается процессорное ядро. Она не входит в общий объем матрицы, разработчик не сможет применить ее для собственных нужд. Имеется также ряд процессорных ядер фирм-партнеров, но они в большинстве своем платные. Один из таких процессоров – LEON3 фирмы Gaisler, адаптированный для радиационно стойких ПЛИС Actel семейства RTAX.
Рассматривая аппаратную платформу, особое внимание хотелось бы уделить цифроаналоговому семейству ПЛИС Fusion. К сожалению, большинство публикаций посвящено аналоговой части этого семейства. Однако системный чип Fusion, как его позиционирует Actel, может стать идеальной основой для того, чтобы практически полностью построить СнК в одной микросхеме (рис.6). Помимо логической матрицы, он содержит интегрированные флеш-ПЗУ объемом до 8 Мбит, ОЗУ, часы реального времени, два генератора тактовой частоты (RC и кварцевый) и интегрированный регулятор напряжения 1,5 В. Таким образом, ПЛИС Fusion имеют весь минимальный набор для построения процессорной системы на одном кристалле. В логической матрице можно разместить не только периферийные контроллеры, но и дополнительные небольшие процессорные системы. Аналоговая часть включает в себя АЦП и блоки с входными аналоговыми усилителями. На входы микросхемы можно подавать аналоговый сигнал с амплитудой до 15 В. Это позволяет минимизировать аналоговую часть схемы в различных системах контроля и управления. Кроме того, аналоговая часть применима для контроля уровней питающего напряжения и тока потребления системы, а также температуры самой ПЛИС и других блоков и микросхем. В результате можно вовремя определить наличие неисправности, перегрева или критического снижения питающего напряжения и предотвратить потерю данных или выход из строя элементов и узлов. Это особенно важно для критических систем, в том числе работающих в замкнутом пространстве. Таким образом, ПЛИС Fusion позволяет упростить разработку не только цифровой, но и аналоговой части схемы смешанной (цифроаналоговой) микропроцессорной системы.

Рис.6. Внутренняя архитектура ПЛИС Fusion
Как мы уже отмечали, сегодня все чаще применяют распределенную архитектуру, в которой наряду с основным мощным процессором параллельно работают более простые микроконтроллеры и автоматы управления периферийными устройствами и контроллерами. Подобные архитектуры работают как в промышленных контроллерах, позволяя разгрузить основной процессор, так и в различных портативных системах и системах, критичных к энергопотреблению, позволяя перевести отдельные блоки в режим пониженного потребления энергии. В двух последних типах систем перспективно применение ПЛИС IGLOO и ProASIC3L, имеющих режим сверхмалого потребления Flash*Freeze (рис.7).

Рис.7. Пример использования режима Flash*Freeze
В рамках данной статьи мы не будем подробно рассматривать указанный режим, а лишь отметим, что в нем при потреблении ниже нескольких микроватт полностью сохраняется как состояние внутренних ОЗУ и регистров, так и состояние логической матрицы. Микросхема как бы останавливается (замораживается) и после выхода из режима пониженного энергопотребления продолжает свою работу. Время перехода в режим Flash*Freeze и выхода из него составляет менее 1 мкс. Реализация подобной схемы чисто аппаратными средствами требует дополнительных схем, позволяющих отключать генератор тактовой частоты или снимать питающее напряжение. Это усложняет схему, снижает надежность ее работы и повышает вероятность потери или искажения данных. Необходимы также специальные меры для корректного завершения работы процессорных систем. При отключении питания подсистема полностью теряет не только состояние, но и все данные. Поэтому нередко приходится заново ее инициализировать, и, в результате, увеличиваются время старта и расход энергии.
Наличие режима Flash*Freeze особенно актуально для портативных систем, когда в целях экономии заряда батарей нужно отключать либо всю систему, либо блоки, которые большую часть времени находятся в состоянии холостого хода. При этом желательно минимизировать время старта при выходе из отключенного режима и обеспечить запуск системы не с нуля, а с некоторого рабочего состояния.
Модули на основе ПЛИС с Flash*Freeze могут применяться в переносном медицинском или контрольно-измерительном оборудовании. В качестве примера можно привести автономную систему жизнеобеспечения, которая должна работать непрерывно длительное время. Для этой системы не требуется, чтобы дисплей и клавиатура также работали непрерывно – они нужны только на время, когда нужно проверить параметры или задать новые. В целях экономии батарейного питания желательно отключать не только устройства отображения и ввода, но и их контроллеры управления, а также различные вспомогательные системы, требующиеся периодически. При этом необходимо, чтобы блоки и модули переходили в рабочее состояние как можно быстрее. При использовании ПЛИС Actel IGLOO и ProASIC3L для перехода в режим сверхмалого потребления и выхода из него не нужно отключать питание или выключать тактовый генератор, а также сохранять в ПЗУ и загружать обратно в систему параметры и настройки. Это повышает быстродействие и надежность системы и снижает ее габариты и энергопотребление.
Сейчас микропроцессорные системы на кристалле все шире применяются и в авиационно-космической технике. Среди радиационно стойких ПЛИС, выполненных по технологии Antifuse, с точки зрения разработки СнК могут быть интересны два семейства – RTAX-S и RTAX-DSP. Особое внимание стоить обратить на второе семейство, которое содержит интегрированные математические блоки. Они позволяют реализовывать аппаратно различные кодеки, фильтры и другие математические функции, тем самым увеличивая быстродействие системы и снижая нагрузку на процессор. Использование аппаратных троированных триггеров, а также IP-модулей для контроля и коррекции данных при записи и считывании значительно повышает надежность процессорных систем на базе радиационно стойких ПЛИС Actel, а применение математических блоков позволяет шире применять их в бортовых вычислительных комплексах.
В заключение можно сказать, что ПЛИС – это своего рода чистый лист, на котором разработчик может нарисовать требуемую структуру, и который предоставляет значительно больше возможностей по сравнению с чисто аппаратной платформой. Используя программируемую логику, можно значительно снизить требования к быстродействию и вычислительной мощности процессора, а также энергопотребление и габариты системы. За счет собственных наработок и готовых модулей можно существенно уменьшить стоимость системы и время на ее разработку. Кроме этого, компания Actel в качестве поддержки разработчиков предлагает как одно-, так и многопроцессорные готовые решения на одной или нескольких ПЛИС для решения различных задач.
Разработка систем на кристалле на базе ПЛИС Actel