Оглавление:

Будильник Basys 3: 9 шагов
Будильник Basys 3: 9 шагов

Видео: Будильник Basys 3: 9 шагов

Видео: Будильник Basys 3: 9 шагов
Видео: Servomotor control on the FPGA Basys3 Board 2024, Октября
Anonim
Basys 3 Будильник
Basys 3 Будильник

Наш проект создает будильник с использованием платы Basys 3 FPGA, Arduino и платы драйвера динамика. Пользователь может ввести текущее время на плату с помощью 11 входных переключателей на Basys 3 и зафиксировать значение с помощью средней кнопки на плате. Затем пользователь может ввести время будильника, используя те же переключатели, но нажав левую кнопку, чтобы зафиксировать время будильника. Если введено неправильное время, можно нажать кнопку сброса (верхняя кнопка), и текущие часы и время будильника будут установлены на 00:00. Затем пользователь может запустить часы, используя крайний левый переключатель, и включить будильник, используя следующий переключатель. Когда будильник включен, будильник будет издавать звук, когда время на часах и установленное время совпадают.

Шаг 1: Схема черного ящика

Схема черного ящика
Схема черного ящика
Схема черного ящика
Схема черного ящика

Мы начали наш проект с рисования диаграммы черного ящика для визуализации входов и выходов, необходимых для нашей программы. Следующие входы для нашей программы, такие как 5-битный ввод (Hour_in), были инициализированы для указания 24-часового времени, 6-битный (Min_in) ввод для отображения до 60 минут, кнопка сброса (Rst_b), позволяющая пользователю изменить их вход времени, 1-битный вход (alm_en), который загружает тревожный вход, 1-битный вход (alarm_sw) для выключения будильника, когда он активирован, 1-битный вход (e_sec), который контролирует, когда счетчик секунд, 1-битный ввод (Led_btn), который устанавливает текущее время, и, наконец, 1-битный ввод (clk), который управляет временем, отображаемым платой Basys 3. Выходы - это (alm_on), который отправляет сигнал на Arduino, выход sseg, который отображает время входа на Basys 3, и выход анода, который контролирует, где входы отображаются на семи сегментном дисплее.

Шаг 2: медленные часы

Медленные часы
Медленные часы

Файл slow clock или clock_div2 создает часы с частотой 2 Гц. Если мы подадим эти часы на наш счетчик секунд, значение секунд будет увеличиваться на единицу каждую секунду. Медленные часы используются для создания надежного тактового сигнала, который меняется с низкого на высокий один раз в секунду.

Шаг 3: счетчик

Прилавок
Прилавок
Прилавок
Прилавок

Счетчик компонентов (минуты и секунды):

Основная функция минут и секунд заключается в том, что они являются счетчиками. Счетчик минут принимает входной сигнал (Vin), который является сигналом с входов (Min_in), а затем считает, пока не достигнет желаемого введенного входа. Секунды принимают только ввод переключателя (e_Sec), так как он не может быть отображен в сегменте семи, и считается в фоновом режиме, когда переключатель находится в высоком состоянии «1». Они оба выводят это значение в (Qout), а затем оно сохраняется в (data), которое отправляет его в SSEG, что выполняется в файле связывания. Кроме того, когда минуты и секунды достигают значения 59, он сбрасывается, и их вывод становится «1» для увеличения минут / часов. Его также можно сопоставить с помощью сброса (rst_b) на их входы.

Шаг 4: счетчик часов

Счетчик часов
Счетчик часов
Счетчик часов
Счетчик часов

Компонент Счетчик часов

Аналогично компоненту счетчика минут и секунд компонент часа принимает входные данные, такие как (Vin), который является сигналом от связывания входных файлов (Hour_in), и имеет выходы, которые связаны таким же образом с минутами и секундами. Когда значение счетчика часов достигает 24 00, оно сбрасывается на 00 00.

Шаг 5: будильник

Тревога
Тревога
Тревога
Тревога
Тревога
Тревога
Тревога
Тревога

Файл аварийных сигналов.vhd состоит из d-триггеров, которые представляют собой устройства хранения, на которых могут храниться цифровые данные. Файл сигналов тревоги используется для хранения времени, в которое будет активирован сигнал тревоги. Чтобы сохранить данные часов (5-битный ввод) и минут (6-битный ввод), мы должны выделить 11 d-триггеров в нашем файле аварийных сигналов. Для этого мы должны сначала импортировать логику, управляющую работой d-триггеров, и сопоставить компоненты. Каждый из 11 d-триггеров будет хранить один бит данных со входов и позволяет отображать данные на выходах файла аварийных сигналов. Поскольку d-триггеры хранят данные, мы можем использовать их в более поздний момент времени, даже если входные переключатели были изменены.

Шаг 6. Универсальный семисегментный драйвер дисплея

Универсальный семисегментный драйвер дисплея
Универсальный семисегментный драйвер дисплея
Универсальный семисегментный драйвер дисплея
Универсальный семисегментный драйвер дисплея
Универсальный семисегментный драйвер дисплея
Универсальный семисегментный драйвер дисплея

Универсальный драйвер семисегментного дисплея принимает входные данные от часов и набора часов и может выводить их на семисегментный дисплей на плате. Драйвер может выводить на плату два отдельных счета одновременно. Мы использовали эту функцию для отдельного отображения часового и минутного времени. Семисегментный дисплей может активировать только одно число за раз, поэтому файл sseg должен использовать мультиплексирование для одновременного отображения всех чисел времени. Тактовый сигнал платы подается в sseg, чтобы поддерживать правильное время для мультиплексирования. Десятичный кодировщик с двоичным кодом необходим для преобразования входных данных файла в форму, которая может выводиться на семисегментный дисплей. Окончательный вывод файла sseg отображается на семисегментном дисплее, и на нем отображается правильное время.

Шаг 7. Ссылка на файл

Ссылка на файл
Ссылка на файл
Ссылка на файл
Ссылка на файл
Ссылка на файл
Ссылка на файл

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

Шаг 8: Arduino

Ардуино
Ардуино
Ардуино
Ардуино

Arduino используется для активации динамика, а также для управления тоном и продолжительностью ноты, воспроизводимой через динамик. Arduino считывает цифровой сигнал с платы Basys 3. Когда этот сигнал высокий, Arduino будет выводить сигнал ШИМ, контролирующий тон и продолжительность сигнала тревоги. Выходной сигнал от Arduino подключается к входному сигналу платы драйвера динамика, что увеличивает громкость динамика. Arduino выполняет этот процесс очень быстро, повторяя много раз в секунду.

Шаг 9: Прокладка кабеля

Прокладка кабелей
Прокладка кабелей

Плата Arduino и Basys 3 должна быть физически подключена для передачи сигналов между платами. Первым проводом будет провод от контакта заземления JA PMOD Basys 3 к контакту заземления Arduino. Затем подключите провод от контакта 1 JA PMOD Basys 3 к цифровому контакту 7 Arduino. Затем подключите два контакта заземления Arduino к контактам заземления драйвера динамика. Затем подключите выход 3.3 В Arduino к выводу Vcc драйвера динамика. Затем подключите цифровой контакт 9 Arduino к контакту In драйвера динамика.

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