1

Temat: Evie - kolejne rozszerzenie z fpga

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.

Post's attachments

DSC_0266.jpg 1.83 mb, liczba pobrań: 4 (od 2014-05-11) 

DSC_0268.jpg 1.8 mb, liczba pobrań: 2 (od 2014-05-11) 

DSC_0269.jpg 1.73 mb, liczba pobrań: 1 (od 2014-05-11) 

DSC_0270.jpg 1.51 mb, liczba pobrań: 2 (od 2014-05-11) 

evie_sidfilters.gif 10.49 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

2

Odp: Evie - kolejne rozszerzenie z fpga

Nic nie napiszę a płytkę chcę ;) Świetna robota !

STYMulator JIL ST YM2149 mjuz:k @ gnu/linux
SIUP (SIo2Usb2Pc) - SIO2PC USB Edition
PIN ready logo
3M / InD: ... na kasetach były zabezpieczenia w postaci tzw. "mikropierdnięcie" ...

3

Odp: Evie - kolejne rozszerzenie z fpga

a mnie ciekawią szczegóły techniczne, jak stworzyłeś filtry na fpga? to jakiś totalny kosmos?

4

Odp: Evie - kolejne rozszerzenie z fpga

zapisuje się na gotowca, Pasiu a co z rapidusem i jego nowszymi wersjami?

5

Odp: Evie - kolejne rozszerzenie z fpga

Jeśli chodzi o SVF, to informacji na necie jest mnóstwo. Ja bazowałem na tym, bo to nie jest tajemnica:
http://www.fpga.synth.net/pmwiki/pmwiki … ASynth.SVF

Sam filtr operuje na 18-bitowych zmiennych signed a chodzi na dwukrotnej częstotliwości pracy SIDa. Dlaczego? Bo tak było mi wygodniej :).

@As
Tak jak napisałem, jest to tylko chwila przerwy od Rapidusa i do niego wracam za chwilę. Nie jest to jednak o nim wątek.

6

Odp: Evie - kolejne rozszerzenie z fpga

A jak to wygląda od strony programistycznej? Czy SID jest na tych samych portach co SlightSID? Czy pokeye - pierwsze dwa - są tam gdzie dwa oryginalne? Czy to w ogóle jest ustawione gdzieś indziej?

The problem is not the problem; the problem is your attitude about the problem

7

Odp: Evie - kolejne rozszerzenie z fpga

Pokeye od stereo są tam gdzie normalnie. Oryginalny pokey też siedzi gdzie powinien. Kolejne pokeye 3 i 4 są w adresach $d220-$d22f i $d230-$d23f.

Covox siedzi na stronie $d7. Adresy 0-3 to każdy osobny kanał. Natomiast zapis pod adres z zakresu $d704-$d707 powoduje zapis do dwóch kanłów równocześnie, by np. WAV'y mono grały na obu głośnikach.

Z SIDem jest kłopot. Soft wymaga, by był na stronie $d5, ale jako że nie jest to rozszerzenie odłączalne jak slighsid, to SIDa trzeba z tej strony móc wyłączyć. Koncepcja jest zatem taka, by rejestrem $d2ff sterować czy SID ma być widoczny na stronie $d5.
Ponadto SIDa wrzuciłem też na stronę $d2 za pokeyami.

8

Odp: Evie - kolejne rozszerzenie z fpga

WOW ;)- Daje to radę. Zapisuję się na sztukę ;)

Co do playera, to pogadam z Mono. Taki właśnie player ma sens, bo jak do tej pory to do sida są dwa, z czego jeden jest nieużywalny a drugi mało wygodny (ten z filminu) ;)

Pasiu - ten player Świętego to widzę, że działa Ci z dopalonym przez "turbo" ramem. U mnie tak nie jest. Modyfikowałeś ten player pod kątem Rapidusa?

Ostatnio edytowany przez Pin (2014-05-11 17:07:18)

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

9

Odp: Evie - kolejne rozszerzenie z fpga

A to w sumie nie jest źle. Chodzi o kompatybilność i nie powstawanie 50 standardów. SlightSID finalnie przewiduje też stereo, więc oprogramowanie mogłoby wykorzystywać i jedno i drugie rozszerzenie.

