MSX本体に組み込んだFM音源が特定のソフトでノイズが出る件、引き続きいろいろ試しているんですが難航しています。
【5/12追記】
解決しました。記事はこちら。
【5/12追記終わり】
以下、これまでに試したことを備忘録として列挙。
・FM CS信号のディレイ時間短縮(27ns→5ns)
CPLDの代わりにGAL(ATF16V8)を使用
→効果なし
・アドレス/データ信号のディレイ時間をFM CS信号に同期
GALを二つ使用して、FMCS信号とアドレス/データ信号をGAL経由でFM音源に入れてみた。
→効果なし
自炊ではないきれいなZ80のデータシートが手に入ったので、タイミングチャートを確認したところ、FM CS信号に対するセットアップ時間、ホールド時間は充分にあり、問題なさそう。
・H/WでFM音源のウェイト時間を保証
CPLDにFM音源のアクセスに必要なウェイト時間に次のアクセスがあったときはCPUのWAIT信号をアクティブにする機能を追加
→効果なし
オシロで見ている限り、必要なウェイト時間は守っているもよう。
ということで、今のところ改善できてません。
やっぱりロジアナを使って、信号のタイミングを見ないとだめかなぁ。
でもロジアナなんて高いもの、持ってないんですよねぇ。
数十万するので、アマチュアの電子工作で使うには敷居が高すぎます(^^;
というわけでひとまず保留です。
また何か思いついたら、再挑戦するかもしれません。
【2/11追記】
・FMCS信号をクロック信号1周期(1ステート)に変更
→効果なし
・電源ラインに2200μFの電解コンデンサを追加
→効果なし
・二つある音声出力端子と信号増幅用オペアンプの間にそれぞれカットオフ周波数約2.2kHzのローパスフィルタを追加
→効果なし
ただし、発生するノイズの音量が若干小さくなった気がする。
後者二つは我が家にある市販のFM音源搭載機器(FS-A1WSX,FM-PAC)と自作の回路の違いを調べてわかったことを試してみたんですがダメでした。
というか、FM音源の音声出力に2.2kHzのローパスフィルタが入っていたことにビックリです。
ヒトの可聴周波数は20kHzまでといわれてます(※)。
ローパスフィルタはそのわずか1/10です。
ゲーム音って意外と低い周波数しか使っていないんですね。