Схема в Quartus II

Для проектирования цифровой схемы на ПЛИС Intel PSG (Altera) используется фирменная IDE — Quartus II. Напоминаю что процесс скачивания, установки данной IDE, создания проекта описан в статье ПЛИС Altera. Часть 1: установка и настройка среды разработки.

Визуальное проектирование схемы в Quartus II описывается в статье ПЛИС Altera. Часть 2: проектирование цифровой схемы, в разделе «Визуальное проектирование схемы».

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

ПЛИС Altera КС Рис 8 Quartus scheme

Нумерация входов схемы идет по порядку сверху вниз от нуля до трех. Выходы схемы идут в алфавитном порядке сверху вниз, от Sa до Sg. Самый нижний выход — DP.

При проектировании цифровой схемы по описанию в форме логических функций логические операции в функциях заменяются соответствующими логическими вентилями. А именно, для получения инвертированного значения одного из входов схемы используется вентиль «not». Для получения результата по группе значений четырех входов в скобках используется четырехвходовой элемент «and4» или «or4». Далее, к значениям полученным в скобках применяется логическая операция «ИЛИ» или «И». На схеме им будут соответствовать логические вентили с числом входом равным числу групп значений входов: «or8» для Sa и Sb выходов, «or7» для Sd и Sg выходов, «and7» для выхода Sc, «or6» для Sf выхода, «or4» и «or2» для выходов Se и DP соответственно.

В библиотеке Quartus II есть четырех, шести и восьмивходовые «ИЛИ» и «И» элементы. Но нет элемента на семь входов. Решить эту проблему можно двумя способами:

  1. заменить требуемый семивходовой элемент каскадом из одного четырех, одного трех и одного двухвходового элементов: например для «ИЛИ» выражения «A1 ИЛИ A2 ИЛИ A3 ИЛИ А4 ИЛИ А5 ИЛИ А6 ИЛИ А7» и «(A1 ИЛИ A2 ИЛИ A3 ИЛИ А4) ИЛИ (А5 ИЛИ А6 ИЛИ А7)» тождественны;
  2. использовать восьмивходовой элемент, «лишний» вход которого будет соединен с логическим нулем или логической единицей чтобы исключить его влияние на результат.

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

Для фиксации входа логического элемента на уровне логического ноля или единицы в Quartus II предусмотрены специальные символы: «GND» и «VCC» соответственно.

ПЛИС Altera КС Рис 9 gnd and vcc symbols

Добавить их на схему можно с помощью инструмента «Symbol Tool» найдя поиском по имени или непосредственно в библиотеке «стандартные библиотеки Quartus»/primitives/other/. Пример, путь до элемента «GND»: «стандартные библиотеки Quartus»/primitives/other/gnd.

ПЛИС Altera КС Рис 10 symbol window

Рассмотрим пример подключения «ИЛИ» вентиля выхода Sd. Соединив один вход «or8» с логическим нулем можно спокойно соединять оставшиеся семь входов с выходами соответствующих «and4» вентилей. Так как «ИЛИ» принимает значение ИСТИНА когда хотя бы один из входов принимает значение ИСТИНА, а ЛОЖЬ только когда одновременно на всех входах ЛОЖЬ, то восьмой вход соединенный с «GND» на результат Sd влиять не будет.

Схема включения «ИЛИ» вентиля выхода Sd представлена на рисунке ниже.

ПЛИС Altera КС Рис 11 Sd or8 out

Для схемы выхода Sc также требуется семивходовой элемент, но не «ИЛИ», а «И» так как логическая функция Sc записана в конъюнктивной нормальной форме. Лишний вход «and8» здесь нужно будет соединить с логической единицей, так как «И» принимает истинное значение только когда на всех ее входах ИСТИНА. Если же один из входов будет соединен с «GND», то на выходе «and8» всегда будет ЛОЖЬ. Поэтому соединяем неиспользуемый вход с «VCC».

Схема включения «И» вентиля выхода Sc представлена на рисунке ниже.

ПЛИС Altera КС Рис 12 Sc and8 out

Обратите внимание что записи логических функций большинства выходов отличаются друг от друга небольшим числом групп входных значений объединенных операцией логического умножения — «И», коньюнкцией. Например записи функций выходов Sa и Sb отличаются только двумя коньюнкциями из восьми. Логические функции Sa и Sb приведены ниже. Отличающиеся коньюнкции выделены полужирным шрифтом.

Sa = ((НЕ I3) И (НЕ I2) И (НЕ I1) И (НЕ I0)) ИЛИ ((НЕ I3) И (НЕ I2) И I1 И (НЕ I0)) ИЛИ ((НЕ I3) И (НЕ I2) И I1 И I0) ИЛИ ((НЕ I3)И I2 И(НЕ I1) И I0) ИЛИ ((НЕ I3)И I2 И I1 И(НЕ I0)) ИЛИ ((НЕ I3) И I2 И I1 И I0) ИЛИ (I3 И (НЕ I2) И (НЕ I1) И (НЕ I0))ИЛИ (I3 И (НЕ I2) И (НЕ I1) И I0)

Sb = ((НЕ I3) И (НЕ I2) И (НЕ I1) И (НЕ I0)) ИЛИ ((НЕ I3)И (НЕ I2) И(НЕ I1) И I0) ИЛИ ((НЕ I3) И (НЕ I2) И I1 И (НЕ I0)) ИЛИ ((НЕ I3) И (НЕ I2) И I1 И I0) ИЛИ ((НЕ I3)И I2 И(НЕ I1) И(НЕ I0)) ИЛИ ((НЕ I3) И I2 И I1 И I0) ИЛИ (I3 И (НЕ I2) И (НЕ I1) И (НЕ I0)) ИЛИ (I3 И (НЕ I2) И (НЕ I1) И I0)

