こんにちはドルフィンシステムの笹生です。
今日は 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 + GND | UHD GPIO API、または FPGA カスタム | B2xx はフロントパネルではなく基板上ヘッダ。 |
| B200mini / B205mini / B206mini | あり | 基板上 GPIO ヘッダ J6 | GPIO_0〜7 | 3.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 GPIO | PS 制御、UHD/FPGA 側制御、ATR 連動が可能。E3xx は user-programmable daughterboard GPIO は持たない。 |
| E320 | あり | フロントパネル Mini HDMI Type-C GPIO | 8本 | GPIO は 5 mA/pin 超を流さない。HDMI Type-C の各ピンに Data[0]〜Data[7] 割当 | UHD set_gpio_attr()、set_gpio_src()、または PS/Linux GPIO | E310 系より外部接続しやすい。 |
| N300 / N310 / N320 | あり | フロントパネル D-sub15 | 12本 | 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-sub15 | 12本 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 mode | X4x0 は 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 件のコメント :
コメントを投稿