毎度おなじみのロジアナで波形観測。SDRAMリフレッシュとマーク5のアクセスタイミングと重なることがあること。これはCS信号が立下がってからデータアクセスするまでに若干の余裕があるので、ここでリフレッシュするように変更しました。修正したら再度メモリチェック。お、前半の32KBはOKとなりましたが後半32KBはNG。波形を詳細に観測していると...メモリチェックしながらデバッグどうもFPGA内部の回路で使用しているステートマシンが不正な状態になるようです。ソースコード上では状態0,1,2,3の4パターンしかないはずなのに、それ以外の状態になるなんて聞いてないよ...。ステートマシンを使わないように変更しました。再々度メモリチェック。うーん、まだ改善しない。波形を観測していると、どうやらWE信号がLになったあとにノイズ?が発生しているようで一瞬CS,RAS,CAS信号がHになってしまうことある、ことが分かりました。このノイズをとり除くためHDLで記述しようとしましたがうまくいかない。そこで回路を修正することに。CS,WE,RAS,CASの各信号線にコンデンサを接続することにしました。ノイズがのっている修正後の回路図(クリックで拡大)さあ、これでどうだ!?結果は...おお、見事にOKとなりました。コンデンサの容量を100pFにすると信号が遅延しすぎるようでメモリチェックがNGとなりました。メモリチェックOKちなみに、タイミングチャートは以下のようになります。READ時のタイミングWRITE時のタイミングまとめ今回は、FPGAのステートマシンの動きにハマってしまったこと、そして信号線にノイズがのること、これらの解決に苦労しました。このノイズがFPGAを接続していることに起因しているのか、はたまた本体固有の問題なのかは不明ですが、電子回路にはノイズ対策が欠かせないことを改めて感じることができました。(181KB)[MD5:4921346d30815e4a1ef180924af325b6]※試される方は自己責任でお願いします。2016-09-18。