特权同学

用FPGA的差分输入实现AD转换

0
阅读(6232)

用FPGA的差分输入实现AD转换

         特权同学也是第一次听到这么新奇的想法,今天的lattice研讨会总算不是白去的,多少是有一点收获。尤其是听说能用FPGA的差分对实现AD转换,这不仅只是停留在想法上,lattice已经把这个方案做出来了,而且你还可以在他们的官网搜到这个方案的细节。

         看看文档,发现这个虽然新颖的想法其实原理还是很简单的,不仅利用了LVDS差分输入的比较器,而且还使用了地球人都知道的PWM输出用于比较器另一端的模拟比较电压。其中一种最简单的方案如图1所示,差分对的正端输入待转换模拟信号,负端则输入一个经过RC低通滤波的PWM信号,这个滤波后的PWM信号其实相当于一个参考模拟电压值。在内部逻辑设计中,可以可控的产生不同的PWM输出负比较端的参考电压,同时采样整个差分对的当前值。具体的思路恐怕不用特权同学多说,每次取中间值对比结果再反复判断得到结果。这个电路精度虽然可以做得很高,但速度会比较慢,而且最大的问题是无法检测到VCCIO电压的最低值和最高值,这要取决于FPGA的差分对电路允许的有效判断闸值。总的来说,这个电路虽然简单,但是采样电压范围比较受限。

图1

         另一种复杂一些的改进方案如图2所示。这种方案说白了不但是对输入电压进行分压,而且可以利用PWM输出的电压动态调整比较器负端输入的采样电压值,加之比较器正端是一个非0参考电压,从而有效的避免了前述方案中采不到两个临界点电压的尴尬,这一招也很妙。不过这个方案实现起来还是需要一些算法,并且多费一些逻辑的。

图2

         此外,今天头一次比较近距离的接触lattice的CPLD器件MachOS2,感觉上这个器件不仅适合做CPU的IO扩展,也很适合做一些常用外设的扩展,毕竟其内部已经集成了IIC、SPI之类的硬核,还有一些片内的RAM和FLASH也有不小的用处。

 

Lattice的参考链接:

http://www.latticesemi.com.cn/products/intellectualproperty/referencedesigns/simplesigmadeltaadc.cfm