USRPを開発しているEttus Researchは2010年にNational Instrumentsに買収され,
NIからもNI-USRPとして同じデバイスが販売されています.
NI-USRPのコミュニティーを探してみると,ぴったりのトピックが見つかりました.
NI Community: RF Record and Playback with NI USRP
GPS信号の記録と再生についても取り上げられており,セットアップについても
いくつかヒントがありました.
1. GPS信号のband-pass filterは必要.
2. 16dBのアクティブアンテナに加えて,30dBのアンプも追加.
3. GPSDOなど,より安定した外部クロックを入力.
4. Txのレベルは0dBのゲイン設定で-15dBm.
5. GPS信号のレベルにするには,十分なattenuationが必要.
別の実験で使用したフィルタ付きのLNAが手元にあったので,
1と2はこれで解決.
外部入力に使えそうなクロックはないので,3はあきらめます.
USRP N210は,2.5ppmのTCXOを搭載しているので,短時間での
安定性は,そこまで問題にならないように思えます.
このセットアップで,前回同様にGPS信号をファイルに記録します.
データレートは,GPS L1信号の帯域に合わせて,2.5MHzにしました.
$ ./rx_samples_to_file --file gps.bin --type short --nsamp 250000000 --rate 2500000 --freq 1575420000 --gain 30
LNAを追加したため,14ビットのADCのレンジを有効に使っています.
(クリックで拡大)
BPFのおかげで,ノイズフロアも安定しています.
(クリックで拡大)
(クリックで拡大)
さて,次はファイルに記録されたデータをGPS L1信号の周波数で送信します.
仕様上,地上でのGPS信号の受信レベルは,-130dBmとされています.
オープンスカイであれば,+20dB程度の信号が観測されるので,
Txのレベルが-110dBmになるようにattenuatorを挿入します.
これをubloxのGPS受信機に接続し,送信開始.
$ ./tx_samples_from_file --file gps.bin --type short --rate 2500000 --freq 1575420000 --gain 0
linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.000-14-ga90a6af0
Creating the usrp device with: ...
-- Opening a USRP2/N-Series device...
-- Current recv frame size: 1472 bytes
-- Current send frame size: 1472 bytes
Using Device: Single USRP:
Device: USRP2 / N-Series Device
Mboard 0: N210r4
RX Channel: 0
RX DSP: 0
RX Dboard: A
RX Subdev: WBXv3 RX+GDB
TX Channel: 0
TX DSP: 0
TX Dboard: A
TX Subdev: WBXv3 TX+GDB
Setting TX Rate: 2.500000 Msps...
Actual TX Rate: 2.500000 Msps...
Setting TX Freq: 1575.420000 MHz...
-- Tune Request: 1575.420000 MHz
-- The RF LO does not support the requested frequency:
-- Requested LO Frequency: 1575.420000 MHz
-- RF LO Result: 1575.421245 MHz
-- Attempted to use the DSP to reach the requested frequency:
-- Desired DSP Frequency: -0.001245 MHz
-- DSP Result: -0.001245 MHz
-- Successfully tuned to 1575.420000 MHz
--
Actual TX Freq: 1575.420000 MHz...
Setting TX Gain: 0.000000 dB...
Actual TX Gain: 0.000000 dB...
Checking TX: LO: locked ...
Done!
u-centerで受信を確認してみると,見事に測位しています!
(クリックで拡大)
これでGNSS信号シミュレータに一歩近づきました.
次は,ベースバンド信号を数値的に生成して送信できるようにしよう.
【追記】メモ
NI Community: GPS Simulation with NI USRP and LabVIEW
NI White Paper: GPS Receiver Testing
NIからもNI-USRPとして同じデバイスが販売されています.
NI-USRPのコミュニティーを探してみると,ぴったりのトピックが見つかりました.
NI Community: RF Record and Playback with NI USRP
GPS信号の記録と再生についても取り上げられており,セットアップについても
いくつかヒントがありました.
1. GPS信号のband-pass filterは必要.
2. 16dBのアクティブアンテナに加えて,30dBのアンプも追加.
3. GPSDOなど,より安定した外部クロックを入力.
4. Txのレベルは0dBのゲイン設定で-15dBm.
5. GPS信号のレベルにするには,十分なattenuationが必要.
別の実験で使用したフィルタ付きのLNAが手元にあったので,
1と2はこれで解決.
外部入力に使えそうなクロックはないので,3はあきらめます.
USRP N210は,2.5ppmのTCXOを搭載しているので,短時間での
安定性は,そこまで問題にならないように思えます.
このセットアップで,前回同様にGPS信号をファイルに記録します.
データレートは,GPS L1信号の帯域に合わせて,2.5MHzにしました.
$ ./rx_samples_to_file --file gps.bin --type short --nsamp 250000000 --rate 2500000 --freq 1575420000 --gain 30
LNAを追加したため,14ビットのADCのレンジを有効に使っています.
(クリックで拡大)
BPFのおかげで,ノイズフロアも安定しています.
(クリックで拡大)
(クリックで拡大)
さて,次はファイルに記録されたデータをGPS L1信号の周波数で送信します.
仕様上,地上でのGPS信号の受信レベルは,-130dBmとされています.
オープンスカイであれば,+20dB程度の信号が観測されるので,
Txのレベルが-110dBmになるようにattenuatorを挿入します.
これをubloxのGPS受信機に接続し,送信開始.
$ ./tx_samples_from_file --file gps.bin --type short --rate 2500000 --freq 1575420000 --gain 0
linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.000-14-ga90a6af0
Creating the usrp device with: ...
-- Opening a USRP2/N-Series device...
-- Current recv frame size: 1472 bytes
-- Current send frame size: 1472 bytes
Using Device: Single USRP:
Device: USRP2 / N-Series Device
Mboard 0: N210r4
RX Channel: 0
RX DSP: 0
RX Dboard: A
RX Subdev: WBXv3 RX+GDB
TX Channel: 0
TX DSP: 0
TX Dboard: A
TX Subdev: WBXv3 TX+GDB
Setting TX Rate: 2.500000 Msps...
Actual TX Rate: 2.500000 Msps...
Setting TX Freq: 1575.420000 MHz...
-- Tune Request: 1575.420000 MHz
-- The RF LO does not support the requested frequency:
-- Requested LO Frequency: 1575.420000 MHz
-- RF LO Result: 1575.421245 MHz
-- Attempted to use the DSP to reach the requested frequency:
-- Desired DSP Frequency: -0.001245 MHz
-- DSP Result: -0.001245 MHz
-- Successfully tuned to 1575.420000 MHz
--
Actual TX Freq: 1575.420000 MHz...
Setting TX Gain: 0.000000 dB...
Actual TX Gain: 0.000000 dB...
Checking TX: LO: locked ...
Done!
u-centerで受信を確認してみると,見事に測位しています!
(クリックで拡大)
これでGNSS信号シミュレータに一歩近づきました.
次は,ベースバンド信号を数値的に生成して送信できるようにしよう.
【追記】メモ
NI Community: GPS Simulation with NI USRP and LabVIEW
NI White Paper: GPS Receiver Testing
GPS L1は24MHz BWと思いますが、何故2.5MSで良いのでしょうか。
素人考えですが、GPS L1 C/Aコード(1.023Mcps)のみを収録再生すれば良いので(軍事用のPコードはいらない)、最低1.023*2=2.046M(x2は標本定理に基づく)は必要。多めに見て2.5Mでサンプリングした、ということでしょうか?