* 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 только при обращении основного процессора, то есть полноценно функционировать не будет.
В одной микросхеме можно построить только "несимметричную" многопроцессорную схему, в которой вместе с процессором 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-модулей значительно облегчает построение и отладку многопроцессорных систем.