* CoreMP7 – ARM7-процессор;
* Cortex-M1 – ARM6-процессор, специально разработанный для использования в ПЛИС;
* Core8051s – процессорное ядро микроконтроллера 8051;
* CoreABC – процессорное ядро малого объема, обладающее гибкой архитектурой и большими возможностями настройки.
Рассмотрим особенности построения многопроцессорных систем с использованием IP-ядер компании Actel.
Cortex-M1
При построении процессорной системы на базе процессора Cortex-M1 используется упрощенная версия системной шины AMBA AHB – АНВ Lite, которая поддерживает работу только с одним мастером на шине и не поддерживает пакетный режим транзакций на шине AHB (AHB Burst). Поэтому второй процессор можно подключить непосредственно к шине AHB Lite только как ведомый (slave). Он сможет производить обмен данными по шине AHB Lite только при обращении основного процессора, то есть полноценно функционировать не будет.
Необходимо отметить, что IP-процессор Cortex-M1 используется со специализированной ПЛИС, в которой выделена отдельная область под ядро процессора. Это делает невозможным построение любых многопроцессорных систем на базе нескольких Cortex-M1 в одной микросхеме. Два процессора Cortex-M1 можно объединить в одну систему, разместив их в разных микросхемах. При этом обмен данными между ними может производиться, например, через общую память (SRAM Buffer), находящуюся в одной из микросхем.
В одной микросхеме можно построить только "несимметричную" многопроцессорную схему, в которой вместе с процессором Cortex-M1 могут использоваться IP-процессоры 8051 или ABC. Ядра процессоров 8051 и АВС не требуют специализированных микросхем и могут использоваться с любой ПЛИС флеш-семейства. Их число ограничивает лишь объем ПЛИС.
Рассмотрим построение системы с процессорами 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, что позволяет процессорам в системе работать на разных тактовых частотах.
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). В подобной системе процессоры являются равнозначными. Процессоры работают асинхронно, но в каждый момент времени доступ на шину АНВ имеет только один процессор. У каждого процессора есть своя периферийная шина АРВ и набор контроллеров, а память программ и данных у процессоров общая.
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). Для этих целей лучше всего использовать двухпортовое СОЗУ. При этом код системы получается достаточно простым, а объем модуля – минимальным.
Предлагаемые Actel решения позволяют легко создавать многопроцессорные, в том числе многоплатформенные, системы, варьируя набор и число процессорных ядер в соответствии с задачей. Для ряда процессоров можно собирать системы в одной микросхеме и тем самым повысить эффективность системы, снизить ее стоимость, сократить энергопотребление и уменьшить габариты. В зависимости от решаемых задач процесоры могут выполнять одну и ту же программу или разные программы, использовать общую или разделенную память данных.
Применение готовых IP-модулей значительно облегчает построение и отладку многопроцессорных систем.