
1. 项目概述从DDS的“完美”到现实的“杂波”如果你玩过FPGA或者做过信号源大概率接触过DDS直接数字频率合成器这个技术。它被宣传为一种近乎完美的频率合成方案数字控制、频率分辨率极高、切换速度飞快。很多工程师第一次用DDS芯片或者用FPGA自己写一个DDS的IP核时都会感到兴奋——代码或者配置一下一个干净的正弦波就出来了示波器上看波形也挺漂亮。但当你把频谱分析仪接上把输出频率稍微调高一点或者把分辨率带宽RBW打得更开一些好心情可能就瞬间消失了。你会发现那个理论上应该只有一根谱线的理想频谱旁边冒出了许多你不想要的“小尾巴”和“毛刺”也就是杂散信号。这些杂散轻则让你的系统信噪比恶化重则可能干扰到其他频段导致整个通信链路或者测量系统失效。这就是我们今天要深入聊的核心问题为什么一个理论上如此“数字”、如此“精确”的DDS其输出端必须且必须精心设计一个模拟的低通滤波器这个滤波器绝不是可有可无的“锦上添花”而是保证DDS从“数字玩具”变成“工程利器”的关键一环。无论是你用ADI的AD985x系列芯片还是在Xilinx或Altera的FPGA里用DDS Compiler IP核抑或是自己用Verilog/VHDL写相位累加器只要你最终要通过一个数模转换器DAC输出模拟信号这个低通滤波器就是你绕不过去的坎。这篇文章我会从一个一线硬件工程师的视角掰开揉碎地讲清楚DDS输出为什么会有杂散这些杂散从哪里来以及它们如何决定了你对后端滤波器的性能要求。理解了“为什么”后面我们讨论“怎么设计”滤波器时你才能有的放矢知道每一个参数指标的背后对应着要解决什么问题。2. DDS工作原理与杂散来源深度拆解要理解为什么需要滤波器我们必须先回到DDS的工作原理本身看看在理想模型和实际电路之间到底发生了什么。2.1 DDS核心三件套理想模型的运行逻辑经典的DDS结构如你提供的框图所示主要由三部分组成相位累加器、相位-幅度转换器通常是一个正弦查找表即LUT、以及数模转换器DAC。相位累加器这是一个N位的加法器。每个系统时钟周期它都把频率控制字M累加一次。你可以把它想象成一个指针这个指针在0到2^N-1一个圆周的范围内不停地、均匀地“转圈”。M决定了它每次“走”的步长M越大转一圈的时钟周期数越少输出的频率就越高。输出频率的公式fo (M * fc) / 2^N就是从这里来的。这里的N通常很大比如32位、48位所以即使系统时钟fc很高通过改变M也能获得极高的频率分辨率Δf fc / 2^N。相位-幅度转换器相位累加器输出的高N位比如取高14位作为地址去查询一个预先存储好的正弦波幅度值表ROM。这个ROM表把0到2π的相位映射成了对应的正弦波幅度数字量。这一步完成了从“相位”到“幅度数字量”的转换。数模转换器DAC它将查找表输出的数字幅度代码转换成对应的模拟电压。理想情况下如果DAC的位数足够高且建立时间、毛刺等动态性能完美那么它输出的就应该是一个完美的、阶梯状的正弦波。到这里一切都还很美好。在数字域里我们有一个完美的、离散的相位序列通过一个理想的查找表得到了一个完美的、离散的正弦幅度序列。问题就出在从“数字”到“模拟”的这一步以及我们对这个模拟信号的解读方式。2.2 频谱混叠第一个无法回避的“原罪”这是DDS输出需要滤波器的最根本、最理论性的原因。我们来回想一下奈奎斯特采样定理要无失真地恢复一个模拟信号采样频率必须大于信号最高频率的两倍。在DDS里谁是“采样频率”谁是“被采样的信号”这里有一个非常关键的角色转换很容易让人混淆。DDS的系统时钟fc在这里扮演了采样时钟的角色。而DDS想要生成的目标模拟信号fo在这里是被采样的对象。DDS的工作过程可以等效为用一个频率为fc的采样时钟去对一个频率为fo的理想连续正弦波进行采样然后将采样得到的离散幅度序列通过DAC保持或重建出来。根据采样定理为了避免混叠必须满足fo fc/2。这就是为什么DDS的理论最高输出频率是fc/2。但在工程上由于DAC输出阶梯波的非理想性和后续重建滤波器的难度一般会保守地取fo ≤ 0.4fc。比如你用1GHz的时钟最高安全输出频率大概在400MHz。那么混叠体现在哪里当你设定一个输出频率fo时在频域上不仅会在fo处产生谱线还会在fc ± fo,2fc ± fo,3fc ± fo... 等所有采样时钟的谐波附近产生这些频率的“镜像”。这些镜像就是混叠产物。DAC输出的信号是所有这些频率分量的叠加。我们的目标是通过一个低通滤波器只保留我们想要的fo前提是fo fc/2而把fc-fo, fcfo, 2fc-fo等所有高频的、无用的镜像频率全部滤除掉。实操心得很多新手会忽略这个最基本的混叠要求试图让DDS输出接近甚至超过fc/2的频率结果就是输出信号质量极差频谱上根本分不清主信号和镜像。一个简单的原则把你的目标通带最高频率定在0.4fc以下会给滤波器设计留下充裕的余地。2.3 幅度量化误差DAC的“分辨率之痛”理想的正弦波幅度是无限精密的连续值。但我们的相位-幅度转换器ROM输出给DAC的数字量是有限位宽的比如14位。这就意味着我们用于描述正弦波幅度的“尺子”刻度是有限的。假设DAC是理想的那么一个14位DAC只能输出2^1416384个不同的电压等级。当我们用这16384个离散的台阶去逼近一个连续的正弦波时必然会产生误差。这个误差被称为量化误差。量化误差在时域上表现为阶梯波的不平滑在频域上则表现为引入了额外的噪声和杂散。量化误差的频谱分布与输入信号有关但它不是白噪声而是会形成一些特定的杂散谱线。这些杂散通常分布在整个频带内但其能量会集中在某些频点。DAC的位数越低量化台阶越大这种误差就越严重产生的杂散幅度也越高。你提供的资料中对比4bit和8bit DAC的频谱图就非常直观地展示了这一点4bit DAC的输出频谱几乎被杂散淹没而8bit的则干净许多。这就是为什么高性能DDS芯片或IP核都追求高分辨率的DAC如14位、16位。每增加1位有效位数量化信噪比SNR理论上提升约6dB。高位数DAC直接降低了量化误差的底噪减轻了后端滤波器的压力。注意事项数据手册上DAC的位数如14位并不直接等于有效位数ENOB。ENOB会受到DAC的非线性、噪声等因素的影响而降低。在设计滤波器指标时要参考芯片手册给出的实际SFDR无杂散动态范围和SNR而不是理想的理论位数。2.4 相位截断误差为了省资源付出的代价这是一个在FPGA实现DDS时特别需要关注的问题。相位累加器的位数N通常很大32或48如果要用完整的N位去寻址正弦查找表那么这个ROM将会大得不可思议2^32个地址根本无法实现。因此实际做法是只取相位累加器输出的高P位例如高14位去寻址ROM。这就意味着我们丢弃了低N-P位的相位信息。这个过程叫做相位截断。被截断的那些低位相位信息本质上是相位累加过程中的一种周期性误差。这种误差会导致查找表输出的幅度序列出现一种有规律的、周期性的偏差。在频域上这种周期性误差表现为离散的杂散谱线而不是宽带的噪声。相位截断杂散的频率和幅度可以通过理论计算预测。它们通常出现在输出频率fo的某些分数倍附近。增加寻址ROM的位数P可以显著降低相位截断杂散的幅度但代价是ROM资源呈指数增长。因此在FPGA设计中需要在杂散性能和资源消耗之间做一个权衡。2.5 DAC的非理想特性模拟世界的“骨感现实”即使我们给了DAC一个完美的数字码它也吐不出一个完美的模拟电压。DAC本身会引入一系列杂散非线性误差DNL/INLDAC的每个数字码对应的模拟输出并不是严格等间距的。微分非线性DNL和积分非线性INL会导致输出失真产生谐波杂散特别是2次、3次谐波。时钟馈通与电源噪声DAC内部的开关动作会通过寄生电容耦合到输出端或者扰动电源产生与系统时钟fc及其谐波相关的杂散。毛刺Glitch当DAC的输入数字码发生多位变化时尤其是最高位变化时如从0111跳变到1000由于内部开关导通/关断时间的不匹配会在输出端产生一个短暂的、大幅度的电压尖峰。这个毛刺能量很宽会污染整个频谱。建立时间与压摆率限制DAC输出从一个电压稳定到另一个电压需要时间。如果系统时钟fc太高DAC来不及建立到最终值就会导致幅度误差和失真。这些由DAC本身引入的杂散位置和特性与DAC的架构如电流舵、R-2R、工艺、设计密切相关。它们往往是我们从频谱仪上看到的、除了镜像和量化杂散之外的那些“不可预测”的杂散的主要来源。3. 低通滤波器的核心任务与指标映射明白了杂散从哪里来我们就能清晰地定义后端低通滤波器的任务。它不是一个简单的“让波形变光滑”的部件而是一个频率选择性“门卫”。3.1 核心任务一抑制镜像与混叠频率这是滤波器最首要、最刚性的任务。根据采样定理我们需要保留频率低于fc/2的有用信号fo而坚决抑制掉以fc为周期的所有镜像频率。主要抑制目标fc - fo,fc fo,2fc - fo,2fc fo...滤波器要求滤波器的阻带必须从第一个镜像频率fc - fo开始并提供足够的衰减。通常要求衰减达到60dBc相对于载波60dB甚至更高。这意味着如果你的系统时钟是300MHz输出80MHz那么滤波器必须在220MHz300-80处开始具有很高的抑制能力。3.2 核心任务二滤除高频谐波与DAC毛刺DAC输出的阶梯波在时域上可以看作理想正弦波与一个矩形脉冲序列的卷积。这个矩形脉冲序列的频谱是sinc函数sinx/x形状。sinc函数的零点出现在fc, 2fc, 3fc...处但旁瓣能量仍然存在。此外DAC的毛刺和开关噪声也富含高频分量。主要抑制目标fo的高次谐波2fo, 3fo...以及fc整数倍附近的噪声和毛刺能量。滤波器要求滤波器的截止频率需要精心选择。通常通带应覆盖从DC到最大输出频率fomax如0.4fc。在通带之后衰减应尽快上升以压制谐波和sinc函数的旁瓣。滤波器在阻带例如0.5fc以后的衰减要足够平坦且高。3.3 核心任务三最小化对有用信号的损伤在奋力滤除杂散的同时滤波器绝不能“误伤”我们想要的信号。通带平坦度在DC到fomax的通带内滤波器的幅度响应应该尽可能平坦。起伏过大会导致输出信号在不同频率点的幅度不一致这对于通信或测量应用来说是致命的。通常要求通带起伏小于±0.1dB甚至±0.05dB。群时延波动滤波器对不同频率信号的延迟时间群时延如果不恒定会导致波形相位失真。对于调制信号如QPSK、OFDM这会引起符号间干扰ISI。因此设计时常常要求滤波器具有线性相位或恒定群时延特性。插入损耗滤波器本身会带来信号衰减。这需要通过后级放大器来补偿但会恶化系统的噪声系数。3.4 指标映射从频谱图到滤波器参数让我们结合你提供的频谱图来具体化这些指标。假设系统时钟fc300MHz输出fo80MHz。截止频率Fpass我们希望80MHz信号完全通过且损耗小。可以将通带边缘设为80MHz或略高如85MHz以容纳一定的带宽或容忍设计误差。阻带起始频率Fstop第一个需要强力抑制的镜像是fc - fo 220MHz。因此阻带起始频率必须低于220MHz例如从150MHz或180MHz开始。在150MHz到220MHz之间衰减需要急剧增加。通带纹波Apass要求可能为 0.1dB在DC-85MHz内。阻带衰减Astop在阻带起始频率如150MHz之后至少需要 60dB的衰减以确保220MHz的镜像被压制到足够低。过渡带从85MHzFpass到150MHzFstop之间这65MHz的带宽就是滤波器的过渡带。过渡带越窄滤波器阶数越高设计越复杂。这是滤波器设计中的核心矛盾。常见问题为什么不能直接用截止频率为100MHz的现成滤波器因为这样的滤波器过渡带太宽从100MHz到220MHz衰减可能不够无法有效抑制220MHz的镜像。必须针对你的具体fc和fo定制过渡带陡峭的滤波器。4. 滤波器类型选择与工程权衡面对“通带平、过渡陡、阻带衰减小”的要求我们有哪些选择呢4.1 常见滤波器类型对比滤波器类型优点缺点在DDS输出滤波中的应用场景巴特沃斯通带内幅度响应最平坦相位响应相对较好。过渡带最宽阻带衰减速率慢。适用于对通带平坦度要求极高但对抑制近距离镜像要求不高的场合。例如fo远小于fc/2时。切比雪夫 I 型给定阶数下过渡带最陡峭阻带衰减好。通带内有等波纹起伏。最常用。在可接受一定通带纹波如0.1dB的前提下能以较低的阶数实现陡峭的过渡有效节省元件数量。是DDS滤波的优先选择。切比雪夫 II 型阻带内有等波纹过渡带也较陡。通带和阻带交界处特性不如I型。适用于对阻带衰减有均匀性要求的场合在DDS中不如I型普及。椭圆函数给定阶数下过渡带极其陡峭是理论上最优解。通带和阻带都有波纹相位响应差群时延波动大。当系统时钟fc与输出频率fo非常接近即过渡带极窄时使用。但需谨慎评估其对信号相位失真的影响。贝塞尔群时延最平坦相位线性度极好波形保真度高。过渡带非常宽幅频特性差。几乎不用于DDS镜像抑制。主要用于对脉冲波形保形要求高的场合如视频信号。4.2 工程实践中的选择策略在实际的DDS项目中切比雪夫I型滤波器往往是首选。原因很直接我们需要用尽可能少的电感电容低成本、小体积实现从通带到阻带的快速滚降。牺牲一点点通带内的纹波控制在0.1dB或0.05dB以内换来阶数的显著降低例如从9阶巴特沃斯降到7阶切比雪夫这在工程上是完全划算的。阶数如何确定这需要通过滤波器设计软件如TI的FilterPro Analog Devices的ADIsimFilter或Matlab的fdatool进行综合。输入你的关键指标通带频率 Fpass fomax (e.g., 85MHz)阻带频率 Fstop 第一个镜像频率 - 裕量 (e.g., 180MHz)通带最大衰减 Apass 0.1 dB阻带最小衰减 Astop 60 dB软件会自动计算出所需的最小阶数。你会发现过渡带Fstop - Fpass越窄所需的阶数就越高。如果计算出的阶数过高如9你可能需要重新审视系统设计是否可以通过提高系统时钟fc来拉大过渡带或者是否能够接受更低的阻带衰减4.3 有源 vs. 无源另一个关键抉择无源LC滤波器由电感和电容组成。优点是线性度极好无失真、噪声低、可以处理大功率信号、理论上无带宽上限取决于元件寄生参数。缺点是电感体积大、有直流电阻DCR导致插入损耗、电感值非标准需要定制、在高频下电感的Q值下降影响性能。有源滤波器基于运算放大器和RC网络。优点是无电感、体积小、易于集成、增益可调可补偿插入损耗。缺点是受运放带宽和压摆率限制工作频率通常较低100MHz会引入额外的噪声和非线性失真处理大信号时可能饱和。对于DDS输出滤波如果输出频率在几十MHz以下有源滤波器是一个简洁的选择。但对于上百MHz甚至GHz的输出无源LC滤波器几乎是唯一可行的方案。现代的高频电感如绕线式或薄膜式和陶瓷电容如NP0/C0G材质可以在很高频率下保持良好的性能。5. 设计流程与实战注意事项假设我们要为fc300MHz fo_max120MHz的DDS设计一个输出低通滤波器目标抑制220MHz以上的镜像300-120。5.1 第一步确定刚性指标这是最重要的一步指标定错了后面全白费。通带截止频率Fpass: 120MHz。为了留有余量可设为125MHz。通带最大纹波Apass: 选择0.1dB。这是一个在性能和复杂度间平衡较好的值。阻带起始频率Fstop: 第一个镜像在180MHz300-120。为了确保在180MHz处已有足够衰减将阻带起始点提前设为160MHz。阻带最小衰减Astop: 设定为60dB。这意味着在160MHz及之后无用信号被压制到主信号的1/1000以下。输入/输出阻抗: 必须明确。通常DDS输出和后续电路如放大器、混频器的接口阻抗是50Ω。滤波器应按50Ω阻抗设计。5.2 第二步滤波器综合与仿真使用设计软件这里以概念性描述为例输入以上参数选择切比雪夫I型。软件可能会告诉你需要一个7阶滤波器才能满足从125MHz到160MHz这仅35MHz的过渡带内衰减从0.1dB增加到60dB的要求。软件会给出归一化的元件值对于LC梯形网络通常是串联电感、并联电容交替。然后你需要根据实际阻抗50Ω和截止频率125MHz进行反归一化计算得到真实的电感电容值。计算示例对于巴特沃斯原型仅示意过程假设软件给出7阶切比雪夫滤波器的归一化值g1, g2, ... g7。对于50Ω终端、125MHz截止频率的低通滤波器串联电感 Lk (Z0 * gk) / (2π * Fc) 单位H并联电容 Ck gk / (2π * Fc * Z0) 单位F计算后你可能会得到诸如 L122nH, C22.2pF, L333nH... 这样的值。实操心得计算出来的值不可能是标准值。你需要将计算值靠向最接近的标准元件值。例如算出L23.5nH就选用22nH或27nH的标准电感。然后必须回到仿真软件中用这些标准值替换理想值重新进行频域仿真检查滤波器的S21传输特性是否仍然满足通带和阻带要求。通常需要微调一到两个元件的值例如将某个2.2pF电容换成2pF或3pF的并联组合来补偿标准值带来的偏差。5.3 第三步元件选型与PCB布局的魔鬼细节这是理论走向实践的关键一步也是很多设计失败的地方。电容选型材质至关重要必须使用高频特性好的NP0/C0G材质的陶瓷电容。这类电容的容值随温度、电压变化极小Q值高。绝对禁止使用X7R、Y5V等材质它们的高频损耗大容值不稳定会彻底破坏滤波器性能。封装与自谐振频率选择小封装如0402、0201寄生电感小。注意电容的自谐振频率SRF要远高于你的工作频率。一个10pF的0402电容其SRF可能在1GHz以上对于300MHz系统是合适的。电感选型类型选择优先选用绕线式高频电感或薄膜式电感。它们在高频下的Q值比叠层片式电感高得多。Q值在通带频率如120MHz下电感的Q值应尽可能高50以减小滤波器的插入损耗。额定电流确认电感能通过DDS输出信号的电流而无饱和。PCB布局的黄金法则最短路径滤波器网络应尽可能紧凑元件间的走线要极短以减小寄生电感。地平面滤波器下方必须有完整、连续的接地平面为高频信号提供最短的返回路径。过孔连接电容接地端和电感到地平面的过孔要使用多个过孔并联以减少接地电感。隔离滤波器的输入输出走线应远离避免耦合。必要时可以用地线或地平面进行屏蔽。5.4 第四步测试验证与迭代滤波器做出来后必须用矢量网络分析仪VNA进行测试。测试S21这是最重要的指标看其幅频特性是否与仿真吻合。重点关注通带内0-125MHz是否平坦纹波是否0.1dB阻带内160MHz衰减是否60dB过渡带形状是否符合预期测试S11看输入端的回波损耗确保在通带内匹配良好例如 15dB否则信号会在滤波器输入端反射影响前级DAC工作。系统联调将滤波器接入DDS系统用频谱分析仪观察最终输出。对比加滤波器前后的频谱确认目标杂散特别是fc-fo镜像是否被有效抑制。同时观察有用信号的功率有无明显下降插入损耗。如果测试结果不理想常见的调整方法有微调电容值尤其是并联在电感两端的电容、检查焊接质量、优化接地过孔。有时需要回到仿真根据实测的元件寄生参数如电感的并联电容、电容的串联电感进行更精确的协同仿真然后进行第二轮设计。设计一个高性能的DDS输出低通滤波器是一个将数字理论、模拟电路知识和实战经验紧密结合的过程。它没有唯一的答案而是在系统时钟、输出频率、杂散指标、成本、体积之间反复权衡的艺术。理解了“为什么”需要它你就能在“如何设计”它时抓住主要矛盾做出合理的选择。在下一部分我们将通过一个具体的计算和仿真案例手把手地走完这个设计流程。