Zvukový čip AY-3-8910 (YM2149)

9. 4. 2009
Doba čtení: 12 minut

Sdílet

Třetím zvukovým čipem z éry osmibitových počítačů, který si popíšeme, je čip AY-3-8910 firmy General Instrument (GI), později vyráběný i firmou Yamaha pod označením YM2149. Tento čip byl součástí osmibitového ZX Spectrum 128K, herních konzolí Vectrex a Intellivision či 16/32bitového počítače Atari ST.

Obsah

1. Zvukový čip AY-3–8910 (YM2149)
2. Použití zvukového čipu AY-3–8910: ZX Spectrum 128K
3. Herní konzole Vectrex
4. Počítače Atari ST
5. Vlastnosti zvukového čipu AY-3–8910
6. Funkční bloky zvukového čipu AY-3–8910
7. Literatura a odkazy na Internetu
8. Obsah dalšího pokračování seriálu

1. Zvukový čip AY-3–8910 (YM 2149)

V předchozích třech částech seriálu o architekturách počítačů jsme si popsali zvukový čip POKEY používaný především v osmibitových počítačích firmy Atari i herních automatech vyráběných touto firmou, a následně čip SID (Sound Interface Device), který se proslavil coby součást osmibitových domácích počítačů Commodore. Dnes si popíšeme třetí zvukový čip používaný v éře osmibitových domácích počítačů (ZX Spectrum 128, MSX) a herních konzolí (Vectrex, Intellivision), jenž byl později použit i u některých počítačů 16/32 bitových (především Atari řady ST a počítače CP1610). Jedná se o čip firmy General Instrument, jehož kódové označení je AY-3–8910, lidově „á–ýčko“. Tento relativně jednoduchý a levný čip později vyráběla i firma Yamaha pod označením YM2149; právě tato verze byla například použita ve zmíněném Atari ST. Samotné jádro čipu, které se stará o generování zvuku, firma Yamaha dodnes používá i v dalších integrovaných obvodech určených pro video hry či mobilní telefony. Jedná se především o čip YM-2203 (označovaný též zkratkou OPN), který původní AY-3–8910 rozšiřuje o frekvenční modulaci.

pc5601

Obrázek 1: Zvukový čip AY-3–8910 ve čtyřicetipinovém pouzdře DIL (originál od firmy General Instrument).

Samotný zvukový čip AY-3–8910 byl vyráběn ve třech variantách označovaných AY-3–8910, AY-3–8912 a AY-3–8913. Jednotlivé varianty čipu se však nelišily způsobem generování zvuků (funkční bloky pro práci se zvukem zůstávaly nezměněné), ale především počtem osmibitových vstupně/výstupních portů ovládaných přes řídicí registry (viz další kapitoly). AY-3–8910 se totiž, podobně jako již popsaný čip POKEY, používal kromě práce se zvuky a hudbou také pro ovládání dalších zařízení; mohl například pracovat jako jednoduchý programově řízený paralelní port, rozhraní pro připojení digitálních joysticků, přepínač mezi bankami operační paměti atd. Počítače či herní konzole, které pro ovládání dalších zařízení využívaly jiný obvod (například Intel 8255), tak obsahovaly buď nejmenší a samozřejmě i nejlevnější čtyřiadvaceti­pinovou variantu AY-3–8913, popř. osmadva­cetipinovou variantu AY-3–8912 (právě tato varianta, jenž je zobrazená na druhém obrázku, byla mezi výrobci počítačů a herních konzol nejpopulárnější).

pc5602

Obrázek 2: Zvukový čip AY-3–8912 je umístěn ve 28pinovém pouzdře DIL.

Základní vlastnosti všech tří variant čipu AY jsou vypsány v následující tabulce:

Označení čipu Počet I/O portů Počet pinů
AY-3–8910 2 40
AY-3–8912 1 28
AY-3–8913 žádný 24
pc5603

Obrázek 3: Zapojení pinů zvukového čipu AY-3–8910. Kromě dvou vstupně/výstupních osmibitových portů na obrázku vidíme i piny určené pro připojení obvodu k adresové a datové sběrnici počítače, vstup pro hodinový signál (z něho jsou odvozeny všechny frekvence zvukových generátorů, generátoru šumu i generátoru obálky) a analogové výstupy všech tří zvukových kanálů.

2. Použití zvukového čipu AY-3–8910: ZX Spectrum 128K

Slavný osmibitový domácí počítač ZX Spectrum pravděpodobně není zapotřebí čtenářům Roota blíže představovat. V Evropě se jednalo o nejrozšířenější domácí osmibitový počítač se silnou programátorskou podporou. Tento počítač, který byl po hardwarové stránce velmi jednoduchý (jednoduchost ovšem v tomto případě není na škodu, právě naopak), bylo také velmi snadné „klonovat“ – z tohoto důvodu existuje několik desítek typů klonů vyráběných v různých zemích (u nás, resp. dnes spíše v SR, se jednalo například o typovou řadu Didaktik Gama a Didaktik M). Původní ZX Spectrum sice bylo vybaveno pouze interním reproduktorem připojeným na jeden z pinů čipu ULA (bylo tedy možné vytvářet zvuk jen s využitím dvoustavového obdélníkového signálu, podobně jako později na PC-Speakeru), ale modernější verze ZX Spectra nazvaná ZX Spectrum 128K již obsahovala – kromě mnoha dalších vylepšení – i zvukový čip AY, což oproti původnímu řešení představovalo značný pokrok. Z mnoha tvůrců hudby pro ZX Spectrum 128K jmenujme například Františka Fuku (hudba ke hře TETЯIS apod.).

pc5604

Obrázek 4: Domácí osmibitový počítač ZX Spectrum 128K.

3. Herní konzole Vectrex

Zvukový čip AY-3–8912 byl použit i v herní konzoli Vectrex, která je zajímavá především tím, že pro zobrazování používá zabudovaný vektorový displej. Aby se alespoň z malé části nahradily některé nedostatky vektorové grafiky (například praktická nemožnost vyplňování ploch a také viditelné poblikávání zobrazovaných vektorů ve složitějších obrazech), byla ke každé hře dodávána poloprůhledná fólie, která se umístila před monitor. Na fólii byl většinou nakreslen okolní herní svět, což ostatně bude patrné i z dále uvedené fotografie. Přímo v herní konzoli byla zabudována i obrazovka Samsung 240RB40, která měla velikost cca 8×11 palců a jak je z dalších obrázků patrné, byla postavena poněkud netradičně „nastojato“. Za účelem dosažení co nejnižší ceny celé konzole byly použity černobílé výprodejové obrazovky. Ve druhé generaci se tvůrci pokoušeli použít i barevnou obrazovku, to však značným způsobem navyšovalo cenu celého systému, proto bylo od tohoto nápadu upuštěno.

pc5605

Obrázek 5: Fotografie herní konzole Vectrex.

Tato herní konzole byla řízena velmi sofistikovaným procesorem Motorola 68A09, který byl taktován na 1,5 MHz (jednalo se pravděpodobně o nejlepší osmibitový procesor ve své třídě, jeho jediným vážným konkurentem byl Zilog Z80). Interní paměť ROM se základním systémem měla kapacitu 8 kB, konkrétně se jednalo o čip 2363. Paměť RAM se skládala z dvojice čipů 2414, kde každý čip měl kapacitu 1 kB × 4 B, tj. celkem 1 kB. Kromě těchto pamětí se do konzole zasunovaly cartridge, které měly kapacitu 4 kB nebo 8 kB (výjimku tvoří dvě hry, které na cartridgi používaly dva paměťové čipy 4kB a 8kB). Kromě mikroprocesoru, pamětí a D/A převodníku s multiplexerem byla konzole osazena i dnes popisovaným zvukovým čipem AY-3–8912 (tj. „prostřední“ variantou s jedním osmibitovým portem – viz obrázek číslo 7), který sloužil pro generování zvukového doprovodu, dále obvod PIA pro řízení vstupů i výstupů a nakonec digitálně-analogový převodník MC1408 (ten byl v zařízení přítomen pouze jeden, i když ve skutečnosti přes multiplexer ovládal celkem tři analogové výstupy).

pc5606

Obrázek 6: Nákres herní konzole Vectrex.

