Czy fotografia otwierająca przywołuje w Tobie wspomnienia? Dla mnie ten projekt okazał się bardzo nostalgiczny – 20 lat temu, kiedy byłem dzieciakiem w gimnazjum, przez całe godziny wklepywałem różne kody w kompozytorze dzwonków na Nokii 3310 (oprócz grania w Snake’a oczywiście!). W raczkującym wówczas Internecie można było znaleźć strony, na których znajdowały się tysiące najróżniejszych melodii. Niektóre z tych witryn istnieją do dzisiaj, a kompozycje ówczesnych wirtuozów piszczących melodyjek posłużą nam, by nauczyć się czegoś nowego na temat FPGA.
Projekt podzielony będzie na dwie duże części. Pierwszą będzie moduł odpowiedzialny za odtwarzanie pojedynczych nut. Każdą z nich można scharakteryzować za pomocą dwóch wartości liczbowych – częstotliwości dźwięku oraz czasu trwania. Moduł odtwarzający nuty będzie sygnalizował, kiedy jest zajęty, a kiedy gotowy do odtworzenia kolejnej nuty.
W drugiej części opracujemy moduł nadrzędny, wyposażony w przyciski Start i Stop, a także pamięć, w której będą zapisane nuty melodii. Po wciśnięciu Start moduł nadrzędny będzie odczytywał kolejne nuty z pamięci i przekazywał je do modułu odtwarzającego pojedyncze dźwięki tak długo, aż melodia się skończy lub zostanie wciśnięty przycisk Stop. W ten sposób poznamy metodę, jak zgrać ze sobą dwa moduły, gdzie praca jednego jest uzależniona od funkcjonowania drugiego.
Ponadto, co najważniejsze, poznamy różne sposoby implementacji pamięci w układach FPGA MachXO2. Dodatkowo na multipleksowanym wyświetlaczu LED, który poznaliśmy w 9 odcinku kursu, wyświetlać będziemy długość trwania nuty oraz jej czas półokresu na potrzeby debugowania układu.
W roli głośnika wykorzystamy prosty i niedrogi brzęczyk. Na płytce User Interface Board, współpracującej z MachXO2 Mega. Pin Buzzer został połączony z linią 28 układu FPGA. Stan wysoki sygnału Buzzer powoduje otwarcie się tranzystora T90, w związku z czym przez niego (a więc i przez cewkę głośnika) płynie prąd. Otwarcie i zamknięcie tranzystora powoduje „pyknięcie” głośnika. Kiedy „pyknięcia” zdarzają się z odpowiednio dużą częstotliwością, nasze uszy odbierają je jako dźwięk – strasznie piszczący i niezbyt przyjemny, ale jakość dźwięku nie jest priorytetem w kursie FPGA.