Spisu treści:
- Krok 1: Przegląd
- Krok 2: Materiały
- Krok 3: Tworzenie gry
- Krok 4: Wyświetlanie wyniku
- Krok 5: Składanie wszystkiego razem
- Krok 6: Przyszłe modyfikacje
- Krok 7: Wniosek
Wideo: Gra Asteroid FPGA: 7 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
W naszym projekcie końcowym CPE 133 postanowiliśmy stworzyć grę o asteroidach na naszym FPGA za pomocą dwóch przełączników przyciskowych i 7-segmentowego wyświetlacza. Gra działa tak, że asteroida pojawia się w jednym z trzech losowo wybranych rzędów i pędzi w kierunku statku po drugiej stronie 7-segmentowego wyświetlacza. Górny i dolny przycisk mogą służyć do przesuwania statku z dala od asteroidy. Jeśli tego nie zrobisz, na wyświetlaczu przez chwilę pojawi się napis „Bang”, a następnie gra zostanie szybko zrestartowana, aby użytkownik mógł spróbować ponownie. Poniżej znajduje się krótki opis tego, jak projekt został wykonany, aby każdy użytkownik mógł powielić lub ulepszyć nasz projekt.
Krok 1: Przegląd
Projekt w dużej mierze składa się z maszyn skończonych (FSM), które wykorzystują logikę do przesyłania FPGA między stanami, które przechowują i wyświetlają różne wartości pozycji statku i skały. Dwa główne moduły to FSM gry dla skały i statku oraz binarny do 7-segmentowego dekoder wyświetlacza FSM, które są zintegrowane ze sobą przy użyciu bardzo prostego modelu strukturalnego w VHDL.
FSM zostały stworzone dla pozycji statku, pozycji skały oraz dla 7-segmentowego dekodera. Celem FSM statku jest to, aby statek mógł przesunąć się do właściwej pozycji, gdy gracz naciśnie przycisk w górę lub w dół. FSM jest potrzebny, ponieważ musi pamiętać, w której pozycji był ostatnio, aby przejść do właściwej pozycji.
Celem FSM skały jest przesunięcie skały do właściwej pozycji w zależności od tego, w którym rzędzie się znajduje i ostatniej pozycji w tym rzędzie. Ponadto śledzi pozycję modułu, który ją wyświetli, i pseudolosowo wybiera nowy wiersz, który ma się pojawić w następnej kolejności.
FSM dla dekodera z 7-segmentowym wyświetlaczem był używany nie tylko do wyświetlania statku i skały, ale także do wyświetlania „BanG”, gdy pozycja statku i pozycja skały są takie same.
Krok 2: Materiały
Materiały użyte w projekcie to:
- Płytka rozwojowa Basys3 firmy Digilent, Inc.
- Apartament Vivado Design
- sseg_dec.vhd (Ten plik został dostarczony przez Polylearn i został napisany przez Bryana Mealy'ego)
- Clk_div.vhd (Ten plik został dostarczony do Polylearn i został napisany przez Bryana Mealy'ego)
- Trzy maszyny skończone (FSM)
Krok 3: Tworzenie gry
Moduł gry został stworzony przy użyciu modelowania behawioralnego w celu opisania stanów statku i skały dla ich własnych FSM. Zaletą tego jest to, że znacznie łatwiej jest modelować obwód behawioralnie, opisując to, co robi, niż zastanawiając się nad wszystkimi komponentami potrzebnymi do zaprojektowania sprzętu.
Stany skały zostały wykonane przy użyciu generatora liczb pseudolosowych dla pierwszej pozycji skały. Aby to osiągnąć, nadaliśmy generatorowi własny zegar, który był niezwykle szybki w stosunku do szybkości gry. Na każdym zboczu narastającym zwiększana jest trzybitowa liczba, a wszystkie jej wartości odpowiadają jednemu z trzech stanów początkowych statku. Dlatego trzy wartości odpowiadają pozycji 3 (prawy górny róg), trzy odpowiadają pozycji 7 (środek), a dwie odpowiadają pozycji 11 (prawy dolny róg).
Gdy nastąpi losowe generowanie, a asteroida otrzyma stan początkowy, płynie poziomo w kierunku statku bez przerwy.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
Zegar używany do logiki następnego stanu skały kontroluje prędkość gry; metodą prób i błędów odkryliśmy, że 9999999 to dobra wartość dla jego maksymalnej liczby.
Logika statku działa poprzez inicjalizację w pozycji środkowej (pozycja 4) po lewej stronie. Jeśli naciśnięty zostanie górny lub dolny przycisk, statek będzie poruszał się w górę iw dół do pozycji 0 i 11 odpowiadających wciśniętemu przyciskowi.
Aby ruch statku był przyjemny dla użytkownika, nie uczyniliśmy jego ruchu asynchronicznym. Użyliśmy zegara do zmian jego stanu i użyliśmy maksymalnej liczby 5555555.
Krok 4: Wyświetlanie wyniku
Dekoder binarny na 7-segmentowy pobiera 4-bitowe zmienne pozycji statku i asteroidy i wyświetla odpowiedni obraz (statek i skała lub komunikat „BAnG”).
Osiąga to, najpierw sprawdzając, czy oba są równe, a następnie wyświetlając komunikat „BAnG”, jeśli sprawdzenie zwróci prawdę.
Jeśli nie zwróci prawdy, dekoder wyświetli statek i skałę, przełączając się między nimi z bardzo wysoką częstotliwością zegara i oszukując oko, aby zobaczyło je tak, jakby były wyświetlane w tym samym czasie.
Krok 5: Składanie wszystkiego razem
Objęliśmy FSM statku i skały w jednym dużym FSM, który podłączyliśmy do wyświetlacza FSM. Wejście do gry to przycisk w górę i przycisk w dół na płycie BASYS3 oraz zegar systemowy. Wyjściami są segmentowe i anodowe wektory siedmiosegmentowe.
Te dane wejściowe i wyjściowe będą widoczne w pliku ograniczeń, w którym są mapowane na porty.
Krok 6: Przyszłe modyfikacje
W przyszłości ulepszeniem byłoby dodanie do projektu większej liczby funkcji ruchu statków. Można to osiągnąć po prostu wprowadzając 2 dodatkowe przyciski i pozwalając statkowi na zajmowanie pozycji (stanów) innych niż 0, 4 i 8. Inną możliwą modyfikacją może być kontrolowanie czasu następnego stanu asteroidy, tak aby zaczynał się powoli i zwiększał prędkość o 1,5 raza za każdym razem, gdy nie trafi w statek, dopóki nie otrzyma trafienia, po czym zrestartuje się i znów zwolni. Zwiększyłoby to trudność gry i sprawiłoby, że gra byłaby przyjemniejsza dla użytkownika, gdyby została zaimplementowana, i można by to zrobić, tworząc zmienną dla maksymalnej liczby zegara następnego stanu skały, mnożąc tę zmienną przez 1,5 za każdym razem, gdy asteroida 't hit, i resetowanie go do początkowej wartości za każdym razem, gdy uderzy kamień.
Krok 7: Wniosek
Ten projekt pomógł nam lepiej zrozumieć automaty skończone, zegary i interaktywne wyświetlanie na wyświetlaczach siedmiosegmentowych.
Najważniejszą rzeczą w automatach skończonych jest to, że ważne jest, aby wiedzieć (pamiętać), w jakim stanie się aktualnie znajdujesz, aby przejść do następnego pożądanego stanu. Jak na ironię, dobra rada życiowa; musisz wiedzieć, gdzie jesteś, aby wiedzieć, dokąd zmierzasz.
Manipulując różnymi instancjami zegarów, byliśmy w stanie losowo generować liczby, przesuwać kamień do następnej pozycji i zarządzać wyświetlaniem statku, kamienia i wiadomości o zakończeniu gry.
Dowiedzieliśmy się, że więcej niż jedna anoda nie może być jednocześnie wyświetlana. Podarowany nam moduł wykorzystał fakt, że ludzkie oko widzi różnicę tylko do określonej częstotliwości. Wybrano więc wyższą częstotliwość przełączania anod. Widoczne jednocześnie statek i skała jest właściwie aluzją, ponieważ każdy z nich jest wyświetlany osobno, ale bardzo szybko. Ta koncepcja została zastosowana do wyświetlenia ruchu statku, skały i komunikatu „BanG”.
Zalecana:
BBC Micro:bit and Scratch - interaktywna gra z kierownicą i prowadzeniem: 5 kroków (ze zdjęciami)
BBC Micro:bit i Scratch – interaktywna gra o kierownicę i kierowanie: Jednym z moich zadań klasowych w tym tygodniu jest użycie BBC Micro:bit do połączenia z programem Scratch, który napisaliśmy. Pomyślałem, że to idealna okazja do wykorzystania mojego ThreadBoard do stworzenia systemu wbudowanego! Moja inspiracja do zdrapki
Gra 3d Maze przy użyciu Arduino: 8 kroków (ze zdjęciami)
Gra w labirynt 3D przy użyciu Arduino: Cześć przyjaciele, więc dzisiaj zamierzamy stworzyć grę w labirynt przy użyciu ARDUINO UNO. Ponieważ Arduino Uno jest najczęściej używaną planszą, bardzo fajnie jest tworzyć z nią gry. W tej instrukcji stwórzmy grę w labirynt, którą steruje się za pomocą joysticków.Nie zapomnij
Gra Aruduino LED Szybkie klikanie Gra dla dwóch graczy: 8 kroków
Aruduino LED Game Fast Clicking Two Player Game: Ten projekt jest inspirowany @HassonAlkeim. Jeśli chcesz przyjrzeć się bliżej, oto link, który możesz sprawdzić https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ta gra jest ulepszoną wersją Alkeima. To jest
Ostateczna gra komputerowa Simon mówi, że gra: 3 kroki
Finał inżynierii komputerowej Gra Simon Mówi: Mój pomysł: Mój projekt to gra Simon Mówi. W tej grze są cztery diody LED i cztery przyciski. Muzyka będzie odtwarzana z brzęczyka, a diody LED zaświecą się dopasowując się do muzyki. Wtedy rozpocznie się gra. Zaświeci się dioda LED i trzeba kliknąć tyłek
Gra reakcji FPGA: 10 kroków
Gra reakcji FPGA: przez Summer Rutherford i Regita Soetandar