ieice sr研若手育成チュートリアル usrpを使用し …...fm局を探そう labview...
TRANSCRIPT
ni.com
IEICE SR研若手育成チュートリアル
USRPを使用したソフトウェア無線
日本ナショナルインスツルメンツ株式会社
ni.com 2
本日の内容
• ソフトウェア無線(SDR) - USRPを使った練習問題• 練習問題1:USRPを使用してFM局を探そう
o LabVIEW開発環境について
o USRPを使用したソフトウェア無線
o FM局をモニタ
• 練習問題2:FM放送を復調して聞いてみよう
o LabVIEW プログラムの基礎
o LabVIEWが持っているデジタル信号処理関数
o .m fileをLabVIEWで使う方法について
• デジタル通信• 練習問題3:無線通信のデジタル信号処理について
o デジタル通信のサンプルの確認
o デジタル変調、復調についての基礎
ni.com
ソフトウェア無線(SDR)USRPをスペアナとして使用し、FM局を探そう
LabVIEW開発環境について
USRPを使用したソフトウェア無線
FM局をモニタ
ni.com 4
ソフトウェア無線(Software-defined radio)とは、電子回路(ハードウェア)に変更を
加えることなく、制御ソフトウェアを変更することによって、無線通信方式を切り替える
ことが可能な無線通信、又はその技術。一般的には、広い周波数範囲において多く
の変調方式が可能となるよう、ソフトウェアが、なるべく汎用性の高いプログラム可能
なハードウェアを制御するものとして考えられている。
ソフトウェア無線は、汎用コンピュータその他の電子機器が、相当数の信号処理を行
うことで実現される。ソフトウェア無線についての研究は、新しいソフトウェアを動作さ
せるだけで、新しい無線通信方式を実現するような無線機器を作り出すことを目標に
している。
From Wikipedia
ソフトウェア無線とは
ni.com 5
ソフトウェア無線 (SDR) とは昨今の携帯電話端末を例に取ると…
技術革新によりもたらされるより高速大容量な変調・符号化方式
より柔軟な多元接続方式 etc LTE: Long-termevolution
現行の携帯電話通信規格
LTE通信システムのハードウェアアーキテクチャの一例
ハードウェアの変更(事実上の機種変更) が必要
無線通信方式はハードウェア設計時点で決まり後から柔軟に変更できない
新たな無線通信方式を導入するには…
LTEモデム(ASIC)
CPURAMなど
A/DD/A
RFフロントエンド
ni.com 6
ソフトウェア無線 (SDR) とはソフトウェアで無線通信方式を柔軟に変更するアプローチ
LTEモデム(ASIC)
CPURAMなど
A/DD/A
RFフロントエンド
マイクロ
プロセッサや
FPGA
ASIC: 設計時点で処理が決まっている
マイクロプロセッサやFPGA:ソフトウェアを書き換えれば後から処理を変更できる
注: 携帯電話のアーキテクチャにSDRを導入する是非を議論しているわけではありません
sdr.c sdr.vhdsdr.c sdr.vhd
ni.com 7
PCI Express x4 ギガビットイーサネットよりも高速大容量・低遅延 最大50 MS/sのベースバンドIQサンプリング PCI Express, ExpressCard,
PXI Express用インタフェースの提供
USRP RIO (RIO: Reconfigurable I/O)ユーザがプログラム可能なFPGA LabVIEWでプログラム可能 Xilinx Kintex-7シリーズ
チューナブルRFフロントエンド 送信/受信ともに2チャンネルずつ搭載 より容易なMIMO伝送プロトタイピング 周波数範囲
50 MHz – 2.2 GHz (2940R/2950R)400 MHz – 4.4 GHz (2942R/2952R)1.2 – 6 GHz (2943R/2953R)
デジタルI/O プログラマブル トリガ入力などに使用可
ni.com 8
NI USRP ソフトウェア無線(SDR)
RF 送受信機 ソフトウェア処理Baseband IQ
ni.com 9
USRPとPCの役割
Tx• デジタルアナログ変換
• RF アップコンバージョン• 変調処理
• RF ダウンコンバージョン
• アナログデジタル変換Rx
• 復調処理
• その他の信号処理
ni.com 10
I相
Q相
デジタルのベースバンド信号波形
Giga Bit Ethernet
PCI Express
D/A変換
I相
Q相
アップコンバージョン
ベースバンド信号
送信すべきRF信号
情報源符号化
文字列データLabVIEW
バイナリデータ0100110001100001…
ベースバンド
信号処理(通信路符号化、変調など)
PC USRP
USRPとPCの役割 (送信時)
ni.com 11
情報源復号
文字列データLabVIEW
バイナリデータ0100110001100001…
ベースバンド
信号処理(復調、通信路
復号など)
I相
Q相
ダウンコンバージョン
ベースバンド信号
受信したRF信号 A/D
変換 I相
Q相
デジタルのベースバンド信号波形
USRP PC
USRPとPCの役割 (受信時)
Giga Bit Ethernet
PCI Express
ni.com 12
USRP-29xx ハードウェアアーキテクチャ
RX1/TX1端子
直交変調器(ダイレクトアップコンバータ)RF
スイッチ ゲイン調整
D/A変換器
ローパスフィルタ
RX2端子
90度移相
直交復調器(ダイレクトダウンコンバータ)
A/D変換器
PLL VCO
PLL VCO
送信側LO
受信側LO
90度移相
ゲイン、周波数などのパラメータはLabVIEWで指定
GigaBitEthernet
FPGA
デジタル信号処理を実施
ni.com 13
USRP-29xx ハードウェアアーキテクチャ
RX1/TX1端子
直交変調器(ダイレクトアップコンバータ)RF
スイッチ ゲイン調整
GigaBitEthernet
PICe
D/A変換器
ローパスフィルタ
RX2端子
90度移相
直交復調器(ダイレクトダウンコンバータ)
A/D変換器
PLL VCO
PLL VCO
送信側LO
受信側LO
90度移相
FPGA
デジタル信号処理を実施3. Carrier
frequency
1. Devicename
2. IQ rate
5. Gain
6. Numberof samples
4. Activeantenna
ni.com 15
1. Device Name – USRPのIPアドレスまたはデバイス名
2. IQ Rate – IQデータのサンプリングレート。周波数帯域に相当
3. Carrier Frequency – 搬送波周波数
4. Antenna – アンテナのポート
5. Gain – 増幅率
6. Fetch size – フェッチサイズ(USRPからPCへデータを転送
する際のデータの”かたまり”の数)
USRPで使用される6つのパラメ-タ
ni.com 16
USRPのパラメータ: IQレート
ダウンコンバータ
RF →ベースバンド
I/Q
A/D
D/A
A/D
アップコンバータベースバンド
I/Q → RFD/A
I相
Q相
I相
Q相
RF信号送信時
RF信号受信時
ベースバンドI/Q波形のA/D変換、D/A変換のサンプルレート (アップデートレート)
単位: サンプル/秒 または Hz
ni.com 17
USRPのパラメータ: IQレート
Frequency [Hz]
Pow
er (d
B)
94.7 M
1 M
- IQレートによって瞬時のRF帯域幅が決定
- IQレート増大→ 単位時間あたりに転送・処理すべきデータの増大→ PCの負荷の増大
ni.com 18
USRPのパラメータ: IQレート
- 中心周波数80.0 MHz,フェッチサイズ (後述) 1000サンプルで受信
- IQレートを増加すると瞬時帯域幅が広がる
50 kサンプル/秒 1 Mサンプル/秒 5 Mサンプル/秒
ni.com 19
USRPのパラメータ: 搬送波 (中心) 周波数
- 設定可能な中心周波数はUSRPのモデル間で相違有(本日使用のUSRP-2920: 50 M – 2.2 GHz)
Frequency [Hz]
Pow
er (d
B)
94.7 M
1 M
ni.com 20
USRPのパラメータ: ゲイン (増幅率)
Frequency [Hz]
Pow
er [d
B]
94.7 MHz
1 MHz
- RF信号の増幅率を指定- 単位: dB
ni.com 21
USRPのパラメータ: フェッチサイズ
- 受信時、一度にUSRPから読み出すIQのサンプル数を指定
- 単位: サンプル- E.g.
時間波形の長さ:フェッチサイズ/IQレート= 10000 / 400 k = 0.0025 [秒]
周波数分解能:IQレート/フェッチサイズ= 400 k / 10000 = 40 [Hz]
IQレート: 400 kサンプル/秒フェッチサイズ: 10000サンプルの場合
ni.com 22
USRPのパラメータ: フェッチサイズ
- 中心周波数80.0 MHz, IQレート400 kサンプル/秒で受信- 時間波形の長さと周波数分解能に着目
100サンプル 1000サンプル 10000サンプル
ni.com 23
LabVIEWは低階層の複雑性を抽象化し、エンジニアや科学者が計測・制御システムを作成するために必要なすべてのツールを統合します
並列プログラミング
並列に実行される独立したループ処理を容易に作成
解析ライブラリ
計測アプリケーションに最適化された高いパフォーマンスの解析ライブラリを利用
ハードウェアとの接続どのようなIOや計測器からも実世界の信号をLabVIEWへ取り込む
すぐに計測
豊富なサンプルプロジェクトとテンプレートを用い開発時間を短縮
統合ソフトウェア環境
すべてのシステムリソースを1つのソフトウェア環境で統合・
管理
既存のコードを統合.m ファイル、C コード、
HDLコードなどをグラフィカルに統合
デプロイメントターゲット最新のPCやリアルタイム、FPGAターゲットにLabVIEW
コードを実装
鮮明なUI計測データや結果を表示するモダンなユーザーインターフェ
ースを作成
SDR開発にも対応できるLabVIEW
ni.com 24
データフローとは
• 各ブロックダイアグラムのノードは全てが入力されて初めて実行される
• 各ノードは実行後に出力データを生成する
• データはワイヤで定義されたパスに沿って流れる
• データの動きが実行順序を決める
公式:結果 = (A+B*C) / (D-E)
ni.com 25
データフローとは
• 各ブロックダイアグラムのノードは全ての入力データを受信して初めて実行される
• 各ノードは実行後に出力データを生成する
• データはワイヤで定義されたパスに沿って流れる
• データの動きが実行順序を決める
「乗算」と「減算」の演算は、データの相互依存がないため、同時に実行可能
ni.com 26
データフロー言語で表現する並列処理はわかりやすいNI LabVIEWのコンパイラは並列で表されたコードを自動的にマルチスレッド処理
データの並列処理
タスクの並列処理
ni.com 27
6000以上の処理/解析関数
• 数値演算• 三角関数、自然対数 など
• マトリクス演算
• カーブフィット、補完
• 微分、積分
• 確率統計・ヒストグラム
• 信号処理• 周期測定、Pk-Pk測定 など
• 信号発生シミュレーション
• フーリエ変換
• デジタルフィルタ
• 窓関数
数値演算と信号処理パレット
ni.com 28
他言語との連携で資産活用
• 共有ライブラリ (DLL)– C言語、VBコードの再利用– 他社デバイスの制御
• ActiveX– コンテナ機能(GUI)– クライアントおよびサーバ機能
• .NET– コンテナ– クラスライブラリ呼び出し– クラスライブラリ作成
• コマンドライン実行– コンソールアプリケーション呼び出し
プログラム間通信と接続性パレット
ni.com 29
デバッグ・ヘルプ機能
デバッグ機能 詳細ヘルプ機能
・実行のハイライトを有効プログラムの状況が可視化される
・ヘルプメニュー > 詳細ヘルプ 表示ショートカット <Ctrl-H>
ni.com 30
NI-USRP ドライバの呼び出しの流れ
セッション初期化
構成集録開始
IQ波形読み取り
集録停止
セッション終了
Whileループ (While文)繰り返し読み取り実行
ni.com 31
Exercise 1 FM局を探そう
ni.com 32
デスクトップ上のExercisesフォルダを開く
ni.com 33
Exercise 1A.viを開く
ni.com 34
パラメータを変更
パラメータ 値
Device names RIO0IQ Rate 10M
Carrier Frequency 80MActive antenna RX1
Gain 20Number of samples 20k
Timeout 10
ni.com 35
VIを実行
ピークが見えない場合はゲインを調整(30dBまで)※日本のFMラジオ周波数範囲 76MHz~90MHz
ni.com 36
拡大ツールを使いピークを確認
ni.com 37
ピーク範囲の拡大しピーク周波数を確認
ni.com 38
Exercise 1 FM局を探そう まとめ
•USRPで指定したパラメタのデータを取得
•IQデータと周波数データ•周波数プロットの拡大
ni.com 39
LabVIEWのデータタイプ
ni.com 40
ブロックダイアグラムのレビュー
配線:波形データタイプ
ワイヤ:エラークラスタ
ni.com 41
波形データタイプ
波形要素取得
t0 – 波形の初期時間
dt – サンプル間隔
Y – データサンプルの配列
• 波形データタイプは時間信号の測定を表示、保存するために使用される
ni.com 42
配列
• 配列は要素と次元で構成される• 要素:配列に格納されるデータ
• 次元:配列の長さ、高さ、深さを表す
• 似たようなデータを集めたり同じ計算を
繰り返す際には配列の使用を考慮した
方がいい
ni.com 43
クラスタの紹介
• データをグループにまとめるデータ構造
• 異なるデータタイプのデータをまとめることが可能
• ANSI Cのstructに類似
• 要素は全て制御器または表示器で統一されていないといけない
• ケーブルにワイヤがバンドルされたイメージ
• 使用例:• 変数のグループ化
• エラーハンドリング
• モジュレーションツールキット
ni.com 44
エラーと複雑な波形クラスタ• エラークラスタ– ブロックダイアグラムでエラーをトラッキング
• 波形クラスタ– モジュレーションツールキットで使用
• (波形データタイプと類似)
ni.com 45
ループ
• Whileループ
• 端子は反復をカウント
• 最低1回は実行
• 停止条件 が満たされるまで実行
• Forループ• 端子は反復をカウント
• カウント端子のNに入力する回数だけ実行
While ループ
Forループ
ni.com 46
FMラジオの周波数スペクトル
ni.com 47
FMラジオの復調
FMラジオは3つのステップで復調可能
1. キャリア位相を検知 (ベースバンドIQサンプルのArc Tan)2. 位相をアンラップ (不連続性の排除)3. 微分計算 (位相の変化≈ 周波数)
ベースバンド IQ
位相検出位相を
アンラップ位相の微分
復調した音声信号
ni.com 48
位相のアンラップ
• 極座標は強度と位相で成り立っている
• 位相の値は-180º から 180º• 位相のラップがあると不連続性が生じる
• 不連続性を取り除くために位相をアンラップ
180°
-180°
ni.com 49
Exercise 2A 復調とFMラジオを視聴
ni.com 51
FMラジオ信号の周波数スペクトルの構成 (日本)
ni.com 52
ExercisesフォルダのExercise 2A.viを開く
ni.com 53
ブロックダイアグラムを表示
メニューバーの「ウィンドウ」→「ブロックダイアグラムの表示」、またはCtr+E
ni.com 54
復調処理 (1) ベースバンドIQ → 位相抽出
ベースバンド IQ
位相抽出位相を
アンラップ位相の微分
復調した音声信号
niUSRP Fetch Rx Data (Poly) のdata出力 (受信ベースバンドIQ) を複素数を座標軸に変換 (Complex to Polar) の入力に配線
ベースバンドIQ波形(複素数)
位相をラジアンで返す
[-π, π]
ni.com 55
復調処理 (2) 位相抽出 → 位相のアンラップ
ベースバンド IQ
位相抽出位相を
アンラップ位相の微分
復調した音声信号
複素数を極座標に変換 (Complex to Polar) のθ (位相) 出力を位相接続 (Unwrap Phase) の位相入力に配線
ベースバンドIQの位相[-π, π]
ni.com 56
復調処理 (3) 位相をアンラップ → 位相の微分
ベースバンド IQ
位相抽出位相を
アンラップ位相の微分
復調した音声信号
位相接続 (Unwrap Phase) の接続された位相出力を微分x(t) (Derivative x(t)) のX入力に配線
波形データタイプではない単なる数値配列
ni.com 57
復調処理 (4) 位相の微分 → 復調信号波形
ベースバンド IQ
位相抽出位相を
アンラップ位相の微分
復調した音声信号
微分x(t) (Derivative x(t)) のdX/dt出力を波形作成 (Build Waveform) のY入力に配線他、右図のように配線
niUSRP Fetch Rx Data (poly).vi のdata出力
ni.com 58
FMラジオ信号の周波数スペクトルの構成
復調後のFMラジオ信号の周波数スペクトル
今回は左ch + 右ch (モノラル音声)のみを取り出してPCのサウンドカードに入力しスピーカから音声を出力(Simple Resample.viが、結果的にモノラル音声のみを取り出す役割を担当)
50Hz
15kHz
23kHz
38kHz
53kHz
67kHz
88kHz
0
19 kHzパイロット
左ch +右ch
左ch – 右ch(搬送波抑圧両側波帯
変調, DSB-SC)
文字多重放送
ni.com 59
音声信号出力
Simple Sound VIのTask IDとエラーを配線VIを保存
ni.com 60
実行 -- 波形/スペクトル確認
VIを実行 ベースバンドIQ波形
復調後の信号のスペクトル
東京都内で受信できる主なラジオ局の中心周波数- 80 M (TOKYO FM)- 81.3 M (J-WAVE)- 82.5 M (NHK FM東京)
ni.com 61
Exercise 2A復調とFMラジオを視聴 まとめ
USRPで取得したベースバンドIQ信号をLabVIEWの関数で復調サウンドカードからFMラジオを出力
ni.com 62
計算のLabVIEWモデル
PC PXI システム CompactRIO シングルボードRIO
データフロー C | HDL コード テキスト算術 シミュレーション ステートチャート
カスタムデザイン
マルチレート DSP
LabVIEW
`̀
Real-Time
LabVIEW
Desktop
LabVIEW
FPGA
LabVIEW
MPU/MCU
ni.com 63
LabVIEW MathScriptノードを使用した算術
• 計算式とアルゴリズムをテキストで作成
• 左右の壁側で作成された入出力変数
• .mスクリプト言語と主に互換性がある
• 記述はセミコロンで区分けすることで、不慮の出力をなくす
(関数パレット»プログラミング»ストラクチャ»MathScriptノード)
ni.com 64
周波数変調された信号の復調アルゴリズム
位相の
検知
位相の
アンラップ
位相の
微分
ni.com 65
Exercise 2B MathScript RT ノードの使用
ni.com 66
実装するmファイルを確認
%Get the angle of the% current sampletheta = angle(samples);
%Unwrap the phase to%eliminate discontinuityu_theta = unwrap(theta);
%Take the derivative of%phase to get frequencyfmdemod = diff(u_theta);
位相の
検知
位相の
アンラップ
位相の
微分
ni.com 67
Exercise 2Bの処理を削除
•「複素数を座標軸に変換」関数•位相接続 VI•微分x(t) VIを削除壊れたワイヤはCtrl+Bで削除
ni.com 68
Mathscriptノードを追加
プログラミングパレットの「ストラクチャ」にあるMathScriptノードをブロックダイアグラムに配置
ni.com 69
mファイルをインポート
MathScriptノードを右クリックし「インポート..」を選択Exercisesフォルダの「FMdemod.m.txt」を選択
ni.com 70
MathScriptノードに入出力を追加
MathScriptノードを右クリックし、1、「入力を追加」を選択し
「samples」と入力2、「出力を追加」を選択し、
「fmdemod」を選択
ni.com 71
ベースバンドIQ波形要素を取得し、MathScriptノードから復調信号を取得
1.プログラミングパレットの「波形」パレットから波形要素取得関数を配置2.niUSRP Fetch Rx Data VIの波形データから波形要素のYを取得し3.MathScriptノードの「samples」入力に配線4.Fmdemodを波形作成関数に配線
ni.com 72
フロントパネルで波形確認
VIを実行Exercise 2B.viとして保存
ni.com 73
Exercise 2B MathScript RT ノードの使用 まとめ
MathScriptノードを使用しFM信号を復調
ni.com
デジタル通信デジタル通信システムの探求
デジタル通信レファレンスデザインを開いて実行
より高度なLabVIEWブロックダイアグラム
変調と復調プロセスの概要
ni.com 75
デジタル通信システム
Channel Coding Modulation Upconversion
チャネル
情報
源符
号化
チャネル
符号
化
変調
アップ
コンバ
ージョン
ダウン
コンバ
ージョン
復調
チャネル
復号
情報
源復
号
ni.com 76
デジタル通信システム
NI Modulationツールキット
NI Modulationツールキット
ni.com 77
デジタル通信システム
NI Modulation ツールキット
NI Modulation ツールキット
NI USRP
NI USRP
ni.com 78
デジタル通信の応用に関するトピック
ni.com 79
パケットベースのデジタル無線通信システムのセットアップ
NI USRP-2920送信側
NI USRP-2920受信側
RF信号
中心周波数: 915 MHz 変調方式: PSKビットレート: 400 kbps
• USRPの制御 (送信側・受信側)• 送信ベースバンド信号を送信側USRPに転送• 受信ベースバンド信号を受信側USRPから
受信• 受信したメッセージの再構築
ni.com 80
LabVIEWを使ったパケットベースの通信
ni.com 81
パケットの構造
GUARDBAND
SYNCSEQ
PCKTNUM PAD データ
フィールド 長さ[bits]
備考
ガードバンド 30 Rx PLL, フィルタなどを初期化
Syncシーケンス 20 フレームとシンボルの同期
パケット番号 8 範囲: 0-255 パケットの再構築と未到達パケットの検知で使用
データ 64 - 256 可変の長さのデータフィールド。Rxの終端でダイナミックに検知される長さ
Pad 20 フィルタの終端の効果を考慮
ni.com 82
送信側のブロックダイアグラム
メッセージをビットに変換
データペイロードをフェッチ
ビットをシンボルにマッピング
ヘッダ・フッタを追加
パケットを形成
IQレートに応じてリサンプリング
パルス整形フィルタリング
アップコンバート & 送信
LabVIEWを実行しているホストPC
NI 2920 HW(FPGA, DAC, ADC,RF派生のモジュール)
ni.com 83
受信信号
受信
ダウンコンバート
NI 2920 HW(FPGA, DAC, ADC,RF派生のモジュール)
ni.com 84
Exercise 3 パケットベースのデジタル無線通信
ni.com 85
Research: リファレンスデザインをダウンロード
8x8 MIMO-OFDM GPS シミュレーション
RF レコード&プレイバックRF方向探知と位置検出
Tx
ni.com/usrp
ni.com 86
アンケートにご協力下さい
86
本日受講されたご感想などをご記入下さい。今後の無料セミナー運営の参考にさせていただきます。(学生の方は学校名を必ずご記入ください。)
本日は、当セミナーにご参加いただき誠にありがとうございました。
ni.com
「U S R Pを用いたソフトウェア無線体験セミナー」にご参加頂きあ り が と う ご ざ い ま し た 。