Оглавление:

VHDL Одноминутный секундомер: 5 шагов
VHDL Одноминутный секундомер: 5 шагов

Видео: VHDL Одноминутный секундомер: 5 шагов

Видео: VHDL Одноминутный секундомер: 5 шагов
Видео: 1.2 Основы языка VHDL. Базовые концепции описания устройств. 2024, Ноябрь
Anonim
Image
Image

Это руководство о том, как построить минутный секундомер с использованием VHDL и платы Basys 3. Такое устройство идеально подходит для игр, где у каждого игрока есть максимум одна минута, чтобы сделать ход. Секундомер точно отображает секунды и миллисекунды на семисегментном дисплее, начиная с 0 секунд и 0 миллисекунд, до 60 секунд и 0 миллисекунд. Также используются две кнопки: центральная кнопка, используемая для запуска, остановки и продолжения таймера, и правая кнопка, используемая для перезапуска таймера. Когда устройство сравнивается бок о бок со встроенным секундомером смартфона, становится заметна точность часов.

Шаг 1. Получите оборудование / программное обеспечение

Блок-схема
Блок-схема

1. Тренировочная плата Basys 3 Artix-7 FPGA от Digilent с кабелем Micro-USB - USB.

2. Vivado 2016.2 Design Suite от Xilinx

Шаг 2: блок-схема

Эта схема построена поведенчески и использует встроенные компоненты Xilinx, но также может быть описана структурно, как показано на общей структурной схеме выше. Из схемы видно, что схема приводится в действие двумя делителями частоты. Один из делителей частоты работает с частотой 1 сантисекунда и управляет катодным счетчиком, который используется в качестве чисел, отображаемых на семисегментном дисплее. Второй делитель частоты работает на частоте 240 Гц и используется для управления счетчиком анодов, который вращается через аноды, так что все числа правильно отображаются на семисегментном дисплее. Кодер берет катодную логику от катодного счетчика и анодную логику от анодного счетчика и кодирует ее на выходном катоде и аноде, которые запускают семисегментный дисплей. Функция этого энкодера состоит в том, чтобы выход катода изменялся каждый раз, когда изменяется выход анода. Катодный выход не может работать независимо от счетчика, потому что аноды должны вращаться на 4 отдельные цифры.

Шаг 3: модуль проекта

Во-первых, блок процесса для CEN сделан так, что при обнаружении нажатия кнопки переключатель ENABLE будет переключаться. Это служит остановкой / запуском катодного счетчика.

В следующем блоке процесса тактовые сигналы сотых долей секунды и 240 Гц устанавливаются так, чтобы их соответствующие счетчики увеличивались на 1 каждый раз, когда внутренние тактовые частоты 100 МГц достигают нарастающего фронта. Когда счетчик сантисекунд достигает 500000, он сбрасывается обратно на 0. Между тем счетчик 240 Гц сбрасывается, когда счетчик достигает 41667.

Для катодной части кода, если ENABLE равен «0», подсчет катодов будет приостановлен. Если в это время нажать кнопку сброса, все счетчики будут сброшены на «0000». Между тем, если ENABLE равен «1», счет катодов будет продолжаться до тех пор, пока счетчик катодов не достигнет 60,00, при этом он запускает сигнал остановки, равный «1». Сигнал остановки направляется обратно в блок процесса CEN и приводит к тому, что ENABLE принимает значение «0», в то время как сигнал остановки равен «1», и не изменится, пока не будет нажата кнопка сброса.

Наконец, семисегментный дисплей настраивается путем правильного подключения 4 анодов к каждому из их 8 катодов для одновременного отображения соответствующих цифр 0–9.

Шаг 4: ограничения

Ограничения
Ограничения

Этот файл ограничений связывает указанные входы и выходы VHDL с необходимыми физическими частями платы Basys. Для этого проекта компоненты включают в себя четыре анода и каждый из восьми катодов для семисегментного дисплея, внутренние часы 100 МГц, центральную кнопку и правую кнопку.

Шаг 5: Тест

После того, как вы закончите код, вы можете теперь программировать FPGA через USB-кабель. Семисегментный дисплей должен показывать 0,00. Проверьте, работают ли кнопки, нажав центральную кнопку для запуска таймера, пока он не достигнет 60,00 и не остановится; в любой момент вы можете снова нажать центральную кнопку, чтобы приостановить воспроизведение. После паузы вы можете нажать правую кнопку, чтобы сбросить таймер обратно на 0,00. Если все работает правильно, поздравляем, вы только что построили минутный таймер!

Рекомендуемые: