USRP の GPIO (AUX IO) 活用されてますか? 【Happy Toggling!】

こんにちはドルフィンシステムの笹生です。


今日は USRP のフロントパネルにある GPIO (AUX IO) について概要をまとめてみました。

USRP の GPIO 活用されてますか?USRP の GPIO を使いこなすことで、様々外部連携をさせることが可能です。

これまで弊社の例でいうと、

・BER測定のために復調ビット列を出力させる

・外部の可変アッテネータをフレームに同期して制御する

・外部からのトリガを受け付けて処理を開始する

などの外部連携をした経験があります。

ほとんどの USRP にはこの GPIO が搭載されているのですが、基板上にピンヘッダとしてあるだけのもの(B2XX系)や、コネクタ形状も D-Sub、HDMI、Mini HDMI のものなど、型番によって異なります。電気的特性はほとんど 3.3V ですが、電流はそれほど流せないので注意は必要です。

また、最近の世代のN3XX シリーズで唯一 GPIO がない N321 はパネルスペースの都合で front-panel GPIO がないということのようです。

記事を書いていて調べていたら見つけたのですが、英語ですが、NI から開発者向けのまとまった PDF 資料もダウンロードできるようです。(GNU Radio イベントでの資料のようで、Hello World として GPIO からブレッドボードの LEDを Lチカさせるデモのようです!サブタイトル「Everyday I'm toggling」が面白いですね。)


USRP 各シリーズの GPIO まとめ

以下は USRP GPIOの整理した表です。

USRP の GPIO は大きく 世代別に 4 系統あります。簡単に箇条書きにすると、、、

①B2xx 系:基板上のピンヘッダ GPIO

②E3xx / N3xx / X3xx 系:Front Panel GPIO、ATR 対応、UHD から制御

③X4x0 系:2系統 HDMI GPIO、24bit、電圧可変、SPI モード対応

④N2xx / USRP2 など旧世代:本体フロント GPIO というより、Basic/LF 系 daughterboard 経由の GPIO 利用が中心


以下表にまとめました、ご参考まで。

シリーズ / 型番GPIO 有無形状 / 位置GPIO 本数電気的特性主な制御方法備考
B200 / B210あり基板上 GPIO ヘッダ J504。B210 には追加で MICTOR 等もありJ504: GPIO_0〜7。Rev.6 以降は J400 に GPIO_8/9 もありJ504 は 3.3 V、J400 は 1.8 V。J504 pinout は GPIO_0〜7 + GND、J400 は GPIO_8/9 + GNDUHD GPIO API、または FPGA カスタムB2xx はフロントパネルではなく基板上ヘッダ。
B200mini / B205mini / B206miniあり基板上 GPIO ヘッダ J6GPIO_0〜73.3 V、GND 付き 12pin ヘッダUHD GPIO API、FPGA カスタム小型ボードなので外部配線時は筐体・治具設計が必要。
E310 / E312 / E313あり内部 GPIO コネクタ6本3.3 V。GPIO は 5 mA/pin 超を流さない。Pin 1 の 3.3 V 電源は条件付きで 300〜500 mA 程度が安全目安UHD set_gpio_attr()、set_gpio_src()、または PS/Linux GPIOPS 制御、UHD/FPGA 側制御、ATR 連動が可能。E3xx は user-programmable daughterboard GPIO は持たない。
E320ありフロントパネル Mini HDMI Type-C GPIO8本GPIO は 5 mA/pin 超を流さない。HDMI Type-C の各ピンに Data[0]〜Data[7] 割当UHD set_gpio_attr()、set_gpio_src()、または PS/Linux GPIOE310 系より外部接続しやすい。
N300 / N310 / N320ありフロントパネル D-sub1512本5 mA/pin 超を流さないUHD set_gpio_attr()、set_gpio_src()、PS/Linux GPIO各ピンごとに PS または UHD/RF channel を source 選択可能。N310 は最大4 radio channel から制御可能。
N321なし公式マニュアル上、パネルスペースの都合で front-panel GPIO なし。
X300 / X310ありフロントパネルD-sub1512本 Data[0]〜Data[11]3.3 V 系。GPIO は 5 mA/pin 超を流さない。+3.3 V ピンは ESD クランプ用途で大電流供給不可UHD set_gpio_attr()、ATR、RFNoC block からの駆動RFNoC/GPIO 制御の実験対象として扱いやすい。bank 名は典型的に FP0 / FP0A / FP0B。
X410 / X420 / X440ありフロントパネル HDMI Type-A ×2、GPIO0 / GPIO1各12本、合計24本I/O 電圧を GPIO bank ごとに 1.8 V / 2.5 V / 3.3 V から選択可能。3.3 V 外部電源ピンは初期状態 disabled、各ポート最大 450 mA、過電流保護ありset_gpio_src() + set_gpio_attr()、PS/Linux GPIO、USER_APP、SPI modeX4x0 は GPIO 機能が最も高機能。GPIO の source を DBx_RFy、DBx_SPI、PS、USER_APP などから選択。
N200 / N210 / USRP2 / USRP1限定的本体独立 front-panel GPIO ではなく、BasicRX/BasicTX/LFRX/LFTX など daughterboard 経由が中心daughterboard 依存daughterboard 依存UHD GPIO bank、ただし構成依存NI/Ettus の GPIO 解説 pdf 資料では、N2x0/USRP2/USRP1 で GPIO を取り出すには Basic/LF daughterboard が実質的な手段と説明されている。


端子台の紹介

GPIO を制御させたときに観測する方法として、端子台を用いてオシロ等で動作確認をすることが多いです。以下、弊社で使用している端子台を紹介します。

D-sub 15pin  GPIO 対応の端子台(ブレークアウト)

https://www.ettus.com/all-products/gpio-kit/

Ettus の公式にもあります。X310 や N310 にはこれを使うと確認が簡単です。

HDMI Type-A GPIO 対応の端子台

弊社ではこちらの端子台を使用しています。

aitendo というサイトで購入しました。これ以外にもさまざまなタイプがあります。

https://www.aitendo.com/product-list/655?page=1


まとめ

USRP を使っていくと 外部機器との連携をしたくなります。そんな時、GPIO はきっと役に立つと思います。

電気特性の変換が必要な場合も多いですが、簡単な電気工作で対応できると思います。

NI から開発者向けのまとまった PDF 資料にある締めの言葉で締めくくりたいと思います。

Happy Toggling!




0 件のコメント :

コメントを投稿