SuperSimpleController(その21)PSG(AY-3-8910A)の動作確認 [OriginalCPU]
前回の記事でオリジナルCPU(Simple8Z)基板用に作成したVDP(TMS9918),PSG(AY-3-8910)及びシリアル通信(MC68B50)を搭載したサブボード(Simple8VDPSG)のVDP機能が動いたことを書いたので今回はPSGの動作確認についてメモしておきます。
このPSGはVDPSG基板を10cmx10cmにした場合、空きスペースが生じるので急遽付け足した機能で、ブレッドボード上での動作は未確認な状態でプリント基板化しています。
PSGのA9/にはHC138からのPSGSEL/(PSGセレクト信号)を入れて、CPU基板からのRD/、WR/信号をPSGSEL/とANDしてPSGのBDIRとBC1に接続しています。
BC2にはA0を接続していてどうにかなるだろうと思っていました(マニュアルをじっくり見ての検討をしていなかった^^;)
PSGのバスコントロールは下表のように柔軟な設計になっていて(かえって紛らわしい)赤枠で囲んだ状態を使用して制御しようと思いました。
具体的なI/Oアドレスと制御方法は下表のような想定です。
しかし、プリント基板の電源を入れてモニタでPSGのレジスタ設定しても全く動きません(設定したレジスタ値も読めません)^^;
PSGへのクロックやコントロール信号は想定した通りに出ています・・・
データシートをまじめに見て確認した結果、2つの問題があることが判りました。
【問題点と対策】
【プリント基板の改造】
上記内容で改造したプリント基板の写真を貼っておきます。
最初に改造後のプリント基板のトップ面です。PSGはなんとGI社製です。最初はAliExpressさんから購入した超安価@65円(送料別)を使っていましたが、動かなかったので40年程前に作った基板から抜き取り差し換えています。
上記の改造後はAliExpressさんから購入したマイクロチップ社製のもの(本物かどうかは疑わしい)でも動作しました。
未使用のゲートの入力ピンは両面でベタグランドにサーマルパッドで4点接続されているのでICのピンを折り曲げて丸ピンソケットで接続しています。
改造後のVDPSG基板のボトム面が下の写真です。今回はPSG部分をブレッドボードで確認せずにプリント基板にしたので結構ジャンパー線が飛び交っています。
PSGRD/とPSGWR/を反転して正論理にする際に、未使用のインバータ(HCT04)が1個しかなかったのでDRAMのリード信号のタイミング調整用に使っていた2個のインバータを未使用のアンドゲート(HC32)と入れ替えたことがジャンパー線が多くなった要因の一つです。
上記のGI社製PSGを抜き取った基板もおまけに貼っておきます。
抜き取ったGI社製PSG(40年程前に亜土電子で購入したもの)の写真も貼っておきます。
AliExpressさんから購入した格安PSGの写真も・・・
[TOP] [ 前へ ] 連載記事 [ 次へ ]
このPSGはVDPSG基板を10cmx10cmにした場合、空きスペースが生じるので急遽付け足した機能で、ブレッドボード上での動作は未確認な状態でプリント基板化しています。
PSGのA9/にはHC138からのPSGSEL/(PSGセレクト信号)を入れて、CPU基板からのRD/、WR/信号をPSGSEL/とANDしてPSGのBDIRとBC1に接続しています。
BC2にはA0を接続していてどうにかなるだろうと思っていました(マニュアルをじっくり見ての検討をしていなかった^^;)
BDIR | BC2 | BC1 |
---|---|---|
PSGRD/ | A0 | PSGWR/ |
PSGのバスコントロールは下表のように柔軟な設計になっていて(かえって紛らわしい)赤枠で囲んだ状態を使用して制御しようと思いました。
PSG Bus Control Function Table |
|
具体的なI/Oアドレスと制御方法は下表のような想定です。
No. | address | RD/WR | Function |
---|---|---|---|
1 | 21H | Read | read from PSG |
2 | 20H | Write | latch address |
3 | 21H | Write | write to PSG |
しかし、プリント基板の電源を入れてモニタでPSGのレジスタ設定しても全く動きません(設定したレジスタ値も読めません)^^;
PSGへのクロックやコントロール信号は想定した通りに出ています・・・
データシートをまじめに見て確認した結果、2つの問題があることが判りました。
【問題点と対策】
- コントロール信号
上記の「PSG Bus Control Function Table」を見るとBDIR,BC2,BC1が111の場合、LATCH ADDRESSの状態になります。この状態はPSGアクセス時以外でも発生するので不要なLATCH ADDRESSが発生してしまいます。
ネット上でPSGを接続した回路例を探してみると、ほとんどの例がパラレルI/Oに接続してBUS CONTROLをソフト制御するようになっていました。しかし、回路を簡略化するためにもPSGを直接I/O命令で制御したいものです。
WR/,RD/,A0の三つの信号で制御することにするとWR/とRD/はHC138でアドレスディコードしたPSGSEL/信号とANDするのでPSGアクセス以外では変化しませんが、A0の値は常に変化します。上記の「PSG Bus Control Function Table」からINACTIVEの状態をすべて列挙すると
No. BDIR BC2 BC1 Function 1 0 0 0 INACTIVE 2 0 1 0 INACTIVE 3 1 0 1 INACTIVE
となり、1,2のパターンを使ってBC2にA0を割り振るとA0はDon't careになり、PSGアクセス時以外で変化しても問題無くなります。
PSGへのRDとWR信号をアクティブハイにすればPSGアクセス時以外では0になります。
INACTIVE以外のBUS CONTROLを列挙したものが下表です。read/writeは1パターンしかないので下表の1,2のパターンは採用で決定で、LATCH ADDRESSは4のパターンを採用するとBDIRの値が"write to PSG"と同じになり辻褄が合うようになります。
No. BDIR BC2 BC1 Function 1 0 1 1 read from PSG 2 1 1 0 write to PSG 3 0 0 1 latch address 4 1 0 0 latch address 5 1 1 1 latch address
結果としてPSGへのコントロール信号の接続は
BDIR BC2 BC1 PSGWR A0 PSGRD
となり、具体的なI/Oアドレスと制御方法は冒頭に書いたものと同様で下表のようになります。
No. address RD/WR Function 1 21H Read read from PSG 2 20H Write latch address 3 21H Write write to PSG
- PSGのアクセスタイミング
PSGへのアドレスラッチとデータ書込みタイミングを下図に示します。
これを見るとBUS CONTROL自体が80系CPUにおける書込み信号(WR信号)でBUS CONTROLがINACTIVEに変化する際にDATAバス上のデータを取り込むようです。
しかし現状の回路ではBUS CONTROLがINACTIVEになった時点でDATAバス上のデータも変化してしまいます。
PSG Latch Address Timing
PSG Write Data Timing
対処としてはPSGSEL/に接続していたPSGのA9/をGNDへ接続するように変更し、「SuperSimpleController(その20)TMS9918Aの接続 その5」の記事で対処したR1レジスタでアドレス指定するI/Oライト命令を使うことでBUS CONTROLがINACTIVEになった後も1クロック分、データバス上の書込みデータが保持されるようになります。
以上の対処により、PSGのレジスタへの書込み/読込みができるようになり、トーン音やノイズ音が出力可能になりました。
【プリント基板の改造】
上記内容で改造したプリント基板の写真を貼っておきます。
最初に改造後のプリント基板のトップ面です。PSGはなんとGI社製です。最初はAliExpressさんから購入した超安価@65円(送料別)を使っていましたが、動かなかったので40年程前に作った基板から抜き取り差し換えています。
上記の改造後はAliExpressさんから購入したマイクロチップ社製のもの(本物かどうかは疑わしい)でも動作しました。
未使用のゲートの入力ピンは両面でベタグランドにサーマルパッドで4点接続されているのでICのピンを折り曲げて丸ピンソケットで接続しています。
VDPSG基板トップ面 |
|
改造後のVDPSG基板のボトム面が下の写真です。今回はPSG部分をブレッドボードで確認せずにプリント基板にしたので結構ジャンパー線が飛び交っています。
PSGRD/とPSGWR/を反転して正論理にする際に、未使用のインバータ(HCT04)が1個しかなかったのでDRAMのリード信号のタイミング調整用に使っていた2個のインバータを未使用のアンドゲート(HC32)と入れ替えたことがジャンパー線が多くなった要因の一つです。
VDPSG基板ボトム面 |
|
上記のGI社製PSGを抜き取った基板もおまけに貼っておきます。
昔作ったPSG基板 |
|
抜き取ったGI社製PSG(40年程前に亜土電子で購入したもの)の写真も貼っておきます。
GI社製PSG |
|
AliExpressさんから購入した格安PSGの写真も・・・
MicroChip社製PSG |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]