AR# 68620

|

2017.1 High Speed SelectIO Wizard - マルチバンク インターフェイスをサポートするために複数のインスタンスを接続する方法

説明

High Speed SelectIO Wizard v3.2 には、[Enable Ports to Connect to Multiple Interfaces] オプションが追加されています。

これにより、マルチバンク インターフェイスを構築できます。これらのポートを接続してマルチバンク インターフェイスをイネーブルにする方法を教えてください。

 

注記: このアンサーのみを参照しないでください。

(Xilinx Answer 64216) でその他の既知の問題を確認して、どのバージョンの Vivado / High Speed SelectIO Wizard でこれらの問題が修正されているかを確認してください。

ソリューション

High Speed SelectIO Wizard バージョン 3.2 では、[Enable Ports to Connect Multiple Interfaces] をオンにするとポートが追加されます。

1 つのバンクに複数のインターフェイスを使用する場合、[Include PLL in core] はオフにするべきです。


追加されるポートは、コアの設定によって異なります。

マルチ インターフェイス デザインに対して追加されるポート:
            tri_tbyte<#>                            //input wire [3:0] tri_tbyte<#>
app_clk                                    // input wire app_clk
multi_intf_lock_in                   // input wire multi_intf_lock_in
intf_rdy                                   // output wire intf_rdy

[Include PLL in core] がオフになっている場合、ユーザーが PLL をセットアップする必要があります。 

アプリケーションに対して PLL を設定するには、たとえば [Open IP Example Design] を選択すると、PLL インスタンシエーションを含むサンプル デザインが作成されます。

複数のバンクを使用するインターフェイスに対するネイティブ モード起動:

shared_pll0_clkout<#>_in      // input wire shared_pll0_clkout0_in
shared_pll0_clkoutphy_in       // input wire shared_pll0_clkoutphy_in
shared_pll0_locked_in<#>      // input wire shared_pll0_locked_in
 

複数のバンクを使用するインターフェイスに対するネイティブ モード起動

インターフェイスが複数のバンクにまたがる場合、各バンクに対するクロックおよびリセット ステート マシンを変更して、これらのステート マシンが同時に起動されるようにする必要があります。

アプリケーション クロック (app_clk) は、TX_BITSLICE にデータを読み込むために使用されます。「図: TX_BITSLICE アプリケーション クロック」に示すように、TX_BITSLICE では、PLL からの専用クロックを送信クロックに対して使用します。

専用の PLL クロックにより、TX_BITSLICE に対して最適なパフォーマンスが提供されます。RX_BITSLICE の場合は、FIFO からデータを読み出すために app_clk が fifo_rd_clk として提供されます。




図: TX_BITSLICE アプリケーション クロック


High Speed SelectIO Wizard では、1 つのバンクが使用される場合に使用できるアプリケーション クロックに対して CLKOUT0/CLKOUT1 を使用することがあります。 

マルチバンク インターフェイスの場合 (下の「図: マルチバンク クロック」を参照)、各 High Speed SelectIO Wizard に対して app_clk を駆動するために 1 つのクロック ソースが使用されます。

マルチバンク デザインでは、アプリケーション クロックが MMCM によって駆動されるため、下の「図: マルチバンク クロック」に示すように、各コアによって app_clk が MMCM に接続される必要があります。

app_clk は、intf_rdy のようなアプリケーション クロック ドメインに含まれている必要があるロジック、または TX_BITSLICE のデータに対して使用されます。



注記: MMCM からのクロック スキューを最小にするには、インターフェイスが 3 つのバンクにまたがる場合に、3 つの隣接したバンクの中央にあるバンクに MMCM を配置する必要があります。

これにより、中央のバンクのクロック領域に USER_CLOCK_ROOT を配置するのと同じ目的が果たされます。

 

High Speed SelectIO Wizard では、リセット ステート マシンに対して riu_clk を使用します。マルチバンク インターフェイスがアライメントされるようにするには、すべてのインターフェイスを同時にリセットする必要があります。 

さらに、各 PLL からの locked 出力を riu_clk クロック ドメインに同期して、論理的に AND 接続する必要もあります。 

各コアからの pll0_locked 出力の使用は、コアの外部で同期される必要があります。組み合わされたロック信号はその後、すべてのインターフェイスに対して multi_intf_locked_in に接続できます。これらの変更により、ステート マシンを一緒にリセットできるようになります。

RX_BITSLICE および TX_BITSLICE の設定によってリセット シーケンスの長さが影響を受けるため、各バンクではそれぞれ異なるタイミング (rst_seq_done によって示される) でリセット シーケンスが完了することがあります。 


すべてのバンクで準備が整ったことを判断するには、すべてのインターフェイスからの rst_seq_done を論理的に AND 接続し、インターフェイス レディ (intf_rdy) 信号を作成する必要があります。各コアに対して、intf_rdy は既に app_clk ドメインに同期されています。 

intf_rdy 信号はすべて AND 接続して、すべてのバンクで準備が整ったことを判断する必要があります (たとえば multibank_intf_rdy として)。

TX_BITSLICE を使用するデザインに対しては、組み合わされた intf_rdy 信号 (multibank_intf_rdy) を使用して tbyte_in[3:0] (BITSLICE_CONTROL) を制御する必要があります。これは、組み合わされた intf_rdy をコアの追加の tri_tbyte# ポートに接続することによって実現できます。

RX_BITSLICE をターゲットとするデザインの場合、インターフェイス全体で準備が整っており、multibank_intf_rdy が High になった後でのみ fifo_rd_en を使用してください。 

fifo_rd_clk 接続に app_clk を使用する場合の例:

always @ (posedge app_clk)
            fifo_rd_en = multibank_intf_rdy ? fifo_empty_<furthest location> :1b0;
 

注記: クロックを受信するビット スライスから最も遠くにある使用済みビット スライスの反転された fifo_empty 信号を使用してください。このようにすると、fifo_wrclk_out がフリップフロップを通して使用済みビット スライスのすべての fifo_rd_en 入力に生成されます。

最も遠くにあるビット スライスとは、クロック バックボーンの最後にあるビット スライスのことです。

詳細は、(Xilinx Answer 66142) を参照してください。

 

受信インターフェイスに対する一般的な要件として、1 つのバンクに対して RX VTC_RDY がアサートされるまで RX CLK を停止することによって、ソース同期インターフェイス全体でのアライメントを確実にしてください。詳細は、(Xilinx Answer 66244) を参照してください。

これをマルチバンク インターフェイスに拡張する場合、RX CLK を開始する前にすべての Intf_Rdy 信号がアサートされるまで待機してください。

詳細は、(Xilinx Answer 66244) を参照してください。

マルチバンク要件のサマリ:

マルチバンク クロックの変更:

  • 各 High Speed SelectIO Wizard コアの PLL を 1 つの MMCM クロック ソースから駆動して、PLL 間のスキューを最小にする必要があります。
    このため、3 つのバンクが使用される場合は、中央の I/O バンクに MMCM を配置してください。
    異なる PLL へのクロック スキューを最小にすることは、MMCM の入力クロック配線を制御することよりも重要です。

リセット ステート マシン:

  • すべての PLL およびリセット ステート マシンを同時にリセットする必要があります。
  • すべてのバンクからの locked 出力を組み合わせて、RIU クロック ドメインに同期させる必要があります。
    locked 信号は RIU クロック ドメインによって駆動されるリセット ステート マシンへの入力であるため、組み合わされたマルチバンク locked 信号も RIU クロック ドメインに含まれている必要があります。
  • アプリケーション (intf_rdy) をイネーブルにする前に、すべてのバンクからの rst_seq_done を待機する必要があります。
    この信号はアプリケーション クロック ドメインに同期して、送信アプリケーションに対しては tbyte_in[3:0]、受信アプリケーションに対しては fifo_rd_en を制御する必要があります。


共有バンクの複数インターフェイスに対するネイティブ モード起動


1 つのバンクに 2 つの異なるインターフェイスが含まれている場合、バンク内にあるすべての使用済み BITSLICE_CONTROL によって共通の制御信号が共有されるため、ネイティブ モード起動が同時に開始される必要があります。

未使用の BITSLICE_CONTROL は、デフォルトによりバイパスされます。バンク全体に対して 1 つの共通リセットを使用する必要があります。各インターフェイスではそれぞれ異なるタイミングで起動シーケンスが完了することがあります。

High Speed SelectIO Wizard を変更して、起動シーケンスの重要なステップがインターフェイス間で同期されるようにする必要もあります。




 

「図: 共有バンクの複数インターフェイス」には、独立した riu_clk 接続を持つ 2 つの異なるインターフェイスを使用するデザインが示されています。

バンクを共有する場合は、riu_clk 間の相違が 4 倍を超えないようにし、使用済みの BITSLICE_CONTROL に対してカスケード接続された DLYRDY を確保してください。 

たとえば、riu_clk1 が 200 MHz の場合、riu_clk2 は最低でも 50 MHz にしてください。 同期ステート マシンとして、入力データではステート マシンと同じクロックを使用する必要があります。


たとえば、両方のインターフェイスに対する locked (PLL) 信号は AND 接続して、インターフェイスの riu_clk ソースに再同期させてください。インターフェイス 1 では riu_clk1 クロック ドメイン、インターフェイス 2 では riu_clk2 を使用します。 

TX_BITSLICE を使用するデザインに対しては、intf_rdy を使用して tbyte_in[3:0] を制御する必要があります。High Speed SelectIO Wizard を使用すると、tri_tbyte#[3:0] 入力が intf_rdy 信号に接続されます。

RX_BITSLICE をターゲットとするデザインの場合、intf_rdy が High になった後でのみ fifo_rd_en を使用してください。 

fifo_rd_clk 接続に app_clk を使用する場合の例:

always @ (posedge app_clk)
            fifo_rd_en = multibank_intf_rdy ? fifo_empty_<furthest location> :1b0;


注記: クロックを受信するビット スライスから最も遠くにある使用済みビット スライスの反転された fifo_empty 信号を使用してください。このようにすると、fifo_wrclk_out がフリップフロップを通して使用済みビット スライスのすべての fifo_rd_en 入力に生成されます。

最も遠くにあるビット スライスとは、クロック バックボーンの最後にあるビット スライスのことです。

詳細は、(Xilinx Answer 66142) を参照してください。

AR# 68620
日付 04/19/2017
ステータス アクティブ
種類 一般
デバイス 詳細 概略
People Also Viewed