Съдържание:
Видео: Конкурентна игра срещу времето за 2 играча: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Ще имаш нужда:
1. Digilent Basys 3, FPGA Board (или всяка друга FPGA,)
2. Сравнително актуална версия на Vivado или друга VHDL среда
3. Компютър, който може да изпълнява споменатата програма.
Стъпка 1: Самата игра
Как FSM взаимодейства с модулите.
Как да играя
За да започнете, натиснете средния бутон. Това ще накара „99“, представляващ здравето на играча двама, да се покаже на седем сегментния дисплей. След това светодиодите ще светнат последователно отдясно наляво. Това образува захранваща лента. След като лентата за захранване е пълна, тя се нулира. Целта на играч едно е да обърне превключвателя си, когато лентата е възможно най -висока. Колкото повече светодиоди светят, толкова повече щети нанася играч на играч двама. След като играч един обърне превключвателя си, нанесените щети се приспадат от здравето на играч двама. След това преминава на ред на играч два. Сега показаният номер показва здравето на играча, а лентата за захранване се запълва отляво надясно. След като играч двама направи своя ход, щетите се приспадат и той отново е на ред на играч един. Това се повтаря, докато един играч достигне 0 здраве. Видеото на това функциониране е приложено.
Стъпка 2: FSM
Тази игра е по същество една голяма машина с крайни състояния, в която се случва някаква сложна логика, базирана на състоянието, в което се намира FSM.
Състояние 1: Меню Първото състояние е екранът на менюто, което е едно от по -простите състояния. Той включва седем сегментния дисплей, показващ думата „PLAY“, и бутона, който кара играта да започне. Бутонът, BTN, ни води до следващото състояние, което е ред на играча.
Състояние 2: Ред на Играч Първи
Ходът на един играч активира сигнал, който кара седемсегментния дисплей да показва здравето на Играч втори. Друг сигнал се включва за активиране на регистър за смяна, импортиран от друг модул, който създадохме (Pone.vhd). Този регистър на смяна кара светодиода да свети като увеличаващ се манометър в други игри и след това ще се нулира до 0, когато достигне максималното количество светодиоди, което може да светне. Той актуализира нарастващия ръб на часовника, получен от barclock.vhd, който е променен от заимстван лабораторен файл. Имахме бара на играча, който започва отдясно и се запълва отляво, защото превключвателят на играча е също отляво (за интуитивно потребителско изживяване). След като превключвателят се обърне, състоянието преминава към приспадане на играча и количеството активен светодиод се записва в сигнал.
Състояние 3: Приспадане на играч 1 Сигналът с количеството активен светодиод определя размера на здравето, което се приспада. Това става чрез друг регистър на смяна (deductor1.vhd), който вместо да увеличава светодиодите, ги намалява. Това намалява на нарастващия ръб на един от модулите div div, които заимствахме и модифицирахме (downcounterclock.vhd). Точно когато един светодиод е изключен, една точка от здравето се приспада от общото състояние на играча двама. Ако по време на този процес играч двама достигне 0 здраве, ние спираме и незабавно преминаваме в състояние „Играта приключи“. В противен случай, след като светодиодният вектор достигне „0000000000000000“, преминаваме към хода на играча двама.
Състояние 4: Редът на Играч Втори Играчът на двама е точно като на играча на първия, с изключение на регистъра за смяна за него (Ptwo.bhd) отива отляво надясно, а превключвателят е от дясната страна на дъската. Активира се сигнал, за да има здравословен дисплей на Player 1. След като превключвател 2 е активен, това преминава към приспадането на играча Втори.
Етап 5: Приспадане на играч втора Точно като ред на играч двама, приспадането на играч втори действа много като приспадане на играч първи. Основната разлика е, че регистърът за смяна, който контролира изключването на светодиода, върви в обратната посока, което е лесна промяна, която трябва да направите, след като приспадането на играча работи правилно.
Етап 6: Играта приключи Ако в даден момент някой от играчите достигне нулево здраве, играта преминава в това състояние. Нищо изискано. Ако се натисне BTN, здравето се възстановява до 99 и състоянието се връща към менюто, като ефективно започва играта отначало.
Стъпка 3: Модули
Диаграма на черна кутия за игра
Downcounterclock (въз основа на модула clk_div.vhd от Bryan Mealy):
Това е часовникът, който се грижи за времето на удържането. Константата с име max_count е 3 пъти повече от константата max_count на barclock. Това ще направи удръжките 3 пъти по -бавни от скоростта на лентата.
Barclock - (въз основа на модул clk_div.vhd от Bryan Mealy):
Този часовник обработва времето на измервателните уреди, което увеличихме бързо, за да добавим трудност в играта. Това време може да се регулира според вашите предпочитания, увеличавайки скоростта, като прави константата max_count по -голямо число, или я намалява, като прави max_count по -малко число. Sseg_dec - (Написано от Bryan Mealy): Този модул приема 8 -битово число като вход, което декодира, преобразувайки числото в неговия десетичен еквивалент и след това извежда на дисплея със седем сегмента. За да работи този файл, трябва да се уверите, че вашите ограничения съответстват на нашите.
Поне:
Това е регистър на смяна, който измества битовете наляво, добавяйки един горещ бит, за да изглежда, че манометърът се увеличава. Когато всички битове са горещи, всички битове се нулират на „0“и цикълът започва отначало.
Ptwo:
Това е обърната версия на модула P1.
Дедуктор 1:
Това е комбинация от регистър за смяна и изваждач. Регистърът на смяна се движи в обратна посока на регистъра на смяна на P1, което показва приспадане. Това също изважда 1 от здравето на Player 2 за всеки часовник, така че с комбинацията от тези две функции, ще изглежда, че здравето на противника намалява с 1 за всеки светодиод на лентата за здраве, който се понижава.
Deductor2: Това е обърната версия на модула Deductor1.
PlayDecoder (заимстван и модифициран от ekchen35649 неговите 133 инструкции): Това се използва в състоянието на менюто за показване на думата „PLAY“на седемсегментния декодер.
Стъпка 4: Тествайте
Тази игра първоначално е вдъхновена от една от мини игрите на Kirby. Това е проста игра за двама играчи, която може да се играе на Basys 3 Board или на всяка друга FPGA.
Стъпка 1: Необходими материали
Ще ви трябват: Digilent Basys 3, FPGA Board (или всяка друга) Сравнително актуална версия на Vivado или някаква друга vhdl среда Компютър, който може да изпълнява споменатата програма A brain
Стъпка 2: Самата игра
Как да играя
За да започнете, натиснете средния бутон. Това ще накара „99“, представляващ здравето на играча двама, да се покаже на седем сегментния дисплей. След това светодиодите ще светнат последователно отдясно наляво. Това образува захранваща лента. След като лентата за захранване е пълна, тя се нулира. Целта на играч едно е да обърне превключвателя си, когато лентата е възможно най -висока. Колкото повече светодиоди светят, толкова повече щети нанася играч на играч двама. След като играч един обърне превключвателя си, нанесените щети се приспадат от здравето на играч двама. След това преминава на ред на играч два. Сега показаният номер показва здравето на играча, а лентата за захранване се запълва отляво надясно. След като играч двама направи своя ход, щетите се приспадат и той отново е на ред на играч един. Това се повтаря, докато един играч достигне 0 здраве. Видеото на това функциониране е приложено.
За да играете играта, заредете я на basys board и натиснете средния бутон. Опитайте се да завъртите превключвателя с възможно най -много активни светодиоди и след това изчакайте и гледайте, докато дъската приспада тези точки от здравето на противника. След това го предайте на приятеля си и
Стъпка 3: FSM
Тази игра е по същество една голяма машина с крайни състояния, в която се случва някаква сложна логика, базирана на състоянието, в което се намира FSM.
(Диаграма на състоянието)
Състояние 1: Меню
Първото състояние е екранът на менюто, което е едно от по -простите състояния. Той включва седем сегментния дисплей, показващ думата „PLAY“, и бутона, който кара играта да започне. Бутонът, BTN, ни води до следващото състояние, което е ред на играча.
Състояние 2: Редът на Играч Първи
Редът на един играч активира сигнал, който кара седемсегментния дисплей да показва здравето на Играч втори. Друг сигнал се включва за активиране на регистър за смяна, импортиран от друг модул, който създадохме (Pone.vhd). Този регистър на смяна кара светодиода да светне като увеличаващия се манометър в другите игри и след това ще се нулира до 0, когато достигне максималното количество светодиоди, което може да светне. Той актуализира нарастващия ръб на часовника, получен от barclock.vhd, който е променен от заимстван лабораторен файл. Имахме бара на играча, който започва отдясно и се запълва отляво, защото превключвателят на играча също е отляво (за интуитивно потребителско изживяване). След като превключвателят се обърне, състоянието преминава към приспадане на играча и количеството активен светодиод се записва в сигнал.
Състояние 3: Приспадане на Играч 1
Сигналът с количеството активен светодиод определя размера на здравето, което се приспада. Това става чрез друг регистър на смяна (deductor1.vhd), който вместо да увеличава светодиодите, ги намалява. Това намалява с нарастващия ръб на един от часовниковите div модули, които заимствахме и модифицирахме (downcounterclock.vhd). Точно когато един светодиод е изключен, една точка от здравето се приспада от общото състояние на играча двама. Ако по време на този процес играч двама достигне 0 здраве, ние спираме и незабавно преминаваме в състояние „Играта приключи“. В противен случай, след като светодиодният вектор достигне „0000000000000000“, преминаваме към хода на играча двама.
Състояние 4: Редът на Играч Втори
Ходът на двама играчи е точно като на играча на първия, с изключение на регистъра за смяна (Ptwo.bhd), който отива отляво надясно, а превключвателят е от дясната страна на дъската. Активира се сигнал, за да има здравословен дисплей на Player 1. След като превключвател 2 е активен, това преминава към приспадането на играча Втори.
Етап 5: Приспадане на играч втора
Точно както играчът на втория играч, приспадането на играч втори действа много като приспадане на играч първи. Основната разлика е, че регистърът за смяна, който контролира изключването на светодиода, върви в обратната посока, което е лесна промяна, която трябва да направите, след като приспадането на играча работи правилно.
Етап 6: Играта приключи Ако в даден момент някой от играчите достигне нулево здраве, играта преминава в това състояние. Нищо изискано. Ако се натисне BTN, здравето се възстановява до 99 и състоянието се връща към менюто, като ефективно започва играта отначало.
Черна кутия
Стъпка 4: Модули
Downcounterclock (въз основа на модула clk_div.vhd от Bryan Mealy):
Това е часовникът, който се грижи за времето на дедукторите. Константата с име max_count е 3 пъти повече от константата max_count на barclock. Това ще направи удръжките 3 пъти по -бавни от скоростта на лентата.
Barclock - (въз основа на модула clk_div.vhd от Bryan Mealy): Този часовник обработва времето на измервателните уреди, което увеличихме бързо, за да добавим трудност в играта. Това време може да се регулира според вашите предпочитания, увеличавайки скоростта, като прави константата max_count по -голямо число или я намалява, като прави max_count по -малко число. Sseg_dec - (Написано от Bryan Mealy): Този модул приема 8 -битово число като вход, което декодира, преобразувайки числото в неговия десетичен еквивалент и след това извежда на дисплея със седем сегмента. За да работи този файл, трябва да се уверите, че вашите ограничения съответстват на нашите.
Pone: Това е регистър за смяна, който измества битовете наляво, добавяйки един горещ бит, за да изглежда, че манометърът се увеличава. Когато всички битове са горещи, всички битове се нулират на „0“и цикълът започва отначало.
Ptwo: Това е обърната версия на модула P1.
Deductor1: Това е комбинация от регистър за смяна и извадител. Регистърът на смяна се движи в обратна посока на регистъра на смяна на P1, което показва приспадане. Това също изважда 1 от здравето на Player 2 за всеки часовник, така че с комбинацията от тези две функции, ще изглежда, че здравето на противника намалява с 1 за всеки светодиод на лентата за здраве, който се понижава.
Deductor2: Това е обърната версия на модула Deductor1.
PlayDecoder (заимстван и леко модифициран от ekchen35649 неговите 133 инструкции):
Това се използва в състоянието на менюто за показване на думата „PLAY“на седемсегментния декодер.
Задачи: снимки, видео
Препоръчано:
Пощенска платка за 2 играча: 3 стъпки
PCB с понг за 2 играчи: В това ръководство можете да изградите преносима игра за понг с 2 играчи. Този дизайн е създаден около код, публикуван на GitHub от Onur Avun. Хареса ми създаването на този проект, надявам се да ви хареса да го изградите
Безжичен семеен контролер за 4 играча: 3 стъпки
Безжичен семеен контролер за 4 играчи: Това е безжичен контролер в аркаден стил, на който 4 души могат да играят наведнъж. Той е безжичен, така че не е нужно да свързвате компютъра си към контролер, който се използва от 5 -годишни. Те падат непрекъснато и не искам да унищожават всичките ми играчки, когато
Конкурентна зумер система: 5 стъпки
Конкурентна система за зумер: Състезателната система за зумер, проектирана в този проект, работи подобно на системите за зумери, използвани в регионалните и националните състезания за научни съдове. Този проект беше вдъхновен от участието ми с екипа за научни съдове на моята гимназия за три
Нечетен или четен игра на крикет с ръка срещу интелигентност, добавен компютър в C ++: 4 стъпки
Нечетен или четен игра на крикет с ръка или интелект, добавен компютър в C ++: ръчен крикет/ нечетно или четно е популярна игра сред нас още от училищните дни. В тази инструкция ние разработваме тази игра на C ++. Това е игра за един играч, в която трябва да играете срещу компютър, който не е тъп. Компютърът не въвежда произволен номер
Показване на времето и времето на Arduino 3 в 1: 11 стъпки
Arduino 3-в-1 дисплей за времето и времето: Харесвам PIC микроконтролерите и харесвам програмирането на асемблер. Всъщност през последните няколко години публикувах около 40 проекта на моя уебсайт въз основа на тази комбинация. Наскоро поръчах някои части от един от любимите ми американски