UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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
作成日 03/06/2009
最終更新日 09/18/2012
ステータス アクティブ
タイプ 一般
ツール
  • ISE Design Suite - 11.1
  • ISE - 10.1
IP
  • Aurora