Многопроцессорные системы на базе ПЛИС Actel

ПЛИС ActelМикропроцессоры и микроконтроллеры широко используются во встраиваемых приложениях. Это позволяет создавать универсальные системы и упрощает процесс их настройки. Применение ПЛИС делает этот процесс еще более гибким, поскольку дает возможность создавать микроконтроллеры с требуемым набором периферийных контроллеров. Сегодня все больший интерес вызывают многопроцессорные системы на основе ПЛИС. Вместо одного высокопроизводительного процессора в них используется распределенная архитектура из нескольких более простых и менее мощных процессоров, каждый из которых выполняет только определенную часть общей задачи. В результате повышается производительность, надежность и безопасность системы. Эффективные многопроцессорные системы можно создавать на базе ПЛИС компании Actel.

Компания Actel предлагает четыре бесплатных процессорных IP-ядра для использования в ПЛИС Actel :

  • CoreMP7 – АРМ7-процессор;
  • Cortex-M1 – АРМ6-процессор, специально разработанный для использования в ПЛИС;
  • Core8051s – процессорное ядро микроконтроллера 8051;
  • CoreABC – процессорное ядро малого объема, обладающее гибкой архитектурой и большими возможностями настройки.

Рассмотрим особенности построения многопроцессорных систем с использованием IP-ядер компании Actel.

Cortex-M1

При построении процессорной системы на базе процессора Cortex-M1 используется упрощенная версия системной шины AMBA AHB – АНВ Lite, которая поддерживает работу только с одним мастером на шине и не поддерживает пакетный режим транзакций на шине AHB (AHB Burst). Поэтому второй процессор можно подключить непосредственно к шине AHBLite только как ведомый (slave). Он сможет производить обмен данными по шине AHB Lite только при обращении основного процессора, то есть полноценно функционировать не будет.

Необходимо отметить, что IP-процессор Cortex-M1 используется со специализированной ПЛИС, в которой выделена отдельная область под ядро процессора. Это делает невозможным построение любых многопроцессорных систем на базе нескольких Cortex-M1 в одной микросхеме. Два процессора Cortex-M1 можно объединить в одну систему, разместив их в разных микросхемах. При этом обмен данными между ними может производиться, например, через общую память (SRAM Buffer), находящуюся в одной из микросхем.

В одной микросхеме можно построить только "несимметричную" многопроцессорную схему, в которой вместе с процессором Cortex-M1 могут использоваться IP-процессоры 8051 или ABC. Ядра процессоров 8051 и АВС не требуют специализированных микросхем и могут использоваться с любой ПЛИС Flash-семейства. Их число ограничивает лишь объем ПЛИС.

Рассмотрим построение системы с процессорами Cortex-M1 и ABC в ПЛИС Fusion (рис.1). Процессор ABC служит здесь для инициализации и управления работой аналогового блока Fusion. Процессор Cortex-M1 выполняет функции обработки данных и коммуникации. Связь между двумя процессорами обеспечивает специализированный модуль CoreMBX (Core Mailbox). С одной стороны модуль подключается к шине AMBA AHB (Порт А), на которую подключен первый процессор (Cortex-M1 или ARM7), а с другой – к шине AMBA APB (Порт Б), к которой подключен второй процессор (8051s или ABC) (рис.2). Модуль может быть реализован либо на основе FIFO, либо с использованием двухпортового ОЗУ. IP-модуль CoreMBX обеспечивает также формирование сигналов прерываний и сигналов инициализации для второго процессора. Модуль может дополнительно содержать ПЗУ, которое реализуется непосредственно в логической матрице и содержит до сорока 16-разрядных слов. Модуль обеспечивает асинхронный интерфейс между шинами AHB и APB, что позволяет процессорам в системе работать на разных тактовых частотах.

Схема двухпроцессорной системы на базе процессоров Cortex-M1 и ABC.

Рис.1. Схема двухпроцессорной системы на базе процессоров Cortex-M1 и ABC.
CLK_ABC и CLK_CM1 –последовательности тактовых импульсов с частотами 40 и 30 МГц соответственно

Структура IP-модуля CoreMBX

Рис.2. Структура IP-модуля CoreMBX

 

CoreMP7

С IP-ядром процессора CoreMP7 используется шина AMBA AHB с поддержкой нескольких мастеров на шине, что дает возможность подключать к ней несколько процессоров. Шина AHB обеспечивает пакетный режим обмена.

Так же, как и в случае с Cortex-M1, CoreMP7 может применяться только со специализированными микросхемами с выделенной областью под ядро ARM7, поэтому построение многопроцессорных систем с несколькими CoreMP7 на одном кристалле невозможно.

Core8051

IP-ядро Core8051 процессора имеет интерфейс для подключения к шине AMBA APB. Эта периферийная шина поддерживает только одного мастера на шине. Поэтому построение многопроцессорных систем на шине АРВ невозможно. Шина AHB поддерживает несколько мастеров в системе, но ядро Core8051s не имеет интерфейса к этой шине. Чтобы решить проблему соединения нескольких процессоров 8051s, компания Actel разработала IP-модуль моста для подключения процессора 8051s к шине AHB – Fcore8051s_AHB_Cache. Этот мост обеспечивает процессорам, подключенным к шине AHB, возможность обмена данными друг с другом, а также с общей памятью – через контроллер памяти, подключенный к этой же шине. Модуль Fcore8051s_AHB_Cache реализован на базе двухпортового ОЗУ.

Рассмотрим пример многопроцессорной системы на базе процессоров 8051s с общей памятью программ и дан-ных (рис.3). В подобной системе процессоры являются равнозначными. Процессоры работают асинхронно, но в каждый момент времени доступ на шину АНВ имеет только один процессор. У каждого процессора есть своя периферийная шина АРВ и набор контроллеров, а память программ и данных у процессоров общая.

Пример архитектуры многопроцессорной схемы на базе процессоров 8051

Рис.3. Пример архитектуры многопроцессорной схемы на базе процессоров 8051

 

IP-ядро процессора 8051 не требует специализированной ПЛИС, поэтому количество процессоров и, соответственно, общая производительность системы, ограничивается только объемом выбранной микросхемы. Для определения максимально возможного числа процессоров в ПЛИС семейства ProASIC3 можно использовать следующую формулу: 4,5 тысячи ЛЯ (базовая конфигурация) + 3,5 тысячи ЛЯ (для каждой последующей процессорной подсистемы, включающей процессор и периферийные контроллеры), где ЛЯ – логическая ячейка. Базовая конфигурация (см. рис.3) включает в себя: контроллер внешней памяти (ПЗУ и СОЗУ), шину АНВ, процессор 8051, мост АНВ-АРВ, контроллер порта ввода/вывода GPIO, контроллер UART.

Исходя из приведенной формулы в ПЛИС A3P400, имеющей 9 216 логических ячеек, можно разместить два процессорных ядра Core8051s, в А3Р1000 (24 576 ЛЯ) – шесть, а в А3Р3000Е (75 264 ЛЯ) – 21 процессорное ядро. Общая производительность системы складывается из про-изводительностей отдельных процессоров 8051s. Производительность одного процессора 8051 составляет около 10 MIPS (Million Instructions Per Second – миллионов инструкций в секунду). Соответственно, при использовании ПЛИС А3Р400 с двумя процессорами производительность системы составит порядка 20 MIPS, а при использовании А3Р3000Е (21 процессор) – 210 MIPS.

Core8051 и CoreABC

При разработке двухпроцессорной системы с процессорами 8051 и ABC возникает следующая проблема. Оба процессора имеют интерфейс только с шиной AMBA APB. Но эта шина поддерживает только одного мастера. Использовать модуль CoreMBX для интерфейса между шинами APB нельзя, так каку него есть только один интерфейс с APB. Поэтому требуется дополнительный "мост" "АРВ–АРВ" для связи двух процессоров (рис.4). Для этих целей лучше всего использовать двухпортовое СОЗУ. При этом код системы получается достаточно простым, а объем модуля – минимальным.

Структура системы с процессорами АВC и 8051s

Рис.4. Структура системы с процессорами АВC и 8051s

 

Предлагаемые Actel решения позволяют легко создавать многопроцессорные, в том числе многоплатформенные, системы, варьируя набор и число процессорных ядер в соответствие с задачей. Для ряда процессоров можно собирать системы в одной микросхеме и тем самым повысить эффективность системы, снизить ее стоимость, сократить энергопотребление и уменьшить габариты. В зависимости от решаемых задач, процесоры могут выполнять одну и ту же программу или разные программы, использовать общую или разделенную память данных.

Применение готовых IP-модулей значительно облегчает построение и отладку многопроцессорных систем.