Для программирования коммутации ПЛИС и отладки логики FPGA-проекта компания Altium Ltd. разработала се-тладочных стендов NanoBoard, использование которых превращает программно-аппаратный комплекс Altium Designer в «инновационную станцию» (Altium Innovation Station), на которой может быть выполнен полный цикл разработки проекта ПЛИС, включая программирование тиража микросхем для установки их в печатные платы, подлежащие поставке заказчику.
На рынок последовательно поступали стенды NanoBoard NB1, NanoBoard NB2DSK01 и NanoBoard 3000 (рис. 1). По сути, каждая из моделей представляет собой специализированный компьютер с развитой периферией и средствами подключения отлаживаемой микросхемы к аппаратным средствам стенда.
«Сердцем» отладочного стенда является контроллер, осуществляющий связь исполняемого FPGA-проекта Altium Designer с «физической» микросхемой ПЛИС, установленной на стенде для программирования коммутации внутренних связей и отладки логики проекта. Протокол обмена данными Altium Designer с отладочным стендом NanoBoard, разработанный компанией Altium Ltd., называется NanoTalk, а контроллер стенда — NanoTalk Controller.
В моделях NanoBoard NB1 и NanoBoard NB2DSK01 отлаживаемая ПЛИС устанавливается на сменных «дочерних» платах (Daughter Board), а на самой материнской плате стенда располагаются только контроллер, управляющий процессом отладки и программирования коммутации ПЛИС, органы индикации, средства, имитирующие связь ПЛИС с ее внешним окружением в проектируемом функциональном узле и средства последовательного наращивания, обеспечивающие возможность использования сразу нескольких стендов NanoBoard в одной конфигурации.
В моделях семейства NanoBoard 3000 на материнской плате стенда смонтирована микросхема ПЛИС одного из трех производителей — компаний Xilinx (NanoBoard 3000XN), Altera (NanoBoard 3000AL) или Lattice (NanoBoard 3000LC), которая названа «пользовательской» ПЛИС (User FPGA) и может применяться в качестве одной из реализаций FPGA-проекта.
Далее мы постараемся рассказать о функциональных возможностях и технологии использования отладочного стенда NanoBoard 3000AL с предустановленной «пользовательской» ПЛИС семейства Cyclone III, EP3C40F780C8N компании Altera. При реализации проекта на ПЛИС другого типа предусмотрена возможность установить ее на материнской плате на сменной «периферийной» плате (Peripheral Board).
Связь стендов NanoBoard с ПК осуществляется через стандартный USB-порт по мультиплексированному каналу JTAG-интерфейса. По этому каналу в ПК и из ПК передается информация, которая служит для управления работой контроллера стенда (NanoTalk Channel), программирования внутренней коммутации пользовательской ПЛИС (Hard Devices Channel) и загрузки в пользовательскую ПЛИС программного приложения при проектировании микроконтроллеров или микро-ЭВМ (Soft Devices Channel). При подключении стенда NanoBoard к ПК с работающей программой Altium Designer автоматически активизируется драйвер, опознающий наличие и идентифицирующий версию NanoBoard и периферийной платы (если она подключена) и устанавливающий связь активного FPGA-проекта с ресурсами NanoBoard.
Для обнаружения и идентификации версии NanoBoard и периферийной платы на них устанавливаются ПЗУ (1-Wire Memory), в которые занесен 40-байтовый идентификационный код.
Доступ активного FPGA-проекта к ресурсам NanoBoard, в том числе — к пользовательской ПЛИС, осуществляется из оболочки Devices View в моде Live.
Для обеспечения доступа должна быть сформирована конфигурация проекта. Это, как уже отмечалось ранее, именованный список файлов привязки (Constraint files). Файлы привязки, описывающие ресурсы NanoBoard, как и конфигурация, могут быть сформированы вручную, однако Altium Designer предоставляет возможность упростить данную трудоемкую работу путем автоматического формирования конфигурации. Для этого нужно щелчком правой клавишей мыши на значке NanoBoard в панели Devices View активировать контекстное меню и указать в нем команду Configure FPGA Project (рис. 2). В открывшемся подменю следует выбрать один из списка загруженных проектов или указать команду New FPGA Project (Создать новый FPGA-проект).
При выборе имени существующего проекта программа находит файлы привязок (Constraint files), загруженные при инсталляции Altium Designer в директорию …LibraryFPGA и автоматически подключает их к проекту в соответствии с обнаруженным системой идентификационным кодом NanoBoard. Так, при обнаружении системой стенда NanoBoard 3000 с идентификационным кодом <ClassID> = NB3000AL.02 программа извлекает из директории файл NB3000AL.02.Constraint. При обнаружении отладочной периферийной платы PB30.01 программа дополнительно подключает к FPGA-проекту файл привязок PB30.01. Constraint.
Командой главного меню Project>Confi-guration Manager или View Configuration того же контекстного меню открывается диалог просмотра и редактирования конфигурации проекта (рис. 3).
При использовании отладочной периферийной платы программа автоматически формирует и включает в конфигурацию файл привязок, содержащий карту подключения периферийной платы к материнской плате NanoBoard 3000. Имя файла — NB3000AL_02_ BoardMapping. Constraint. Этот файл сохраняется в той же директории, что и файл проекта *.PrjFpg.
Для связи цепей схемного документа PCB-проекта с цепями логического ядра в схеме FPGA-проекта к этим цепям подключаются одноименные метки Port. Затем в файлах привязок (Constraint) назначается подключение этих цепей к контактам выбранной ПЛИС. При работе с отладочным стендом NanoBoard 3000 подключение внешних выводов «пользовательской» ПЛИС выполняется печатным монтажом на материнской плате, поэтому нет необходимости подключать к внешним связям схемы FPGA-проекта стандартные порты и назначать их привязку к выводам «пользовательской» ПЛИС. Вместо этого для имитации сигналов внешнего окружения ПЛИС в Altium Designer сформированы библиотеки специальных интерфейсных компонентов, которые должны быть включены в схемный документ FPGA-проекта. Эти компоненты, называемые в лексике Altium Designer порт-компонентами, размещены (для NanoBoard 3000) в библиотеке …LibraryFPGAFPGANB3000Port-Plugin.IntLib.
Такие интерфейсные компоненты обеспечивают автоматическое подключение ресурсов NanoBoard к входным/вы-ходным контактам пользовательской микросхемы ПЛИС и по присвоенному им по умолчанию параметру PortComponent True распознаются программой как внешние по отношению к FPGA-проекту.
Компоненты NexusJTAGConnector и NexusJTAGPort обеспечивают доступ Altium Designer к встроенным в «пользовательскую» ПЛИС программным приложениям и виртуальным инструментам отладки. Сигналы JTAG-интерфейса порождаются контроллером стенда и подводятся к четырем предопределенным контактам пользовательской ПЛИС.
Порт-компоненты автоматически конвертируются в стандартные метки Port при выполнении синтеза проекта, обеспечивая связность логического ядра проекта с цепями внешнего окружения ПЛИС при объединении FPGA- и PCB-проектов.
Рассмотрим стадии программирования ПЛИС на примере проекта генератора двоичной псевдослучайной последовательности (ПСП) длиной 8 бит (рис. 4).
Функциональная схема генератора ПСП построена на базе логических прототипов из библиотеки FPGA Generic.IntLib.
Для проверки правильности функционирования и демонстрации работы генератора ПСП на стенде NanoBoard 3000 ко входам логики и выходам регистра подключены следующие порткомпоненты из библиотеки FPGA NB3000 Port-Plugin.IntLib:
Чтобы мелькание светодиодов, подключенных к выходам разрядов регистра, воспринималось глазом, в схему введен делитель частоты U_Clock_Divider с коэффициентом деления 107 (частота импульсов на выходе CLK OUT составит 2 Гц). Делитель частоты может быть построен на библиотечных логических прототипах или в виде HDL-файла в конструкциях языка описания аппаратуры VHDL. В обоих случаях он должен быть преобразован командой меню Design>Create Symbol from Sheet or HDL в иерархический элемент и включается в дерево документов проекта (рис. 5) как файл с именем Clock_Divider_4. SchDoc или Clock_Divider.vhd.
После сохранения и компиляции документов проекта следует выполнить программирование ПЛИС в оболочке Devices View:
Процесс выполнения всех фаз обработки проекта сопровождается выводом сообщений в панель Messages. Более подробная информация о прохождении всех фаз обработки, включая сообщения САПР Vendor Tools (в нашем случае это программа Altera QUARTUS II), отображается в панели Output.
По окончании загрузки программы коммутации надпись Reset (Сброшено) под значком микросхемы ПЛИС в панели Devices View заменяется на Programmed (Запрограммировано), а на материнской панели NanoBoard загорается светодиод LED2 PGM (Programmed). Можно запускать генератор ПСП и проверять его работу.
Программа коммутации логики, занесенная в ПЛИС на стенде NanoBoard 3000, действует до тех пор, пока включено питание и после выключения питания теряется. Поэтому для повторного запуска проекта на стенде NanoBoard 3000 требуется повторная загрузка программы коммутации в оболочке Devices View.
Функции оболочки Devices View позволяют контролировать сигналы на внешних выводах ПЛИС во время ее работы на стенде NanoBoard. Контроль выполняется средствами JTAG-канала, доставляющего эти сигналы с работающей ПЛИС в среду Altium Designer. Для проведения такого контроля следует:
В результате в колонке Pin Number красными обозначениями динамически отображается состояние активности (уровень логической единицы) используемых выводов ПЛИС. Оно же воспроизводится подсветкой красного цвета на выводах, расположенных в правом поле панели логического символа и посадочного места микросхемы.
Для проверки прохождения логических сигналов по узлам внутренней логики ПЛИС могут использоваться виртуальные инструменты отладки. Логические прототипы инструментов отладки собраны в библиотеке …LibraryFPGAFPGA Instruments.IntLib. В терминологии Altium Designer они представляют собой Core-компоненты — результаты выполнения Core-проектов.
В панели частотомера отображается число перепадов тактового сигнала CLK на входе С регистра генератора ПСП.
Логический анализатор LAX — компонент библиотеки FPGA Instruments. IntLib (рис. 11), — как и рассмотренные ранее виртуальные инструменты отладки, представляет собой конфигурируемый Core-компонент, размещенный на избыточных ресурсах кристалла ПЛИС, и подключается при программировании коммутации к назначенным в его конфигурации сигнальным узлам логической схемы FPGA-проекта. Анализатор набирает заданное число выборок сигналов логики либо набирает выборки в течение заданного временного интервала, после чего может быть выполнена визуализация набранного массива в виде таблицы или в виде временных диаграмм сигналов.
В верхнем, неизменяемом поле схемного символа расположены четыре сигнальных вывода:
Нижние поля формируются при настройке конфигурации анализатора. Настройка конфигурации активируется командой Configure Uxx (LAX) контекстного меню, вызываемого щелчком правой клавишей мыши на схемном символе анализатора Uxx.
В поле Options (рис. 12) следует выбрать из выпадающего списка Number of Samples число выборок сигнала для накопления в памяти анализатора — 1K, 2К или 4К, если установлен флажок опции Use External Memory. Для накопления выборок активируется интерфейс с внешней памятью и разрядностью адресной шины до 20 разрядов.
В центральном поле диалогового окна, используя кнопки Add Signal Set (Добавить набор сигналов) и Add Signal Добавить сигнал), составим список узлов логической схемы (список сигналов), подлежащих контролю.
Сигналы могут быть сгруппированы в наборы (Signal Sets). При составлении списка программа автоматически, шагами, кратными 8, увеличивает число входных линий анализатора. Максимально возможное число входных линий — 64. Информация об этом, а также о соответствующем объеме встроенной памяти анализатора отображается в поле Info диалогового окна. В одном сеансе измерений программа отбирает выборки сигналов одного набора.
Для нашего примера образуем два набора сигналов:
Затем следует сохранить документы проекта, войти в оболочку Devices View и, как обычно, выполнить программирование ПЛИС. По окончании программирования в цепочке Soft Devices Chain появляется значок, обозначающий присутствие в конфигурации логического анализатора (рис. 13).
Двойным щелчком левой клавишей мыши на значке анализатора активизируем панель виртуальных инструментов с органами управления логическим анализатором (рис. 14).
Управление выполняется кнопками панели:
В нашем примере выбран способ внешнего управления набором выборки, поэтому кнопкой Arm анализатор приводится в готовность, а набор выборки начинается по сигналу пуска генератора ПСП от переключателя SW1 на панели NanoBoard 3000.
Отображение результатов в виде временных диаграмм в аналоговой (Analog) или цифровой форме (Digital) активируется щелчками левой клавишей мыши на кнопках Show Waves (Показать волны). Программа формирует файлы LAX_Uxx.LAXAn или LAX_ Uxx. LAXDig и строит графическое отображение данных в главном окне (рис. 16).
Если позволяют свободные ресурсы кристалла ПЛИС, к проекту может быть подключено несколько логических анализаторов. В этом случае все они включаются в цепочку Soft Devices Chain в оболочке Devices View, для каждого из них может быть активирована своя панель управления, и отбор выборок производится анализаторами независимо друг от друга.
В заключение отметим преимущества и недостатки рассмотренной конфигурации инновационной станции, объединяющей программный комплекс Altium Designer с ресурсами отладочного стенда NanoBoard 3000.
К преимуществам следует отнести наличие развитой периферии, реализованной на материнской плате отладочных стендов NanoBoard. Это позволяет разрабатывать и отлаживать сложные иерархические FPGA-проекты, включающие на нижнем уровне иерархии проекты ядер (Core Project), таких, например, как контроллеры интерфейса RS232, RS485 USB, Ethernet и других протоколов, контроллеры клавиатуры, дисплея, АЦП/ЦАП, цифрового ввода-вывода аудиосигнала и др.
Несомненным преимуществом заложенной в Altium Designer технологии является возможность возврата запрограммированной ПЛИС в PCB-проект благодаря функциям Мастера объединения FPGA to PCB Project Wizard, что позволяет выполнять сквозной проект радиоэлектронного функционального узла на печатной плате, объединяющий в своей иерархии PCB-проект, подчиненный ему один или несколько FPGA-проектов, вложенные в FPGA Core- и Embedded-проекты.
Вместе с тем следует отметить и ряд недостатков, ограничивающих сложность проектов, которые можно разработать в рассматриваемой среде:
Таким образом, несмотря на то что инновационная станция Atium предоставляет эффективную интегрированную среду разработки и отладки проектов функциональных узлов на ПЛИС, использование этой среды не отменяет и не подменяет собой разработку проектов в среде САПР ведущих производителей ПЛИС.