
Software-Defined GPS Signal Simulator
GPS-SDR-SIM GPS बेसबैंड सिग्नल डेटा स्ट्रीम उत्पन्न करता है, जिन्हें सॉफ़्टवेयर-परिभाषित रेडियो (SDR) प्लेटफ़ॉर्मों, जैसे ADALM-Pluto, bladeRF, HackRF, और USRP का उपयोग करके RF में परिवर्तित किया जा सकता है।
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim
30000 से अधिक नमूनों (10Hz पर) वाली उपयोगकर्ता मोशन फ़ाइलों का उपयोग करने के लिए, USER_MOTION_SIZE वेरिएबल को उपयोगकर्ता मोशन फ़ाइल के अधिकतम समय (सेकंड में) पर सेट किया जा सकता है। ऐसा make का उपयोग करके करना उचित है ताकि gps-sdr-bin आवश्यकता होने पर आकार को अपडेट कर सके। उदाहरण:
$ make USER_MOTION_SIZE=4000
यह वेरिएबल सीधे GCC के साथ संकलन करते समय भी सेट किया जा सकता है:
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=4000
एक उपयोगकर्ता-परिभाषित प्रक्षेपवक्र को CSV फ़ाइल (जिसमें पृथ्वी-केंद्रित पृथ्वी-स्थिर (ECEF) उपयोगकर्ता स्थितियाँ होती हैं) या NMEA GGA स्ट्रीम में निर्दिष्ट किया जा सकता है। उपयोगकर्ता मोशन की नमूना दर 10Hz होनी चाहिए। उपयोगकर्ता कमांड लाइन के माध्यम से सीधे एक स्थिर स्थान भी निर्दिष्ट कर सकता है।
उपयोगकर्ता GPS उपग्रह समूह को GPS प्रसारण एफेमेरिस फ़ाइल के माध्यम से निर्दिष्ट करता है। दैनिक GPS प्रसारण एफेमेरिस फ़ाइल (brdc) अलग-अलग साइट नेविगेशन फ़ाइलों का एकीकरण है। दैनिक फ़ाइल का संग्रह https://cddis.nasa.gov/archive/gnss/data/daily/ से डाउनलोड किया जा सकता है। इस साइट तक पहुँचने के लिए पंजीकरण आवश्यक है, जो मुफ़्त है।
इन फ़ाइलों का उपयोग दृश्यमान GPS उपग्रहों के लिए अनुकरणित छद्म-श्रेणी और डॉपलर उत्पन्न करने के लिए किया जाता है। इस अनुकरणित श्रेणी डेटा का उपयोग तब GPS सिग्नल के लिए डिजिटलीकृत I/Q नमूने उत्पन्न करने के लिए किया जाता है।
bladeRF और ADALM-Pluto कमांड लाइन इंटरफ़ेस को हस्ताक्षरित 16-बिट पूर्णांक के रूप में संग्रहीत I/Q जोड़े की आवश्यकता होती है, जबकि hackrf_transfer और gps-sdr-sim-uhd.py हस्ताक्षरित बाइट्स का समर्थन करते हैं।
HackRF, bladeRF और ADALM-Pluto 2.6MHz की डिफ़ॉल्ट नमूना दर स्वीकार कर सकते हैं, जबकि USRP2 को 100 MHz के सम अभिन्न डेसीमेटर की आवश्यकता होती है, अर्थात 2.5MHz।
यदि एफेमेरिड्स का संबंधित सेट उपलब्ध है तो अनुकरण प्रारंभ समय निर्दिष्ट किया जा सकता है। अन्यथा RINEX नेविगेशन फ़ाइल में एफेमेरिस का पहला समय चुना जाता है।
अधिकतम अनुकरण अवधि समय USER_MOTION_SIZE द्वारा परिभाषित किया गया है ताकि आउटपुट फ़ाइल बहुत बड़ी न हो।
आउटपुट फ़ाइल का आकार "-b 1" विकल्प का उपयोग करके कम किया जा सकता है, जो चार 1-बिट I/Q नमूनों को एक बाइट में संग्रहीत करता है। आप संपीड़ित फ़ाइल को चलाने के लिए bladeRF के लिए bladeplayer का उपयोग कर सकते हैं।
Usage: gps-sdr-sim [options]
Options:
-e <gps_nav> RINEX navigation file for GPS ephemerides (required)
-u <user_motion> User motion file in ECEF x, y, z format (dynamic mode)
-x <user_motion> User motion file in lat, lon, height format (dynamic mode)
-g <nmea_gga> NMEA GGA stream (dynamic mode)
-c <location> ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48
-l <location> Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100
-L <wnslf,dn,dtslf> User leap future event in GPS week number, day number, next leap second e.g. 2347,3,19
-t <date,time> Scenario start time YYYY/MM/DD,hh:mm:ss
-T <date,time> Overwrite TOC and TOE to scenario start time
-d <duration> Duration [sec] (dynamic mode max: 300 static mode max: 86400)
-o <output> I/Q sampling data file (default: gpssim.bin ; use - for stdout)
-s <frequency> Sampling frequency [Hz] (default: 2600000)
-b <iq_bits> I/Q data format [1/8/16] (default: 16)
-i Disable ionospheric delay for spacecraft scenario
-p [fixed_gain] Disable path loss and hold power level constant
-v Show details about simulated channels
उपयोगकर्ता मोशन को डायनामिक या स्टेटिक मोड में निर्दिष्ट किया जा सकता है:
> gps-sdr-sim -e brdc3540.14n -u circle.csv
> gps-sdr-sim -e brdc3540.14n -x circle_llh.csv
> gps-sdr-sim -e brdc3540.14n -g triumphv3.txt
> gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100
किसी विशेष SDR प्लेटफ़ॉर्म का TX पोर्ट परीक्षणाधीन GPS रिसीवर से DC ब्लॉक और एक निश्चित 50-60dB क्षीणक के माध्यम से जोड़ा जाता है।
अनुकरणित GPS सिग्नल फ़ाइल, जिसका नाम "gpssim.bin" है, को नीचे दिखाए अनुसार bladeRF में लोड किया जा सकता है:
set frequency 1575.42M
set samplerate 2.6M
set bandwidth 2.5M
set txvga1 -25
cal lms
cal dc tx
tx config file=gpssim.bin format=bin
tx start
आप इन कमांडों को bladeRF-cli स्क्रिप्ट विकल्प के माध्यम से भी निष्पादित कर सकते हैं:
> bladeRF-cli -s bladerf.script
आउटपुट डेटा 8-बिट हस्ताक्षरित I/Q नमूने होने चाहिए।
> gps-sdr-sim -e brdc0010.22n -b 8
आप HackRF होस्ट सॉफ़्टवेयर में hackrf_transfer टूल का उपयोग कर सकते हैं।
> hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0
> gps-sdr-sim-uhd.py -t gpssim.bin -s 2500000 -x 0
आप UHD उदाहरणों में शामिल tx_samples_from_file टूल का भी उपयोग कर सकते हैं:
> tx_samples_from_file --file gpssim.bin --type short --rate 2500000 --freq 1575420000 --gain 0
> limeplayer -s 1000000 -b 1 -d 2047 -g 0.1 < ../circle.1b.1M.bin
ADALM-Pluto डिवाइस से उसका नेटवर्क इंटरफ़ेस चालू और संचालित होने की अपेक्षा की जाती है और डिफ़ॉल्ट रूप से "pluto.local" के माध्यम से सुलभ है।
डिफ़ॉल्ट सेटिंग्स:
> plutoplayer -t gpssim.bin
TX क्षीणन सेट करें:
> plutoplayer -t gpssim.bin -a -30.0
डिफ़ॉल्ट -20.0dB। लागू रेंज 0.0dB से -80.0dB तक 0.25dB चरणों में।
RF बैंडविड्थ सेट करें:
> plutoplayer -t gpssim.bin -b 3.0
डिफ़ॉल्ट 3.0MHz। लागू रेंज 1.0MHz से 5.0MHz तक।
Copyright © 2015-2025 Takuji Ebinuma
MIT लाइसेंस के अंतर्गत वितरित।