Проектирование цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx с использованием средств CORE Generator
В статье рассматриваются основные характеристики и пользовательский интерфейс средств CORE Generator версии 8.2, а также методика их применения в процессе разработки цифровых устройств и систем на основе ПЛИС семейств FPGA.
Уникальные возможности, большой объем логических, специализированных и трассировочных ресурсов ПЛИС семейств FPGA (Field Programmable Gate Array), выпускаемых фирмой Xilinx в последние годы [1], позволяют разрабатывать высокопроизводительные цифровые устройства различного уровня сложности, в том числе и микропроцессорные «системы на кристалле» (System-on-Chip) [2–6]. Для повышения эффективности процесса проектирования таких устройств и систем с целью сокращения суммарного времени их разработки в составе САПР серии Xilinx ISE (Integrated Synthesis Environment/Integrated Software Environment) пользователям предоставляется генератор параметризированных модулей CORE Generator. Начиная с версии 8.1, данный инструмент включен в состав свободно распространяемой конфигурации средств проектирования WebPack ISE [7].
Краткая характеристика генератора параметризированных модулей CORE Generator
В состав средств CORE Generator входят обширный комплект параметризированных модулей и инструменты конфигурирования на их основе IP-ядер с требуемыми значениями параметров.
Средства CORE Generator позволяют формировать параметризированные модули для последующей реализации в ПЛИС следующих семейств:
- Spartan™-II;
- Spartan-IIE;
- Spartan-3;
- Spartan-3E;
- Virtex™;
- Virtex-E;
- Virtex-II;
- Virtex-II PRO;
- Virtex-II PRO X;
- Virtex-4;
- Virtex-5.
Включение поддержки новых семейств кристаллов FPGA в CORE Generator осуществляется с помощью специальных пакетов дополнения и обновления.
Ядра, создаваемые генератором параметризированных модулей, можно разделить на два вида. Первый вид — ядра, на использование которых не накладывается никаких ограничений. В состав этой группы входит большинство параметризированных модулей, формируемых средствами CORE Generator, которые, как правило, предназначены для реализации базовых функциональных узлов проектируемого устройства (компараторов, сумматоров, ОЗУ и т. д.). Ко второму виду относятся более сложные ядра системного уровня, которые могут применяться только при наличии соответствующей лицензии. Для ознакомления с возможностями и работой этих IP-ядер разработчик может получить бесплатную оценочную лицензию, которая дает право на ограниченное использование таких ядер. Соответствующую информацию о получении лицензионного кода можно найти на сайте компании по адресу www.xilinx.com/ipcenter/ip_license/ip_licensing.htm. Оценочная лицензия предоставляется в двух вариантах:
- лицензионный код для выполнения моделирования работы ядра в составе разрабатываемого устройства (Simulation Only license);
- лицензионный код, позволяющий выполнять все этапы проектирования устройства с применением ядра от разработки нового проекта до загрузки конфигурационной последовательности в кристалл FPGA (Full System Hardware Evaluation license).
Второй вариант оценочной лицензии позволяет выполнить аппаратную реализацию проектируемого устройства, которая сохраняет работоспособность только в течение ограниченного интервала времени. Полноценное использование таких IP-ядер возможно только при наличии полной лицензии (Full license).
По функциональному признаку все параметризированные модули, предоставляемые средствами CORE Generator как свободно, так и на лицензионной основе, распределяются по следующим категориям:
- базовые элементы цифровых устройств (счетчики, компараторы, дешифраторы, мультиплексоры, регистры и т. д.);
- ядра, применяемые в автомобильной электронике;
- ядра, используемые в телекоммуникационных и вычислительных системах;
- модули устройств цифровой обработки сигналов;
- модули, выполняемые на базе специализированных ресурсов ПЛИС FPGA фирмы Xilinx;
- ядра, предназначенные для реализации математических функций;
- элементы запоминающих устройств;
- стандартные шинные интерфейсы.
Некоторые параметризированные модули могут быть отнесены сразу к двум категориям (например, компараторы и ОЗУ).
Генератор параметризированных модулей CORE Generator может использоваться как автономно, так и в среде управляющей оболочки САПР серии Xilinx ISE Навигатора проекта (Project Navigator). Прежде чем приступить к изучению методики работы с генератором параметризированных модулей в автономном режиме, рассмотрим элементы пользовательского интерфейса средств CORE Generator.
Пользовательский интерфейс генератора параметризированных модулей CORE Generator, функционирующего в автономном режиме
Подробная структура основного окна генератора параметризированных модулей CORE Generator, функционирующего в автономном режиме, показана на рис. 1. Она содержит следующие элементы:
- заголовок окна (Title Bar);
- главное меню (Menu Bar);
- оперативную панель управления (Toolbar);
- встроенное окно выбора IP-ядер (IP Selection Window);
- встроенное окно информации о выбранном IP-ядре (Information Window);
- встроенное окно консольных сообщений (Transcript Window);
- строку состояния (Status bar).
В заголовке основного окна генератора параметризированных модулей отображается полное имя файла проекта CORE Generator, которое включает путь доступа к нему.
Главное меню предоставляет доступ ко всем группам команд, необходимых для создания и открытия проектов, выбора требуемых ядер, установки их параметров и генерации соответствующего HDL-кода. Каждый пункт главного меню открывает подменю, в котором находится соответствующая группа команд. Всплывающее меню File содержит команды создания, открытия, сохранения и закрытия проектов. Кроме того, в эту группу включены команды настройки конфигурации средств CORE Generator и завершения работы с генератором параметризированных модулей. Пункт Project главного меню открывает диалоговую панель выбора и установки параметров текущего проекта. Всплывающее меню IP включает в себя команды, позволяющие выполнить настройку выбранного параметрического модуля в соответствии с архитектурой разрабатываемой системы, открыть справочные данные этого модуля, получить информацию о его версии и наличии лицензионных прав для использования данного ядра. Во всплывающем меню Tools представлены команды активизации программных средств, используемых совместно с генератором параметризированных модулей (в частности, утилиты Memory Editor) и утилиты автоматизированного обновления и дополнения WebUpdate. Всплывающее меню Help предоставляет команды, открывающие доступ к документации САПР серии Xilinx ISE и справочной системе ее отдельных компонентов, в том числе и генератора параметризированных модулей. В этом же меню содержатся команды подключения к различным службам веб-сервера фирмы Xilinx, в том числе к службам сервиса и поддержки (если используемый компьютер имеет выход в Интернет).
Оперативная панель управления содержит кнопки быстрого доступа, которые дублируют наиболее часто используемые команды меню. В этой же панели находится поле выбора отображаемых версий параметризированных модулей, список которых приводится во встроенном окне выбора IP-ядер. Пользователь может выбрать отображение в списке только последних версий параметризированных модулей или режим показа всех вариантов ядер, ключая устаревшие.
Встроенное окно выбора IP-ядер содержит списки параметризированных модулей, предназначенных для конфигурирования в соответствии с требованиями разработчика, а также список уже сформированных пользователем ядер. Данное встроенное окно имеет три страницы, снабженные закладками: View by Function, View by Name, Generated IP. На каждой из этих страниц в форме таблицы отображается список соответствующих IP-ядер. На странице View by Function, вид которой показан на рис. 2, представлен список параметризированных модулей, сгруппированных по функциональному признаку.
В первой колонке (Function) таблицы, приведенной на этой странице, в форме иерархической структуры перечислены все функциональные группы параметризированных модулей, предоставляемых средствами CORE Generator. Для перехода от сжатого формата к подробному необходимо последовательно развернуть каждый узел структуры, помеченный знаком «+», щелкнув на нем левой кнопкой мыши. При этом открывается список всех подгрупп, входящих в состав соответствующей функциональной группы. При раскрытии каждого узла следующего уровня иерархии в этой же колонке отображается список идентификаторов параметризированных модулей, относящихся к данной подгруппе. Имена модулей, которые не поддерживаются выбранным в проекте семейством ПЛИС, отображаются серым цветом. Повторный щелчок левой кнопкой мыши приводит узел иерархической структуры, обозначенный знаком «–», в исходное состояние. Вторая колонка рассматриваемой таблицы с заголовком Version содержит информацию о версии каждого параметризированного модуля, отображаемого в таблице. В третьей колонке (License) приводятся сведения о наличии лицензии для применения соответствующего ядра (только для модулей, распространяемых на лицензионной основе). Информация в этой колонке представлена в виде пиктограммы с изображением замка
, которая указывает на необходимость получения лицензии для выбранного ядра. Отсутствие пиктограммы в колонке License говорит о том, что данный параметризированный модуль может использоваться без лицензионного кода. Последняя колонка (Status) в рассматриваемой таблице сообщает о статусе выбранного ядра. Наличие пиктограммы
в этой колонке указывает на то, что соответствующая версия параметризированного модуля является устаревшей.
На странице View by Name, вид которой представлен на рис. 3, параметризированные модули перечисляются в алфавитном порядке. В первой колонке (IP Name) таблицы, которая изображена на этой странице, приведен список идентификаторов IP-ядер. Остальные колонки данной таблицы (License, Version, Status) содержат ту же информацию, что и аналогичные столбцы в таблице, представленной на странице View by Function встроенного окна выбора IP-ядер. В верхней части страницы View by Name находится поле быстрого поиска параметризированного модуля по его названию Search.
Страница Generated IP содержит информацию о ядрах, которые сформированы пользователем с требуемыми параметрами в рамках текущего проекта. Вид этой страницы показан на рис. 4.
В первой колонке (Component Name) таблицы, приведенной на странице Generated IP, указываются названия ядер, сгенерированных в составе данного проекта. Вторая колонка с заголовком IP Name содержит список идентификаторов соответствующих параметризированных модулей, на основе которых формировались ядра, перечисленные в первой колонке. В третьей колонке (Version) приводятся номера версий использованных модулей. Последняя колонка с заголовком Date Modified информирует о дате и времени последних изменений сгенерированных ядер.
Встроенное окно информирования о выбранном параметризированном модуле представляет собой эффективный механизм управления созданием, открытием и закрытием проектов, а также всем ходом генерации IP-ядра. Содержимое этого окна является контекстно-зависимым. Сразу после активизации генератора параметризированных ядер в данном окне представлены в форме ссылок команды создания нового проекта и открытия существующих проектов, а также интерактивный список последних проектов, с которыми осуществлялась работа в среде CORE Generator в предыдущих сеансах. Структура встроенного окна информирования о выбранном параметризированном модуле при отсутствии открытого проекта показана на рис. 1. Когда проект открыт и во встроенном окне выбора IP-ядер указан конкретный тип параметризированного модуля, в окне информации отображаются краткие сведения о его функциональных возможностях, параметрах и поддерживаемых семействах ПЛИС. Здесь же находятся ссылки, которые дублируют команды всплывающего меню IP, позволяющие открыть для выбранного типа модуля файл документации в формате PDF, просмотреть сведения о его версии и запустить «мастер» настройки параметров генерируемого ядра. Вид встроенного окна информации, содержащего сведения о выбранном параметризированном модуле, показан на рис. 5.
Окно консольных сообщений содержит три страницы с закладками Console, Warnings и Errors. Страница Console является основной (используется более часто в работе с проектом) и предназначена для вывода информационных сообщений о запуске и ходе выполнения процедур генерации ядер. На страницах Warnings и Errors отображаются предупреждения и сообщения об ошибках, зафиксированные в текущем сеансе работы с генератором параметризированных модулей.
В строке состояния в краткой форме отображается текущий режим функционирования средств CORE Generator, информация о параметрах открытого проекта, а также индикатор выполнения процесса генерации ядер.
Создание нового проекта для генератора параметризированных модулей CORE Generator в автономном режиме
Для запуска генератора параметризированных модулей CORE Generator в автономном режиме нужно в меню, открываемом нажатием кнопки Пуск (Start) операционной системы Windows, выделить пункт Программы (Programs), после чего выбрать программную группу Xilinx ISE. В этой группе следует открыть раздел Accessories и выбрать строку CORE Generator. После этого на экране монитора появляется основное окно средств CORE Generator, вид которого показан на рис. 1. Для создания нового проекта следует во встроенном окне информации о выбранном параметризированном модуле активизировать ссылку Create new project, которая дублирует команду New Project из всплывающего меню File, или воспользоваться кнопкой быстрого доступа
, расположенной на оперативной панели управления. При этом на экран выводится диалоговая панель New Project, вид которой показан на рис. 6.
В этой панели необходимо указать название нового проекта и место его расположения на диске. Прежде всего, следует определить диск и папку, в которой будет создан рабочий каталог формируемого проекта CORE Generator. Целесообразно хранить все проекты в специально созданном для этих целей каталоге, например, C:Project. Можно использовать для этого папку, предназначенную для хранения рабочих каталогов проектов САПР серии Xilinx ISE. Каталог, в котором находятся все проекты пользователя, должен располагаться вне раздела, содержащего средства проектирования серии Xilinx ISE, чтобы при обновлении версии пакета САПР он не был удален. Место расположения проекта генератора параметризированных ядер на диске указывается в поле редактирования Location (рис. 6). По умолчанию в этом поле редактирования предлагаются диск и каталог, которые использовались в предыдущем проекте. Изменить место расположения создаваемого проекта можно двумя способами: используя стандартную панель навигации по дискам компьютера или клавиатуру. Для выбора каталога, который уже существует, удобнее воспользоваться первым способом, нажав кнопку Browse, расположенную справа от поля редактирования Location. В открывшейся диалоговой панели навигации следует с помощью мыши выбрать требуемый диск и каталог, а затем подтвердить сделанный выбор нажатием кнопки OK. После закрытия панели навигации выбранные параметры автоматически отображаются в поле редактирования Location. При выборе второго метода следует активизировать поле редактирования Location (поместив на него курсор и щелкнув левой кнопкой мыши), после чего ввести с клавиатуры имя диска и каталога.
Чтобы задать имя создаваемого проекта, необходимо активизировать поле редактирования Name (рис. 6), после чего ввести с клавиатуры соответствующее название. В названии проекта можно использовать только строчные буквы латинского алфавита и цифры, а также символ подчеркивания. Рекомендуется задавать мнемонические имена проектов, чтобы впоследствии было удобнее ориентироваться при поиске требуемого проекта. Введенное название проекта автоматически добавляется в поле Location, определяя тем самым полное название рабочего каталога проекта. Для подтверждения указанных названий создаваемого проекта и его рабочего каталога следует нажать кнопку OK, расположенную в нижней части диалоговой панели New Project (рис. 6). Так как указанный рабочий каталог отсутствует на диске, то на экран монитора выводится диалоговая панель, содержащая соответствующее предупреждение и запрос автоматического создания новой папки. Вид этой диалоговой панели показан на рис. 7.
Для продолжения процесса создания нового проекта необходимо утвердительно ответить на этот запрос, воспользовавшись кнопкой OK, находящейся в нижней части панели запроса (рис. 7). После этого на экран выводится диалоговая панель определения параметров создаваемого проекта, вид которой редставлен на рис. 8.
Эта диалоговая панель содержит три страницы с вкладками Part, Generation, Advanced. Страница Part предназначена для определения следующих параметров нового проекта:
- семейство ПЛИС, на базе которого будут реализованы формируемые ядра;
- тип кристалла, выбираемого для реализации генерируемых ядер;
- тип корпуса ПЛИС, выбранной для реализации формируемых ядер;
- категория быстродействия используемого кристалла.
Для определения семейства ПЛИС, на базе которого проектируется система, включающая формируемые ядра, следует воспользоваться полем выбора параметра Family (рис. 8). При нажатии на кнопку управления разворачивающимся списком, расположенную в правой части этого поля, на экране отображается список семейств ПЛИС, которые поддерживаются используемой версией средств CORE Generator. В поле выбора типа кристалла для реализации генерируемых ядер Device автоматически отображается тип ПЛИС, установленный по умолчанию для выбранного семейства. Для его изменения необходимо в разворачивающемся списке Device выделить строку, содержащую требуемый тип кристалла. Тип корпуса кристалла, выбранного для реализации формируемых ядер, указывается в поле со списком Package. Для определения категории быстродействия выбранного кристалла предназначено поле Speed Grade.
Страница Generation позволяет указать значения параметров, которые определяют типы файлов, формируемых в результате процесса генерации ядер. Вид этой страницы приведен на рис. 9.
Состав комплекта файлов, создаваемых генератором параметризированных модулей CORE Generator, зависит от следующих параметров:
- способа описания проектируемых устройств или систем, в которых предполагается применение генерируемых ядер (схемотехнического или с помощью языков описания аппаратуры высокого уровня HDL);
- типа (производителя) системы автоматизированного проектирования, используемой для подготовки описания разрабатываемых устройств или систем, в составе которых планируется использование генерируемых ядер;
- метода моделирования;
- предпочтительного формата файлов, предназначенных для размещения и трассировки проекта в кристалл.
Типы файлов, входящих в этот комплект, могут быть указаны явно или косвенно с помощью соответствующих значений параметров, перечисленных выше. Для явного определения состава результирующих файлов нужно зафиксировать в нажатом состоянии кнопку Custom Output Products, находящуюся во встроенной панели Flow, после чего в соответствующих встроенных панелях страницы Generation выбрать требуемые типы файлов (рис. 9). Чтобы воспользоваться более наглядным косвенным способом, который предлагается по умолчанию, следует переключить в нажатое состояние кнопку Design Entry. После этого нужно указать способ описания разрабатываемых устройств или систем, для которых предназначены формируемые в создаваемом проекте ядра, с помощью поля выбора, расположенного справа от кнопки Design Entry. Список, который открывается при нажатии кнопки, расположенной в правой части этого поля выбора, содержит три варианта: Schematic, VHDL и Verilog. Если генерируемые ядра предназначены для применения в составе схемотехнического описания, необходимо выбрать вариант Schematic. При использовании языков высокого уровня VHDL или Verilog для описания проектируемых устройств или систем, в состав которых должны быть включены создаваемые ядра, следует в качестве значения данного параметра установить вариант VHDL или Verilog соответственно.
Чтобы указать тип (производителя) САПР, в рамках которой создаются исходные описания проектируемых устройств или систем, включающих формируемые в данном проекте ядра, нужно воспользоваться полем выбора Vendor, которое находится во встроенной панели Flow Settings страницы Generation. В списке этого поля выбора представлены следующие варианты: Cadence, ISE, Innoveda, Mentor Graphics (Schematic), Other. В этом списке следует выбрать вариант, соответствующий используемой системе проектирования. Если применяемая САПР не соответствует ни одному из первых четырех вариантов, то нужно указать значение Other. В этом случае также необходимо определить формат представления шин в составе списка соединений с помощью поля выбора Netlist Bus Format.
Далее нужно указать предпочтительный формат файлов, используемых в процессе размещения и трассировки проекта в кристалл, с помощью двух кнопок с зависимой фиксацией, которые расположены во встроенной панели Preferred Implementation Files. Если в нажатом состоянии зафиксирована кнопка EDIF Netlist, то средства CORE Generator для каждого ядра создаваемого проекта будут формировать файл в формате EDIF (Electronic Data Interchange Format). При переключении в нажатое состояние кнопки NGC File генератор параметризированных модулей для каждого ядра проекта будет вырабатывать файл в формате NGC. Данный тип файлов имеет двоичный формат, поэтому обеспечивает более высокую скорость выполнения процессов размещения и трассировки средствами пакета САПР серии Xilinx ISE.
Для определения метода моделирования и формирования соответствующих моделей создаваемых ядер следует воспользоваться тремя кнопками с зависимой фиксацией, находящимися во встроенной панели Simulation Files. Кнопка Behavioral предназначена для включения режима генерации файлов, необходимых для выполнения поведенческого моделирования ядер данного проекта. При установке в нажатое состояние кнопки Structural для формируемых ядер будут создаваться файлы, предназначенные для структурного моделирования. Индикаторы состояния VHDL и Verilog позволяют выбрать язык описания HDL, используемый при генерации файлов моделирования. Если моделирование разрабатываемых устройств или систем, включающих формируемые ядра, не планируется, то нужно переключить в нажатое состояние кнопку None.
Страница Advanced (рис. 10) используется для установки значений дополнительных параметров проекта. Все параметры, представленные на этой странице, могут принимать одно из двух значений: «включено» или «выключено», которые определяются с помощью соответствующих индикаторов состояния. По умолчанию для данных параметров установлено значение «выключено».
Параметр Create Netlist Wrapper with IO Pads позволяет дополнить описание формируемого ядра входными и выходными буферными элементами. Если для этого параметра установлено значение «включено», то генератор параметризированных модулей создает дополнительный файл, в котором описывается подключение входных-выходных буферных элементов к внешним портам ядра. При этом ко входным портам подключаются входные буферные элементы IBUF, к выходным — выходные OBUF, к двунаправленным — входные-выходные буферные элементы IOBUF. Входные порты ядра, используемые для подачи тактовых сигналов, сопрягаются с глобальными буферными элементами BUFG (IBUFG). Значение «включено» для параметра Create Netlist Wrapper with IO Pads целесообразно задавать при автономной реализации формируемого ядра.
Параметр Remove Placement Attributes используется для удаления атрибутов топологических ограничений из формируемого списка соединений в формате EDIF. При включенном значении данного параметра все атрибуты RLOC и HU_SET, встроенные в состав описания выбранного параметризированного модуля, исключаются из выходного списка соединений, записываемого в формате EDIF.
Для параметра Create NDF Synthesis Optimization Interface for NGC COREs значение «включено» следует устанавливать при использовании средств синтеза «третьих» фирм (например, LeonardoSpectrum фирмы Mentor Graphics). При этом средствами CORE Generator для каждого файла ядра в формате NGC дополнительно создается файл в формате NDF.
Значение параметра Formal Verification управляет генерацией модели ядра на языке Verilog. При включенном значении этого параметра в процессе формирования ядра будет создан файл модели с именем <название_параметризированного>_модуля_for.v.
В нижней части страницы Advanced также находится поле редактирования Temporary Directory. В нем указывается полное название каталога, предназначенного для хранения временных файлов, которые создаются в процессе работы генератора параметризированных модулей. Изменить идентификатор, предлагаемый по умолчанию, можно с помощью клавиатуры после активизации этого поля редактирования, либо используя кнопку Browse (рис. 10), которая открывает диалоговую панель навигации по дискам компьютера.
Процесс установки значений параметров создаваемого проекта завершается нажатием кнопки OK, расположенной в нижней части рассмотренной диалоговой панели (рис. 8–10), после чего автоматически начинается формирование проекта. При успешном создании нового проекта во встроенном окне консольных сообщений отображается соответствующая информация, а во встроенном окне выбора IP-ядер появляется список функциональных групп параметризированных модулей (рис. 11).
Окончание следует
Литература
- Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx. Справочное пособие. М.: Горячая линия — Телеком, 2004.
- Зотов В. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия — Телеком, 2006.
- Зотов В. Создание проекта встраиваемой системы на основе микропроцессорного ядра семейства PicoBlaze // Компоненты и технологии. 2005. № 8–9.
- Зотов В. Реализация проекта встраиваемой системы на основе микропроцессорного ядра семейства PicoBlaze // Компоненты и технологии. 2006. № 1.
- Зотов В. Программирование конфигурационной памяти встраиваемой системы, реализуемой на основе микропроцессорного ядра семейства PicoBlaze в ПЛИС фирмы Xilinx // Компоненты и технологии. 2006. № 2.
- Зотов В. Разработка и отладка программного обеспечения встраиваемых восьмиразрядных микропроцессорных систем, реализуемых на основе ПЛИС фирмы Xilinx, в среде pBlaze IDE // Компоненты и технологии. 2006. № 6.
- Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия — Телеком, 2003.