Новини

Особенности работы в среде проектирования ПЛИС Altera Quartus II. Первый проект
Загрузить статью в PDF (2,7 Мб) >>
Игорь Коврига, технический консультант ООО «Виаком»
Имея опыт проведения семинаров по продукции и САПР Altera, получая многочисленные вопросы от их участников, я пришел к выводу, что для того, чтобы писать углубленные в определенную тематику статьи, необходимо начать цикл статей с основ по двум причинам. Первая — это помощь разработчикам, только присматривающимся к ПЛИС и осваивающим азы проектирования по многочисленной информации, размещенной на сайте производителя, из которой часто трудно собрать полную картину. Вторая — это помощь опытным в проектировании ПЛИС разработчикам, которым зачастую сложно разобраться с англоязычной документацией или попросту не хватает на это времени. Первая статья этого цикла посвещена САПРу Quartus II.
Введение
Одни из главных преимуществ ПЛИС — это их универсальность и гибкость. Универсальность заключается в том, что можно построить практически любые решения, выполненные на специализированных микросхемах, а также заменить (интегрировать) любой микроконтроллер или DSP-процессор, выиграв при этом в производительности, потому как FPGA матрицы, как правило, производятся на технических процессах высокой точности (на сегодняшний день — 28 нм). Гибкость заключается в том, что можно, к примеру, иметь одну настроенную плату с ПЛИС и затем адаптировать ее под различные приложения, не опасаясь, что как минимум 5–7 лет аппаратное решение устареет или ПЛИС снимут с производства (при условии применения новых семейств). Если вам необходимо такое решение, но вы ранее не работали с ПЛИС, рекомендую начать с освоения программной среды Quartus II, которой посвящена данная статья.
Quartus II (QII) — это система проектирования на ПЛИС Altera, подходящая для всех выпускаемых семейств микросхем Altera (лишь в последних версиях QII нет поддержки всех семейств одновременно из-за сложности выполнения универсального трассировщика). Это именно система, т. к. она включает весь необходимый набор утилит, подпрограмм и настроек для полного создания проекта (опять же, кроме последних версий QII, где временное моделирование перекладывается на оболочку Model Sim от компании Mentor Graphics).
Все подпрограммы и утилиты QII можно разделить на группы согласно этапам выполнения проекта на ПЛИС, которые выглядят следующим образом:
- Создание файла проекта
- Анализ и синтез проекта
- Трассировка связей и размещение проекта
- Временной анализ при помощи утилиты Time Quest. При необходимости создание базы данных для передачи в другую САПР для моделирования
- Программирование конфигурационной памяти
Рассмотрим каждый этап детальнее.
Создание файла проекта
Файл проекта можно создавать на аппаратных языках, графическом редакторе и редакторе конечных автоматов
.
Файлы с описанием проекта
Аппаратные языки, применимые для QII, общеизвестны — это VHDL (расширение файла *.vhd), Verilog (*.v) и System Verilog.
Вы вольны при создании проекта выбрать любой язык из перечисленных выше, который вам больше импонирует. Однако следует учесть, что почти все IP-ядра, поставляемые со средой QII, написаны на языке Verilog, а на языке System Verilog — самые современные ядра. При компиляции некоторых ядер, отличных от написаных на Verilog, могут появляться ошибки или замечания, которые затем необходимо устранить. Компания Altera пытается это исправить, но, тем не менее, в каждом релизе эти замечания присутствуют. В пользу Verilog говорит также и то, что его синтаксис очень похож на синтаксис языка С++, к которому обязательно придет проектирование на FPGA матрицах: как гов рится, "солнце руками не закроешь".
Текстовый редактор можно использовать любой, но тот, который встроен в QII, позволяет следующее:
- вносить групповые комментарии;
- возможность использования языковых шаблонов;
- синтаксическая подсветка;
- поиск по ключевому слову;
- возможность сворачивания громоздких функций;
- написание скриптов TСL.
Скриптам на языке TCL необходимо посвятить отдельный раздел, однако, поскольку статья предназначена в большей степени для начинающих разработчиков на ПЛИС, которые вряд ли будут прибегать сразу к написанию скриптов, отмечу лишь то, что для создания сложных проектов написание скриптов станет нормой из-за необходимости описания структуры на языке низкого уровня после описания сложного проекта на языках высокого уровня.
Графический редактор продолжает поддерживаться QII от версии к версии, т. к. существует большое количество инженеров, которым удобнее именно такой способ описания проекта. Но, зачастую, применяется смешанное проектирование с языковым описанием блоков и схемотехническим описанием взаимодействий этих блоков проекта. Эта возможность служит также для лучшей визуализации и доступности прочтения проекта.
Файл графического редактора имеет расширение *.bdf.
Утилита графического редакторара Mega Wizard Plug in manager предлагает широкий набор разнообразных IP-функций:
- арифметические (умножители, сумматоры, делители);
- память (RAM (1 и 2 портов), ROM (1 и 2-портовые), FIFO, сдвиговый регистр на базе ОЗУ);
- логические примитивы (и; или; или- не и т. д);
- функции ввода-вывода (буферы, а также ФАПЧи (фазовые автоподстройщики частоты));
А также широкий набор подписных (платных) функций:
- интерфейсы: ASI, ETHERNET, Hydertransport, SDI и т. д.;
- DSP (фильтры) преобразования Фурье;
- функции обработки видео.
Редактор памяти ROM. Очень удобная утилита для создания собственных табличных значений. Например, можно создать таблицу синусов (адрес — это аргумент функции, значение — это значение ячейки памяти) или смоделировать сигнал в оболочке Mathlab и полученные значения записать в таблицы памяти. Также такой редактор может пригодиться для записи устойчивых состояний при создании, например, модулятора. В одном таком проекте мне необходимо было каждые 8 (6, 7 — в зависимости от выбранного режима) тактов останавливать, а на следующем такте запускать группу счетчиков. Для этого необходимо было удвоение тактовой частоты, но не хватало ресурсов PLL в выбранной матрице, поэтому я просто записал все состояния счетчиков в память и считывал их по порядку.
Значения можно записывать как в двоичном, так и в шестнадцатиричном представлении. Записанные вами значения будут храниться в конфигурационной памяти или флеш-памяти, если речь идет о CPLD.
Редактор конечных автоматов (state machine) — единственный файл проекта, который не может находиться в верхнем уровне иерархии. Существует для создания автомата состояний с назначением условий перехода в графическом виде (графами) с возможностью последующего преобразования в HDL язык (любой) для возможности просмотра реализации вашего автомата.
Основное окно проекта кроме отображения самого проекта содержит Навигатор проекта, в котором описана иерархия файлов проекта и список используемых библиотек, символов и файлов, а также окно состояния компиляции (синтеза) проекта и окно сообщения ошибок и предупреждений:
Менеджер пакета Quartus II
Анализ и синтез
Синтез — это процесс создания проекта с учетом особенностей микросхемы (ОЗУ, DSP-блоков, логики) для просмотра использования ресурсов на раннем этапе. Реальное использование ресурсов матрицы будет видно только после компиляции. Цифры, показанные в синтезе, могут отличаться до 20–30 %.
Для того, чтобы оценить правильно-ли выполнена поведенческая модель вашего проекта после синтеза в Quartus II, можно просмотреть временные диаграммы без учета трассировочных особенностей, хотя можно задать и режим симуляции с привязкой ко времени. На этом этапе проектирования уже необходимо пользоваться установками (Settings) и назначениями (Assigments).
Установки (Settings) — это такие глобальные настройки, как:
- выбор микросхемы (рис. ниже), хотя он производится и при старте проекта;
- оптимизатор синтеза (по времени);
- простейшие установки фиттера (трассировщика);
- установки анализатора оценки потребляемой мощности.
Окно выбора ПЛИС
С помощью анализатора мощности можно получить приблизительное вычисление потребления мощности по результатам синтеза (с задачей тактовой частоты и параметра toggle rate, типа микросхемы, использования логических элементов).
Также существует отдельный калькулятор мощности в оболочке Excel для предварительной оценки ее потребления еще до выхода версии QII, поддерживающей эту функцию в новых семействах. Однако точность такого предварительного вычислении 50 % — называется эта утилита «Ранний оценщик мощности».
На этапе синтеза можно оптимизировать лист связей двумя способами:
1) получить после синтеза файл в гра- фическом редакторе RTL-Viewer, отредактировать его и снова отпра- вить на синтез
2) с помощью Gate-level оптимизации можно осуществлять временное выравнивание между регистрами внутри матрицы, к примеру, время прохождения сигнала между регист- рами R1 и Rn, равное 15 нс, выравнивается по соотношению 15/n.
Компиляция
В САПР QII существует два типа компиляции:
- глобальная, т. е. проект компилируется весь одновременно. Такая компиляция доступна в Веб-версии QII;
- инкрементальная, т. е.частичная (см. рис. ниже). Доступна только в лицензионной версии и Logic Lock.
Инкрементальная компиляция
Перед запуском компиляции проекта необходимо выполнить настройки (assigments).
Pin Planer - утилита, позволяющая назначать сигналы на физические выводы микросхемы. Их можно назначить как жестко привязанные так и перебрасываемые по определенным правилам (в пределах банка) для улучшения результатов трассировки.
Интерфейс утилиты Pin Planer
Тут-же назначаются группы связей, например это шина, которую необходимо выровнять (при этом в группе можно назначать невыровненными, к примеру, старшие разряды для улучшения результатов трассировки)
Выводы в Pin Planer разделяются формой и цветом для обозначения:
- разделения на банки;
- дифференциальных пар;
- выводов ФАПЧ;
- выводов питания и тех, которые не используются (серым цветом);
- назначенных и неназначенных выводов.
Назначать выводы можно перетаскиванием из нижнего окна списка сигналов. Практически всегда трассировку кристалла нужно согласовывать с трасировкой печатной платы (что-то получается в плате, но не получается в матрице, и наоборот). Поэтому для трассировки плат Альтера рекомендует пользоваться пакетом от компании Ментор-Графикс. Этот пакет работает с нет-листом, переданным от САПР QII. При этом значительно упрощается создание символа посадочного места корпуса, т. к. в Mentors Graphycs уже имеется распиновка ПЛИС Альтера.
Для установок трассирования все чаще применяют TCL-скрипты. TCL-скрипт на более низком уровне описывает конструкцию, которую вы выбираете для интерпретации функционального поведения, описанного на языке HDL.
Chip Planer — утилита, позволяющая просматривать топологию микросхемы и редактировать ее поле трассировки. Она применима в таких случаях:
- когда не устраивает работоспособность устройства;
- не использовались рекомендации при трассировке;
- неверное кодирование.
Прибегать к корректировке в Chip Planer рекомендуется лишь опытным инженерам, имеющим достаточный опыт работы с ПЛИС.
Временное моделирование
Временное моделирование производится с помощью прилагаемого (входящего в комплект пакета QII) программного продукта Model Sim от Mentors Graphycs, который поставляется в зависимости от вида лицензии — с ограничением общего размера моделируемого кода (Starter Edition) и без него (Altera Edition). Однако следует помнить, что ни одна из поставляемых вместе с QII версий Model Sim не поддерживает моделирование программ, написанных на 2-х языках одновременно (двуязычие). Такое возможно лишь при использовании версии Model Sim SE с соответствующей лицензией от Mentors Graphycs. При установке версии SE создавать и отлаживать проекты становится возможным непосредсвенно в самой среде Model Sim и лишь потом передавать их в QII для привязки к конкретному корпусу ПЛИС. Но об этом, как и об использовании утилиты Nativlink, поговорим в следующих статьях этого цикла.
В разрезе моделирования стоит также упомянуть Signal Tab. Эта утилита представляет собой внутренний цифровой анализатор. Она забирает ресурс памяти и логики в ПЛИС и записывает туда сигналы ее работы, которые потом отражаются в виде диаграмм, однако нельзя посмотреть тактовый сигнал.
Программирование конфигурационной памяти или флеш CPLD
Программирование проверенного в симуляторе проекта осуществляется тут же в QII при помощи утилиты Programmer
Утилита Programmer. Установка средств программирования ПЛИС
Перед началом программирования необходимо выбрать средство из предлагаемых, нажав кнопку Hardware Setup. Альтера предлагает различные инструменты для программирования: через USB-порт (USB-Blaster) и через порт Ethernet (Ethernet Blaster). Поддерживаемый ранее программатор через LPT-порт (ByteBlaster) сейчас снят с производства. Перед стартом прожига следует не забыть включить опцию Program/Configure, поставив галочку в соответствующей колонке.
На этом можно завершить краткий обзор работы в среде QII, хотя за ее пределами осталось множество деталей, зачастую оказывающихся очень важными, но перечислить их все невозможно в рамках одной статьи. В следующей статье этого цикла мы поговорим об общих подходах к системному проектированию на ПЛИС.
За более подробной информацией обращайтесь к официальному дистрибьютору компании Altera в Украине — ООО «Виаком »:
03061, г. Киев, пр. Отрадный, 95-с, тел./факс: (044) 507-02-02 (многоканальный)
http://www.biakom.com
