Мазмуну:

VHDL Бир Мүнөттүк Секундомер: 5 кадам
VHDL Бир Мүнөттүк Секундомер: 5 кадам

Video: VHDL Бир Мүнөттүк Секундомер: 5 кадам

Video: VHDL Бир Мүнөттүк Секундомер: 5 кадам
Video: #ZAPAL#12-YOSHLI QIZ USHLANDI 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 Дизайн Suite Xilinxтен

2 -кадам: Блок диаграммасы

Бул схема жүрүм-туруму боюнча курулган жана Xilinxтин камтылган компоненттерин колдонот, бирок жогоруда жалпы структуралык диаграммада көрсөтүлгөндөй структуралык жактан да сүрөттөлүшү мүмкүн. Диаграммадан көрүнүп тургандай, чынжыр эки жыштыкты бөлүүчү тарабынан башкарылат. Жыштыкты бөлүштүргүчтөрдүн бири 1 центисекундта иштейт жана жети сегменттүү дисплейде көрсөтүлгөн сандар катары колдонулган катоддук эсептегичти айдайт. Экинчи жыштык бөлүштүргүч 240 Гцте иштейт жана бардык сандар жети сегменттүү дисплейде туура көрсөтүлүшү үчүн аноддор аркылуу айланып турган аноддук эсептегичти иштетүү үчүн колдонулат. Кодер катод логикасын катод эсептегичтен жана анод эсептегичтен анод логикасын алат жана аны жети сегменттүү дисплейди иштетүүчү катод менен анодго коддоп берет. Бул коддогучтун милдети - аноддун чыгышы өзгөргөн сайын катоддун чыгышы. Аноддор 4 өзүнчө цифрадан айланышы керек, анткени катоддун чыгуусу эсептегичтен көз карандысыз иштей албайт.

3 -кадам: Долбоор модулу

Биринчиден, CEN үчүн процесстик блок жасалат, ошондо Button Press табылганда, ENABLE которулат. Бул катод эсептегичтин токтоо/башталышы катары кызмат кылат.

Кийинки процесстик блокто, центисекунд жана 240Гц саат сигналдары ички 100мГц сааты өсүп бараткан чекке жеткен сайын тиешелүү эсептегичтери 1ге көбөйөт. Центекунддук эсептегич 500000ге жеткенде, ал кайра 0гө кайтарылат. Ошол эле учурда 240Гц эсептегич 41667ге жеткенде баштапкы абалга келет.

Коддун катод бөлүмү үчүн, эгер КҮЙГҮЗҮҮ '0' болсо, катоддорду эсептөө токтотулат. Эгерде бул убакыт ичинде баштапкы абалга келтирүү баскычы басылса, анда бардык эсептөөлөр "0000" абалына келтирилет. Ошол эле учурда, эгерде КОНУЛДОО '1' болсо, катоддордун саны катоддун саны 60.00гө жеткенге чейин улана берет, анда ал токтоочу сигналды '1' кылат. Аялдама сигналы кайра CEN процессинин блогуна өтөт жана "0" болууга алып келет, ал эми токтотуу сигналы "1" болуп саналат жана баштапкы абалга келтирүү баскычы басылмайынча өзгөрбөйт.

Акыр-аягы, жети сегменттин дисплейи 4 аноддун 8 катодунун ар бири менен туура байланышып, 0-9 сандарын бир убакта көрсөтүү үчүн орнотулган.

4 -кадам: Чектөөлөр

Чектөөлөр
Чектөөлөр

Бул чектөө файлы VHDLден көрсөтүлгөн кириштерди жана чыгууларды Basys тактасынын керектүү, физикалык бөлүктөрүнө байланыштырат. Бул долбоор үчүн компоненттер жети сегменттүү дисплей үчүн төрт анодду жана алардын сегиз катодун, ички 100 мГц саатты, борбордук баскычты жана оң баскычты камтыйт.

5 -кадам: Тест

Кодду бүтүргөндөн кийин, азыр FPGAны USB кабели аркылуу программалай аласыз. Жети сегменттин дисплейи 0,00 көрсөтүшү керек. Таймерлерди 60.00гө жеткенге чейин токтотуу үчүн борбордук баскычты басуу менен баскычтардын иштээрин текшерүү; каалаган убакта, аны токтотуу үчүн борбордук баскычты кайра басыңыз. Ал тындырылгандан кийин, оң баскычты басып, таймерди кайра 0.00гө кайтарууга болот. Эгерде баары туура иштеп жатса, куттуктайм, сиз болгону бир мүнөттүк таймерди курдуңуз!

Сунушталууда: