AR# 45447

MIG 7 Series RLDRAM II および QDRII+ - K/K# クロックのスキューによりキャリブレーション エラーが発生する可能性がある

説明

問題の発生したバージョン : v1.3
修正バージョンおよびその他の既知の問題 : (ザイリンクス アンサー 45195) を参照

MIG 7 Series RLDRAM II および QDRII+ デザインで、メモリに供給される K/K# 出力クロックにスキューがあるためにキャリブレーション エラーが発生することがあります。

このため、アドレスおよびデータが間違ってメモリに送信され、キャリブレーション エラーの原因となる可能性があります。

ソリューション

この問題は、qdr_rld_mc_phy モジュールにおける PO_OCLK_DELAY パラメーターの設定に 666.67MHz 未満の周波数の追加割り当てがないことが原因で発生します。 

たとえば、qdr_rld_mc_phy.v ファイル(Verilog コード用) では次が使用されています。

 

localparam integer PO_OCLK_DELAY = (SIMULATION == "TRUE") ? MC_OCLK_DELAY :

(CLK_PERIOD <= 938) ? 23 :
(CLK_PERIOD <= 1072) ? 24 :
(CLK_PERIOD <= 1250) ? 25 :
(CLK_PERIOD <= 1500) ? 26 : 27;



RLDRAM II デザインをターゲットにしている場合、qdr_rld_mc_phy.v の 325 ~ 360 行目を次のコードに置き換えると、この問題を回避できます。
 

//*******************************************************************************************************************
// OCLK_DELAYED 90 degree phase shift calculations
//*******************************************************************************************************************
//90 deg equivalent to 0.25 for MEM_RefClk <= 300 MHz and 1.25 for Mem_RefClk > 300 MHz

localparam PO_OCLKDELAY_INV = ((SIMULATION == "FALSE" && CLK_PERIOD > 2500) || CLK_PERIOD>= 3333) ? "FALSE" : "TRUE";

//DIV1: MemRefClk >= 400 MHz, DIV2: 200 <= MemRefClk < 400, DIV4: MemRefClk < 200 MHz

localparam PHY_FREQ_REF_MODE = CLK_PERIOD > 5000 ? "DIV4" : CLK_PERIOD > 2500 ? "DIV2": "NONE";
localparam FREQ_REF_DIV = (PHY_FREQ_REF_MODE == "DIV4" ? 4 : PHY_FREQ_REF_MODE == "DIV2" ? 2 : 1);

//FreqRefClk (MHz) is 1,2,4 times faster than MemRefClk

localparam real FREQ_REF_MHZ = 1.0/((CLK_PERIOD/FREQ_REF_DIV/1000.0) / 1000) ;
localparam real MEM_REF_MHZ = 1.0/((CLK_PERIOD/1000.0) / 1000) ;

// Intrinsic delay between OCLK and OCLK_DELAYED Phaser Output

localparam real INT_DELAY = 0.4392/FREQ_REF_DIV + 100.0/CLK_PERIOD; // Fraction of MemRefClk

// Whether OCLK_DELAY output comes inverted or not

localparam real HALF_CYCLE_DELAY = 0.5 * (PO_OCLKDELAY_INV == "TRUE" ? 1 : 0); //Fraction of MemRefClk

// Phaser-Out Stage3 Tap delay for 90 deg shift. Maximum tap delay is FreqRefClk period distributed over 64 taps
// localparam real TAP_DELAY = MC_OCLK_DELAY/63/FREQ_REF_DIV;
// Equation: INT_DELAY + HALF_CYCLE_DELAY + TAP_DELAY = 0.25 or 1.25 MemRefClk cycles

localparam real MC_OCLK_DELAY = ((PO_OCLKDELAY_INV == "TRUE" ? 1.25 : 0.25) - (INT_DELAY + HALF_CYCLE_DELAY)) * 63 * FREQ_REF_DIV;

//localparam integer PO_OCLK_DELAY = MC_OCLK_DELAY; // MC_OCLK_DELAY + 0.5;

localparam integer PO_OCLK_DELAY
= (SIMULATION == "TRUE") ? MC_OCLK_DELAY :
(CLK_PERIOD > 2500) ? 8 :
(CLK_PERIOD <= 938) ? 23 :
(CLK_PERIOD <= 1072) ? 24 :
(CLK_PERIOD <= 1250) ? 25 :
(CLK_PERIOD <= 1500) ? 26 : 27;



QDRII+ デザインをターゲットにしている場合、qdr_rld_mc_phy.v の 325 ~ 360 行目を次のコードに置き換えると問題を回避できます。

//*******************************************************************************************************************
// OCLK_DELAYED 90 degree phase shift calculations
//*******************************************************************************************************************
//90 deg equivalent to 0.25 for MEM_RefClk <= 300 MHz and 1.25 for Mem_RefClk > 300 MHz
localparam PO_OCLKDELAY_INV = ((SIMULATION == "FALSE" && CLK_PERIOD > 2500) || CLK_PERIOD>= 3333) ? "FALSE" : "TRUE";

//DIV1: MemRefClk >= 400 MHz, DIV2: 200 <= MemRefClk < 400, DIV4: MemRefClk < 200 MHz
localparam PHY_FREQ_REF_MODE = CLK_PERIOD > 5000 ? "DIV4" : CLK_PERIOD > 2500 ? "DIV2": "NONE";

localparam FREQ_REF_DIV = (PHY_FREQ_REF_MODE == "DIV4" ? 4 : PHY_FREQ_REF_MODE == "DIV2" ? 2 : 1);

//FreqRefClk (MHz) is 1,2,4 times faster than MemRefClk
localparam real FREQ_REF_MHZ = 1.0/((CLK_PERIOD/FREQ_REF_DIV/1000.0) / 1000) ;
localparam real MEM_REF_MHZ = 1.0/((CLK_PERIOD/1000.0) / 1000) ;

// Intrinsic delay between OCLK and OCLK_DELAYED Phaser Output
localparam real INT_DELAY = 0.4392/FREQ_REF_DIV + 100.0/CLK_PERIOD; // Fraction of MemRefClk

// Whether OCLK_DELAY output comes inverted or not
localparam real HALF_CYCLE_DELAY = 0.5 * (PO_OCLKDELAY_INV == "TRUE" ? 1 : 0); //Fraction of MemRefClk

// Phaser-Out Stage3 Tap delay for 90 deg shift. Maximum tap delay is FreqRefClk period distributed over 64 taps
// localparam real TAP_DELAY = MC_OCLK_DELAY/63/FREQ_REF_DIV;

// Equation: INT_DELAY + HALF_CYCLE_DELAY + TAP_DELAY = 0.25 or 1.25 MemRefClk cycles
localparam real MC_OCLK_DELAY = ((PO_OCLKDELAY_INV == "TRUE" ? 1.25 : 0.25) - (INT_DELAY + HALF_CYCLE_DELAY)) * 63 * FREQ_REF_DIV;
//localparam integer PO_OCLK_DELAY = MC_OCLK_DELAY; // MC_OCLK_DELAY + 0.5;

localparam integer PO_OCLK_DELAY
= (SIMULATION == "TRUE") ? MC_OCLK_DELAY :
(CLK_PERIOD > 2500) ? 8 : 1;

アンサー レコード リファレンス

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
45195 MIG 7 Series - すべての ISE バージョン/Vivado 2012.4 およびそれ以前のツール バージョンのリリース ノートおよび既知の問題 N/A N/A
AR# 45447
日付 08/21/2014
ステータス アクティブ
種類 既知の問題
デバイス
ツール
IP