MIGの中身は送信側と受信側で異なる。 送信側はODDRを4つ並べてCLK_P,CLK_N( 以下DQSと呼ぶ)、 WRITE_DATA_P, WRITE_DATA_N(DQと呼ぶ)を入れて送信。 回路設計者は入力クロックの位相をDQS,DQとの間で90度ずらすべし。 続いて受信側 書き途中、、、
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動作を目指すと大抵タイミングを満たさないことが多い。 そこで、
|