Мазмұны:

FPGA реакциясы ойыны: 10 қадам
FPGA реакциясы ойыны: 10 қадам

Бейне: FPGA реакциясы ойыны: 10 қадам

Бейне: FPGA реакциясы ойыны: 10 қадам
Бейне: Набор для изучения FPGA | Altera Cyclone 2024, Шілде
Anonim
FPGA реакциясы ойыны
FPGA реакциясы ойыны

Жазғы Резерфорд пен Регита Соетандар

1 -қадам: Кіріспе

CPE 133 бойынша соңғы жобамыз үшін біз Basys3 тақтасы үшін VHDL -де реакциялық ойын ойнадық. Бұл ойынды ойыншы блоктарды қажет уақытта тастауға мәжбүр болатын «Stacker» аркадтық ойынымен салыстыруға болады. Basys3 тақтасы ауыспалы светодиоды бар тақтаға қосылған. Бұл жарықдиодты шамдар деңгейге байланысты белгілі бір жиілікте ауысады. Бұл ойын сағат бөлгішті және 4 цифрлық 7 сегментті дисплейді, сондай -ақ соңғы күйдегі машинаны қолданады. Ойыншы дұрыс қосқышты қосқанда, ортаңғы жарық диоды жанған кезде, ойыншы ауыспалы жарықдиодты жиілікті арттыра отырып, ойынның келесі деңгейіне өтеді. Бұл әр деңгейдің алдыңғы деңгейге қарағанда күрделенуіне әкеледі. Ойыншы 7 -ші деңгейден сәтті өткенде, ең жоғарғы деңгей, сегменттің дисплейінде хабарлама пайда болады және барлық жарық диоды бір мезгілде жанып -өшеді.

2 -қадам: материалдар

Материалдар
Материалдар
Материалдар
Материалдар
Материалдар
Материалдар

Сізге қажет материалдар:

  • Micro USB кабелі бар Digilent Basys3 тақтасы
  • Нан тақтасы
  • 5 жарық диоды
  • 5 резистор (біз 220 Ом қолдандық)
  • 11 секіргіш сымдар
  • Vivado бар компьютер

3 -қадам: Қара жәшіктің жоғарғы деңгейлі диаграммасы

Қара жәшіктің жоғарғы деңгейлі диаграммасы
Қара жәшіктің жоғарғы деңгейлі диаграммасы
Қара жәшіктің жоғарғы деңгейлі диаграммасы
Қара жәшіктің жоғарғы деңгейлі диаграммасы

Көріп отырғаныңыздай, біздің жоғарғы деңгейдегі блок -схема ClkDivide қосалқы модулінен қажетті сағаттарды алудан басталады. Бұл сағаттар әр түрлі технологиялық блоктарға енгізулер болып табылады. Негізінде, ойын пайдаланушы қосқышты дұрыс қосқанда, жарық диоды тез ауыса бастайтынын және дисплей бір деңгейге көтерілуі керектігін түсінуі керек. Блок -схема біршама ақылсыз болып көрінуі мүмкін, бірақ бұл белгілі бір процесте орнатылған көптеген сигналдар бар, содан кейін бұл сигнал басқа технологиялық блоктағы басқа сигналды анықтайды.

Ақыр соңында, ойынға тек 100 МГц жиілігінде жұмыс істейтін Basys3 тақтасындағы кіріс сағаты, Basys3 тақтасындағы жеті қосқыш және қалпына келтіру түймесі кіреді. Шығарылатын нәрсе - жеті сегментті дисплейге арналған анод, дисплейге арналған жеті сегмент және жарық диодты шамдар.

4 -қадам: CLKDivide

CLK Бөлу
CLK Бөлу
CLK Бөлу
CLK Бөлу
CLK Бөлу
CLK Бөлу

Бұл сағат бөлгіш қосалқы модуль біздің негізгі файлда көрсетілген мәнге байланысты баяу сағатты құрды. Біз бұл қосалқы модульді Clk400, PushClk және newlck анықтау үшін қолдандық. Баяулаған сағат шығарылады. Бөлгіш пен баяулатылған сағат үшін технологиялық блок бар. Бұл процесте біз уақыт деп аталатын уақытша айнымалы болып табылады, ол енгізілген сағаттың көтерілетін жиегіне соғылған сайын бір рет есептеледі. Бөлгіш нөмірге жеткенде, баяулаған сағат қосылып, санау нөлге оралады.

5 -қадам: технологиялық блокты ауыстыру

Процесс блогының ауысуы
Процесс блогының ауысуы

Shift технологиялық блогы светодиодтардың ауыспалы қозғалысы мен жылдамдығын басқарады. Сезімталдық тізімінде newclk және Stop сигналдары бар. Пайдаланушы деңгейден өткен кезде тоқтату қысқа кідірісті тудырады. Егер тоқтау жоғары болмаса, онда жарық диодтары жаңадан түсу жылдамдығына байланысты қалыпты түрде ауысады. Бұл ауыспалы үлгіні екі айнымалы басқарады: Бақылау және санау. Санау қай жарық диодты қосу керектігін анықтайды, ал Track санауды жоғары немесе төмен санау керектігін анықтайды. Ойыншының ойынды жеңгенін көрсететін «111» деңгейі болған кезде ғана қолданылатын «Финал» деген тағы бір сигнал бар. Жарық диодты үздіксіз қосу және өшіру үшін соңғы сағат сайын 0 мен 1 арасында ауысады. Бұл соңғы дисплейге арналған визуалды элемент.

Бұл ауысу процесі - бұл жобаны бастау үшін тамаша орын. Егер сіз светодиодтарды дұрыс және дәйекті түрде алмастыра алсаңыз, онда дәл осы жерден деңгейге көтеру кезінде мінез -құлықты қосу керек!

6 -қадам: Ақырлы күй машинасы

Ақырлы күй машинасы
Ақырлы күй машинасы

Біз енгізу қосқышы немесе ысыру түймесі басылған кездегі мінез -құлықты белгілеу үшін соңғы күй машинасын құрдық. Әр күй «деңгей» болып табылады және егер қосқыш дұрыс емес уақытта қосылса немесе ысыру басылса, деңгей «000» мәніне қайта оралады. Әйтпесе, егер қосқыш дұрыс қосылса, деңгей соңғы күйге жеткенше жоғары жылжиды, «111» және аяқталатын дисплей пайда болады. FSM sync_proc және comb_proc екі технологиялық блокқа негізделген. Sync_proc біз PushClk деп атаған сағатты пайдаланады. Бұл сағат келесі күйдің қазіргі күйге қаншалықты тез айналатынын басқарады. Бұл сағат өте жылдам болуы керек; біз ең жылдам жарық диодты жылдамдығынан шамамен екі есе жылдамдықты таңдадық.

Біз бұл кодты FSM көмегімен деңгейлерге енгіздік; алайда, бұл жобадан кейін біз FSM-ді тиімдірек пайдалану санау күйі, қалпына келтіру күйі немесе қалу күйі болуы мүмкін екенін түсіндік. Егер ештеңе басылмаса, ол тоқтап қалу күйінде болады. Егер қалпына келтіру басылса немесе ойнатқыш шатастырылса, ол қалпына келтіру күйінде болады. Егер дұрыс басылса, ол санау күйінде болады. Бұл ойында FSM қолданудың басқа да көптеген әдістері бар!

7 -қадам: Дисплей процессінің деңгейін блокпен басқару

Деңгеймен дисплей процесінің блоктарын басқару
Деңгеймен дисплей процесінің блоктарын басқару

Деңгей Дисплей процессінің блогын басқарады. Сезімталдық тізіміндегі айнымалылар Level, Reset және Clk400 болып табылады. 7 сегменттің дисплейі бірінші деңгей үшін '1' көрсетуден басталады. Пайдаланушы деңгейден өткен сайын, ол 7 -ге дейін есептеледі. Пайдаланушы 7 -деңгейден өткеннен кейін, ойыншының ойынды жеңгенін білдіретін «COOL» белгісін көрсетеді. Бұл «COOL» дисплейі біз Clk400 деп атаған 400 Гц жиілікте жұмыс істейді. Егер Reset түймесі басылса, дисплей «1» мәніне қайтады.

8 -қадам: Жарық диодты жылдамдықты деңгеймен басқару

Жарық диодты жылдамдықты деңгеймен басқару
Жарық диодты жылдамдықты деңгеймен басқару

Соңында, деңгей светодиодтардың жылдамдығын басқарады. Деңгей - сезімталдық тізіміндегі жалғыз сигнал. D1 - бұл жаңа бөлік алу үшін Clock Divider процесіне енетін сигнал. Деңгей өзгерген сайын немесе күй өзгерген сайын «Жылдамдық» технологиялық блогы. Бұл процесс D1 мәнін анықтайды. D1 -дің 8 анықталған мәндері бар, олар әр деңгейдің қаншалықты жылдам орындалуын қалайтындығымызға байланысты таңдалды. D1 деңгейі жоғарылаған сайын кішірейе береді, осылайша жаңа түйін тезірек жұмыс істейді.

9 -қадам: аппараттық құралдарды жинау

Аппараттық қондырғы
Аппараттық қондырғы

Біз нан тақтасын Basod3 -ке pmod коннекторларының бірімен қостық. PMod порттарының алтауы еркек пен еркек қосқышқа қосылды, біреуі жерге, екіншісі 5 светодиодқа. Біз сондай -ақ әр жарықдиодты резисторды орналастырдық. Бұл резисторлар 220Ω және светодиодтардың қысқа тұйықталуына және жануына жол бермейді. Әрбір светодиоды белгілі бір қарсылыққа ие болса да, қарсылық көзден кернеуге кедергі келтіру үшін жеткіліксіз.

10 -қадам: Көңілді болыңыз

Бұл ойынды ойнау өте оңай. Ойыншы тақтаның 1 оң жақ шетіндегі қосқыштан бастайды, V17. Ортадағы жарық диоды қосулы кезде олар қосқышты жоғары қарай аударуы керек. Содан кейін олар бір қосқышты солға жылжытады және дәл солай жасайды! Егер ойыншы соңына дейін жетсе, олар W14 жетінші қосқышында болады. Егер олар ойынды жеңсе, олар шынымен көңілді аяқталатын дисплейді көреді!

Айта кету керек, бұл ойынды жасау кезінде жылдамдық сізге байланысты! Егер біз таңдаған жылдамдықтар тым баяу болса, оны тездетіп, одан да қиын етіңіз! Деңгейлердің белгіленген саны да жоқ. Егер сіз одан да көп деңгейге ие болғыңыз келсе, онда FSM мен Level анықтайтын процесс блоктарына өзгертулер енгізу қажет, бірақ бұл өте қарапайым өзгерістер.

Біз сонымен қатар пайдаланушы кірісі ретінде тақтадағы қосқыштарды пайдалануды таңдадық, бірақ бұл Basys3 тақтасындағы түйменің көмегімен де мүмкін; түйме пайдаланушы қайта бастаған сайын қосқыштарды қалпына келтіру қажеттілігін жояды. Біз бастапқыда түймені қолдандық, бірақ бұл деңгейді анықтауда қателіктер туғызды, себебі егер түймені басып тұрғанда PushClk -тің екі көтерілетін жиегі соғылса, ол бірнеше деңгейге секіреді.

Төменде қалай ойнау керектігін көрсететін бейне, алғашқы 4 деңгейден өту және соңғы дисплей.

Бұл жобаның негізгі файлы төменде берілген.

Дереккөздер

Basys3 анықтамалық нұсқаулығы

Жобаға шабыт - Arduino Stop It ойыны

Ұсынылған: