logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kostka rubika / konsola do gier na FPGA

webmortiz 15 Sty 2009 08:20 10145 11
REKLAMA
  • Kostka rubika / konsola do gier na FPGA

    W ramach pracy magisterskiej (od której już trochę mineło) złożyłem konsolę do gier, która napędzana jest przez układ FPGA, w tym przypadku Spartana 3 na płytce ZL10PLD z oferty firmy BTC (to nie reklama ;)). Sprzęt sam w sobie nie ma jakichś niesamowitych hardwarów typu akcelerometry czy jakieś HD dolby saraund. Z bajerów posiada jedynie kolorowy wyświetlacz z Nokii 6100 (na mikrokontrolerze Epson).

    Głównym założeniem miał być taki projekt który umożliwi pisanie gier w vhdlu, korzystając z dostępnych (napisanych przezemnie) bibliotek.

    Pierwotny projekt miał w rzeczywistości być handheldem, co widać na poniższym zdjęciu (w tym przypadku z pierwotnego pcb był wykorzystywany fragment obsługujący wyświetlacz). Problemem okazała się obsługa tego wyświetlacza bezpośrednio z FPGA (to jeszcze jak działałem na displayu z mikrokontrolerem Philips).

    Kostka rubika / konsola do gier na FPGA

    Dlatego zmieniłem koncepcję (i przy okazji wyświetlacz na Epson, ale nie wiem czemu to zrobiłem ;)) i złożyłem z ATmegi8 mini kartę graficzną, pozwalającą rysować podstawowe figury. Dane z FPGA do karty są wysyłane poprzez rs232. A efekt na rysunku powyżej.

    Całość złożyłem na własnej roboty jakiejś tam ubogiej płytce. Programator do FPGA też sobie sam zrobiłem ;) i dostępny jest tu: Parallel cable

    Kostka rubika / konsola do gier na FPGA

    Nie ma tam nic skomplikowanego, podstawowa aplikacja z ATmega8 + gotowy moduł z układem FPGA. Ciekawostką z tego jest to że niewiele modyfikując firmware ATmegi (w sensie soft który udawał kartę graficzną ;)) odpaliłem ostatnio na tym sprzęcie czytnik RFID ;)

    Dodatkowo złożyłem sobie płytkę pod wyświetlacz, żeby było bardziej sexi i uniwersalnie jak będę korzystał z wyświetlacza w innych projektach.

    Kostka rubika / konsola do gier na FPGA

    W chwili wolnej napisałem sobie soft na wyświetlacz z mikrokontrolerem Philips i okazało się że egzemplarz który mi nie chciał działać pod FPGA naprawdę wogóle nie działał (mam dwie sztuki, drugi działa).

    Sama gra czyli Rubik, to poprostu maszyna stanów która wysyła w każdym ze stanów jakąś część informacji o kolorach i ich umiejscowieniu w macierzy, która jest obrabiana poprzez buttony podłączone pod FPGA. Tak więc wielkiej filozofii tu też nie ma ;) Nie kłopotałem się też w zabawy z losowym mieszaniem kostki czy warunkami ułożenia całej. A dlaczego tego nie zrobiłem? Z dwóch powodów:
    1. Nie chciało mi się
    2. Zrobiłem, ale oprogramowanie przestało się mieścić w układzie tak więc dałem sobie spokój.

    No to chyba na tyle. Opis mało wyczerpujący, bo nie wiem jak to tam z prawami do swojej pracy magisterskiej VS uczelnia. Ale jak co to odpowiem na pytania jeżeli jakieś są.

    Fajne? Ranking DIY
    O autorze
    webmortiz
    Poziom 20  
    Offline 
    Specjalizuje się w: uc, fpga, c#.net, c, hardware, software
    webmortiz napisał 467 postów o ocenie 15, pomógł 24 razy. Mieszka w mieście Poznań. Jest z nami od 2007 roku.
  • REKLAMA
  • #2 6001309
    zxcvbnm1971
    Poziom 2  
    Posty: 2
    webmortiz napisał:
    Opis mało wyczerpujący, bo nie wiem jak to tam z prawami do swojej pracy magisterskiej VS uczelnia. Ale jak co to odpowiem na pytania jeżeli jakieś są.


    Jeżeli od obrony upłynął rok a uczelnia nie opublikowała pracy, autorskie prawa majątkowe przechodzą na Ciebie. Jeżeli nie ma jeszcze roku możesz wystąpić z prośbą o przekazanie praw. Oczywiście jeśli dobrze pamiętam i się nic nie zmieniło.

    Pozdrawiam.
  • REKLAMA
  • #3 6001506
    krzycho123
    Poziom 31  
    Posty: 1867
    Pomógł: 135
    Ocena: 106
    webmortiz , a możesz pokazać jak to działa w praktyce ? jakiś film albo jakieś screnny z działania mógłbyś dorzucić .

    Powiedz jak działa karta na ATmega8 , nie jest to za słaby kontroler do obsługi takiego wyświetlacza ?
    Wokorzystałeś max rozdzielczość (128x128) tego LCDka ?

    Pozdrawiam
  • #4 6002776
    webmortiz
    Poziom 20  
    Posty: 467
    Pomógł: 24
    Ocena: 15
    krzycho123: Atmega8 (śmiga na 4 MHz) jest powiedzmy że w sam raz. Wykorzystuję pełną rozdzielczość. Nie ma tam żadnego 3d tylko rzut izometryczny na 3 ściany tak więc bez problemu. Jak będę miał dostęp do jakiegoś urządzenia rejestrującego to zgram filmik.

    kaldachar: możesz wszystko ale wcześniej musisz mieć uprawnienia SEP do 10 V i pamiętaj że jako 13 latek musisz mieć podpis taty ;p
  • REKLAMA
  • #5 6003090
    kaken
    Poziom 15  
    Posty: 203
    Pomógł: 4
    Ocena: 3
    Fajna zabawka ale czemu aż FPGA? Jak mega obrabiała grafike to czym zajmowały się te spore moce obliczeniowe Spartana3? Korzystałeś z Xilinxa ISE?
  • #6 6003124
    michal.rogaczewski
    Poziom 28  
    Posty: 1401
    Pomógł: 94
    Ocena: 82
    webmortiz napisał:
    kaldachar: możesz wszystko ale wcześniej musisz mieć uprawnienia SEP do 10 V i pamiętaj że jako 13 latek musisz mieć podpis taty ;p


    Myślałem że SEP są od 1kV :P

    A tak w temacie to spróbuj zrobić taką "kanapkę" z płytek, jeśli nie możesz zmieścić sie na jednej :)
  • REKLAMA
  • #7 6006026
    webmortiz
    Poziom 20  
    Posty: 467
    Pomógł: 24
    Ocena: 15
    kaken: aż FPGA bo taki miałem temat pracy, a poza tym kostka rubika to tylko program uruchomieniowy. Jeżeli na PS3 wyszła jakaś kiepska gra to zapytałbyś dlaczego aż Cell? A poza tym tyle się już konsol naoglądałem na ATmegach i podobnych że FPGA to takie nowatorskie podejście(tak bynajmniej wczytałem w recenzji pracy ;)). I korzystałem z ISE 10.1(o ile dobrze pamiętam). Czekam teraz jak ktoś cyknie coś podobnego na DSP albo PLC ;)

    michal.rogaczewski:

    Cytat:
    A tak w temacie to spróbuj zrobić taką "kanapkę" z płytek, jeśli nie możesz zmieścić sie na jednej Smile


    Nie do końca rozumiem o co b :/ Ale ogólnie urządzenie miało być prototypem tak więc nie walczyłem z obudową i żeby to ładnie wyglądało tylko z tym żeby to działało.
  • #8 6011322
    andrzejlisek
    Poziom 32  
    Posty: 3643
    Pomógł: 82
    Ocena: 710
    webmortiz napisał:

    Cytat:
    A tak w temacie to spróbuj zrobić taką "kanapkę" z płytek, jeśli nie możesz zmieścić sie na jednej Smile


    Nie do końca rozumiem o co b :/ Ale ogólnie urządzenie miało być prototypem tak więc nie walczyłem z obudową i żeby to ładnie wyglądało tylko z tym żeby to działało.


    Chodzi o to, żeby wykonać kilka PCB o tym samym kształcie i wielkości, rozmieszczając elementy na wszystkich, rozkładając na wszystkie płytki cały układ elektroniczny gry. Końcówki ścieżki, które przechodzą z jednej płytki na drugą powinny być w tym samym miejscu obu tych płytek.

    Potem montujesz jedną płytkę nad drugą wykorzystując tulejki dystansowe lub coś podobnego. Tulejki jak najkrótsze, ale tak, żeby elementy dwóch płytek nie dotykały się, a płytki położone równolegle względem siebie.

    Po złożeniu płytek, drutami łączysz przejścia między płytkami.
  • #9 6012939
    webmortiz
    Poziom 20  
    Posty: 467
    Pomógł: 24
    Ocena: 15
    To to akurat wiem, ale zrobiłem tak bo było prościej a poza tym na uniwersalnej to składałem tak więc dbałem bardziej o to żeby się nie pomylić lutując.
  • #10 6013213
    Morpheusss
    Poziom 16  
    Posty: 222
    Pomógł: 8
    Ocena: 11
    Możesz podać trochę więcej szczegółów nt problemów ze sterowaniem LCD z FPGA? Jeśli miałeś problem z opisem obsługi w VHDLu to ten XC3S200 ma dość miejsca żeby zaimplementować w nim rdzeń Microblaze, więc po co dodatkowa atmega? ; )
  • #11 6013252
    Jacek31
    Warunkowo odblokowany
    Posty: 541
    Pomógł: 48
    Ocena: 9
    Trochę nie rozumie z opisu tej gierki, no i po co takie FPGA? Ale projekt ciekawy i fajny.
    Jak miałeś w projekcie wykorzystać jakieś FPGA to prościej byłoby wziąść np. ATMega 32, a z Spartana zrobić np. mostek północny, z zintegrowanym koprocesorem numerycznym, czy prostym układem do generowania grafiki 2D. (wspieranie rysowanie linii, czy sprzętowa obsługa spiritów jak w C64)
  • #12 6020861
    webmortiz
    Poziom 20  
    Posty: 467
    Pomógł: 24
    Ocena: 15
    Morpheusss: problem miałem taki że ten wyświetlacz którego używałem po prostu nie działał(nie inicjalizował się, myślałem że to po prostu wina mojego softu w vhdl) a innych nie miałem, jak już zmieniłem koncepcję i zdobyłem inne wyświetlacze to nie chciałem wracać do poprzedniej bo tak łatwiej mi było ogarnąć soft dla lcd. Na tym nie działającym straciłem dużo czasu i nie chciałem eksperymentować z microblaze tylko zostałem przy rozwiązaniu względnie prostszym.

    Jacek31: Też miałem taki pomysł, ale przeczyło to założeniom pracy. A poza tym straciłem dużo czasu na obsługę nie działającego wyświetlacza pod FPGA tak więc trochę na końcu na łatwiznę poszedłem, ale ta łatwizna działa i to całkiem nieźle ;)

Podsumowanie tematu

✨ Projekt konsoli do gier oparty na układzie FPGA Spartan 3 (płytka ZL10PLD firmy BTC) wykorzystuje kolorowy wyświetlacz z Nokii 6100 sterowany mikrokontrolerem Epson. Głównym celem było stworzenie platformy umożliwiającej pisanie gier w VHDL z wykorzystaniem autorskich bibliotek. Początkowo planowano handheld z bezpośrednią obsługą wyświetlacza przez FPGA, jednak problemy z inicjalizacją i sterowaniem LCD zmusiły do zastosowania mikrokontrolera Atmega8 (4 MHz) do obsługi wyświetlacza o rozdzielczości 128x128 pikseli. Dyskusja poruszała kwestie wykorzystania FPGA zamiast mikrokontrolerów, zastosowania narzędzi Xilinx ISE 10.1, a także rozwiązań konstrukcyjnych PCB (wielowarstwowe płytki połączone tulejkami). Autor wyjaśnił, że wybór FPGA wynikał z tematu pracy magisterskiej oraz chęci nowatorskiego podejścia, mimo że nie wykorzystano pełni mocy obliczeniowej układu. Problemy techniczne dotyczyły głównie sterowania wyświetlaczem, co wpłynęło na decyzję o pozostaniu przy prostszym rozwiązaniu z mikrokontrolerem zamiast implementacji rdzenia Microblaze w FPGA.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA