著者
デルハッチ
** UDP 経由で通信する
このプロジェクトの目的は、Zedboard を使用した UDP 経由のデータ転送をデモすることです。これは、少し変更を加えるだけで、MicroZed およびその他の Zynq ベースのボードで使用できます。
** Vivado を使用して Zynq システムを構築する
次の図をガイドとして使用して、Zynq システムを構築します。 AXI インターコネクト、プロセッサ リセット、および GPIO モジュールはオプションですが、後でコマンド/制御/デバッグ用に追加したいと思います。
システムのデフォルト、周辺機器の自動アドレス割り当て、およびシステム構成のデフォルトをすべて使用でき、何もカスタマイズする必要はありません。
システムを構築し、ハードウェア (ビット ファイルを含む) をエクスポートした後、SDK を起動します。
** SDK とソフトウェア
SDK が開いたら、「ファイル」→「新規」→「アプリケーション プロジェクト」をクリックします。
プロジェクトに名前を付けて、「次へ」をクリックします。
使用可能なテンプレートのリストから「lwIP Echo Server」を選択し、完了します。
この時点で、Zedboard 上で Echo サーバーをコンパイル、ロード、実行できます。 PuTTY を使用して動作を確認します。
PuTTY を起動し、main.c ファイルで定義されている Zedboard の IP アドレスを入力し、ポート値を 7 に設定して、接続タイプとして「Telnet」を選択します。開いたウィンドウで文字を入力すると、その文字が PuTTY にエコーバックされるのを確認できます。
** UDP を使用するように Echo サーバーを変更する
デフォルトの lwIP Echo サーバーは TCP を使用します。代わりに UDP を使用するように変換するには、提供された main.c をこの Github リポジトリの main.c に置き換えます。また、echo.c ファイルも置き換えます。
また、includes.h ファイルをダウンロードしてプロジェクトに追加します。
ファイルをプロジェクトの project.sdk/project/src ディレクトリにコピーします。次に、SDK で、「プロジェクト エクスプローラー」フレーム内の行を強調表示し、F5 キーを押して更新します。
** コンパイルして実行する
次に、コードをコンパイルして実行します。コードを実行すると、接続されたターミナル プログラムに次のように表示されます。
下部に沿ったドットは、Zedboard が UDP パケットを送信していることを示します。これは 500 ミリ秒ごとに発生します。パケットは、値が 0x45 の単一の整数で構成されます。
送信されているパケットを確認するには、Wireshark を使用します。
UDP パケットを Zedboard に送信するにはさまざまな方法があります。 VLC メディア プレーヤーを使用し、UDP 経由で .mpg ファイルをストリーミングするように設定しました。その方法は次のとおりです。
VLCを起動し、「メディア」→「ストリーム」をクリックします。
[ファイル] タブで、[+追加] をクリックし、メディア ファイルを選択します。 .mpg ビデオ ファイルを使用します。 「ストリーム」ボタンをクリックします。
「次へ」をクリックします。宛先設定の場合は、[新しい宛先] ボックスをプルダウンします。 UDP (レガシー) を選択します。 「追加」をクリックします。 Zedboard の IP アドレスを入力し、ポートを 7 に設定します。
「次へ」をクリックします。 「トランスコーディングの有効化」の選択を解除しましたが、この目的では問題ありません。
「次へ」をクリックし、「ストリーム」をクリックします。
ターミナル プログラムでは、Zedboard が VLC プログラムから受信した UDP データグラムの長さを示す (Zedboard からの) メッセージが多数表示されます。
** 改善点
このプロジェクトは主に、UDP を使用して Zedboard またはその他の Zynq ボードを使用してデータを送受信する方法をデモンストレーションします。
これを使用して Zedboard から PC にメディアをストリーミングし、VLC を使用してメディア ストリームを表示します。
** クレジット
Lance Simms は、UDP を使用する非常に優れた複雑なプロジェクトを次の場所に投稿しました: http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
私のプロジェクトでは、そのコード ベースを UDP の基本原則に落とし込み、カスタム プロジェクトに簡単に拡張できるプラットフォームを提供します。