--- title: "Dev log: GPS receiver based on MAX2769 and Zynq 7010 FPGA" author: peter date: 2024-10-02 20:10:44 +0800 categories: [Electronics, Programming] # Blogging | Electronics | Programming | Mechanical | SelfHosting tags: [rf, electronics, fpga, ebaz4205, max2769, zynq7010, gps, devlog] # systems | embedded | rf | microwave | electronics | solidworks | automation | tip # image: assets/img/2024-10-02-Dev-log-GPS-receiver/preview.png --- ## 🚧🚧 THIS PAGE IS NOT FINISHED 🚧🚧 ## Notes: https://github.com/iliasam/STM32F4_SDR_GPS?tab=readme-ov-file https://habr.com/ru/articles/789382/ https://dsp.stackexchange.com/questions/92028/max2769-i-q-for-signal-acquisition-tracking ## Datasheet > The MAX2769B features an on-chip ADC to digitize the > downconverted GPS signal. The maximum sampling > rate of the ADC is approximately 50Msps. The sampled > output is provided in a **2-bit format (1-bit magnitude and > 1-bit sign) by default** and also can be configured as a > **1-bit or 2-bit** in both I and Q channels, or 1-bit, 2-bit, or > 3-bit in the I channel only. The ADC supports the digital > outputs in three different formats: the unsigned binary, > the sign and magnitude, or the two’s complement format > by setting bits FORMAT in Configuration register 2. MSB > bits are output at I1 or Q1 pins and LSB bits are output at > I0 or Q0 pins, for I or Q channel, respectively. In the case > of 3-bit, output data format is selected in the I channel > only, the MSB is output at I1, the second bit is at I0, and > the LSB is at Q1. Surely two-bit correlation is the same process, just with more precision because of the additional bit? ## I and Q This answer says we need both I and Q for acquisition https://dsp.stackexchange.com/questions/92028/max2769-i-q-for-signal-acquisition-tracking But the GPS document says > The two L1 carrier components modulated by the two separate bit trains (C/A-code plus data and P(Y)-code > plus data) shall be in phase quadrature (within ±100 milliradians) with the C/A signal carrier lagging the P > signal by 90 degrees Another confusing thing is the GPS doc says In phase is P(Y) xor D(t) while Quadrature is C/A xor D(t), but the MAX2769 seems to operate where I is the C/A code since that's the only component the STM32 based GPS receiver uses. However, the diagram in the MAX2769 seems to have Q be +90deg phase shift ahead of I, whereas in the GPS document C/A lags by 90deg behind P(y) so I in GPS doc is +90deg phase shift ahead of Q in gps doc, so i guess the receiver and the doc have opposite conventions? ## Signal generation Use MATLAB https://au.mathworks.com/help/satcom/ug/gps-waveform-generation.html#mw_rtc_GPSWaveformGenerationExample_52AA1397 Looks like this generates a GPS baseband waveform OR it can generate the bits. https://gge.ext.unb.ca/Resources/gpsworld.april93.pdf Observables (carrier phase, pseudorange) https://descanso.jpl.nasa.gov/monograph/series2/Descanso2_S13.pdf Observables ## ZYNQ platform https://www.xilinx.com/support/answers/65240.html https://old.reddit.com/r/FPGA/comments/e5e8ia/be_aware_of_zynq_7020_arm_core_1_bricking_due_to/ Seems important for devboard