多通道数据采集系统设计
扫描二维码
随时随地手机看文章
摘要 介绍了一种基于FPGA+DSP的多路数据采集系统的设计方案,描述了系统的硬件设计方案和硬件电路,阐述了信息采集过程以及外围通讯接口及软件设计。通过Quartus II8.0及CCS 2进行系统仿真,证明了系统设计方案的可行性。
关键词 数据采集系统;FPGA;DSP;FIFO
在以往数据采集系统中,单片机、DSP常被选作主控制器,但随着FPGA性能的不断提高,具有时钟域高、内部延时小、速度快、全部逻辑南硬件完成等优点,因此在高速数据采集方面FPGA有着较大优势,但也存在难于实现复杂算法的缺点。而DSP适合于高速算法的处理,系统采用FPCA+DSP方案,弥补了系统的不足。系统数据采集的控制、缓存及外围通讯部分,用FPCA硬件实现。算法处理由DSP完成。在线采集的数据存放在DSP外挂的SRAM中。
设计采用DE2、THDB-ADA平台进行开发。DE2平台选用FPGA EP2C35F672。THDB-ADA是针对DE2开发板设计的一款子开发板,由FPGA实现对A/D的控制。在系统中只用到了模块的A/D转换部分。其中芯片AD9248是一款双通道模数转换器。另外DSP选用TI推出的TMS320UC5402。
1 系统设计
数据采集系统硬件原理如图1所示,由图1知DSP收到上位机发送的命令完成系统工作参数的配置,然后向FPGA发送指令,FPGA收到指令后一是对多路模拟开关进行选通让选通信号通过信号调理电路实现电平调整,并进行A/D转换的时序控制,二是把转换好的数据进行数据缓存,当FIFO满时并产生DSP能识别的外部中断信号及标识信号,通知DSP采集数据,最后DSP对采集到的数据进行滤波处理、变换、谱分析。
2 硬件设计
2.1 通道切换电路
系统采用16通道ADG506模拟开关进行各通道的切换。并具有开关速度快、泄漏小等特点。主要有A0~A3,S1~S8,D,EN端口。其中A0~A3是二进制地址信号输入端,译码结果用于选择有效的输出通道;S1~S16是16路信号的输入端,在此可根据需要选择通道数。D是被选择通道的信号输出端;EN是选择开关使能控制端高电平为有效。FPGA通过数据帧来进行通道选择,每次只选择一路,经A/D转换后送入FIFO。
图中,A0~A5表示所选择通道,其中A4,A5恒为0。D0~D1表示帧结构数据起止标识位。
2.2 信号调理电路
信号调理电路对模拟信号进行一定的放大/衰减,使信号的幅度满足A/D芯片要求。前向调理电路采用高速低噪声的模拟开关MAX4545去选择不同的反馈电阻,同模拟运算放大器MAX817构成标准的反相运算放大器来实现前向调理。MAX817的单位增益3 dB,截止频率高达50 MHz,满足带宽的要求。MAX4545的4根控制线由FPGA设计控制电路去控制,具体是由复位按钮进行边沿触发,使4位输出电平在0001,0010,0100,1000之间轮流切换,将输出电平去控制MAX4545的4根控制线,这就实现了不同的放大倍数之间切换,控制信号与放大倍数的对应关系,如图3所示。
2.3 滤波电路
系统接收到的模拟信号总是混有噪声成分,为达到奈奎斯特采样定理所要求信号的频率范围,需要利用低通滤波器除去干扰信号及抑制混叠现象,即进行衰减与滤除。设计选用二阶巴特沃斯低通滤波电路来滤除信号中的高频分量,其特点是通频带内的响应曲线最大限度平坦,无起伏,而在阻频带逐渐衰减为0.2阶的巴特沃斯低通滤波器幅频。
2.4 FPGA硬件电路设计
FPGA作为接口电路主芯片,充当DSP的前端接口元件,将各种信号转换为DSP能读取的并行格式数据。
FPGA的开发采用自顶向下的设计方法,即指将一个系统按功能划分为不同的模块,而模块再根据需要划分为二级模块,依此直到模块易被实现为止。通过Verilog编程FPGA即可生成双口SRAM模块、ADC接口模块、调理电路放大倍数控制模块、数据接收模块等,以实现对输入信号的采集、存储、处理和输出。
2.5 DSP硬件电路设计
在数据采集过程中,采集的数据缓存在FPGA内部构建的FIFO中在线采集时,通过FPGA与DSP接口将FIFO中的数据转存到DSP外挂的SRAM内,当需要分析数据时再从存储器中取出。DSP外挂Flash存放程序及配置信息。
3 软件设计
3.1 FPGA软件设计
数据在传入FPGA后,直接采用数据在传入FPGA后,可利用SRAM来设计的同步FIFO来缓存采样数据如图4所示:将FIFO抽象为环形数组,并用读或写指针来控制对环形数组的读写。该FIFO提供读使能fiford和写使能fifowr输入控制信号,并指示FIFO的状态非空nempty,非满nfull。未完成一次读写操作地址加1。随着地址的增加,采样数据被依次存入双口SRAM中,当存完数据后向DSP发出信号。
ADC接口模块主要由分频器、通道选择模块及ADC控制模块组成。分频器一方面产牛ADC控制模块的工作时钟,另一方面提供采集启动信号以触发通道选择模块。通道选择控制模块,输出地址信号到多路开关,用来选择采集对应通道的数据信息。该模块由分频器产生的采集信号触发启动。ADC控制模块,主要完成模数转换器的配置与渎取。根据通道选择模块发出的A/D启动信号,按照配置信息对选择的通道进行A/D转换。该模块的数据接收触发信号在一次A/D转换结束后该信号有效,表示开始接收转换结果。为提高准确性,采取平均值滤波的方法,随后将结果输出至寄存器阵列,同时向通道选择模块输出数据有效信号,表示该通道数据采集结束数据有效。
3.2 DSP软件设计
DSP软件设计包括模块化编程,其中包括初始化模块、数据采集模块、通讯模块、FFT功能模块等。
初始化模块涉及锁相环的初始化,Flash的初始化、SRAM的初始化等一锁相环的初始化,系统中PLL输入时钟为50 MHz的晶振,输出时钟为两个,一是DSP内部时SYSCLK1二是EMIF3。为得到这两个时钟而进行初始化。Flash的初始化,EMIF接口对于异步器件的控制通过A1CR来实现,主要根据Flash参数设置数据位宽、读写建立时间、读写选通时间以及读写保持时间。SRAM的初始化,即完成对EMIF内部关于SRAM参数寄存器的初始化。
DSP对数据采集控制主要通过查询与中断两种方式进行。该系统是通过巾断方式进行,即指当FIFO满时产生一个高电平中断。其主要流程由系统初始化和开启中断组成。
初始化程序完成对所有变量及DSP相应寄存器的初始化工作,同时复位SRAM,并完成采集通道及量程的设置,随后开启中断,进入等待中断状态。当检测到中断时进入中断服务程序,并查询FPGA相关寄存器确定是哪一通道的中断,并将数据存于SRAM中。
UART在FPGA内部实现,但接收数据的是DSP。DSP接收数据时UART采用中断方式,即由UART接收FIFO满产生中断通知DSP读取信息。
DSP对采集到的数据进行滤波处理、变换、谱分析,下面以FFT为例对信号进行谱分析。FFT算法基本可分为两大类时域捕取法FFT和频域抽取法FFT。在设计中选择简单实用的时域抽取基二FFT算法。并采用基二的突发输入输出结构。如图5为采样信号经过采样点为512的信号频谱图。
3.3 FPGA与DSP的接口设计
FPGA与DSP两者之间的通信,可分为DSP到FPCA为写操作,FPGA到DSP为读操作。DSP发给FPGA的配置信息为通道切换电路的选通信号,各通道数据采集使能信号及清零信号,UART的数据格式及中断源设置等。FPGA返回给DSP的信息主要有数据采集存储的窄满标志,实际采集的数据,UART的中断信息等。
4 结束语
提出了一种基于FPGA+DSP的高速多通道数据采集系统设计方案,将FPGA及DSP的优势充分结合,并针对间歇性数据传输特征,设计以FIFO作数据过渡。该系统经过测试,工作稳定,满足采集速度及A/D转换精度的要求。