Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Это руководство о том, как сделать секундомер с использованием VHDL и печатной платы FPGA, например платы Basys3 Atrix-7. Секундомер может отсчитывать от 00,00 секунд до 99,99 секунд. Он использует две кнопки, одну для кнопки запуска / остановки, а другую для кнопки сброса. Цифры отображаются на семисегментном дисплее платы с использованием анодов и катодов. Для работы секундомера необходимы три разных файла.
Шаг 1. Аппаратное / программное обеспечение
- Плата Basys3 Atrix-7 FPGA
- Vivado Design Suite от Xilinx
- USB 2.0 мужчина к мужчине Micro-B
Шаг 2: блок-схема
Общий секундомер имеет три входа и два выхода. Три входа - это пуск / останов, сброс и часы. Старт / стоп и сброс - это кнопки, а часы - это тактовая частота платы 100 МГц. Два выхода - это аноды и катоды для семисегментного дисплея.
Первый модуль (делитель тактовой частоты) имеет один вход и два выхода. Вход - это тактовая частота платы 100 МГц, а выходы - два отдельных тактовых сигнала, один с частотой 480 Гц, а другой с частотой 0,5 МГц.
Второй модуль (дисплей) имеет пять входов и два выхода. Входами являются частота 100 МГц платы, две тактовые частоты модуля делителя тактовой частоты, а также кнопки запуска / остановки и сброса. Выходы - аноды и катоды.
Последний модуль (смоделированный всей блок-схемой) имеет три входа и два выхода. Это файл, который объединяет все воедино. Входами являются 100 МГц платы и кнопки запуска / остановки и сброса. Выходами являются аноды и катоды, управляющие семисегментным дисплеем. Все входы и выходы физически находятся на плате последнего модуля.
Шаг 3: Диаграмма состояний
На изображении выше показана диаграмма состояний работы секундомера. Нажатие кнопки сброса не влияет на состояние секундомера. Следующее состояние определяется кнопкой старт / стоп. Пуск / останов - «ВЫСОКИЙ» при нажатии, но не «ВЫСОКИЙ», когда он удерживается, и «НИЗКИЙ», когда кнопка отскакивает назад или удерживается в нажатом состоянии после того, как на мгновение находится «ВЫСОКИЙ».
Если секундомер ведет отсчет, а кнопка пуска / остановки показывает «ВЫСОКИЙ», то отсчет прекращается. Если секундомер остановлен, а кнопка пуска / останова переходит в положение «ВЫСОКИЙ», отсчет начинается снова. Для обоих состояний, если кнопка пуска / останова находится в положении «НИЗКИЙ», то она останется в том состоянии, в котором находится в данный момент.
Шаг 4: модуль делителя тактовой частоты
Модуль тактового делителя имеет один вход, тактовая частота платы 100 МГц, и два выхода, тактовая частота 480 Гц и 0,5 МГц. Тактовая частота 480 Гц используется для одновременного включения всех светодиодов на семисегментном дисплее путем быстрого переключения между четырьмя. Часы 0,5 МГц используются для того, чтобы секундомер фактически считал сантиметры.
Шаг 5: модуль дисплея
Этот дисплейный модуль имеет пять входов, тактовую частоту платы 100 МГц, две тактовые частоты модуля синхронизации, кнопки пуска / остановки и сброса, а также два выхода, аноды и катоды. Этот модуль также имеет "логику" подсчета секундомером и включает в себя конечный автомат.
Шаг 6: модуль привязки
Этот последний модуль объединяет два других модуля. Он имеет три входа, тактовые частоты платы 100 МГц и кнопки запуска / остановки и сброса, и два выхода, аноды и катоды. Тактовая частота 100 МГц поступает на модуль делителя тактовой частоты и модуль дисплея, а кнопки пуска / остановки и сброса идут на модуль дисплея. Выходы модуля делителя тактовой частоты (480 Гц и 0,5 МГц) идут на два тактовых входа модуля дисплея. Выходы модуля дисплея (аноды и катоды) идут на выходы последнего модуля.
Шаг 7: ограничения
Двумя входами могут быть любые кнопки на плате Basys3 Atrix-7 FPGA, а выходами будут четыре анода и восемь катодов (потому что вам также нужна десятичная точка между секундами и миллисекундами) для семисегментного дисплея.
Шаг 8: Готово
Загрузите программу на свою плату Basys3 Atrix-7 FPGA и нажмите кнопку запуска / остановки, чтобы секундомер заработал!