manahiyoの気まぐれ

備忘録を兼ねたブログです。

ADI社のRF Agile Transceiver(SDR)をLIBIIOを使って、UNITYで波形表示

はじめに

以前からRTL-SDRを使ってUNITYで遊んでいたが、ADIのRF Agile Transceiverというものが周波数範囲が広くてより応用ができそうなので、こちらで遊んでみました。

 対象はZYNQ+AD9161のボード

 

まずは

下記からWINDOWS用のドライバをインストール

github.com

 

ボードとPCをUSBとETHERNETで接続する

必要に応じてPCとボード側のIPアドレスを設定します。

 

UNITYではPluginsのフォルダに「libiio-sharp.dll」を入れる。

 

下記のコードでアクセスできました。

こんな簡単にアクセスできるとは便利な世の中です。

f:id:manahiyo831:20210213120849p:plain


ではサンプルコードをもとにもう少し付け加えてきます。

サンプルコードでコンソール出力の部分をデバッグ出力に変更すれば動作はそのままできそうです。

 

と思って実行したら、止まらなくなってしまいました。

どーもデータ受信で止まっているようなので、そこはコメントにして先に進めます。

 

そもそもステップ実行の仕方を知らないので、下記で確認

shikaku-sh.hatenablog.com

 

また設定を比較できるように下記からADIのオシロスコープをダウンロードしてインストール、実行しておきます。2つのアプリからアクセスしても特に問題なく動作するようです。

wiki.analog.com

 

下記にC#用のわかりやすい説明があった

analogdevicesinc.github.io

 

色々見てみると下記のような構成っぽい

"ad9361-phy"

altvoltage1: TX_LO (output)
voltage0: (input)
voltage3: (output)
altvoltage0: RX_LO (output)
voltage2: (output)
temp0: (input)
voltage0: (output)
voltage2: (input)
out: (input)

"cf-ad9361-dds-core-lpc"

voltage0: (output)
voltage1: (output)
altvoltage3: TX1_Q_F2 (output)
altvoltage1: TX1_I_F2 (output)
altvoltage0: TX1_I_F1 (output)
altvoltage2: TX1_Q_F1 (output)

"cf-ad9361-lpc"

voltage0: (input)
voltage1: (input)

 

ひとつづつ調べて、それぞれをプロパティで作成しました。

読み込みをすることで実際に設定される値が確認できます。範囲外の値を書き込んでも、読み込むと正常範囲内の値に修正されているので、内部で値チェックをやってくれているようです。

 

UNITYのインスペクタで表示

インスペクターで表示することで、コードで編集しなくても初期値を簡単に設定できるとよいと思い、やってみました。こういうところがUNITYのいいところです。

f:id:manahiyo831:20210213155031p:plain

 

IIOオシロスコープ側で設定を読み込むことで正常に制御できているか確認します。

f:id:manahiyo831:20210213155326p:plain

上記で設定した値になっているのが確認できました。

 

次はIQデータの読み込みと表示

ここはサンプルコードをみながらやってみます。バイトをint16にするのはポインタでやりたいのだが、C言語のように簡単にはできないようで、下記を見ながらunsafeを使って型変換できた。なお、playerのセッティングでunsafeを許可しないとだめ。

crakac.hatenablog.jp

 

やっと表示ができました。グラフは以前ブログに書いたものを使用。

f:id:manahiyo831:20210213192753p:plain

IとQのデータを表示しているはずなのだが、なぜかほぼ重なってる・・・???

90度ずれていなければならないので、何かおかしい。

 

下記のように2つをenableにしなければらなかった。STEPも4になった

f:id:manahiyo831:20210213194343p:plain

下記の通りIとQの両方が出るようになりました。

f:id:manahiyo831:20210213194441p:plain

 

ADIのRF Agile TransceiverをUNITYで表示するところまでできました。

 

今後はスペアナみたいにFFTして表示をしたいところです。