TSNスイッチとして使えるFPGAの評価ボード(KR260)

本サイトはアフィリエイト広告を利用しています。
FPGA

XilinxのKR260というFPGAボードはTSNに対応しています。

更にTSN対応のRJ-45(LAN)コネクタが2つあります。

TSN スイッチとして、またエンドポイントとしても使えることを紹介します。

 

スポンサーリンク

TSNスイッチとして使えるFPGAボードで遊んでみた

XilinxのKR260というFPGAボードはTSN(Time Sensitive Networking)に対応しています。

一番の特徴として、TSNに対応できるRJ-45(LAN)コネクタが2つあります。

※残り2つは普通のEthernet用のコネクタです。

 

内部のIPとしてもスイッチの機能も有りますので、TSNスイッチとしても使えます。

もちろんシンプルにエンドポイント(マスター・スレーブ)としても使用可能です。

実際にTSNの設定の確認、また通信テストを行っていきます。

 

TSN スイッチ(Switch)とは?

TSNスイッチはデータを送信・受信するだけではなく、データを受け渡しできます。

TSNの時刻同期したデータを、他のTSN機器にも中継することが可能です。

  • TSN EndPoint…末端でマスター・スレーブとしてデータを送信・受信できます
  • TSN Switch …スイッチとしてデータの中継もできます

 

複数のTSNスイッチを繋げることで、時刻同期が取れたシステムが構築できます。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TSN_EP===TSN_SW===TSN_SW===TSN_SW……

master   >     slave     >   slave      >     slave   ……

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

TSN EndPoint Switch(Bridged EndPoint)

今回のKR260のテストでは、TSNのエンドポイントとスイッチ両方対応しています。

IPのModeが「TSN EndPoint Switch(Bridged EndPoint)」が選択されていました。

 

今回テストしたKR260のFPGAの中身に関しては、個人でも確認することが可能です。

TSNのXilinxのIPを部分的に確認してみた

TSNのXilinxのIPを部分的に確認してみた
XilinxのTSNのIPを確認してみました。基本的には個人では使用できないIPです。 但し、評価ボードのデザインファイルから一部参照することが可能です。 確認する手順を紹介します。

 

TSNスイッチにした設定を確認する

実際にTSNスイッチの通信テストが出来れば一番良いのですが、環境がありませんでした。

(筆者の環境では)KR260から先に繋げるTSNに対応したデバイスが無いためです。

KR260のLANコネクタ2つを使って、TSNのデータ中継が出来ません。

そのため、TSNスイッチとしてのセットアップした時の設定・ログを確認していきます。

通信は出来なくとも、セットアップの情報は確認できます。

 

TSN通信のテスト環境

TSNの通信テストと環境構築に関しては下記記事で実施・紹介しています。

TSN Ethernetの実装をFPGA(KR260)で試してみた

TSN Ethernetの実装をFPGA(KR260)で試してみた
TSN(Time Sensitive Networking)のイーサネット環境を作ってみました。 KR260というTSN対応のFPGAボードを使ってテストしています。 TSNの環境構築から実装・通信テストまで一連の流れを紹介します。

 

テストしたPTP通信がTSNに対応しているかの確認を下記記事で紹介しています。

TSNとPTPの違いは?通信テストの設定・ログから確認してみた

TSNとPTPの違いは?通信テストの設定・ログから確認してみた
TSNの環境構築して、PTPの通信テストを行いました。 そしてテストしたPTPの設定が、TSNの規格に適応しているのか確認してみました。 設定・ログを見直しながら、PTPとTSNの違いを確認した内容を紹介します。

 

テスト環境は「PTP対応のLANカード(NIC)」と「TSNに対応のFPGAボード」です。

PTP対応のLANカード(NIC)の詳細については下記記事で紹介しています。

IEEE-1588/PTP対応のLANカード(NIC)を動かしてみた

IEEE-1588/PTP対応のLANカード(NIC)を動かしてみた
IEEE-1588/PTP対応のLANカード(NIC)を購入してみました。 実際にPCにカードを取り付けて、PTPの動作確認まで実施しています LANカード(NIC)の選定から、PTP通信までの内容を紹介します。

 

またTSNに対応のFPGAボード(KR260)に関しては下記記事で紹介しています。

KR260を購入してUbuntuを動かすまでのメモ

KR260を購入してUbuntuを動かすまでのメモ
XilinxのKria KR260のロボティクス スターター キットを買ってみました。 Digi-Keyから個人で購入しています。 Ubuntuを動かすまでの流れを紹介します。

 

TSNスイッチとしてセットアップする

通信テストする際には、TSNスイッチのMACとIPアドレスをセットします。

公式の手順だとスクリプトで隠れていますが、下記箇所になります。

 

TSNスイッチとしてのMAC・IPアドレス

ifconfigを行うとTSNスイッチとしてのMAC・IPアドレスの変化が良く分かります。

※またセットアップのスクリプトを実際に解析してみると、更に理解が進みます。

写真イメージとしては、下記のように設定されています。

 

アドレスに関しては、あくまでデモプログラム一例であることをご了承ください。

TSN_IP内部のMACアドレス、TSN_スレーブとしてのIPアドレスが下記になります。

  • EP="00:0a:35:00:01:20"     …TSN_IP内部のEPのMACアドレス
  • EMAC0="00:0a:35:00:01:2e"     …eth2のMACアドレス
  • EMAC1="00:0a:35:00:01:2f"   …eth3のMACアドレス
  • SLV_IP_ADDR=111.222.0.20    …TSN_スレーブのIPアドレス

 

セットアップ前後のifconfig

実際の通信テストまでは出来ませんでしたが、TSNスイッチとしての設定を確認できました。

特にセットアップ後のIP・MAC箇所を注目してもらえれば良いかと思います。

ep.20: flags=67<UP,BROADCAST,RUNNING> mtu 1500
inet 111.222.0.20 netmask 255.255.255.0 broadcast 111.222.0.255
ether 00:0a:35:00:01:20 txqueuelen 1000 (Ethernet)
eth2: flags=67<UP,BROADCAST,RUNNING> mtu 1500
ether 00:0a:35:00:01:2e txqueuelen 1000 (Ethernet)
eth3: flags=3<UP,BROADCAST> mtu 1500
ether 00:0a:35:00:01:2f txqueuelen 1000 (Ethernet)

 

確認したTSNスイッチのセットアップ前後のifconfigの一部が下記となります。

・セットアップの前

 

・セットアップの後

 

TSNのエンドポイントとしての動作

KR260はTSNスイッチとしてだけでなく、エンドポイントとしても動作可能です。

(というかSwitchとして使える→EndPointとしても使える…にほぼなると思います)

エンドポイントとしての、スレーブとマスターの通信テストを確認してみました。

 

TSNのスレーブとしての通信テスト

KR260でのTSNのスレーブの通信テストは下記記事でまとめています。

TSN Ethernetの実装をFPGA(KR260)で試してみた

TSN Ethernetの実装をFPGA(KR260)で試してみた
TSN(Time Sensitive Networking)のイーサネット環境を作ってみました。 KR260というTSN対応のFPGAボードを使ってテストしています。 TSNの環境構築から実装・通信テストまで一連の流れを紹介します。

 

TSNのマスターとしての通信テスト

KR260でTSNのマスターとしての通信テストも同様に可能です。

途中まではスレーブで紹介した方法と同じです。下記手順から操作が変わります。

TSN環境のセットアップ

スクリプトの末尾を「-b2」→「-b1」にすることでマスターとしてセットアップできます。

IP・MACアドレスもスレーブとは違うものが割り振られます。

source /usr/bin/net_setup.sh -b1

 

PTP通信のスクリプトを動かす時も、末尾を「-s」→「-m」に変更します。

source /usr/bin/start_ptp.sh -m

マスターとしてのconfigファイルを読み込んでptp通信を開始します。

 

KR260(マスター)としてのステートも正常に遷移出来ていることが分かります。

「INITIALIZING→LISTENING → MASTER」

  • INITIALIZING…初期化された状態
  • LISTENING…ポートがPTPに参加できる状態になった最初の状態
  • MASTER…マスターの状態

 

LANカード(NIC)側のスレーブの時刻同期を確認

LANカード(NIC)側でスレーブの設定ファイルを読み込み、PTP通信を開始します。

 

出力されたログを確認すると、KR260側のマスタークロックを受け取れています。

最終的にはn(ナノ)s秒単位で時刻同期の精度が取れていることが分かります。

  • ptp4l[193.662]: selected best master clock 000a35.fffe.00011e
  • ptp4l[207.419]: rms 5 max 8 freq +4451 +/- 3 delay 186 +/- 0

 

またLANカード(NIC)側でスレーブとしてのステートを正常に遷移出来ています。

「INITIALIZING→LISTENING → UNCALIBRATED→SLAVE」

  • INITIALIZING…初期化された状態
  • LISTENING…ポートがPTPに参加できる状態になった最初の状態
  • UNCALIBRATED…マスタークロックを受信している状態。同期はまだ未。
  • SLAVE…マスタークロックを受信している状態。同期まで済

 

使用したスレーブの設定ファイル(ptp4l_slave.conf)は下記です。

 

まとめ

KR260をTSNのスイッチとして設定、またマスター・スレーブとしてテストできました。

TSNテストできる評価ボードは少ないので、もし興味ある方は是非試してみて下さい。

 

下記記事でKR260を購入して、セットアップした内容をまとめています。

KR260を購入してUbuntuを動かすまでのメモ

KR260を購入してUbuntuを動かすまでのメモ
XilinxのKria KR260のロボティクス スターター キットを買ってみました。 Digi-Keyから個人で購入しています。 Ubuntuを動かすまでの流れを紹介します。

 

下記記事でKR260にてTSNの環境構築を構築した内容をまとめています。

TSN Ethernetの実装をFPGA(KR260)で試してみた

TSN Ethernetの実装をFPGA(KR260)で試してみた
TSN(Time Sensitive Networking)のイーサネット環境を作ってみました。 KR260というTSN対応のFPGAボードを使ってテストしています。 TSNの環境構築から実装・通信テストまで一連の流れを紹介します。

コメント