Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2010 №12

Программно-аппаратный модуль для разработки проектов на ПЛИС

Илюкин Олег


Компания Altium дополнила свое семейство макетных плат NanoBoard новой платой, обеспечивающей быструю разработку прототипов электронных устройств на базе Field-Programmable Gate Array (FPGA). Новая плата NanoBoard 3000 является программируемой средой разработки. Помимо аппаратных и программных средств, к плате относятся программные продукты (Intellectual Property, IP), не требующие приобретения отдельной лицензии, и специальная лицензия Soft Design на модуль программного проектирования Altium Designer. Таким образом, пользователь получает все необходимое для быстрой разработки прототипа на FPGA. Отпадает необходимость поиска в Интернете драйверов, периферийных функций и другого программного обеспечения, а также не нужно выполнять кропотливую работу по добавлению этих элементов к функционирующей конструкции.

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

Благодаря программно-аппаратному комплексу NanoBoard 3000 разработчики электронных устройств, даже не имея опыта работы, могут конструировать в FPGA сложные системы на основе программируемых процессоров. Для этого нет необходимости в подготовке в области программных языков VHDL или Verilog. Разработчики могут использовать уже существующие заготовки печатных плат и свои навыки в системном проектировании для конструирования, испытания и внедрения встраиваемых систем на базе FPGA. IP-библиотеки и интуитивные графические редакторы, являющиеся центральным элементом средства программного проектирования Altium Designer, облегчают добавление в систему процессоров, контроллеров памяти, периферийных блоков и программных стеков. У разработчиков есть все, что нужно для создания на базе FPGA из готовых компонентов встроенных систем нового поколения без написания HDL-кодов. Плата NanoBoard 3000 оснащена (на выбор) FPGA Xilinx Spartan 3AN, Altera Cyclone III, Lattice ECP2. У всех трех вариантов макетных плат матрица FPGA жестко задана.

В макетной плате NanoBoard 3000 реализованы следующие особенности архитектуры:

  • Программируемая аппаратная среда позволяет многократно менять конфигурацию системы без каких-либо дополнительных затрат времени и средств.
  • Реализована полная синхронизация с Altium Designer — САПР нового поколения компании Altium.
  • Поддерживается добавление периферийной платы производства Altium или собственной разработки, что обеспечивает гибкость системы.
  • Периферийная плата полностью распознается и конфигурируется.
  • Есть возможность обновлять встроенное ПО платы через стандартное USB-соединение, при этом не требуется ни параллельного порта, ни адаптера USB JTAG.

Эта система является синхронизированной, так как при проектировании устройства внутри оболочки Design Explorer разработчик решает сразу несколько задач, связанных в один проект:

  • программирование и реализация на ПЛИС;
  • разработка проекта на базе ПЛИС;
  • проектирование топологии платы;
  • доработка печатной платы до ее производства.

Универсальность NanoBoard достигается благодаря широчайшему спектру встроенных периферийных устройств, при этом поддерживается работа со многими распространенными интерфейсами: SVGA; RS-232; RS-485; PS/2; 10/100 Fast Ethernet; USB 2.0; S/PDIF; MIDI. Основная часть NanoBoard — это периферийная плата, которая содержит ту или иную ПЛИС, в которой, собственно, и реализуется созданный проект. К установленной ПЛИС подведены все периферийные устройства и разъемы интерфейсов. Благодаря использованию NanoBoard можно получить прототип устройства, при этом не возникает необходимости создавать физическую модель: проект, реализованный на ПЛИС, позволяет легко и быстро вносить изменения в прототип.

Пользователь описывает проектируемое устройство с помощью принципиальной схемы, в которой наряду с обычными цифровыми компонентами используются особые библиотечные элементы (IP-блоки), соответствующие требуемой периферии, которые подключаются к необходимым узлам принципиальной схемы. При этом для описания устройства можно использовать как стандартные цифровые элементы, которые представлены в обширных поставляемых библиотеках, так и встраиваемые VHDL-фрагменты. Аналогично используются и интерфейсы, которые также располагаются на принципиальной схеме, но в отличие от внешней периферии будут размещены внутри ПЛИС при синтезе проекта [1].

Поскольку проект макетируется на базе ПЛИС, возникает необходимость описать распределение ее выводов. Вся информация о распределении выводов ПЛИС описывается в constrain-файлах, которые являются составной частью проекта. При необходимости в одном проекте возможно использование нескольких constrain-файлов, разработчик разделяет между ними, например, описание выводов и требуемые ограничения задержки. Также в одном проекте можно использовать несколько конфигураций для реализации, каждая из которых будет ориентироваться на разные кристаллы и их использование. При необходимости такой файл можно импортировать соответственно из ISE, Quartus или ispLEVER.

При отладке любого устройства на ПЛИС к кристаллу должны подводиться тактирующие сигналы. Для реализации тактирования в NanoBoard предусмотрен синтезатор частот, который подсоединяется к узлам схемы. Его физическое подключение к кристаллу описано в constrain-файле и не требует от разработчика каких-либо действий. Пользователь может задать требуемую частоту синтезатора в диапазоне от 6 до 200 МГц.

Для более детального знакомства с основными этапами работы с NanoBoard создадим проект, в котором задействована USB-клавиатура, с помощью которой будет осуществляться управление светодиодами на передней панели NanoBoard с выводом на TFT-панель.