PS. Ja się oczywiście na ten multisyntezator piszę, niezależnie od kwoty (Seban - to nie znaczy że SlightSIDa odpuszczam :) ). A zmieściłby się jeszcze AY w tym fpga? ;)

Ostatnio edytowany przez wieczor (2014-05-11 18:53:48)

The problem is not the problem; the problem is your attitude about the problem

10

Odp: Evie - kolejne rozszerzenie z fpga

Hej!

Bardzo ciekawy projekt! :) podoba mi się... posłuchałem trochę brzmienia SID-a, faktycznie brzmi nieco inaczej... w szczególności filtry wydają się brzmieć nieco inaczej... nie odbierajcie tego jako moje jęczenie :) Bo projekt bardzo mi się podoba :) Czekam z niecierpliwością na wersję finalną! :)

A co do Slight-SID robią się ostateczne płytki... (mam przynajmniej taką nadzieje) i będą za 1,5 może 2 tygodnie. Jak po zmontowaniu okaże się że działa to zgodnie z moimi zamierzeniami będzie można to uznać za wersję docelową. Mam nadzieję że tym razem wszystko będzie OK. Wybaczcie czas jaki mi to zajmuje, ale nie potrafiłbym dać w wasze ręce "niedorobionego" urządzenia, albo urządzenia które działa lub brzmi gorzej niż chciałem/przewidywałem.

Jeszcze co do przestrzeni adresowej dostępnej dla Slight-SID. W gnieździe carta mam do dyspozycji tylko $D500-$D5FF, tyle mogę. Jeżeli planowałbym wersję wewnętrzną to może zajmować ona dowolny adres dostępny w przestrzeni adresowej Atari.

11

Odp: Evie - kolejne rozszerzenie z fpga

@pasiu

Rozumiem to "ponadto" tak, że SIDa wrzuciłeś w obszar $d240-$d25f?
To super bo w zasadzie miło by było aby nie robić śmietnika w I/O i wszystkie rozszerzenia, np. dźwięku wrzucić na stronę $D2xx - zrobić w końcu jakiś "standard". Sam mam zamiar użyć 74HCT154 i podzielić I/O na części po 16 bajtów, które w razie potrzeby można dowolnie - diodami łączyć w większe części. No i rzecz jasna poprosić o przekompilowanie software pod inne adresy. Ale to chyba mrzonki są...

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

12

Odp: Evie - kolejne rozszerzenie z fpga

myślę że sprawa "przekompilowania" nie będzie żadnym problemem :) A jeżeli nawet to zawsze można zrobić "patch" który będzie pytał o adres przez uruchomieniem właściwego programu :) także tym bym się w ogóle nie przejmował, to najmniejszy problem.

Ostatnio edytowany przez seban (2014-05-11 20:23:40)

13

Odp: Evie - kolejne rozszerzenie z fpga

OK :)

Z tym, że takie "uporządkowanie" zdecydowanie preferuje rozwiązania wbudowane do Atari.

A co do mapy pamięci:


$d200  - POKEY1
$d210  - POKEY2
$d220  - POKEY3
$d230  - POKEY4
$d240  - SID1
$d260  - SID2
$d280  - COVOX
.
.
.

Coś takiego właśnie...żeby rozszerzenia wewnętrzne nie musiały "pałętać się" po obszarze Catridge...

P.S. U mnie "leży" od 2006 roku projekt SIDa do Atarynki, za który mam zamiar w końcu się wziąść i dokończyć, hehe. Myślę, że wsadzę go właśnie pod $d240.

Ostatnio edytowany przez tOri (2014-05-11 20:44:39)

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

14

Odp: Evie - kolejne rozszerzenie z fpga

A drugi sid zamiast 3 i 4 pokeya?

15

Odp: Evie - kolejne rozszerzenie z fpga

ciekawy pomysl.

gdy usunie sie 2 i 3 pokey oraz emulacje 1-bit czy bedzie miejsce na AY/YM lub SAA ?

http://atari.pl/hsc/ad.php?i=1.

16

Odp: Evie - kolejne rozszerzenie z fpga

@Pin
Nic z tym playerem nie zmieniałem. Może jest to kwestia ustawień sparty.

