Spisu treści:

Program malowania VGA: 5 kroków
Program malowania VGA: 5 kroków

Wideo: Program malowania VGA: 5 kroków

Wideo: Program malowania VGA: 5 kroków
Wideo: marzenia jednak sie spelniaja #genzie #shorts 2024, Lipiec
Anonim
Program do malowania VGA
Program do malowania VGA

Projekt: Adam Klein, Ian Strachan, Brandon Slater

Projekt, który postanowiliśmy zrealizować, polegał na przechowywaniu, parsowaniu i wyświetlaniu informacji z myszy USB w postaci programu do malowania. Ideą projektu jest możliwość podłączenia myszy i kabli VGA do płyty Basys we wbudowanych portach i wyświetlania myszy jako ruchomego kwadratu do malowania na monitorze, zmieniając różne kolory po kliknięciu lewym i prawym przyciskiem myszy używany. Zasadniczo stworzylibyśmy sterownik do używania myszy z płytą podstawową i monitor jako naszą weryfikację funkcjonalności. To, co naprawdę się wydarzyło, to stworzenie programu do rysowania z płytą bazową jako systemem wejściowym i półfunkcjonalnym systemem do przechwytywania danych dla myszy.

W tej instrukcji podzielimy kroki od wejścia myszy do wyjścia VGA.

Krok 1: Motywacja i problem

Motywacja i problem
Motywacja i problem

Motywacja:

Główną motywacją dla naszego projektu było stworzenie sterownika myszy dla tablicy Basys3, który przyszli studenci CPE 133 będą mogli używać w przyszłości w swoich końcowych projektach. Jednak poszliśmy o krok dalej, tworząc program do malowania, z którego mogliby również budować przyszli studenci.

Problem:

Odkryliśmy problem polegający na tym, że nie ma przejrzystego modułu myszy gotowego do pobrania i użycia dla płyty Basys3. Aby rozwiązać ten problem, sami próbowaliśmy go stworzyć. W ten sposób dążyliśmy do stworzenia modułu myszy, który umożliwi przyszłym studentom łatwiejsze wdrażanie danych wejściowych za pomocą myszy w swoich projektach.

Krok 2: Uzyskiwanie informacji o surowych bitach z USB Basys

Pobieranie surowych informacji o bitach z USB Basys
Pobieranie surowych informacji o bitach z USB Basys
  • Wiele z tego, co zrobiliśmy dla myszy w tym projekcie, pochodzi z dokumentacji Basys3. Z małego przewodnika po porcie USB Basys w tym pliku PDF odkryliśmy, że płyta Basys ma wbudowany zegar do odczytywania bitów z odpowiednią prędkością z urządzeń USB.
  • Zasadniczo mysz wysyła bity do usb, zaczynając od stanu bezczynności, odczytuje 32 bity reprezentujące stan myszy, pozycję x i pozycję y, a na końcu kończy się kolejnym bitem bezczynności. Aby to zrobić, komponent wejściowy myszy używa rejestru przesuwnego i licznika 32-bitowego, gdzie rejestr przesuwny służy do przechowywania 32 bitów danych przychodzących z myszy, a licznik 32-bitowy służy do zliczania liczby przechowywanych bitów, umożliwiając stan Zarejestruj się, aby zresetować i zapisać następny zestaw 32 przychodzących bitów.
  • Kod rejestru przesuwnego, licznika 32-bitowego i czytnika danych można pobrać poniżej, a także plik z ograniczeniami dostosowany do wykorzystania przez nas portu USB jako wejścia

Krok 3: Parsowanie informacji USB

Analiza informacji USB
Analiza informacji USB
Analiza informacji USB
Analiza informacji USB
  • Po utworzeniu wejścia myszy do komponentu USB, następnym krokiem było stworzenie komponentu bitów USB do informacji wektorowych, który sprawi, że dane odebrane przez mysz będą czytelne dla vga.
  • Ten komponent wykorzystuje maszynę stanów, która pobiera zestaw bitów wysyłanych przez wejście myszy do usb i przechodzi przez stany w oparciu o to, czy wprowadzono nowe bity zmieniające stan i pozycję myszy.
  • Pokazano tutaj schemat blokowy dla pierwszych dwóch etapów projektu, a dwa pliki vhdl służą do testowania implementacji myszy za pomocą diod LED podstawy (test, który niestety nigdy nie został zaliczony) oraz do przesyłania strumienia bitów z USB port, aby przyspieszyć i ustawić wektory, z których może korzystać karta VGA.
  • Obraz obok powyższego schematu blokowego jest małą migawką (Instructables nie pozwala nam wyświetlać pełnego obrazu) informacji bitowych, które znaleźliśmy w dokumentacji bazy, aby wykonać ten krok.

Krok 4: Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane

Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane
Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane
Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane
Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane
Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane
Wyświetlanie namalowanego obrazu przez VGA i edycja tego, co jest rysowane
  • Kabel VGA ma 14 bitów wyjścia, 4 bity dla każdego z trzech kolorów oraz bit synchronizacji poziomej i pionowej.
  • OtherVGA to dostarczony moduł VGA, który działa w następujący sposób:

    • Monitor jest podzielony na bloki 40x30 po 16x16 pikseli dla ekranu o rozdzielczości 640x480, jak widać na powyższym obrazku. Moduł wybiera adres bloku reprezentujący jeden z 1200 bloków na monitorze. Adres bloku wybiera się za pomocą następującego równania: adres = 40y + x
    • Kolor jest reprezentowany przez 12-bitowy sygnał, który jest skorelowany z wartością RRRRGGGGBBBB, która koloruje wybrany blok.
  • Nasz kod kontrolny, VGAtest i VGAtestconst, działa w następujący sposób:

    • Najpierw ustawia wybrany blok na środku monitora.
    • Kolor bloku jest określany przez 12 przełączników na płytce, ustawiających wartość RRRRRGGGGBBBB.
    • Cztery przyciski kierunkowe na tablicy zmieniają wybrany adres. Na przykład naciśnięcie prawego przycisku doda 1 do adresu, wybierając blok jeden na prawo od poprzedniego bloku. Naciśnięcie przycisku w dół doda 40 do adresu, wybierając blok jeden poniżej poprzedniego bloku.
    • Środkowy przycisk służy do ustawiania wszystkich wartości kolorów na 0 po naciśnięciu. Ma to zachowywać się jak przycisk wymazywania, który jest łatwy w użyciu dla użytkownika, więc użytkownik nie musi przestawiać każdego przełącznika na 0, aby wymazać.
  • Ostatni obraz to schemat blokowy sterownika. Jest dość szeroki, ponieważ zawiera komponenty modułu i może nie być wyświetlany w całości.

Krok 5: Ciesz się swoim dziełem

Połączony tutaj jest szybki timelapse zabawy, jaką możesz mieć z ostatecznym projektem, nawet po prostu używając przełączników i przycisków na płycie podstawy jako danych wejściowych.

Dziękuje za przeczytanie!

Zalecana: