尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ADS中DAC控件详解:从基础参数到发射链路混合信号仿真

ADS中DAC控件详解:从基础参数到发射链路混合信号仿真 做射频和高速数字电路仿真的人十有八九都绕不开ADS里的Data Conversion器件模型。以前我调试一条发射链路数字端给进去的是理想的基带I/Q波形仿真结果跟实测差了十万八千里折腾了一周才发现问题不是出在电路拓扑而是仿真里根本没有把数模转换过程当回事。后来老老实实把DAC控件加进链路里量化噪声、采样保持效应、镜像频带全都体现出来了仿真结果和板子上的测试才对得上。今天就把DAC控件的使用思路和数据配置细节完整说一下。DAC控件数模转换器仿真模型在ADS里承担的任务是把数字域的信号转换成模拟域信号供后续滤波器、放大器、混频器等射频模块进行联合仿真。它适合用来做发射链路验证、信号源建模、混合信号系统评估以及预失真算法开发。这篇内容主要面向已经有ADS基础、想真正把混合信号链路做准的射频工程师也适合正在学习ADS仿真的高年级学生。1. 先搞清楚DAC控件在仿真链路里的角色1.1 数字域和模拟域的“跨界桥”ADS仿真有两种截然不同的信号处理世界数字基带世界和模拟射频世界。数字世界里信号是离散的采样点只有0和1、或者有限位数的二进制量化值而模拟世界里信号是连续的时间波形。以前很多人图省事直接把数字端的I/Q数据接到模拟端结果就是仿真波形“看起来也差不多”但频谱、噪声、失真这些关键指标全都不对。DAC控件就是连接这两个世界的一座桥。它在仿真中完成两件事一是把离散的数字码字映射成对应的模拟电平也就是量化过程二是通过采样保持或插值方式把离散序列变成连续波形供后续模拟模块处理。这两个过程叠加在一起会天然引入量化噪声、采样镜像、零阶保持滚降等效应。如果不用这个控件这些效应会全部丢失仿真出来的EVM、ACPR等指标都会过于乐观。需要强调一点DAC控件不是“理想元件”。它带有一堆真实DAC芯片才有的参数项比如分辨率、线性度、建立时间、输出阻抗等。你把模型设得越接近真实芯片仿真结果就越接近实测。1.2 什么时候必须用DAC控件有人说“我又不设计DAC芯片只是做个发射链路仿真有必要用吗”我的回答是只要你的信号链路里存在数字基带到模拟射频的转换就必须用。最常见的三类场景第一类系统级发射链路仿真。基带DSP输出数字I/Q信号后面接DAC、低通滤波器、混频器、功放你希望看整条链路的EVM、ACPR、星座图。如果不放DAC控件那IP2、IP3、噪声底、镜像频谱这些非线性指标完全没办法评估仿出来纯属自欺欺人。第二类信号源建模。有些场景你不是要设计DAC本身而是需要一个接近真实DAC输出特性的模拟信号源。比如用ADS产生一个带量化噪声的QAM信号作为接收机灵敏度测试的输入这时DAC控件可以帮你把信号的“干净程度”调到和真实发射机一致。第三类混合信号协同验证。比如你在做数字预失真DPD需要评估DAC的非线性和量化噪声对预失真效果的影响这时DAC控件就是仿真链路里不可或缺的一环。1.3 DAC控件与ADC控件如何搭配在混合信号仿真里DAC和ADC经常成对出现。DAC负责把数字信号转成模拟信号ADC则反过来把模拟信号转回数字信号。有经验的工程师会建议你同时掌握这两个控件因为它们之间的参数配置逻辑高度对称。比如你在验证一个数模混合环路基带DSP输出数字信号——DAC转模拟——经过模拟信道——ADC转数字——回到DSP处理。这时DAC的分辨率和ADC的分辨率会共同决定整个链路的动态范围瓶颈。哪个位宽低哪个就成为系统短板仿真结果里看得一清二楚。我通常在搭建这种双向链路时会先把DAC和ADC的参数统一规划好包括采样率、位宽、满摆幅然后再去调中间的模拟信道。这样跑出来的往返链路性能才合理也不容易在找bug时分不清是哪个环节引入的问题。2. 参数设置真正决定仿真结果的是这几个2.1 分辨率Bits量化噪声的根源DAC控件里最基础的参数是分辨率Bits也就是量化位数。每一位增加量化步长就减半量化噪声功率谱密度按6.02dB位宽增加的方式降低。这个大家比较熟悉但真正容易忽略的是量化噪声的分布形式。ADS的DAC模型在默认情况下量化噪声近似均匀分布在从直流到奈奎斯特频带内。如果你的仿真带宽比奈奎斯特带宽窄很多那么落入信号带宽内的量化噪声功率其实很小整体信噪比会比直觉算出来的更高。这就是过采样带来的处理增益。实操时怎么设这个Bits我建议不要为了追求“完美”而一味调高到16位甚至20位。因为位宽越高仿真收敛难度越大计算量也越大。一般做系统链路验证10到12位已经足够反映量化噪声的影响做高性能宽带发射机评估可以考虑14位除非你在专门量化DAC芯片本身否则不建议超过16位。2.2 采样率时域台阶和频域混叠都跟它有关DAC控件的采样率直接决定了两件事一是输出波形的台阶密度二是镜像频谱的位置。前者影响波形平滑度后者影响频谱规划。从时域看数字信号每个采样点经过DAC零阶保持后输出会呈现“台阶”形状台阶宽度就是采样周期的长度。采样率越高台阶越密经过低通滤波后还原的波形就越平滑。从频域看DAC输出包含基带信号和以采样率整数倍为中心的镜像频谱如果后面的低通滤波器不能有效抑制这些镜像频谱就会超标。我见过的初级工程师经常犯一个错误把DAC采样率设得很高觉得这样波形更漂亮仿真更“准确”。其实不然采样率越高仿真瞬态分析的时间步长就要越细仿真时间成倍增加。更合理的做法是结合你的实际芯片选型和系统带宽需求来定采样率。例如一个20MHz带宽的LTE信号用80MHz到100MHz左右的DAC采样率通常足够了没必要设成500MHz。2.3 输出带宽与插值模式DAC控件里还有输出带宽Output Bandwidth的设置项它用来模拟DAC的模拟输出级带宽。把这个值设成接近真实芯片的-3dB带宽可以准确反映出高频信号的幅度滚降和相位偏移。如果说分辨率影响底噪采样率影响镜像位置那输出带宽影响的就是信号本身的保真度。所以如果你的仿真频率比较高信号带宽又比较宽一定要给DAC留足够的输出带宽余量否则你会看到信号幅度和EVM异常劣化但其实问题出在DAC的输出带宽上。关于插值模式ADS的DAC控件常见支持零阶保持ZOH和一阶保持FOH等模式。零阶保持是默认模式也是最接近实际DAC工作模式的每个采样值在采样周期内保持恒定。一阶保持则在相邻采样点之间做线性插值对应部分重构型DAC或带模拟内插滤波器的DAC。默认用ZOH就行除非你清楚自己在模拟哪一种具体的DAC架构。2.4 非理想特性建模INL、DNL与Slew Rate如果只看理想模型那DAC控件的价值就少了一大半。真正的价值在于它支持非理想特性的建模这些才是决定系统性能上限的关键。INL积分非线性和DNL微分非线性这两个参数往通俗里说就是DAC实际输出电平偏离理想电平的程度。INL描述的是整体偏移常见表现为输出波形的谐波失真DNL描述的是相邻码字之间步进的误差常见表现为低电平信号上的杂散噪声。在ADS里可以指定INL/DNL曲线或直接给出统计值模型内部会据此产生对应的失真分量。Slew Rate压摆率描述的是DAC输出端每秒钟能变化的电压上限。如果信号变化速度超过压摆率波形就会发生“斜率受限”表现为高频大信号严重失真。在做宽带信号仿真时尤其要注意一个看似不高的压摆率限制可能会让系统ACPR完全偏离预期。所以我在做DAC建模时一般会从芯片手册里找到这些参数然后逐一填进控件里。有时候芯片手册给得不够全就按典型值或者通过测量结果反推。这样建模出来之后仿真结果和实测通常能在几个dB范围内对上。3. 上手实例搭建一条完整的数字发射链路3.1 工程准备与控件调用位置这里给一个可以直接照抄的实例用DAC控件搭建一个数字发射链路输入一个QPSK基带信号观察DAC输出时域波形和频谱然后接一个低通滤波器对比滤波前后的频谱改善情况。打开ADS新建一个Workspace和Schematic。在元件面板里找到Data Conversion目录DAC控件就在这里ADS里通常叫DAC或者类似命名。不同版本位置略有差异新版本里你也可以直接在元件搜索栏里敲“DAC”快速定位。控件放置好后可以看到它有数字输入端通常是总线形式和模拟输出端。数字输入端需要连接基带数字信号源可以从Digital Signal Processing库或者Sources里找。先用一个产生脉冲数据或0-1序列的信号源做简单验证信号经过一个Mapper映射成IQ数据然后直接送给DAC。3.2 配置信号源与DAC控件下面这组参数是我实际在工程里常用的一组初始值你可以在此基础上调整符号速率1MHzQPSK映射每符号2比特DAC采样率4MHz4倍过采样DAC分辨率12bitDAC输出范围±1V输出带宽50MHz插值模式ZOH在原理图中基带信号源不一定直接输出码字到DAC。为了保证输入格式正确可以用一个采样器或者比特映射器把符号序列“踩”到DAC的时钟节拍上。这样每个DAC采样点都对应一个明确的数字码字后续仿真更稳定。DAC控件的设置界面里除了上面那几项注意看输入信号格式。ADS里通常会有二进制码字Binary Code或二进制补码Twos Complement两个选项这取决于你的基带处理器用的是什么格式。这个选项一旦设错输出波形会完全对不上很容易造成困惑。默认补码格式是实际芯片用得最多的也方便和常用FPGA/DAC接口对齐。3.3 仿真设置与时域频域观察仿真控制器建议选择Transient瞬态。因为DAC本身是强非线性切换器件频域仿真器很难正确处理这种时变特性。瞬态仿真步长要足够细一般至少要达到DAC采样周期的1/10到1/20这样输出的台阶波形才不会被仿真器额外平滑掉。在DAC输出端接一个时域电压探针直接跑瞬态。跑完后打开波形显示窗口你会看到QPSK基带信号经过DAC后变成了带台阶的阶梯波形。然后加一个FFT测量控件或者直接在显示窗口里对波形做FFT你会看到信号频谱中除了主瓣之外还有以4MHz和8MHz为中心的镜像频谱这是DAC零阶保持带来的典型特征也是之后设计重构滤波器的主要依据。再往后从DAC输出端接一个截止频率1.5MHz左右的低通滤波器用集总LC或微带实现都可滤波后再看频谱。理想情况下镜像频谱被压下去剩下干净的基带信号。这个对比过程非常直观能帮你把DAC和滤波器之间的设计关系理解透彻。3.4 关键测量指标怎么看仿真完成后除了看波形形状和频谱形状还要学会量化几个关键指标。第一个是量化噪声底。在信号带宽内取FFT的底噪均值和信号功率做差得到的就是带内SNR。把这个值和理论计算值做对比可以验证模型是否工作正常。第二个是镜像抑制比。看DAC输出频谱里基带主瓣和第一镜像之间的功率差单位是dBc。这个值决定了后续重构滤波器的设计难度。比如一个镜像只比主信号低20dB那你后面的滤波器就必须在对应频率上提供至少20dB以上的抑制。第三个是SFDR无杂散动态范围。由于DAC的INL/DNL影响输出频谱里会出现杂散分量找到最大的杂散分量和载波的功率差就是SFDR。这个指标对信号链路线性度评估非常关键建议每次都记录一下。这里给一个简单的参数检查表检查项目预期现象异常判断参考DAC时域波形阶梯状台阶宽度等于采样周期如果波形过度平滑检查仿真步长是否太粗输出频谱基带主瓣采样镜像只有主瓣没有镜像说明DAC模型退化为理想模型带内底噪在理论量化噪声底附近底噪远高于理论值检查分辨率设置和信号格式杂散分量主要由INL/DNL产生位置固定杂散随输入电平变化剧烈检查信号是否过载4. 常见问题与排查技巧实录4.1 波形台阶消失输出过于平滑如果你发现DAC输出波形完全看不到台阶看起来跟理想模拟信号一样那就要检查两件事。第一仿真瞬态步长设置是否过粗导致仿真器本身来不及解析DAC的切换过程第二DAC的输出滤波器设置输出带宽是否过低把台阶都抹平了。解决方法是把最大时间步长改小比如从采样周期的1/10逐步降到1/50再看波形变化。频谱里镜像是否出现是验证模型是否生效的最快办法只要频谱里有采样镜像说明DAC的采样保持特性在工作。4.2 仿真速度慢到无法接受DAC控件加入后仿真时间明显变长是很常见的事情。因为瞬态仿真为了捕捉DAC切换边沿时间步长被迫压到很小整条仿真时长又被符号数拉长两者相乘就是巨大的计算量。我一般会给仿真时长做一个激进截断不是跑完所有符号而是只跑足够覆盖FFT分辨率需求的符号数然后通过提高FFT窗口数来补偿频谱平滑度。另外可以把不必要的理想模块参数从高精度模式切到快速模式减少仿真器内部迭代次数。最后检查一下有没有多余的高频节点比如一个10GHz的滤波器跟在1MHz符号速率的DAC后面纯属自己给自己加计算负担。4.3 输出频谱出现“砸”在信号带内的杂散有时候DAC输出带内会有一些看起来毫无规律的尖峰。多数情况下这不是仿真器bug而是你的数字输入序列和DAC采样率之间的谐波关系造成的。比如输入的符号速率和DAC采样率不是整数倍关系时会产生非谐波相关的杂散。解决思路是优先保证符号速率和采样率之间呈整数倍关系。如果实际工程中确实存在非整数倍率的场景那就需要检查数字源和DAC之间的时钟同源关系在模型里把一个共同的参考时钟引进去让所有模块同步。4.4 排查速查表结合我自己的项目经历整理了一张比较实用的排查表现象优先检查参数推荐调整方向输出波形无台阶仿真最大步长/输出带宽减小步长调高输出带宽频谱无镜像插值模式/采样率设置确认ZOH模式检查采样率底噪异常高输入数据格式/量化位数确认补码格式提高位宽杂散分立峰采样率与符号率比例改成整数倍关系波形上下削顶输出幅度/信号满摆幅降低输入幅度或调高输出范围仿真不收敛压摆率/输出带宽降低压摆率要求放宽带宽限制4.5 一个容易忽略的小坑输入数据格式这个坑我印象太深了必须单独拎出来说。ADS的DAC控件对输入数字信号的格式非常敏感如果你基带信号源输出的是“0到1”的二进制码而DAC配置里选的是二进制补码输出的模拟波形会完全错乱可能整体偏置、可能出现莫名其妙的毛刺还不好定位。建议在给DAC送数据之前先用一个显示探针看数字总线上的码字值范围。正常补码输入应该是正负对称的比如12bit补码范围在-2048到2047之间。如果看到0到4095之类的范围那很可能就是格式不匹配。改一下DAC输入端口的格式选项或者加一个电路模块做格式转换波形马上就正常了。5. 怎么拿到最优仿真效率建模经验复盘我自己的习惯是在工程项目启动前先花半小时把DAC模型和仿真设置搭建清楚后面所有高频电路调试就不用再回头改模型了。这个前期投入非常值得因为链路仿真里的很多问题症状其实是在DAC模型不合理的基础上叠加出来的。DAC模型建对了后面滤波器、放大器、混频器的调试才有意义。对于刚上手的同事我通常建议先用默认参数把链路跑通再逐个往DAC模型里加非理想因素。先加量化噪声看底噪变化再加INL/DNL看杂散变化最后加压摆率看大信号失真。这样做的好处是每一步引入的效应都是可预期的你可以把仿真结果和理论公式逐一对照彻底搞清楚DAC的每个参数到底在什么时候起作用。这套方法我用了很长时间不仅帮自己快速定位混合信号链路的问题也带过不少新同事入门。DAC控件在ADS里看起来只是个不起眼的模型但它是连接数字基带和模拟射频的桥头堡用好了你的系统仿真才算真正往真实世界靠近了一步。
返回列表