
محاكي إشارات GPS المعرّف برمجيًا
يقوم GPS-SDR-SIM بتوليد تيارات بيانات إشارة النطاق الأساسي لنظام GPS، والتي يمكن تحويلها إلى ترددات لاسلكية باستخدام منصات الراديو المعرفة بالبرمجيات (SDR)، مثل ADALM-Pluto وbladeRF وHackRF وUSRP.
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim
لاستخدام ملفات حركة مستخدم تحتوي على أكثر من 30000 عينة (بتردد 10 هرتز)، يمكن تعيين المتغير 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. يجب أن يكون معدل أخذ عينات حركة المستخدم 10 هرتز. يمكن للمستخدم أيضًا تعيين موقع ثابت مباشرة من خلال سطر الأوامر.
يحدد المستخدم كوكبة الأقمار الصناعية GPS من خلال ملف تقويم فلكي بث GPS. ملف التقويم الفلكي اليومي (brdc) هو دمج لملفات الملاحة الفردية في ملف واحد. يمكن تنزيل أرشيف الملف اليومي من: https://cddis.nasa.gov/archive/gnss/data/daily/. يتطلب الوصول إلى هذا الموقع تسجيلًا، وهو مجاني.
ثم تُستخدم هذه الملفات لتوليد المسافة الزائفة ودوبلر المحاكيين للأقمار الصناعية GPS المرئية. ثم تُستخدم بيانات المدى المحاكية هذه لتوليد عينات I/Q الرقمية لإشارة GPS.
تتطلب واجهة سطر الأوامر لـ bladeRF و ADALM-Pluto أزواج I/Q مخزنة كأعداد صحيحة موقعة 16 بت، بينما يدعم hackrf_transfer و gps-sdr-sim-uhd.py البايتات الموقعة.
يمكن لـ HackRF و bladeRF و ADALM-Pluto قبول معدل العينات الافتراضي البالغ 2.6 ميجاهرتز، بينما يتطلب USRP2 معامل عزل صحيح زوجي قدره 100 ميجاهرتز، أي 2.5 ميجاهرتز.
يمكن تحديد وقت بدء المحاكاة إذا كانت مجموعة التقاويم الفلكية المقابلة متوفرة. وإلا يتم اختيار أول وقت تقويم فلكي في ملف الملاحة RINEX.
يتم تحديد أقصى مدة للمحاكاة بواسطة USER_MOTION_SIZE لمنع ملف الإخراج من أن يصبح كبيرًا جدًا.
يمكن تقليل حجم ملف الإخراج باستخدام الخيار "-b 1" لتخزين أربع عينات I/Q بت واحد في بايت واحد. يمكنك استخدام bladeplayer لـ bladeRF لتشغيل الملف المضغوط.
Usage: gps-sdr-sim [options]
Options:
-e <gps_nav> ملف الملاحة RINEX للتقاويم الفلكية GPS (مطلوب)
-u <user_motion> ملف حركة المستخدم بتنسيق ECEF x, y, z (الوضع الديناميكي)
-x <user_motion> ملف حركة المستخدم بتنسيق خط العرض، خط الطول، الارتفاع (الوضع الديناميكي)
-g <nmea_gga> دفق NMEA GGA (الوضع الديناميكي)
-c <location> إحداثيات ECEF X,Y,Z بالأمتار (الوضع الثابت) مثال: 3967283.15,1022538.18,4872414.48
-l <location> خط العرض، خط الطول، الارتفاع (الوضع الثابت) مثال: 30.286502,120.032669,100
-L <wnslf,dn,dtslf> حدث القفزة المستقبلي للمستخدم في رقم أسبوع GPS، رقم اليوم، الثانية الكبيسة التالية مثال: 2347,3,19
-t <date,time> وقت بدء السيناريو YYYY/MM/DD,hh:mm:ss
-T <date,time> الكتابة فوق TOC و TOE إلى وقت بدء السيناريو
-d <duration> المدة [ثانية] (الوضع الديناميكي كحد أقصى: 300 الوضع الثابت كحد أقصى: 86400)
-o <output> ملف بيانات عينات I/Q (الافتراضي: gpssim.bin ; استخدم - للإخراج القياسي)
-s <frequency> تردد العينات [هرتز] (الافتراضي: 2600000)
-b <iq_bits> تنسيق بيانات I/Q [1/8/16] (الافتراضي: 16)
-i تعطيل تأخير الغلاف الأيوني لسيناريو المركبة الفضائية
-p [fixed_gain] تعطيل فقدان المسار والحفاظ على مستوى طاقة ثابت
-v إظهار تفاصيل حول القنوات المحاكية
يمكن تحديد حركة المستخدم في الوضع الديناميكي أو الثابت:
> 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 معينة بمستقبل GPS قيد الاختبار من خلال قاطع تيار مستمر ومخفف ثابت بقيمة 50-60 ديسيبل.
يمكن تحميل ملف إشارة 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
يجب أن تكون بيانات الإخراج عينات I/Q موقعة 8 بت.
> gps-sdr-sim -e brdc0010.22n -b 8
يمكنك استخدام أداة hackrf_transfer في برنامج المضيف لـ HackRF.
> 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
يمكنك أيضًا استخدام أداة tx_samples_from_file المضمنة في أمثلة UHD:
> 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
تعيين تخفيف الإرسال:
> plutoplayer -t gpssim.bin -a -30.0
الافتراضي -20.0dB. النطاق القابل للتطبيق من 0.0dB إلى -80.0dB بخطوات 0.25dB.
تعيين عرض نطاق الترددات اللاسلكية:
> plutoplayer -t gpssim.bin -b 3.0
الافتراضي 3.0MHz. النطاق القابل للتطبيق من 1.0MHz إلى 5.0MHz.
حقوق النشر © 2015-2025 Takuji Ebinuma
موزعة بموجب رخصة MIT.