ISE14, MIG39によるDDR2制御

ISE14.1ではMIG391を利用できます。

SX-Card6のDDR2を制御する場合、ISE14.1ではMIG391を利用します。CORE generatorを使用して新規にDDR2制御IPを構成する場合、以下の点に注意してください。

  1. 使用するMCB(Memory Contoroller Block)は BANK=1を指定、メモリタイプはDDR2です。
  2. ボード上の48MHzクロックを利用する場合、DDR2クロックは324MHzになります。このため、クロック周波数には3086psを指定します。
  3. DDR2の型番は MT47H64M16XX-3 を選択してください。
  4. メモリオプションはデフォルトです。
  5. MCBのポートコンフィギュレーションを選択します。サンプル回路では128bit / 1ポートです。
  6. ZIOピン、RZQピンは それぞれ T23 , AF25です。 System Clockはシングルエンドを選択してください。
    --------  ここまでの操作でCORE Generatorでの操作は終了です ------------

CORE generatorが生成したデザインファイルに、以下の修正が必要です。

  1. \user_design\rtlフォルダにトップファイルがあります。このトップファイルで localparamの数値を修正します。
    1. C1_CLKOUT2_DIVIDE を 16から12に変更
    2. C1_CLKFBOUT_MULT を2から27に変更
    3. C1_DIVCLK_DIVIDE を 1から2に変更
      ====これらの変更は、使用するクロック源から以下の式で導き出しています。
      VCO = INPUT(48MHz) /C1_DIVCLK_DIVIDE(2) * C1_CLKFBOUT_MULT(27) = 648MHz
      DDR2 clock = MIG_clock / 2 = 324MHz
       
  2. 上記ファイルと同じフォルダ内に、infrastructure.v(VerilogHDLの場合)があります。ここでは、以下の修正を行います。
    1. (* KEEP = "TRUE" *) wire sys_clk_ibufg; を削除または、コメントアウトします。
    2. SINGLE ENDED input clock buffers部分の IBUFG u_ibufg_sys_clk(I.(sys_clk), O.(sys_clk_ibufg));を削除します。
    3. u_pll_adv インスタンスで .CLKIN(sys_clk_ibufg)を.CLKIN1(sys_clk)に修正します。
  3. \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


Smart-USB Plus / Sigma 技術サポート
https://www.smartusb.info/article.php/mig391