Оглавление:

Базовый секундомер с использованием VHDL и Basys3 Board: 9 шагов
Базовый секундомер с использованием VHDL и Basys3 Board: 9 шагов

Видео: Базовый секундомер с использованием VHDL и Basys3 Board: 9 шагов

Видео: Базовый секундомер с использованием VHDL и Basys3 Board: 9 шагов
Видео: Давайте сделаем цифровой таймер или ловушку скорости для моих игрушечных машинок. Часть 2. 2024, Июль
Anonim
Image
Image

Добро пожаловать в руководство по созданию секундомера с использованием базового VHDL и платы Basys 3. Мы рады поделиться с вами нашим проектом! Это был последний проект курса CPE 133 (Цифровой дизайн) в Калифорнийском Поли, SLO осенью 2016 года. Созданный нами проект представляет собой простой секундомер, который запускает, сбрасывает и приостанавливает время. Он принимает три кнопки на плате Basys3 в качестве входов, а время отображается на четырехзначном семисегментном дисплее платы. Прошедшее время отображается в формате секунды: сантисекунды. Он использует системные часы платы в качестве входных данных для отслеживания прошедшего времени и выводит время на четыре цифры семисегментного дисплея.

Шаг 1: материалы

Настройка входов и выходов
Настройка входов и выходов

Материалы, которые вам понадобятся для этого проекта:

  • 1 компьютер с установленным веб-пакетом Vivado Design Suite WebPack из Xilinx (предпочтительнее версии 2016.2)
  • 1 плата Digilent Basys3 Xilinx Artix-7 FPGA
  • 1 кабель USB-порта

Шаг 2: Настройка входов и выходов

На рисунке выше показана блок-схема верхнего уровня основного модуля секундомера. Секундомер принимает входы «CLK» (часы), «S1» (кнопка запуска), «S2» (кнопка паузы) и «RST» (сброс) и имеет 4-битный выход «Аноды», 7-битный выходной «сегмент» и однобитовый выход «DP» (десятичная точка). Когда на входе «S1» высокий уровень, секундомер начинает отсчет времени. Когда "S2" низкий, секундомер приостанавливает отсчет времени. Когда "RST" высокий, секундомер останавливается и сбрасывает время. В схеме есть четыре субмодуля: делитель часов, счетчик цифр, драйвер семисегментного дисплея и кодировщик семисегментного дисплея. Главный модуль секундомера связывает все подмодули вместе с входами и выходами.

Шаг 3: изготовление часов

Изготовление часов
Изготовление часов

Модуль делителя тактовой частоты принимает системные часы и использует вход делителя для создания тактовой частоты любой скорости, не превышающей тактовую частоту системных часов. В секундомере используются два разных модуля часов, один из которых создает часы с частотой 500 Гц, а другой - с частотой 100 Гц. Схема делителя часов показана на рисунке выше. Делитель тактовой частоты принимает однобитовый вход «CLK», 32-битный вход «Divisor» и однобитовый выход «CLKOUT». «CLK» - это системные часы, а «CLKOUT» - это результирующие часы. Модуль также включает элемент НЕ, который переключает сигнал "CLKTOG", когда счет достигает значения делителя.

Шаг 4: Считаем до десяти

Считаем до десяти
Считаем до десяти

Счетчик разрядов считает каждую цифру от 0 до 10 и создает еще один тактовый сигнал для следующей цифры, чтобы функционировать, вне зависимости от того, что генерируется, когда счет достигает 10. Модуль принимает 3 однобитовых входа «S», «RST» и «CLK». "и приводит к одноразрядному выходу" N "и 4-битному выходу" D ". Вход «S» - это разрешающий вход. Часы включаются, когда «S» высокий, и выключаются, когда «S» низкий. «RST» - это вход сброса, поэтому часы сбрасываются при высоком уровне «RST». «CLK» - это тактовый вход для цифрового счетчика. «N» - это тактовый выходной сигнал, который становится входным тактовым сигналом для следующей цифры. Выход «D» представляет двоичное значение разряда счетчика.

Шаг 5: отображение чисел

Отображение чисел
Отображение чисел

Кодер семисегментного дисплея кодирует двоичное число, полученное от модуля драйвера семисегментного дисплея, и преобразует его в поток битов, который будет интерпретироваться как значения «1» или «0» для каждого сегмента дисплея. Двоичное число принимается модулем как 4-битная входная «цифра» и приводит к 7-битным выходным «сегментам». Модуль состоит из одного блока процесса case, который назначает определенный 7-битовый поток для каждого возможного входного значения от 0 до 9. Каждый бит в семибитовых потоках представляет один из семи сегментов цифр на дисплее. Порядок сегментов в потоке - «abcdefg», где «0» представляют сегменты, которые загораются для данного числа.

Шаг 6: Как отобразить секундомер

Как отобразить секундомер
Как отобразить секундомер

В модуле драйвера семисегментного дисплея имеется четыре 4-битных входа «D0», «D1», «D2» и «D3», каждый из которых представляет четыре отображаемых цифры. Вход «CLK» - это тактовый вход системы. Однобитовый выход «DP» представляет десятичную точку на семисегментном индикаторе. 4-битный выход «Anodes» определяет, какая цифра на семисегментном дисплее отображается, а 4-битный выход «temp» зависит от состояния 2-битного управляющего входа «SEL». Модуль использует 4 мультиплексора для управляющего входа «SEL» и трех выходов; «Аноды», «темп» и «ДП».

Шаг 7. Собираем все вместе

Блок процесса if, работающий от частоты 500 Гц, используется для создания кнопок запуска и паузы. Затем свяжите все подмодули вместе в основном модуле секундомера, объявив компоненты каждого отдельного подмодуля и используя различные сигналы. Субмодули цифр принимают тактовый сигнал предыдущего субмодуля цифр, причем первый принимает тактовую частоту 100 Гц. Выходы «D» субмодулей цифр затем становятся входами «D» модуля драйвера семисегментного дисплея. И, наконец, «временный» выход семисегментного модуля драйвера дисплея становится «временным» входом семисегментного модуля кодировщика.

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

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

Используйте 3 кнопки (W19, T17 и U18) для входов «RST», «S1» и «S2». W19 - кнопка сброса, T17 - кнопка запуска (S1), а U18 - кнопка паузы (S2). Также требуется ограничение на вход тактового сигнала с использованием порта W5. Также не забудьте добавить эту строку к ограничению часов:

create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]

Также свяжите аноды и сегменты с платой, чтобы секундомер отображался на семисегментном дисплее, как показано в файле ограничений.

Шаг 9: Тестирование

Тестирование
Тестирование

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

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