失敗です、
- 512Mbなのでsdram_controller_0のColumn数を10にしてQSYSでGenerateして、
- FPGAをまるっとコンパイル、FPGA.sofでMAX10をコンフィグして、
- PROGのmain.cの512Mbを定義しているところのコメントを外し(256Mbはコメントアウト)、
- NiosII側もPROG_bspを新しいQSYS用に更新して、PROG_bspとPROGをCleanしてBuild、
- Debugを起動するところまでは期待通り
ところが全域への書き込み終了後、Verifyを始めると最初の4 or 8byteはいいものの、
その次辺りで書き込んだ内容と読み込み内容が不一致^^;
その後、PROGのmain.cをいじってDebugの繰り返し(i.e. printfデバッグ +α)
DRAMへのclock供給は50MHzだが、うちの100MHzロジアナで信号は拾えるかな?
SDRAMのあしに線材をハンダしてやればいけるかも...
症状としては一定しており、DQ15~DQ0のうちDQ10とDQ2が常に"1"になっている
他のbitは正しい結果を返しているので、
- 多分、書き込みは動いていそう(FPGAで割り振ったアドレスをまんま書き込んでいる)
- 何故かこれら2bitだけがHIのまま(VCCと短絡してる?、ピン配置を見ると隣は他のDQとVSSだから違う)、
- タイミングの関係でうまく読めてない?(物理的なピンの位置でパフォーマンスに差があるらしい)
- 但し0x80000000から始まる最初の4byteは必ずちゃんと読めてる(任意の書き込み値で検証)
- 0x80000004から始まる4byteも読めているようだが、0x80000008になるともう駄目
- それ以降は全域にわたってこの2bitが常に"1"になっている
(e.g. 0x00000000で書き込んでも読み出し時は0x01000100)
タイミングとなると別途色々試さねば...
うーーん、誰か助けて^^;
- SDRAMが壊れてる
という可能性も排除出来ないが、こればかりはなんとも^^;
...あと使っているMAX10は3.3V単一電源だけど、PinのAssignをする画面を見ていたら、
2.5Vデフォで設定されていた、これって3.3Vにしなくていいのかな?
内部だけならCoreは1.2Vとかを内部で作っているようなので問題無いが、
物理的に外部接続すると(e.g. SDRAM)電源ロジックは影響あるよなぁ...と
(追記)
DRAMのアクセスタイミングを追いかけるなど...恐ろしい^^;
最初の1~2回はVerify出来ているので(=512Mb全域書き込み後、今度は全域読み込み)、
もしかして書き込みの後なら読めるかも
交互に読み書きしてみようかな、そしたらいよいよタイミングだなぁ...