PSG

マイクロコンピュータでゲームを作成する場合、表示の美しさの他に効果音も大事です。その効果音や背景音楽を実現するために以前よく使われたのが、このAY-3-8910です。Programmable Sound Generator (PSG)という名称で呼ばれました。
基準クロックを、マイクロプロセッサが与えた数値で分周してオーディオ周波数を生成する回路が3回路分とノイズ音ジェネレータが1回路あり、3重和音の音楽演奏と爆発音などの効果音を作成できるようになっています。

AY-3-8910

上がGIオリジナルのAY-3-8910、SOUNDという文字が入っているのはわかりやすいですね。1979年製。下はその10年後に作られたMicrochip社製のPSGですが、型番の末尾のAは何か改良されたところがあることを示しているのでしょうか。GI社とMicrochip社の関係がわかる写真ですね。

ピン配置を以下に示します。
 Vss  1     40 Vcc
  NC  2     39 TEST1
ACHB  3     38 ACHC
ACHA  4     37 DA0
  NC  5     36 DA1
IOB7  6     35 DA2
IOB6  7     34 DA3
IOB5  8     33 DA4
IOB4  9     32 DA5
IOB3 10     31 DA6
IOB2 11     30 DA7
IOB1 12     29 BC1
IOB0 13     28 BC2
IOA7 14     27 BDIR
IOA6 15     26 TEST2
IOA5 16     25 A8
IOA4 17     24 A9*
IOA3 18     23 RESET*
IOA2 19     22 CLOCK
IOA1 20     21 IOA0
この端子のうち、VccとVssは電源で、+ 5 V単一電源で動作します。
DA0からDA7まではデータとアドレス兼用のマイクロプロセッサとのデータのやりとりを行う信号です。DA0がLSBでDA7がMSBとなっています。あるタイミングでバスに出力されているアドレスをラッチして、次のタイミングでデータの入出力を行う、マルチプレクスバス用の信号となっています。
データ転送を制御する信号が、BDIR, BC1, BC2の3本の信号で、他にA8, A9*が正論理と負論理のチップセレクト入力として用意されています。A8, A9*はそれぞれ内部的にプルアップとプルダウン抵抗が接続されていて、使用しない場合にはオープンにしておくこともできます。
RESET*信号はおなじみのリセットで、CLOCK信号はクロックを与えますが、こちらはバスインターフェース用というよりは内部の音源制御の基準周波数として使われます。3.58 MHz程度の周波数を与えるシステムが多かったようですね。TEST1とTEST2はテスト用の端子で、オープンのまま残して置きます。
IOA0からIOA7およびIOB0からIOB7はバイト単位で入出力方向を制御できるI/Oポートです。PSGとは大量のデータを高速で転送する必要はあまりないので、システムがマルチプレクスバスになっていなかったりタイミングの都合でバスと直接インターフェースするのが面倒な場合、8255のような単なるパラレルI/Oポートの先にPSGを接続して、ソフトウェアでBDIR, BC1, BC2などをコントロールしてデータ転送を行うこともよくありました。そのパラレルポートの代わりに使えたかもしれません。ジョイステックなんかを接続した例もありますね。
ACHA, ACHB, ACHCはそれぞれANALOG CHANNEL A, B, Cを私が略して書いたもので、サウンド信号出力です。約1 Vppの信号が得られます。特にステレオ出力などの必要性がなければ、3本を並列に接続してミキシングしてアンプを介してスピーカを鳴らすことができます。
制御信号類はあまり見なれたものではありませんが、もともとはGI社の16 bitマイクロプロセッサCP1610(や8 bitマイクロプロセッサのPIC1650シリーズ)のためのLSIであったためです。当時は他に手ごろなプログラマブルな音源LSIがなかったため、GI社のマイクロプロセッサファミリの中からPSGが選ばれて広く使われたのでしょう。

内部レジスタ構成は次の表のようになっています。
 
アドレス 略称 ブロック 機能名称
00 R0 Tone Gen. Channel A Fine Tune Register
01 R1 Tone Gen. Channel A Coarse Tune Register
02 R2 Tone Gen. Channel B Fine Tune Register
03 R3 Tone Gen. Channel B Coarse Tune Register
04 R4 Tone Gen. Channel C Fine Tune Register
05 R5 Tone Gen. Channel C Coarse Tune Register
06 R6 Noise Gen. Noise Period Register
07 R7 Mixer, I/O Mixer Control - I/O Enable Register
08 R10 Amp. Control Channel A Amplitude Control Register
09 R11 Amp. Control Channel B Amplitude Control Register
0A R12 Amp. Control Channel C Amplitude Control Register
0B R13 Envelope Gen. Envelope Fine Tune Register
0C R14 Envelope Gen. Envelope Coarse Tune Register
0D R15 Envelope Gen. Envelope Shape/Cycle Control Register
0E R16 I/O I/O Port A Data Store
0F R17 I/O I/O Port B Data Store

GIではレジスタ略称を8進数で表示していますね。

Return to IC Collection