Spisu treści:

Jednominutowy stoper VHDL: 5 kroków
Jednominutowy stoper VHDL: 5 kroków

Wideo: Jednominutowy stoper VHDL: 5 kroków

Wideo: Jednominutowy stoper VHDL: 5 kroków
Wideo: KRĄŻKI MIĘDZYKREGOWE - wylecz uszkodzony DYSK przez dekompresję 2024, Listopad
Anonim
Image
Image

To jest samouczek, jak zbudować jednominutowy stoper przy użyciu VHDL i płyty Basys 3. Takie urządzenie jest idealne do gier, w których każdy gracz ma maksymalnie minutę na wykonanie ruchu. Stoper dokładnie wyświetla sekundy i milisekundy na siedmiosegmentowym wyświetlaczu, zaczynając od 0 sekund i 0 milisekund, do 60 sekund i 0 milisekund. Wykorzystywane są również dwa przyciski: środkowy przycisk służący do uruchamiania, zatrzymywania i kontynuacji timera oraz prawy przycisk służący do ponownego uruchamiania timera. Kiedy urządzenie jest porównywane obok siebie z wbudowanym stoperem smartfona, dokładność zegara jest zauważalna.

Krok 1: Uzyskaj sprzęt/oprogramowanie

Schemat blokowy
Schemat blokowy

1. Płytka szkoleniowa FPGA Basys 3 Artix-7 firmy Digilent z kablem Micro-USB na USB

2. Vivado 2016.2 Design Suite firmy Xilinx

Krok 2: Schemat blokowy

Ten obwód jest skonstruowany behawioralnie i wykorzystuje wbudowane komponenty Xilinx, ale można go również opisać strukturalnie, jak pokazano na ogólnym schemacie strukturalnym powyżej. Z diagramu widać, że obwód jest napędzany przez dwa dzielniki częstotliwości. Jeden z dzielników częstotliwości pracuje z częstotliwością 1 centysekundy i steruje licznikiem katodowym, który jest używany jako liczby wyświetlane na siedmiosegmentowym wyświetlaczu. Drugi dzielnik częstotliwości działa z częstotliwością 240 Hz i jest używany do sterowania licznikiem anod, który obraca się przez anody, tak aby wszystkie liczby wyświetlały się poprawnie na wyświetlaczu siedmiosegmentowym. Koder pobiera logikę katodową z licznika katodowego i logikę anodową z licznika anodowego i koduje ją do katody wyjściowej i anody, które uruchamiają wyświetlacz siedmiosegmentowy. Funkcją tego enkodera jest zmiana wyjścia katodowego za każdym razem, gdy zmienia się wyjście anodowe. Wyjście katodowe nie może być uruchamiane niezależnie od licznika, ponieważ anody muszą obracać się przez 4 oddzielne cyfry.

Krok 3: Moduł projektu

Po pierwsze, tworzony jest blok procesowy dla CEN, tak że po wykryciu naciśnięcia przycisku przełącza się WŁĄCZ. Służy jako stop/start licznika katodowego.

W następnym bloku procesowym sygnały zegarowe setnesekundowe i 240Hz są ustawiane tak, że ich odpowiednie liczniki wzrastają o 1 za każdym razem, gdy wewnętrzny zegar 100mHz osiąga zbocze narastające. Gdy licznik centysekund osiągnie 500000, zostanie zresetowany do 0. Tymczasem licznik 240 Hz zostanie zresetowany, gdy zliczenie osiągnie 41667.

Dla sekcji katodowej kodu, jeśli ENABLE ma wartość „0”, liczenie katod zostanie wstrzymane. Jeśli w tym czasie zostanie naciśnięty przycisk resetowania, wszystkie liczniki zostaną zresetowane do „0000”. W międzyczasie, jeśli ENABLE jest '1', zliczanie katod będzie kontynuowane, aż zliczanie katod osiągnie 60,00, w którym wyzwala sygnał stop na '1'. Sygnał stop kieruje z powrotem do bloku procesowego CEN i powoduje, że ENABLE ma wartość „0”, podczas gdy sygnał stop ma wartość „1” i nie zmieni się, dopóki nie zostanie naciśnięty przycisk resetowania.

Na koniec, wyświetlacz siedmiosegmentowy jest skonfigurowany tak, że 4 anody są prawidłowo połączone z każdą z ich 8 katod, aby jednocześnie wyświetlać odpowiednie cyfry 0-9.

Krok 4: Ograniczenia

Ograniczenia
Ograniczenia

Ten plik ograniczeń łączy określone wejścia i wyjścia z VHDL z niezbędnymi, fizycznymi częściami płyty Basys. W przypadku tego projektu komponenty obejmują cztery anody i każdą z ośmiu katod dla siedmiosegmentowego wyświetlacza, wewnętrzny zegar 100 MHz, środkowy przycisk i prawy przycisk.

Krok 5: Test

Po zakończeniu kodu możesz teraz zaprogramować FPGA za pomocą kabla USB. Wyświetlacz siedmiosegmentowy powinien pokazywać 0.00. Sprawdź, czy przyciski działają, naciskając środkowy przycisk, aby uruchomić timer, aż osiągnie 60.00 i zatrzyma się; w dowolnym momencie możesz ponownie nacisnąć środkowy przycisk, aby wstrzymać. Po wstrzymaniu możesz nacisnąć prawy przycisk, aby zresetować timer z powrotem do 0.00. Jeśli wszystko działa poprawnie, gratulacje, że właśnie zbudowałeś minutnik!

Zalecana: