Процесс разработки и отладки проекта под семейство ПЛИС SmartFusion
Структура ПЛИС SmartFusion
Новое семейство имеет аналогичную программируемую логическую матрицу, блок
управления тактовыми частотами, в том числе и встроенные тактовые генераторы, и при
этом — значительно расширенные функциональные возможности аналого-цифровой
части. Но основное нововведение — это интегрированный в чип полноценный аппаратный микроконтроллер с процессором ARM
Cortex-M3, а также цифро-аналоговый преобразователь (ЦАП).
Такое расширение функциональных возможностей позволяет разработчикам не делать выбора между ПЛИС и микроконтроллером с аналоговым блоком и полностью
решить все поставленные задачи, используя
только одну микросхему с полноценной системой на кристалле (СнК).
Вкратце рассмотрим структуру Smart-Fusion (рис. 1). Каждая микросхема включает
в себя:
- Реализованный аппаратно ARM-совместимый процессор Cortex-M3 c тактовой частотой работы до 100 МГц и набором команд Thumb-2.
- Набор аппаратных интерфейсных контроллеров: Ethernet MAC 10/100, SPI, I2C,
UART. - периферии: системные регистры, таймеры, контроллер
прямого доступа к памяти, контроллеры
внешней и внутренней памяти. - Встроенные блоки ПЗУ до 512 кбайт и ОЗУ
до 64 кбайт для процессора. - В микросхеме имеются три встроенных
тактовых генератора: кварцевый генератор, формирующий выходную частоту
от 32 кГц до 20 МГц, RC-генератор —
100 МГц и 32-Гц кварцевый генератор
с отдельной схемой питания и часами реального времени. - Блок ФАПЧ, который позволяет формировать из входных частот тактовые частоты
для процессорной части, аналогового блока, матрицы ПЛИС. - ПЛИС емкостью до 500 000 системных вентилей и с системной частотой до 350 МГц,
выполненная по Flash-технологии. - До восьми 4608-битных блоков 2-портовой
ОЗУ, которые могут быть сконфигурированы как FIFO различной разрядности. - До трех аналоговых блоков, каждый
из которых содержит настраиваемый
12-разрядный АЦП с предварительными
масштабирующими ОУ для подстройки
динамического диапазона, 12-разрядный
ЦАП с выходами по напряжению и току. - Контроллер управления работой АЦП.
- Блок цифровой обработки, позволяющий
сделать предварительную обработку цифровых отсчетов, поступающих от АЦП, без
использования процессора. С помощью него
можно линейно преобразовать сигнал или
выполнить простейшую фильтрацию.
Процесс разработки проекта
под SmartFusion
Разработка проекта ПЛИС и конфигурирования процессорной и аналоговой частей
SmartFusion осуществляется в пакете Actel
Libero IDE версии не ниже 9.0, которая включает в себя все необходимые разработчику IP-ядра. Последние версии пакета Libero IDE
и обновлений IP для конфигурации процессора и всей периферии SmartFusion можно
бесплатно скачать с сайта actel.com.
Libero IDE является интегрированной средой разработки и включает в себя все необходимое ПО для разработки (рис. 2), отладки,
синтеза проекта и генерации файла прошивки. Отладка проекта для ПЛИС выполняется с помощью симулятора ModelSim, синтез
проекта производится синтезатором Synplify
фирмы Synplicity, которые бесплатно поставляются в составе Libero.
Для разработки и отладки ПО для процессорной системы Actel предлагает использовать
бесплатную среду разработки SoftConsole,
с помощью которой также можно производить и отладку проекта на готовой плате посредством идущего в комплекте отладчика.
Пакет SoftConsole бесплатный и скачан с сайта
actel.com. При этом есть возможность использовать среды разработки сторонних производителей, такие как Keil и IAR.
Конфигурация SmartFusion
Конфигурация аппаратной части Smart-Fusion осуществляется через удобный графический интерфейс, в котором представлены
все ресурсы микросхемы в виде структурной
схемы (рис. 3).
Для удобства разработчиков все блоки
на панели конфигурации помечены различными цветами. Голубым помечены блоки,
которые конфигурируются аппаратно, оранжевым — блоки, которые конфигурируются
программно, а зеленым те блоки, которые
не нужно настраивать. Бóльшая часть блоков, которые не используются в проекте,
могут быть аппаратно отключены на панели
конфигурации. Это позволяет еще больше
оптимизировать систему под конкретные задачи разработчика, высвободить дополнительные пользовательские выводы и уменьшить энергопотребление. Для настройки
блоков, требующих аппаратной конфигурации, нужно двойным кликом мышки вызвать соответствующую панель настройки
и ввести необходимые параметры.
Рассмотрим настройки ряда блоков Smart-Fusion более подробно.
В блоке управления тактовой частотой
(рис. 4) имеется возможность выбрать источник тактовой частоты. Им может быть
внешний генератор, внутренний RC-генератор 100 МГц или внутренний кварцевый
генератор, которому необходим внешний
кварц с частотой от 32 кГц до 20 МГц. Тактовые сигналы с этих источников можно завести на вход блока умножения и фазовой
автоподстройки частоты, который может
работать с частотами до 350 МГц, при этом
процессор способен работать на частотах
до 100 МГц. В качестве источника тактового
сигнала для часов реального времени может
быть использован интегрированный низкопотребляющий кварцевый осциллятор
с внешним часовым кварцем 32,768 кГц.
Блок часов реального времени с осциллятором имеет отдельные входы питания, что
позволяет подать на него питание от отдельного источника и снять основное питание
с микросхемы без потери времени и остановки системных часов.
В микросхеме предусмотрена возможность
гибко организовывать потоки данных между
блоками. Например, данные из аналоговых
блоков могут быть переданы напрямую
в ПЛИС, что позволяет производить необходимую цифровую обработку сигналов
(ЦОС) без участия процессора. При помощи
этого можно в значительной степени разгрузить процессор от требовательных к производительности задач обработки и «сконцентрироваться» на других задачах.
Процессор может работать как из внешней, так и из внутренней памяти, для этого
помимо встроенной в кристалл ОЗУ и ПЗУ
к СнК может быть подключена внешняя память через конфигурируемый контроллер
внешней памяти (рис. 5). Эта конфигурация
позволяет подключить два независимых
внешних банка памяти, как ОЗУ, так и Flash
ПЗУ различных типов.
В зависимости от объема микросхемы в ней
может быть от одного до трех полноценных
аналоговых блоков. В каждом из блоков есть
12-разрядный АЦП, работающий по методу
последовательного приближения. Все аналоговые сигналы подведены к АЦП через мультиплексор, что дает возможность отслеживать
величины сразу нескольких независимых
внешних сигналов, поочередно мультиплексируя их в заданной последовательности.
Сигнал на вход мультиплексора может подаваться как напрямую с входа микросхемы, так
и через блок согласования входных сигналов.
К каждому мультиплексору подключены 4 блока согласования входных сигналов,
в каждом из которых имеется два канала измерения напряжения, канал измерения тока
и канал измерения температуры с интегрированными масштабирующими операционными усилителями. Совсем не обязательно
использовать все каналы измерения, достаточно выбрать только те, которые необходимы разработчику в данном проекте. Таким
образом, последовательно мультиплексируя
входные сигналы, можно отслеживать значения сразу нескольких внешних параметров,
задействовав при этом только один АЦП.
Порядок мультиплексирования, частота выборки АЦП, а также его разрядность задаются на панели настройки контроллера запуска АЦП. Контроллер запуска осуществляет
и первичную калибровку АЦП при включении, а также обновление данных для ЦАП.
Наличие в аналоговых блоках возможности предварительного согласования входных сигналов (рис. 6) позволяет напрямую
измерять двуполярное напряжение амплитудой до ±15 В и ток: следует только дополнительно установить внешний шунт.
Для измерения температуры требуется
внешний датчик, в качестве которого можно использовать pn-транзистор или диод.
Использование аналогового компаратора
также может быть очень полезным в задачах
постоянного мониторинга внешних параметров и их контроля. При необходимости
слежения за уровнями входных сигналов
есть возможность задействовать флаги, при
заданных уровнях они будут выставляться
и сниматься. Эти флаги можно использовать, например, как сигналы прерываний
для процессора либо как флаги необходимости старта пользовательских контроллеров в ПЛИС.
Максимальная частота работы АЦП составляет до 480 кОтсчетов/с при разрядности АЦП
12 бит и 600 кОтсчетов/c при разрядности
8 бит. Запуск всех АЦП производится единым
контроллером, поэтому можно синхронизировать работу нескольких АЦП и добиться
N-кратного увеличения производительности
путем последовательного запуска АЦП на измерение одного и того же сигнала.
Разработка ПО
Для отладки программного обеспечения на плате в среде SoftConsole в качестве
JTAG-адаптера используется программатор
FlashPro4. Его можно использовать в качестве
JTAG-адаптера для отладки программ в средах Keil и IAR. Это позволяет применять привычную среду разработки, не тратить время
на изучение дополнительного ПО, а также
использовать все предыдущие наработки.
При создании проекта и конфигурации
СнК SmartFusion в корневой папке проекта Libero автоматически генерируется папка Firmware, содержащая драйверы всех
устройств, задействованных в микроконтроллере. Эту папку можно импортировать
в проект SoftConsole и далее пользоваться
всеми ресурсами системы, обращаясь к ним
через драйверы из тела главной программы.
Заключение
Таким образом, используя всего одну
микросхему, мы получаем полноценную
развитую микропроцессорную систему
с возможностью подключения напрямую
к аналоговым сигналам. Мы можем также
описывать и добавлять в ПЛИС собственную периферию и контроллеры. Это позволяет значительно сократить, а в ряде случаев
и вовсе отказаться от использования внешних аналоговых элементов. Поэтому сокращается энергопотребление и физические
размеры готового устройства, а благодаря
интегрированной среде разработки Libero
и наглядному графическому интерфейсу
конфигурации цифро-аналоговой процессорной системы значительно сокращается
время разработки целевого проекта и упрощается калибровка аналоговых трактов готовых изделий.
У разработчика ПО есть свобода выбора
оболочки для разработки программ. Нет необходимости отказываться от уже привычных
и зарекомендовавших себя сред разработки
Keil или IAR. Можно использовать предыдущие наработки, а в ряде случаев и целые проекты, разработанные под платформу ARM,
практически без изменений.