微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 使用DS1863/DS1865的内部校准和右移位增强ADC性能

使用DS1863/DS1865的内部校准和右移位增强ADC性能

时间:06-24 来源:互联网 点击:


图3. MON寄存器右移位的例子


这篇应用笔记讨论了二进制搜索方法。算法的输出是增益和偏移寄存器值,从而得到期望的传递函数即期望的LSB。

为使用这种算法,同时必须做两件事情:将激光设置为两种不同的强度,例如最小值和接近最大值(大约90%);而且还必须能进行多次重复。对于非光学应用,必须按要求将两种不同的电压加于MON输入。这篇应用笔记提供的算法使用90%最大值,所以 “〉”比较是可行的。然而,当使用满量程一定百分比时,在做数值计算时也应考虑相应的数字量百分比。

伪码示例

下面这段伪码是用来确定增益的二进制搜索法的一个实例。


现在,这个增益寄存器被设置并且转换分辨率将与期望的LSB实现最佳匹配。下一步是校准DS1863/DS1865的偏移。正确的增益值被写入增益寄存器,再次将零输入加到这个引脚。读取这部分(Meas1)的数字结果。在式1中将CNT1作为输入可计算偏移。

伪码的说明

可通过将偏移及右移位寄存器设置成已知状态例如0偏移及0右移位来开始该伪码算法。 尽管本例中将两个寄存器均设置为0,但只要对它们进行相应的补偿,则亦可采用其他值。例如,如果以所编程偏移开始,则FFF8h可能不再是被钳位的满量程数字值。(参见偏移校准寄存器部分)除初始化寄存器外,该算法也可从计算几个为所需LSB函数的重要常数开始。

二进制搜索增益值时首先将增益校准寄存器设置成满量程的一半,即8000h。然后再将90%最大输入加至被校准MON通道然后,读取量化值。将此测量值称为Meas2。接着再检查Meas2看它是否被钳位在FFF8h上(此时偏移及右移位均为0)。如果读数被钳位,则无法断定转换值恰好是FFF8h还是比这大许多(此时也被钳位成FFF8h)。无论怎样,增益设置都太高。在后续的二进制搜索法中,将增益值减半并重复此操作直至找到非钳位增益值为止。

一旦找到非钳位的Meas2,即可通过施加零输入并读取其数字转换值来继续。该算法此转换值即为Meas1。最后。计算Meas2 与Meas1的差值并使用在算法开始时所算出的常数来与所需差值(CNT2 - CNT1)进行比较。如果Meas2 - Meas1大于CNT2 - CNT1则将增益再减半。如果Meas2 - Meas1小于CNT2 - CNT1则在减半后再将其恢复到当前增益值。重复此过程直至总共进行16 次,即获得一个代表所需增益(所需LSB)的16位值。

以下介绍另一种能使该增益校准过程更加形象的方法。先从16 位增益校准寄存器的MSB (b15)开始,将该位设置为0 (同时也将其他各位初始化为0); 再使MSB = 1,并加上模拟输入,然后再读取对应的数字输出,如果该读数被钳位,则表示增益太高,可将MSB写回至0,否则将其保留为1,因此现在即已知MSB。然后再转向下一位(b14)也是先将b14设为1 (此时保留b15 为已确定值),此时b13至b0仍为0。 如果增益仍太高。则可重复前述操作,即将b14设为0,否则保留为1。此过程一位接一位进行,直至确定出全部16位为止,其结果仍是一个代表所需增益的16 位值。

在确定所需增益以后,即可计算新的偏移或将其保留为(0)。无偏移此校准方法取决于所使用的偏移性质。数据资料中对该算法的解释是基于如下假设,即;用户想要执行负偏来清零数字读数,以使零模拟输入时产生全0输出。这可简单地通过施加零模拟输入并读取相应的转换值来实现。如果零输入(例如激光关断)产生例如(20h)的数字输出,则可对偏移进行编程以将20h从每一转换值中减去。在本例中,则是先将20h 代入偏移公式中,然后再将计算结果编程至所需MON 通道的偏移校准寄存器中来完成。

内部的校准和右移位实例

为演示本应用笔记所提及的概念,我们采用了以下示例。

在此例中利用MON3来监视Rx功率,当施加-40dBm最小输入时,在DS1859的MON3管脚上呈现出10mV的电压,此时该输入所需数字输出为0000h。当施加0dBm输入时,MON3管脚上的电压为300mV,此时所需数字输出为2710h,这样的选择是为了满足SFF-8472规定的LSB (Rx功率的LSB对应于0.1μW)。

确定此例中的理想右移位数相对比较简单因为已经给定所需的数字输出范围(0000h至2710h)。利用上面的表1,可得到理想右移位数为2。现在请记住右移位数为2,要使2710h在经过2次右移位后仍为最终输出数字值,我们可推断,此时300mV的输入在右移位以前必须产生9C40h的转换值,因此需要用内部校准来将300mV输入的转换值“抬高”至9C40h。在完成偏移的内部校准及编程以后,即可执行2次右移位。该举例被归纳于表3中。


在确定了输入与输出之间的关系后(如表3所示),即可用数据资料中提供的内部校准。程序先从执行几步如下所示的预先计算开始。请注意,这里并未采用数据资料校准程序中所给出的90%, 因为第二校准点(300mV = 9C40h)已经小于满量程值的90%。

根据表3进行以下计算:

LSB = (0.300V – 0.010V) / (9C40h – 0000h) = 0.290V/40,000 = 7.25μV
最大读数 = LSB x 65535 = 7.25μV x 65535 = 0.475128V
CNT1 = 0.010/LSB = 1379.3 => 1379 (dec)
CNT2 = 0.300/LSB = 41379.31 => 41379 (dec)

当采用两个校准点时,CNT1及CNT2为所期望(所需)的数字输出内部校准程序将反复搜索与这两个值所确定的斜率最接近的斜率。

校准程序反复进行16次以下过程,即先用二进制来对该斜率进行编程然后再检查其是否与所需的斜率相等。在此例中是采用内部校准程序以及表4中所列全部16次重复输入与输出来对DS1863/DS1865进行校准。

表4中的第一栏“重复”等于程序中的n。“增益结果”栏为每次重复时被编程进“增益校准”寄存器(即器件表02h中的字节98至99h)中的值。Meas1及Meas2栏则分别为施加300mV及10mV输入时器件上的读数;最后,对于Meas2不被钳位的重复,将Meas2 - Meas1与CNT2 - CNT1进行比较,如果Meas2 - Meas1大于CNT2 - CNT1,则表示“增益结果”太大,对应于此次重复的增益校准位为0。而这随后又确定后续重复中的“增益结果”。当完成全部16 次重复后,即得到增益校准值,如表3所示,此例中所使用器件的增益校准值为5038h。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top