模拟集成电路设计系列博客——6.3.1 温度计码电流模式DAC
6.3.1 温度计码电流模式DAC
另一种实现D/A转换器的方式是将输入值数字上重编码为温度计码,温度计码与二进制码的主要区别是,二进制码通过\(2^N-1\)个数字输入来表达\(2^N\)个不同的数字值。显然,温度计码相比二进制表示消耗更多的编码位数,同样是对\(2^N\)个数字值,二进制码只需要\(N\)个数字输入。但是,我们接下来会看到,温度计码相比二进制码会存在一些优势,包括降低差分非线性噪声,保证单调性,以及降低毛刺噪声。
典型情况下,一个温度计码表示中,其编码中1的数量对应了其十进制值。例如,对于一个3-bit二进制输入,十进制值4被编码为二进制值100,而其对应的温度计码为0001111。剩余的其他3-bit值的编码表示如下表所示:
一种D/A转换器的实现方式就是使用温度计码输入来构建一个\(2^N-1\)个相等尺寸的电阻以及连接到放大器虚地点的开关,如下图所示:
注意此处单调性得到了保证,因为当二进制输入切换到下一个更大的值时,温度计码会再有一位翻转为高,使得额外的电流从虚地点流出,并使得放大器的输出进而变得更高(反正绝不会变低)。这对于二进制编码的D/A转换器来说并不总是成立,因为各个元素之间的失配可能会在输入码变大的时候输出反而降低。
可能更重要的是,一个基于温度计码的D/A转换器,相比二进制的D/A转换器可以极好的最小化毛刺,因为在输出仅仅发生如1LSB的轻微变化时,各组的电阻不会发生交换。还需要注意的是,锁存器可以被用在二进制码到温度计码转换的数字电路中,使得数字温度计码中不出现毛刺,并且可以使用流水化可以用于保持高吞吐率。
此外一个有趣的点是使用温度计码相比二进制权重码,并不会增大模拟电路的面积。在3-bit二进制权重中,电阻值需要设置为R,2R和4R,总体的阻值为7R。这个总体值和上图中的3-bit温度计码DAC是一致的,由于在集成电路中,电阻所消耗的面积正比例于其阻值,这两种方式的面积是一致的(如果忽略互连线的话)。同样的讨论对于晶体管开关也成立,两种方式的晶体管开关的尺寸也是一致的,在二进制权重中,开关需要等比例的缩放来适应不同的电流密度。所有的温度计码DAC中的晶体管开关尺寸都是相同的,因为它们通过的电流相同。最后,需要注意的是二进制码DAC也可以通过电荷重分布的方式来实现,如下图所示:
一个基于温度计码的电流模式D/A转换器如下图所示,很多设计是以此为基的,例如[Miki, 1986; Chi, 1986; Letham, 1987]。此处,温度计码解码器同时被用于行解码和列解码,使得电路具有固有的单调性和良好的DNL错误特性。当一个单元的行线和列线均为高时,其电流会被导到输出。此外,在高速应用中,输出会被直接反馈到片外的50欧姆或75欧姆电阻,而不是输出放大器。注意此处的Cascode电流源被用于减少由于输出信号\(V_{out}\)电压变化导致的电流源的偏差。
注意此处需要精确的时钟边缘\(d_i\)和\(\bar{d_i}\)。如果两个逻辑电平同时为高,那么会出现\(V_{out}\)对地短路。如果两个逻辑电平同时为低,那么\(Q_3\)的漏极被拉低,电路需要更久才能响应。为了避免使用两个逻辑驱动电压,\(Q_2\)的栅极可以连接到一个直流偏置电压上,如下一小节的描述。