当前位置: 首页 > news >正文

基于SMIC18MMRF工艺的8位40MS/s异步SAR ADC完整设计实现与仿真验证

已经完成的流片项目8bit 40M采样频率 异步SAR ADC设计 包括核心电路的原理图和版图(DRC LVS ANT都过了)有测试电路和后仿文件 带详细设计仿真文档 smic18mmrf工艺,有工艺库,有电路工程文件,提供仿真状态,可以直接导入自己的cadence运行仿真 前仿有效位数ENOB=7.84(电路里新的ADE可以到7.94) 后仿ENOB7.377,适合入门SAR ADC 顶层电路包括: 栅压自举开关Bootstrap Vcm_Based开关时序 上级板采样差分CDAC阵列 两级动态比较器 比较器高速异步时钟 动态sar逻辑 8位DFF输出 8位理想DAC 带详细说明,告诉你各个模块怎么设计,原理是什么,有哪些注意事项,怎么仿真,包看包会包括详细仿真文档,原理介绍,完整电路图,仿真参数已设好,可直接使用,在自己的电脑上就可以运行仿真

刚把手里这个SMIC18mmRF工艺的8bit 40M采样异步SAR ADC的流片报告整理完,终于能瘫在椅子上唠两句了——毕竟从搭模块到最后流片回来,前后折腾了快半年,踩的坑能绕Cadence车间三圈了。

先给大家报个硬参数:8bit分辨率,采样率拉满40M,前仿用老版ADE跑出来ENOB是7.84,后来更了新版ADE优化了一下仿真参数,直接摸到7.94;后仿因为带了版图寄生参数,掉了点到7.377,不过完全符合入门级SAR ADC的及格线,而且DRC/LVS/ANT全过,没返工。

整个工程包我已经整理好了,原理图、版图、测试电路、后仿文件、全流程设计文档都在,直接导入Cadence就能跑仿真,连仿真参数都给你们配好了,新手不用从头啃手册瞎调,直接就能看到各个模块的效果。

今天就挑几个核心模块唠唠,顺便把我当时写的偷懒脚本也放上来,省得你们再翻资料。

1. 栅压自举开关:踩过最蠢的坑

一开始我图省事用了普通CMOS开关,结果采样时THD直接炸到10%以上,查了半天才知道是普通开关的导通电阻会随输入电压变化,采样电荷分配不均导致的。加了栅压自举电路之后,直接把导通电阻钉死了,THD直接降到1%以下。

已经完成的流片项目8bit 40M采样频率 异步SAR ADC设计 包括核心电路的原理图和版图(DRC LVS ANT都过了)有测试电路和后仿文件 带详细设计仿真文档 smic18mmrf工艺,有工艺库,有电路工程文件,提供仿真状态,可以直接导入自己的cadence运行仿真 前仿有效位数ENOB=7.84(电路里新的ADE可以到7.94) 后仿ENOB7.377,适合入门SAR ADC 顶层电路包括: 栅压自举开关Bootstrap Vcm_Based开关时序 上级板采样差分CDAC阵列 两级动态比较器 比较器高速异步时钟 动态sar逻辑 8位DFF输出 8位理想DAC 带详细说明,告诉你各个模块怎么设计,原理是什么,有哪些注意事项,怎么仿真,包看包会包括详细仿真文档,原理介绍,完整电路图,仿真参数已设好,可直接使用,在自己的电脑上就可以运行仿真

我当时懒得每次手动改参数跑AC仿真,写了个一键脚本:

;; 栅压自举开关AC仿真快速脚本 procedure(bootstrap_switch_ac_check() set_analysis("ac") ac_param("start_freq" 10 "stop_freq" 1e9 "num_points" 1000 "scale" "logarithmic") set_component_value("input_dc" 0.9) ; 输入共模电压 set_component_value("vin_diff" 0.1) ; 差分输入电压 run_analysis() plot_analysis("ac_analysis" "mag(V(gate)/V(input))") message("AC仿真完成,看栅极增益是不是接近1就行") )

这段脚本直接在Cadence的skill控制台敲一下就能出图,我当时为了调自举电容的大小,跑了几十次这个脚本,最后选了100fF的自举电容,刚好把导通电阻压到最低。

2. Vcm-Based开关时序:省了好多校准功夫

普通SAR的开关时序是靠时钟边沿触发的,容易带时钟馈通,我选了基于共模电压的时序,能自动抵消一部分共模噪声,不用后期额外校准校准。

贴个测试用的时序激励脚本,直接就能生成40M的采样时钟:

// 异步SAR ADC采样时序激励 reg clk_adc; reg rst_n; reg [7:0] dac_out; initial begin rst_n = 0; clk_adc = 0; #100 rst_n = 1; forever #12.5 clk_adc = ~clk_adc; // 40M采样,周期25ns end

当时调这个时序的时候卡了好久,就怕采样和比较器不同步,最后把采样窗口卡在时钟上升沿前2ns,刚好能避开时钟馈通的影响。

3. 差分CDAC阵列:不用手动拉128个电容

用的是上极板采样的差分CDAC阵列,单位电容选的1fF的MIM电容,8bit的话最高位就是128fF,手动拉128个电容简直反人类,我写了个自动实例化的脚本:

;; 差分CDAC阵列快速生成脚本 procedure(create_diff_cdac(unit_cap_val) local( cap_p cap_n ) cap_p = create_instance("CAP_MIM" "cap_p" list(0 0) list(128*unit_cap_val)) cap_n = create_instance("CAP_MIM" "cap_n" list(0 0) list(128*unit_cap_val)) connect_net(cap_p "top" "VIN_P") connect_net(cap_n "top" "VIN_N") message("差分CDAC阵列生成完成!") )

调用的时候直接敲creatediffcdac(1)就行,1fF的单位电容直接生成完整阵列,而且特意选了同方向的电容,尽量避免工艺偏差导致的匹配误差。

4. 两级动态比较器:高速采样的核心

40M采样的话,比较器延迟必须控制在5ns以内,一级动态比较器延迟太大,我换成了两级动态结构,延迟直接压到4ns左右,而且失调电压也小了很多。

同样写了个瞬态仿真脚本,一键看翻转时间:

;; 两级动态比较器瞬态仿真脚本 procedure(comp_delay_check() set_analysis("transient") tran_param("stop_time" 100n "num_points" 10000) set_component_value("vin_diff" 0.005) ; 差分输入电压 run_analysis() plot_analysis("tran_analysis" "V(comp_out)") message("看比较器输出翻转时间是不是在5ns以内就行") )

当时调偏置电流的时候踩了坑,电流太大功耗炸了,电流太小延迟不够,最后定在10uA刚好符合要求。

5. 异步SAR逻辑+DFF:不用等全局时钟

异步SAR的好处就是不用全局时钟,由比较器输出直接触发逐次逼近,速度比同步SAR快不少,贴一段核心的Verilog逻辑:

// 异步SAR逐次逼近逻辑 module async_sar_logic( input wire rst_n, input wire comp_out, input wire sample_en, output reg [7:0] dac_code, output reg sample_done ); reg [2:0] dac_cnt; always @(posedge comp_out or negedge rst_n) begin if(!rst_n) begin dac_code <= 8'h00; dac_cnt <= 3'h0; sample_done <= 1'b0; end else begin if(sample_en && !sample_done) begin dac_code[dac_cnt] <= comp_out ? 1'b1 : 1'b0; dac_cnt <= dac_cnt + 1'b1; sample_done <= (dac_cnt == 3'h7) ? 1'b1 : 1'b0; end end end endmodule

这里用了动态DFF,比静态DFF省了不少功耗,而且速度更快,刚好适配40M的采样率。

最后唠点实的

后仿的时候确实掉了点ENOB,毕竟SMIC18的寄生电容还是挺大的,后来加了几个去耦电容稍微拉了回来,不过整体还是符合预期的。

整个工程包我已经打包好了,包含:完整的Cadence工程文件、全模块原理图/版图、DRC/LVS/ANT报告、前仿/后仿仿真文件、详细的设计文档+仿真步骤,直接导入就能跑,新手不用从零搭电路。

需要的同学可以评论区留个邮箱,我直接发你们,有啥问题也可以在评论区问,我尽量回复~

http://www.jsqmd.com/news/569868/

相关文章:

  • 从MobileNet v2到DeepLab v3+:手把手教你用PyTorch搭建一个轻量级语义分割模型
  • 从空调到手机充电器:拆解身边电器,看压敏电阻和热敏电阻如何守护你的设备安全
  • 首款多模态生物推理大语言模型
  • DownGit终极指南:三步实现GitHub文件夹精准下载,告别克隆整个仓库的烦恼
  • 深入解析安卓开发工程师的核心技能与实战要点:从技术栈到面试准备
  • Phi-4-mini-reasoning集成Visual Studio:C++开发环境智能配置指南
  • 从‘torch not found’到成功训练:一个YOLOv8环境配置的完整避坑实录(含CUDA/cuDNN版本选择)
  • VeRL实战:如何用Ray集群和FSDP/Megatron配置高效训练你的第一个PPO模型
  • 30分钟上手!零门槛蛋白质结构预测工具ColabFold如何让科研效率提升10倍?
  • WarcraftHelper终极指南:让魔兽争霸3在现代电脑上焕发新生
  • 零基础学编程:用claude code在快马平台生成你的第一个python项目
  • 告别无效裁剪:SBAS-InSAR处理时,你的哨兵数据SLC和PWR到底该怎么配合使用?
  • Zotero OCR插件深度解析:如何为学术PDF添加可搜索文本层?
  • Chord视频分析惊艳案例:30秒短视频生成含时间戳的结构化事件描述
  • 零基础上手MedGemma-X:像聊天一样完成X光片智能诊断
  • 如何零安装快速管理SQLite数据库:浏览器中的完整解决方案指南
  • 从‘螺丝’到‘手臂’:用螺旋理论(Screw Theory)直观理解机械臂POE建模
  • 保姆级教程:用Python脚本模拟DP链路训练,一步步读懂DPCD寄存器变化
  • Translumo:3步掌握实时屏幕翻译的终极免费工具
  • Qwen3-ASR-1.7B实战案例:播客RSS订阅→自动下载→转写→生成章节摘要
  • 快速部署CosyVoice语音合成:适合新手的零配置教程,简单三步完成
  • 中华AI智能体编程一站式基站构想 - ace-
  • MelonLoader完全掌握指南:从入门到架构师级应用
  • 港科资讯|郑光廷教授出席国际科技组织发展与全球科技治理论坛 分享协作实践
  • RTKLIB 开源宝藏:从零搭建GNSS定位开发环境与实战解析
  • 2025-2026年全球抗老护肤品推荐:十款口碑产品评测比较知名 - 品牌推荐
  • Pixel Aurora Engine效果对比:CFG=7 vs CFG=12对像素幻想程度影响
  • GLM-4-9B-Chat-1M多场景落地:法律合同审查、科研文献摘要、技术文档翻译
  • Phi-4-mini-reasoning真实案例:教育机构自动批题与答案生成应用
  • Mermaid Live Editor:颠覆式图表创作全攻略——代码驱动的可视化革新