修正バージョン : ISE14.2 (v3.92)
これは、mcb_soft_calibration.v/vhd RTL の問題が原因で発生します。
この問題を回避するには、次の手順に従ってください。
mcb_soft_calibration.v/.vhd 内の RTL の次のセクションを見つけます。
/ SELFREFRESH should only be deasserted after PLL_LOCK is asserted.
// This is to make sure MCB get a locked sys_2x_clk before exiting
// SELFREFRESH mode.
always @ ( posedge UI_CLK) begin
if (RST)
SELFREFRESH_MCB_REQ <= 1'b0;
else if (PLL_LOCK_R2 && ~SELFREFRESH_REQ_R3 && STATE == START_DYN_CAL)//
SELFREFRESH_MCB_REQ <= 1'b0;
else if (STATE == START_DYN_CAL && SELFREFRESH_REQ_R3)
SELFREFRESH_MCB_REQ <= 1'b1;
end
このセクションを次のように変更します。
// SELFREFRESH should only be deasserted after PLL_LOCK is asserted.
// This is to make sure MCB get a locked sys_2x_clk before exiting
// SELFREFRESH mode.
always @ ( posedge UI_CLK) begin
if (RST)
SELFREFRESH_MCB_REQ <= 1'b0;
else if (PLL_LOCK_R2 && ~SELFREFRESH_REQ_R3 )//
SELFREFRESH_MCB_REQ <= 1'b0;
else if (STATE == START_DYN_CAL && SELFREFRESH_REQ_R3)
SELFREFRESH_MCB_REQ <= 1'b1;
end
SELFREFRSH_MCB_REQ のディアサートで START_DYN_CAL 状態を待機するように RTL がコード化されていると、キャリブレーション ステート マシンが INCREMENT または DECREMENT 状態のままとなり、この問題が発生します。
セルフ リフレッシュ モードを使用する場合は、この RTL コード変更を統合する必要があります。
改訂履歴
2014/9/5 - 初版