基于FPGA的主从式高速数据采集与传输系统
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。可以应用于检测、控制等系统中,目前已应用于某测控系统。
- 基于DSP和USB的三维感应测井数据采集系统(06-14)
- 基于DSP的USB口数据采集分析系统设计(09-22)
- 基于Linux平台的天气雷达高速数据采集系统设计(03-13)
- 基于CPLD的线阵CCD数据采集系统(06-05)
- 100MHz 数字存储示波表样机的研究与试制----数据采集系统设计(一)(06-04)
- 用RS-485构成总线型多点数据采集系统(06-04)