如何用单个赛灵思FPGA 数字化数百个信号

发布时间:2016-5-25 10:46    发布者:eechina
关键词: FPGA , 数字化 , 信号
作者:William D. Richard
副教授
华盛顿大学圣路易斯分校
wdr@wustl.edu

Mitchell Manar
学生
华盛顿大学圣路易斯分校

Jeremy Tang
学生
华盛顿大学圣路易斯分校

每个输入通道仅使用一个电阻和一个电容,就可以数字化高频模拟输入信号。

在新型赛灵思 FPGA 上使用低电压差分信号(LVDS),只需一个电阻和一个电容就能够数字化输入信号。由于目前这一代赛灵思器件上提供有数百个 LVDS 输入,理论上使用单个 FPGA 就能够数字化数百个模拟信号。

我们团队近期探索了可能的设计领域的一隅,对中心频率为 3.75MHz 和精度为 5 位的有限带宽输入信号进行了数字化,同时还针对 128 元线性超声阵列换能器的输出信号研究了多种数字化方案。首先让我们详细介绍一下演示项目。

2009 年赛灵思推出了 LogiCORE™ 软 IP 核。结合外置比较器、一个电阻和一个电容,就可实现一种能够数字化频率高达 1.205kHz[1] 输入信号的模数转换器(ADC)。

用 FPGA 的 LVDS 输入取代外置比较器,同时结合使用增量调制器 ADC 架构,仅使用一个电阻和一个电容就能数字化频率高得多的模拟输入信号。

ADC 拓扑和实验平台

使用赛灵思 FPGA 上的 LVDS 输入实现的单通道增量调制器 ADC[2]的方框图见图 1。这里模拟输入驱动 LVDS_33 缓冲器非反相输入,输入信号范围基本为 0-3.3V。以比模拟输入信号频率高得多的时钟频率对 LVDS_33 缓冲器输出进行采样并通过一个 LVCMOS33 输出缓冲器和一个外置一阶 RC 滤波器反馈给 LVDS_33 缓冲器的反相输入。采用这一电路,只要选择合适的时钟频率 (F)、电阻 (R) 和电容 (C),反馈信号就会跟随输入模拟信号。

简单而且所用元件数少,让这个方法颇具吸引力。而且由于 LVDS_33 输入缓冲器有相对较高的输入阻抗,在许多应用中传感器输出可以直接连接到 FPGA 输入,无需前置放大器或缓冲器。

作为实例,图 2 显示的是在 F=240MHz、R=2K 和 C=47pF 时的输入信号(黄色、通道 1)和反馈信号(蓝色、通道2)。所示的输入信号是用 Agilent 33250A 函数发生器使用其 200MHz、12 位任意输出函数功能生成的。输入信号的傅里叶转换由小组使用的Tektronix DPO 3054 示波器计算完成,显示为红色(通道 M)。在这些频率上,示波器探头的输入电容(以及接地问题)不会降低示波图所显示的反馈信号的质量,但图 2 的确体现了该电路的运行情况。

通过对 1 Vpp 3.75MHz 正弦波运用布莱克曼–纳托尔 (Blackman-Nuttall) 窗口,我们定义了图 2 所示的有限带宽输入信号。虽然理论上窗口化信号的本底噪声基本比中心频率的幅度小 100dB,Agilent 33250A 函数发生器的采样频率和 12 位精度让演示信号质量远逊于理论水平。由于换能器的机械属性,众多超声换能器产生的中心频率接近 3.75MHz 的输出信号自然是有限带宽信号,因此对采用这种方法来说是理想的信号源。

我们使用 Digilent Cmod S6 开发模块[3]配合安装在小型 PCB 上的赛灵思 Spartan®-6 XC6SLX4 FPGA,并使用 8 个 RC 网络和输入连接器,让圆形系统来同时数字化多达 8 路信号,即得到图 2 所示的图。每个通道并联端接一个 50Ω 的接地电阻,以正确端接信号发生器的同轴电缆。需要注意的是为实现这样的性能,我们小组将 LVCMOS33 缓冲器的驱动强度设置为 24mA,压摆率设置为 FAST,如图 5 中的实例 VHDL 源代码中记录的情况。

