1. 三阶CRFB结构Sigma-Delta调制器概述
三阶CRFB(Cascade of Resonators with FeedBack)结构Sigma-Delta调制器是一种高性能模数转换器架构,在音频处理、传感器接口等领域有广泛应用。这种结构通过噪声整形技术将量化噪声推向高频区域,配合数字滤波器实现高精度转换。我们采用的SMIC 180nm工艺实现方案,实测ENOB(有效位数)达到15位,完全满足大多数中高精度应用场景需求。
这个设计特别适合作为SD ADC的入门实践项目,因为它:
- 包含了全差分放大器、开关电容电路、共模反馈等核心模块
- 提供完整的Testbench验证环境
- 配套详细的设计文档和建模代码
- 采用工业界主流工艺节点
提示:ENOB(Effective Number of Bits)是衡量ADC性能的关键指标,计算方式为(SNR-1.76)/6.02,其中SNR为信噪比。15位ENOB意味着动态范围约90dB。
2. 关键模块设计与实现
2.1 全差分放大器设计
全差分放大器是调制器的核心模拟模块,其设计要点包括:
-
基本结构选择:我们采用折叠式共源共栅结构,在180nm工艺下可实现80dB以上的开环增益。这种结构相比套筒式共源共栅具有更好的输出摆幅特性。
-
偏置电路设计:使用宽摆幅电流镜提供稳定偏置,关键参数计算如下:
code复制假设尾电流I_tail=200uA 每个分支电流I_branch=I_tail/2=100uA gm=√(2*μ_n*Cox*(W/L)*I_branch) 典型值:μ_n*Cox≈200uA/V²,W/L=50 则gm≈√(2*200u*50*100u)=1.41mS -
版图注意事项:
- 差分对管必须采用共质心布局
- 电流镜管采用dummy保护
- 敏感节点避免长走线
- 电源线足够宽以降低IR drop
Verilog行为级模型示例:
verilog复制module diff_amp #(parameter WIDTH=16) (
input clk, rst_n,
input [WIDTH-1:0] vin_p, vin_n,
output reg [WIDTH-1:0] vout_p, vout_n
);
// 增益参数
parameter GAIN = 4;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
vout_p <= 0;
vout_n <= 0;
end else begin
vout_p <= GAIN * (vin_p - vin_n);
vout_n <= GAIN * (vin_n - vin_p);
end
end
endmodule
2.2 开关电容积分器实现
开关电容电路是Sigma-Delta调制器的另一核心模块,其设计要点:
-
时钟相位设计:
- φ1相:采样输入信号
- φ2相:电荷转移
- 需要设置非重叠时间(通常5-10%时钟周期)
-
电容值选择:
- 采样电容Cs由kT/C噪声决定
- 积分电容Ci=Cs/OSR(过采样率)
- 典型值:Cs=2pF, Ci=0.5pF (OSR=64)
-
开关尺寸优化:
- 导通电阻Ron=1/(β*(Vgs-Vth))
- 确保RC时间常数<<1/2fs
- 典型值:W/L=2u/0.18u
Python建模示例:
python复制class SCIntegrator:
def __init__(self, Cs, Ci, fs):
self.Cs = Cs # 采样电容
self.Ci = Ci # 积分电容
self.fs = fs # 采样频率
self.phi1 = True
self.vin = 0
self.vout = 0
self.charge = 0
def clock(self):
self.phi1 = not self.phi1
def process(self, vin):
if self.phi1: # 采样相
self.vin = vin
self.charge = self.Cs * self.vin
else: # 积分相
delta_v = self.charge / self.Ci
self.vout += delta_v
return self.vout
2.3 共模反馈系统设计
共模反馈(CMFB)对全差分电路至关重要,我们的设计采用开关电容方式:
-
工作原理:
- 检测输出共模电平Vcm=(Vout_p+Vout_n)/2
- 与参考Vref比较产生误差信号
- 通过积分器调节尾电流源
-
关键参数:
- 共模环路带宽≈1/10信号带宽
- 建立时间<1/2时钟周期
- 相位裕度>60°
Verilog实现示例:
verilog复制module cmfb (
input clk, rst_n,
input [15:0] vout_p, vout_n,
output reg [15:0] control
);
parameter VREF = 16'h8000; // 1.2V对应
reg [15:0] vcm, error;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
vcm <= 0;
error <= 0;
control <= VREF;
end else begin
vcm <= (vout_p + vout_n) >> 1;
error <= VREF - vcm;
// 积分器实现
control <= control + (error >>> 4);
end
end
endmodule
3. 系统级设计与建模
3.1 Matlab行为级建模
完整的SD调制器Matlab模型应包含:
-
噪声源建模:
matlab复制% 量化噪声模型 e = (rand(1,N)-0.5)*2*Vref/2^B; % KT/C噪声 kTC_noise = sqrt(k*T/Cs)*randn(1,N); -
非线性建模:
matlab复制% 运放有限增益影响 A0 = 80; % 80dB增益 H_inf = 1/(1 + 1/A0); % 电容失配 mismatch = 1 + 0.01*randn(); % 1%失配 -
性能评估脚本:
matlab复制[Pxx,f] = pwelch(y,window,noverlap,nfft,fs); SNR = 10*log10(Pxx_signal/Pxx_noise); ENOB = (SNR - 1.76)/6.02;
3.2 Simulink系统仿真
Simulink建模的关键步骤:
-
构建CRFB拓扑:
- 三个积分器级联
- 前馈系数:a1=0.5, a2=0.3, a3=0.2
- 反馈系数:b1=1, b2=0.7, b3=0.4
-
设置仿真参数:
- 采样频率:2.56MHz
- 输入频率:10kHz
- 过采样率:OSR=128
- 量化器位数:1-bit
-
添加非理想因素:
- 运放有限带宽:GBW=50MHz
- 开关导通电阻:Ron=1kΩ
- 时钟抖动:1ps RMS
4. 测试与验证方案
4.1 Testbench设计要点
-
测试激励生成:
verilog复制// 正弦波生成 real freq = 10e3; real phase = 0; always #(0.5/fs) begin phase = phase + 2*M_PI*freq/fs; vin_p = 0.5*Vref*(1 + sin(phase)); vin_n = 0.5*Vref*(1 - sin(phase)); end -
性能评估方法:
- FFT分析窗口:Blackman-Harris
- 频谱平均:8次
- 动态范围测试:-60dBFS到0dBFS
-
关键测试项:
- 信噪比(SNR)
- 无杂散动态范围(SFDR)
- 总谐波失真(THD)
- 电源抑制比(PSRR)
4.2 常见问题排查
-
极限环振荡:
- 现象:无输入时输出持续振荡
- 解决方法:调整积分器初始条件,增加泄放通路
-
共模漂移:
- 现象:差分输出中心点偏离
- 解决方法:检查CMFB环路稳定性,增加共模检测速度
-
谐波失真大:
- 现象:THD>-60dB
- 解决方法:优化运放线性度,减小开关电荷注入
-
死区效应:
- 现象:小信号响应差
- 解决方法:采用斩波技术,优化比较器迟滞
5. 物理实现考虑
5.1 版图设计技巧
-
匹配策略:
- 关键电容使用单位电容阵列
- 差分走线对称布局
- 敏感节点屏蔽保护
-
电源设计:
- 数字模拟电源分离
- 关键模块加去耦电容
- 电源线宽满足电流密度要求
-
ESD保护:
- 输入输出端加GGMOS
- 电源钳位二极管
- 满足HBM 2kV标准
5.2 后仿真验证
-
提取寄生参数:
- 使用RC提取工具
- 关键节点标注寄生电容
- 长走线分段建模
-
蒙特卡洛分析:
- 工艺角:tt/ff/ss
- 温度范围:-40℃~125℃
- 电源变化:±10%
-
可靠性检查:
- 电迁移分析
- 天线效应验证
- 闩锁免疫测试
在实际流片前,建议进行至少三轮完整的后仿真验证,每次针对前次发现的问题进行优化迭代。特别是在SMIC 180nm工艺下,器件匹配性和寄生效应会显著影响系统性能,需要特别关注积分器和比较器等关键模块的后仿真结果。