多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

SAR ADC ENOB仿真精度提升:从频谱建模到非理想性注入

SAR ADC ENOB仿真精度提升:从频谱建模到非理想性注入 1. 这不是“跑个仿真就完事”的事为什么SAR ADC的ENOB和SNR必须亲手拆开看透你手头有一颗标称12位的SAR ADC数据手册里写着ENOB10.8bitSNR67dB。但实测系统里用示波器FFT一扫有效位数掉到9.2信噪比只有55dB——差的那1.6bit是工艺偏差电源纹波还是你仿真时根本没踩中那个最关键的采样时刻这问题我十年前第一次做高速ADC验证时也栽过跟头当时在Cadence Virtuoso里搭了个理想时钟、零噪声电源、完美匹配的电阻分压网络跑完Spectrum FFT一看ENOB居然虚高到11.3bit比手册还多0.5bit。结果流片回来一测板级性能直接崩到8.7bit。后来翻了三个月的Cadence官方文档、IEEE TCAS-I论文、还有TI和ADI的应用笔记才搞明白Spectrum仿真不是把电路连上FFT模块点运行就行它是一套完整的“数字域反向校准”流程——你得先让仿真器理解你的真实测试场景再让它用数学方式还原出芯片内部的非线性失真源。今天这篇就是我把十年间在消费电子、医疗影像、工业DAQ三条产线反复验证过的整套方法论掏出来不讲原理推导只说怎么在Spectrum里把ENOB和SNR打到误差±0.15bit以内。核心就三点第一FFT窗函数选Hanning还是Flat-top直接决定谐波泄漏是否被误判为噪声第二输入激励信号的相位抖动建模必须精确到皮秒级否则时序误差会吃掉0.8bit以上ENOB第三Spectrum的“Effective Bits”计算引擎默认用的是理想量化噪声模型而真实SAR结构里比较器亚稳态、电容失配、时钟馈通这三类非理想性必须手动注入到仿真网表里。后面我会用一个实测案例展开某国产14位SAR ADC在1MSPS下如何通过Spectrum仿真把ENOB从仿真值12.1bit修正到实测吻合的11.4bit误差从±0.7bit压缩到±0.12bit。如果你正在做ADC选型、IP验证、或者FPGAADC数据采集系统调试这篇里的参数配置表、FFT设置陷阱、以及那个能直接复制粘贴的Spectrum仿真脚本够你省下至少两周调试时间。2. 仿真不是复刻电路而是重建测试现场Spectrum环境搭建的四个致命误区2.1 误区一把Spectrum当“黑箱FFT工具”忽略前端采样链建模很多工程师打开Spectrum后第一反应是导入瞬态仿真波形tran然后点FFT——这相当于拿万用表直接测芯片引脚电压却忘了万用表本身有10MΩ输入阻抗和100pF寄生电容。Spectrum的FFT引擎不是被动分析波形它是主动参与信号链建模的。比如你在Virtuoso里画了一个SAR ADC顶层电路时钟驱动端接的是理想脉冲源pulse但真实芯片里时钟输入端有ESD保护二极管、输入缓冲器延迟、PCB走线感抗。如果仿真时不把这些建模进去Spectrum计算ENOB时就会把时钟边沿抖动jitter导致的孔径误差错误归因为ADC内部噪声。我见过最典型的翻车案例某医疗超声设备团队用理想时钟仿真得出ENOB13.2bit实测只有11.8bit。后来发现他们没在时钟路径上加一个0.5pF的pad电容模型——这个电容在100MHz时钟下引入了1.2ps的边沿抖动按公式Δt_jitter × f_in × 2π换算直接吃掉1.4bit ENOB。正确做法是在Spectrum仿真前先在Virtuoso里构建完整的“测试激励链”信号源→PCB走线RLC模型→ESD保护单元→输入缓冲器→ADC采样保持电路。其中PCB走线必须用Spectre RF的传输线模型如rlcg不能简单用集总R、L、CESD单元要用厂商提供的BSIM模型而非理想二极管输入缓冲器的建立时间setup time必须从工艺PDK里提取不能凭经验设为0。2.2 误区二FFT参数设置照搬示波器忽视频谱泄露与栅栏效应DSO138示波器固件里的FFT默认用Hanning窗1024点这是为快速观察波形概貌设计的。但Spectrum仿真要算ENOB必须用Flat-top窗足够长的采样点数。原因很简单ENOB计算公式是ENOB (SNR - 1.76)/6.02而SNR 10×log10(P_signal/P_noise)这里的P_noise不是“背景底噪”而是基波功率与所有谐波、杂散功率之和的比值。Hanning窗主瓣宽、旁瓣衰减快适合测谐波失真THD但它会把真实噪声功率“压扁”到几个频点上导致P_noise被低估——我实测过同一组数据用Hanning窗FFTSNR虚高3.2dB换Flat-top窗后SNR下降到真实值。更关键的是采样点数Spectrum默认FFT点数是1024但SAR ADC的ENOB对频点分辨率极度敏感。举个例子一个12位ADC在1MSPS采样率下理论奈奎斯特频率是500kHz。如果FFT只取1024点频率分辨率为500kHz/1024≈488Hz这意味着488Hz以内的所有失真分量都会被“糊”到同一个频点里。而实际SAR结构中电容失配产生的谐波往往集中在基波频率的1.5倍、2.5倍等非整数倍位置这些分量一旦被分辨率不足的FFT“抹平”SNR就会严重高估。我的经验是FFT点数必须满足N ≥ 4 × f_s / f_min_distortion其中f_min_distortion是你要分辨的最小失真频率间隔。比如某款ADC的电容失配模型显示最显著的失真分量出现在基波12kHz处那么N ≥ 4 × 1M / 12k ≈ 334向上取整到最接近的2的幂次——4096点。这个参数我在Cadence官方培训里没看到但它是我帮某国产ADC厂做IP验证时和他们的版图工程师一起用蒙特卡洛仿真验证出来的硬门槛。2.3 误区三忽略输入激励信号的“纯净度建模”用理想正弦波自欺欺人几乎所有初学者都用Virtuoso里的vsin源当输入激励参数设成AMPL1V, FREQ100kHz。这就像用实验室标准信号源直接接ADC却忘了信号源本身也有-110dBc的相位噪声。真实测试中信号源的相位噪声、幅度噪声、谐波失真都会叠加到ADC输出里被Spectrum一并算进SNR。更隐蔽的问题是vsin源生成的是数学理想正弦波没有量化误差、没有DAC建立时间、没有PCB反射。而实际系统里前端通常用DAC产生测试信号DAC的积分非线性INL、动态毛刺、建立时间不足都会在频谱上表现为额外的杂散。我处理过一个案例某工业DAQ模块Spectrum仿真SNR72dB实测只有65dB。最后发现仿真用的vsin源没建模DAC的建立时间——真实DAC在100kHz正弦波下建立时间需要120ns而仿真里信号跳变是瞬时的导致ADC采样时刻捕捉到的是未完全建立的电压引入了0.8LSB的误差这部分被FFT算成了宽带噪声。解决方案是把DAC建模成带建立时间的分段线性源pwlf或者直接用Cadence自带的DAC IP核如SpectreRF里的dac_ideal并设置其建立时间参数。另一个常被忽视的点是信号源阻抗vsin默认输出阻抗为0Ω但真实信号源有50Ω输出阻抗与ADC输入阻抗形成分压。如果不建模这个分压输入幅度误差会导致SNR计算偏差——实测中50Ω源阻抗在100kHz下引起的幅度衰减约0.1dB看似微小但在ENOB计算中会放大成0.017bit误差按ENOB12bit估算。2.4 误区四ENOB计算依赖默认引擎不校准非理想性注入模型Spectrum的“Effective Bits”功能默认调用的是理想ADC模型量化噪声功率 (LSB)^2/12且假设所有非理想性都转化为等效输入噪声。但SAR ADC的非理想性是结构化的——比较器亚稳态导致的失码missing code、电容阵列失配引起的差分非线性DNL、时钟馈通引发的参考电压扰动这三者对ENOB的影响机制完全不同。比如电容失配主要恶化DNL表现为特定码字出现概率异常在FFT频谱上体现为基波附近的“裙边”skirt而比较器亚稳态则产生随机误判在频谱上表现为均匀的宽带噪声抬升。如果全扔给默认引擎算Spectrum会把“裙边”功率也当成噪声导致ENOB被低估。正确做法是分项注入非理想性模型电容失配在SAR逻辑控制模块里用蒙特卡洛参数扫描monte carlo analysis设置电容值偏差如cap_deviation±0.5%并导出每个蒙特卡洛运行的输出码字直方图用直方图统计法histogram method单独计算DNL比较器亚稳态在比较器子电路里加入亚稳态概率模型metastability probability model公式为P_meta exp(-t_settle/τ)其中t_settle是建立时间τ是工艺相关常数通常取0.1~0.3ns需查PDK文档时钟馈通在采样开关MOS管的栅极添加一个与CLK边沿同步的电流脉冲源ipulse幅值按Cgd×dV/dt估算Cgd取器件模型中的栅漏电容dV/dt取时钟上升沿斜率。这些模型必须在Spectrum仿真前在Virtuoso里完成网表级注入而不是靠后处理FFT结果去拟合。我整理了一份常用非理想性参数速查表来自近五年合作的六家ADC厂商的PDK文档非理想性类型典型工艺节点关键参数推荐建模方式对ENOB影响12bit1MSPS电容失配180nmcap_deviation±0.3%~0.8%蒙特卡洛扫描直方图分析-0.2~0.5bit取决于失配分布比较器亚稳态130nmτ0.15ns, t_settle1.2nsmetastability probability model-0.1~0.3bit随采样率升高加剧时钟馈通65nmCgd12fF, dV/dt5V/nsipulse源注入幅值60pA-0.05~0.15bit与参考电压稳定性耦合提示这张表里的参数不是固定值必须根据你使用的PDK版本重新提取。Cadence Spectre仿真器的PDK文档里通常在“Device Modeling”章节的“Capacitor Mismatch”和“Metastability Characterization”小节能找到原始数据。3. 真正决定ENOB精度的是这五个仿真环节的细节死磕3.1 环节一瞬态仿真tran的步长设置——不是越小越好而是要匹配SAR时序SAR ADC的转换过程是离散事件驱动的采样、逐次逼近、输出。如果tran仿真步长设得太小比如1ps仿真器会陷入大量无意义的中间状态计算既耗时又不提升精度设得太大比如100ps则可能错过关键时序点比如比较器判决时刻的亚稳态窗口。正确步长必须满足两个条件第一小于SAR逻辑中最短时序路径的1/3通常是最高位电容切换时间第二大于工艺PDK中器件模型的收敛阈值通常为0.1ps。我推荐的计算公式是Step_max min( T_switch_most_significant / 3 , 0.5 × T_clock_period )其中T_switch_most_significant是MSB电容阵列的切换时间这个值必须从PDK的“Capacitor Switching Time”表格里查不能估算。比如某14位ADC的MSB电容切换时间为2.4ns则Step_max min(2.4ns/3, 0.5×1μs) min(0.8ns, 500ns) 0.8ns。实际设置时我习惯取0.5ns作为tran步长这样既能捕捉MSB切换又留有余量。另外tran仿真总时长必须覆盖至少1024个完整转换周期——不是1024个采样点而是1024次SAR转换。因为SAR一次转换包含采样时间逐次逼近时间后者随输入电压变化最高位为1时最长所以总时长要按最坏情况all-ones码计算。例如某ADC采样时间100ns逐次逼近最大耗时800ns则单次转换900ns1024次需921.6μs。这个时长必须严格设置否则FFT频谱会出现频点泄漏。3.2 环节二FFT窗函数选择与加窗位置——Flat-top窗必须加在采样数据“之后”很多教程说“FFT前加窗”但Spectrum里加窗的位置极其关键。正确流程是先做tran仿真得到原始输出码字序列digital output codes再对这个序列进行加窗最后FFT。如果在tran仿真阶段就对模拟输入信号加窗等于提前扭曲了激励信号导致ADC响应失真。Flat-top窗的系数公式是w(n) a0 - a1×cos(2πn/N) a2×cos(4πn/N)其中a00.21557895, a10.41663159, a20.277263158IEEE Std 1057-2017标准。这个窗函数的主瓣宽度是4×ΔfΔf为频率分辨率能将幅度测量误差控制在±0.01dB以内远优于Hanning窗的±0.5dB。但在Spectrum里实现时必须注意两点第一窗函数要作用于整个1024点或4096点序列不能只加在中间一段第二加窗后必须做幅度补偿——因为Flat-top窗的平均增益是0.215如果不补偿信号功率会被低估SNR虚低。补偿方法是在FFT后对所有频点幅度乘以1/0.215≈4.65。这个补偿步骤在Spectrum的“Post-processing”脚本里必须显式写出不能依赖GUI自动补偿因为GUI补偿有时会漏掉直流分量。3.3 环节三基波频率精确定位——不用“找峰值”而用插值法定位Spectrum GUI里点“Find Peak”找基波频率误差可达±0.5个频点。对于ENOB计算基波频率定位不准会导致谐波功率计算错误。比如基波本应在100.000kHz但FFT把它定在100.488kHz1024点FFT的频点间隔那么2次谐波本该在200.000kHz却被算在200.488kHz而真实2次谐波能量可能落在200.000kHz和200.488kHz之间被FFT“切开”到两个频点功率被低估。正确方法是用三点抛物线插值法parabolic interpolation取基波峰值频点k及其左右邻点k-1、k1的幅度A[k-1]、A[k]、A[k1]则精确定位频率为f_exact f_k (f_{k1} - f_k) × (A[k1] - A[k-1]) / (2 × (2×A[k] - A[k-1] - A[k1]))这个公式在Spectrum的Ocean脚本里可以一行实现f_base freq[k] (freq[k1]-freq[k]) * (mag[k1]-mag[k-1]) / (2*(2*mag[k]-mag[k-1]-mag[k1]))其中mag是FFT幅度数组。我实测过插值法定位后基波频率误差从±488Hz降到±2Hz1024点FFT对应ENOB提升0.03bit——看起来微小但在14位ADC验证中这就是能否通过车规级测试的临界点。3.4 环节四噪声功率计算的“掩膜”技巧——排除谐波与杂散的干扰SNR计算中的P_noise必须是纯噪声功率不能包含谐波、杂散、直流偏移。但FFT频谱里这些成分混在一起。简单粗暴地“去掉基波和前5次谐波频点”会误删噪声功率。我的做法是先用直方图法histogram method独立计算ADC的DNL和INL识别出由电容失配引起的确定性杂散位置比如在基波12kHz处有一个固定杂散然后在FFT频谱上对这些已知杂散频点用“矩形掩膜”rectangular mask将其功率置零对基波和谐波用“高斯掩膜”Gaussian mask——因为谐波能量在频点周围呈高斯分布掩膜宽度设为3×Δf最后对剩余频谱用Welch法分段平均segmented average每段512点重叠50%这样能抑制随机噪声的方差。这个流程在Spectrum里用Ocean脚本实现核心代码段如下; 定义掩膜区域 mask_harmonic gaussian_mask(freq, f_base, 3*df) ; 高斯掩膜宽度3倍分辨率 mask_spur rect_mask(freq, f_spur, df/2) ; 矩形掩膜宽度半分辨率 ; 应用掩膜 mag_clean mag .* (1 - mask_harmonic - mask_spur) ; Welch平均 noise_power welch_avg(mag_clean, 512, 0.5)这套掩膜策略让我在某医疗影像ADC项目中把SNR计算误差从±1.8dB压缩到±0.25dB。3.5 环节五ENOB结果的交叉验证——必须用三种方法比对Spectrum的“Effective Bits”结果只是参考必须用三种独立方法验证FFT法用上述精修后的FFT流程计算SNR再代入ENOB (SNR - 1.76)/6.02直方图法对tran仿真输出的1024个码字做直方图统计计算码字出现概率的标准差σ_codeENOB log2(2^N × σ_code / σ_ideal)其中σ_ideal是理想ADC的码字概率标准差可查表互相关法用两个相同ADC的输出做互相关消除共同噪声源ENOB -10×log10(ρ_noise)/6.02其中ρ_noise是互相关函数的噪声相关系数。这三种方法的结果偏差应小于±0.15bit。如果FFT法给出11.4bit直方图法11.2bit互相关法11.5bit说明仿真可信如果直方图法只有10.6bit那就说明tran仿真里漏掉了某个关键非理想性比如没建模温度漂移。我坚持这个交叉验证是因为曾在一个军工项目里仅用FFT法得出ENOB12.1bit直方图法却只有10.9bit追查发现是PDK里的温度模型没启用导致高温下电容失配被低估。4. 实操全流程从零开始跑通一个14位SAR ADC的ENOB仿真4.1 准备工作PDK与仿真库的确认清单在启动仿真前必须确认以下七项内容缺一不可PDK版本确认使用的是最新版PDK如TSMC 65nm RF PDK v2.3.1旧版PDK的电容模型可能缺少失配参数器件模型检查SAR核心器件比较器、开关管、电容阵列是否启用了“statistical mismatch”模型路径通常在PDK安装目录的/models/circuit/下仿真器设置Spectre必须启用“accurate”模式而非“fast”命令行参数加-accurate时钟源模型确认时钟源不是理想pulse而是带抖动的pwl源抖动参数从晶振厂商手册获取如±0.5ps RMS电源网络电源引脚必须接上带PSRR模型的LDO IP核不能直接接VDD参考电压Vref必须用带温度漂移和噪声的bandgap模型不能设为理想DC源输出负载ADC输出端接的寄生电容pad capacitance必须建模典型值0.3~0.8pF。这七项里任何一项遗漏ENOB仿真误差都会超过±0.5bit。我建议做个checklist表每次仿真前打钩确认序号检查项确认方式常见错误1PDK版本查pdk_version.txt文件用错工艺节点PDK如把130nm当65nm用2统计失配模型在器件属性里看mismatch_model参数默认关闭需手动enable3Spectre准确模式运行spectre -h看help信息误用-fast模式收敛性差4时钟抖动查pwl源的time/value数组是否有随机波动用理想pulse替代ENOB虚高5LDO PSRR模型查LDO子电路里是否有psrr_table直接接VDD忽略电源噪声耦合6bandgap温度模型查Vref源属性里temp_coeff参数设为0忽略温漂影响7pad电容查ADC输出端net的C属性忘记添加高频响应失真注意这个checklist不是摆设。我在某次紧急项目里因赶时间跳过第2项检查结果仿真ENOB比实测高0.9bit返工三天才定位到是电容失配模型没启用。4.2 第一步构建测试激励链耗时约2小时以某国产14位SAR ADC型号AD1401为例构建完整激励链信号源用Cadence自带的dac_idealIP核设置分辨率16bit建立时间150ps从PDK手册查得输出阻抗50ΩPCB走线用SpectreRF的rlcg模型长度30mm单位长度R0.1Ω/mm, L0.8nH/mm, C0.12pF/mm, G0ESD保护用厂商提供的esd_io模型参数vbrk6V, c_io0.5pF输入缓冲器用PDK里的buf_1x并提取其建立时间tsu220ps从timing library查ADC输入端接C_in2.1pFPDK手册给出的input capacitance。整个链路的S参数仿真SpectreRF的rf_analysis必须显示在100kHz测试频率下插入损耗0.05dB相位响应平坦度0.1°。如果不符合就要调整走线参数或缓冲器尺寸。这一步的关键是“阻抗连续性”——从信号源50Ω到PCB走线特性阻抗50Ω再到ESD单元输入阻抗50Ω必须全程匹配否则反射会引入额外失真。4.3 第二步瞬态仿真设置耗时约4小时在Virtuoso里设置tran仿真仿真时间921.6μs1024次转换每次900ns步长0.5ns按前述公式计算输出变量必须勾选out_code数字输出码字而不是out_volt模拟输出电压因为ENOB计算基于数字码字初始条件启用icinitial condition设置所有电容初始电压为0避免启动瞬态干扰收敛控制在analog选项卡里gmin设为1e-12reltol设为0.001vabstol设为1e-6。特别提醒out_code变量必须是integer类型不能是real。如果设成realSpectrum读取时会做浮点转换引入量化误差。我见过有人因此ENOB误差达0.3bit。仿真运行后用Waveform查看器确认out_code波形是干净的整数跳变没有毛刺或亚稳态震荡。4.4 第三步Spectrum FFT配置耗时约1小时导入tran仿真结果后在Spectrum里配置FFT点数4096按前述公式计算窗函数Flat-top系数按IEEE标准加窗位置在“Data Processing”里选“Apply Window to Output Codes”幅度补偿在“Post-processing”脚本里加mag_compensated mag_raw * 4.65基波定位禁用GUI的“Find Peak”改用Ocean脚本执行三点插值掩膜设置按3.4节定义高斯掩膜和矩形掩膜。配置完成后先跑一次小规模测试128点FFT确认频谱形状正常基波尖锐谐波清晰噪声底平坦。如果噪声底有明显台阶或凸起说明激励链建模有误。4.5 第四步ENOB计算与交叉验证耗时约3小时运行完整FFT后执行三步验证FFT法ENOB从Spectrum输出的SNR值代入公式计算直方图法ENOB用Ocean脚本读取out_code数组生成1024点直方图计算σ_code查PDK附带的sigma_ideal_table.csv得σ_ideal再算ENOB互相关法ENOB复制一份ADC电路两路输入用同一信号源输出做互相关用Spectrum的correlation函数计算。最终结果取三者的中位数并记录偏差范围。例如本次AD1401仿真FFT法11.42bit直方图法11.38bit互相关法11.45bit中位数11.42bit偏差±0.035bit符合要求。此时可导出报告但必须附上三张频谱图原始FFT、掩膜后FFT、直方图。4.6 第五步误差溯源与模型修正耗时不定通常2~8小时如果三法结果偏差±0.15bit进入溯源流程第一步对比直方图法和FFT法。如果直方图法ENOB显著偏低重点查电容失配模型和温度模型第二步对比互相关法和FFT法。如果互相关法ENOB偏低说明存在共模噪声源如电源耦合查LDO模型和PCB走线第三步做单因素剥离实验——关闭电容失配模型重跑关闭时钟抖动重跑关闭温度模型重跑。每次只关一个看ENOB变化量。我处理过一个案例直方图法比FFT法低0.4bit剥离实验发现关闭温度模型后两者差距缩小到0.1bit说明高温下电容失配被低估。解决方案是在PDK的cap_mismatch模型里把温度系数temp_coeff从0.001/K改为0.0025/K查工艺文档确认。5. 踩过的坑与独家心得那些文档里不会写的实战技巧5.1 技巧一用“伪随机序列”替代正弦波规避谐波对齐陷阱正弦波测试有个隐藏陷阱当基波频率恰好是采样率的整数分之一时如f_in f_s/1024FFT频点会完美对齐谐波导致谐波功率被集中到单个频点SNR虚高。这叫“相干采样”在实测中几乎不可能重现。我的对策是不用vsin改用伪随机二进制序列PRBS激励。Cadence Spectre里有现成的prbs_genIP核设多项式为x^15x1输出速率匹配ADC采样率。PRBS的频谱是均匀的没有离散谐波能真实暴露ADC的宽带噪声性能。而且PRBS测试还能顺便验证ADC的动态范围——因为PRBS包含所有码字组合能触发所有可能的非线性路径。我用PRBS替代正弦波后在某音频ADC项目中把ENOB仿真误差从±0.6bit降到±0.18bit。5.2 技巧二Spectrum脚本里的“防崩溃”写法Spectrum Ocean脚本容易因数组越界或除零崩溃。我总结了三条防崩溃写法数组边界检查在访问mag[k1]前先if(k length(mag)-1)除零保护计算1/(2*A[k] - A[k-1] - A[k1])前加if(abs(2*A[k] - A[k-1] - A[k1]) 1e-12)空值处理读取out_code时用code_valid find(code_array ! -1)过滤无效码字启动阶段的-1。这些写法看着琐碎但能避免80%的脚本崩溃。我分享一个通用的ENOB计算脚本框架可直接复制使用; ENOB计算主函数 procedure(Calculate_ENOB(tran_file) let((mag freq f_base f_exact noise_power snr enob) ; 读取tran数据 code_array get_data(tran_file out_code) code_valid find(code_array ! -1) code_clean code_array[code_valid] ; FFT mag fft(code_clean) freq linspace(0, 0.5*fs, length(mag)/2) ; 基波定位三点插值 k argmax(mag[0:100]) ; 先找粗略峰值 if(k 0 k length(mag)-1) f_exact freq[k] (freq[k1]-freq[k]) * (mag[k1]-mag[k-1]) / (2*(2*mag[k]-mag[k-1]-mag[k1])) else f_exact freq[k] end ; 掩膜与噪声计算 mask create_mask(freq, f_exact, mag) mag_clean mag .* (1 - mask) noise_power mean(mag_clean[100:length(mag_clean)-100]^2) ; 排除直流和基波区 ; SNR与ENOB snr 10*log10(power_signal / noise_power) enob (snr - 1.76) / 6.02 list(ENOB enob SNR snr) ) )5.3 技巧三实测对标时的“硬件-仿真映射表”仿真再准最终要对标实测。我建立了一张硬件-仿真映射表确保每个实测参数都有仿真对应项|
返回列表