ISE14.1ではMIG391を利用できます。
SX-Card6のDDR2を制御する場合、ISE14.1ではMIG391を利用します。CORE generatorを使用して新規にDDR2制御IPを構成する場合、以下の点に注意してください。
- 使用するMCB(Memory Contoroller Block)は BANK=1を指定、メモリタイプはDDR2です。
- ボード上の48MHzクロックを利用する場合、DDR2クロックは324MHzになります。このため、クロック周波数には3086psを指定します。
- DDR2の型番は MT47H64M16XX-3 を選択してください。
- メモリオプションはデフォルトです。
- MCBのポートコンフィギュレーションを選択します。サンプル回路では128bit / 1ポートです。
- ZIOピン、RZQピンは それぞれ T23 , AF25です。 System Clockはシングルエンドを選択してください。
-------- ここまでの操作でCORE Generatorでの操作は終了です ------------
CORE generatorが生成したデザインファイルに、以下の修正が必要です。
- \user_design\rtlフォルダにトップファイルがあります。このトップファイルで localparamの数値を修正します。
- C1_CLKOUT2_DIVIDE を 16から12に変更
- C1_CLKFBOUT_MULT を2から27に変更
- C1_DIVCLK_DIVIDE を 1から2に変更
====これらの変更は、使用するクロック源から以下の式で導き出しています。
VCO = INPUT(48MHz) /C1_DIVCLK_DIVIDE(2) * C1_CLKFBOUT_MULT(27) = 648MHz
DDR2 clock = MIG_clock / 2 = 324MHz
- 上記ファイルと同じフォルダ内に、infrastructure.v(VerilogHDLの場合)があります。ここでは、以下の修正を行います。
- (* KEEP = "TRUE" *) wire sys_clk_ibufg; を削除または、コメントアウトします。
- SINGLE ENDED input clock buffers部分の IBUFG u_ibufg_sys_clk(I.(sys_clk), O.(sys_clk_ibufg));を削除します。
- u_pll_adv インスタンスで .CLKIN(sys_clk_ibufg)を.CLKIN1(sys_clk)に修正します。
- \example_design\parフォルダにある example_top.ucfのTiming Ignore constrains for paths crossing domainを参考にして、実際の制約ファイルに反映させてください。
【Xilinx社の資料】
メモリコントローラのユーザガイド:http://japan.xilinx.com/support/documentation/user_guides/j_ug388.pdf