GPS RTL
Take Ankasys_Pulpissimo_SoC/pulpissimo/rtl/gps_system/hdl folder from Ankasys_Pulpissimo_SoC svn repo, it has these subfolders:
common: common header & hdl modules used in both acq and trcq ips.
apb_wrappers: apb wrapper interface ips for each trck and acq ips.
trck_src: trcking top and instantiated sub ips hdl codes from Hilal & Ahmet's implementations. trck_src/pulp_fifo: added manually from gps_hw svn repo, svn info is shared below.*
acq_src: acqusition top and instantiated sub ips hdl codes from Hilal & Ahmet's implementations.
20 ms Tracking Measurement Mailbox
Her tracking kanali, decode edilen her GPS L1 C/A navigation biti icin bir atomik olcum uretir. Veri yolu:
1 ms prompt I/Q
-> tracking_measurement (20 ornek akumulasyonu ve snapshot)
-> tracking clock domaininde 20 ms sabit payload
-> her alan icin iki FF senkronizer
-> iki tam PCLK settle cevrimi
-> tracking_wrapper APB register bankasi
-> measurement flag/interrupt
-> bare-metal software
trck_src/tracking_measurement.sv bir bit boyunca su degerleri toplar:
sum_i = sum(I_prompt)
sum_q = sum(Q_prompt)
wbp = sum(I_prompt^2 + Q_prompt^2)
M = 20 adet 1 ms prompt ornegi
Prompt enerji karesi lock detector'daki mevcut multiplier sonucundan alinir; ayni is icin ikinci bir multiplier/DSP yolu acilmaz. Bit epoch'unda total carrier NCO frekansi Q7 formatinda, absolute sample, remaining-code phase, navigation bit ve 16-bit sequence degeriyle birlikte snapshot edilir. Payload bir sonraki bit olcumune kadar degismez.
Bu arayuz bir event FIFO'su degildir. Kaynak veri en az bir 20 ms bit boyunca
sabit kaldigi icin wrapper her multi-bit alani mevcut double_ff_syn yapisindan
gecirir, senkronize valid rising edge'inden sonra iki tam PCLK cevrimi bekler
ve butun bankayi tek seferde register eder. Measurement interrupt'i APB
snapshot'tan bir PCLK sonra uretilir; software interrupt'a girdiginde veri ve
status stabildir. Software yine de coherent read icin sequence degerini
payload'dan once ve sonra okuyup esitligini kontrol eder.
APB registerlari
| Offset | Alan | Aciklama |
|---|---|---|
0x50 |
MEASUREMENT_META |
[31:24]=version(1), [12:8]=M, bit 2 lock, bit 1 NAV bit, bit 0 valid |
0x54 |
MEASUREMENT_SEQUENCE |
16-bit, her 20 ms olcumde artar |
0x58 |
MEASUREMENT_CARRIER_Q7 |
Signed total carrier NCO frekansi, Hz icin /128 |
0x5c |
MEASUREMENT_ABS_SAMPLE |
Olcum epoch absolute sample |
0x60 |
MEASUREMENT_REM_CODE_PHASE |
26-bit remaining-code residue |
0x64 |
MEASUREMENT_SUM_I |
Signed coherent prompt-I toplami |
0x68 |
MEASUREMENT_SUM_Q |
Signed coherent prompt-Q toplami |
0x6c |
MEASUREMENT_WBP_LO |
Wideband power alt 32 bit |
0x70 |
MEASUREMENT_WBP_HI |
Wideband power ust bitleri |
CONTROL_REG bit 13 measurement interrupt enable, bit 14 measurement flag
enable'dir. STATUS_REG bit 7 measurement flag'dir. Genel interrupt clear
islemi bu flag'i de temizler.
Neden Doppler IIR RTL'de degil?
IIR RTL'de de uygulanabilir; her kanal icin onceki Doppler state'i, signed coefficient multiply, rounding/saturation ve reacquisition reset kurali eklenmesi yeterlidir. Mevcut tasarimda bilerek software'de tutulur:
- APB bankasi ham ve tekrar analiz edilebilir carrier olcumunu korur.
- Filtre katsayisi hareket profiline gore bitstream almadan degistirilebilir.
- C/N0, satellite state ve WLS zaten software'de hesaplanir.
- Filtre veri/interrupt hizini azaltmaz; measurement yine 50 Hz'dir.
- Kart testinde kesintisiz kosuda measurement
missed,invalidve event overflow sayaclari sifir kalmistir; CPU veya CDC baskisi RTL filtresi gerektirmemistir.
RTL filtresi ancak bu ham register sozlesmesinin yaninda ikinci bir filtered alan istenirse, olcum tamamen donanim icinde tuketilecekse veya software latency/CPU butcesi kart testinde yetersiz kalirsa anlamli olur.
RTL dogrulama
Questa testleri:
make -C hardware/external/gps/rtl/trck_src/tb test
Testler prompt enerjisini, 20-ornek akumulasyonunu, iki ard arda bit epoch'unu, 20 ms hold davranisini, double-FF + settle + atomik APB capture'i ve interrupt/status-clear yolunu kontrol eder.
SVN Revision
svn info Path: . Working Copy Root Path: /storage/projects/gnss_soc/Ankasys_Pulpissimo_SoC URL: svn://192.168.1.46/Ankasys_Pulpissimo_SoC Repository Root: svn://192.168.1.46/Ankasys_Pulpissimo_SoC Repository UUID: e6ee3b13-bfec-4c27-9df0-a71801fb71fc Revision: 111 Node Kind: directory Schedule: normal Last Changed Author: ankaoc Last Changed Rev: 111 Last Changed Date: 2025-07-18 15:33:18 +0300 (Fri, 18 Jul 2025)
SVN Revision of gps_hw*
svn info Path: . Working Copy Root Path: /storage/projects/gnss_soc/gps_hw URL: svn://192.168.1.46/gps_hw Repository Root: svn://192.168.1.46/gps_hw Repository UUID: f2c31683-5921-4142-8047-6a984122e95c Revision: 89 Node Kind: directory Schedule: normal Last Changed Author: ankaaa Last Changed Rev: 89 Last Changed Date: 2025-07-08 14:20:14 +0300 (Tue, 08 Jul 2025)