AY-3-8912

General Instruments AY-3-8910
General Instruments AY-3-8910
Microchip AY-3-8912A
Microchip AY-3-8912A
General Instruments AY-3-8913
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
Microchip AY-3-8910A
OKI M5255
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ů.

registrvýznam
R0perioda tónu kanálu A, jemné ladění
R1perioda tónu kanálu A, hrubé ladění
R2perioda tónu kanálu B, jemné ladění
R3perioda tónu kanálu B, hrubé ladění
R4perioda tónu kanálu C, jemné ladění
R5perioda tónu kanálu C, hrubé ladění
R6perioda šumu
R7mixování tonů, šumu, nastavení paralelních bran
R8amplituda kanálu A
R9amplituda kanálu B
R10amplituda kanálu C
R11perioda obálky, jemné ladění
R12perioda obálky, hrubé ladění
R13tvar obálky
R14data prvního osmibitového port
R15data 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. R2, resp. R4, vyšší čtyři bity se nastavují pomocí registru R1, resp. R3, resp. R5.

registrR1 (R3, R5)R0 (R2, R4)
bit7654321076543210
    hrubé ladění periody tónujemné ladění periody tónu

Podobně se pomocí registru R6 nastavuje perioda šumu, v tomto případě je perioda pouze pětibitové číslo.

registrR6
bit76543210
   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í.

registrR7
bit76543210
nastavení
2. brány
nastavení
1. brány
šum Cšum Bšum Atón Ctón Btó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á. Toto se nastavuje pomocí bitu 4. V režimu proměnlivé amplitudy se její průběh nastavuje pomocí registru R13.

registrR8 (R9, R10) v režimu konstantní amplitudy
bit76543210
   0amplituda tónu
registrR8 (R9, R10) v režimu proměnlivé amplitudy
bit76543210
   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.

registrR11R12
bit7654321076543210
hrubé ladění periody obálky amplitudyjemné 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.

registrR13
bit76543210
    pokračujsměrstřídejpodrž

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.

registrR14 (R15)
bit76543210
č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.[1][p 1] 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,[3] 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.[4]

Atari ST

Protože procesor Motorola 68000 nemá vstupně výstupní porty,[5] je u počítačů Atari ST připojen obvod YM2149 do paměťového prostoru procesoru na adresy FF8800 a FF8802 (šestnáctkově).[6][p 2] 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)[8] a sériového portu (bity 3 a 4 vstupně výstupní brány A)[8], bity 0-2 vstupně výstupní brány A jsou použity k výběru aktivní disketové mechaniky a strany diskety.[9] Emulátor procesoru Motorola 68000 emu68 má pro hudební obvod rezervovaný adresní rozsah FF8800-FF88FF.[10] Stejným způsobem jako u Atari ST je obvod YM2149 připojen u Atari Falcon.[11]

HT 1080Z

Počítače HT 1080Z obsahují obvod AY-3-8912 připojený na portech procesoru Z80:

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.[13]

Zařízení MegaFlashROM k počítačům MSX obsahuje vlastní obvod AY připojený na porty procesoru Z80 v rozsahu 10-12 (šestnáctkově).[13][14]

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ě).[15]

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.[16] 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.[18]

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).[19]

Další nekompatibilní zapojení bylo používáno ve vývojové verzi počítače SAM Coupé.[20] 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++.[21]

Přehled způsobů připojení obvodu AY k počítači ZX81Př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 registruzápis datčtení datvýběr registruzápis datčtení dat
Quciksilva sound boardpaměťový
prostor
7FFF7FFE7FFESpectrum 128/+2/+2A/+3,
Melodik,
Turbo Sound
FFFDBFFDFFFD
ZXM Soundbox,
William Stuart Systems Music Synthesiser
port9FDFBF[p 3]Fuller Box,
DK'Tronics 3 Channel Sound Synthesiser
3F5F3F[p 4]
Zon X-81portDF[p 5]0FTS2068, TC2068F5F6F6
MrX Sound Board
(umožňuje připojit dva obvody AY)
portDF, CF0F, 1FZXM Soundbox9FDFBF
AF, BFE7, F7Zon XFF7F
Kvadro[22]
(obsahuje dva obvody AY)
FFFDBFFDFFFD
EFFDAFFDEFFD

Arduino

Zvukový generátor je připojován také k Arduinu.[23][24]

Záznam hudby generované čipem AY

Soubory .ay

Související informace naleznete také v článku .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 .ay.[25] 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.[26] 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.[27] 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.[25]

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

  1. U počítačů Amstrad CPC je brána A dostupná na portu F4xx, brána B na portu F5xx, brána C na portu F6xx a řídicí brána na portu F7xx.[2]
  2. V[7] jsou uvedeny porty FFFF8800 a FFFF8802, protože ale procesor Motorola 68000 nemá vyvedeno 8 nejvyšších bitů adresové sběrnice, jsou adresy FFFF8800 a FFFF8802 s adresami FF8800 a FF8802 ekvivalentní.
  3. Pouze ZXM Soundbox
  4. Pouze Fuller Box
  5. Občas bývá uveden port CF

Reference

  1. How to access the PSG via PPI na CPCWiki
  2. 8255 na CPCWiki
  3. Llega el CTC-AY, la revolución en la escena del Amstrad CPC (španělsky)
  4. I/O Port Summary na CPCWiki
  5. Motorola 68000 microprocessor family
  6. ST Secrets. Page 6. January/February 1988, čís. 31, s. 32–35. Dostupné online. ((anglicky)) 
  7. The Atari ST Internals - A programmers reference to the Atari ST Archivováno 22. 9. 2013 na Wayback Machine. na retrospec.sgn.net
  8. a b Concise Atari ST 68000 Programmer's Reference Guide: Atari ST hardware (anglicky)
  9. Atari ST Interfaces / Connectors / Cables Information
  10. 68k memory and IO manager
  11. Memory-map of the Falcon030
  12. FastZ80 szimulátor (maďarsky)(anglicky) na ht.homeserver.hu
  13. a b MSX I/O ports overview (anglicky) na map.grauw.nl
  14. MegaFlashROM SCC Manual. www.msxmania.com [online]. [cit. 2014-11-14]. Dostupné v archivu pořízeném dne 2014-11-29. 
  15. СУГОНЯКО, В.; САФРОНОВ, В. "Орион-128": контроллер дисковода. Радиолюбитель. 1993, čís. 5/93, s. 7–8. Dostupné v archivu pořízeném dne 2014-10-26. ((rusky))  Archivováno 26. 10. 2014 na Wayback Machine. Archivovaná kopie. www.rl.electronica.by [online]. [cit. 2014-10-17]. Dostupné v archivu pořízeném z originálu. 
  16. Breaking The ZX-81 Sound Barrier. Your Computer. September 1982, roč. 2, čís. 9, s. 22–23, 25–26. Dostupné online. Dostupné také na: [1]. [nedostupný zdroj]
  17. MrX Sound Board for the ZX81 from Sinclair "Manual for users and programmers" [online]. 2012-01-29 [cit. 2014-03-12]. Version v004. Dostupné v archivu pořízeném z originálu dne 2014-03-05. ((anglicky)) ()
  18. MrX Sound Board for the ZX81 from Sinclair "Manual for users and programmers" [online]. 2012-05-22 [cit. 2013-07-08]. Version v005. Možnost použití dvou interfaců jako Turbo Sound je zmíněna až ve verzi 005, ve verzi 004[17] zmíněna není. Dostupné online. Dostupné také na: [2]. Dále dostupné na: [3]. ((anglicky)) [nedostupný zdroj]
  19. Spectrum Sound PSG (Programmable Sound Generator) Archivováno 14. 3. 2013 na Wayback Machine. na emubase.de
  20. Beyond the Spectrum — a superclone takes shape / SAM. Crash. March 1988, čís. 50 (Special Golden Issue), s. 58–60. Dostupné online. Dostupné také na: [4]. ((anglicky)) 
  21. Страничка компьютера ATM-turbo (ОПИСАНИЕ) (rusky) na atmturbo.nedopc.com
  22. Квадро - квадросиситема для ZX Spectrum на основе AY3-8910. Faultless. Ноябрь 1997, čís. 08. Dostupné online. 
  23. YM2149 sound generator, Arduino and fast pin switching (anglicky) na electronicfields.wordpress.com
  24. 50 ways... Interfacing Arduino with the mythic AY-3-8910 sound chip (katalánsky) na joanillo.org
  25. a b Project AY na World of Spectrum
  26. AY file format na shiru.untergrund.net/1bit
  27. objednávkový kupón. Sinclair User. August 1987, čís. 65, s. 33. Dostupné také na: [5]. ISSN 0262-5458. ((anglicky)) 

Literatura

Externí odkazy

Média použitá na této stránce

M5255.jpg
Autor: Karlovarak, Licence: CC BY-SA 4.0
Sound processor
AY-3-8910.jpg
General Instrument AY-3-8910 Sound Chip
YM2149 01.jpg
(c) Baz1521 na projektu Wikipedie v jazyce japonština, CC BY-SA 3.0
AY-3-8910 compatible YM2149(SSG) made by yamaha. The package type of DIP
AY-3-8912A.jpg
Autor: Karlovarak, Licence: CC BY-SA 4.0
Sound processor
AY-3-8910A Sound Chip.png
Микросхема звукогенератора AY-3-8910A производства Microchip (Тайвань) на плате компьютера MSX2 Daewoo CPC300E
AY-3-8913.jpg
Autor: Karlovarak, Licence: CC BY-SA 4.0
Sound chip