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をはさまなければならず、少しわくわくしてきた涙。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-29 (木) 00:03:48