cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Versal デバイスでの 1G イーサネット インターフェイスの立ち上げ

katsuki
Xilinx Employee
Xilinx Employee
4 0 396

このブログは、英語版のBringing Up a 1G Ethernet Interface on a Versal deviceを翻訳したものです。

 

Versal ACAP (Adaptive Compute Acceleration Platform) は、進化する多様なアルゴリズムに適用できる高度に統合されたマルチコア コンピューティング プラットフォームです。

VCK190 は、最初にリリースされたザイリンクス Versal AI コア評価ボードの 1 つです。

このブログ記事では、次の手順でそのデザインを作成する方法を示します。

 

1.Vivado での Versal ベースの IP インテグレーター デザインの構築

2.デバイス イメージの作成

3.Vitis でのプラットフォームとシステム プロジェクトの構築

4.VCK190 評価ボードでのアプリケーションの実行とデバッグ

 

Versal の PS-GEM


Gigabit Ethernet MAC (GEM) は、IEEE 802.3-2016 に準拠した 10/100/1000 Mbps のハード インターフェイスを提供します。

PS 低電力ドメイン (LPD) には、2 つの GEM コントローラーがあります。

各コントローラーは独立して動作し、外部 PHY 用の管理データ入出力 (MDIO) インターフェイスを備えており、RGMII インターフェイスと一緒に使用できます。

01.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GEM には、次のコンポーネントが含まれます。

  • 送信、受信、アドレス チェック、およびループバックを制御する MAC
  • 制御およびステータス レジスタ、統計レジスタ、および同期ロジックを提供するコンフィギュレーション レジスタ
  • DMA 送信と DMA 受信を制御するダイレクト メモリ アクセス
  • リアルタイム クロックを含む IEEE 1588 タイマー値を計算するタイムスタンプ ユニット (TSU)

 

DMA 動作が不要なシステム アプリケーションでは、コンフィギュレーション オプションを使用して DMA モジュールを削除でき、外部 FIFO インターフェイスを使用して GEM を SoC 環境に組み込むことができます。

GEM ブロックには、次の信号インターフェイスが含まれます。

  • 外部 PHY への GMII および RGMII
  • 外部 PHY 管理用の MDIO インターフェイス
  • GEM のレジスタにアクセスするための APB スレーブ インタフェース
  • メモリ アクセス用 AXI4 DMA マスター インターフェイス
  • DMA の機能が不要なアプリケーションでのオプションの FIFO インターフェイス
  • オプションのタイムスタンプ インターフェイス

 

02.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I/O オプションには、次が含まれます。

  • 外部 PHY への接続用の LPD MIO ピンに配線された RGMII (v2.0)
  • GTS にマップできたり、オプションで PL ロジックを使用するほかのプロトコルに変換できる、PL に配線された GMII および MII
  • 各コントローラー内の診断用内部ループバック

注記: 内部 SERDES インターフェイス (SGMII) は、Versal ではサポートされず、MPSoC デバイスでサポートされます。

 

VCK190 デバイスでは、GEM0 と GEM1 はボード上の 2 つの外部 RGMII PHY にハードワイヤ接続されています。

GEM0 と GEM1 用の RJ45 ポートが 2 つあります。GEM1 RGMII ポートをテストする場合は、GEM0 RGMII ポートもケーブルで接続されていることを確認してください。これは、どちらのポートもマスターとして GEM0 MDIO を使用する MDIO ラインを共有するためです。

次は VCK190 の画像です。右上に Versal イーサネット用の RJ45 ポートが 2 つあります。

 

03.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vivado での IP インテグレーター デザインの作成


添付の Tcl ファイルをダウンロードし、次の手順に従ってください。

1.VCK190 ボードに基づいて Vivado 2019.2 でプロジェクトを作成します。

2.ブロック デザインを作成します。

3.vck190_1g.tcl を読み込みます。次は、IP インテグレーター キャンバスのブロック図です。

 

04.png

 

4.HDL ラッパー ファイルを生成します。

5.[Run Implementation] および [Generate Device Image] をクリックします。

6.デバイス イメージが含まれるハードウェア デザインをエクスポートします。

 

05.png

 

注記: ブロック オートメーションを実行すると、CIP と NoC 間の接続の一部が失われます。添付の Tcl ファイルを使用すると、正しい CIP と NoC の設定になります。

 


Vitis での lwIP アプリケーションの構築と実行

ここまでで IP インテグレーター デザインを構築し、デバイス イメージと一緒にハードウェア デザインをエクスポートしましたので、次は Vitis で lwIP サンプル アプリケーションを作成し、VCK190 ボードで実行します。

 

1.Vitis を起動します。

2.上記のデザインの XSA ファイルを使用してアプリケーション プロジェクトを作成します。

 

06.png

 

3.SDK から [lwIP Echo Server] 例を選択します。

 

07.png

 

4.SDK でのプラットフォームとシステム プロジェクトを構築します。

lwIP エコー サーバー アプリケーションを選択すると、lwIP ライブラリの BSP 設定が自動的に設定されます。

プラットフォーム プロジェクトのみを作成して構築することもできますが、その場合 BSP 設定は手動で設定する必要があります。

 

08.png

 

5.VCK190 ボードで lwIP 例を実行します。

UART コンソールに次のように出力されます。

 

09.png

 

6.ping テストの出力は次のようになります。

 

10.png

 

テストのために GEM1 RJ45 に変更するには、platform_config.h で XPAR_XEMACPS_1_BASEADDR を変更する必要があります。

イーサネットの定義は、BSP の xparameters.h で確認できます。

次の例を参照してください。

 

11.png

 

platform_config.h で次の定義を変更します。

 

12.png

 

この定義を次のようにアップデートします。

 

 

 

 

#define PLATFORM_EMAC_BASEADDR XPAR_XEMACPS_1_BASEADDR

 

 

 

 

これで、アプリケーションを再構築して、テストを再実行できます。

 

lwIP のパフォーマンス


次は、lwIP エコー サーバー アプリケーションの BSP 設定です。

  • PARAMETER dhcp_does_arp_check = true
  • PARAMETER lwip_dhcp = true
  • PARAMETER pbuf_pool_size = 2048

lwip TCP/UDP perf アプリケーションを使用する場合、次のパラメーターがデフォルトで設定されます。

  • PARAMETER mem_size = 524288
  • PARAMETER memp_n_pbuf = 1024
  • PARAMETER n_tx_descriptors = 512
  • PARAMETER pbuf_pool_size = 16384

 

lwIP パラメーターは、パフォーマンスを調整するために重要です。

各パラメーターの詳細は、lwIP ライブラリについて記述された次の資料の各セクションを参照してください。

UG1137 Zynq UltraScale+ MPSoC Software Developer Guide

  • Configuring Memory Options
  • Configuring Packet Buffer(Pbuf) Memory Options
  • TEMAC Adapter Options

 

これらのパラメーターは、割り当てられて使用されるメモリ量と Pbuf とディスクリプターの数を制御します。

システムがストラップされてパケットを処理できない場合、BD と Pbuf がすぐに使い尽くされてしまい、必要とされるほどすばやく解放されません。この結果、パフォーマンスが低下します。

ただし、使用可能なメモリ容量のバランスをとる必要もあるので、これらのパラメーターは、評価ボード (パフォーマンス ベンチマークに使用) で 1Gbps の最適値に調整されます。

これは、独自の要件に合わせてパラメーターを調整する際の基準値として使用できます。