FPGA LVDS I/O as an Analog Programmable Comparator
http://www.eetimes.com/author.asp?section_id=36&doc_id=1320289
Seeing the new ADC IP being bandied about by FPGA vendors got William Murray wondering what is behind all this.
Seeing the new analog-to-digital converter (ADC) IP being bandied around by the FPGA vendors got me wondering what is behind all this. It all boils down to the fact that a comparator is, in essence, a one-bit ADC, while an LVDS I/O receiver is a comparator. Most new FPGA families have LVDS I/O as an option, and it is not hard to add a discrete LVDS RX chip to a CPLD input bank.
Thus, a programmable comparator may be created by feeding an LVDS I/O an analog voltage. This may be a single-ended comparator. If two I/Os are employed, a window comparator may be realized. The analog voltage may be created via a pulse-width modulated (PWM) channel within the FPGA, allowing it to self-tune the comparator. This means any unused LVDS channels can be employed for things like system monitoring or generating alarms for external conditions with the addition of signal conditioning circuits like op-amps or instrumentation amps plus sensors.
Though not the subject of this blog post, this also serves as the basis for many of the new ADC modules we are seeing released as IP for FPGAs. (The secret sauce is how they read the LVDS I/O and drive the PWM to achieve 12-bit accuracies and 1MHz conversion rates.) A comparator is fast -- 400 MHz or more -- whereas the ADC uses more FPGA resources and is slow, but it gives resolution in bits.
The LVDS I/O will have an allowable common mode voltage range specified in the FPGA vendor's data sheet. Be sure that your design will observe this range, and don't forget to allow for the offset between the positive and negative LVDS input pins.
Also, the LVDS I/O specifies a certain amount of hysteresis, so make sure to include it in your design calculations. Again, this may vary from vendor to vendor, depending on silicon characterization, but it should meet the LVDS specification's minimum/maximum values. This data sheet for a Maxim discrete LVDS receiver IC shows a common mode range (2.36 V) and hysteresis (50 mV) typical for an LVDS I/O.
Accuracy can be enhanced by reading calibration values from an SPI or I2C serial EEPROM into the FPGA. These can be used to store offsets, temperature calibration, voltage calibration, etc. Furthermore, the FPGA fabric or microprocessor core embedded in the FPGA can run a checksum or cyclic redundancy check on the calibration at every boot or periodically.
Even with the good hysteresis provided by the LVDS I/O, the comparator can chatter on a slow, noisy signal. If this occurs, you will need to follow it up with a good debounce circuit inside the FPGA. Here an example of a debounce logic circuit with an associated VHDL.
As I previously mentioned, a window comparator can be fashioned from two I/O channels, and this can even serve as the partial basis for a hysteretic switch-mode power-supply controller fashioned within the FPGA.
A programmable comparator may drive a counter/timer module in an FPGA. It may also serve as the basis for a built-in self-test (BIST) for a multi-clocked design. A multiplexer can feed signals into the counter/timer module and allow measurements of things like clocks, synthesizers, and other Analog/RF/IF components to be read back into the FPGA for test.
The LVDS I/O in the FPGA can also be used as programmable logic threshold I/O for legacy digital IC compatibility applications. Any logic threshold within the vendor's LVDS common mode range that the I/O will support can be set via the PWM, allowing plug-and-play capability with legacy systems. This lets you create a variable threshold FPGA logic analyzer for BIST or other applications.
One could also use the comparator to create a one-shot or mono-stable mutivibrator for a special application. Regular multivibrators or programmable oscillators are another possibility, while voltage controlled oscillators and alignable Xtal (crystal) oscillators could be used to build special pressure and temperature sensors.
Have you used any of these techniques -- or similar or related ones -- in your FPGA designs?
FPGA LVDS I/O as an Analog Programmable Comparator的更多相关文章
- Xilinx FPGA LVDS应用
最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...
- 采用FPGA实现音频模数转换器
http://www.21ic.com/app/eda/200905/42832.htm http://www.eefocus.com/article/09-10/84673s.html 摘 要 简要 ...
- FPGA与Deep Learning
你还没听过FPGA?那你一定是好久没有更新自己在IT领域的知识了. FPGA全称现场可编程门阵列(Field-Programmable Gate Array),最初作为专用集成电路领域中的一种半定制电 ...
- [FPGA] 1、Artix-7 35T Arty FPGA 评估套件学习 + SiFive risc-v 指令集芯片验证
目录 1.简介 2.深入 3.DEMO 4.SiFive基于risc-v指令集的芯片验证 LINKS 时间 作者 版本 备注 2018-10-09 08:38 beautifulzzzz v1.0 到 ...
- 了解FPGA市场现状和未来趋势
转, 来源: http://www.sohu.com/a/204640373_740053 可编程的“万能芯片” FPGA——现场可编程门阵列,是指一切通过软件手段更改.配置器件内部连接结构和逻辑单元 ...
- 国产FPGA市场分析 该如何破局
2018年上半年对于中国半导体行业而言是多事之秋,发生了几件让国人深入思考的大事.我作为IC产业的逃兵,最近也在思考很多的问题,包括资本市场.集成电路行业和研究所的一些不成熟的想法. 2008年进入华 ...
- FPGA能代替CPU架构吗?
你还没听过FPGA?那你一定是好久没有更新自己在企业级IT领域的知识了.今天笔者就和大家聊聊何为FPGA?FPGA主要应用场景是什么?有人说FPGA是替代传统CPU和GPU的未来,你信吗? FPGA全 ...
- pspice介绍1(转载)
PSpice的主要功能及特点: OrCAD软件的主要组成包括:OrCAD/Capture CIS.OrCAD/Layout Plus.OrCAD/Express及OrCAD/PSpice.它们分别是: ...
- 自己动手写处理器之第二阶段(1)——可编程逻辑器件与PLD电路设计流程
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第五篇,我尽量每周四篇 通过上一章的介绍,读者应该知道CPU内部有一些主要的电路,比方:译码电路.运算电路.控 ...
随机推荐
- Java network programming-guessing game
猜数字游戏 游戏的规则如下: 当客户端第一次连接到服务器端时,服务器端生产一个[0,50]之间的随机数字,然后客户端输入数字来猜该数字,每次客户端输入数字以后,发送给服务器端,服务器端判断该客户端发送 ...
- C++循环链表解决约瑟夫环问题
约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? “约瑟夫环是一个数学的应用问题:已知n个人(以 ...
- window7 开启自带 ftp
添加 ftp 用户 在windows里添加一个用户.这个其实是你ftp的用户.当然你可以使用匿名访问,但是这样不怎么安全,要知道ftp外网其实也是可以连进来的.去把密码设一下,标准用户就可以了,不用管 ...
- Gitlab部署及汉化操作
一.简介 GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. GitLab拥有与Github类似的功能 ...
- Django实现文章按年月归档、点赞和评论、发送邮件
文章归档的实现 我们在创建文章时,会在数据库中存储文章创建的时间这样的字段,一般用的都是datetime类型,记录文章创建的年月日和时分秒,所以我们直接使用文章的创建时间分类是无法实现文章的按年月归档 ...
- 字符串匹配的KMP算法(如何实现还需静下心来细看)
第一部分:KMP算法的理解(转:http://kb.cnblogs.com/page/176818/) 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB AB ...
- Copy List with Random Pointer——技巧
A linked list is given such that each node contains an additional random pointer which could point t ...
- Nginx 虚拟目录和虚拟主机的配置
nginx.conf 配置文件的几个常用命令 nginx 配置文件主要分为六个区域: main: 全局设置 events: nginx工作模式 http: http设置 sever: 主机设置 loc ...
- appium---【Mac】appium-doctor提示WARN:“fbsimctl cannot be found”解决方案
报错提示截图如下: 解决方案: brew tap facebook/fb brew install fbsimctl --HEAD 执行完命令重新运营appium-doctor即可看到成功已安装此包:
- sicily 1154. Easy sort (tree sort& merge sort)
Description You know sorting is very important. And this easy problem is: Given you an array with N ...