取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
mxd
Observer
Observer
720 次查看
注册日期: ‎03-25-2020

RFSoC sub-ADC幅度校准失败的问题

我正在调试RFSoC Gen1,具体型号是xczu27drffve1156,使用的vivado版本是2018.1。

ADC的采样率是4G,是由8个采样率为500M的sub-ADC组成的,每次重启tile之后,都会对ADC进行校准。校准完成之后,我直接采集噪声,发现有2个问题:

1、噪声的幅度特别高,在+/-100左右,我的另外一个工程采集到的噪声幅度只有+/-20左右;两个工程使用的板卡是同一个。

2、8个ADC其中的某些ADC有一个很大的偏置,采集的噪声达到了+250甚至更高,数据特别有规律,每8个点一次循环,如下图所示。所以我怀疑是sub-ADC的偏置校准失败了。

我使用了API对ADC进行动态配置,每次配置完成之后,ADC的状态会有变化,采集到的噪声可能是正常的,也可能是异常的。

请问什么原因会导致sub-ADC的校准失败呢?

我应该怎样做来避免这个问题呢?

微信图片_20210323145431.png微信图片_20210323145624.png

0 项奖励
15 回复数
zhendon
Community Manager
Community Manager
651 次查看
注册日期: ‎08-31-2011

校准失败的话,你应该能够在 +/-fin + (k/N)*Fs,和k*Fs/N的频点看到杂散。

你可以看下频域,是否有这些杂散。

 

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
mxd
Observer
Observer
647 次查看
注册日期: ‎03-25-2020

感谢你的回复!

我在频谱上能看到500M、1G、1.5G的地方有杂散。由于我没有输入信号,采的是噪声,因此没能看到+/-fin+(k/N)*Fs处是否有杂散。

在我的设计中,使用了ltc6952来提供RF端的时钟。

在我的SDK程序里面,会首先重新配置ltc6952,等到输出稳定之后,调用XRFDC_PLLDynamicConfig函数来配置ADC的采样率和PLL。每当我重新执行一次这个流程的时候,ADC校准的结果就会发生变化,或好或坏。

我在pg269中看到,在ADC的power_up sequence中,state11~13是ADC用来进行校准的(foreground calibration吗?),在XRFDC_PLLDynamicConfig函数中,会重新执行一次power_up sequence,可能是这个过程有问题吗?

我想知道在SDK中,通过API动态调整ADC采样率的具体流程,请问有这样的示例吗?以此来对比我当前的流程是否有问题。

0 项奖励
zhendon
Community Manager
Community Manager
620 次查看
注册日期: ‎08-31-2011

不客气。

API部分应该不会有问题。

BG的calibration需要输入信号不低于-40dbfs。如果你没有信号输入的话,需要把calibration freeze住。

你的参考时钟质量怎么样?是否满足spur要求。你有试过用rfanalyzer么?可以用rfanalyzer抓一下信号看看。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
mxd
Observer
Observer
539 次查看
注册日期: ‎03-25-2020

请问如果没有信号输入的时候,没有把calibration freeze住会怎么样呢?

我现在无法判断是foreground calibration的问题还是background calibration的问题,但是感觉是foreground calibration的问题,因为我将calibration freeze住之后,在k*Fs/N的地方仍然有很多杂散。

0 项奖励
mxd
Observer
Observer
531 次查看
注册日期: ‎03-25-2020

您好!

我将ADC的采样率设置成了4GSps,使用内部PLL,参考时钟是500MHz,这时候,每次通过API配置ADC之后,就会在k*Fs/N的地方看到很多杂散。但是当我跳过内部PLL,直接供给ADC一个4GHz的采样时钟的时候,直流偏置校准的效果就会好很多,对比如下:

使能内部PLL使能内部PLL不使能内部PLL不使能内部PLL

请问可能是什么原因导致的呢?

0 项奖励
zhendon
Community Manager
Community Manager
445 次查看
注册日期: ‎08-31-2011

hi

你如果外部有信号输入的情况下,频谱上还能看到GTIS杂散么?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
mxd
Observer
Observer
436 次查看
注册日期: ‎03-25-2020

十分感谢您的回复!

在有外部信号(0dB@100MHz)输入的情况下,在频谱上k*Fs/N的地方也是可以看到杂散的,这个图片是8个ADC种的第1路ADC。

微信图片_20210406110336.png

现在困扰我的问题是,采集噪声的时候偶尔会出现问题。时域和频域图如下,橙色的是正常通道采集到的噪声(在k*FS/N处也有杂散),蓝色的就是异常的情况,每8个点会出现一个很大的值。

采集噪声.png

采集噪声频域.png

参考您的建议以及pg269中关于ADC calibration部分的说明,在ADC执行上电流程的时候,是没有信号输入的。我觉得是OCB2校准的问题,因为每次重新进行了上电流程后,ADC的状态就会发生变化。由于我是用的Gen1的RFSoC,所以我无法控制OCB1。

请问可以通过调整OCB2的calibration coefficients来解决这个问题吗?

 

0 项奖励
zhendon
Community Manager
Community Manager
420 次查看
注册日期: ‎08-31-2011

Hi

如果有好有坏的话,你可以尝试读一下calibration的coefficents,然后对比一下好坏情况下的value。

另外你的dither开着么?尝试关掉试试看呢?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
mxd
Observer
Observer
322 次查看
注册日期: ‎03-25-2020

感谢您的回复!

我尝试关掉dither,但仍然会出现失败的情况。

我对比了好坏情况下的calibration的coefficients的value,发现GCB Claibration coefficients会存在差别,有些值原本应该是268240896这种级别,然后会变化成134217728这个级别,差不多变成了原来的1/2;但有时候,尽管GCB的Calibraiton coefficients出现了这种变化,但ADC依然是正常工作的。对应的OCB2的Calibration coefficients有时也会出现符号位相反的现象。我觉得是OCB2和GCB的Calibration coefficients共同变化导致了ADC校准失败。但是并没有找到规律和理论来支撑我的观点。

请问这些Calibration coefficients代表什么含义呢?我如果想要改变这些Calibration coefficients应该怎么做呢?需要使能IP核设置中的AutoCalibration选项吗?

0 项奖励
zhendon
Community Manager
Community Manager
291 次查看
注册日期: ‎08-31-2011

Hi 

Autocalibration 应该是针对之前的zone1和zone2的设定来做自动选择,你在IP核中如果没有选autocal的话,那么选择的是什么设定?

另外有在你的板子上试过rf analyzer么?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
mxd
Observer
Observer
271 次查看
注册日期: ‎03-25-2020

十分感谢您的回复!

我在两块板卡上都测试了RF Analyzer,但是两块板卡表现不一致。

当我尝试重新配置ADC的参考时钟之后(时钟会先关闭,再使能),板卡1出现了校准失败的现象,时域谱和频谱如下,也是8个点出现一个较大的值,但是频谱上再k*Fs/N处并没有杂散,只是噪底抬高了;板卡2暂时没有测出这个现象,但是使用我自己的测试工程仍然会出现校准失败。

image2021-4-6_15-23-21.pngimage2021-4-6_15-23-50.png

板卡一也出现过在k*Fs/N处有较高杂散的现象,频谱如下,但只出现过1次;同样地,板卡2没有出现过这个现象。

杂散.png

我尝试不重新配置ADC模拟端的参考时钟,只是在RF Analyzer中多次Shutdown然后Startup ADC,在板卡1上出现了一些很奇怪的值,如下;但是板卡2上并没有出现。

野值.png

尽管板卡2没有出现上面这些问题,但是使用我自己的工程多次进行RF配置的时候,也出现了校准失败的现象。

我也很惊讶并且好奇为什么板卡1使用RF Analyzer也会出现这些问题,可能是什么原因呢?

0 项奖励
mxd
Observer
Observer
187 次查看
注册日期: ‎03-25-2020

您好,我找到两个板卡在RF Analyzer下表现不一致的原因了,是MTS导致的,只要进行了MTS之后,就有概率出错,会在k*Fs/N的地方出现杂散。

MTS会引起ADC性能的变化吗?

0 项奖励
zhendon
Community Manager
Community Manager
135 次查看
注册日期: ‎08-31-2011

Hi 

MTS 应该不会引起杂散,MTS调整的是fifo和divider。

你如果用rf analyzer并且enable了mts的话,要提供一个pl_sysref的位置约束和时钟,你有做约束么,你的sysref频率是多少?另外有没有尝试过换下其他采样频率,比如4915.2或者3932.16.

adc的rf analyzer的配置能给我看下么,我或许可以在我这边用zcu111上看下,谢谢。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
mxd
Observer
Observer
125 次查看
注册日期: ‎03-25-2020

十分感谢您的回复!

我的example design中,ADC的采样率设置成了4GSPS,各个tile的参考时钟是500MHz,考虑到DAC的采样率被配置成了6GSPS,因此pl_clock设置成了62.5MHz,pl_sysref和analog_sysref都设置成了2.5MHz。配置如下:

ADC部分配置.pngRF Analyzer配置.png时钟部分配置.png

我重新查看了我的example design工程,我根据我的pcb板更改了pl_clock和pl_sysref的位置约束,时序约束是example design的xdc文件中自带的,并没有进行修改。在RF Analyzer上,mts是能够正确完成的。

我尝试将pl_sysref和analog_sysref从2.5MHz修改成7.8125MHz,但结果是一样的。

我没有尝试过改成别的采样频率,我会尝试一下。

我在我自己的应用中去掉MTS之后,没有再出现之前的那些错误了。我也很怀疑目前这个调试结果的正确性,所以我会继续多次测试一下,并且在zcu111上进行对比。

感谢您的回复,等我有进一步的结果之后,会再次跟您反馈。

 

zhendon
Community Manager
Community Manager
111 次查看
注册日期: ‎08-31-2011

Hi,

好的,测试中你还可以观察下终断,是否有异常。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励