START _______________
Atari 8-bit
GAL-MMU
SIO2PC
Atari static RAM
Atari R-Flex
Atari Turbofreezer III
ARC by Pasiu/SSG
Atari Cartridge
Emulator USB Joy
SIDari
YAMari
SONari
SAMari
TIGari
NOMari
I/O Dekoder
CART+ECI expander
Atari Multicart XE
Atari Full S-RAM
Real Safety Gear
|
YAMari
Wielokanałowy Syntezator FM w Atari - rewelacja... Gdyby nasze komputerki od samego początku posiadały na pokładzie takie cudo - byłyby nie do pokonania... Dorzucam kolejny układ do
sprzętu dźwiękowego Atari. Nazwa wzięła się od połączenia dwóch wyrazów - YAMAHA i Atari nawiązując do podobnie stworzonej nazwy SIDari...
Od dłuższego czasu myślałem nad dołączeniem OPL3 do Atari. Posiedziałem trochę nad tym i złożyłem układ, w zasadzie prawie że będący podstawową aplikacją YMF262.
Znalazłem gdzieś w sieci schematy karty dźwiękowej OPTI82C930. Stamtąd pochodzi spora część układu z kilkoma modyfikacjami i dostosowaniem całości do wymagań sprzętowych systemu 6502.
Czas więc na naprawdę dobrą zabawę z porządną syntezą FM. Kiedyś grałem na YAMAHA DX7, teraz zaś chciałbym zagrać na............. Galeria: Syntezator w formie Cartridge. Obudowa Z-7. Widoczny sprzętowy Reset ponieważ
brak takiej linii w złączu, a może być przydatny, gdy generatory nie dadzą się wyłączyć chociażby z powodu zawieszenia systemu. Dioda obok Reset jest tylko świecidełkiem. Wnętrze carta - strona top - Front Wnętrze carta - strona bottom - Back Opis sprzętu:
Na początek trochę informacji. Na czym polega synteza FM? W skrócie - polega na otrzymywaniu dźwięków w oparciu o technikę modulacji częstotliwości. Polecam zerknięcie na pl.wikipedia.org/wiki/Synteza_FM
Podstawy są dosyć złożone, a także
uzyskanie dobrze brzmiącego dźwięku nie jest proste. Mimo to jest to metoda dająca naprawdę miłe dla ucha rezultaty. Sztandarowym przykładem syntezatora używającego
syntezy FM jest YAMAHA DX7 - legendarny już sprzęt o niezwykłych możliwościach i dlatego też bardzo chętnie używany na scenie w latach 80-tych. Potem ten rodzaj
syntezy pojawił się także w komputerach PC a dokładniej - w kartach AdLib w postaci scalonego syntezatora FM OPL2 na układzie YM3812, który mógł generować
jednocześnie 9 dźwięków albo 6 dźwięków i 5 instrumentów perkusyjnych plus trochę efektów typu vibrato oraz tremolo, key scaling...Później pojawił się układ OPL3
YMF262-M, który podwoił liczbę kanałów dźwiękowych w stosunku do OPL2 oraz dodał więcej możliwości kreowania dźwięków. Dla konkurencji, czyli Commodore 64, został
stworzony SFX Sound Expander - pudełko zawierające syntezator FM oparty na YM3526 OPL - układzie o niezbyt dużej wydajności i możliwościach, jednak w tamtych
czasach (lata 80-te) był to olbrzymi skok jakościowy oferowany za stosunkowo wysoką cenę (około 100 Funtów) pomimo, że układ ten zaliczany był raczej do segmentu low-budget.
Przedmiotem tego projektu został układ OPL3 - YMF262-M wraz z towarzyszącym mu przetwornikiem zmiennoprzecinkowym D/A - YAC512.
To już w zasadzie nie jest prototyp. Układ złożyłem i przetestowałem w real Atari. Zadziałał bez problemu. Działa również oficjalna procedura rozpoznawania obecności
układu OPL3. Jako, że jest to bardzo świeży moduł - brak w tym momencie software do obsługi i odgrywania muzyki dla małych Atari.Po kolei więc przedstawiam: Schemat YAMari: PCB YAMari: Omówienie funkcji poszczególnych elementów składowych:
YAMari składa się z 4 układów scalonych, kwarcowego generatora scalonego oraz garstki elementów biernych. Na schemacie widoczne są układy:
IC1 - TL084 - układ czterech wzmacniaczy operacyjnych FET (datasheet)
IC2 - 74HCT00 - cztery bramki logiczne NAND (datasheet)
IC3 - YMF262-M - syntezator OPL3
(datasheet)
IC4 - YAC512 - zmiennoprzecinkowy przetwornik D/A (datasheet)
Układ IC1 pełni funkcje typowo analogowe - źródła napięć odniesienia oraz filtry. Układ IC2 wytwarza z sygnałów Phi2 oraz R/W sygnały sterujące ~RD oraz ~WR
konieczne do uzyskiwania dostępu do rejestrów syntezatora. IC3 w tandemie z IC4 tworzą właściwy układ syntezy. Generator QG1 - 14,31818 MHz steruje wszystkimi
procesami zachodzącymi w YMF262+YAC512. Dla uniknięcia stanów nieustalonych został zbudowany układ zerowania po włączeniu zasilania na elementach D1, R6,
C11,R7, do którego został dołożony awaryjny przycisk reset. Wyjście audio L,R jest doprowadzone do gniazda minijack stereo. Płytka została wykonana jako dwustronna
pod elementy SMD. Uwaga - przelotki są wiercone wiertłem 0,3mm pod lutowanie cynarem i cały projekt jest ustawiony raczej pod precyzyjne wiercenie. Da się i owszem
wykonać otwory większymi średnicami ale tego raczej nie polecam.
W układzie mozna zastosować dwa przetworniki YAC512. Sposób podłączenia
sygnałów wraz z konfiguracją kanałów A,B,C,D jest opisany w nocie aplikacyjnej. Mało praktyczne chyba, że zastosuje się zewnętrzny mixer stereo - wtedy można by
pozycjonować dokładniej instrumenty w bazie stereo. Instrument można przypisać do jednego z czerech kanałów poprzez ustawienie odpowiednich bitów.
Sterowanie odbywa się przy pomocy trzech rejestrów - $D500, $D501 i $D502.
Rejestr $D500 - (write) LOW address register - dostęp do dolnej strony rejestrów
Rejestr $D502 - (write) HIGH address register - dostęp do górnej strony rejestrów Rejestr $D501 - (write) DATA register - rejestr danej zapisywanej.
Rejestr $D500 - (read) STATUS register - odczyt statusu Timerów oraz IRQ.
Proces odbywa się bardzo prosto. Najpierw wybieramy stronę rejestrów poprzez
wpis numeru rejestru pod adres $D500 albo $D502, a potem wpisujemy dane dla wybranego rejestru pod adres $D501. Na przykład tak:
10 POKE 54528,32:REM WYBRANY REJESTR DOLNY - ADRES $20
20 POKE 54529,1:REM DO REJESTRU $20 WPISANA WARTOSC 1 ... ... ...
Cała reszta zrobi się prawie samodzielnie. W praktyce należy zaprogramować kanały
pożądanymi wartościami dla konkretnych instrumentów, obwiednie, skale, modulacje, itd. a potem wpisywać wartości nut do kanałów i powodować wyzwolenie nuty poprzez wpis danej do odpowiedniego rejestru...
W tym miejscu opis hardware się kończy ponieważ jest to zaskakująco prosty układ. Całość zmieściłem w obudowie cartridge Z-7 a montaż powierzchniowy pozwolił na
znaczącą miniaturyzację urządzenia. Koszt całości szacuję na około 100PLN. YMF262+YAC512 można u Chińczyków kupić już za 3.5$ więc można zaszaleć...
Pliki Eagle SCH, BRD - bardzo proszę o edycje w razie potrzeby, zwłaszcza w przypadku posiadania innych gniazd, przycisków, itp. Przy wykonywaniu
wydruku należy sprawdzić czy drukarka prawidłowo skaluje obraz. Może się okazać, że wymiary zostały zmienione i PCB pójdzie na śmietnik...
Test:
OPLTEST.BAS - program testujący obecność układu OPL wg oficjalnej procedury
YAMATEST.BAS
- program testujący syntezę - link z filmikiem powyżej
Software:
Niestety - w chwili obecnej brak jakiegokolwiek oprogramowania dla Atari choć mam nadzieję, że to się zmieni. Poniżej zamieszczam linki do plików z informacjami dla
programistów. Sporo informacji znajduje się także w datasheet YMF262 dokąd warto zajrzeć.
Programmer's Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer Programming the AdLib/Sound Blaster FM Music Chips AdLib - Programming Guide
Poza tym w sieci można znaleźć sporo materiałów na temat programowania AdLib FM. Na stronie
http://www.adlibtracker.net/ znajdują się bardzo dobre materiały na temat formatów modułów muzycznych a także kod źródłowy playera (Pascal). Docelowo planuję także wykonanie wersji wewnętrznej umieszczonej w wydzielonym obszarze ponad POKEYami, SIDami i innymi dźwiękowymi rozszerzeniami. W każdym
razie zdecydowanie polecam budowę syntezatora OPL3 oraz życzę dobrej rozrywki chociażby przy pisaniu oprogramowania grającego na tym świetnym układzie...
W razie pytań zapraszam na forum atari.area - nick toriman1, wątek YAMari. UPDATE Zmieniłem trochę projekt aby cartridge był bardziej uniwersalny i obecnie można DIP
switchem wybrać adres YAMari z obszaru $D5xx od $D500 co $20 bajtów. Poniżej fotka, schemat, pliki. WAŻNE! DIP switch może mieć włączony tylko jeden obszar
w danej chwili. Nie można ustawiać w pozycję ON więcej niż jednego switcha ponieważ to może uszkodzić dekoder (zwarcie wyjść w różnych stanach)Projekt PCB:
Schemat:
Zdjęcie PCB:
Na zdjęciu widoczny jest DIP switch do ustawiania adresu oraz poniżej dekoder 74LS138 (74HCT138)
PLIKI EAGLE wersja 2
Sprzętowo jest to wersja finalna YAMari. Najpewniej powstanie wersja wewnętrzna wpleciona w obszar nad POKEYami i SIDami :) Teraz tylko wypadałoby napisać soft aby
wykorzystać możliwości jakie daje synteza FM - na małym Atari. |