1、非二进制冗余算法:
非二进制冗余如下图:
输出code计算可以用下面公式
由于Wi 为非二机制权重,所以无法再化简。
即Dout有如下:
SAR ADC 吐出12bit码字,需要转变为10bit。根据公式4),可以列出下面的表格
权重480相当于256+128+64+32这几个权重相加,以此类推,2*Wi的每个权重都可以得到相应的分解。然后把每列相加,既可以得到10bit 码字输出。
电路实现上采用加法器:
2、二进制冗余算法:
二进制冗余如下图:
它们的权重分别是32、16、16、8、4、4、2、1,C4c和C2c 为冗余位
所以code计算仍然可以用公式4)的原理,但是需加上冗余位,
转换code为B1B2B2rB3B4B4rB5B6。N为6,表示6bit转换,C4c 对应r=2,C2r对应r=4。
如果B1B2B2rB3B4B4rB5B6=11111111,则Vout=32+16+8+4+2+1+(1-0.5)*16+(1-0.5)*4=73
如果B1B2B2rB3B4B4rB5B6=00000000,则Vout=(0-0.5)*16+(0-0.5)*4=-10,所以输出范围在(-10–73)。也可以认为是所有权重相加为83,则范围为(0–83),往后shift-10,范围变成(-10~73)
所以也可利用逻辑和加法器搭电路实现8bit 到6bit 译码。
这里为了方便,利用另一个图片说明电路实现,原理是一致的