AR# 32218

Virtex-5 Aurora v3.0 - Aurora が初期化されないことがある

説明

Aurora コアに電源を投入すると、初期化されます。初期化でエラーが発生すると、リセット信号をアサートしても初期化でエラーが発生し続けます。

ソリューション


初期化中の問題を検出するには、コアがエラー ステートにあるときのレーン アップ ステータスを確認します。レーン アップ ステータスが特定の期間にトグルする場合、aurora_201_channel_init_sm.v[hd] ファイルに問題がある可能性が高いです。

aurora_201_channel_init_sm.v[hd] では、シフト レジスタ SRL16 を 2 つ使用してタイマーが作成されています。



SRL16 タイマー
SRL16 タイマー


次の信号を確認します。

Free_count_1_r
Free_count_2_r
Free_count_done

これらの信号に問題がなければ、次のような動作をします。

良好な動作
良好な動作


タイマーが動作しない場合、これらの信号は次のように動作します。

問題のある動作
問題のある動作


この問題は、コアの 11.2 リリース (v4.2) で修正される予定です。このアンサーは、新しいコードがリリースされるまでの一時的なサポートを目的にしています。

この 2 つのSRL16 を、リセット可能な単純カウンターに置き換えるのが最善のソリューションです。次のコード例を参照してください。

VHDL :

1) IEEE ライブラリ STD_LOGIC_UNSIGNED パッケージを含めます。

use IEEE.STD_LOGIC_UNSIGNED.all;

2) 次の信号宣言を追加します。

signal free_count_r : std_logic_vector(0 to 7); --AR 32218 fix

3) free_count_done_r 割り当てプロセスをコメント アウトします。例 :

-- process (USER_CLK)

-- begin

-- if (USER_CLK 'event and USER_CLK = '1') then

-- free_count_done_r <= free_count_2_r and free_count_1_r after DLY;

-- end if;

-- end process;



4) 次のカウンター コードを追加します。

process (USER_CLK) --AR 32218 fix

begin

if (USER_CLK 'event and USER_CLK = '1') then

if ((RESET or RESET_CHANNEL) = '1') then

free_count_r <= (others => '0') after DLY;

else

free_count_r <= free_count_r + '1' after DLY;

end if;

end if;

end process;



free_count_done_r <= '1' when (free_count_r = "11111111") else '0'; --AR 32218 fix



Verilog :

1) 次の reg 宣言を追加します。

reg [0:7] free_count_r; //AR 32218 fix

2) free_count_done_r 割り当てプロセスをコメント アウトします。例 :

//always @(posedge USER_CLK)

// free_count_done_r <= `DLY free_count_2_r & free_count_1_r;

3) Add the following counter code:

always @ (posedge USER_CLK) //AR 32218 fix

if(RESET | RESET_CHANNEL)

free_count_r <= `DLY 8'b0000_0000;

else

free_count_r <= `DLY free_count_r + 1'b1;



always @ (posedge USER_CLK) //AR 32218 fix

free_count_done_r = (free_count_r == 8'b1111_1111);
AR# 32218
日付 09/18/2012
ステータス アクティブ
種類 一般
ツール
IP