
基于“pipline-sar adc 12bit 6?8结构”的冗余异步时许设计,含有gainboost放大
器级间放大的混合结构ADC
【混合ADC设计手记】当流水线遇上逐次逼近
在12bit精度需求下搞ADC设计就像在钢丝绳上跳舞,既要速度又要精度。最近折腾的Pipeline-SAR
混合结构有点意思,前级流水线负责粗量化开路,后级SAR收尾精细处理。这种6+8的分段结构把传统流水
线的9级缩减到6级,靠SAR部分补足精度缺口,实测有效面积比传统结构节省30%。
关键在冗余位设计上。我们给每级流水线加了1.5bit冗余,Verilog里实现的校准算法看着像这样:
```verilog
always @(posedge clk) begin
if (calib_en) begin
error_sum <= error_sum + (dac_out - residue_in);
if (cycle_cnt == 8'd255) begin
calib_value <= error_sum >> 8;
error_sum <= 16'b0;
end
end
end
```
这段数字校准逻辑会在后台持续统计残差电压,用移动平均算法消除电容失配带来的误差。注意右
移8位的操作其实暗藏玄机——既避免溢出又等效于均值计算,比直接除法器省了80%的硬件资源。
异步时序控制是另一个亮点,摆脱了全局时钟的束缚。每个流水线级有自己的就绪信号,状态机切
换时像接力赛交接:
```systemverilog
typedef enum logic [2:0] {
IDLE,
SAMPLING,
AMPLIFYING,
SAR_CONV
} state_t;
always_ff @(posedge clk_async) begin