DA převodník nejenom pro A.S.E. player

Úvod

Amiga Sound Emulátor (zkráceně A.S.E.) je přehrávač zkonvertovaných skladeb (MOD) z Amigy na ZX Spectrum, který používá tříkanálový 8 bitový DA převodník s výstupem ACB stereo, stejně jako se u nás používá zapojení kanálů AY-3-8912. Tento článek se věnuje převážně samotnému hardwaru, který je k hraní potřeba.

Převodník je tříkanálový, protože je zapojený na interface UR-4 používaný v té době naprostou většinou uživatelů Betadisku pro které je přehrávač určen. Obvod MHB8255 v UR-4 má tři osmibitové brány a na každé z nich je jedna odporová R-2R síť.

Následující obrázky ukazují první již neexistující verzi převodníku z doby, kdy jsem ještě neměl čím fotit. Ani zapojení nebylo zcela správně, ale hrálo to.

foto foto

Velmi příhodné je, že 3 kanály má i AY-3-8912 (proto ACB stereo). Některé přehrávače a editory pracují pouze se 4 bitovými samply a mohou přehrávat stejné skladby na obojím, jak na AY-3-8912, tak i na 8 bitovém DA převodníku. Ale často hrají pouze na dolních 4 bitech, zvuk by tak byl příliš tichý, proto jsou na převodníku 3 přepínače, kterými lze zvolit 4 bitový režim.

schema

Použití samozřejmě není omezeno pouze na UR-4, lze použít většinu rozhraní s 8255, třeba Jiiirův UPI, nebo 8255 v Didaktiku Gama 192k, případně upraveném Didaktiku Gama 80k (bez úpravy koliduje stránkování RAM).

Přehrávače

A.S.E. player je určen jen pro Betadisk a lze ho stáhnout tady. Existuje několik verzí, poslední, kterou jsem viděl je verze 2.0. Existuje i maličko novější verze, ale pouze přehrávač bez grafického rozhraní.

A.S.E. player používá při přehrávání značně zjednodušenou strukturu amigáckých modů. Neumí měnit hlasitost kanálů a další méně důležité efekty. Redukci jednoho kanálu A.S.E. řeší tak, že všechny samply jsou ve skutečnosti 7 bitové a v kanálu C se sčítají před zápisem na port. Nicméně používat se dá a ve své době byl jediným programem, který něčeho takového vůbec byl schopen.

Jak A.S.E. player hraje je trochu vidět v tomto videu (YouTube).

Samplerate A.S.E. playeru verze 2.0 se pohybuje mezi 5,63 až 6,07kHz na kanál. V kanálu C se sice sčítají dva kanály MODu, ale to trvá zhruba dvojnásobek času oproti kanálům A a B, takže se to vyrovná.

screenshot screenshot

Kromě A.S.E. playeru existuje i rutina od Tritona, která je A.S.E. velmi silně inspirována, hraje o něco stabilněji s vyšším samplerate, ale nikdy nebyla rozšířena, protože používá jinak strukturovaná data.

Triton napsal verze dvě. Jedna se jmenuje XMOD a druhá HSTAB. XMOD přehrává se samplerate 8,1 až 8,7kHz na kanál. HSTAB přehrává se samplerate 7,67 - 7,25kHz, kolísá, ale vzhledem k možnostem Z80 v ZX Spectru relativně málo na relativně vysokém samplerate.

Na konci textu jsou odkazy na nějaké ukázkové diskety se skladbami pro A.S.E. a DA převodník.

Dalším přehrávačem, který lze s tříkanálovým DA převodníkem použít je Sampletracker. Kromě DA převodníku umí přehrávat i na AY-3-8912 a dokonce na jednobitový speaker. Proto jsou na převodníku přepínače, které ho přepnou do 4bit režimu kompatibilního s AY.

screenshot

Sampletracker mi při měření uchystal malé překvapení, protože zvládá samplerate na kanál 11,74kHz a to zcela stabilně bez kolísání frekvence. Alespoň jsem nebyl schopen se svým osciloskopem žádné kolísání samplerate změřit.

Zajímavou konkurencí A.S.E. byl přehrávač od Štěpána Obdržálka, ke kterému sestavil 4 kanálový DA převodník Petr Simandl. Jeho přehrávač je původně určen pro ZX Spectrum +3 a umí přehrávat MODy přímo z FAT12 disket včetně hlasitostních efektů. Existuje i verze pro Betadisk. Nevýhodou je, že konstrukce převodníku je složitější a nedokázal si ho doma zbastlit kdokoliv už kvůli oboustranému plošnému spoji.

schema schema

Bohužel přehrávač Š. Obdržálka pro Simandlův převodník je rychlostně silně nestabilní, samplerate výrazně kolísá někde mezi 28 - 33kHz pro všechny kanály (tj. cca 7 - 8kHz na kanál). Kvalita zvuku je díky tomu bohužel špatná (zatímco A.S.E. a spol se více drží okolo nějaké střední hodnoty v malém rozsahu). Narozdíl od A.S.E. musí zapisovat data na DA vždy i když se hodnota nemění, protože zápisem se kanály rotují. Krom toho provádí konverzi automaticky - leckdy lze kvalitu výrazně zvýšit ručním resamplováním a přehráváním v jiné oktávě, což takto není možné.

DA Out

První verze jsem měl nejspíš ubastlené jako vrabčí hnízdo přímo na konektoru, určitě jsme tak s kamarádem používali jednokanálový Covox připojený k LPT portu PC AT se 16MHz 286. Místo skřípajícího speakeru, nemaje peníze na alespoň Adlib, tím spíš ne na SoundBlaster, jsme konečně slyšeli "hudbu jak z Amigy". Další verze určitě existovala ubastlená na oboustranném neprokoveném plošném spoji, s ručně kreslenou předlohou pro výrobu fotocestou se standardními rezistory 0207 (viz foto v úvodu), to mohlo být někdy kolem roku 1992.

Jak vlastně DA převodník funguje?

Docela jednoduše. Protože jsem to nenašel nikde vysvětlené, pokusím se o to, pro zjednodušení na převodníku pouze dvoubitovém. Pro více bitů je princip stejný, jen se výpočet stává zbytečně rozsáhlejším.

V principu nezáleží na konkrétních hodnotách rezistorů, nebo napětí. Předpokládejme tedy, že zdroj napětí U1 a U2 je ideální (výstupy z obvodů typu LS na tom moc dobře nejsou, ani třeba MHB8255, ale CMOS obvody typu HC a HCT mívají na výstupu napětí velmi se blížící 0V a Ucc - obvykle 5V), stejně tak rezistory (často se používá kombinace 10kΩ a 20kΩ) a že audio zesilovač, resp. cokoli je k výstupu připojeno z obvodu odebírá nulový proud, čemuž se v praxi blíží třeba operační zesilovač, nebo něco s MOSFETem na vstupu.

nacrtek

Pro výše nakreslené zapojení se dají napsat dvě obecné rovnice smyčkových proudů.

2RIa+2R(Ia-Ib)+U1=0

-U1+2R(-Ia+Ib)+RIb+2RIb+U2=0

To se dá upravit na jednodušší tvar.

4RIa-2RIb=-U1

-2RIa+5RIb=U1-U2

Pak ještě jednou, aby se rovnice daly přímo sčítat.

20RIa-10RIb=-5U1

-4RIa+10RIb=2U1-2U2


4RIa-2RIb=-U1

-4RIa+10RIb=2U1-2U2

Po sečtení vyjádřím Ia

Ia=(-3U1-2U2)/16R

Po druhém sečtení vyjádřím Ib

Ib=(U1-2U2)/8R

vstupní bity 00

Začněme nejjednodušší situací. Oba bity jsou nulové, i napětí U1 a U2 jsou nulová. Na první pohled je zřejmé, že i Uout musí být nula, protože v obvodu nezbyl žádný další zdroj napětí, ale pro pořádek dosadím.

Ia=0/16R

Ib=0/8R

Oba proudy jsou nulové, tedy i napětí na rezistoru 2R úplně vpravo, kterým protéká Ib musí být nulový, což je Uout.

vstupní bity 01

Přidáme jeden zdroj napětí U1=U zatímco U2=0.

Ia=(-3U1-2U2)/16R=-3U/16R

Ib=(U1-2U2)/8R=U/8R

Teď mohu spočítat Ua i Uout, Ua spíš jen pro zajímavost a verifikaci. Vynásobím proud 2R, protože mne zajímá napětí na jednom z 2R rezistorů proti zemi. V obou případech se mi R pokrátí a zbyde jen poměrné napětí.

Ua=2R(-3U)/16R=-3U/8

Una 2R=2RU/8R=U/4

Uout = 1/4 z napětí zdroje.

vstupní bity 10

Analogicky, jako v předchozím případě dosadím, pro změnu U1=0 a U2=U.

Ia=(-3U1-2U2)/16R=(-2U)/16R=-U/8R

Ib=(U1-2U2)/8R=-U/4R

A opět spočítám napětí vynásobením proudů 2R. Verifikuji tím, že si obvod zjednoduším jinak. Je-li U1=0, tak mám z levých dvou 2R paralelní kombinaci, to dává R, k tomu přičtu R v sérii a zbydou mi dva stejné 2R rezistory s napájecím zdrojem v sérii. Mezi těmi dvěma rezistory musí být napětí poloviční. Matoucí je pouze znaménko, vyplývající z opačně nakreslené orientace proudu, protože mi vlastně vyšlo jaké napětí musím odečíst od U, který je s napětím na rezistoru 2R v sérii.

Ua=-U2R/8R=-U/4

Una 2R=-U2R/4R=-U/2

Uout=Una 2R+U=-U/2+U=U/2

Výstupní Uout je tedy 1/2 z U.

vstupní bity 11

A poslední situace, oba zdroje jsou zapnuté U1=U i U2=U.

Ia=(-3U1-2U2)/16R=(-3U-2U)/16R=-5U/16R

Ib=(U1-2U2)/8R=(U-2U)/8R=-U/8R

Spočítám napětí na 2R rezistorech.

Ua=-2R5U/16R=-5U/8R

Una 2R=-2RU/8R=-U/4

Uout=Una 2R+U=-U/4+U=3U/4

Opět mi vyšlo napětí záporné, protože jsem Ib nakreslil opačně než skutečně teče a opět ho musím odečíst od U, protože výsledkem výpočtu je napětí na rezistoru 2R, nikoli přímo napětí Uout. Výstupní napětí Uout je dáno součtem napětí na 2R rezistoru a U.

A nakonec mohu všechna napětí vynést do malého grafu, který mi pěkně ukazuje, jak DA převodník vytváří z digitálních dat něco, co by se mohlo podobat analogovému napětí, pokud je bitů dostatečný počet a měřící přístroj (osciloskop) dostatečně nepřesný, aby schodovitost zakryl (příp. signál proženu filtrem). Čistě prakticky zhruba od 8 bitů už se dá analogový signál napodobit docela obstojně, vyšší počty bitů dále zvyšují dynamický rozsah, aby např. pro tichý zvuk nezůstal jediný bit (LSB) a snižují šum.

graf

Komu by graf nestačil, může se podívat na video (YouTube), jak vypadá 4bitový signál na osciloskopu při přehrávání skladby Sampletrackerem.

verze pro UR-4

Abych mohl převodník poskytnout dalším lidem, snažil jsem se později udělat celý převodník co možná nejmenší a zároveň maximálně jednoduchý a levný. Proto je celý navržen na jednostranném plošném spoji s použitím SMD rezistorů velikosti 0805. Pár drátových propojek, tři přepínače, datový konektor a audio 3,5mm jack - nic víc neobsahuje.

foto foto

Typické použití DA může vypadat např. takto. Na druhém snímku je v popředí Betadisk (ta černá krabice), za ním SIF s modulem Connect One, za ním UR-4 a v ní zapojený DA převodník s audio jackem do monitoru.

foto foto

verze pro Didaktik Gama 192k

O pár let později, když jsem si postavil Didaktik Gama 192k, jsem udělal další variantu převodníku, ještě menší než je ta pro UR-4 a to tak, aby se vešla do rozměru 50x50mm, protože na tento rozměr poskytoval výrobce plošných spojů slevu. A protože jsem desky nechával vyrábět, tak jsou narozdíl od těch samodomo prokovené, s nepájivou maskou i potiskem.

Didaktik Gama 192k nepoužívá 8255 ke stránkování paměti, naopak má pamět kompatibilní se ZX Spectrum 128k. Běží na něm prakticky všechny trackery, přehrávače i dema.

Teoreticky se dá DA out použít i s Didaktikem Gama 80k a možná i s disketovou mechanikou Didaktik 40/80. Ale u Didaktiku Gama 80k bude určitě nutné nejprve vyřešit stránkování RAM. Nejlépe doplnit přepínač, který stránkování RAM pomocí portu C0 vypne a přepne signál na IO konektor místo signálu z jednoho z invertorů. Při té příležitosti neuškodí vyvést i 5V po vzoru DG 192k, aby se daly připojit aktivní redukce pro joystick, nebo připojení tiskárny.

foto foto

Download

Odkazy

Historie změn článku

  • 2008-02-16 - zveřejněno
  • 2008-02-17 - aktualizováno, doplněny naměřené frekvence
  • 2008-05-02 - doplněny fotky menší verze DA převodníku
  • 2016-10-20 - aktualizace
  • 2017-11-20 - aktualizace, fotky navíc a výpočet

[ Zpět na hlavní stránku ]

Tento web je převážně o ZX Spectru, kompatibilních počítačích a jiném zajímavém hardwaru. Naleznete-li chybu, nebo byste rádi cokoliv co s tímto souvisí, můžete mi napsat email. Stručně o mém webu zde.