Встраиваемые микропроцессоры Actel
Встраиваемый микропроцессор — это, по сути, модель поведения процессора, выполненная на языке HDL (Hardware Description Language). Он поставляется в виде так называемого IP-ядра. IP в данном случае — это аббревиатура от Intellectual Property, то есть разработчику предоставляется право пользоваться интеллектуальной собственностью на описание МП. В среде разработки Actel ядро может отображаться в виде конфигурируемого модуля, с выводами, которые можно подключить к тем или иным цепям внутри ПЛИС или вывести наружу на внешние контакты микросхемы.
Как известно, особенностью ПЛИС Actel является то, что они запускаются сразу после включения питания, а не тратят время на загрузку, поэтому встроенный в них микроконтроллер ничем не хуже аналогичного, выполненного в виде готовой микросхемы. Однако встроенный МК обладает гибкостью, недоступной для аппаратного, начиная от возможности выбора набора периферийного оборудования и кончая выбором цоко-левки. Можно даже поменять тип процессора и его разрядность уже после того, как вся плата разведена и настроена.
Все микропроцессоры, описываемые в этой статье, не требуют каких-либо дополнительных финансовых затрат, поскольку их IP-ядра распространяются корпорацией Actel бесплатно и доступны в среде разработки Libero.
Разговор о микропроцессорах Actel начнем с ARM-совместимых, поскольку это настолько широко известная 32-разрядная архитектура, что ее описание можно найти даже в Wikipedia [1]. Лицензией на эту архитектуру пользуется более чем 40 компаний — производителей МП, включая таких крупных, как NXP Semiconductors, STMicroelectronics, Texas Instruments и Toshiba. Технические описания и руководства пользователя можно найти на сайте ARM [2]. Существуют и русскоязычные сайты, содержащие информацию по этому процессору, например [3]. Процессор ARM используется сегодня в огромном количестве изделий. В результате сотрудничества Actel и ARM разработано три IP-ядра ARM-совместимых МП. В семействе SmartFusion нет необходимости тратить ресурсы ПЛИС на реализацию МП, поскольку ядро процессора Cortex-M3 и развитая периферия ввода/вывода выполнены аппаратно, однако и в этом семействе есть программируемая матрица, где разработчик может расположить свои собственные периферийные устройства или контроллеры.
Ядро Cortex-M1
Знакомство с ARM-совместимыми микропроцессорами корпорации Actel начнем с ядра Cortex-M1 [4]. Структура 32-битного ядра процессора ARM Cortex-M1 изображена на рис. 1.
Рис. 1. Организация ядра Cortex-M1
Основной задачей, которую ставили перед собой разработчики этого ядра, был оптимальный выбор между производительностью и местом, занимаемым ядром в ПЛИС. Разработанное в результате этого ядро Cortex-M1 работает на тактовой частоте до 60 МГц и занимает без модуля отладки максимум 4353 логические ячейки.
Это ядро включает трехступенчатый конвейер команд и совместимо по системе команд с набором ARM Thumb-2 (ARMv6-M). Поэтому вы можете исполнять на этом ядре все двоичные коды, предназначенные для соответствующих МП ARM, без каких-либо модификаций. Для связи с периферийными устройствами ядро Cortex-M1 использует интерфейсную шину AMBA, которая дает возможность не только пользоваться готовыми IP-ядрами периферийных устройств, но и подключать свои собственные устройства. Для доступа к памяти Cortex-M1 использует независимую шину, что значительно повышает быстродействие системы в целом. Контроллер прерываний в этом ядре позволяет использовать вложенные прерывания. Ядро Cortex-M1 является гибким и модифицируемым, что дает возможность, в частности, включать или не включать в его состав средства аппаратного умножения в соответствии с требованием программы.
Разработка программ для Cortex-M1 ничем не отличается от разработки программ для других ARM-совместимых МП: вы можете пользоваться привычной для вас средой разработки, например RealView, Keil, или выбрать среду разработки SoftConsole корпорации Actel.
Ядро Cortex-M1 позволяет использовать встроенный отладчик реального времени с JTAG-интерфейсом, который после отладки проекта может быть исключен из дизайна. Последние версии программаторов FlashPro4 от Actel могут быть использованы для внутрисхемной отладки программ не только в среде SoftConsole, но и в широко распространенных средах разработки программного обеспечения RealView и Keil. Надо ли говорить о том, что Cortex-M1 способно использовать все наработки, сделанные для аналогичных ARM-совместимых процессоров: от программ управления объектами до операционных систем. ПЛИС Actel, подходящие для работы с ядром Cortex-M1, маркируются префиксом M1, эти микросхемы специально разработаны для поддержки такого ядра.
Корпорация Actel поставляет не только ядра самого процессора, но и развитый набор периферии, поэтому разработчик может своими руками создать микроконтроллер с требуемым набором интерфейсов, например Ethernet 10/100, I2C или PWM. Набор готовых ядер периферийных устройств постоянно пополняется, а с его составом можно познакомиться на сайте Actel. Кроме собственно модулей внешних устройств, Actel предоставляет набор драйверов для облегчения создания программ, существуют даже ма-шинонезависимые драйверы, позволяющие переходить с одной платформы (системы команд МП) на другую, не меняя программы пользователя, написанной на С или С++.
Ядро Cortex-M3
Cortex-M3 [5] — это следующее поколение ARM-совместимых МП от Actel, он совместим с ядром M1 сверху вниз и поддерживает набор команд ARMv7 [6]. Ядро Cortex-M3 реализовано в ПЛИС Actel семейства SmartFusion на аппаратном уровне, что полностью освобождает матрицу ПЛИС для целей пользователя. Этот процессор был разработан для высокопроизводительных приложений с ограниченным бюджетом, таких как автомобильные системы, микроконтроллеры, системы промышленной автоматики и системы связи. За счет оптимально выбранного соотношения между производительностью и размером Actel Cortex-M3 процессор работает на частотах до 100 МГц. Ядро процессора Cortex-M3 построено по гарвардской архитектуре с 3-ступенчатым конвейером команд и может выполнять команды 32-битного умножения за один машинный цикл. Для 32-битного деления требуется от 2 до 12 тактов. Процессор Cortex-M3 совместим с набором команд Thumb-2, кроме того, он поддерживает не выровненные операции с памятью. Конфигурируемое ядро IP Cortex-M3 соединяется с периферией посредством шины AMBA.
Контроллер прерываний в ядре М3 может конфигурироваться для использования от 1 до 150 источников прерывания с 256 уровнями приоритета. Приоритет прерываний может меняться динамически в ходе выполнения программы. Кроме того, доступно немаскируемое прерывание (NMI) для обработки критических событий.
В отличие от своего «младшего брата», Cortex-M3 имеет модуль защиты памяти, который поддерживает до восьми защищаемых областей размером от 32 байт до 4 Гбайт, в каждой из которых можно описать до 8 подобластей.
Программисту доступны развитые средства работы с битами, доступ к битам осуществляется напрямую, без участия команд логических операций И и ИЛИ, а длина битового поля может достигать 1 Мбит. Существуют непрерываемые операции с битами, которые служат для организации семафоров и флагов для взаимодействия процессов.
Cortex-M3 имеет развитую систему отладки, которая позволяет устанавливать точки останова программы, точки останова по доступу к данным, может собирать статистику выполнения программ и осуществляет инструментальную трассировку прерываний.
Для снижения энергопотребления МП поддерживает режим Sleep Now для мгновенного снижения потребляемой мощности. Переход в это состояние может быть сделан как по команде МП, так и после выхода из обработчика прерываний (Sleep on Exit). Снижение потребления возможно и за счет отключения внешних устройств, которое может быть осуществлено из программы пользователя.
Ядро CoreMP7
IP-ядро Actel CoreMP7 представляет собой soft-версию ARM7TDMI-S (ARMv4T), оптимизированную для применения в ПЛИС Actel M7 ProASIC3 и Fusion. Это ядро поддерживает как все 32-битные команды ARM7, так и все 16-битные инструкции Thumb, однако ядро это занимает более 8000 логических ячеек и может быть размещено только в ПЛИС большого объема. В состав периферийного оборудования CoreMP7 входят: интерфейс системной шины (AHB-Lite interface), интерфейс периферийной шины (APB interface), AHB-APB-мост, контроллер памяти, контроллер прерываний, таймеры, последовательный интерфейс, интерфейс буферизованного ввода/вывода. Все периферийные устройства CoreMP7 доступны в виде бесплатных IP-модулей. CoreMP7 может быть использовано в микросхемах с префиксом M7, которые содержат специальные выделенные области для этого ядра. Все эти микросхемы изготовлены по технологии энергонезависимых Flash ПЛИС фирмы Actel и содержат до 3 000 000 системных вентилей и до 616 внешних выводов.
Другим популярным семейством микропроцессоров, для которых написаны гигабайты программного кода, является семейство 151.
Ядро Core8051/Core8051s
Actel предоставляет две версии IP-ядра, совместимые с популярным процессором Intel i8051 [7], которые отличаются друг от друга наличием периферийных устройств. На рис. 2 устройства, входящие в Core8051s, выделены синим цветом.
Рис. 2. Ядра Core8051 и Core8051s
Если Core8051s описывает только ядро процессора 8051 интерфейсом к APB-шине, то Core8051 представляет собой точную копию микроконтроллера i8051 и содержит развитую периферию: два таймера/счетчика, программируемый последовательный интерфейс, четыре 8-битных порта ввода/вывода. Ядро Core8051s в целях экономии занимаемого места может быть сконфигурировано для работы без поддержки команд аппаратного умножения и деления, а набор периферийных устройств может быть собран пользователем самостоятельно, исходя из требований к системе. Оба ядра выполняют одну инструкцию за такт и могут работать на частотах до 45 МГц в ПЛИС семейства Axcelerator. Поскольку эти IP-ядра поддерживают систему команд микропроцессора i8051 и совместимы с ASM51, разработчик может использовать без модификации весь код, написанный для этого семейства, и применять все готовые средства разработки и отладки, представленные на рынке. Actel предоставляет бесплатную поддержку этих микропроцессоров в интегрированной среде разработки Libera Gold.
Ядро CoreABC
МП, которые мы рассматривали до сих пор, имели прототип среди аппаратных процессоров, а сейчас мы познакомимся с IP-ядром процессора, который не имеет таких аналогов [8]. Что такое ABC, знает не только каждый английский школьник, но и школьники Германии, Франции и Италии. На русский язык аббревиатура ABC переводится как «алфавит», что наилучшим образом характеризует этот конструктор процессоров начального уровня, позволяющий создавать процессоры, сконфигурированные под нужды разработчика. Используя CoreABC (рис. 3), вы можете из готовых блоков создать процессор с требуемой вам функциональностью, как слово из букв.
Рис. 3. Конфигурируемое ядро CoreABC
Вы получите контроллер, занимающий очень мало места в логической матрице, который может управлять периферийными устройствами, подключенными к шине APB (Advanced Peripheral Bus). Ядро CoreABC позволяет создать процессор, занимающий всего 125 системных ячеек. Одно из наиболее часто встречающихся применений этого процессора — управление ядрами CoreAI (интерфейс аналогового блока ПЛИС семейств Fusion) и CorePWM (блок широтно-импульсного модулятора) в приложениях со смешанными, аналогово-цифровыми сигналами. Но ничто не мешает использовать его для управления любыми IP-ядрами, подключаемыми к шинам APB или APB3.
CoreABC поддерживает развитую технику конфигурирования ядра, что позволяет очень точно «подогнать» ядро к требованиям конкретного дизайна. Инструкции ядра выполняются из небольшого внутреннего ПЗУ, собранного из логических ячеек («hard» configuration), или из ОЗУ («soft» configuration); в микросхемах семейств Fusion и SmartFusion инструкции могут храниться в энергонезависимой памяти (NVM). Ядро легко конфигурируется и программируется, что позволяет реализовывать эффективное управление даже в приложениях, предъявляющих повышенные требования к времени реакции системы. Характерной чертой данного процессора является то, что, благодаря его простоте, скорость вычислений в нем хорошо предсказуема, а время реакции на внешние события мало. Небольшие размеры и низкие требования к ресурсам ПЛИС позволяют размещать его в микросхемах, где использование других процессоров невозможно, например, в тех ПЛИС, где нет встроенной памяти.
Ядро LEON3
Те пользователи, которым нужен мощный процессор для интенсивных вычислений, могут воспользоваться IP-ядром LEON3 [9]. Это синтезированная VHDL-модель 32-разрядного процессора, совместимого по архитектуре и системе команд с процессором SPARC V8 с расширением V8e. Процессор легко конфигурируется и хорошо подходит для систем на кристалле. Полные исходные тексты доступны на сайте Aeroflex Gaisler AB [10] на условиях лицензии GNU GPL. Это дает разработчику широчайшие возможности по использованию, изучению и модификации исходных текстов. Существует вариант LEON3, доступный за небольшую лицензионную плату, что позволяет использовать его в любом коммерческом продукте. Есть и версия этого ядра, предназначенная для критических приложений, устойчивая к одиночным отказам логики.
Процессор содержит семиуровневый конвейер команд и может выполнять команды умножения, деления и умножения с накоплением за один такт. Для повышения быстродействия в процессоре используется независимый кэш данных и инструкций с предсказанием ветвлений. Объем, занимаемый МП в матрице, колеблется от 6500 ячеек в простейшем случае в микросхеме RTAX2000S-1, где он может работать на частоте 25 МГц, до 24 800 ячеек в микросхемах RT-ProASIC3 в случае использования сопроцессора и троирования всех триггеров: в этой конфигурации максимальная тактовая частота равна 20 МГц.
Заключение
Чтобы читателям было удобнее выбирать ядро процессора для их проектов, данные по быстродействию и занимаемому объему приведены в таблице.
Таблица. Сравнительные характеристики процессорных ядер
Название ядра процессора | Разрядность | Максимальная тактовая частота, МГц | Количество логических ячеек, занимаемых в матрице | ||||||||||
SmartFusion | Fusion | ProASIC3 | Igloo 1.5V | Axcelerator | SX-A | SmartFusion | Fusion | ProASIC3 | Igloo 1.5V | Axcelerator | SX-A | ||
Cortex-M1 без отладки | 32 | — | 60 | 60 | 40 | — | — | — | 4411 | 4411 | 4411 | — | — |
Cortex-M1 с отладкой | — | 60 | 60 | 40 | — | — | — | 7491 | 7491 | 7491 | — | — | |
Cortex-M3 без отладки | 32 | 100 | — | — | — | — | — | 0 | — | — | — | — | — |
Cortex-M3 с отладкой | 100 | — | — | — | — | — | 0 | — | — | — | — | — | |
CoreMP7 без отладки | 32 | — | 28 | 28 | — | — | — | — | 6083 | 6083 | — | — | — |
CoreMP7 с отладкой | — | 21 | 20 | — | — | — | — | 7931 | 7931 | — | — | — | |
Core8051 без отладки | 8 | — | 36 | 36 | 24 | 52 | 33 | — | 4157 | 4157 | 4157 | 2963 | 3426 |
Core8051 с отладкой | — | 33 | 33 | 22 | 44 | 29 | — | 3923 | 3923 | 3923 | 3385 | 3679 | |
Core8051s без отладки | 8 | — | 29 | 29 | 24 | 53 | — | — | 3146 | 3146 | 2568 | 1757 | — |
Core8051s с отладкой | — | 24 | 24 | 24 | 42 | — | — | 6368 | 6368 | 5125 | 3413 | — | |
Core ABC RAM | 8 | — | 68 | 68 | 45 | 95 | — | — | 153 | 153 | 153 | 88 | — |
Core ABC ROM | 8 | — | 92 | 92 | 61 | 123 | — | — | 225 | 225 | 225 | 141 | — |
Core ABC RAM | 32 | — | 46 | 46 | 31 | 65 | — | — | 406 | 406 | 406 | 207 | — |
Core ABC ROM | 32 | — | 58 | 58 | 39 | 97 | — | — | 393 | 393 | 393 | 270 | — |
LEON3 | 32 | — | — | — | — | 25 | — | — | — | — | — | 6500 | — |
LEON3 + GRFPU Lite | 32 | — | — | — | — | 20 | — | — | — | — | — | 13 500 | — |
LEON3-FT | 32 | — | — | 25 | — | 25 | — | — | — | 8400 | — | 7500 | — |
LEON3-FT + GRFPU-FT Lite | 32 | — | — | 20 | — | 20 | — | — | — | 18 200 | — | 14 600 | — |
В заключение необходимо напомнить, что наряду с IP-модулями процессоров Actel предоставляет IP-модули периферийных устройств, ведь без системы ввода/вывода микропроцессор будет напоминать кофемолку, у которой после помола заело крышку: кофе есть, а заварить его нельзя. Для того чтобы максимально упростить создание микропроцессорных систем на базе ПЛИС, Actel предоставляет полный набор периферийных модулей, совместимых с шиной AMBA (Advanced Microcontroller Bus Architecture). В этот набор входят интерфейсы с шинами AHB (Advanced High-performance Bus) и APB (Advanced Peripheral Bus), мосты между шинами AHB в APB и AHB в APB3, контроллер памяти, контроллер прерываний, таймеры, интерфейс последовательного ввода/вывода, буферизованный интерфейс параллельного ввода/вывода и другие IP-модули. Все эти периферийные модули подключаются к процессору через шину AMBA и предоставляются бесплатно, они доступны как в пакете разработки Libero [11], так и в пакете SmartDesign [12]. Для поиска необходимого IP-ядра можно воспользоваться ресурсами сайта Actel [13].
Итак, если вам нужна развитая микропроцессорная система, соответствующая жесточайшим требованиям по энергопотреблению, занимаемому объему и надежности, но у вас нет времени на разработку заказной специализированной микросхемы (ASIC), то вы можете воспользоваться ПЛИС Actel, которые позволяют собрать почти всю систему на одном кристалле.
ПЛИС корпорации Actel поставляются в различных исполнениях, начиная с коммерческого диапазона температур (от 0 до +70 °C) и до исполнения EV (диапазон температур от -55 до +125 °C), устойчивого к радиации. Существуют семейства микросхем, сохраняющие работоспособность при поглощенной дозе радиации до 300 крад. Таким образом, процессор и вся система на кристалле, зашитые в такую микросхему, будут отвечать всем требованиям приемки 9 для космических применений.
Для гражданских применений важными могут оказаться низкая потребляемая мощность и возможность легкой модификации проекта без изменений в печатной плате.
Литература
- http://en.wikipedia.org/wiki/ARM_architecture
- http://www.arm.com/support/index.php
- http://www.gaw.ru/html.cgi/txt/doc/micros/arm/index.htm
- http://www.arm.com/products/processors/cortex-m/cortex-m1.php
- http://www.arm.com/products/processors/cortex-m/cortex-m3.php
- http://www.arm.com/files/pdf/Cortex-M3_programming_for_ARM7_developers.pdf
- http://www.8052.com/links.phtml
- http://www.actel.com/ipdocs/CoreABC_HB.pdf
- http://www.actel.com/ipdocs/LEON3_DS.pdf
- http://www.actel.com/products/partners/companioncore/gaisler.aspx
- http://www.actel.com/products/software/libero/coreconfig.aspx
- http://www.actel.com/products/software/smartdesign/default.aspx
- http://www.actel.com/products/ip/search/default.aspx