AR# 53735

LogiCORE IP Aurora 64B/66B - チャネル初期化ステージでのプロトコルの改善

説明

このコアのプロトコルでは、チャネルの準備ができたことを示す IDLE ブロック コードの受信数が、特定の数の場合に定義されません。現在は、1 つの IDLE ブロック コードがそのパートナーから受信されると、remote_ready 信号が宣言されます。プロトコルをアップデートすると、リモートが準備完了したことを宣言するよりも前に Channel Init FSM が 8 つの IDLE ブロック コードを検索するようになっています。このほか、Channel Init FSM は 64 個の IDLE ブロック コードの転送を待ちます。これらの変更により、コアは改善されています。

ソリューション

必要な変更 :

1. <component_name>_sym_dec.v[hd] のモジュール変更 :

次の変更は、シングル レーン コアとマルチ レーン コアの両方に適用されます。

  i.    remote_ready_cntr を 3 ビット カウンターとして宣言します。

  ii.   remote_ready_det 信号を既存の REMOTE_READY ロジックを使用して生成します。

  iii.  remote_ready_det 信号を使って remote_ready_cntr カウンターを増加させます。

  iv.  remote_ready_cntr が 3'b111 になったら REMOTE_READY 出力をアサートします。 編集したコードは次のようになります。

2. <component_name>_channel_init.v[hd] のモジュール変更 :

i から iv までの変更は、シングル レーンとマルチ レーンの両方に適用されます。シングル レーンに必要な変更とマルチ レーンに必要な変更は、それぞれ v から vii に別々に説明されています。

  i.  rx_na_idles_cntr を 4 ビット カウンターとして宣言します。

  ii. rx_na_idles_cntr が 4'b1111 になったら rx_na_idles_16d_done 内部信号を生成します。編集したコードは次のようになります。

  iii.  idle_xmit_cntr を 6 ビット カウンターとして宣言します。

  iv.  idle_xmit_cntr が 6'b11_1111 になったら txidle_64d_done 内部信号を生成します。編集したコードは次のようになります。

  v.  wait_for_remote_r ステートから ready_r ステートへの遷移には、この txidle_64d_done 信号を使用します。 編集したコードは次のようになります。

シングル レーン :

   

マルチ レーン :

vi. 状態を現在のステート プロセス ブロックのものに変更します。編集したコードは次のようになります。

シングル レーン :

NOT LANE_UP を削除します。

マルチ レーン :

(RESET_CHANNEL or (not OR_REDUCE(LANE_UP)) の代わりに (not AND_REDUCE(LANE_UP)) を使用します。

vii. GEN_NA_IDLES を次のように変更します。この変更はシングル レーンのみに適用され、マルチ レーン コアでは必要ありません。

GEN_NA_IDLES   <= not LANE_UP;

編集するファイル :

1. すべてのレーンの <component_name>_sym_dec.v[hd]

2. すべてのレーンの <component_name>_channel_init_sm.v[hd]

Aurora 64B66B コアに対するこの変更は、2013.1 Vivado ツールの IP リリースから含まれます。上記の変更を実行した後のサンプル ファイルがこのアンサーの最後に添付されています。

改訂履歴
2013/04/09 - 初版

 

 

 

添付ファイル

関連添付ファイル

AR# 53735
日付 06/04/2013
ステータス アクティブ
種類 一般
IP