AY-3-8912
Author
Albert FloresAY-3-8912 je zvukový čip, který byl vyvinut firmou General Instrument na konci 70. let 20. století. Tento čip se stal velmi populárním v elektronických hračkách a domácích počítačích. Jeho hlavní využití spočívalo v generování zvuků, jako je hudba a zvukové efekty. AY-3-8912 umožňuje generovat až tři nezávislé kanály zvuku s různými tóny a hlasitostmi. Čip byl součástí mnoha počítačů, včetně populárního počítače ZX Spectrum. Díky jednoduchému rozhraní a nízké ceně se stal AY-3-8912 oblíbeným zvukovým čipem mezi hudebníky a tvůrci her. Dodnes si udržuje svou popularitu a je často používán v retro počítačové scéně.
General Instruments AY-3-8910 Microchip AY-3-8912A General Instruments AY-3-8913 AY-3-891x je řada zvukových čipů vyvinutých v 80. letech 20. století firmou General Instruments. Později výrobu převzala firma Microchip a ještě později, na přelomu 20.-21. století, pak firma Micrel. Pod označením YM2149 jej také vyráběla firma Yamaha. Obvody AY se používaly pro generování hudby v herních konzolích a také v počítačích ZX Spectrum 128K, TS 2068, Amstrad CPC a Atari ST. Dalším ekvivalentem (ne však 100%) je obvod M5255 japonské firmy OKI. U tohoto obvodu je zajímavé, že obsah vnitřních registrů není vynulován signálem RESET, také zde nelze softwarově vyčíst obsah registrů hlasitosti, díky čemuž např. nefungují různé efektní indikátory v hudebních demech na počítači ZX Spectrum. Microchip AY-3-8910A OKI M5255
Popis obvodu
Zvukový generátor AY-3-891x umožňuje generovat tříkanálový zvuk. Vyráběl se ve třech variantách, které jsou funkčně shodné, liší se pouze počtem portů určených pro připojení dalších zařízení: * AY-3-8910 - obsahuje dva osmibitové porty pro další zařízení, * AY-3-8912 - obsahuje jeden osmibitový port pro další zařízení, * AY-3-8913 - neobsahuje porty pro další zařízení.
Registry zvukového generátoru
Yamaha YM2149 Generovaný zvuk je programován pomocí 14 registrů, dva registry jsou určeny pro komunikaci pomocí osmibitových portů.
registr | význam |
---|---|
R0 | perioda tónu kanálu A, jemné ladění |
R1 | perioda tónu kanálu A, hrubé ladění |
R2 | perioda tónu kanálu B, jemné ladění |
R3 | perioda tónu kanálu B, hrubé ladění |
R4 | perioda tónu kanálu C, jemné ladění |
R5 | perioda tónu kanálu C, hrubé ladění |
R6 | perioda šumu |
R7 | mixování tonů, šumu, nastavení paralelních bran |
R8 | amplituda kanálu A |
R9 | amplituda kanálu B |
R10 | amplituda kanálu C |
R11 | perioda obálky, jemné ladění |
R12 | perioda obálky, hrubé ladění |
R13 | tvar obálky |
R14 | data prvního osmibitového port |
R15 | data druhého osmibitového portu |
Registry R0 - R5 slouží k nastavení periody tónu na příslušném kanále. Perioda je dvanáctibitové číslo, rozdělené do dvou registrů, osm nižších bitů se nastavuje pomocí registru R0, resp. +more R2, resp. R4, vyšší čtyři bity se nastavují pomocí registru R1, resp. R3, resp. R5.
registr | R1 (R3, R5) | R0 (R2, R4) | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | hrubé ladění periody tónu | hrubé ladění periody tónu | hrubé ladění periody tónu | hrubé ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu | jemné ladění periody tónu |
Podobně se pomocí registru R6 nastavuje perioda šumu, v tomto případě je perioda pouze pětibitové číslo.
registr | R6 | |||||||
---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | perioda šumu | perioda šumu | perioda šumu | perioda šumu | perioda šumu |
Pomocí registru R7 se nastavuje, zda bude v jednotlivých kanálech přehráván tón či šum, či obojí, a také se pomocí tohoto registru nastavuje, zda osmibitové brány budou použity jako vstupní či jako výstupní.
registr | R7 | |||||||
---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | nastavení 2. brány | nastavení 1. +more brány | šum C | šum B | šum A | tón C | tón B | tón A |
Bity 7 a 6 slouží k nastavení orientace osmibitových bran (0 - vstupní, 1 - výstupní), bity 5, 4 a 3 slouží k povolování přehrávání šumu na příslušných kanalách (0 - povoleno, 1 - zakázáno), bity 2, 1 a 0 slouží k povolování přehrávání tónu na příslušných kanalách (0 - povoleno, 1 - zakázáno).
Amplituda tónu je řízena pomocí registrů R8, R9 a R10 samostatně pro jednotlivé kanály. Amplituda může být konstantní nebo proměnlivá. +more Toto se nastavuje pomocí bitu 4. V režimu proměnlivé amplitudy se její průběh nastavuje pomocí registru R13.
registr | R8 (R9, R10) v režimu konstantní amplitudy | |||||||
---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | 0 | amplituda tónu | amplituda tónu | amplituda tónu | amplituda tónu |
registr | R8 (R9, R10) v režimu proměnlivé amplitudy | |||||||
---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | 1 |
Registry R11 a R12 slouží k nastavení periody obálky amplitudy tónu. Perioda je šestnáctibitové číslo, rozdělené do dvou registrů, osm nižších bitů se nastavuje pomocí registru R11, vyšších osm bitů se nastavují pomocí registru R12.
registr | R11 | R12 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | hrubé ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy | jemné ladění periody obálky amplitudy |
Registr R13 slouží k nastavení průběhu obálky amplitudy tónu. Jednotlivé vlastnosti průběhu obálky amplitudy se nastavují pomocí nižších čtyř bitů tohoto registru.
registr | R13 | |||||||
---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | pokračuj | směr | střídej | podrž |
Nastavení hodnot nižších čtyř bitů definuje následující průběhy obálky amplitudy:
00xx \_______ 01xx /_______ 1000 \\\\\\\\ 1001 \_______ 1010 \/\/\/\/ 1011 \¨¨¨¨¨¨¨ 1100 //////// 1101 /¨¨¨¨¨¨¨ 1110 /\/\/\/\ 1111 /_______
Registry R14 a R15 slouží pro zápis dat na příslušnou osmibitovou bránu nebo ke čtení dat z této brány v závislosti na režimu brány nastaveném pomocí registru R7.
registr | R14 (R15) | |||||||
---|---|---|---|---|---|---|---|---|
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bit | čtená/zapisovaná data | čtená/zapisovaná data | čtená/zapisovaná data | čtená/zapisovaná data | čtená/zapisovaná data | čtená/zapisovaná data | čtená/zapisovaná data | čtená/zapisovaná data |
Využití obvodu
Amstrad CPC
V počítačích Amstrad CPC je obvod AY-3-8912 připojen k procesoru Z80 prostřednictvím obvodu 8255, kdy data jsou posílána a čtena pomocí jeho brány A a řídicí signály jsou připojeny k bitům 6 a 7 brány C. Pomocí obvodu AY-3-8912 je připojena i klávesnice.
Dva s obvodem AY kompatibilní obvody, obvody YMZ294, jsou obsaženy v interface CTC-AY, kdy obvod pro pravý kanál je připojen k portům F884 a F984 (šestnáctkově) a obvod pro levý kanál je připojen k portům F888 a F988.
Atari ST
Protože procesor Motorola 68000 nemá vstupně výstupní porty, je u počítačů Atari ST připojen obvod YM2149 do paměťového prostoru procesoru na adresy FF8800 a FF8802 (šestnáctkově). Vstupně výstupní brány obvodu YM jsou využity jako výstupní signály paralelního portu (vstupně výstupní brána B a bit 5 brány A) a sériového portu (bity 3 a 4 vstupně výstupní brány A), bity 0-2 vstupně výstupní brány A jsou použity k výběru aktivní disketové mechaniky a strany diskety. +more Emulátor procesoru Motorola 68000 emu68 má pro hudební obvod rezervovaný adresní rozsah FF8800-FF88FF. Stejným způsobem jako u Atari ST je obvod YM2149 připojen u Atari Falcon.
HT 1080Z
Počítače HT 1080Z obsahují obvod AY-3-8912 připojený na portech procesoru Z80: * 1E (šestnáctkově) - zápis dat do registru, * 1F (šestnáctkově) - výběr registru.
MSX
Počítače MSX obsahují obvod AY-3-8910 nebo YM2149 na porty procesoru Z80 v rozsahu A0-A3 (šestnáctkově): * A0 - výběr registru, * A1 - zápis dat do registru, * A2 - čtení dat z registru.
Zařízení MegaFlashROM k počítačům MSX obsahuje vlastní obvod AY připojený na porty procesoru Z80 v rozsahu 10-12 (šestnáctkově).
Orion-128
Počítač Orion-128 má obvod AY-3-8910 nebo AY-3-8912 připojen na porty v rozsahu F748-F74F (šestnáctkově).
Sinclair ZX81
Obvod AY byl připojován i k počítači Sinclair ZX81. Obsahovaly ho interfacy Quicksilva sound board, Stuart Systems Sound Synthesiser a Zon X-81. +more V případě Stuart Systems Sound Synthesiser a Zon X-81 je obvod AY připojen na vstupně výstupní porty procesoru Z80, v případě Quicksilva sound board je obvod AY připojen do paměťového prostoru procesoru. Zon X-81 používá AY-3-8912, Stuart Systems Sound Synthesiser a Quicksilva sound board používají AY-3-8910. S interfacem Zon X je kompatibilní interface MrX Sound board, který ovšem umožňuje navíc i alternativní konfiguraci, takže s pomocí dvou různě nakonfigurovaných interfaců MrX lze vytvořit šestikanálový Turbo Sound.
Sinclair ZX Spectrum
Pro počítače Sinclair ZX Spectrum existuje také několik způsobů připojení tohoto zvukového generátoru, které nejsou vzájemně kompatibilní: * zapojení v ZX Spectru 128K, * zapojení v Fuller Box interface pro ZX Spectrum 48K, * zapojení v TS 2068, * zapojení v ZXM Soundbox, * zapojení v Zon X (varianta interface Zon X-81 pro ZX81).
Další nekompatibilní zapojení bylo používáno ve vývojové verzi počítače SAM Coupé. Protože v průběhu vývoje počítače SAM Coupé byl tříkanálový zvukový generátor AY nahrazen šestikanálovým zvukovým generátorem Philips SAA 1099, toto zapojení se nerozšířilo.
V Rusku vzniklo zapojení stejné jako v případě ZX Spectru 128K, ale obsahující dva zvukové generátory AY, nazývané Turbo Sound. Tímto je standardně vybaven počítač ATM Turbo 2++.
Přehled způsobů připojení obvodu AY k počítači ZX81 | Přehled způsobů připojení obvodu AY k ZX Spectru a kompatibilním počítačům | |||||||
---|---|---|---|---|---|---|---|---|
počítač/zařízení | připojení | adresa (šestnáctkově) pro: | počítač/zařízení | port (šestnáctkově) pro: | ||||
výběr registru | zápis dat | čtení dat | výběr registru | zápis dat | čtení dat | |||
Quciksilva sound board | paměťový prostor | 7FFF | 7FFE | 7FFE | Spectrum 128/+2/+2A/+3, Melodik, Turbo Sound | FFFD | BFFD | FFFD |
ZXM Soundbox, William Stuart Systems Music Synthesiser | port | 9F | DF | BF | Fuller Box, DK'Tronics 3 Channel Sound Synthesiser | 3F | 5F | 3F |
Zon X-81 | port | DF | 0F | TS2068, TC2068 | F5 | F6 | F6 | |
MrX Sound Board (umožňuje připojit dva obvody AY) | port | DF, CF | 0F, 1F | ZXM Soundbox | 9F | DF | BF | |
MrX Sound Board (umožňuje připojit dva obvody AY) | port | AF, BF | E7, F7 | Zon X | FF | 7F | ||
Kvadro (obsahuje dva obvody AY) | FFFD | BFFD | FFFD | |||||
Kvadro (obsahuje dva obvody AY) | EFFD | AFFD | EFFD |
Arduino
Zvukový generátor je připojován také k Arduinu.
Záznam hudby generované čipem AY
Soubory .ay
Pro možnost uložení hudby pro hudební čip AY-3-8912 generované na počítačích Sinclair ZX Spectrum a Amstrad CPC existují soubory . +moreay. Formát souboru byl definován v 90. letech českým programátorem Patrikem Rakem, původně pouze pro hudby pro Sinclair ZX Spectra, podpora počítačů Amstrad CPC byla doplněna později. Soubor . ay obsahuje kromě vlastních hudebních dat i původní přehrávací rutinu pro procesor Z80.
AY hudba na audio nosičích
Časopis Sinclair User v roce 1987 nabízel limitovanou edici audio kazety s hudbou pro čip AY získanou z her pro ZX Spectrum se studiovými úpravami. Hudba pro tuto kazetu byla získána přímo ze ZX Spectra 128K na jednu stopu osmistopého magnetofonu a doplněna dalšími hudebními motivy a zvuky.
Další zvukové generátory
Jeho přímými konkurenty zvukového generátoru AY-3-891x byly zvukové generátory SID používaný v počítačích Commodore 64, Pokey používaný v počítačích Atari 130/800, Paula používaný v počítačích Amiga a Philips SAA 1099 v počítačích Sam Coupé.
Poznámky
Reference
Literatura
Externí odkazy
[url=http://scratchpad. wikia. +morecom/wiki/AY-3-8912%28a%29]Popis připojení zvukového generátoru k ZX Spectru[/url] * [url=http://www. youtube. com/watch. v=M9IlURvstUo]Critical Error - ZX Spectrum demo[/url] na youtube - ukázka hudby generované čipem AY-3-8912 v demu pro ZX Spectrum přihlášeném na Forever 2011, závěrečné outro od času 4:23 je samplovaná hudba přehrávaná pomocí čipu AY-3-8912.
Kategorie:Zvukové čipy Kategorie:Amstrad CPC Kategorie:Atari ST Kategorie:Sinclair ZX81 Kategorie:Hardware počítačů ZX Spectrum a kompatibilních Kategorie:Hardware pro Atari