🛰️
LimeSuiteNGのCLIツールでgps-sdr-simを使ってみる
前回の記事でビルドしたLimeSuiteNGのCLIツールを使って、gps-sdr-simで生成したベースバンド信号をLimeSDR mini V2で送信してみます。
GPS-SDR-SIM
- GPS-SDR-SIMをGitHubのリポジトリからcloneしてビルド(追記)Windowsであれば、Visual Studioのx64 Native Tools Command Promptでビルド
git clone https://github.com/sdr-sat/gps-sdr-sim.git cd gps-sdr-sim gcc gpssim.c getopt.c -lm -o gps-sdr-simcl /O2 /W3 gpssim.c getopt.c /Fe:gps-sdr-sim.exe - ベースバンド信号ファイルを生成300秒分のベースバンド信号が生成されます。デフォルトのファイル名はgpssim.binです。
./gps-sdr-sim -e brdc0010.22nxyz = -3959617.5, 3350136.6, 3699531.5 llh = 35.681298, 139.766247, 10.0 Start time = 2022/01/01,00:00:00 (2190:518400) Duration = 300.0 [sec] 05 132.8 38.4 22193165.8 4.1 10 314.3 7.5 25151827.0 4.3 12 169.9 6.2 25170039.8 9.6 13 56.4 38.0 22086492.4 3.8 14 49.4 13.8 24336055.8 6.4 15 27.5 64.8 20373400.1 2.6 18 260.3 41.8 21828922.3 3.2 20 138.5 10.2 24538408.1 8.7 23 316.0 39.6 22035131.1 3.2 24 222.6 66.4 20285310.6 2.6 28 67.7 22.4 23705677.8 5.5 Time into run = 300.0 Done!
LimeSuiteNG CLI Tools
- LimeSDR mini V2の設定
limeConfig --initialize --samplerate=2.6e6 --txen=1 --txlo=1575.42e6 \ --txlpf=2.6e6 --txpath=Band1 --txgain=10samplerateをgps-sdr-simのデフォルトのサンプリングレートである2.6MHzに設定します。中心周波数のtxloをGPS L1C/A信号の1575.42MHzに設定します。txgainは10dBに設定しています。このとき、LimeSDR mini V2のTXポートには、20dBの減衰器を取り付けています。 - ベースバンド信号の送信5MHz以下のサンプリングレートであればどの環境でも安定した送信ができますが、10MHzを超えるあたりから送信データが時折ドロップするようになります。
limeTRX --input gpssim.bin --txPacketsInBatch=16 -–rxPacketsInBatch=16--txPacketsInBatchの値を8~16程度に設定することで、高いサンプリングレートでも安定した送信が可能になります。さらに高いサンプリングレートで送受信を行うのであれば、Ubuntuを利用することを推奨します。同じ設定でも、Windowsでは送信データの欠損を完全に解決することはできませんでした。 - GPS信号の受信
LimeSDR mini V2のTXポートとGNSS受信機を同軸ケーブルで接続することで、GPS信号の受信が確認できます。
limeTRXの改修
limeTRXはinputファイルのサイズをチェックしますが、その変数であるfileSizeがintで定義されているため、2GBを超えるファイルサイズが正常に認識されません。送信したいベースバンド信号のファイルサイズが大きなときは、fileSizeをint64_tに定義しなおしてリビルドしてください。
LimeSuiteNG/cli/limeTRX.cpp
static void TransmitLoop(TransmitLoopArgs* args)
{
...
int64_t fileSize = fin->tellg();
...
}
Discussion