AY-3-8910 40ピンDIPパッケージ | |
| コンポーネントタイプ | サウンドチップ |
|---|---|
| 初生産 | 1978 |

AY -3-8910は、 General Instrument (GI)社が1978年に開発した3ボイスのプログラマブル・サウンド・ジェネレータ(PSG)です。当初は、同社の16ビットマイコンCP1610またはPIC 1650シリーズのいずれかの8ビットマイコンと組み合わせて使用するために設計されました。3チャンネルのサウンドを備え、広い周波数特性により、88鍵ピアノのほぼすべての音符を発音できます。これらの音色は、共通のエンベロープ・ジェネレータとランダム・ノイズ・チャンネルによって調整可能で、これらを追加することでサウンド効果を生み出すことができます。
AY-3-8910とその派生型は、多くのアーケードビデオゲーム機(コナミのGyrussには5つのチップが搭載されている[ 1 ] )やBallyのピンボールマシンに使用されたほか、 IntellivisionやVectrexのビデオゲーム機、Amstrad CPC、Oric-1、Colour Genie、Elektor TV Games Computer、MSX、Tiki 100 、そして後にZX Spectrumの家庭用コンピュータのサウンドチップにも使用された。また、 Apple IIのMockingboardやCricketのサウンドカード、 TRS-80 Color ComputerのSpeech/Sound Cartridge [ 2 ]にも使用された。
1987年にGIがMicrochip Technologyをスピンオフさせた後、このチップは数年間Microchipブランドで販売されました。また、ヤマハによってライセンスに基づき(選択可能なクロック分周ピンと、2倍の解像度と2倍のレートのボリュームエンベロープテーブルを備えて)YM2149Fとして製造され、Atari STはこのバージョンを採用しています。このチップは現在は製造されていませんが、機能的に同一のクローンが現在も生産されています。YM2149をベースにした非公式のVHDL記述は、 FPGAで自由に使用できます。[ 3 ]
AY-3-8910はシンプルな有限ステートマシンです。16個の8ビットレジスタの状態は、アドレス指定とデータの両方に使用される8ビットバスを介してプログラムされます。読み取りまたは書き込みには2サイクルが必要です。例えば、典型的なセットアップサイクルでは、バスを「アドレスモード」に設定し、バス上の値を読み取ってレジスタを選択し、次に「データモード」に切り替えてそのレジスタの内容を設定します。このバスはGI独自のCPUにはネイティブに実装されていましたが、このチップをより一般的なMOS Technology 6502やZilog Z80 CPUと組み合わせて使用する場合は、グルーロジックで再作成するか、MOS Technology 6522などの追加のインターフェースアダプタを使用する必要がありました。
レジスタは16個しかなく、「アドレスモード」で示される8ビット値のうち4ビットのみが必要です。ほとんどの例では、レジスタを選択する際に、値のMSB4ビットを工場出荷時のデフォルト値である「0000」に設定する必要があります。MSBビットを誤って設定すると、チップはレジスタの変更を無視します。GIは、「0000」以外のMSB値にのみ応答するカスタマイズ版の注文も受け付けていました。これにより、同じプロセッサで同一バス上の複数のAYチップ(例:ZX SpectrumのTurboSound)を制御でき、MSB値をチップセレクトとして使用できます。中古市場には、MSBビットが工場出荷時に「0000」以外の値に設定されている新古品(NOS)チップが多数出回っています。「0000」以外の値は、設計者や修理技術者にとって重大な開発上の問題を引き起こす可能性があります。特定のチップのMSBビットの正しい値を識別するためのソフトウェアを作成する必要があります。また、工場出荷時に設定された MSB チップをデフォルトの「0000」チップの代わりに使用できるようにするには、ソフトウェアを変更するか、ハードウェアを追加する必要があります。
このシステムにはA、B、Cの3つの出力チャンネルがあり、複数の入力を混合することで生成される。[ 4 ]
R0からR5までの6つのレジスタは、3つの主要なトーンジェネレータで生成されるピッチを制御します。生成する周波数は、各チャンネル専用の2つの8ビットレジスタ、すなわち微調整レジスタと粗調整レジスタに保持されます。チャンネルAはR0で微調整、R1で粗調整を行い、チャンネルBはR2とR3を使用し、以下同様です。粗調整レジスタの上位3ビットは未使用で、残りの12ビットで1から4,095までの値を生成します(技術的な理由により、0は1として扱われます)。この12ビットの値は入力クロックの分周器として使用され、対応するチャンネルで出力トーンを生成します。[ 4 ]
8910は4MHzの入力クロックで動作可能ですが、YM2149Fの場合は6MHzで動作可能です。これにより、人間の可聴範囲をはるかに超え、超音波領域にまで達する、最大125kHzの基本周波数を持つ音を生成できます。超音波値の存在は、周波数分周器の設計によるものです。可聴周波数で十分な分解能を得るには、全体のクロックレート(つまり、小さな分周値での出力)が可聴範囲よりもかなり高くなければなりません。5未満の分周値でのみ、完全に超音波の出力周波数が得られます。ピアノ鍵盤の最高オクターブに相当する周波数は、平均律の音価に対して妥当な精度で定義でき、A440の範囲ではほぼ1Hzの精度、低い音程ではさらに高い精度で定義できます。最大周波数は高いものの、その数値を4096で割ることができるため、直接定義できる最低出力周波数は30.6Hzとなります。これは、通常の88鍵ピアノで3番目に低い音であるB0にほぼ相当し、一般的なスピーカーシステムではサブソニックと同等の性能です。つまり、このチップは、ほとんどの楽曲で使用されている適切なピッチの音で、十分に音楽的な出力を生み出すことができます。
対照的に、競合製品であるTexas Instruments SN76489の周波数分周器の精度はわずか10ビットです。ベース周波数は8910と同じ125kHzであるため、理論上は8910の最低音域2オクターブが欠けているはずです。これを回避するため、SN76489はトーンジェネレータを計算上の周波数よりも1オクターブ低く出力します。つまり、8910と比較して低音域が1オクターブ、高音域が1オクターブ低いことになります。
R6はノイズ制御です。下位5ビットは、ノイズの周期を定義する0から31の値を格納するために使用され、上位3ビットは使用されません。入力クロックは16で割られ、その後R6の値で割られてノイズ周波数が生成されます。[ 4 ] R7はミキサーを制御します。ビット0、1、2は、それぞれ対応するトーンジェネレータがA、B、Cの出力に供給されるかどうかを制御します。ビット3、5、5は、ノイズチャンネルが同じチャンネルに出力されるかどうかを制御します。任意のチャンネルは、純粋なトーン、純粋なノイズ、またはその2つの混合を出力できます。ビット6と7は、2つのI/Oポート、IOAとIOBが入力(1)に設定されるか、出力(0)に設定されるかを制御します。[ 4 ]
R10、R11、R12は3つのチャンネルの音量を制御します。下位4ビットは0(オフ)から15(大)までの値を生成します。ビット4は「振幅モード」、つまりMを制御し、選択されたエンベロープに基づいて出力音量をさらに制御します。[ 4 ]
R13 と R14 は、それぞれエンベロープコントローラの微調整と粗調整の時間を制御します。入力クロックはまず 256 で除算され、次に 16 ビット値で除算されます。最後のレジスタ R15 は、下位 4 ビットを使用してエンベロープの形状を制御します。このエンベロープは、完全なADSRコントローラを搭載した後の設計と比較すると単純で、エンベロープがボリューム 0 から開始して対応するボリューム レジスタの値まで上昇するか、レジスタ値から開始して下降するかのみを制御します。これはビット 2 (アタック) によって制御されます。ビット 2 が 1 に設定されている場合は、システムが上昇方向に上昇し、ランプ時間自体は R13 と 14 によって制御されます。残りの 3 つのビットは、この最初のサイクル後の処理を制御します。ビット 3 (継続) がオンの場合、ボリュームはリセットされて再び上昇し、これを繰り返します。ビット 1 (交互) がオンの場合、ランプは上下に交互に変化し、三角形のパターンを生成します。最後に、ビット 0 (ホールド) は他のビットをオーバーライドし、最初のサイクル後にボリュームを 0 または 1 に固定します。[ 4 ]
3つのチャンネルで共有されるエンベロープは1つだけなので、多くのプログラマーはこれを無視し、ソフトウェアで独自のエンベロープコントローラー(ボリュームを直接制御する)をプログラムしていました。よく知られたトリックとしては、ハードウェアエンベロープを20Hz以上のサイクルタイムで動作させ、ノコギリ波や三角波のようなベースサウンドを生成するというものがあります。


8910 シリコン チップは 3 つの異なるパッケージで販売されました。
AY -3-8910 には、A と B の2 つの汎用 8 ビットパラレルI/Oポートがあり、これらは同じ名前の 40 ピン パッケージで利用できます。
AY -3-8912は28ピンパッケージに収められた同じチップで、パラレルポートBはどのピンにも接続されていません。パッケージが小型化されているため、コストと基板スペースを節約できます。8912は最も広く使用された派生型でした。
AY -3-8913は、24ピンパッケージに収められた同じチップですが、両方のパラレルポートは未接続です。8912と比べてピン数がわずかに少ないため、面白みに欠けると考えたユーザーもいましたが、I/Oレジスタは設計者にほとんど使用されなかったため、GIはこの完全に機能する24ピンの代替チップを開発し、8910および8912チップの約6か月後にリリースしました。その目的は、設計者の複雑さを軽減し、PCB上のフットプリントを削減することでした。French Touchのメンバーであるfenarinarsaは、AY-3-8913チップの問題を調査し、文書化しました。[ 5 ]
ヤマハYM2149F SSG(ソフトウェア制御サウンドジェネレータ)チップはAY-3-8910と同じピン配置ですが、ピン26を ローレベルにするとマスタークロックが半分になるという小さな違いがあります。AY-3-8910チップを交換する場合のように、ピン26を未接続のままにしておくと、内部抵抗によってピンがハイレベルにプルアップされるため、マスタークロックは半分になりません。
ヤマハYM3439は、YM2149FのCMOSバージョンです。40ピンDIP(YM3439-D)と44ピンQFP(YM3439-F)の2つのパッケージで提供されます。
Yamaha YMZ294はYM2149の最新モデルの一つですが、18ピンパッケージとなっています。パラレルポートはなく、3チャンネルをミックスしたサウンド出力は1つだけです。
ヤマハYMZ284は、YM2149のさらに小型版で、16ピンパッケージを採用しています。基本的にはYMZ294から4/6MHz選択ピンと/TESTピンを除いたものです。
Yamaha YMZ285は28ピンパッケージで、PCMを内蔵しています。パラレルポートはなく、サウンド出力は2つあります。1つは3つのSSGチャンネルをミックスしたもの、もう1つはPCM出力です。
Toshiba T7766Aは、AY-3-8910 と同じピン配置を持つ互換チップであり、一部のMSXモデルで使用されていました。
Winbond WF19054 、JFC 95101、File KC89C72はAY-3-8910と同じピン配置を持ち、ソフトウェア互換性も100%です。現在も生産されており、多くのスロットマシンで使用されています。
AY -3-8914はAY-3-8910と同じピン配置で、同じ40ピンパッケージに収められていますが、チップ上の制御レジスタが入れ替わっており、A9ピンの「期待入力」が異なる場合があります。マテル社のIntellivisionコンソールとAquariusコンピュータで使用されました。
AY -3-8930(別名AY8930 )は、 AY-3-8910の強化版ですが、ほぼ下位互換性があります。 BC2 ピンの機能が変更されています(ピンの状態にかかわらず無視され、0 とみなされます)。それ以外はピン配置はAY-3-8910と同じです。 このチップの派生版には、3 つのチャンネルに別々のエンベロープ(1 つの共有エンベロープではなく)、可変デューティ サイクル、ノート周波数、ボリューム、エンベロープ周波数の精度ビットの増加、より柔軟に設定可能なノイズ ジェネレータなど、いくつかの主要な機能強化が追加されています。 IBM-PC のCovox Sound Master サウンド カードで使用されました。 通常のAY-3-8910機能以上にこれを利用したゲームはほとんどありませんでした。 このチップは、Microchip Technologyでのみ製造された可能性があります。
ヤマハは、YM2149コアを使用して、携帯電話、家庭用コンピュータ、家庭用およびアーケードビデオゲームシステムなどで使用される音楽チップの全ファミリを製造しています。ヤマハFM合成チップのOPNシリーズは、4オペレータFM合成サウンドジェネレータと並んでYM2149コアを含むこのアプローチで注目に値します。たとえば、YM2203(別名OPN)は、3チャンネルFMサウンドジェネレータと一緒にチップ自体にYM2149のコアを含めたシリーズ初のチップであり、YM2149のエンベロープジェネレータはサウンドチップのコアに直接配置されていました。そのはるかに高度な後継機種であるYM2608(別名OPNA)とYM2610(別名OPNB)にもYM2149コアが含まれており、以前の機能をすべて保持しながら大幅に拡張され、YM2610ではI/Oポートが除外されるなどの小さな変更が行われました。 YM2612 (OPN2 とも呼ばれる)は、YM2203 のアップグレード版であり、YM2149 サウンド チャネルと I/O ポートの削除など、その他の変更点に加えて YM2149 の部分も完全に削除されましたが、チップのコアにある YM2149 のエンベロープ ジェネレーターは保持されました。