Создаем проект с самого начала: File –> New –> Project –> FPGA Project. После создания проекта его необходимо сохранить: Save Project As… (не забывайте периодически сохранять проект). Далее добавляем в дерево проекта документ OpenBuS (Add New to Project –> OpenBus System Document).

После создания файла в левой части окна открывается OpenBus Palette, в которой есть соединители, микропроцессоры, память и многочисленные периферийные устройства с кратким описанием каждого из элементов (рис. 1). Все устройства в этой панели уже построены на NanoBoard [2]. На данный момент возможность создавать собственные IP-блоки отсутствует, работать можно только с созданными IP-блоками и библиотечными элементами. Следует отметить, что работать с NanoBoard необходимо совместно с Altium Designer.



Рис. 1. Панель OpenBus

Далее с помощью готовых IP-блоков начинаем создавать макет будущего устройства. Для начала нужно выбрать микропроцессор. В данном случае выбираем TSK3000A с 32‑битной RISC-архитектурой [3]. Для реализации поставленной ранее задачи необходимы еще другие IP-блоки, такие как USB Interconnect для клавиатуры, LED Controller для подключения светодиодов, Terminal instrument и VGA 32‑bit ILI9320 для отображения на TFT-панели, после чего добавляем соединители — Interconnect. Отметим, что красный порт является доминирующим, а зеленый — подчиненным. Получаем часть схемы согласно рис. 2.



Рис. 2. Промежуточная схема из IP-блоков

Теперь для полноценного функционирования и работы необходимо наличие памяти. Для этого опять нужна панель OpenBus Palette. В разделе Memories выбираем SRAM Controller. Поскольку данную память будут использовать и другие устройства, то в схему надо добавить Shared Memory NB3000, при этом настройки памяти оставляем по умолчанию. Далее нужно добавить соединители Interconnect и Arbiter для определения приоритета обращения к памяти, после чего необходимо соединить все IP-блоки между собой (рис. 3).



Рис. 3. Готовая схема устройства из IP-блоков

Прежде чем перейти к следующей части проекта, нужно сохранить изменения. Следующим шагом будет перенос информации в файл создания принципиальной электрической схемы. Для этого создаем файл Schematic (Add New to Project –> Schematic). Открываем этот файл, щелкаем правой кнопкой мыши и кликнем Create Sheet Symbol From Sheet or HDL в подменю Sheet Actions. После чего выбираем созданную ранее схему и получаем преобразование файла OpenBus в SchDoc (рис. 4).



Рис. 4. Создание файла SchDoc

Теперь необходимо произвести то же самое, что и при создании OpenBus файла. Единственное отличие лишь в том, что надо использовать специализированную библиотеку FPGA NB3000 Port-Plugin.Intlib, в которой находятся все устройства, входящие в NanoBoard (рис. 5).



Рис. 5. Библиотека FPGA NB3000 Port-Plugin.Intlib

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



Рис. 6. Готовый к работе файл SchDoc

Последним этапом перед компиляцией проекта является настройка Device Stack (рис. 7). Используя команду Grow Stack Up, нужно произвести настройку памяти (USB_WB_SHARED_MEM_CT), USB-порта (USB_INTERCON_1), светодиодов (WB_LED_CTRL_1), TFT-панели (WB_ILI9320_1) и виртуального экрана (TERMINAL_1). Используя команду Link to Existing Stack, необходимо объединить USB_WB_SHARED_MEM_CT и USB_INTERCON_1. После того как корректная настройка проведена, можно переходить к последнему шагу — компиляции проекта.



Рис. 7. Окно настройки Device Stack

Для компиляции проекта необходимо перейти на вкладку Devices. При включении NanoBoard будет отображаться модель и версия программного обеспечения устройства. После этого требуется запустить поочередно каждую вкладку: Compile, Synthesize, Build, Program FPGA (рис. 8). Проект готов!



Рис. 8. Синтезирование проекта

После синтезирования проекта во всплывающем окне появится отчет о процентном заполнении кристалла.

Проверить правильность его работы можно с помощью USB-клавиатуры, осуществляя ввод соответствующих команд, отображенных на TFT-панели устройства.

В комплекте поставки приведено множество примеров комплексных устройств, в которых задействована вся периферия. Параллельно можно использовать несколько плат NanoBoard. Для этого используется разъем NanoTalk, контроллеры которого управляют маршрутизацией сигналов и обеспечивают непрерывную JTAG-связь нескольких плат. Это позволяет одновременно использовать ПЛИС разных производителей, а также проводить тестирование и отладку пользовательской платы. Можно проводить и ручную оптимизацию проектов. Благодаря специальным модульным корпусам (рис. 9) у разработчиков появилась возможность использовать NanoBoard 3000 в качестве готового устройства.



Рис. 9. Модульный корпус для NanoBoard 3000

Литература

  1. Тархов А. С. Отладка и макетирование цифровых устройств с помощью NanoBoard // EDA Express. 2004. № 10.
  2. Altium Designer Help. AR0144 Streamlining Processor-based FPGA Design with the OpenBus System.pdf
  3. Altium Designer Help. CR0140 FPGA Processor Resource Usage.pdf

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке