从 ADC 输出的 FFT 计算 SFDR

信息处理 fft 频谱 模数
2022-01-29 02:38:39

几个月前,作为暑期实习的一部分,我执行了 ADC 与 FPGA (Zynq-7000) 的接口。目标是从信号发生器获取模拟信号,将其馈送到 ADC 并将数字化输出呈现给 FPGA。FPGA 应该通过我们在 Vivado Suite 上编写的算法对数据执行 FFT。在波形查看器上成功获得幅度谱。

然后我们决定从数据中计算 SNR 和 SFDR 值。我计算 SFDR 的方法是记录第一奈奎斯特区的基频幅度值(不断波动,但波动不大)和下一个最高峰值(最高杂散)的值。这两个值的比率将为我提供 SFDR。

ADC 的输入是 200 kHz 正弦波。为了检查一致性,我们执行了三种不同大小的 FFT,2k-、8k- 和 32k-,并且在每次试验中,模拟信号的强度从 -60 dBm 变化到 0 dBm(步长为 10dBm)。SFDR 的值始终徘徊在 23 dBc 左右。

ADC 数据表中给出的 SFDR 值约为 80 到 90 dBc,但我们最终得到的值远小于该值 (23dBc)。

据我所知,在输入信号的强度和频率方面,计算数据表值的条件与我们的完全不同。

我想从这个平台上的专家那里澄清我的主要担忧是我的程序是否足够正确,或者至少值得赞赏?在我的方法中是否有任何我可能没有注意到的重大缺陷?我相信肯定有。之所以出现这种担忧,是因为每当我想到在简历中提到这个项目时,我都想知道考官是否会嘲笑我错过了一些基本的东西。当时没有学科专家可以指出我是否走在正确的道路上。

1个回答

我倾向于认为该方法确实存在缺陷,因为数据表 SFDR 在数据表中通常指定的测试条件下是可以实现的。

23 dB 很重要,我怀疑您的正弦波并不是真正的正弦波,您看到的是谐波(或混叠谐波)。

以下是一些可能的罪魁祸首,您可能已经排除了其中一些:

您没有指定下一个最高峰值是什么频率,但谐波通常从 SFDR 中排除。(400KHz、600KHz、800KHz等)

您是否在采样前充分过滤了模拟信号?如果没有任何更高的别名将折叠成带。(改变采样率和重新测试,而不是 FFT 大小,会提供线索,如果这种情况发生在如此强的刺激下)。

您是否在模拟域中观察了您的测试信号,看看它是否比您要测量的 SFDR 更干净?如果您没有看到这一点(例如使用频谱分析仪),您的测试信号本身可能有这样的杂散。

同样,您是否确认您的时钟信号比您要测量的 SFDR 更清晰?时钟上的杂散也会转化为输出信号中的杂散。

您是否正确设置了输入信号电平,您的 ADC 接口是否符合供应商的建议?通常,最佳 SFDR 是当输入信号低于满量程 1 到 2 dB 时开始发生削波,否则 ADC 前端的非线性开始降低 SFDR。如果您的输入信号太低,那么您显然无法获得数据表中的 SFDR(通常杂散保持在相同的水平,因此您可以使用上述输入电平最大化 SFDR)。

至于你的简历,鉴于你在这个项目中取得的成就,我认为没有人会嘲笑你,只要你展示你所做的,你认为你从努力中理解的东西,并公开承认你还有很多事情要做学习并表明你正在积极学习和感兴趣(你来这里就是这样!)。这可能是实习后刚进入该领域的人可以拥有的最佳技能之一。我认为这是你必须做的一个伟大的项目,听到更多关于它的信息会给你留下深刻的印象。在你的水平上,如果我是面试你的招聘经理,我会寻找你的兴趣和热情,以及对你的理解和学习意愿/能力的完全诚实。如果你的想法或行为就像你知道一些你并不真正理解的东西,这通常会被视为一个很大的负面因素,并且是转向下一个技术职位候选人的理由。最好立即说你不是专家,你还有很多东西要学等,然后在发言时深入了解你做了什么,学到了什么以及你有多兴奋正在做。(我的 2 美分在栅栏的两边)。