基于FPGA的多路信号采编模块设计论文.docx
《基于FPGA的多路信号采编模块设计论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的多路信号采编模块设计论文.docx(43页珍藏版)》请在冰点文库上搜索。
![基于FPGA的多路信号采编模块设计论文.docx](https://file1.bingdoc.com/fileroot1/2023-8/14/1a78efaa-dd98-4e2b-a764-864145830ec0/1a78efaa-dd98-4e2b-a764-864145830ec01.gif)
基于FPGA的多路信号采编模块设计论文
1引言
1.1课题背景及研究的目的和意义
数据采集是计算机在监测管理和控制一个系统的过程中取得原始数据的主要手段。
数据采集系统是计算机与外部世界联系的桥梁,是获取信息的重要途径。
数据采集系统目前被广泛的应用于自动化控制及信号处理的各个领域。
一些市场上出售的小型数据采集器实际上就是全功能的计算机。
它们功能强大具备实时采集、自动存储、即时显示、即时反馈、自动处理、自动传输功能;为现场数据的真实性、有效性、实时性、可用性提供了保证,并能方便输入计算机,已广泛应用在工业、农业、商业、交通、物流、仓储等行业[1]。
一个大型的数据采集系统由以下几个部分组成:
数据采集、数据传输、数据存储、数据处理、分析和显示等。
数据采集技术的发展离不开传感器和计算机控制技术[2]。
网络化测量、采集和控制是其发展的必然趋势。
因此,根据当前数据采集发展的实际情况,研制开发符合生产需要的多功能智能化的数据采集器具有重大的现实意义。
由此可见,研究本课题有着一定的实用性。
1.2数据采集的现状及发展
数据采集技术是以前端的模拟信号处理、模拟信号数字化、数字信号处理和计算机等高科技为基础而形成的一门综合技术,是联系模拟世界与计算机之间的桥梁。
在生产过程中,应用数据采集系统可对生产现场的工艺参数进行采集、监视和记录,为提高产品质量、降低成本提供信息和手段。
在科学研究中,应用数据采集系统可获得大量的动态信息,是研究瞬间物理过程的有力工具,也是获取科学奥秘的重要手段之一[3]。
数据采集技术可以使许多抽象的模拟量数字化,进而给出其量值,或通过信号处理对该模拟量进行分析。
与模拟系统相比,数字系统具有精度高、可靠性高等优点。
像温度、压力、位置、流量等模拟量,可以通过不同类型的传感器将其转换为电信号模拟量(如电压、电流或电脉冲等),再通过适当的信号调理将信号送给模拟数字转换器(ADC),使其转换为可以进一步处理的数字信号送给数字信号处理器或微处理机。
反之,数字信号处理器或微处理机可通过数字模拟转换器(DAC)将其产生的数字信号转换为模拟信号,再通过信号调理进行输出[4]。
数据采集目前所面临的技术难题就是采集速率越来越高,以及大量的数据输出问题,由此引发了新的问题。
如高速环境下PCB板的设计,系统的抗干扰、可靠性、高速数据流的远距离传输,以及与后续部分的处理接口等。
现代数字信号处理技术的飞速发展,使得在一个较小的系统里完成数据的实时处理成为可能。
在某些微机检测场合,还可能会产生一些带宽或边沿陡峭的模拟信号,特别在航天遥感中,往往还需要多通道数据采集,而且由于存在覆盖面积大、周期性强的特点,采集的数据量大,因此往往对数据采集系统的采集、传输速度和精度提出了较高的要求[5]。
数据采集与计算技术的结合作为信息技术的重要组成部分,对提高企业的信息化管理层次、提升企业在市场上的竞争力至关重要。
随着中国信息产业的高速发展,企业对管理运作提出了更高的要求,因此数据采集技术将越来越为人们所关注和运用。
1.3主要研究内容
在理解数据采集原理的基础上,设计一个多路模拟信号的采集模块,利用FPGA的控制,实现多路信号的切换与采编,并把采集编帧后的数据上传到计算机进行存储和分析。
在本系统中,主要研究内容有以下三点:
①如何通过FPGA控制多路模拟开关实现多路信号的选通;
②如何实现通过FPGA控制A/D转换器将模拟信号转换为数字信号;
③如何以FPGA为核心,将采编编帧后的数据通过USB单片机上传到计算机进行存储和分析。
基本技术要求:
(1)数据采集系统的设计基本要求:
①能够完成多路信号同步高速采集;
②具有较高的采样精度;
③降低系统工作功耗;
④具备较强的数据处理能力和灵活应用能力;
⑤对硬件成本进行控制,在能够实现技术指标的前提下尽量选用低成本方案。
(2)在实现高精度、低功耗的设计要求下,确定采集系统的性能指标如下:
①能够同步采集12路输入信号;
②达到12位以上的模数转换精度;
③通道信号的采样率达到30KHZ;
2硬件电路设计
2.1系统框图与工作原理
图2.1系统总框图
本设计的系统框图如图2.1所示。
该信号采集系统主要分为5个部分:
USB单片机通信部分、FPGA主控部分、信号调理电路部分、多路模拟开关部分、模数转换部分。
USB通信模块的设计利用了已有的研究成果,后四部分才是本次设计的重点。
本系统的具体工作原理:
输入12路0-5V的模拟信号,经过信号调理电路变为0-2.5V,由FPGA控制多路模拟开关对多路信号进行选通,再经过A/D转换,最后把采集编帧后的数据上传到计算机进行存储和分析。
2.2主要器件的选择
2.2.1FPGA芯片的选择
本系统选用的为Xilinx的Spartan-II系列中的XC2S100-6PQ208芯片,此芯片的核心电压为2.5V,I/O口电压为3.3V,具有与通用5V数字电路直接连接的能力。
速度等级是-6,采用PQFP封装类型,管脚数有208个,最大可用的用户I/O数为140个。
系统门数有100000个,逻辑单元数(LC)为2700个;切片数(Slice)为1200个;BlockRAM有10个,是完全同步的双端口RAM,总容量为40K;分布式RAM位总数是38400bits[6]。
断电后,程序会保留在FPGA中,不会清除,使应用更加方便。
2.2.2多路模拟开关的选择
在选择多路模拟开关时需考虑到以下因素[7]:
通道数量:
通道数量对传输的被测信号的精度和切换速度有直接的影响。
开关时间:
由于模拟开关器件中有导通电阻且有寄生电容,这就会产生一定的导通和断开时间,所以在选择开关时应考虑开关时间,并选择开关时间较小的器件。
切换速度,对于传输快速变化的电路,要求开关的传输速度高,同时应考虑其频率
不大于A/D的转换频率,从而使得电路性能更优。
基于上述因素及本设计要求,本设计选用的多路模拟开关是ADG706,ADG706是一片16选1的芯片,单电源供电时电压范围是1.8V-5.5V,本设计中供电电压为5V,40ns的转换时间,采用TSSOP的封装形式[8]。
如图2.2是ADG706的管脚图,S1-S16是信号的输入,D是信号输出,由A0-A3四个引脚决定输出的路数。
本设计中用到了S1-S12路输入,所以A0-A3的变化范围是0000-1011,其真值表如表2.1。
表2.1真值表
图2.2ADG706管脚图
2.2.3A/D转换芯片的选择
在选A/D转换器前,常常要考虑到主要技术指标,A/D转换器的主要技术指标有[9]:
分辨率:
指数字量变化一个最小量时模拟信号的变化量,定义为满刻度电压与
的比值。
通常以数字信号的位数n来表示。
转换速率:
是指完成一次从模拟转换到数字的A/D转换所需的时间的倒数。
积分型A/D的转换时间是毫秒级属低速A/D,逐次比较型A/D是微秒级属中速A/D,全并行/串并行型A/D可达到纳秒级。
采样时间则是另外一个概念,是指两次转换的间隔。
为了保证转换的正确完成,采样速率必须小于或等于转换速率。
因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。
量化误差:
量化误差由于A/D的有限分辩率而引起的误差,即有限分辩率A/D的阶梯状转移特性曲线与无限分辩率A/D(理想A/D)的转移特性曲线(直线)之间的最大偏差。
通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。
偏移误差:
偏移误差指输入信号为零时输出信号不为零的值,可外接电位器调至最小。
满刻度误差:
满刻度误差指满度输出时对应的输入信号与理想输入信号值之差。
线性度:
线性度是指实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。
其他指标还有:
绝对精度、相对精度、微分非线性、单调性和无错码、总谐波失真和积分非线性。
综合以上几个主要参数来考虑,本设计中数模转换部分选用的芯片为AD7492,AD7492的主要特性如下:
●额定电压VDD为2.7V-5.25V。
●功耗低:
在5V电压下,数据通过率为1MSPS时,功耗一般为8.6mW。
●输入频带宽:
100kHz输入时,信噪比为70dB。
●具有片内+2.5V参考电压。
具有片内时钟振荡器。
●具有可变电压/数据通过率管理功能,转换时间由内部时钟决定。
有部分和全部两种休眠模式,采用休眠模式可在低数据通过率时使效能比达到最大。
休眠模式的电流一般为50nA。
●带有高速并行接口,具有柔性数字接口。
通过设定VDRIVE引脚可控制I/O引脚上的电压。
●无管线延时。
是一个标准的逐次逼近式A/D转换器,可在采样瞬间精确控制,采样瞬间借助于CONVST的输入和间隔停止转换来控制。
●外围元器件较少,可优化电路板空间。
●采用24引脚SOIC或TSSOP封装形式。
在5V电压时,若速度为100kSPS,则平均电流为230μA。
该器件内部可提供2.5V参考电压,同时,该参考也对外部有效。
器件的转换速度由内部时钟决定。
其内部结构如图2.3所示[10],其管脚图如图2.4所示,引脚功能如表2.2所示。
图2.3AD7492内部结构图图2.4AD7492管脚图
表2.2AD7492引脚功能图
引脚
引脚名称
功能
1-3
DB9-DB11
数字线9-11位
4
AVDD
模拟电源端
5
REFOUT
2.5V±1%参考电压输出
6
VIN
模拟输入端,单端模拟输入路线,输入电压范围0-2.5V,此引脚为直流高阻抗
7
AGND
模拟地
8
片选引脚
9
读信号输入端,通常连接到逻辑输入端,以读取转换结果
10
启动转换输入信号端
11
PS/
休眠模式选择端
12
BUSY
忙信号输出端
13-18
DB0-DB5
数字线0-5位
19
DGND
数字地
20
DVDD
数字电源端
21
VDRIVE
输出驱动电路和数字输入电路的供电电源为2.7V-5.25V。
此电源电压决定数据输出引脚的高电
平电压和数字输入的阈值电压。
22-24
DB6-DB8
数字线6-8位
AD7492有两种工作状态:
高速采样状态(High-SpeedSampling)和部分或全部睡眠状态(PartialorFullSleepMode)。
本次设计用高速采样状态(High-SpeedSampling),其时序如图2.5所示,参数如表2.3所示:
图2.5AD7492时序图
表2.3参数表
参数
max
min
单位
t2
10
40
ns
tconvert
880
680
ns
t9
120
120
ns
在这种模式下,PS/FS置高,CS和RD置低。
输入信号从CONVST的下降沿开始被采样,放大器从跟踪态转换为保持态,转换也随之启动,此时有一个转换建立时间;BUSY在转换起始时为高电平,810ns后跳变为低电平以表示转换结束。
在此模式下,一个新的转换开始应该在BUSY变低140ns后。
这段采集时间可以使跟踪/保持电路准确地采集输入信号。
这种模式可以使AD以它最快的传送率工作。
2.3硬件电路各模块的设计
2.3.1FPGA外围电路设计
(1)电源转换电路
XC2S100的管脚电压为3.3V,内核电压为2.5V,因此本设计中采用一片TPS70358来实现5V到3.3V和2.5V的转换,以满足XC2S100的供电要求。
电源转换电路如图2.6所示:
图2.6FPGA供电电路
(2)时钟电路
XC2S100上有4个全局时钟输入端口,GCLK0、GCLK1、GCLK2和GCLK3,在此仅使用GCLK0。
本系统采用40MHz的晶体振荡器产生时钟信号。
时钟发生电路如下图所示。
图2.7时钟发生电路
(3)配置电路
在Xilinx的FPGA中采用了SRAM制造工艺,需要提供外部存储器PROM、EPROM、Flash等来存储FPGA的下载文件,上电后数据会自动下载到FPGA内部,对FPGA进行配置。
FPGA有多种配置方式,包括主串、从串、主并、从并、SPI、BPI以及JTAG等方式[11]。
串行方式即逐位元串列配置,接线简单,但速度比较慢,并行方式即8位元同时传输,速度快,但接线复杂。
串列方式和并行方式都需要外部加PROM作为配置文件的载体。
FPGA的下载配置设计是FPGA应用设计的关键环节,也是最容易出现问题的环节。
Xilinx公司系列FPGA的下载配置模式见表2.4[12]。
表2.4FPGA的配置模式
配置模式
M0
M1
M2
CLK方向
数据位宽
主串模式
0
0
0
Out
1
从串模式
1
1
1
In
1
从并模式
0
1
1
In
8
边界扫描模式
1
0
1
N/A
1
本设计中选用主串模式(M0=0,M1=0,M2=0),在主串模式中必须使用Xilinx公司专用的PROM。
XC2S100的配置文件大小为781,216位,选择XCF01SV020作为配置PROM。
在该模式下,FPGA产生配置时钟CCLK驱动外部串行PROM,FPGA将PROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
第一次数据下载通过Xilinx公司提供的开发软件ISE将配置文件烧写到XCF01SVO20中,此后每次上电后,XCF01SVO20会在CCLK的驱动下将配置数据写入FPGA的内部配置存储器。
配置电路的原理图如图2.8所示。
图2.8FPGA配置电路
其中,配置电路与FPGA相接时须接入4.7K的上拉电阻,以保证电路的正常工作。
本设计中使用ByteBlaster并口下载电缆下载程序,ByteBlaster有两种配置模式,即被动串行模式(PS)和边界扫描模式(JTAG)[13]。
本系统采用边界扫描模式。
(4)去耦电路
在每个电路芯片的电源引脚上都要并接一个去耦电容,其作用是降低电路中因负载变化而引起的噪声、减少干扰信号并使信号稳定。
下图是本模块中FPGA的VCCINT引脚的去耦接法。
图2.9去耦电容
电路中其他芯片也相应的接去耦电容。
2.3.2信号调理电路的设计
根据设计需要,本设计的信号调理电路选用LM324四运放集成电路,它具有电源电压范围宽、静态功耗小、可单电源使用、价格低廉等优点,因此被广泛应用在各种电路中。
它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。
LM324所起的作用是电压信号跟随[14]。
由于输入的电压信号是0-5V,电压通过LM324跟随直接输出到AD模块也应该为0-5V。
但是本设计采用AD7492的单端输入信号电压为0-2.5V,所以在LM324的输入端接入分压电路进行调理,从而使输入的电压信号VI在所要求的幅值范围内。
分压公式如式2.1所示。
(2.1)
本设计中,设计信号调理电路时,输入信号共十二路,每四路为一组,共有三组,其中第一路的电路图如图2.10所示。
图2.10信号调理电路
2.3.3多路模拟开关部分设计
多路模拟信号经信号调理电路后需经过选通电路选择一路进行A/D转换,多路模拟开关选用的是ADG706。
如图2.11为ADG706在本设计中的应用电路图。
图2.11ADG706应用电路图
OUT1-OUT12接经信号调理电路输出的12路模拟信号,由于采用的是单电源5V供电,所以VDD接5V,而VSS接地。
AD0-AD4用来控制多路信号的输出。
2.3.4模数转换部分设计
AD7492的接法如图2.12所示,JP2插头连接到FPGA的I/O口,由FPGA对A/D进行控制。
BUSY信号作为FPGA的输入信号,PS/FS、CS、RD、和CONVST信号作为AD7492的控制信号。
VIN端接多路开关输出信号。
通过FPGA逻辑控制模块对A/D端口的控制便可使A/D模块进行工作,完成模数转换。
图2.12AD7492应用电路图
2.4电路抗干扰设计
2.4.1元器件布局
在元件布局时,应该将数字电路、模拟电路以及电源电路分别放置,将高频电路与低频电路分开。
有条件的应使之各自隔离或单独做成一块电路板。
此外,布局中还应特别注意强、弱信号的器件分布及信号传输方向途径等问题[15]。
在本设计中首先,在保证电性能合理的原则下,元器件相互平行或垂直排列,在整个板面上分匀、疏密一致;同时,相邻的两个元器件之间保持一定的间距,避免相互碰接。
其次,本设计中电源和地滤波电路中的去耦电容较多,在放置去耦电容时,将电容尽量靠近电源、接地引脚。
2.4.2元器件布线
振荡器外壳接地,时钟线尽量短。
在版图布线完成后,对布线进行优化;同时,经初步网络检查和DRC检查无误后,对未布线区域进行地线填充[16]。
本设计中,在元器件布局确定后,先完成它们的布线,尽可能做到成组、平行分布,同时尽可能的短,之后进行各种控制信号的布线。
最后处理电源和接地引脚。
在布线时,采用45°或135°的折线布线,以减小高频信号的辐射。
2.4.3降低电源线和地线干扰
为了消除电源线和地线对电路的干扰,在器件及电路板上增加滤波电容,以提高器件的抗干扰能力。
本设计对所有芯片的VCCINT引脚都接上了一个去耦电容,其作用是降低电路中因负载变化而引起的噪声、减少干扰信号使信号稳定。
在数字逻辑电路中,如果干扰信号的电平超过逻辑元件的噪声容限电平,会使逻辑元件产生误动作,导致系统工作紊乱。
由于本系统中既有数字地,又有模拟地,两个“地”之间的电位差就产生了共模干扰。
因此采用模拟地和数字地分开设计的方法。
最后在电路板上使用一个0欧姆电阻对他们单点接地,从而来抑制干扰。
3系统逻辑程序设计
3.1程序语言与软件
VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛[17]。
VHDL主要用于描述数字系统的结构、行为、功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点[18]。
一般的VHDL系统设计流程如图3.1所示:
图3.1VHDL系统设计流程
本设计采用了由Xilinx公司提供的集成化开发平台——FoundationSeriesISE(简称ISE)。
ISE7.1软件提供了可加强现有可编程设计流程并可适应客户特有设计方法的设计选项。
通过一种名为高级引脚输出与区域约束编辑器(PACE)的管理工具来简化器件IO规划,包括交互式电压支持和差分对识别指南。
ISEloorplanner(ISE布局规划器)工具中所提供的增量设计,模块化设计,宏生成器和区块规划功能,可使设计时间比传统设计方法缩短多达50%。
这些都可大大缩短重新编译时间,并提供基于小组(team-based)的设计性能优势[19]。
一个完整的FPGA设计流程主要由设计综合、功能仿真、设计实现、布局布线仿真、时序仿真和下载设计等模块组成。
3.2程序模块分析与仿真
根据第二章所述的设计思路,在ISE软件中的系统顶层图为:
图3.2系统顶层图
程序顶层图主要由以下几部分组成:
上电自复位模块、控制A/D模块以及FIFO缓存三个模块。
上电复位通过延时使得各个程序模块进入复位状态;A/D模块控制A/D转换器进行模数转换并进行帧计数;FIFO缓存模块作用是临时存储A/D转换后的数据,并配合上位机软件将这些数据通过USB单片机传输到PC中进行分析。
3.2.1上电自复位模块
此模块作用是在FPGA上电期间让各个模块的时序同步,并且为软件内部变量初始化值。
上电复位主要利用计数器计数延时让复位信号grst保持一定时间的高电平,复位时间为30ms,在这期间,每个模块都进入复位状态,停止工作,并将数据初始化。
其VHDL代码如下:
iffosc'eventandfosc='1'then
ifcnt<599999then
cnt:
=cnt+1;
grst<='0';
else
grst<='1';
endif;
endif;
3.2.2控制AD模块
实现一次12路AD转换的程序流程图如图3.3所示:
开始
系统复位
AD启动,初始化
通道转换,传送数据
N
所有通道转换完毕
Y
帧计数
结束
图3.3A/D转换流程图
图3.4控制A/D模块顶层图
如第二章所讲,由PS/FS、CS、RD、BUSY和CONVST五个端口控制AD7492进行模数转换,且在设计中选用AD7492的高速采样状态。
此状态下CS、RD置低,PS/FS置高。
其顶层图如图3.4所示。
具体过程:
grst为复位信号,当grst为低电平时,计数器count清零,各个模块进入复位状态;当grst为高电平且时钟信号fosc有上升沿时,计数器开始计数。
count为2-3时,产生convst下降沿,启动A/D;count为5-50时,进行A/D转换,转换完成后busy信号为低,将转换得到的12位数存入相应寄存器中;count为53时,将转换得到的数字量的高4位前面加4个‘0’后放到fifo数据线上;count为54时,产生写信号,将其写入fifo;count为56时,通道加1;count为58时,将转换后的数字量的低8位放到fifo数据线上;count为59时产生写信号,将数据写入fifo。
当12信号都转换完毕后,进行帧计数,帧计数一共32位。
当count为63时,帧计数最低8位放到fifo数据线上;count为64时,产生写信号,将数据写入fifo;count为68时,帧计数15-8为放到fifo数据线上;count为69时,产生写信号,将数据写入fifo;count为73时,帧计数23-16位放到fifo数据线上;count为74时,产生写信号,将数据写入fifo;count为78时,帧计数31-24位放到fifo数据线上;count为79时,产生写信号,将数据写入fifo;count为83时,“EB”放到总线上;count为84时,产生写信号,将数据写入fifo;count为88时,“90”放到总线上上,帧计数加1;count为89时,产生写信号,将数据写入fifo。
其中‘EB’、‘90’为帧标志。
一路模拟信号转换为12位数字信号的时序仿真图如图3.5所示。
在一路模拟信号的转换仿真图中,可以看出cnvst与busy的跳变时序如第二章所述,在给出写信号wrclk后,依次输出数据的高8位和低8位。
图3.5一路AD转换仿真时序图
12路模拟信号转换为12位数字信号的时序仿真图如图3.6所示。
本设计完成一次12路模数