Spisu treści:

Budzik Basys 3: 9 kroków
Budzik Basys 3: 9 kroków

Wideo: Budzik Basys 3: 9 kroków

Wideo: Budzik Basys 3: 9 kroków
Wideo: Датчики давления TPMS с АлиЭкспресс на ВАЗ 2105. ЛЕТО-ЗИМА. Обзор, установка и настройка. 2024, Październik
Anonim
Budzik Basys 3
Budzik Basys 3

Nasz projekt tworzy budzik z wykorzystaniem płytki FPGA Basys 3, Arduino oraz płytki sterownika głośnika. Użytkownik ma możliwość wprowadzenia aktualnego czasu do tablicy za pomocą 11 przełączników wejściowych na Basys 3 i zablokowania wartości za pomocą środkowego przycisku na tablicy. Użytkownik może następnie wprowadzić czas alarmu za pomocą tych samych przełączników, ale naciśnij lewy przycisk, aby zablokować czas alarmu. Jeśli zostanie wprowadzony błędny czas, można nacisnąć przycisk resetowania (górny przycisk), a aktualny czas zegara i czas alarmu zostaną ustawione na 00:00. Użytkownik może następnie uruchomić zegar za pomocą przełącznika znajdującego się najbardziej po lewej stronie i włączyć alarm za pomocą następnego przełącznika. Gdy alarm jest włączony, budzik wyda dźwięk, gdy czas zegara i ustawiony czas alarmu pasują do siebie.

Krok 1: Schemat czarnej skrzynki

Schemat czarnej skrzynki
Schemat czarnej skrzynki
Schemat czarnej skrzynki
Schemat czarnej skrzynki

Nasz projekt rozpoczęliśmy od narysowania diagramu czarnej skrzynki, aby zwizualizować wejścia i wyjścia potrzebne w naszym programie. Następujące dane wejściowe dla naszego programu, takie jak wejście 5-bitowe (Hour_in) zostały zainicjowane w celu określenia czasu 24-godzinnego, wejście 6-bitowe (Min_in) do wyświetlania do 60 minut, przycisk resetowania (Rst_b), aby umożliwić użytkownikowi zmienić swoje wejście czasu, wejście 1-bitowe (alm_en), które ładuje wejście alarmowe, wejście 1-bitowe (alarm_sw), aby wyłączyć budzik, gdy jest aktywowany, wejście 1-bitowe (e_sec), które kontroluje, kiedy licznik sekund, 1-bitowe wejście (Led_btn), które ustawia aktualny czas, i na końcu 1-bitowe wejście (clk), które kontroluje czas wyświetlany przez płytę Basys 3. Wyjścia to (alm_on), który wysyła sygnał do Arduino, wyjście sseg, które wyświetla czas wejścia na Basys 3, oraz wyjście anodowe, które kontroluje, gdzie wejścia są wyświetlane na wyświetlaczu siedmiosegmentowym.

Krok 2: Powolny zegar

Powolny zegar
Powolny zegar

Wolny zegar lub plik clock_div2 tworzy zegar o częstotliwości 2 Hz. Jeśli wprowadzimy ten zegar do naszego licznika sekund, wartość sekund będzie rosła o jeden na sekundę. Wolny zegar służy do tworzenia niezawodnego sygnału zegara, który zmienia się od niskiego do wysokiego raz na sekundę.

Krok 3: Licznik

Licznik
Licznik
Licznik
Licznik

Licznik składników (minuty i sekundy):

Podstawową funkcją minut i sekund jest to, że są licznikami. Licznik minut pobiera sygnał wejściowy (Vin), który jest sygnałem z wejść (Min_in), a następnie odlicza, aż osiągnie żądany sygnał wejściowy. Sekundy zajmują tylko wejście przełącznika (e_Sec), ponieważ nie mogą być wyświetlane w siedmiu segmentach i są liczone w tle, gdy przełącznik jest wysoki na „1”. Obaj wyprowadzają tam wartość do (Qout), a następnie jest ona przechowywana w (data), która wysyła ją do SSEG, co odbywa się w pliku łączącym. Również, gdy minuty i sekundy osiągną wartość 59, resetuje się, a ich wyjście ma wartość „1” w celu zwiększenia minut/godzinę. Może również mapować za pomocą reset(rst_b) do ich danych wejściowych.

Krok 4: Licznik godzin

Licznik godzin
Licznik godzin
Licznik godzin
Licznik godzin

Składnik Licznik Godzina

Podobnie do licznika składowego minut i sekund składowa godzinowa pobiera dane wejściowe, takie jak (Vin), który jest sygnałem z pliku wejściowego linkującego (Godzina_w) i ma wyjścia, które są połączone w ten sam sposób minutami i sekundami. Gdy zliczona wartość godziny osiągnie 24 00, zostanie zresetowana do 00 00.

