DCSG

Digital Complex Sound Generator SN76489Aは、効果音発生用のICです。SN76477と同じくIILバイポーラプロセスですが、プロセッサから与えられるパラメータによって楽音信号を発生できるようになっている点が異なります。トーン信号発生回路を3回路分とノイズ信号発生回路を1回路分、内蔵しています。

SN76489A
サウンドジェネレータとしては小型の16 pin DIP。

この16 pinのピン配置は、このようになっています。
       D2 1     16 Vcc
       D1 2     15 D3
 (MSB) D0 3     14 CLOCK
    READY 4     13 D4
      WE* 5     12 D5
      CE* 6     11 D6
AUDIO OUT 7     10 D7 (LSB)
      GND 8     9  NC
D0 - D7がデータ入力端子で、CE*とWE*でデータ書き込みを指示します。ただし同じTexasInstruments社のTMS9900と同じく、D0がMSB側でD7がLSB側になります。CE*がアサートされるとREADYがただちにネゲートされ、データを確実に受け取ってから(約32クロック周期分後)READYがアサートされます。READYはオープンコレクタ出力端子で、外部にプルアップ抵抗を必要とします(標準2 kOhm)。CLOCKはクロック信号で4 MHzまでのクロック信号を与えることができます。一応、クロマ信号周波数と同じ3.579545 MHzが標準とされていますけど。AUDIO OUTはアナログ楽音信号出力で、最大で約2.7 Vppの振幅の信号が出力されます。Vccは電源で、5 V単一電源、標準30 mA、最大でも50 mAの消費電流です。デジタル入出力レベルはTTL互換で、入力電流は10 uA程度と軽くなっています。

信号の説明からわかるように、このSN76489AはSN76477と異なり、抵抗やコンデンサによって音作りをする部分はまったくありません。すべて14番ピンのCLOCK入力から与えられるクロックを基準にして、さらにプロセッサから与えられたパラメータに応じてクロックを分周したり、出力振幅を決めたりすることによって、デジタル的に音作りを行います。
そのパラメータの与えかたですが、端子にはレジスタを指定するアドレスラインが存在しないことからわかるように、プロセッサからは1 Byteのみの出力ポートに対する書き込みで行われます。また、書き込んだデータやステータス情報を読み出すことはできません。しかし、全機能を利用するためのパラメータ設定用のレジスタは8個、トータルで11 Byte分のパラメータを与えるようになっています。実は書き込むパラメータの一部にレジスタ番号フィールドがあり、それを用いてパラメータの種別を指示しています。
プロセッサから見えるレジスタには、次のものがあります。
 
番号 役割 パラメータ1 パラメータ2
0 トーン1周波数 1 0 0 0 F6 F7 F8 F9 0 x F0 F1 F2 F3 F4 F5
1 トーン1音量 1 0 0 1 A0 A1 A2 A3 --
2 トーン2周波数 1 0 1 0 F6 F7 F8 F9 0 x F0 F1 F2 F3 F4 F5
3 トーン2音量 1 0 1 1 A0 A1 A2 A3 --
4 トーン3周波数 1 1 0 0 F6 F7 F8 F9 0 x F0 F1 F2 F3 F4 F5
5 トーン3音量 1 1 0 1 A0 A1 A2 A3 --
6 ノイズ制御 1 1 1 0  x FB F0 F1 --
7 ノイズ音量 1 1 1 1 A0 A1 A2 A3 --

パラメータは2進法で左側がMSBとなるように表記しました。
実は、パラメータの第0ビット(MSB)が1なら第1パラメータであるという規則があります。そして、第1パラメータの第1ビットから第3ビットがレジスタ番号を意味します。xは未使用ビットを表します。

トーン周波数はF0 - F9の10 bitの値で決定します。その値をnとして、Clock端子へ入力されたクロック周波数をfcとすれば、トーン周波数fはf = fc/(32*n)となります。たとえば、クロック周波数が3.579545 MHzで440 Hz出力を得たければ、nとして254を設定します。
音量は、A0 - A3の4 bitの値をaとすると、2*a dBの減衰量が与えられて決まります。ただし、aが15の場合に限っては出力はオフとなります。aが0のときに最大出力となり、aが1で2 dBだけ減衰、aが2で4 dBの減衰という具合です。減衰を受けた後、すべての出力がアナログ加算されて、AUDIO OUT端子へ出力されます。
ノイズ制御で有効なビットは、FB, F0, F1だけです。ノイズ源は巡回多項式シフトレジスタで実装されていて、FBビットによってシフトレジスタのフィードバック項が選択され、ノイズの音質が変わります。FBが0のとき周期的ノイズ、FBが1のときにホワイトノイズとされています。F0, F1はシフトレジスタへのクロック周波数を選択するのに使われます。詳細は次の表のようになっています。
 
F0 F1 シフト周波数
0 0 fc/512
0 1 fc/1024
1 0 fc/2048
1 1 トーン3出力

このF0, F1でノイズに含まれる最高周波数成分を制御できます。ノイズ出力も音量制御を通って他の信号とミキシングされてAUDIO OUT端子へ出力されます。

これらのパラメータからわかるように、トーン信号の音色を制御することはできません。また、エンベロープを自動的に変化させることもできません。したがって、プロセッサが細かくタイミングを測って音量制御を行って、エンベロープコントロールをしないと単調な楽音しか得られません。その代わり、PSGなどと比べれば非常に小型で設定パラメータを決めやすくなっています。

Return to IC Collection