使用一个外部电阻和一个外部电容的单通道增量调制器 ADC

使用一个外部电阻和一个外部电容的单通道增量调制器 ADC

图 1 - 使用一个外部电阻和一个外部电容的单通道增量调制器 ADC。

该示波图所示的是 F=240MHz、R=2K 和 C=47pF 时 Agilent 33250A 函数发生器产生的 3.75 MHz 输入信号(黄色 ...

该示波图所示的是 F=240MHz、R=2K 和 C=47pF 时 Agilent 33250A 函数发生器产生的 3.75 MHz 输入信号(黄色 ...

图 2 - 该示波图所示的是 F=240MHz、R=2K 和 C=47pF 时 Agilent 33250A 函数发生器产生的 3.75 MHz 输入信号(黄色,通道 1)和反馈信号(蓝色,通道 2)。
由 Tektronix DPO 3054 示波器计算完成的输入信号傅里叶转换显示为红色(通道 M)。

定制的原型电路板还支持使用 FTDI FT2232H USB 2.0 微型模块[4],用于把数据包化的串行比特流传输到主机 PC 上供分析。图 3 所示的是当馈给图 2 的模拟信号时,原型电路板产生的比特流的傅里叶转换幅度。与 240MHz 采样频率的分谐波有关的峰值清晰可见,另外还有与输入信号相关的 3.75MHz 频率下的峰值。

大量抽头

通过给比特流施加带通有限脉冲响应 (FIR) 滤波器,就能够产生模拟输入信号的 N 位二进制表达:ADC 输出。但是由于数字比特流的频率远远高于模拟输入信号,用户需要使用带有大量抽头的 FIR 滤波器。不过由于被滤波的数据只有 0 和 1 两个数值,所以无需使用乘法器(只需要加法器将 FIR 滤波器系数相加即可)。

图 4 所示的 ADC 输出是在主机 PC 上使用我们用免费在线 FIR 滤波器设计工具 TFilter[5]设计的中心频率为3.75MHz 的 801 抽头带通滤波器产生的。该滤波器在 2.5MHz - 5MHz 通带外的衰减率为 36dB 甚至更高,3MHz - 4.5MHz 之间的纹波为 0.58dB。
图 4 所示的 ADC 输出信号的精度大约为 5 位。这是最终的过采样率的函数,用户可以使用针对较低输入频率优化的设计来获得更高精度。

图 4 所示的 ADC 输出信号在 240MHz 上也被严重地过采样,可以大幅度缩小 ADC 输出带宽。在带通滤波器和抽取模块的硬件实现中,在通过抽取将有效采样率降至 1/16 到 15MHz 时(比有限带宽输入信号的最高频率快 3 倍),可以只计算第 16 个滤波器输出值,从而降低硬件需求。

本图所示的是与图 2 相关的配置产生的比特流的傅里叶转换

本图所示的是与图 2 相关的配置产生的比特流的傅里叶转换

图 3 - 本图所示的是与图 2 相关的配置产生的比特流的傅里叶转换。

使用中心频率为 3.75MHz 的 801 抽头带通滤波器产生的 ADC 输出

使用中心频率为 3.75MHz 的 801 抽头带通滤波器产生的 ADC 输出

图 4 - 使用中心频率为 3.75MHz 的 801 抽头带通滤波器产生的 ADC 输出。

图 5 所示的是与 Digilent Cmod S6 开发模块结合使用,产生图 2 所示的反馈信号以及与图 3 的傅里叶转换有关的比特流数据的 VHDL 源代码。一个 LVDS_33 输入缓冲器直接实例化并分别连接到模拟输入和反馈信号 sigin_p 和  sigin_n。内部信号 sig  由 LVDS_33 缓冲器的输出驱动,并由内置的触发器采样,以产生 sigout。信号 sigout 是经滤波用于产生N位ADC输出的串行比特流。我们使用免费的赛灵思 ISE® Webpack 工具实现该项目[6]。

图 5 所示的是 VHDL 代码和与图 1 的电路相关的 UCF 文件部分。

VHDL 源代码
LIBRARY IEEE ;
USE        IEEE.STD_LOGIC_1164.ALL ; LIBRARY UNISIM ;
USE        UNISIM.VCOMPONENTS.ALL ;
ENTITY deltasigma IS
PORT (clk        :IN        STD_LOGIC ;
sigin_p        :IN        STD_LOGIC ;
sigin_n        :IN        STD_LOGIC ;
sigout        :OUT STD_LOGIC) ; END deltasigma ;
ARCHITECTURE XCellExample OF deltasigma IS SIGNAL sig :STD_LOGIC ;
BEGIN
myibufds:IBUFDS
GENERIC MAP (DIFF_TERM        => FALSE,
IBUF_LOW_PWR => FALSE, IOSTANDARD        => “DEFAULT”)
PORT MAP (O        => sig,
I        => sigin_p, IB => sigin_n);
mydeltasigma:PROCESS(clk) BEGIN
IF (clk = ‘1’ AND clk’EVENT) THEN
sigout <= sig ; END IF ;
END PROCESS mydeltasigma ; END XCellExample ;
UCF文件
NET “clk”        LOC = J1 |IOSTANDARD = LVCMOS33; NET “sigin_p” LOC = N12|IOSTANDARD = LVDS_33; NET “sigin_n” LOC = P12|IOSTANDARD = LVDS_33;

NET “sigout”        LOC = P7 |IOSTANDARD = LVCMOS33| SLEW = FAST|DRIVE = 24;

图 5 - VHDL 源代码和 UCF 文件内容

减少元件数量

本文描述的 ADC 架构已经被近期发表的几篇文章不准确地引用为德尔塔-西格玛 (ΔΣ) 型架构[7]。虽然真正的ΔΣ型 ADC 有优势,这种方法的简便性和元件数少使之对部分应用有吸引力。而且由于 LVDS_33 输入缓冲器有相对较高的输入阻抗,在许多应用中传感器输出能够直接连接到 FPGA 输入,无需使用前置放大器或缓冲器。这在许多系统中都能体现出明显的优势。

本文方法的另一个优势是通过叠加能够“混合”多个串行比特流,使用单个滤波器就能恢复输出信号。例如在基于阵列的超声系统中,串行比特流可以延迟时间来实现聚焦算法,然后以向量方式相加,这样使用一个滤波器就能恢复数字化且聚焦的超声波向量。

使用 FIR 滤波器生成 ADC 输出是一种简单直观的暴力方法,这里主要用于演示目的。在大多数设计中,ADC 输出将使用传统的积分器/低通滤波器解调器拓扑[2]生成。

参考资料
1.        XPS 西格玛-德尔塔(ΔΣ)型模数转换器(ADC) V1.01A,DS587,2009 年 12 月 2 日
2.        R. Steele, 增量调制系统, Pentech Press (伦敦), 1975 年
3.        Digilent Cmod S6 参考手册,Digilent Inc 公司, 2014 年 9 月 4 日
4.        FT2232H 微型模块产品说明书,V1.7,Future Technology Devices International Ltd.公司,2012 年
5.        TFilter,免费在线 FIR 滤波器设计工具,http://t-filter.engineerjs.com/
6.        USE 深度辅导,UG695 (V13.1),赛灵思公司,2011 年。
7.        M.Bolatkale 和 L.J。Breems,高速和大带宽西格玛-德尔塔(ΔΣ)型 ADC,Springer,2014 年 5 月版
本文地址:https://www.eechina.com/thread-166364-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表