pc5607

Obrázek 7: Deska herní konzole Vectrex (zvukový čip AY je vlevo nahoře).

4. Počítače Atari ST

Další počítač, který obsahoval zvukový čip AY-3–8910 (resp. jeho variantu YM2149 od firmy Yamaha), již byl představitelem nové generace 16/32bitových strojů. Jednalo se o počítače řady Atari ST. Řada ST začínala modelem Atari 260 ST (přesněji, existoval ještě model Atari 130 ST, ten se však prakticky neprodával), který však byl poměrně rychle nahrazen třemi typy počítačů, jež svými vlastnostmi pokrývaly značnou část tehdejšího trhu s osobními počítači: Atari 520 ST, Atari 1040 ST a Atari Mega ST. Stejnou taktiku, tj. souběžnou výrobu více typů vzájemně kompatibilních počítačů s různou výkonností, ostatně používala i firma Commodore u svých Amig. Počítač Atari 520 ST představoval svým výkonem a také cenou základní model z celé vývojové řady Atari ST. Vyráběn byl od roku 1985 a jeho design byl podobný jako například u známé Amigy 500, tj. počítač i disketová mechanika byly zabudovány přímo v klávesnici. Tento počítač je na první pohled rozeznatelný svými typickými zešikmenými funkčními klávesami, které se v minulosti objevily už u počítačů Atari 800XE a Atari 130XE – ostatně celý design tohoto počítače vychází ze svých (v tomto ohledu velmi kvalitních) osmibitových předků.

pc5608

Obrázek 8: Počítač Atari 520ST.

Technické parametry počítače Atari 520 ST odpovídaly jeho určení – k dispozici byly modely se 128KB a 256KB RAM, v následujících letech se objevily i modely s 512KB RAM. Částečné rozšíření přinesl model Atari 520 ST+, který byl nabízen s 1MB RAM. Ve všech konfiguracích Atari 520 ST se objevoval mikroprocesor Motorola 68000 (tj. základní typ), jenž byl taktovaný na 8MHz. Jako operační systém byl použit TOS (The Operating System) s grafickou nadstavbou GEM. Poněkud netypicky byl celý operační systém uložen v paměti ROM, jež měla kapacitu 192KB a později i 256KB. Počítač Atari 1040 ST představoval rozšíření předchozího modelu, a to jak po designové stránce, tak i v technických parametrech. Tyto počítače byly dodávány s 1MB operační paměti RAM, maximálně je bylo možné osadit až 4MB RAM. Kapacita grafické paměti zůstala rovna 32KB, stejně jako podporované grafické režimy. Navazující řada označená Atari Mega ST obsahovala Blitter, což je čip používaný pro samostatné blokové přenosy dat (zejména grafických) bez účasti procesoru.

pc5609

Obrázek 9: Počítač Atari 1040STE.

Počítače Atari 520 STe (spolu s vylepšenou verzí Atari 1040 STe) a Atari Mega STe konečně přinesly dlouho očekávanou změnu v koncepci čipové sady počítače i jeho grafických schopností. V první řadě se zvýšila taktovací frekvence procesoru, která byla u starších modelů rovna 8MHz, u novějších modelů již 16MHz (tato frekvence možná může v dnešní době budit úsměv, ale postačovala jak pro tehdejší hry, tak i dema či operační systém s plnohodnotným GUI). Dále bylo možné připojit interní pevný disk s rozhraním SCSI. Především se však konečně rozšiřuje barevná paleta, která již nemá pouhých 512 barev, ale celých 4096 barev, což již umožňuje práci s fotografiemi, kde se vyskytují plynulé jednobarevné přechody. Kromě výše popsaného Blitteru se objevuje i grafický čip Shifter, který podporuje horizontální a vertikální scrolling. Rychlost práce s grafikou se díky tomuto čipu dále zvýšila, a to jak ve hrách (plynulý posuv pozadí), tak i v „kancelářských“ aplikacích (listování dokumenty či tabulkami). Zvukové možnosti byly – kromě již existujícího AY a rozhraní MIDI – rozšířeny o přenos dat pomocí DMA.

pc5610

Obrázek 10: Atari Mega ST s firemním monitorem a tiskárnou.

5. Vlastnosti zvukového čipu AY-3–8910

Čip AY-3–8910 i všechny jeho varianty používá pro tvorbu zvuků a hudby tři samostatně nastavitelné tónové generátory, které produkují obdélníkové signály o zadané frekvenci (rozsah je 8 oktáv, každý kanál obsahuje dvanáctibitový dělič), jenž jsou dále zpracovávány. Každý tónový generátor vytváří zdroj zvukového signálu pro jeden ze zvukových kanálů – celkem jsou tedy k dispozici tři zvukové kanály, přičemž výstup každého z kanálů je vyveden na samostatný pin (jedná se o analogový výstup, na který lze například přímo zapojit zesilovač). To je velmi netypické zapojení, u většiny ostatních zvukových čipů jsou zvuky z jednotlivých kanálů namixovány přímo na čipu do jednoho výstupu; na druhou stranu je však možné velmi jednoduše i s pomocí pouze jediného AY-3–8910 vytvářet stereo hudbu. Kromě tónových generátorů je možné použít i generátor šumu, jehož výstup lze přivést do zvoleného (či zvolených) zvukových kanálů. Generátor šumu se často používá například pro napodobení zvuku perkusních nástrojů, podobně jako tomu je u již popsaných zvukových čipů POKEY a SID.

pc5611

Obrázek 11: Herní automat se hrou Spy Hunter (známou i z domácích počítačů) byl mj. osazen i dvojicí čipů AY-3–8910.

Obdélníkový signál vytvářený v tónových generátorech lze upravit pomocí obálky, která je však generována poněkud odlišným způsobem, než v případě minule popsaného čipu SID (u SIDu je použita obálka typu ADSR – attack, decay, sustain, release). Obálka má tvar digitalizovaného periodického nebo neperiodického pilového či trojúhelníkového signálu. Taktéž je možné obálku ovládat programově, což vlastně znamená, že se pomocí zápisu do jednoho z řídicích registrů mění amplituda generovaného obdélníkového signálu. Na výstupu se nachází nelineární digitálně/analogový převodník, který slouží k převodu čtyřbitové hodnoty získané modifikací obdélníkového signálu obálkou na napěťovou úroveň v rozsahu do 1,35 Voltů (při zatížení analogového výstupu obvodem s odporem 1 kΩ). Díky nelineárnímu D/A převodníku se signál s původně lichoběžníkovým průběhem (výsledek změny amplitudy obdélníkového signálu pomocí obálky) mění na signál se „špičkami“, které dodávají hudbě vytvářené na čipu AY-3–8910 typické zabarvení.

pc5612

Obrázek 12: Počítač ZX Spectrum 128+ 3 vybavený disketovou jednotkou.

6. Funkční bloky zvukového čipu AY-3–8910

Na třináctém obrázku je zobrazeno blokové schéma zvukového čipu AY-3–8910. Na tomto schématu můžeme v horní části vidět piny, pomocí kterých se AY připojoval k adresové a datové sběrnici počítače (předpokládá se, že se používá osmibitová datová sběrnice multiplexovaná s dolními osmi bity sběrnice adresové). Na vstupy BDIR, BC1 a BC2 mohou být připojeny řídicí signály, na piny DA0DA7 se připojují multiplexované adresové a datové vodiče a vstupy A8 a !A9 slouží pro výběr čipu (to, zda jsou přímo zapojeny na adresovou sběrnici, či zda je před nimi předřazen dekodér, je již závislé na architektuře počítače). Vstupně výstupní osmibitové porty jsou vyvedeny na piny IOA0IOA7 (první port) a IOB0IOB7 (druhý port). Posledními digitálními vstupy jsou CLOCK (hodiny, od nichž jsou odvozeny frekvence generovaných tónů) a !SEL (zamknutí hodin). Na poslední tři piny označené ANALOG A, ANALOG B a ANALOG C jsou vyvedeny výstupy ze všech tří zvukových kanálů. Tyto výstupy buď mohou být přivedeny do jednoho zesilovače (mono zvuk) nebo do více zesilovačů (stereo zvuk, tři hlasy).

pc5613

Obrázek 13: Blokové schéma zvukového čipu AY-3–8910.

Již v úvodních kapitolách jsme si řekli, že pro AY-3–8910 jsou k dispozici dva osmibitové obousměrné porty a ve variantě AY-3–8912 jeden osmibitový obousměrný port (přesněji řečeno všechny tři varianty čipu AY-3–8910 oba paralelní porty obsahovaly, ale u variant s menším počtem kontaktů nebyl buď jeden nebo ani jeden port vyvedený na piny čipu, takže se celkový počet pinů mohl snížit z původních 40 na 28 popř. pouze 24 kontaktů). Tyto osmibitové porty, které lze přepnout do vstupního či výstupního režimu, je možné využít například po připojení digitálních joysticků, tiskárny vybavené rozhraním Centronics atd. V některých osmibitových počítačích, jejichž mikroprocesory dokázaly adresovat většinou pouze 64 kB operační paměti (MOS 6502, Motorola M6809, Intel 8080, Z80), býval jeden z portů využíván pro přepínání aktivní paměťové banky – v portu byl uložen index zvolené paměťové banky, čímž bylo možné zvýšit celkovou kapacitu paměti z původních maximálně 64 kB až na několikanásobek této hodnoty, podle toho, kolik bank bylo skutečně obsazených paměťovými čipy (výstup z portu byl připojen na vstup CS – Chip Select paralelně zapojených paměťových pouzder – předpokladem správné funkce je, že se datové výstupy paměťových čipů přepnou do režimu vysoké impedance v případě, že čip není vybraný signálem CS).

pc5614

Obrázek 14: Herní konzole Intellivision taktéž obsahovala zvukový čip AY.

7. Literatura a odkazy na Internetu

  1. General Instrument AY-3–8910,
    http://en.wiki­pedia.org/wiki/Ge­neral_Instrumen­t_AY-3–8910
  2. AY programy, hudba, etc.,
    http://bulba.un­tergrund.net/ma­in_e.htm
  3. Project AY,
    http://www.wor­ldofspectrum.or­g/projectay/
  4. AY Players,
    http://www.wor­ldofspectrum.or­g/projectay/a­yplayers.htm
  5. Chiptune,
    http://en.wiki­pedia.org/wiki/Chip­tune
  6. SNDH – Atari ST YM2149 Archive,
    http://sndh.a­tari.org/
  7. 8bitcollective,
    http://www.8bit­collective.com/
  8. Chiptune,
    http://www.chip­tune.com/
  9. STsndplay,
    http://www.no­crew.org/softwa­re-stsndplay.html
  10. Jam for Windows (Just Another Musicplayer),
    http://creamhq­.de/
  11. SND Player,
    http://sndpla­yer.atari.org/
  12. AY Hudba,
    http://www.dmoz­.org/Computer­s/Multimedia/Mu­sic_and_Audio/Au­dio_Formats/A­Y/
pc5615

Obrázek 15: JAM – přehrávač hudby vytvořené původně pro čip AY.

bitcoin školení listopad 24

8. Obsah dalšího pokračování seriálu

V následující části tohoto seriálu si podrobněji popíšeme, jakým způsobem je možné s využitím čipu AY-3–8910 vytvářet zvuky i plnohodnotnou vícekanálovou hudbu. Ukážeme si nastavení generátorů obdélníkových signálů, generátoru šumu, ovládání zvukového mixéru, způsob programového řízení hlasitosti (tímto způsobem bylo možné přehrávat samplovaný zvuk, mj. i populární MODy známé z Amigy), použití generátoru obálky a nakonec i způsobu, jakým bylo možné výstupy jednotlivých zvukových kanálů vzájemně kombinovat. Taktéž budou uvedeny ukázky hudby vytvořené pomocí AY-3–8910 a popis některých programů, pomocí nichž lze přehrát hudbu vytvořenou pro AY-3–8910 i na dnešních osobních počítačích s operačními systémy Linux či Microsoft Windows.

pc5616

Obrázek 16: MicroSpeccy – pomocí tohoto přehrávače lze pracovat s hudbou původně vytvořenou jak pro ZX Spectrum 48, tak i ZX Spectrum 128K.

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.