Съдържание:

VHDL едноминутен хронометър: 5 стъпки
VHDL едноминутен хронометър: 5 стъпки

Видео: VHDL едноминутен хронометър: 5 стъпки

Видео: VHDL едноминутен хронометър: 5 стъпки
Видео: VHDL ile FPGA PROGRAMLAMA - Ders14: FPGA Architectural Mimari Tasarım 7 Segment Kronometre Part 2 2024, Ноември
Anonim
Image
Image

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

Стъпка 1: Получете хардуер/софтуер

Блокова диаграма
Блокова диаграма

1. Basys 3 Artix-7 FPGA Trainer Board от Digilent с Micro-USB към USB кабел

2. Vivado 2016.2 Design Suite от Xilinx

Стъпка 2: Блокова диаграма

Тази схема е конструирана поведенчески и използва вградени компоненти на Xilinx, но може да бъде описана и структурно, както е показано от общата структурна диаграма по-горе. От диаграмата може да се види, че веригата се задвижва от два честотни делителя. Един от честотните разделители работи на 1 сантисекунда и задвижва катодния брояч, който се използва като числата, показани на седем-сегментния дисплей. Вторият честотен делител работи на 240Hz и се използва за задвижване на анодния брояч, който се върти през анодите, така че всички числа да се показват правилно на седем-сегментния дисплей. Енкодерът взема катодната логика от катодния брояч и анодната логика от анодния брояч и я кодира към катода и анода на изхода, които изпълняват седемсегментния дисплей. Функцията на този енкодер е катодният изход да се променя всеки път, когато анодният изход се промени. Катодният изход не може да се управлява независимо от брояча, защото анодите трябва да се въртят през 4 -те отделни цифри.

Стъпка 3: Модул на проекта

Първо, процесният блок за CEN се прави така, че когато се открие натискане на бутон, ENABLE ще превключи. Това служи като стоп/старт на катодния брояч.

В следващия технологичен блок, сантисекундните и 240Hz тактови сигнали са настроени така, че съответните им броячи се увеличават с 1 всеки път, когато вътрешният 100mHz часовник достигне нарастващ ръб. След като броячът на сантисекундата достигне 500000, той ще се върне обратно на 0. Междувременно броячът на 240Hz ще се нулира, когато броят достигне 41667.

За катодната секция на кода, ако ENABLE е '0', броенето на катодите ще спре. Ако бутонът за нулиране е натиснат през това време, тогава всички отброявания се нулират на "0000". Междувременно, ако ENABLE е „1“, броенето на катодите ще продължи, докато броят на катодите достигне 60.00, при което задейства стоп сигнала на „1“. Сигналът за спиране се връща обратно към блока на процеса CEN и кара ENABLE да бъде „0“, докато сигналът за спиране е „1“и няма да се промени, докато не бъде натиснат бутонът за нулиране.

И накрая, седемсегментният дисплей е настроен чрез правилното свързване на 4-те анода с всеки от своите 8 катода, за да показват съответните им цифри 0-9 едновременно.

Стъпка 4: Ограничения

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

Този файл с ограничения свързва посочените входове и изходи от VHDL с необходимите физически части на платката Basys. За този проект компонентите включват четирите анода и всеки от осемте им катода за седем сегментния дисплей, вътрешния часовник от 100 mHz, централния бутон и десния бутон.

Стъпка 5: Тествайте

След като завършите кода, вече можете да програмирате FPGA чрез USB кабел. Седемсегментният дисплей трябва да показва 0.00. Тествайте дали бутоните работят, като натиснете централния бутон, за да стартирате таймера, докато достигне 60.00 и спре; по всяко време между тях можете да натиснете отново централния бутон, за да го поставите на пауза. След като е поставен на пауза, можете да натиснете десния бутон, за да върнете таймера обратно на 0.00. Ако всичко работи правилно, поздравления, току -що сте построили таймер за една минута!

Препоръчано: