Spisu treści:

DIY Bieżnia VR-Basys3 FPGA-Digilent Contest: 3 kroki
DIY Bieżnia VR-Basys3 FPGA-Digilent Contest: 3 kroki

Wideo: DIY Bieżnia VR-Basys3 FPGA-Digilent Contest: 3 kroki

Wideo: DIY Bieżnia VR-Basys3 FPGA-Digilent Contest: 3 kroki
Wideo: FPGA Vio IMPLEMENTATION (Vivado 19.1) Part(1) 2024, Lipiec
Anonim
DIY Bieżnia VR-Basys3 FPGA-Digilent Contest
DIY Bieżnia VR-Basys3 FPGA-Digilent Contest

Chcesz zbudować Bieżnię VR, na której będziesz mógł uruchamiać swoje aplikacje i gry komputerowe? W takim razie trafiłeś we właściwe miejsce!

W konwencjonalnych grach używasz myszy i klawiatury do interakcji z otoczeniem. Dlatego musimy wysyłać takie same sygnały jak mysz i klawiatura, aby nie było problemów z kompatybilnością między naszą Bieżnią a grą. Zamiast rozbierać te urządzenia na części, stworzymy własne urządzenie, które będzie je możliwie jak najwierniej symulować.

Do wejść myszy użyjemy dysku z naprzemiennie przewodzącymi i nieprzewodzącymi plastrami, po których będą się ślizgały dwa przewody, z niewielkim przesunięciem. Płytka odczyta sygnały pochodzące z przewodów, dając nam jedną z czterech kombinacji: 00, 11, 10, 01, którą możemy bezpośrednio przełożyć na ruch lewo-prawo.

Do ruchu góra-dół zamiast krążka użyjemy talerza z tym samym układem zer i jedynek.

Jako wejścia dla modułu symulującego klawiaturę będziemy mieli przełączniki umieszczone na złączu drążka podtrzymującego uprząż. Gdy zrobisz krok w dowolnym kierunku, pręt lekko się ugnie, otwierając w ten sposób przełącznik.

(Pamiętaj, że projekt wciąż trwa i można go ulepszyć, więc czekam na wszelkie porady, które mogą go ulepszyć)

Krok 1: Baza

Baza
Baza
Baza
Baza
Baza
Baza

Podstawa powinna mieć nisko położony środek ciężkości, dlatego konieczne jest użycie ciężkiego materiału. W moim przypadku do wykonania wklęsłej formy użyłem gipsu i krążka antenowego, ale można użyć innych środków (np. piłka do jogi). Po wyschnięciu formy zostanie ona umieszczona na dwóch krążkach o tej samej średnicy wykonanych z MDF lub podobnego materiału. Między dwoma dyskami MDF zostanie wprowadzony odstępnik. Pomiędzy tymi dyskami zostanie umieszczony trójkątny profil, który ma łożyska na krawędziach. Kolejny zestaw łożysk zostanie umieszczony u góry prostopadle do wierzchołków trójkąta i stycznie do tarczy. Dla lepszej precyzji można zastosować więcej łożysk. Pręt zostanie umieszczony na jednym z wierzchołków, jak pokazano na trzecim rysunku. Ten pręt trzyma uprząż, w której zostanie umieszczony gracz.

Kolejny stały pręt zewnętrzny służy do podtrzymywania drutów, a także jako punkt odniesienia dla ruchu obrotowego.

Krok 2: Zarządzanie 2 wejściami

2 Zarządzanie wejściami
2 Zarządzanie wejściami
2 Zarządzanie wejściami
2 Zarządzanie wejściami
2 Zarządzanie wejściami
2 Zarządzanie wejściami

Z punktu widzenia czarnej skrzynki urządzenie będzie posiadało następujące wejścia: 4 złącza dla liczników myszy x, y, 2 złącza dla przycisków myszy i 4 złącza dla klawiszy strzałek. Wyjście jest reprezentowane przez 4 piny: 2 dla złącza PS2 myszy i kolejne 2 dla złącza PS2 klawiatury. Bardziej szczegółowy opis protokołu PS2 można znaleźć na następującej stronie:

Jako wejścia na płytkę wybrałem cyfrowe piny JB (1 do 0). Biorąc pod uwagę sekwencję …11001100…, odczytaną na dwóch wejściach, możemy wyróżnić trzy stany liczników:

1. Odliczaj;

2. Odliczanie;

3. Zapisz aktualną wartość;

Dokładnie to robi moduł Count_Type. W przypadku zmiany na wejściu moduł wysyła odpowiedni komunikat do licznika 8 bitowego (zaimplementowanego w pliku 8_bit_count.vhd), który dodaje lub odejmuje wartość bieżącą, chyba że otrzyma sygnał resetu.

Ten sam pomysł jest używany do ruchu głowicy w górę i w dół, ale zamiast dysku należy zastosować przesuwny profil liniowy z tym samym naprzemiennym wzorem 0 i 1.

Krok 3: Implementacja VHDL

Implementacja VHDL
Implementacja VHDL

Do prezentacji dołączone są następujące moduły:

1. Count_Type: ten moduł obsługuje dekodowanie dwóch przewodów wejściowych z dysku lub profilu, opisane w drugim kroku;

2. 8bit_count: ten moduł interpretuje zdekodowaną wiadomość z Count_Type i zwiększa lub zmniejsza liczniki;

3. 3-bajtowy pakiet: ten moduł zarządza stanem lewego i prawego przycisku oraz formatuje dane, aby można je było wprowadzić do 3-bajtowego pakietu danych używanego w protokole PS2;

4.clk12khz: ten moduł podaje zegar 12khz specyficzny dla protokołu PS2, na którym działają niektóre komponenty i procesy;

5. MessageManager: ten moduł wysyła 3-bajtowy pakiet danych, interpretuje go i daje odpowiednią odpowiedź, jako odpowiedź na wiadomość z komputera.

6. PS2Interface: ten moduł łączy protokół komunikacyjny między urządzeniem a hostem (PC) (ten moduł wymaga debugowania i dokładnej ponownej oceny, aby działał poprawnie).

Zalecana: