ПЛИС Altera. Часть 2: создание схемы в Quartus II

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

Во второй части мы продолжаем работу с тем же проектом и переходим к формированию конфигурации для микросхемы ПЛИС.

Полный цикл подготовки конфигурации в Quartus II удобно разделить на пять этапов:

  1. проектирование цифровой схемы;

  2. проверка схемы на наличие ошибок;

  3. привязка входов и выходов схемы к конкретным выводам ПЛИС;

  4. компиляция проекта и сборка двоичных файлов конфигурации;

  5. прошивка ПЛИС через программатор USB Blaster.

Эта часть статьи целиком посвящена первому пункту — визуальному проектированию цифровой схемы.

Шаг 1. Выбор способа проектирования цифровой схемы

Quartus II поддерживает два принципиально разных подхода к описанию схемы:

  • описание поведения схемы на одном из языков описания аппаратуры (Verilog HDL, SystemVerilog, VHDL);

  • схемотехническое (визуальное) проектирование.

При визуальном подходе схема собирается из стандартных или пользовательских блоков, которые соединяются между собой «проводами». Преимущества этого пути очевидны: он нагляден и не требует изучения нового языка, поэтому хорошо подходит для первых небольших схем. Минус тоже очевиден — с ростом сложности быстро увеличивается количество блоков и проводов, и ориентироваться в схеме становится всё труднее.

Примечание

Визуальное проектирование не исключает применение HDL. Часто эти подходы комбинируют: отдельные модули описывают на Verilog или VHDL, а верхнеуровневая схема (top-level design entity) собирает их в графическом представлении. Поэтому первые шаги в проектировании цифровых микросхем имеет смысл начинать именно с графики.

Шаг 2. Определение общего вида схемы

Проектирование любой схемы начинается с определения её общего вида:

  • какие у неё входы и выходы;

  • что она делает внутри (её функция).

Наша первая схема будет очень простой и состоять всего из трёх базовых логических элементов: «И», «ИЛИ», «НЕ». Кратко напомним их работу.

Примечание

Элемент «НЕ» имеет один вход и один выход. На выходе устанавливается логическая единица (высокое напряжение), когда на вход подаётся логический ноль (низкое напряжение), и наоборот. Элемент инвертирует входной сигнал.

Примечание

Элемент «ИЛИ» имеет два или более входов и один выход. На выходе устанавливается логическая единица, если хотя бы на одном из входов присутствует высокое напряжение. Если на всех входах низкое напряжение — на выходе тоже низкое.

Примечание

Элемент «И» также имеет два и более входов и один выход. Логическая единица на выходе появляется только тогда, когда высокое напряжение установлено на всех входах одновременно. Если хотя бы один вход в нуле — на выходе ноль.

Так как «И» и «ИЛИ» допускают любое число входов, нужно зафиксировать их количество. Для демонстрации принципа достаточно двухвходовых вариантов.

Все три элемента в нашей схеме работают независимо друг от друга, поэтому их входы и выходы можно просто сложить. Получается, что схема будет иметь три выхода (по одному на каждый элемент) и пять входов: два на «И», два на «ИЛИ» и один на «НЕ».

Управлять напряжением на входах удобно тактовыми кнопками, а наблюдать состояние выходов — светодиодами. В первом приближении схема выглядит так, как показано ниже.

Общий вид первой схемы — три логических элемента, кнопки и светодиоды

Шаг 3. Визуальное проектирование схемы

Подготовительная работа закончена — возвращаемся в Quartus II и наполняем проект.

Запустите Quartus II. После запуска появится знакомое стартовое окно.

Стартовое окно Quartus II со списком последних проектов

В центральной части окна, под надписью Recent Projects, находятся ссылки на недавно открывавшиеся проекты. Кликните по firstproject.qpf — проект откроется. Альтернативно можно использовать меню File → Open Project, перейти в папку проекта и выбрать тот же файл. Файл с расширением .qpf (quartus project file) — основной файл любого проекта Quartus II.

Для графического представления схемы в проект необходимо добавить новый файл с расширением .bdf (block diagram file). Создание нового файла выполняется через File → New или соответствующей кнопкой стандартной панели инструментов (под пунктом File главного меню). После выбора этого действия откроется небольшое окно со списком доступных типов файлов.

Окно выбора нового файла в Quartus II

Выберите пункт Block Diagram/Schematic File и нажмите OK. Будет создан пустой файл Block1.bdf, который автоматически откроется в окне Quartus II. Окно при этом примет следующий вид.

Окно Quartus II после создания нового файла Block1.bdf

Под вкладкой с именем файла Block1.bdf располагается панель инструментов Block Editor — на рисунке она отмечена стрелкой с цифрой 1. На ней собраны все основные инструменты для построения схемы. Центральная область окна (окружность с цифрой 2) предназначена для размещения элементов схемы.

Можно приступать к созданию схемы. В первую очередь добавим логические элементы. Для этого служит инструмент Symbol Tool, его пиктограмма напоминает двухвходовой логический элемент. На панели Block Editor он шестой слева.

Инструмент Symbol Tool на панели Block Editor

При вызове Symbol Tool открывается окно следующего вида.

Окно выбора символа — Symbol window

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

Слева доступно несколько способов выбора:

  • из иерархического списка библиотек;

  • по точному имени;

  • из заранее подготовленного файла.

В первом случае нужный элемент находится в иерархии, где элементы группируются по типам, типы — в группы более высокого уровня и так далее вплоть до набора библиотек. Двухвходовой элемент «И» лежит по пути «стандартные библиотеки Quartus»/primitives/logic/and2. Цифра в имени примитива обозначает количество входов.

Совет

Если вы знаете точное имя элемента, удобнее воспользоваться полем под надписью Name: — Quartus автоматически перейдёт к указанному примитиву. Поиск работает по полному совпадению, поэтому переход произойдёт по and2 или and3, но не по and.

Под полем имени находится группа параметров, определяющих режим вставки. Их доступность зависит от типа выбранного элемента. Для логического примитива доступен и по умолчанию включён параметр Repeat-insert mode — он позволяет вставить несколько одинаковых элементов подряд, не вызывая Symbol Tool заново. Выйти из режима повторной вставки можно клавишей Esc либо переключением на другой инструмент. Сейчас этот режим можно выключить — в нашей схеме каждого логического элемента всего по одному.

Выбрав элемент, нажмите OK и разместите первый символ в области построения схемы.

Совет

Окно выбора цифровых элементов также вызывается двойным щелчком левой кнопки мыши по пустой области построения схемы.

Если потребуется переместить уже размещённый элемент или отредактировать его свойства, понадобится инструмент Selection Tool — он второй на панели Block Editor и выглядит как курсор мыши.

Инструмент Selection Tool на панели Block Editor

Selection Tool активен, когда не выбран ни один другой инструмент. Возврат к нему происходит автоматически при нажатии Esc во время работы с другими инструментами.

Чтобы переместить элемент, выберите Selection Tool, кликните по элементу левой кнопкой мыши и, не отпуская кнопку, перетащите его на новое место. Для более точного позиционирования удобно использовать клавиши со стрелками на клавиатуре — в этом случае удерживать кнопку мыши не нужно.

После символа «И» добавьте в схему «ИЛИ» (or2) и «НЕ» (not). Сохраните полученную заготовку в файл firstproject.bdf в папке проекта.

Теперь к схеме нужно добавить входы и выходы, через которые она будет взаимодействовать с внешним миром. Для этого служит инструмент Pin Tool, изображённый как группа из трёх выводов. Он расположен справа от Symbol Tool.

Инструмент Pin Tool на панели Block Editor

Pin Tool предлагает три типа выводов:

  • Input — вход;

  • Output — выход;

  • Bidir — двунаправленный вывод (используется при работе с шинами данных, может быть как приёмником, так и источником).

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

Для нашей схемы понадобится пять входов — расположите их слева от логических элементов на некотором удалении. Аналогично разместите выходы справа.

