Мазмұны:
- 1 -қадам: материалдар
- 2 -қадам: Кірістер мен шығыстарды орнату
- 3 -қадам: Сағат жасау
- 4 -қадам: Онға дейін санау
- 5 -қадам: сандарды көрсету
- 6 -қадам: Секундомерді қалай көрсету керек
- 7 -қадам: Барлығын біріктіру
- 8 -қадам: шектеулер
- 9 -қадам: тестілеу
Бейне: VHDL мен Basys3 тақтасын қолданатын негізгі секундомер: 9 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Негізгі VHDL және Basys 3 тақтасын қолданып секундомер құрудың нұсқаулығына қош келдіңіз. Біз сіздермен өз жобамызбен бөлісуге қуаныштымыз! Бұл Cal Poly, SLO -дағы CPE 133 (цифрлық дизайн) курсының 2016 жылдың күзіндегі соңғы жобасы болды. Біз құрастырған жоба - уақытты бастайтын, қалпына келтіретін және кідіртетін қарапайым секундомер. Ол кіріс ретінде Basys3 тақтасындағы үш түймені қабылдайды, ал уақыт тақтаның жеті сегментті төрт таңбалы дисплейінде көрсетіледі. Өткен уақыт секундтарда көрсетіледі: центисекундтар форматы. Ол өткен уақытты бақылау үшін тақтаның жүйелік сағатын қолданады және жеті сегментті дисплейдің төрт санына уақытты шығарады.
1 -қадам: материалдар
Бұл жобаға қажет материалдар:
- Xilinx -тен Vivado Design Suite WebPack орнатылған 1 компьютер (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 разрядты «Бөлгіш» және бір разрядты шығынды «CLKOUT» қабылдайды. «CLK» - бұл жүйелік сағат, ал «CLKOUT» - алынған сағат. Сондай -ақ, модульде «CLKTOG» сигналын бөлгіштің мәніне жеткенде ауысатын NOT қақпасы бар.
4 -қадам: Онға дейін санау
Цифрлық санауыш әр цифрды 0-ден 10-ға дейін санайды және санау 10-ға жеткенде келесі сандардың өшуі үшін басқа сағатты жасайды. Модуль «S», «RST» және «CLK» 3 бір разрядты кірісті қабылдайды. «және бір разрядты шығыс» N «және 4 биттік шығыс» D «әкеледі. «S» енгізу - бұл кірісті қосу. Сағат «S» жоғары болғанда қосылады, ал «S» төмен болғанда өшеді. «RST» - бұл бастапқы қалпына келтіру, сондықтан «RST» жоғары болғанда сағат қалпына келеді. «CLK» - цифрлық санауыш үшін сағаттық кіріс. «N» - бұл келесі цифрдың кіріс сағатына айналатын сағаттық шығыс. «D» шығысы есептегіш орналасқан цифрдың екілік мәнін көрсетеді.
5 -қадам: сандарды көрсету
Жеті сегментті дисплей кодері жеті сегментті дисплей драйверінің модулінен алынған екілік санды кодтайды және дисплейдің әрбір сегменті үшін '1' немесе '0' мәндері ретінде түсіндірілетін бит ағынына айналдырады. Екілік санды модуль 4 разрядты «цифр» ретінде қабылдайды және 7 биттік шығыс «сегменттеріне» әкеледі. Модуль 0-ден 9-ға дейінгі әрбір мүмкін болатын кіріс мәні үшін нақты 7-биттік ағынды тағайындайтын жеке регистрлік технологиялық блоктан тұрады. Жеті биттік ағындардың әрбір биті дисплейдегі цифрлардың жеті сегментінің бірін білдіреді. Ағындағы сегменттердің орналасу реті «abcdefg», ал «0» берілген сан үшін жанатын сегменттерді білдіреді.
6 -қадам: Секундомерді қалай көрсету керек
Жеті сегментті дисплей драйверінің модулінде әрқайсысы көрсетілетін төрт цифрды білдіретін «D0», «D1», «D2» және «D3» 4 разрядты төрт кіріс бар. «CLK» кірісі - жүйенің сағаттық кірісі. Бір разрядты шығыс «DP» жеті сегментті дисплейде ондық нүктені білдіреді. 4-разрядты «Анодтар» жеті сегментті дисплейде қандай цифрдың көрсетілетінін анықтайды, ал 4-разрядты «temp» 2-разрядты басқару кірісінің күйіне байланысты «SEL». Модульде «SEL» басқару кірісі мен үш шығыс үшін 4 мультиплексор қолданылады; «Анодтар», «темп» және «ДП».
7 -қадам: Барлығын біріктіру
Іске қосу және кідірту түймелерін жасау үшін 500Гц сағат жұмыс істейтін 'if' технологиялық блогы қолданылады. Содан кейін әр субмодульдің компоненттерін жариялау және әр түрлі сигналдарды қолдану арқылы секундомердің негізгі модулінде барлық қосалқы модульдерді біріктіріңіз. Цифрлық қосалқы модульдер алдыңғы цифрлық модульдің сағаттық шығысын қабылдайды, бірінші модуль - 100 Гц. Цифрлық қосалқы модульдердің «D» шығысы дисплей драйверінің жеті сегменті модулінің «D» кірісіне айналады. Соңында жеті сегментті дисплей драйвер модулінің «temp» шығысы жеті сегментті кодер модулінің «temp» кірісіне айналады.
8 -қадам: шектеулер
«RST», «S1» және «S2» кірістері үшін 3 түймені (W19, T17 және U18) пайдаланыңыз. W19 - қалпына келтіру түймесі, T17 - бастау түймесі (S1), U18 - кідірту түймесі (S2). W5 портын қолдана отырып, сағатты енгізу үшін шектеу қажет. Сонымен қатар, бұл жолды сағат шектеулеріне қосуды ұмытпаңыз:
create_clock -add -name sys_clk_pin -период 10.00 -толқын пішіні {0 5} [get_ports {CLK}]
Анодтар мен сегменттерді тақтаға қосыңыз, осылайша секундомер жеті сегментті дисплейде шектеулер файлында көрсетілгендей көрсетіледі.
9 -қадам: тестілеу
Құрылғыңыздың үш түймені ойнау арқылы жұмыс жасайтынына көз жеткізіңіз: кодыңызбен туындауы мүмкін ақауларды табу үшін оларды кезек -кезек басып тұру.
Ұсынылған:
Потенциометрді, OLED дисплейі мен түймелерін қолданатын Arduino DC тұрақты қозғалтқышының жылдамдығы мен бағыты: 6 қадам
Arduino DC қозғалтқышының жылдамдығы мен бағытын потенциометр, OLED дисплейі мен түймелері арқылы басқарады: Бұл оқулықта біз L298N DC MOTOR CONTROL драйвері мен потенциометрді екі қозғалтқыштың жылдамдығы мен бағытын екі түймемен басқару және потенциометрдің мәнін көрсету үшін қолдануды үйренеміз. OLED дисплейінде демонстрациялық бейнені қараңыз
ESP32-CAM тақтасын қолданатын уақыт аралығы камерасы: 6 қадам
ESP32-CAM тақтасын қолдана отырып, уақытты үнемдейтін камера: Бұл жоба алдыңғы цифрлық фотокамера жобасына негізделеді және біз ESP32-CAM тақтасының көмегімен уақытты жылдам камераны жасаймыз. Барлық суреттер microSD картасына кезекпен сақталады және суретті түсіргеннен кейін тақта ұйқыға кетеді, оны сақтау үшін
Raspberry Pi мен MySQL мәліметтер базасын қолданатын саусақ ізі мен RFID негізіндегі келу жүйесі: 5 қадам
Raspberry Pi мен MySQL мәліметтер базасын қолданатын саусақ ізі мен RFID негізіндегі келу жүйесі: осы жобаның бейнесі
WiFi мен IR қашықтан басқару пульті мен Android қосымшасын қолданатын NodeMCU мен IR қабылдағышымен 8 релелік басқару: 5 қадам (суреттермен)
WiFi мен IR қашықтан басқару пульті мен Android қосымшасын пайдаланатын NodeMCU мен IR қабылдағышымен 8 релелік басқару: wifi мен қашықтан және андроид қосымшасы арқылы nodemcu мен IR қабылдағышты қолданатын 8 релелік қосқышты басқару. Қашықтан басқару құралы wifi қосылымына тәуелсіз жұмыс істейді. МҰНДА
555 онжылдық есептегіші мен жарық диодтары мен пьезо дыбысы бар таймер; схеманың негізгі сипаттамасы: 6 қадам
555 Таймер онжылдық есептегішпен және жарық диодтары мен пьезо -дыбыстық сигналмен; схеманың негізгі сипаттамасы: бұл схема үш бөліктен тұрады, олар дыбыс шығаратын пьезо -дыбыстық сигнал. Код (бағдарлама) " Туған күніңмен " Пьезо арқылы Ардуино. Келесі қадам - импульсті шығаратын 555 таймер, ол сағат ретінде жұмыс істейді