Р. Золотухо 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 интегрированы все необходимые средства для проведения разработки и отладки как аппаратной, так и программной частей проекта. Интегрированные в пакет средства можно классифицировать по назначению: средства разработки и средства отладки (верификации). К встроенным средствам разработки относятся:
Редактор языкового описания аппаратуры HDL Planner содержит набор средств для упрощения ввода VHDL- или Verilog-описания, например, набор заготовок (templates) языкового описания различных цифровых блоков (сч╦тчиков, регистров и т.п.). Кроме того, из-под HDL Planner может быть запущен генератор макросов Macro Generator. Макрос представляет собой подготовленный к размещению и разводке в FPGA аппаратный узел, учитывающий все особенности архитектуры FPGA AT94. Кроме того, библиотеки макросов могут использоваться средой размещения и разводки IDS7 при имплементации параметризируемых модулей (мегафункций). Входящий в состав SystemDesigner синтезатор LeonardoSpectrum является "облегченной" версией стандартного продукта Exemplar Logic и содержит только библиотеку логических элементов FPGA Atmel. К встроенным средствам верификации относятся:
Кроме того, 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:
Кроме того, среда 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На этом этапе разработчик зада╦т:
Источником глобального тактового сигнала GCLK6 может быть тактовый сигнал AVR, сигнал переполнения Tаймера0 AVR или сигнал переполнения сторожевого таймера AVR. Создание межъядерного интерфейсаСоздание межъядерного интерфейса заключается в соединении портов размещаемого в FPGA пользовательского устройства с линиями управления и шинами ядра AVR пут╦м сопоставления им╦н. Внутренние сигналы FPSLIC, определяющие способ взаимодействия ядер, разбиты по следующим группам:
После завершения описания межъядерного интерфейса SystemDesigner по запросу разработчика может сгенерировать тестовый vhdl-файл для проведения программной симуляции. Этот файл объединяет описания разрабатываемого устройства и его входного воздействия, определяемого программной моделью AVR. Кроме того, этот файл содержит заготовку входного воздействия для тех портов устройства, на которые подаются внешние сигналы. Разработчик должен сам задать входное воздействие на эти порты пут╦м ручного редактирования тестового файла. Распределение разделяемых ресурсов и формирование межъядерного интерфейса завершаются на этапе создания файла для программирования конфигурационного ПЗУ, когда разработчик определяет начальное содержимое управляющего регистра FPSLIC (об этом речь пойд╦т позднее). Совместная верификация (Pre-layout CoVerification)На этом этапе проверяются алгоритмы функционирования аппаратной и программной частей проекта и правильность работы межъядерного интерфейса. Процессом совместной верификации управляет скрытая от разработчика среда Seamless, которая позволяет:
Результаты совместной верификации отображаются в двух окнах: в окне программной отладки (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 (контроллера прерываний и UART) и определяет нагрузочную способность портов ввода/вывода ядра AVR. Создание файла для программирования конфигурационного ПЗУКонфигурационный код включает в себя три составляющие: исполняемый код AVR, конфигурационные данные FPGА и содержимое регистра управления. При необходимости отладки только программной или только аппаратной части проекта разработчик имеет возможность включить в конфигурационный файл только исполняемый код AVR либо только конфигурационные данные FPGА. В последнем случае, порты, подключаемые ко внутренним сигналам FPSLIC, должны быть обьявлены как внешние порты FPGA. Это необходимо для эмуляции микропроцессорного ядра извне. Программирование конфигурационного ПЗУКонфигурационное ПЗУ AT17 программируется внешней относительно SystemDesigner утилитой Configurator Programming System. Эта программа поддерживает как автономное, так и внутрисхемное программирование конфигураторов, позволяет управлять полярностью сигнала сброса конфигуратора и может разделять загрузочный файл большого объ╦ма на несколько частей (при использовании каскадного включения нескольких конфигураторов). Рассмотрев особенности среды SystemDesigner, можно сделать вывод, что процессу разработки устройств на основе FPSLIC присущи все черты, характерные для разработки проекта на основе программируемой логики:
Отличие заключается только в наличии программной части проекта. Литература:
|
Ваш комментарий к статье | ||||