Логические элементы и выводы схемы в файле .bdf

После добавления выводов имена pin_name… нужно заменить на осмысленные. Дважды щёлкните по текущему названию вывода и введите новый текст. Имя также можно задать через окно Pin Properties — его открывает двойной щелчок по самому выводу. В окне Pin Properties имя задаётся на вкладке General в поле Pin name(s):.

Окно Pin Properties для редактирования свойств вывода

Теперь нужно соединить входы и выходы схемы с соответствующими входами и выходами логических элементов. За связывание отвечает инструмент Orthogonal Node Tool. Он стоит через один от Pin Tool и выглядит как пара тонких линий, пересекающихся под прямым углом. Рядом расположен похожий Diagonal Node Tool, отличающийся тем, что позволяет рисовать проводники под произвольным углом, а не только под 90 градусов. На рисунке ниже инструменты обозначены номерами 1 и 2 соответственно.

Инструменты Orthogonal Node Tool и Diagonal Node Tool

Выберите Orthogonal Node Tool и переведите курсор в область построения схемы. Курсор примет вид перекрестья с маленькой иконкой выбранного инструмента рядом. Наведите центр перекрестья на конец линии, идущей от одного из входов, и нажмите левую кнопку мыши. Перемещайте курсор с зажатой кнопкой — за ним потянется тонкая линия проводника. Доведите курсор до линии входа логического элемента и отпустите кнопку. Связь между выводом схемы и входом логического элемента установлена.

Обратите внимание на инструмент Zoom Tool на панели Block Editor. Он выделен на рисунке ниже.

Инструмент Zoom Tool на панели Block Editor

Этот инструмент меняет масштаб отображения схемы. После его выбора масштаб увеличивается щелчком левой кнопки мыши и уменьшается — щелчком правой. Особенно удобно использовать его при редактировании связей.

Совет

Масштаб можно менять и колесом мыши при зажатой клавише Ctrl.

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

Завершённая схема в Quartus II

Сохраните построенную схему.

Типичные ошибки при создании связей

При прокладке проводников нередко возникают ошибки. Самые распространённые показаны на следующем рисунке.

Ошибки построения связей в Orthogonal Node Tool

В первом случае при соединении вывода input1_or с элементом OR2 образовалось пересечение проводников — жирная точка на рисунке. Здесь неудачно выбрано место начала отрисовки соединения: косой крест отмечает начало проводника, и видно, что оно лежит внутри границ вывода. На границе вывода среда автоматически создала пересечение двух проводников, а начало фактически осталось «висеть в воздухе». Ошибку можно исправить простым редактированием полученной связи.

Предупреждение

Чтобы отредактировать связь, дважды щёлкните по ней левой кнопкой мыши. Первый щелчок выделяет участок проводника между двумя ближайшими точками присоединения (в данном случае — между выводом элемента и точкой пересечения). Двойной щелчок выделяет всю цепь проводников между элементами. На выделенном проводнике появятся узловые точки — синие квадраты — доступные для редактирования.

Выделение проводника и узловые точки редактирования

Теперь нужно выбрать узловую точку, расположенную левее пересечения, и переместить её вправо к границе вывода input1_or. Начало проводника соединится с выводом, а лишнее пересечение Quartus автоматически удалит.

Во втором случае при соединении input2_or с элементом кнопка мыши была отпущена слишком рано, и связь оборвалась на полпути. Свободный конец проводника тоже отмечен косым крестом. Здесь возможны два решения: отредактировать получившуюся связь или достроить её. Достройка выполняется точно так же, как и обычная отрисовка новой связи: выберите Orthogonal Node Tool, наведите курсор на точку обрыва и проведите линию до логического элемента. Этот же приём подходит для построения сложных ломаных линий.

Примечание

На этом вторая часть руководства по работе с ПЛИС Altera (Intel) завершается. В следующей части мы рассмотрим, как преобразовать созданную схему в конфигурацию для ПЛИС и как загрузить эту конфигурацию в микросхему.