Witam wszystkich.
Chcę tu przedstawić wynik pracy kilku ostatnich tygodni. Chwila przerwy od karty turbo spowodowana brakiem wszystkich podzespołów do budowy kolejnej wersji Rapidusa, przerodziła się w coś, co otrzymało nazwę Evie. A co to dokładnie jest?
Evie ma za zadanie zwiększyć możliwości muzyczne Atarki, ale przy tym nigdy nie ma być konkurencją dla Sound Board'a. I tu prośba - proszę mi nie zarzucać, że chcę uwalić projekt SB, bo możliwości tych dwóch rozszerzeń z tego co wiem są różne.
Ale do rzeczy.
Rozszerzenie bazuje na układzie fpga Xilinx Spartan 3A, do którego wciśnięto:
1) 4 pokeye (przycięte tylko do generowania dźwięku),
2) covox (4 kanały 8-bit),
3) SID z implementacją cyfrowego filtru o różnych charakterystykach (np. 6581 i 8580).
4) i na dokładkę emulację dźwięku GTIA czyli 1-bit :).
Tyle jest w tej chwili i nic więcej do fpga nie wejdzie bez usunięcia czegoś z powyższej listy. Dlaczego w ogóle coś jeszcze dodawać? Sama płytka daje więcej możliwości, bo od strony sprzętowej umożliwia m.in. podpięcie klawiatury PS/2.
Dla hardcore'owców możliwe jest też niemal całkowite zastąpienie układu Pokey płytką Evie, bo sygnały od transmisji szeregowej, przerwania itp. też z poziomu fpga można kontrolować. Nie ma tylko wsparcia potencjometrów, bo nie ma przetwornika analogo-cyfrowego.
Układ FPGA programuje się sam po włączeniu zasilania dzięki podłączonej do niego pamięci flash. Trwa to ułamek sekundy.
Jak Evie brzmi? Covox gra ładnie, bo to tylko rejestry dla przetwornika cyfra-analog. Mimo że 8-bit to dla wysokiej częstotliwości próbkowania jest OK. Z Rapidusem można grać WAV'y osiągając 48kHz.
Może warto też nadmienić, że sam układ przetwornika na Evie pracuje z częstotliwością próbkowania 192kHz i ma 24 bity, chociaż z tych 24 bitów wykorzystywanych jest maksymalnie 20.
Co do Pokeya i SIDa to rozczaruję tu tych, którzy myślą, że grają tak jak oryginalne układy dźwiękowe. Niestety są to tylko implementacje, w których zostały opisane zachowania prawdziwych scalaków. Jednak na moje ucho obie implementacje grają dobrze, żeby nie powiedzieć bardzo dobrze, chociaż jeśli tylko rozszerzenie SlightSID będzie w końcu dostępne, to chętnie je kupię, bo nic nie zastąpi oryginalnego układu by commodore.
Kod Pokeya powstał już wcześniej po tym jak przypadkowo upaliłem wyjście dźwięku z oryginalnego układu. Nie było tu przebacz, bo jeżeli tylko generatory dźwięku zliczały źle lub łączenie kanałów nie było prawidłowe, to od razu było to słychać. Kod powstał na podstawie dostępnej dokumentacji i pomocy Candle'a. Dzięki!
Implementacja SIDa to już trochę większe wyzwanie, bo sam układ zawdzięcza swe możliwości nie bez powodu. Sam kod generatorów dźwięku jest dostępny w necie, ale niestety jego autor nie jest znany. Po komentarzach wynika, że kod powstał na bazie informacji otrzymanych od samego projektanta SIDa. Kod nie zawierał jednak filtru, czyli kwintesencji tego układu. Problem z filterm jest taki, że w oryginalnym układzie SID filtry zostały zrobione analogowo i nijak czegoś takiego nie da się wsadzić do fpga. Da się jednak wsadzić filtr cyfrowy, bo pokazał to na jednym filmiku z youtube pewien jegomość.
To dało inspirację i potwierdziło, że jest to możliwe. I tak powstał filtr na bazie kodu Scotta Gravenhorsta i jego State Variable Filter. Z takiego filtra można uzyskać wszystkie potrzebne wyjścia: dolno-przepustowe, górno-przepustowe, środkowo-przepustowe i środkowo-zaporowe. Co więcej, to można w łatwy sposób kontrolować częstotliwość filtru oraz współczynnik tłumienia układu rezonansowego. Więcej już nic nie trzeba było tylko skleić to w całość i dodać charakterystyki filtrów. Te ostatnie już ktoś zrobił i jest to dostępne w necie.
Na poniższym filmiku można sobie zobaczyć jak to gra dla różnych charakterystyk filtrów. FPGA SID taktowany jest 992kHz. Wiem, że w C64 jest inaczej, ale różnica dla mnie jest nierozpoznawalna. Ponadto jest to najbliższa docelowej wartość, którą mogłem otrzymać z kwarcu 24.576Mhz taktującego główny przetwornik.
http://youtu.be/MtY4GAZaZ1w
I teraz z tego miejsca chcę zaoferować jedną płytkę osobie, która napisze coś lepszego do odgrywania muzyczek SID. Może moje oczekiwania są duże, ale inaczej się nie da. Soft ma działać na 65c816, współpracować z dowolną pamięcią masową (tak, z pamięcią typu new device też) i SDX (podkatalogi). Ma też umieć wyjść z siebie. Programik może przy tym korzystać z rozszerzonej pamięci typu portb lub liniowej 816.
Została już tylko ostatnia rzecz, czyli przetwornik a'la GTIA. Generalnie ma on służyć na Evie tylko do generacji kliku klawiatury, bo raczej do słuchania muzyki się nie nadaje. Jak na moje ucho, to tworzenie muzyki 1-bit lepiej wychodzi oryginalnemu układowi na płycie Atari.