Hello,
We built a board based on an IMX8QX1AVLFZAC CPU. This board also embed a L86 module that have an integrated GPS antenna, that have big difficulties to get a gps fix.
Using an external GPS receiver connected to a laptop, we observe the signal is proportional to the distance with our board. WIth the antenna on the board, the signal is near absent, at 5cm is is weak, and at a bigger distance, or by cutting the power source of our board the signal is ok.
After a lot of investigation (near field analysis, cutting all peripherals, ...) we deducted that the CPU is the source. We did the same test with the EVK kit, and observed the same.
Could someone at NXP provide support on this issue ?
Thank you
Do you mean the GPS signal was interfered by the CPU?
Yes, this is what our different tests shows.
One of our test, using the EVK, is bellow.
External GPS receiver (connected to test pc) have its antenna on top of EVK.
Before applying power to EVK, GPS report the following status :
After applying power, the GPS lost its fix and most of the sats :
This test is done with the EVK, but we have very similar behaviour with our motherboard.
On our mother board, we disabled all peripheral power supply to isolate the CPU. We can also reproduce the issue in "uuu mode".
Hello Anthony,
GPS is a highly sensistive signal, and the antenna (which typically has a Low-Noise Amplifier [LNA]) should be kept away from noise sources which may interfere in its primary band (GPS L1 Band is 1563 to 1587 MHz)
Be aware, the if the LNA in the antenna gets overloaded by a harmonic in its passband (which should be much wider than just the L1 band), it will saturate the GPS receiver, so that it no longer can distinguish the (low-power) GPS signal from the (high-power) harmonic.
Of course, this is a very generic statement and not a quick solution. What you need to do, besides analyzing any clock sources in your system (eg. crystals connected to iMX8, Ethernet, but also internal PLL's and external busses like RGMII, SD/MMC, DDR), and look for multiples of these frequencies, which coincide with the antenna's passband. This table of harmonics, you would need to compare against measurements with a Spectrum Analyzer and Near Field-probe. This gives you a more exact indication of the exact harmonic frequency and help you identify the offender.
In the case of your picture, I can see that you have placed your GPS antenna directly over the RJ45 Ethernet and (FTDI)USB ports. The FT2232 IC powered from the USB bus, which is not connected (so should not be problematic). The AR8031 Ethernet PHY is powered from the EVK, and runs an 25MHz crystal (which is active, even if not connected). Additionally, the RGMII interface operates at either 25 or 125MHz. With the 63rd harmonic of 25MHz at 1575MHz, this places it right inside your GPS L1 band.
You could try and disable the GMAC/Ethernet PHY from software (preferably, place the PHY in power-down), but as the Ethernet bus frequencies are standardized, the only optimization you can do is improved PCB layout and/or shielding of the noise source.
The GPS antenna placement is also right next to the dual SDIO interface towards the SAF5400 interface card, which is based on 40MHZ TCXO. The SDIO interface itself is also operating at a 40MHz clock rate (once configured from the iMX8). The 39th harmonic of 40Mhz is at 1560MHz, just outside the L1 band, but still very close (and likely in the passband of the LNA in the GPS antenna).
Regards, Alexander
What is the frequency of the GPS? You may need to check which frequency interfer the GPS. If the interference is caused by the DDR or CPU, then may consider to change the frequency of DDR and the CPU.
The GPS use mainly 1575,42 MHz frequency.
We check the DDR, there is no activity on the memory bus in the uuu flashing mode. afaik, we cannot change the CPU frequency in UUU mode, and we already played with CPU governors from linux, with no luck.
Is'nt NXP aware of such issue with this CPU, and have a solution in its knowledge database ? I suppose we are not the first to try to integrate a GPS received near an IMX8 CPU ? And as the issue is also present with your EVK, it does not look like an integration error from us.
I discussed this issue with the hardware AE. Customer need to find out which is the frequency point that interfere the GPS first. Then change the frequency of that component.
I discussed with our hardware team, and we don't see how to change the imx8 frequency other than cpu governors under linux. We already tried that, and this has no effect.
Do you see another way to change the frequency ? Should we change the CPU itself ?
There is operatiing frequency table in imx8qxp.dtsi.
https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
a35_opp_table: opp-table {
compatible = "operating-points-v2";
opp-shared;
opp-900000000 {
opp-hz = /bits/ 64 <900000000>;
opp-microvolt = <1000000>;
clock-latency-ns = <150000>;
};
opp-1200000000 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <1100000>;
clock-latency-ns = <150000>;
opp-suspend;
};
};