AFON // радиотехник affonya@mail.ru
← Радиотехника

Проекты на VHDL

Практические модули для программируемой логики с полным исходным кодом: задача, алгоритм, код с комментариями и разбор особенностей языка описания аппаратуры.

О разделе

Здесь собраны практические проекты на языке VHDL — для программируемой логики (ПЛИС) и заказных микросхем. Каждый проект содержит задачу, алгоритм, полный код с построчными комментариями и разбор ключевых мест. Весь код проверен компилятором GHDL: проходит анализ и элаборацию без ошибок.

Главное отличие от программирования микроконтроллеров: код VHDL описывает не последовательность команд, а аппаратуру, работающая параллельно. Поэтому проекты выстроены от простой комбинационной логики к синхронным схемам, автоматам и законченным устройствам. Теория языка — в статье VHDL — язык описания аппаратуры, устройство кристаллов — в статье ПЛИС: FPGA и CPLD.

План раздела

ПроектыТемаСтатус
1–5Основы языка и комбинационная логикаготово
6–10Регистры, счётчики и делителиготово
11–20Автоматы и интерфейсыготово
21–30Обработка сигналов и памятьготово
31–40Связь и внешние устройстваготово
41–50Законченные устройства на ПЛИСготово
VHD//

Проекты

50

Готовые модули с полным исходным кодом на VHDL. Раздел пополняется — всего запланировано 50 проектов.

VHD.01
Логические вентили

Entity, architecture и параллельные операторы

VHD.02
Мультиплексор 4 в 1

Оператор with-select и выбор входа

VHD.03
Дешифратор 3 в 8

Процесс, case и список чувствительности

VHD.04
D-триггер и регистр

Первая последовательностная схема, фронт такта

VHD.05
Двоичный счётчик

Арифметика с numeric_std и приведение типов

VHD.06
Сдвиговый регистр

Конкатенация, загрузка и выбор направления

VHD.07
Делитель частоты

Из 50 МГц в 1 Гц, параметр generic

VHD.08
Конечный автомат: светофор

Перечислимый тип и два процесса

VHD.09
Семисегментный дешифратор

Таблица кодов и общий анод

VHD.10
Широтно-импульсный модулятор

Параметризуемый ШИМ на счётчике

VHD.11
Подавление дребезга

Стабильный уровень вместо звенящего контакта

VHD.12
Детектор фронта

Импульс длиной ровно один такт

VHD.13
Синхронизатор доменов

Безопасный ввод асинхронного сигнала

VHD.14
Ждущий мультивибратор

Импульс заданной длительности

VHD.15
Кодовый замок

Автомат, проверяющий последовательность

VHD.16
Передатчик UART

Формирование кадра со старт- и стоп-битом

VHD.17
Приёмник UART

Выборка бита в середине интервала

VHD.18
Ведущий SPI

Полнодуплексный обмен байтами

VHD.19
Декодер энкодера

Направление вращения по двум каналам

VHD.20
Динамическая индикация

Четыре разряда на общей шине сегментов

VHD.21
Блочное ОЗУ

Двухпортовая память внутри кристалла

VHD.22
ПЗУ на таблице

Константный массив как память

VHD.23
Кольцевой буфер FIFO

Очередь между блоками схемы

VHD.24
Последовательный умножитель

Сдвиги и сложения вместо блока умножения

VHD.25
Арифметико-логическое устройство

Восемь операций и флаги

VHD.26
Скользящее среднее

Простейший цифровой фильтр

VHD.27
Генератор псевдослучайных чисел

Регистр сдвига с обратной связью

VHD.28
Генератор DDS

Синтез синуса накопителем фазы

VHD.29
Сигма-дельта ЦАП

Аналоговый выход с одного вывода

VHD.30
Измеритель частоты

Счёт импульсов за эталонную секунду

VHD.31
Ведомое устройство I2C

Ответ на адрес и приём байта

VHD.32
Приёмник PS/2

Клавиатура сама формирует такт обмена

VHD.33
Генератор развёртки VGA

Синхроимпульсы для монитора

VHD.34
Драйвер ЖК-дисплея HD44780

4-битный интерфейс автоматом состояний

VHD.35
Бегущая строка на матрице

Кольцевая адресация изображения шире экрана

VHD.36
Контроллер сервоприводов

Четыре канала на одном таймере периода

VHD.37
Сторожевой таймер

Автоматический сброс при зависании

VHD.38
Командный интерпретатор UART

Обработка команд поверх готового приёмника

VHD.39
Приоритетный шифратор

Номер старшего активного запроса

VHD.40
Генератор и проверка чётности

Функция XOR по всем битам

VHD.41
Секундомер

Законченное устройство: счёт сотых долей секунды

VHD.42
Двоично-десятичный преобразователь

Алгоритм double dabble без деления

VHD.43
Генератор CRC-8

Побитовый расчёт контрольной суммы

VHD.44
Простой калькулятор

Комбинационная арифметика с выводом на индикатор

VHD.45
Цифровой вольтметр

Масштабирование кода АЦП в вольты

VHD.46
Термостат с гистерезисом

Два порога вместо одного

VHD.47
Счётчик посетителей

Направление прохода по двум датчикам

VHD.48
Охранная сигнализация

Автомат с задержками на выход и вход

VHD.49
Простой процессор

Четыре команды, память и аккумулятор

VHD.50
Контроллер лифта

Автомат с очередью вызовов и движением