RxNCO and DC correctors are separate things, they’re not the same module. Anyway, the calibration procedure basically do analog DC, digital IQ imbalance calibration, and also enables the digital DC corrector.
Just to be clear in the Rx chain there is:
- analog DC corrector
- digital IQ (gain/phase) corrector
- RxTSP digital DC corrector
That’s digital quantization error, you cannot avoid it. -70dBFS is essentially 1bit error in 12bit system. It’s going to appear in any digital processing. Let me give you an example:
Digital system is using integers, and you want to calculate an average value of some samples.
The samples are [1, 2, 1], what do you think is the average value of those? Ideally it would be 4/3=1.3333… but your using integers, you can’t represent that, it’s either 1 or 2, so there you have it, a quantization error of 0.333, the result is 1, instead of the perfect 1.333, therefore you end up with digital “DC” offset of 1bit from the perfect value. That’s essentially what the RxTSP digital corrector is doing, it calculates the average value of some samples and offsets them all by the average.
It won’t happen. LMS7002M is a 12bit system, that gives you a dynamic range of ~72dB. To achieve -95dBFS, the ADC would have to be 16bit. There is a caveat to that, if it’s only 12bit system, then how can you see the shifted DC at -95? That’s because the additional precision is achieved by sampling over long period of time. I’m not going to go into details about oversampling, I’m not an expert in that and can be wrong. But in essence the ADC provides only 12bit instant raw values, but the actual FFT calculations are done on PC using floating point values and using 16384 samples, that essentially provides extra precision bits in the spectrum display. But those calculations are completely independent of the hardware, hardware only provides the raw input values of 12bit, what extra precision you can achive with them is up to your algorithms.
That is expected, it’s very unlikely that analog DC can be perfectly corrected. The correctors have a pretty coarse steps, so one step can be too little, the next already too much. So that’s why you correct analog DC as close as possible, and only then use digital correction to eliminate the rest.
DC offset is affected by many variables, LO frequency, gain, temperature… so it’s not consistent and won’t be the same for every device.
The calibration algorithm uses only the LMS7002M internal processing, it finds the best values that it can detect using it’s measurements. You are looking at FFT when doing the calibration manually, the FFT displays more precise measurements due to oversampling, therefore you can fine adjust the final values to better result.
I’m not familiar with how USRP works, or how precise their correctors are. But I can definitely tell you that DC is not your problem if you think that -70dBFS DC is going to affect anything in 5G communications.
I believe you can have other problems in the analog side:
Gains selection, to not saturate the receiver or transmitter.
Reference clock drift, even though software shows you the LO frequency as expected, the software does not know about the analog discrepancies in the oscillator crystal, it could have couple kHz offset from the expected value, so that needs to be calibrated.