aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVirendra Kakade <virendra.kakade@ni.com>2023-08-31 12:51:06 -0500
committerAki Tomita <121511582+atomita-ni@users.noreply.github.com>2023-09-06 18:39:25 -0500
commit8fb48ad48da0329508063128c6e0c4fd05d30f6b (patch)
tree08dd474c6eeccd63c66fb9f273bccb57447e9faf
parentci: restrict analyze changeset pool (diff)
downloaduhd-8fb48ad48da0329508063128c6e0c4fd05d30f6b.tar.xz
uhd-8fb48ad48da0329508063128c6e0c4fd05d30f6b.zip
SelfCal: improve fbx input spur performance
Modify the cal_freq used in the calibration procedure by X440 devices which use the FBX daughterboard. The new value obeys the rules that are specified mainly in the PG269 to help the background calibration (BG) run under better conditions and hence improve our input spur performance. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com> Co-authored-by: Volkan Öz <volkan.oez@ni.com>
-rw-r--r--host/lib/include/uhdlib/usrp/dboard/fbx/fbx_dboard.hpp15
-rwxr-xr-xhost/utils/x4xx_query_adc_threshold.py4
2 files changed, 15 insertions, 4 deletions
diff --git a/host/lib/include/uhdlib/usrp/dboard/fbx/fbx_dboard.hpp b/host/lib/include/uhdlib/usrp/dboard/fbx/fbx_dboard.hpp
index 39ff9f933..e516913b4 100644
--- a/host/lib/include/uhdlib/usrp/dboard/fbx/fbx_dboard.hpp
+++ b/host/lib/include/uhdlib/usrp/dboard/fbx/fbx_dboard.hpp
@@ -80,8 +80,19 @@ public:
{
// FBX uses a fixed low freq for both TX and RX
return {
- 100e6, // rx_freq
- 100e6, // tx_freq
+ // Some conditions were considered for choosing the correct cal_freq,
+ // mainly using the PG269 manual as reference. These conditions ensure that
+ // the cal_freq or its harmonics don't interfere with the background (BG)
+ // calibration mechanism on the RFSoC.
+ // 1. In calib_mode2 the highest supported frequency is 0.4 * converter rate (fc).
+ // The minimum fc that X440 supports is 1GHz. So our highest cal_freq is 400MHz.
+ // 2. We need to choose as high a cal_freq as we can
+ // 3. The converter rate (fc) should not be a multiple of the cal_freq
+ // 4. The converter rate (fc) / 8 should not be a multiple the cal_freq
+ // 5. cal_freq should not be of a form k * (fc / 1024) where k = 1 to 1024
+ // 6. The specified hysteresis threshold values work with the chosen cal_freq
+ 397.55e6, // rx_freq
+ 397.55e6, // tx_freq
{0x7FFF, 0}, // output full scale dac mux
100, // delay
4000, // under
diff --git a/host/utils/x4xx_query_adc_threshold.py b/host/utils/x4xx_query_adc_threshold.py
index 61074aa4e..8b1d80431 100755
--- a/host/utils/x4xx_query_adc_threshold.py
+++ b/host/utils/x4xx_query_adc_threshold.py
@@ -55,8 +55,8 @@ def settings(usrp):
if is_x440(usrp):
return {
"gain": None,
- "rx_freq": 100e6,
- "tx_freq": 100e6
+ "rx_freq": 397.55e6,
+ "tx_freq": 397.55e6
}
print("Unknown x4xx device")
sys.exit(1)