@Seban
Odsłuchy z Evie porównywałem z playerami na PC. Brzmiało podobnie.
Trzeba pamiętać, że SID SIDowi nierówny i tak naprawdę każdy brzmi trochę inaczej. Tu to fajnie wygląda:
https://bel.fi/alankila/c64-sw/fc-curves/curves.png
Jak widać charakterystyki filtrów każdego ze zmierzonych 6581 są różne. Ja wybrałem coś ze środka.

@xxl, lemiel
Jeden pokey zabiera jakieś 6-7% zasobów w fpga. SID z filtrem to jakieś 70%.
Nie znam budowy AY i YM a tym bardziej SAA, więc nawet nie oszacuję ile implementacja ich może zajmować.

17

Odp: Evie - kolejne rozszerzenie z fpga

tu jest troche info.

http://en.wikipedia.org/wiki/YM2149

"The chips are no longer made, but a declining stock is still obtainable for servicing vintage machines. A VHDL equivalent description has been written, for use in FPGA recreations of arcade machines and others like those mentioned above. The VHDL source code is available on the Internet, and compiles to fill about 10% of a Xilinx XC2S300 FPGA."

http://atari.pl/hsc/ad.php?i=1.

18

Odp: Evie - kolejne rozszerzenie z fpga

Brawo Pasiu!

19

Odp: Evie - kolejne rozszerzenie z fpga

Świetnie! Czy te POKEYe implementują feature z transmisją dwutonową z SKCTL? Czy implementują przerwania od liczników i czy da się je wykrywać metodą #2 Draka? Czy SID-a można wykryć metodą jak SlightSID-a? a może jest sposób na wykrycie Evie (wtedy wiemy co mamy na pokładzie)?
Pisałbym się również na egzemplarz. Playerów nie obiecam natentychmiast, bo Draco i Candle mi łeb ukręcą.

Edit: Transmisja dwutonowa interesuje mnie jedynie pod kątem brzmienia dźwięków w POKEY-u - sama transmisja mi niepotrzebna.

Ostatnio edytowany przez mono (2014-05-12 10:21:07)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

20

Odp: Evie - kolejne rozszerzenie z fpga

po co komu 4-y Pokeye, player będzię grał z wyłączonym ekranem ?
czy kanały Pokeya zagłuszają się nawzajem, jak ma to miejsce w oryginalnym układzie ?

kiedy MP3 Player ? MP3 zastąpi każdy układ, AY, SID, SoundBlaster, Gravis i orkiestre symfoniczną :)

Ostatnio edytowany przez tebe (2014-05-12 10:24:48)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

Odp: Evie - kolejne rozszerzenie z fpga

Nową jakość mogłoby tu stworzyć mieszanie ficzerów.

Pokeya już mam, covoxa mogę mieć (ale nie chcę, bo atari nie szumi :) więc pokey jest w sam raz), sidy już mam, nie wspominając o 1bit.

Ale czy jest w ogóle możliwe, by te filtry z implementacji SIDowej uruchomić na jednym z pokeyów? Oraz na covoxie? To by już była cecha nie istniejąca wcześniej - czyli wartość dodana. :)

Aaa nic, tak se gadam.
A jaka będzie cena tego?

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

22

Odp: Evie - kolejne rozszerzenie z fpga

Ha! OIDP SID ma wejście na sygnał z zewnątrz - może by mu tam włączyć wyjścia z POKEY-ów? Będzie ten sygnał modulowany przez SID-a?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

Odp: Evie - kolejne rozszerzenie z fpga

I to by już miało sens. I covoxa tak puścić też.

No i możliwość grania kilkoma różnymi na raz. Np. sid i 2 pokeye (no bo to z covoxem się nie uda już, jak się domyślam).

Mogłoby to dać ciekawe rezultaty.

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

24

Odp: Evie - kolejne rozszerzenie z fpga

zagram na szklankach, talerzach, sidzie, pokeyu, fredzie, marii i stefani, zgram do Wav-a, zakoduje do MP3 i odtworze, Wasze mogą się schować

po co się rozdrabniać, MP3 jest najlepszy

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

25

Odp: Evie - kolejne rozszerzenie z fpga

@Tebe: do słuchania, ale to mozesz kupic za 10 zlotych od Chinczyka, po co to podlaczac do Atari? :) My mowimy tu o graniu muzyki, nie jej odtwarzaniu - to ma byc instrument, nie nosnik :)

The problem is not the problem; the problem is your attitude about the problem