Realizace SDR GPS přijímače na STM32 bez specializovaných čipů
STM32F4 dokáže zachytit a zpracovat dvoubitový datový proud z GNSS RF front-endu MAX2769 rychlostí 16,368 MHz v reálném čase. Celý řetězec od A/D převodníku po korelaci je realizován čistě softwarově bez ASIC nebo FPGA, s využitím DMA a optimalizovaných bitových operací.
Architektura GNSS přijímače
Tradiční GPS přijímače používají specializované korelační čipy jako GP2021 pro hledání špičky korelace PRN kódů. V tomto projektu je celý řetězec nahrazen mikrokontrolérem:
- RF front-end (MAX2769) digitalizuje signál na IF 4,092 MHz
- DMA zachycuje data do kruhového bufferu
- Softwarové zpracování: carrier wipeoff, code wipeoff, korelaci
Jeden PRN period (1 ms) obsahuje 16368 vzorků, přesně 16 na čip (1023 čipů). Bitová data jsou seskupena po 2 bajtech na čip.
Hardware: MAX2769 front-end
MAX2769 v režimu Preconfigured Device State (PGM=1, varianta 2) vydává jednobitový sign-signál s I1 bez SPI konfigurace. Deska obsahuje:
- TCXO 16,368 MHz
- LDO 3,0 V
- Aktivní anténa na J3
- Takclocký výstup P5
- Data na P3
Frekvence jsou vybrány pro přesné shody: 16368 / 1023 = 16 vzorků/čip. Ideální čip na IF: 0b1100110011001100.
Zachyt dat na STM32F4-Discovery
STM32F4 (Cortex-M4, 168 MHz, 192 KB RAM, 1 MB Flash) používá SPI + DMA v kruhovém režimu pro 16 Mbit/s.
- Dvojité bufferování: přerušení na půlce/konci 4 KB bufferu
- 2 KB na PRN (2046 bajtů)
- Dodatečný buffer pro zpracování bez zastavení DMA
DMA kód zajišťuje nepřetržitý příjem: ztráta bajtu ničí synchronizaci.
Optimalizovaná DSP na bitech
Bez FPU-like zpracování (16 Mvzorků/s) je použita metoda z domácího GPS/GLONASS přijímače: nahrazení násobení XOR pro sign-data.
XNOR (inverze XOR) je ekvivalent násobení (-1 -1 = 1, -1 1 = -1). Sekvenční XOR kompenzují inverzi.
Operace jsou vektorizovány na 32bitová slova pro rychlost.
Řetězec zpracování signálu
- Carrier NCO: Generování I/Q harmonik s ohledem na Doppler, chybu TCXO a IF 4,092 MHz. Dva směšovače přenáší na baseband.
- Code NCO: Lokální PRN (1023 čipů) s interpolací na 16 vzorků/čip.
- Korelaci: Prvkové XOR vstupních dat s lokálním kódem + sčítání.
Komplexní I/Q forma umožňuje oddělit boční pásma.
// Příklad bitové korelace (pseudokód)
for (i = 0; i < 2046; i += 4) {
uint32_t input = buffer[i];
uint32_t replica = prn_replica[i];
corr += __builtin_popcount(input ^ replica) - 16;
}
Náročnost na zdroje a limity
- 4 kanály korelace: ~70 % CPU na 168 MHz
- RAM: 12 KB/kanál (bufry + stavy)
- Bez sledování (tracking) nebo navigačních dat v základní verzi
- Inicializace efemeri manuálně
Projekt dosahuje cold start za 30–60 s při SNR > 35 dB·Hz.
Co je důležité
- Plně softwarová realizace GPS řetězce na STM32 bez ASIC/FPGA
- Bitové XOR místo násobení: 10x zrychlení DSP
- 16 vzorků/čip zajišťuje přesnou interpolaci PRN
- Nepřetržitý DMA zachyt je klíčový pro synchronizaci
- Škálovatelné na 6–8 kanálů na F4/F7
- Otevřený kód pro experimenty s L1 C/A
— Editorial Team
Zatím žádné komentáře.