如果FPGA上只有一个GPIO该如何进行模拟测量

描述

Q:

如果系统中的FPGA/微处理器上只剩下一个GPIO,该如何进行模拟测量?

A:

可以使用电压-频率转换器代替模数转换器。

在关注机器健康和其他物联网(IoT)解决方案的现代应用中,随着检测功能的日趋普及,对更简单的接口以及更少的I/O和更小的器件尺寸的需求也随之增长。连接到单个微处理器或FPGA的器件密度不断增加,而应用空间(以及由此导致的I/O引脚数量)却受到限制。在理想情况下,所有应用都需要一个ASIC来提供小巧的集成式解决方案。

但是,ASIC的开发既耗时又昂贵,并且不具备满足其他用途的灵活性。因此,越来越多的应用都在使用微处理器或尺寸小巧的FPGA,以便能够经济高效地按时完成产品开发。在本文中,我们将探讨一种温度-频率转换器,它只需要使用一个GPIO引脚即可提供准确的温度结果。本文还将演示如何将电压-频率转换器用于各种检测应用。

动机

某些传感器测量值(例如温度、湿度和气压)本质上是直流电,而且其变化速率并未快到(它们也不需要足够精确的分辨率)足以保证ADC的需求以及与之相关的设计考虑。大多数ADC要求快速准确的时钟生成和时序、稳定的基准电压、具有非常低输出阻抗的基准缓冲器以及模拟前端电路,以便对传感器输出进行适当的信号调理,然后才能对其进行数字量化并通过系统进行监控。在进行环境温度检测时,分立式应用可能会在惠斯通电桥中使用一个热敏电阻,然后由仪表放大器获得其输出,再馈入ADC。这种设计属于过度设计,需要超出应用所需的更多空间、功率和计算周期,而应用本身可能仅需要每15秒进行一次测量。

LTC6990

固定频率或电压控制型操作

- 固定:单个电阻器负责设置频率 (最大误差 《 1.5%)

- VCO:两个电阻器负责设定 VCO 中心频率和调谐范围

频率范围:488Hz 至 2MHz

2.25V 至 5.5V 单电源操作

72μA 电源电流 (在 100kHz)

500μs 启动时间

VCO 带宽 》 300kHz (在 1MHz)

CMOS 逻辑输出可供应 / 吸收 20mA

50% 占空比方波输出

输出使能 (当停用时可以选择低或高阻抗状态)

-55ºC 至 125ºC 工作温度范围

采用扁平 (高度仅 1mm) SOT-23 (ThinSOTTM) 封装和 2mm x 3mm DFN 封装

能否设计一种替代性测量解决方案,既能减少与ADC信号链相关的元件数量和复杂性,还能测量模拟电压?该解决方案就是采用一个电压-频率转换器(例如 LTC6990, 将其配置为电压控制振荡器(VCO)模式,这样就可以用来测量模拟电压,而无需ADC。在本示例中,将精密热电偶放大器 AD8494配置为环境温度传感器,其输出电压用作LTC6990的输入,从而生成一个温度-频率转换器的信号链。

GPIO

图1. 简单的温度-频率转换器。

如何将温度输入转换为频率输出?

如今,许多现代电子设备都需要板载温度监控系统。将模拟信号转换为脉宽调制信号或数字信号的方法已有大量的文献记载。但是,如果测量解决方案需要一个ADC,则存在一些与成本、精度和速率相关的不利因素。通常,测量越精确,解决方案就越昂贵。该电路提供了一种低成本且易于连接的通用解决方案,其精度可以根据温度测量系统的需求而改变。

AD8494是一款热电偶精密放大器,但它也可以通过将其输入短路接地用作环境温度传感器。输出则定义为:

GPIO

在使用单极性电源的电路中, –VS=地电压(0 V),同时还必须向AD8494的REF引脚施加一个失调电压,从而使输出电压偏置高于地电压,即使环境温度为负时也是如此。

温度传感器的输出电压 VOUT定义为:

GPIO

在VCO模式下,LTC6990的频率输出定义为:

GPIO

由于AD8494的输出电压是LTC6990的 VCTRL 因此可以用公式1来替换公式2中的 VCTRL 设定 RSET = R­VCO 则得到以下结果:

GPIO

这样就可以解出 Tambient 消掉电压单位,于是得到公式5:

GPIO

得到频率输出了,有什么用处呢?

频率输出的美妙之处在于可以使用单个GPIO引脚进行传感器测量。如果使用图3所示的同步计数器电路,那么在其CLK_IN输入端将始终会观察到时钟的上升沿。如果将LTC6990的 FOUT 用作输入时钟,则每次检测到 FOUT 的上升沿时,计数器都会递增,从而创建了一个周期计数器。如果每次测量之间的时间间隔保持恒定,则可以计数给定时间间隔内的周期数,并可通过浮点运算或查找表计算出频率。将采集时间 TAcquisition n除以计数所得的周期数,可以得出 FOUT的周期。对该关系式取倒数则得到公式6。

GPIO

图2. 一个以LTC6990输出作为其时钟输入的4位同步计数器。

GPIO

Verilog代码示例显示了一个通过使用FPGA上的单个GPIO输入来计数周期数的函数。采集周期越长,测量结果就越精确。在下述代码示例中,使用了一个16位计数器来提高分辨率。同时还假定在架构的更高层级执行采集时间测量控制逻辑。

GPIO

图3. Verilog代码示例。

结论

在本应用中,我们讨论了一种新型的温度-频率转换器。它提供了一种精确测量温度的低成本方法。如果温度超过–40°C至+125°C的工业温度范围,则可在传感器的输入端安装一个热电偶。下图总结列出了测量系统的误差。它说明了环境温度与输出频率以及系统精度之间的线性关系。尽管此解决方案可能无法提供非常好的温度分辨率结果,但对于可接受大约±2°C误差的应用,它提供了一个经济简单的温度测量接口。此外,采用电压-频率转换器的概念也可用于测量其他类型的传感器输出,且无需使用ADC。

责任编辑:haq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分