Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Verilog]PS2 + VGA, timing się rozsypuje

alagner 25 Kwi 2012 15:19 1596 2
  • #1 25 Kwi 2012 15:19
    alagner
    Poziom 25  

    Witam,

    staram się obsłużyć myszkę PS2 przy użyciu Altery Cyclone II. Docelowo chciałbym wyświetlić kursor przy użyciu VGA i spowodować jakieś reakcje na kliknięcia - np. zmiany koloru tła czy kursora. Jeśli chodzi o obsługę samej myszki, póki co udało mi się mrugać diodkami przy kliknięciu danym klawiszem. Poniżej kod:


    Kod: verilog
    Zaloguj się, aby zobaczyć kod


    Moduł główny:

    Kod: verilog
    Zaloguj się, aby zobaczyć kod


    Wykomentowane assigny to inna wersja mrugania diodkami, jak OUTy nie były rejestrowe. Tak czy siak - działa - mruga diodkami jak należy.

    Jednakże jeżeli dopiszę [osobno działającą] obsługę VGA wyglądającą następująco:



    Kod: verilog
    Zaloguj się, aby zobaczyć kod


    To niezależnie czy wyświetlanie na VGA jest powiązane z myszką, czy nie, już ruch myszą powoduje mruganie diodek. Jeżeli pod kliki ustawię przełączanie kolorów tła [wiadomo, muszę wtedy do vga1 dopisać stosowne wejścia] to układ robi mi z monitora hmmmm...stroboskop ;) przy ruchu myszką, niekoniecznie zaś przy kliku, z mruganiem diod analogicznie. Jeżeli obsługę VGA wyrzucę, to wszystko działa jak trzeba. Z czym jest to związane i jak to obejść?
    Osobiście podejrzewałbym assigny pod koniec modułu PS2_interface i spróbuję jeszcze ugryźć to synchronicznie, czy to dobra koncepcja?

    Pozdrawiam

    0 2
  • #2 26 Kwi 2012 20:19
    tymon_x
    Poziom 30  

    alagner napisał:
    Z czym jest to związane i jak to obejść?

    Nie obejść, tylko wykorzystać dodatkową logikę sterującą między twoimi blokami. Zakładając że każdy Twój moduł osobno działa po prostu "uber-pro". Stwórz Sobie maszynę stanów FSM, która będzie monitorować stany IP PS/2 oraz na tej podstawie sterować IP VGA (na przykład zmieniając kolory). Rozrysuj na papierze kółeczka oraz połącz między sobą strzałkami. W najprostszym przypadku, FSM znajduje się w stanie idle (nic nie robi, monitoruje wejścia). Z jednym z sygnałów pochodzi z PS/2 (ready) gotowy do odbioru. Jeśli wykryto klik, przejdź do stanu wykryto jeden klik i się go trzymaj, kiedy wykryto następny klik, przejdź do stanu zmiany kolorów VGA i wróć do idle, przeciwnym wypadku skocz do innego stanu lub idle.

    0
  • #3 27 Kwi 2012 12:18
    alagner
    Poziom 25  

    Tak zrobiłem, nie pomogło, wtedy odpaliłem Design Space Explorer i ustawiłem maksymalne możliwe skrócenie połączeń wewnętrznych. Ruszyło dobrze. Póki co nie zamykam tego topica, bo może coś ciekawe jeszcze z tej mojej zabawy wyniknie ;)

    Pozdrawiam serdecznie.

    0