自作のMSX用FM音源で特定のソフトでだけノイズが出るので、こちらの記事以降もノイズ対策を試行錯誤していたんですが、ようやく原因がわかりました。


ノイズの原因は

・FM音源(YM2413)のD/A出力にローパスフィルタを繋いでいない(既出)

・FM音源のアドレスデコードのときにWR信号をチェックしていない(今回判明)

の二つでした。

 

YM2413のデータシート上通常運用ではI/Oリードすることはないはずなので、これまではIORQとアドレスバスだけチェックしてました。

 

しかし、WR信号もチェックするようにしたら、あっさりノイズがなくなりました。

 

実は以前、アドレスデコードのときにWR信号もチェックすることも検証していたんですが、ノイズが消えなかったので効果なしと思っていました。

しかし、このときはYM2413のD/A出力にローパスフィルタを入れていないときでした。

 

アプリケーションマニュアルどおりにローパスフィルタを入れて、かつWR信号もチェックしないとダメだったんですね。

 

◇◇◇

 

ということは、ノイズが出るソフト、ぶっちゃけGAME ARTSのFIRE HAWKではYM2413へのI/Oリードをしているということです。

音を鳴らすだけならYM2413へのI/Oリードは必要ないはずなんですが、バグなのか、意図的なものなのか…。

 

◇◇◇

 

さておき、これがFS5500用最終版FM音源増設ボードです。

 

○FS5500用MSX-MUSIC増設ボード

 

基板を作り直すついでに、pFM-BIOSを載せるROMをPLCCのFlashROMからDIPのOTP-ROMに変更しました。

ノイズ対策の検証のためにスロットバスとYM2413の間にCPLDを入れていますが、最終的にCPLDの回路はYM2413のアドレスデコード以外はバス信号をそのままYM2413に渡すだけになっています。

この規模の回路ならCPLDではなくGALもしくは汎用ロジックICで充分でした。

WR信号は基板のパターン面に配線を追加して対処しました。

 

以下個人的備忘録

基板データはFS5500YM2413増設_CPLD版r3.lzh。

ただしシルク印刷にミスがあったのでFS5500YM2413増設_CPLD版r4.lzhで修正。

 

WR信号はアドレスデコードの入力にしても、直接YM2413のWR端子に入れても、どちらでも可(検証済み)。

【5/11追記】

ただし、根本的にMSXに使えない個体があることがわかりました。

詳細はこちら

【5/11追記終わり】

 

音声出力のOPアンプにLM358を使うと画面表示の変化に同期したノイズが乗るので、NJM072Dに変更。