Постановка задачи
В прошлой серии статей, посвященных программируемой логике Intel PSG (Altera), рассказывалось как создать простую цифровую схему на базе ПЛИС:
ПЛИС Altera. Часть 1: установка и настройка среды разработки
ПЛИС Altera. Часть 2: проектирование цифровой схемы
ПЛИС Altera. Часть 3: первая компиляция проекта
ПЛИС Altera. Часть 4: доработка схемы и плата CTRL-CPLD-EPM570
ПЛИС Altera. Часть 5: Quartus Pin Planner
ПЛИС Altera. Часть 6: сборка схемы и загрузка конфигурации
В качестве примера была спроектирована схема из трех базовых логических элементов: «И», «ИЛИ» и «НЕ». Эти элементы работали абсолютно независимо друг от друга, и схема в целом не имела какой‑либо практической ценности. Как создать что‑то более полезное?
Задача
Для начала необходимо определиться с функционалом: какую задачу будет решать новая схема?
Предлагаю спроектировать схему дешифратора для одноразрядного семисегментного цифрового индикатора. Эта схема будет преобразовывать четырехразрядное двоичное число в сигналы управления семисегментным индикатором.
Почему выбрано именно четырехразрядное число?
Один семисегментный индикатор можно использовать для отображения десятичного числа в диапазоне от нуля до девяти. Если взять двоичное число меньшей разрядности, например три бита, то с его помощью можно будет закодировать максимум 23 = 8 значений.
Так как отсчет мы будем вести от нуля, то максимальное десятичное число, которое можно закодировать с помощью трех бит, будет равно 7. Очевидно этого мало. А 24 позволяет закодировать 16 цифр, что даже больше чем требуется. На один семисегментный индикатор не возможно вывести число больше 9 и этот факт необходимо будет учесть при проектировании дешифратора.
Таким образом определен вход схемы — это четырехразрядный вход дешифратора. Определимся с числом выходов.
Семисегментный индикатор состоит из семи параллельно соединенных светодиодов. Каждый сегмент — это отдельный светодиод. Все диоды соединяются между собой либо положительным выводом, анодом, либо отрицательным — катодом. Внешний вид семисегментного индикатора PART-LED-7SEG-DIG-RED-075 представлен на рисунке ниже (иллюстрация позаимствована на shop.robotclass.ru).
Большинство индикаторов, выпускаемых в настоящее время, помимо сегментов используемых для отображения цифр снабжаются десятичной точкой, для разделения нескольких идущих подряд разрядов. Таким образом число светодиодов в таких индикаторах равняется восьми. Соответственно, для управления каждым из восьми светодиодов требуется отдельный выход. Поэтому число выходов проектируемой схемы будет равняться восьми.
Проектирование цифровых схем на ПЛИС Intel PSG (Altera) выполняется в фирменной IDE — Quartus II. Процесс скачивания, установки данной IDE и создания проекта описан в статье ПЛИС Altera. Часть 1: установка и настройка среды разработки.
Проектирование принципиальной схемы
Как уже говорилось выше, семисегментный индикатор представляет собой восемь (с учетом десятичной точки) соединенных параллельно светодиодов. В качестве примера ниже приведена схема из технического описания на индикатор Oasistek TOS-5161AMR-N (аналогичен PART-LED-7SEG-DIG-RED-075).
Каждый светодиод является отдельным сегментом индикатора. Для удобства отдельные светодиоды обозначают буквами латинского алфавита от A до G, плюс DP (Decimal Point – десятичная точка). Соответствующим образом обозначены сегменты на рисунке ниже.
Схема будет выводить на индикатор десятичные цифры. Для отображения каждой цифры требуется свой уникальный набор сегментов. Например: для вывода цифры 1 необходимо использовать только сегменты «B» и «C». Цифра 2 может быть отображена с помощью сегментов «A», «B», «G», «E» и «D». Цифра 3 — «A», «B», «G», «C», «D». И так далее. На иллюстрации ниже изображены наборы сегментов для отображения всех десятичных цифр. Под каждой из цифр приводится соответствующий ей четырехбитный двоичный код.
Таким образом выходам схемы можно присвоить следующие названия: Sa, Sb, Sc, Sd, Se, Sf, Sg и DP. Имена входов — I0, I1, I2, I3, где цифра указывает на номер разряда двоичного кода.
Для управления входами схемы предлагаю использовать четырехконтактный DIP-переключатель, который будет подавать напряжение логической единицы — 3,3В. Выходы схемы будут соединены с сегментным индикатором через токоограничительные резисторы на 82-680 Ом.
Для фиксации I0-I3 входов схемы на уровне логического ноля при разомкнутых контактах выключателя необходима слабая подтяжка входов к земле через резисторы на 10-47 кОм.
Принципиальная схема устройства приводится на рисунке ниже.
Здесь CTRL-CPLD-EPM570 — отладочная плата на базе Altera (Intel PSG) MAX II EPM570 (shop.robotclass.ru, код 1072). Она подробно описывается в статье ПЛИС Altera. Часть 4: доработка схемы и плата CTRL-CPLD-EPM570, в разделе «Плата CTRL-CPLD-EPM570».
Номера выводов платы на схеме соответствуют номерам выводов CTRL-CPLD-EPM570.
Напоминаю что часть выводов MAX II EPM570 на плате CTRL-CPLD-EPM570 имеет специальное назначение и поэтому не может использоваться в схеме управления сегментным индикатором. Выводы 90, 88, 64, 62, 43, 42, 41, 40, 39, 37, 25, 24, 23, 22, 14, 12, задействованные для подключения кнопки RESET, блока светодиодов, тактовых генераторов, питания ПЛИС, программатора, не используются в этом проекте.
Для устройства не обязательно использовать именно CTRL-CPLD-EPM570, можно использовать любую другую плату на любой серии ПЛИС Altera (Intel PSG), поддержка которой имеется в Quartus II тринадцатой версии. Например платы на базе ПЛИС MAX II, MAX V, Cyclone III, Cyclone IV и Cyclone V с любым числом логических элементов.
Для загрузки конфигурации в ПЛИС потребуется программатор. Подойдет недорогой клон Altera USB Blaster совместимый с драйверами оригинального программатора. Например изображенный на фотографии ниже.
Итого, для сборки устройства потребуются программатор, плата с ПЛИС, семисегментный индикатор, набор выключателей, резисторов и проводов.