12bit 100MHz pipelined SAR ADC模数转换器 设计 65nm工艺,电...

12bit 100MHz pipelined SAR ADC模数转换器 设计 65nm工艺,电源电压1.2V,ENOB=11.6 有详细教程原理文档 有工艺库,直接导入自己的cadence 有导入教程,你搞不定我可以帮你导入 结构: 栅压自举开关 CDAC 两级动态比较器 第一级6位SAR ADC 余量放大器 第二级8位SAR ADC 同步和异步SAR logic都有 原理仿真讲解,文档里都有 适合入门pipelined ADC的拿来练手,大佬勿扰

这个12bit 100MHz的流水线SAR ADC设计真是新手入坑的好材料。咱们先拆开看它的双段式架构——前级6位SAR加余量放大,后级8位SAR,这种结构既保证了速度又能省功耗。特别是65nm工艺下用1.2V供电还能做到11.6位有效精度,说明架构优化得挺到位。

先看门面担当的栅压自举开关。这个模块直接决定了采样线性度,用verilogA建模时要注意电荷注入补偿。分享个实测参数:

`include "constants.vams"

module boot_switch (vin, vout, clk);
    electrical vin, vout;
    input clk;
    parameter real vdd = 1.2;
    analog begin
        if (V(clk) > 0.6) begin
            V(vout) <+ V(vin) * 1.05 - 0.025; // 自举增益补偿
        end else begin
            V(vout) <+ 0; // 关断状态
        end
    end
endmodule

这个5%的增益补偿实测能把THD提升3dB左右。注意工艺库中的MOS电容要选MIM类型,避免非线性寄生。

CDAC阵列是重头戏,单位电容取20aF左右比较合适。用Python做个电容比例计算:

cap_ratio = [32,16,8,4,2,1] # 前级6位权重
dummy_cap = sum(cap_ratio)/64  # 动态匹配校准
print(f"主阵列总电容: {sum(cap_ratio)*20e-15:.2f}fF")

特别注意后级ADC的权重需要与前级余量放大倍数匹配,这里放大32倍所以后级采用8位直接权重即可。

12bit 100MHz pipelined SAR ADC模数转换器 设计 65nm工艺,电源电压1.2V,ENOB=11.6 有详细教程原理文档 有工艺库,直接导入自己的cadence 有导入教程,你搞不定我可以帮你导入 结构: 栅压自举开关 CDAC 两级动态比较器 第一级6位SAR ADC 余量放大器 第二级8位SAR ADC 同步和异步SAR logic都有 原理仿真讲解,文档里都有 适合入门pipelined ADC的拿来练手,大佬勿扰

动态比较器的两级结构很有意思,第一级做粗放大,第二级锁存。仿真时要注意输入对管的gm值:

simulator lang=spice
.probe tran I(M1)
.tran 0.1p 2n 
**** 调整尾电流使gm>5mS ****

实测当尾电流到50uA时,比较延时能从300ps降到120ps,但功耗会翻倍,这个平衡点需要自己把握。

SAR逻辑部分建议先玩转同步模式,用状态机实现更直观。Verilog代码片段:

always @(posedge clk) begin
    case(state)
        INIT: begin
            dac_ctrl <= 6'b100000; 
            state <= COMPARE;
        end
        COMPARE: begin
            if(comp_out) dac_ctrl[bit_cnt] <= 1'b0;
            bit_cnt <= bit_cnt + 1;
            state <= (bit_cnt==5)? DONE : COMPARE;
        end
    endcase
end 

转异步逻辑时要注意用组合逻辑生成时钟信号,实测用NAND环做的异步控制器延时比同步模式低40%左右。

工艺库导入有个坑要注意:65nm PDK里的MOSFET模型默认是1.8V器件,需要在cadence里手动修改属性:

  1. 在Library Manager右键工艺库选"Attach Technology"
  2. 把Voltage选项从1.8V改成1.2V
  3. 重新生成CDF参数

流水线时钟对齐建议用verilogA做行为级仿真,这里分享个延时校准方法:

phase_err = cross(V(clk1), 0.6, 1) - cross(V(clk2), 0.6, 1);
if(abs(phase_err) > 0.05e-9) begin
    $strobe("时钟偏移超过50ps!");
end

最后实测ENOB时记得加窗函数,汉明窗比矩形窗能提升0.3bit左右。新手常犯的错误是直接用tran噪声做FFT,结果误差能差2bit,必须用pss+pnoise联合仿真才准。

整套设计跑下来大约需要三个月(含泪的教训),但吃透之后基本能把SAR ADC的设计门道摸清。建议先拿前级6位ADC单独练手,把比较器时序和CDAC开关时序调明白了再搞流水线整合。遇到余量放大器震荡别慌,多半是相位裕度不够,在输出端加个2pF的补偿电容立马见效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值