Эта особенность позволяет значительно упростить схему за счет переиспользования общих элементов разных выходов. Поэтому для Sb потребовалось только два дополнительных И вентиля вместо восьми.

Для уменьшения числа проводников и улучшения читаемости схемы был использован новый инструмент — шина («Orthogonal Bus Tool»). На панели «Block Editor» он десятый слева.

ПЛИС Altera КС Рис 13 Orthogonal Bus Tool

Шина позволяет передавать несколько сигналов одновременно соединяя между собой многоразрядные выводы устройств. Но используемые в схеме элементы не имеют многоразрядных выводов. Возникает вопрос: как подавать на шину и забирать с нее отдельные сигналы?

Для этого необходимо выполнить ряд действий:

  1. присвоить шине имя, в котором будет явно указана ее разрядность;
  2. соединить одноразрядный выход с шиной посредством «Orthogonal Node Tool» (располагается на панели слева от «Orthogonal Bus Tool»);
  3. присвоить одноразрядному сигналу имя совпадающее с именем шины, указав номер используемого разряда шины.

Для указания разрядности шины в ее имени используются квадратные скобки, внутри которых указывается диапазон номеров разрядов. Например «Input[3..0]». Нумерация разрядов идет по порядку, по убыванию или по возрастанию. Она может начинаться/завершаться нулем, единицей или другим числом. Следующие варианты нумерации для четырехразрядной шины также являются корректными:

Input[0..3]

Input[4..1]

Input[10..13]

Input[13..10]

После определения разрядности шины, для каждого одноразрядного сигнала подключаемого к ней необходимо в квадратных скобках указывать номер разряда из заданного диапазона. Например, если шине присвоено имя «Input[3..0]», то одноразрядный сигнал может иметь имя «Input[3]», «Input[2]», «Input[1]» или «Input[0]» но не «Input[5]».

На рисунке ниже показана часть схемы с подключенными к шине входами I0-I3 и логическими вентилями «НЕ», «И».

ПЛИС Altera КС Рис 14 Bus connections

Можно не выделять всю шину для присвоения ей имени. Достаточно поименовать один сегмент шины и Quartus II распространит это имя на остальные сегменты. Данное правило действует и для одноразрядных сигналов.

Обратите внимание что одноразрядные сигналы Sb_and_out_0 и Sb_and_out_1 не являются частью шины. Число в их имени не указывает на номер разряда, а просто является частью имени. Такие имена использованы для поддержания единообразия наименования сигналов на схеме.

Имя шине или одноразрядному сигналу присваивается на вкладке «General» окна «Bus Properties» или «Node Properties» соответственно. Внешний вид этих окон аналогичен. Ниже представлен вид окна «Bus Properties».

ПЛИС Altera КС Рис 15 Bus Properties

Данное окно вызывается с помощью пункта «Properties» в контекстном меню шины, одноразрядного сигнала. Это меню, в свою очередь, доступно по щелчку правой кнопки мыши на соответствующем элементе схемы.

При редактировании схемы обратите внимание что в Quartus II имеется недочет в работе копирования элементов: вставка скопированного элемента выполняется рядом с курсором мыши. Если курсор мыши не перемещать, то повторная вставка будет выполнена точно поверх уже вставленного элемента. Такая пара будет выглядеть как один единственный элемент. Защищать от наложения должно было автоматически устанавливаемое выделение на только что вставленный элемент. Так как при наличии на схеме хотя бы одного выделенного элемента вставка не работает. Но снять выделение можно кликом левой кнопки мыши не перемещая курсора. Поэтому, если при выполнении анализа и синтеза Quartus II сообщает о задублированных элементах, проверьте не является ли проблемный элемент стопкой однотипных элементов. Сделать это можно посредством выделения и перемещения такого элемента. Выделить один проблемный элемент из стопки можно кликом левой клавиши мыши или двойным кликом по строке сообщения с ошибкой в отчете о результатах анализа и синтеза.

Запуск Анализа и синтеза («Analysis & Synthesis»), проверка его результатов описывается в статье ПЛИС Altera. Часть 3: первая компиляция проекта.

После успешного выполнения анализа и синтеза схемы можно переходить к настройке выводов ПЛИС в «Pin Planner». Этот инструмент Quartus II используется для привязки спроектированной схемы к физическим выводам ПЛИС. Здесь же настраиваются электрические параметры выводов: напряжение ввода‑вывода и максимальный рабочий ток. Настройка выводов в «Pin Planner» описана в статье: ПЛИС Altera. Часть 5: Quartus Pin Planner.

Привязка входов и выходов схемы выполняется в соответствии с принципиальной схемой устройства на базе платы CTRL-CPLD-EPM570. Внешний вид окна «All Pins» после выполнения настройки всех выводов схемы представлен на рисунке ниже.

ПЛИС Altera КС Рис 16 Pin Planner all pins

Не забудьте включить режим «As input tri-stated with weak pull-up» в параметрах устройства для всех незадействованных выводов. Данная настройка описана в разделе «Параметры проекта «Device and Pin Options» статьи про «Pin Planner», ссылка на которою дана выше.

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


Изменено: