- リンクを取得
- ×
- メール
- 他のアプリ
今日はドルフィンシステム福島です。
昨年末、前回NI USRP-2954で10GbEを動かしてみるでは、USRP-2954RとSFP+ケーブルを使用して10GbEのテストプログラムを動かしてみました。
今回はそのテストプログラムの中身を見てみます。
まずPC側のソフトのソースコードを見てみると、下図のようになっています。
前半の初期化処理は、
送信処理は、
1台のUSRPで送受信しているので、まず送信してから受信していますね。
トップレベルを開くと色々な制御器類が目に入りますので、ぱっと見はうんざりしますが、冷静に見ると単純です。
上側のループの内 "Register Bus"はUSRPでいつも使われているループで、ホストからの設定値をUSRPに設定しています。
"Reads status signal from the CLIP"は、SPF+コネクタの状態を表示しているだけのループ。
下側の"PORT 0"と"PORT 1"は"SPFポート0と1"に対応する処理が実行されますが、ポート番号が違う以外は全く同じ内容で、このループの中で送受信が処理されています。
で、下図がループ"PORT 0"を拡大しました(クリックで拡大図)。
"RX"と"TX"と書かれたVIにパラメータを渡しているだけですね。実際の色々な処理はこの中で行われているようです。
ちなみにこのループのクロックは、"MGT Sockeet\CoreClk156Out"が配線されており、MGT Socketのクロックが使われています。
このクロックは、156.25MHzですね。
USRP-RIOのADC/DACのループは200MHzで動くので、ADC/DACのデータを10GbEで流すにはタイミングやデータ幅など慎重に検討した方が良さそうですね。
以上、ドルフィンシステム福島でした。
昨年末、前回NI USRP-2954で10GbEを動かしてみるでは、USRP-2954RとSFP+ケーブルを使用して10GbEのテストプログラムを動かしてみました。
今回はそのテストプログラムの中身を見てみます。
ソフト(ホスト側=PC)の中身を見てみる
10Gb Ethernet.lvprojに含まれている"Getting Started (Loopback Test).viを開きます。まずPC側のソフトのソースコードを見てみると、下図のようになっています。
前半の初期化処理は、
- USRPオープン
- 自分のIPアドレスと送信先IPアドレスとポートの設定
送信処理は、
- 送信動作開始(Finiteなので1回だけの単発送信)
- 0~256の送信データを生成
- USRPに送信
- USRPからU8(バイト列)を受信し、グラフ描画する
1台のUSRPで送受信しているので、まず送信してから受信していますね。
FPGA(USRP-RIO)の中身を見てみる
では次はFPGAのソースコード"TenGbE_FPGA.vi"を開いてみます。トップレベルを開くと色々な制御器類が目に入りますので、ぱっと見はうんざりしますが、冷静に見ると単純です。
上側のループの内 "Register Bus"はUSRPでいつも使われているループで、ホストからの設定値をUSRPに設定しています。
"Reads status signal from the CLIP"は、SPF+コネクタの状態を表示しているだけのループ。
下側の"PORT 0"と"PORT 1"は"SPFポート0と1"に対応する処理が実行されますが、ポート番号が違う以外は全く同じ内容で、このループの中で送受信が処理されています。
で、下図がループ"PORT 0"を拡大しました(クリックで拡大図)。
"RX"と"TX"と書かれたVIにパラメータを渡しているだけですね。実際の色々な処理はこの中で行われているようです。
ちなみにこのループのクロックは、"MGT Sockeet\CoreClk156Out"が配線されており、MGT Socketのクロックが使われています。
このクロックは、156.25MHzですね。
USRP-RIOのADC/DACのループは200MHzで動くので、ADC/DACのデータを10GbEで流すにはタイミングやデータ幅など慎重に検討した方が良さそうですね。
まとめ
- FPGA"TenGbE_FPGA.vi"では、10GbE処理ループがポート毎に用意されており、PORT0とPORT1の送受信ループが有る。
- PORT0とPORT1の処理内容はそれぞれ同じようだ。
- 10GbE処理ループの動作クロックは、156.25MHzのようだ。
以上、ドルフィンシステム福島でした。
コメント
コメントを投稿