pipline-sar adc 12bit 6?8结构 带有冗余 异步时许,含有gainboost 放大器作为级间放大器 pipline 和 sar adc的混合结构
在12bit精度需求下搞ADC设计就像在钢丝绳上跳舞,既要速度又要精度。最近折腾的Pipeline-SAR混合结构有点意思,前级流水线负责粗量化开路,后级SAR收尾精细处理。这种6+8的分段结构把传统流水线的9级缩减到6级,靠SAR部分补足精度缺口,实测有效面积比传统结构节省30%。
关键在冗余位设计上。我们给每级流水线加了1.5bit冗余,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%的硬件资源。
异步时序控制是另一个亮点,摆脱了全局时钟的束缚。每个流水线级有自己的就绪信号,状态机切换时像接力赛交接:
typedef enum logic [2:0] { IDLE, SAMPLING, AMPLIFYING, SAR_CONV } state_t; always_ff @(posedge clk_async) begin case(current_state) SAMPLING: if (sample_done) begin next_stage.ready <= 1'b1; current_state <= AMPLIFYING; end AMPLIFYING: if (amp_settled) begin sar_start <= 1'b1; current_state <= SAR_CONV; end //...其他状态省略 endcase end这种事件驱动机制让级间延迟从固定周期变成动态调整,实测在输入信号变化剧烈时,转换速率能自动提升20%。
pipline-sar adc 12bit 6?8结构 带有冗余 异步时许,含有gainboost 放大器作为级间放大器 pipline 和 sar adc的混合结构
级间放大器的gainboost结构要了老命。运放采用动态偏置技术,在保持80dB增益的同时把带宽硬生生撑到200MHz。原理图里那个交叉耦合的电流镜结构,仿真时发现相位裕度总在临界点徘徊,最后在layout上把差分对管做成同心圆布局才稳住阵脚。
实测芯片在1.2V供电下做到92.3dB的SNDR,最惊喜的是在温度从-40℃跳到125℃时,DNL始终保持在±0.5LSB以内。冗余设计立功了——后仿显示有12%的转换周期触发了错误修正,但数字校准模块把这些偏差吃得干干净净。
这种混合架构的玄妙之处,就像川菜里的麻辣与鲜香的平衡。流水线架构的"猛火爆炒"配上SAR的"文火慢炖",配合冗余位这味"秘密调料",最终呈现的确实是不一样的设计风味。