Мазмұны:

VHDL мен Basys3 тақтасын қолданатын негізгі секундомер: 9 қадам
VHDL мен Basys3 тақтасын қолданатын негізгі секундомер: 9 қадам

Бейне: VHDL мен Basys3 тақтасын қолданатын негізгі секундомер: 9 қадам

Бейне: VHDL мен Basys3 тақтасын қолданатын негізгі секундомер: 9 қадам
Бейне: ЧТО ВИДЯТ ЖЕНЩИНЫ В ПРИЛОЖЕНИЯХ ДЛЯ ЗНАКОМСТВ - VLDL на Русском 2024, Қараша
Anonim
Image
Image

Негізгі 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 -қадам: тестілеу

Сынақ
Сынақ

Құрылғыңыздың үш түймені ойнау арқылы жұмыс жасайтынына көз жеткізіңіз: кодыңызбен туындауы мүмкін ақауларды табу үшін оларды кезек -кезек басып тұру.

Ұсынылған: