SystemDesigner - пакет для разработки устройств на основе FP

Р. Золотухо

SystemDesigner - пакет для разработки устройств на основе FPSLIC

Проектирование электронных устройств на современной элементной базе невозможно без соответствующих средств поддержки разработок. Различие подходов к системам на кристалле определяет не только различие их архитектур у разных производителей, но также и различия в построении и использовании программных средств поддержки разработок. Предлагаемая вашему вниманию статья посвящена программному пакету SystemDesigner - среде разработки устройств на основе FPSLIC фирмы Atmel.

Устройства класса "Конфигурируемая Система на Кристалле" (Configurable System on Chip - CSoC), как следует из названия, объединяют на одном кристалле различные узлы, характерные для микропроцессорной системы - ядро микропроцессора, память и периферийные устройства, как встроенные ("ж╦сткие"), так и конфигурируемые разработчиком. Характерная для CSoC возможность создания реконфигурируемых пользователем устройств позволяет рассматривать системы на кристалле с двух разных точек зрения. С одной стороны, система на кристалле может рассматриватся как обычная процессорная система с шинной архитектурой, где главенствующим элементом является процессорное ядро (как вариант микроконтроллера с конфигурируемой периферией). С другой - как набор независимых узлов (ядер) и памяти, интерфейс между которыми не является предопредел╦нным и может быть выбран разработчиком "под задачу".

Для корпорации Atmel характерен второй подход. FPSLIC представляет собой два независимых ядра - ядро микроконтроллера AVR и ядро FPGA (подробно архитектура FPSLIC рассмотрена в [1]). Гибкость архитектуры FPSLIC позволяет реализовывать различные варианты обмена данными между ядрами.

Состав пакета SystemDesigner

В рабочем окне SystemDesigner указывается тип выбранного кристалла и файлы проекта (разбитые на группы по типам), а также графическое изображение процесса разработки, представленное в виде этапов с указанием последовательности их исполнения.

Так как с точки зрения Atmel, система на кристалле представляет собой набор независимых ядер (ядро AVR и ядро FPGA), в состав SystemDesigner входят средства разработки приложений для микроконтроллера (программная часть проекта) и для FPGA (аппаратная часть проекта), а также средства разработки интерфейса между ядрами.

Гибкая архитектура FPSLIC и широкий набор встроенных в SystemDesigner средств разработки позволяют проводить независимое проектирование программной (ядро AVR) и аппаратной (ядро FPGA) частей проекта. При этом в процессе проектирования разработчик пользуется привычными средствами как для написания программ (C, ассемблер), так и для создания языкового описания аппаратуры (VHDL, Verilog HDL).

Главной отличительной чертой SystemDesigner является наличие в его составе средств совместной (то есть одновременной для аппаратной и программной частей) программной симуляции проекта. Преимущество совместной верификации проекта, то есть отладки при помощи моделирующих программ, по сравнению с отладкой проекта непосредственно в реальной разрабатываемой системе, заключается в гораздо более раннем обнаружении ошибок как в программной, так и в аппаратной частях проекта. Это позволяет вносить изменения в проект на более ранней стадии, и таким образом избегать многократного повторения процедур синтеза, размещения и разводки, которые, как правило, являются самыми длительными из всего процесса проектирования. Таким образом, совместная верификация позволяет существенно сократить время разработки.

Встроенные средства разработки

В SystemDesigner интегрированы все необходимые средства для проведения разработки и отладки как аппаратной, так и программной частей проекта. Интегрированные в пакет средства можно классифицировать по назначению: средства разработки и средства отладки (верификации).

К встроенным средствам разработки относятся:

средства разработки программной части проекта: AVR Assembler v1.3; средства разработки аппаратной части проекта: с использованием языкового описания аппаратуры: редактор языкового описания аппаратуры HDL Planner; синтезатор языкового описания аппаратуры LeonardoSpectrum; среда размещения и разводки FPGA Figaro ISD7.

Редактор языкового описания аппаратуры HDL Planner содержит набор средств для упрощения ввода VHDL- или Verilog-описания, например, набор заготовок (templates) языкового описания различных цифровых блоков (сч╦тчиков, регистров и т.п.). Кроме того, из-под HDL Planner может быть запущен генератор макросов Macro Generator. Макрос представляет собой подготовленный к размещению и разводке в FPGA аппаратный узел, учитывающий все особенности архитектуры FPGA AT94. Кроме того, библиотеки макросов могут использоваться средой размещения и разводки IDS7 при имплементации параметризируемых модулей (мегафункций).

Входящий в состав SystemDesigner синтезатор LeonardoSpectrum является "облегченной" версией стандартного продукта Exemplar Logic и содержит только библиотеку логических элементов FPGA Atmel.

К встроенным средствам верификации относятся:

программный отладчик-симулятор AVR Studio; симулятор языкового описания аппаратуры ModelSim; среда совместной верификации аппаратуры и исполняемого кода микроконтроллера Seamless.

Кроме того, SystemDesigner содержит средства для создания интерфейса между ядрами (AVR-FPGA Interface), управления разделяемыми ресурсами FPSLIC (AT94 Device Option) и создания файла для программирования конфигурационного ПЗУ (Bitstream Generation).

Интеграция со средствами разработки третьих фирм

Разработчик может по своему желанию вместо встроенных средств разработки использовать программные продукты других фирм. Это не относится в средствам верификации. Встроенные в SystemDesigner AVR Studio и ModelSim адаптированы для поддержки совместной верификации под управлением Seamless.

Вместо AVR Assembler разработчик может подключить к пакету любой внешний компилятор, поддерживающий процесоры AVR, например, С-компиляторы фирм IAR Systems или ImageCraft Software.

Передача информации из синтезатора в среду размещения и разводки осуществляется в формате EDIF2.0.0. Поэтому для синтеза может использоваться любой синтезатор, содержащий библиотеку логических элементов FPGA Atmel и совместимый по формату EDIF c Figaro IDS7.

Среда размещения и разводки Figaro IDS7 совместима по формату EDIF со следующими синтезаторами, поддерживающими FPGA Atmel:

FPGA Express / FPGA Compiler II фирмы Synopsys; LeonardoSpectrum фирмы Exemplar Logic; Synplify фирмы Synplicity; Everest фирмы Everest Design Software.

Кроме того, среда ISD7 совместима с некоторыми пакетами, поддерживаюшими схемотехническую форму описания проектов, например, OrCAD Capture или WorkVIEW Office ViewDRAW, а так же с форматом XNF фирмы XILINX. Однако при использовании схемотехнического ввода проектов теряется очень важное преимущество - возможность совместной верификации до размещения и разводки проекта (Pre-layout Coverification) и, как следствие, при этом нельзя обнаружить ошибку на этапе логического моделирования. Это, в свою очередь, вед╦т к увеличению времени разработки.

Проектирование в среде SystemDesigner Создание проекта

Создание проекта в SystemDesigner начинается с запуска менеджера проектов. Разработчик указывает имя проекта и выбирает тип кристалла FPSLIC, прич╦м и то и другое может быть изменено на любом этапе разработки. Здесь же может быть задан список используемых в процессе проектирования программных средств из состава SystemDesigner по выбору разработчика, однако на сегодняшний день эта опция недоступна и к проекту подключаются все программные средства пакета. Следующим этапом открытия проекта является указание количества выбранных кристаллов (один или несколько), что позволяет создавать более сложные устройства в случае, если проект не помещается в один кристалл.

На этом создание проекта заканчивается.

Разработка программной части проекта

Как уже говорилось, при работе в SystemDesigner разработчик пользуется привычными средствами написания программ. При создании исполняемого кода AVR для определения символических им╦н регистров FPSLIC (как регистров AVR, так и регистров, определяющих межъядерный интерфейс) служит специальный включаемый (заголовочный) файл, предоставляемый фирмой Atmel. Компиляция и компоновка программы определяются используемым разработчиком программным средством, и практически ничем не отличаются от аналогичных операций при создании программ для AVR. Результатом этого этапа разработки является создание объектного файла AVR (используется при совместной верификации) и шестнадцатеричного файла с исполняемым кодом AVR (используется при создании загрузочного файла).

Разработка аппаратной части проекта

На этом этапе действия разработчика повторяют разработку аппаратуры на основе FPGA. Как уже отмечалось, SystemDesigner ориентирован на языковое описания аппаратной части проекта. Для того, чтобы использовать все преимущества совместной верификации, разработчик должен создать языковое описание своего устройства, используя либо HDL Planner, либо внешний текстовый редактор по своему усмотрению.

Конфигурирование интерфейса AVR-FPGA

Межъядерный интерфейс FPSLIC, благодаря своей гибкости, может быть сконфигурирован "под задачу". Обмен данными между устройством, реализованным в FPGA, и микроконтроллером, может быть осуществл╦н как по шине под управлением сигналов разрешения чтения/записи, так и через двухпортовую память (память данных AVR).

Конфигурирование разделяемых ресурсов FPSLIC

На этом этапе разработчик зада╦т:

распределение памяти AVR между пространствами кода и данных (и, соответственно, объ╦м двухпортового ОЗУ); назначение глобального тактового сигнала GCLK6 ядра FPGA.

Источником глобального тактового сигнала GCLK6 может быть тактовый сигнал AVR, сигнал переполнения Tаймера0 AVR или сигнал переполнения сторожевого таймера AVR.

Создание межъядерного интерфейса

Создание межъядерного интерфейса заключается в соединении портов размещаемого в FPGA пользовательского устройства с линиями управления и шинами ядра AVR пут╦м сопоставления им╦н. Внутренние сигналы FPSLIC, определяющие способ взаимодействия ядер, разбиты по следующим группам:

AVRIoSelect - 16 селектирующих линий для выбора устройств в FPGA; FPGAInterrupt - 16 линий запросов прерываний AVR; DataFromAVR - шина записи данных из ядра AVR в FPGA; DataToAVR - шина чтения данных из FPGA в ядро AVR; AVRControl - стробы чтения и записи данных в FPGA; SRAMAddress - шина адресции памяти данных AVR ядром FPGA; DataFromSRAM - шина чтения из памяти данных AVR в FPGA; DataToSRAM - шина записи в память данных AVR из FPGA; SRAMControl - стробы записи данных из FPGA в память данных AVR; FPGAClock - глобальные тактовые сигналы FPGA.

После завершения описания межъядерного интерфейса SystemDesigner по запросу разработчика может сгенерировать тестовый vhdl-файл для проведения программной симуляции. Этот файл объединяет описания разрабатываемого устройства и его входного воздействия, определяемого программной моделью AVR. Кроме того, этот файл содержит заготовку входного воздействия для тех портов устройства, на которые подаются внешние сигналы. Разработчик должен сам задать входное воздействие на эти порты пут╦м ручного редактирования тестового файла.

Распределение разделяемых ресурсов и формирование межъядерного интерфейса завершаются на этапе создания файла для программирования конфигурационного ПЗУ, когда разработчик определяет начальное содержимое управляющего регистра FPSLIC (об этом речь пойд╦т позднее).

Совместная верификация (Pre-layout CoVerification)

На этом этапе проверяются алгоритмы функционирования аппаратной и программной частей проекта и правильность работы межъядерного интерфейса.

Процессом совместной верификации управляет скрытая от разработчика среда Seamless, которая позволяет:

транслировать вырабатываемые программной моделью ядра AVR воздействия в симулятор языкового описания аппаратуры ModelSim; транслировать реакцию аппаратной части проекта из ModelSim в отладчик-симулятор исполняемого кода AVR Studio.

Результаты совместной верификации отображаются в двух окнах: в окне программной отладки (AVR Studio) и в окне отладки аппаратуры (ModelSim). AVR Studio отображает состояние внутренних регистров ядра AVR, регистров встроенных периферийных устройств, памяти программ и данных. ModelSim отображает все внутренние и внешние сигналы аппаратной части проекта в виде временных диаграмм. При этом если по ходу исполнения программного кода AVR активизирует какой-либо сигнал, связанный с аппаратной частью проекта, это изменение тут же отображается в виде изменения уровня соответствующего сигнала в окне ModelSim. И наоборот, если аппаратная часть проекта вырабатывает сигнал, являющийся входным для AVR (например, запрос прерывания), он тут же отображается в виде взвед╦ного флага в соответствующем регистре.

Управление параллельными процессами аппаратной и программной отладки

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

Для переключения управления из AVR Studio в ModelSim (активизации ModelSim) в отладчик-симулятор добавлена функция Hardware Break. Для обратного переключения управления (активизации AVR Studio) добавлена функция Continue. Кроме того, AVR Studio может быть активизирован при запуске ModelSim на исполнение функцией Run all.

Синтез языкового описания

Этот этап аналогичен синтезу языковых описаний проектов на основе FPGA. Результатом синтеза является edif-файл, содержаций информацию о структуре аппаратной части проекта на уровне примитивов, определяемых технологической библиотекой.

Интегрированный в SystemDesigner синтезатор LeonardoSpectrum, как и большинство современных синтезаторов (FPGA Compiler II, Synplify и другие), позволяет просматривать результат синтеза как на уровне регистровых пересылок (RTL), так и на уровне технологических примитивов.

Размещение и разводка аппаратной части проекта

Интегрированная в SystemDesigner среда размещения и разводки Figaro IDS7 может работать в двух режимах: в автономном (standalone) режиме и в составе SystemDesigner. При запуске в составе SystemDesigner Figaro IDS7 автоматически открывает полученный в результате синтеза языкового описания аппаратной части проекта edif-файл и назначает в качестве целевого заданный в SystemDesigner тип кристалла FPSLIC.

Разработчик должен лишь назначить расположение внешних портов устройства на выводы кристалла.

После назначения портов запускается процедура размещения и разводки, выполненная в несколько этапов:

начальное размещение проекта в кристалле; оптимизация размещения; начальная разводка; оптимизация разводки.

После завершения автоматического размещения и разводки по желанию разработчика может быть создан отч╦т о временных задержках сигналов и указан критический путь. Разработчик имеет возможность ручной корректировки результата размещения и разводки.

Этап заканчивается формированием bitstream-файла, который содержит данные для конфигурирования ядра FPGA.

При формировании bitstream-файла создаются также back-anotation vhdl-файл (файл языкового описания аппаратной части проекта с уч╦том всех внутренних сигналов) и sdf-файл (файл, содержащий информацию о задержках сигналов во всех внутренних цепях проекта).

Совместная верификация (Post-layout CoVerification)

Полученные в результате размещения и разводки проекта back-annotation vhdl- и sdf-файлы используются для окончательной совместной верификации (Post-layout CoVerification). В back-annotation vhdl-файле, как и в рассмотренном выше случае Pre-layout CoVerification, разработчик должен сам описать входное воздействие на внешние по отношению к FPSLIC порты проекта. Из sdf-файла, содержащего информацию о временных задержках во всех цепях проекта, разработчик может выбрать для верификаци один из тр╦х вариантов задержек: оптимистический (minimum), обычный (typical) или пессимистический (maximum).

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

Если результат совместной отладки после размещения и разводки соответствует задуманному поведению системы на кристалле, наступает последний этап разработки.

Загрузка проекта в кристалл

Память программ ядра AVR реализована по технологии статического ОЗУ, то есть является энергозависимой. Поэтому программный код AVR должен загружаться в память программ после включения питания так же, как и конфигурационные данные ядра FPGA. Кроме того, после включения питания должна производиться начальная загрузка регистра управления FPSLIC.

Для загрузки кристаллов FPGA и FPSLIC Atmel предлагает устройства конфигурационной EEPROM семейства AT17. Эти конфигураторы могут быть запрограммированы непосредственно в системе по шине I2C.

Конфигурирование регистра управления FPSLIC

Как было отмечено выше, этот этап завершает распределение разделяемых ресурсов FPSLIC и формирование межъядерного интерфейса. Управляющий регистр содержит:

биты разрешения модификации памяти программ AVR пользовательским приложением; дополнительные опции сброса и тактирования AVR; бит разрешения функции CacheLogic (реконфигурирование FPGA под управлением ядра AVR); бит разрешения записи данных из FPGA в память данных AVR.

Кроме того, управляющий регистр содержит информацию о назначении выводов встроенных периферийных устройств ядра AVR (контроллера прерываний и UART) и определяет нагрузочную способность портов ввода/вывода ядра AVR.

Создание файла для программирования конфигурационного ПЗУ

Конфигурационный код включает в себя три составляющие: исполняемый код AVR, конфигурационные данные FPGА и содержимое регистра управления.

При необходимости отладки только программной или только аппаратной части проекта разработчик имеет возможность включить в конфигурационный файл только исполняемый код AVR либо только конфигурационные данные FPGА. В последнем случае, порты, подключаемые ко внутренним сигналам FPSLIC, должны быть обьявлены как внешние порты FPGA. Это необходимо для эмуляции микропроцессорного ядра извне.

Программирование конфигурационного ПЗУ

Конфигурационное ПЗУ AT17 программируется внешней относительно SystemDesigner утилитой Configurator Programming System. Эта программа поддерживает как автономное, так и внутрисхемное программирование конфигураторов, позволяет управлять полярностью сигнала сброса конфигуратора и может разделять загрузочный файл большого объ╦ма на несколько частей (при использовании каскадного включения нескольких конфигураторов).

Рассмотрев особенности среды SystemDesigner, можно сделать вывод, что процессу разработки устройств на основе FPSLIC присущи все черты, характерные для разработки проекта на основе программируемой логики:

ориентация на языковое описание аппаратуры; логическая симуляция работы устройств до и после размещения и разводки проекта; синтез языкового описания; создание загрузочного файла для последовательного конфигурационного ПЗУ.

Отличие заключается только в наличии программной части проекта.

Литература:

Кривченко И. Системная интеграция в микроэлектронике - FPSLIC // Chip News. 2000. ╧ 3. С. 4√10.







Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.