Krok 5: Alarm

Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm

Plik.vhd alarmu składa się z d-flip-flops, które są urządzeniami pamięci masowej, które mogą przechowywać dane cyfrowe. Plik alarmu służy do przechowywania czasu, w którym alarm zostanie aktywowany. Aby przechowywać dane godzin (5-bitowe wejście) i minut (6-bitowe wejście) musimy wybić 11 d-flip-flops w naszym pliku alarmowym. Aby to zrobić, musimy najpierw zaimportować logikę rządzącą działaniem d-flip-flops i zmapować komponenty. Każdy z 11 d-flip-flops przechowuje jeden bit danych z wejść i umożliwia mapowanie danych do wyjść pliku alarmu. Ponieważ d-flip-flops przechowują dane, jesteśmy w stanie wykorzystać dane w późniejszym czasie, nawet jeśli przełączniki wejściowe zostały zmienione.

Krok 6: Uniwersalny siedmiosegmentowy sterownik wyświetlacza

Uniwersalny siedmiosegmentowy sterownik wyświetlacza
Uniwersalny siedmiosegmentowy sterownik wyświetlacza
Uniwersalny siedmiosegmentowy sterownik wyświetlacza
Uniwersalny siedmiosegmentowy sterownik wyświetlacza
Uniwersalny siedmiosegmentowy sterownik wyświetlacza
Uniwersalny siedmiosegmentowy sterownik wyświetlacza

Uniwersalny siedmiosegmentowy sterownik wyświetlacza odbiera sygnały wejściowe z zegara i zegara i jest w stanie wyprowadzić je na siedmiosegmentowy wyświetlacz na płycie. Sterownik jest w stanie jednocześnie wyprowadzić na tablicę dwa oddzielne zliczenia. Użyliśmy tej funkcji do oddzielnego wyświetlania czasu godzinowego i minutowego. Wyświetlacz siedmiosegmentowy jest w stanie aktywować tylko jeden numer na raz, dlatego plik sseg musi używać multipleksowania, aby wyświetlić jednocześnie wszystkie liczby w danym czasie. Sygnał zegarowy płyty jest podawany do sseg, aby zachować właściwy czas multipleksowania. Enkoder dziesiętny z kodowaniem binarnym na binarny jest niezbędny do konwersji danych wejściowych na plik do postaci, która może być wyprowadzona na wyświetlacz siedmiosegmentowy. Ostateczny wynik pliku sseg jest mapowany na siedmiosegmentowy wyświetlacz, a na wyświetlaczu pokazywany jest prawidłowy czas.

Krok 7: Połącz plik

Link do pliku
Link do pliku
Link do pliku
Link do pliku
Link do pliku
Link do pliku

Plik łącza łączy wszystkie inne aspekty programu i mapuje sygnały we właściwej lokalizacji. Każdy składnik jest wprowadzany i tworzony w pliku. Sygnały służą do przesyłania danych z jednego komponentu do drugiego. Mapowanie portów będzie zgodne z powyższym diagramem czarnej skrzynki. Plik link zawiera również logikę, która zarządza aktywacją alarmu. W tym momencie większość projektu zostanie już ukończona. Pozostała praca to kierowanie każdego sygnału do odpowiedniej lokalizacji.

Krok 8: Arduino

Arduino
Arduino
Arduino
Arduino

Arduino służy do aktywacji głośnika, a także kontrolowania tonu i czasu trwania nuty odtwarzanej przez głośnik. Arduino odczytuje sygnał cyfrowy z płytki Basys 3. Gdy ten sygnał jest wysoki, arduino wyśle sygnał PWM kontrolujący dźwięk i czas trwania alarmu. Sygnał wyjściowy z arduino łączy się z sygnałem wejściowym płytki sterownika głośnika, co zwiększa głośność głośnika. Arduino wykonuje ten proces bardzo szybko, powtarzając wiele razy na sekundę.

Krok 9: Prowadzenie kabli

Prowadzenie kabli
Prowadzenie kabli

Płytka arduino i Basys 3 musi być fizycznie podłączona, aby przesyłać sygnały między płytami. Pierwszym kablem do okablowania będzie styk uziemienia JA PMOD Basys 3 do styku uziemienia arduino. Następnie podłącz przewód z pinu 1 JA PMOD Basys 3 do cyfrowego pinu 7 arduino. Następnie podłącz dwa piny uziemienia z arduino do pinów uziemienia sterownika głośnika. Następnie podłącz wyjście 3,3 V arduino do pinu Vcc sterownika głośnika. Następnie podłącz cyfrowy pin 9 arduino do pinu In sterownika głośnika.

Zalecana: