MIGの中身は送信側と受信側で異なる。
送信側はODDRを4つ並べてCLK_P,CLK_N( 以下DQSと呼ぶ)、
WRITE_DATA_P, WRITE_DATA_N(DQと呼ぶ)を入れて送信。
回路設計者は入力クロックの位相をDQS,DQとの間で90度ずらすべし。
続いて受信側
書き途中、、、
-MIGの使いかた
CoreGeneで生成したファイルの中にexample_designというものがある。
この中のsim ディレクトリにて…
../rtl/*.v
./*.v
および
/home/cad/xilinx/ISE-10.1/ISE/verilog/src/unisims +libext+.v
を読み込む。
やっとシミュレーション完了…
波形を見るならば、
example_design/sim/sim_tb_top.v に
initial begin
$shm_open();
$shm_probe("AC");
end
を記述。
しかしこれだと適当な時間にシミュレーションを中止しないと駄目っすね、、
このexample_designなるフォルダには、ddr2_tb_top.vというモジュールが入っている。
これが、実際のメモリコントローラにデータを送るためのモジュールなので、
この部分をユーザが書き換える(あるいは置き換える)ことによって、
メモリの操作が可能になる。
具体的には、
初期化が終了するのはおよそ70_000ns程度なので、その後になんらかの
動作をさせればよし。
注意しなければならないのは、FPGAの動作周波数。
DCMで全回路200MHz動作を目指すと大抵タイミングを満たさないことが多い。
そこで、
-メモリインターフェースのみ200MHz
-その他回路は低動作周波数。
にしてみたい。
すると、うまく非同期FIFOをはさまなければならず、少しわくわくしてきた涙。
が肝心。