基于FPGA的主从式高速数据采集与传输系统
随着数字技术的飞速发展和数字系统的广泛应用,模拟信号转换为可处理的数字信号,对采集系统的精度、采样率以及数据速率都有更高的要求。对于大型复杂的设备,其故障检测和诊断同样是一项复杂的工作,采集设备的工作状态及环境变化,对操作者了解设备的工作状态,及时对系统的故障作出判断和处理有积极的意义。FPGA器件具有很高的集成度,丰富的资源,用户可编程,使用方便灵活,设计周期短,因而广泛应用于数字系统中。本文介绍了以FPGA为控制核心的高速数据采集与传输系统,以低速串口传输数据量少的上位机控制指令,通过高速USB接口向上位机传输数据量大的采集数据帧,保证指令和数据传输的可靠性,可提供最多32路采集通道,并可通过上位机界面配置采集通道数量和采集电路增益,FPGA控制器根据约定的控制协议执行操作。系统程序设计以ISE 10.1为平台,使用Verilog HDL语言设计实现。系统针对复杂环境的大型设备的运行监测和故障诊断需求,提供一种可应用远程测控的底层数据采集与传输应用[1-3]。
1 系统硬件结构
系统结构如图1所示,系统主要有上位机管理系统、链路管理主控层和通道管理从控制层三个主体部分。上位机管理系统提供人机交互的功能,本文不做详细介绍,系统硬件主体主要由主控层和从控层组成。链路管理主控制层主要实现控制指令解析、数据管理和从控层管理等功能,通道管理从控制层主要功能是通道管理和配置、数据管理和传输。主控层提供3个与从控层通信的差分接口,可支持3块从控层并行工作。
链路管理主控制层由1片Xilinx的FPGA芯片XC3S1500作为控制模块,3组差分芯片对作为主控层与从控层的通信链路,1片RS232和CY7C68013A芯片分别作为控制层与上位机管理系统的下行控制链路和上行数据链路。主控FPGA与采集FPGA是跨印制板连接,使用差分驱动和接收芯片(LVDS391/390)通过屏蔽差分线缆连接,主控层与每个从控层通过1根包含6对差分线的屏蔽线缆连接,上行和下行各3对差分线路,保证板间通信的可靠性。
从控层由1片Xilinx的XC3S200AN芯片作为控制模块构成母板,每2路采集通道组构成采集子板,以双列直插的方式与母板连接,整体结构并行对称,采集母板提供了4个子板接口,可以8路通道并行工作。从控层结构如图2所示,每一路采集通道由AD8253和AD8250组成的前后两级放大,级联的芯片增益可由从控层FPGA通过软件配置,温度传感器DS18B20实时监控系统本身的工作环境温度。
2 控制及数据传输
由系统硬件结构可知,系统有上行和下行两组通信链路,即控制指令链路和数据传输链路。控制指令起于上位机系统,由串口发送到控制层,经主控层解析处理后,分发至相应的从控层,再由从控层执行相应的指令操作。数据传输起于从控层,通过差分线路传输到主控层,在主控层组帧后,写入USB芯片,最后由上位机系统读入显示。指令和数据都约定了特定的格式,以一定的协议进行通信,同时对从控层和采集通道都进行了编号,以此实现控制协议的解析和分发,以及数据管理和上位机解析。
2.1 控制协议
控制协议是由上位机、主控层和从控层共同约定的,控制命令以字为单位,有标志字、控制命令和配置参数三类。其中标志字约定为11111111B,标志字是命令和参数的起始标志,主控层或从控层只有在接收到标志字后,才会解析接下来的数据,判断上位机发出的命令。
控制命令:00000000B、01xxxxxxB、11xxxxxxB和01XXxx
xxB分别约定为系统复位指令、停止转换指令、启动转换指令和从控层配置指令。指令格式如表1所示。
配置参数:XXXXxxxxB,主要有采样率参数和通道配置参数,其中XXXX为通道号,编码为0000~0111B,即0~7号通道。配置参数跟在指令01XX1100B/01XX1110B后时,xxxx为XXXX通道的采样率参数,作为从控层/主控层采样脉冲的参数。配置参数紧接在XX层通道配置计数指令后时,则xxxx为XXXX通道的增益配置参数,高2位为前级放大器增益,低2位为后级放大器增益。
配置命令基本格式如图3所示。在系统上电后以FF00H迫使系统复位,系统复位成功后,同样以FFH开始,发送采样率配置和通道增益配置命令及参数。如配置指令FF_4E_x1H,即第一层所有通道采用同一内采样脉冲,采样率分频参数为1,对应内采样率设置为40 kHz。
2.2 通信协议及数据格式
上文已经介绍了系统各部分的硬件连接,主控层和从控层之间有6对差分线,上行和下行分别3对,下行有复位信号、采样脉冲信号和数据信号线,上行有数据线、同步时钟线和同步使能线。数据信号线以异步串行的方式,主控层向从控层发送命令和配置参数,采样脉冲信号线在不同层采用外采样脉冲或主控层提供的脉冲时使用,以保证不同层间的同步采样。上行数据以SPI同步串行方式传输,数据速率为12.5 Mb/s。
数据格式如图4,一个数据有3 B,由6 bit的头信息编码和18 bit数据位组成。高2位是该从控层的编号,编码范围为00B~11B(0~3层);次高4位为通道编码,0000B~0111B(0~7号通道)为A/D通道编码,1010B(10号通道)为温度传感器信息编码,余下通道编码可作扩展。
3 系统程序结构
主控层主要完成上位机配置命令解析、采集数据组帧,从控层主要执行配置命令、控制A/D通道工作状态,以及采集数据编码上传。
3.1 主控层程序设计
主控层是系统的中间节点,是联系上位机管理系统和下层采集的重要结构。主控层实时接收并解析来自上位机管理系统的命令字和配置参数,同时向从控层分发控制和配置信息。主控层在接收到采集FPGA上传的数据后,组帧发送至USB芯片。
主控层程序结构如图5所示,主要有串口收发模块、状态机控制器、数据接收模块、USB控制器及数据FIFO。串口接收器波特率9 600 b/s,与PC机的标准串口连接。串行发送模块以异步串行方式向从控层发送控制命令和配置参数。缓冲区FIFO是基于乒乓操作机制,大小为4 096 B,缓冲区数据每满512 B,则由USB控制器读入USB芯片CYS68031A[4]。此处USB采用的是同步读写方式,数据速率设置为25 MB/s。
主控层程序流程如图6所示。数据被读入主控层缓冲后,通过查询方式循环读取数据并写入FIFO缓冲区。数据写入FIFO同时是组帧,数据帧的格式:以512 B为一个数据块,每一个数据块的前2 B以FF作为帧同步头,次3 B为帧计数信息,其余507 B为数据空间。
3.2 从控层程序设计
从控层程序结构如图7所示,主体功能有:接收并解析主控FPGA发送的配置参数;根据配置参数进行系统链路自检,配置通道增益;接收主控板采集脉冲并启动A/D转换;读取A/D转换数据并组合编码;对数据进行滤波处理;向主控FPGA上传A/D数据。
系统的流程如图8所示。采集通道的增益配置是在从控层接收到所有通道的配置参数后同步完成。首先配置前级增益,再配置后级。系统的链路自检是由从控层生成一组约定的数据,发送到上位机系统,以判断各层之间的连接状态。在采用相同的采样率时,从控层所有通道保持数据同步,采样率不同时,各通道的数据经过复接同步后再发送主控层。
3.3 FIR滤波器设计
数字FIR滤波器由上位机发送控制命令,对指定的通道数据进行滤波处理,以滤除采集电路的信号干扰。滤波器结构如图9所示,采用半并行对称结构,滤波系数的设计借助MATLAB的FDATOOL,根据系统的既定采样率和参数,设计了2组33阶的系数,系数被储存在ROM中,因滤波器为对称结构,所以ROM只需储存17个系数,系统可根据配置信息选取滤波系数。滤波器框架为串并结合结构,同时可以选择不同的滤波系数,减少滤波器对乘法器资源和逻辑资源的使用。
图10所示为用FDATOOL设计的33阶kaiser窗滤波系数的MATLAB仿真图,β=0.3,截止频率Wc=0.5。输入信号频率f=0.5 MHz,采样频率Fs=5 MHz。
借助仿真软件ModelSim验证FIR滤波器,仿真结果如图11所示。以输入0.5 MHz方波信号为例,采样率设置为6 MHz,经过滤波处理后,得到了0.5 MHz正弦信号。
4 系统测试与数据指标
经过大量的测试分析和统计证明系统具有很好的性能和测量精度。表2所示为部分测量数据分析结果。幅值为10 mV~5 V信号,在不同增益下,直流信号的测量精度平均值可达0.293%,频率为100 Hz交流信号的测量精度平均值可达0.642%。
本系统提供了最大24路的采集通道,系统工作通道可配置、可选择,系统启动迅速,具有很强的实时性,通道间的相位误差小于10°,精度高、数据吞吐量大,并具有一定故障自检能力。系统内采样时钟最小为100 Hz,最大为40 kHz,A/D最大采样频率可达250 kHz,USB的读写能力最大可达到48 MB/s。可以应用于检测、控制等系统中,目前已应用于某测控系统。
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码