大容量数据采集存储系统设计与实现
贾毅婷;张东来;李铁才;王子才;张斌
【摘要】为解决现有数字示波器和数据存储记录仪对复杂系统覆盖性和可靠性测
试不适用问题,设计了基于PCIe总线架构的大容量数据采集存储系统,保证多路高
速测量时完整保留测试数据便于后续分析和回顾.给出了基于主控单元片上系统的
硬件框架和PCIe总线存储架构设计,多种数据存储方式满足不同数据量的需求.设
计了系统通信协议,HPS与FPGA之间的控制指令和交互方式.对数据存储流程中
HPS获取采样数据过程,HPS将采样数据写入磁盘过程,以及数据写入磁盘的数据格
式进行了设计.测试结果表明,系统硬件、软件设计方案可行,运行稳定,在相同采样速
率和分辨率下能存储记录数据量远优于现有数字示波器和数据存储记录仪,目前已
投入多款产品的研制和生产过程,取得良好测试效果.
【期刊名称】《测控技术》
【年(卷),期】2019(038)004
【总页数】5页(P97-101)
【关键词】复杂系统;覆盖性测试;PCIe总线;大数据存储;片上系统
【作者】贾毅婷;张东来;李铁才;王子才;张斌
【作者单位】哈尔滨工业大学航天学院,黑龙江哈尔滨150001;深圳航天科技创新
研究院,广东深圳518057;哈尔滨工业大学(深圳),广东深圳518055;深圳航天科技
创新研究院,广东深圳518057;哈尔滨工业大学航天学院,黑龙江哈尔滨150001;深
圳航天科技创新研究院,广东深圳518057
【正文语种】中文
【中图分类】TP23;TM935.3
目前复杂系统测试主要采用设备分为数字示波器和数据存储记录仪两类。数字存储
示波器[1-3]主要提供单板测量和以合适的视觉显示效果为目的生成显示波形,因
此采样率高但分辨率低,存储深度固定且可供回放的数据量少。数据存储记录仪
[4-7]主要记录原始数据,并传给PC机做处理和分析。以NI的采集卡为例,其一
般配备PCIe/PCI/USB等数据高速传输接口,可以在PC机上用演示软件以固定格
式将数据存储到电脑。对于多路高速采样和大容量存储[8-10],USB和PCI接口
不适用,而PCIe接口直连PC机较为不便。对于需要改变数据格式以便于解析的
客户,数据存储需要用户在演示代码基础上进行修改,需要用户做二次开发,对于
希望即拿即用的客户来说,其并不适用。日置(HIOKI)公司的存储记录仪一般兼顾
记录仪和数据示波功能,以高端存储记录仪886x系列为例,具备LAN/USB/PC
卡槽等各种接口,配备80GB存储硬盘,能以20MS/s采样速率和12-bit分辨
率采集信号,能做到长期监控和瞬时记录同时进行,但REC高速存储记录仅在设
定好时间轴范围内的采样数据中取出并保存峰峰值,MEM实时记录以10MS/s
采样速率及12-bit分辨率最多仅存储1.6s时间长度的数据。国外厂家的数据存
储记录仪不仅性能并不适用于复杂系统测试或老化试验,而且售价昂贵。为解决上
述问题,本文设计了基于PCIe总线架构的高精度数据采集及大容量数据存储系统,
并针对硬件设计和软件开发过程中的关键问题,给出了完善的解决方案。
1系统功能与总体结构设计
大容量数据采集存储系统的数据存储方式如图1所示,硬件组成架构图2所示,
由采样端、控制端和存储介质组成,其中采样和控制端位于采集存储系统内部,
PCIe接口硬盘同样位于系统内部,USB2.0总线进行U盘存储、千兆以太网接口
将数据传输至PC端进行存储,板载EMMC总线方式的可插拔SD卡存储方便用
户数据随时可取。当采集存储设备的采样前端为高速多通道方式时,以6通道每
通道采样率20MS/s,16位精度为例,每秒将产生240MB数据量,使得前述
USB数据传输、以太网数据传输和EMMC数据传输方式都不适用,此时采用理论
速率可达2GB/s速率的PCIe2.0×4总线方式配备PCIeAHCI硬盘进行大容量数
据存储。
图1数据存储方式示意图
2系统硬件设计
2.1系统总体硬件组成
该大容量数据采集存储系统以AlteraCycloneVSX系列SoC作为主控,其不仅
包含传统FPGA架构,且集成了基于ARMCortexA9的硬核处理器系统(Hard
ProcessorSystem,HPS),如图2所示,以及高速收发器PCIe硬核IP子系统,
主频可达800MHz。该系统硬件架构总体可分为控制器单元、数据采集单元、数
据采集硬件校准单元、数据存储单元、人机接口单元和上位机通信单元等,各单元
模块之间协调工作,完成多通道隔离量测记录和显示,同一个时钟源和触发保证了
各通道之间同步采样。由前所述,多通道高速采样后的数据根据使用情况可选择存
至PCIeAHCI接口硬盘、U盘、SD卡或通过千兆以太网传至PC机,本文重点描
述多通道高速采样后的大容量数据存储方式和数据流。
2.2PCIe总线存储架构设计
PCIe总线的物理链路如图3所示,端到端的数据传送以及差分数据传输方式,使
得总线抗干扰能力强,且有效抑制电磁干扰(EMI)。PCIe总线采用双向的传输方式
且可运行全双工模式,双单工连接能提供更高的传输速率和质量。双单工是指
PCIe总线的物理层由双单工信道(Dual-SimplexChannel)组成,由发送对和接收
对实现双向数据传输。PCIe总线上每个设备都有自己的专用连接,不需要向总线
请求带宽,与传统PCI总线在单一时间周期内只能实现单向传输不同,PCIe的双
单工连接能提供更高的传输速率和质量,二者之间的差异跟半双工与全双工类似。
图2采集存储系统硬件组成架构
图3PCIe总线的物理链路
主控SoCFPGA侧集成PCIe硬核IP,HPS侧可通过H2F桥和LwH2F桥来访问
该IP核资源,数据存储控制模块框架如图4所示,PCIeIP通过Txs、控制寄存器
访问(ControlRegisterAccess,Cra)、RP_master接口实现与HPS的互联访问。
Cra端口可访问PCIeIP内部控制和状态寄存器,Txs端口控制数据输出,
RP_master端口控制数据接收和MSI信号发送。FPGA与ARM协同工作进行数
据存储,FPGA与ARM之间通过AXI总线进行数据传输,FPGA可操作ARM外
挂的RAM存储器并可直接操作PCIeIP核,ARM可通过PCIeIP核读写硬盘数
据。通过优化数据采集、传输、存储和读取动作,避免读写数据之间的带宽抢占,
保证数据连续不丢失。
图4数据存储控制模块框架图
3系统通信协议
为实现系统各部分间的通信,设计了FPGA与ARM之间,以及操作RAM和硬盘
的通信协议。
3.1HPS与FPGA之间控制指令
HPS发送“开始记录”指令后,FPGA控制采集单元的FPGA对各通道ADC数据
进行采集,采样频率为20MS/s,每个通道分配128MB的数据缓存区,各通道
每往内存写入32MB的数据,就发送一个中断给HPS,当128MB写满时,再从
头开始写入。其中命令和数据交互格式如表1所示,包含开始/停止采样的控制指
令、指示灯控制指令、测试指令以及必要的采样通道配置指令等。
表1命令和数据交互格式
数据包类型(1字节)数据(N字节)说明0x10测试0x3141Byte:控制量选择2Byte:
控制量数值1Byte:通道选择0x3321Byte:采样耦合方式选择1Byte:通道选择
0x3421Byte:校准开启/关闭1Byte:通道选择0x3521Byte:高压衰减比例选择
1Byte:通道选择0x36测试0x373控制指示灯0x11开始采样0x12停止采样
3.2FPGA与HPS交互方式
(1)FPGA与HPS的数据缓冲区。
需要在系统中分配多块缓冲区给FPGA写入采样数据,对应多个独立的数据采集
通道,以两通道为例,如表2所示,每个通道对应一个缓存区,各通道128MB
的缓冲区空间分为4个大小相同的部分,每部分32MB,FPGA每写32MB的数
据后向HPS发送一个中断,当写满128MB的空间后再从起始地址开始写后,如
此循环。
表2数据缓冲区地址和大小分配起始地址和结束地址大小缓冲区10x20000008~
0x28000008-10x8000000(128MB)缓冲区20x28000008~0x30000008-
10x8000000(128MB)
(2)指令同步。
HPS发送指令给FPGA时,直接发送到相应地址即可,FPGA给HPS发送数据时,
先将数据写到内存,再发送一个中断。
①HPS发送指令给FPGA的地址:0xC0000000+0x2000000;
②FPGA发送指令给HPS的地址:0xC0000000+0x2000000;
③FPGA发送指令给HPS的中断号为6,地址为90~9F。
(3)FPGA写入采样数据到缓冲区。
每个通道采集的数据对应一个128MB的数据缓冲区,每个通道采集的数据只能
写入对应的缓冲区,每个通道每采集32MB数据后将起始地址和结束地址写入内
存,再发送一个中断,然后接着上一个32MB的结束地址继续向内存写下一个32
MB的数据,每个通道的缓冲区循环写入(循环队列的形式)。FPGA发送的中断号
为7,地址为A0~AF。
4数据存储流程设计
4.1HPS获取采样数据过程
HPS启动时在启动参数中设置预留内存空间大小为512MB,这样可以把HPS使
用的SDRAM高地址的512MB空间预留出来,这512MB空间不能作为Linux
系统和Linux程序运行使用的空间,但这部分空间在Linux系统中使用mmap映
射后依然可以访问,而FPGA可以通过FPGAtoSDRAM总线来访问挂载在HPS
上的SDRAM,这样就建立了与FPGA传输大量数据的通道。FPGA采集的数据通
过FPGAtoSDRAM总线写入到HPS的SDRAM,从每个通道的起始地址开始写
入,各通道每写满32MB的数据时,FPGA发送一个中断来通知HPS读取数据,
然后继续写下一个32MB的空间,当128MB的空间写满后,FPGA再从通道的
起始地址开始写入,如此循环。HPS通过驱动程序来接收FPGA的中断,当接收
到一个中断后,驱动程序会把中断的中断号发送给应用程序,应用程序用线程阻塞
读的方式接收驱动程序的数据,每接收到一个数据,先写到队列中,这样做防止突
发的访问导致接收的数据丢失,写数据线程中若读取到队列有数据,根据队列中数
据的信息,将相应地址的数据写入到磁盘。
4.2HPS将采样数据写入磁盘过程
CycloneV器件FPGA内部集成了PCIE硬核IP模块,HPS可以通过H2FBridge
和LwH2F来访问该IP模块,在HPS中加载PCIEAHCI驱动后,HPS会扫描该
IP模块上接入的磁盘,识别成功后会在Linux根目录的dev下生成一个设备文件,
将磁盘交给Linux文件系统管理。这时就可以使用LinuxC库函数接口中的Open、
Write、Read等函数在磁盘中创建文件,读写文件。FPGA每发送一个中断,
HPS就会读取相应的数据在磁盘中写一个二进制的文件,二进制文件与文本文件
相比,同样的数据量体积是文本文件的1/3,读写速度更快,而且读写更加方便。
4.3写入磁盘的数据格式
在写每个二进制数据文件时,会先在二进制文件的开头写入一个36B的数据头,
数据头记录了这个文件中数据的信息,如下所示。
//文件数据头
typedefstruct
{
time_ttime;//4字节时间
unsignedintdata_len;//4字节数据的长度(Byte)
unsignedintsample_multiple;//4字节采样数据抽点倍率(存数据时的抽点比例)
unsignedintsampling_gear;//4字节采样的频率挡位(0~11档)
unsignedintsampling_freq;//4字节采样频率(Hz)
unsignedshortintGear;//4字节挡位(电压挡位)
floatSoftware_Multiple;//4字节软件倍数(用于计算实际电压值)
shortintexcursion;//4字节偏移(用于计算实际电压值)
floatCapacity;//4字节最大量程(在当前电压挡位下的量程)
}Data_Head_Info;
在36B的数据头之后,每两个字节表示一个采样值,高地址放高位字节,低地址
放低位字节,图5所示为磁盘文件信息排布示意图,至此完成了将FPGA采集的
数据写入到磁盘的全过程。
图5磁盘文件信息排布示意图
4.4数据流与总线速度
该系统大容量数据存储时的数据流与总线速度如图6所示,由SoCFPGA部分的
BLVDS总线采集ADC数据,为优化FPGA资源,采用32-bitBLVDS总线,包含
16对差分BLVDS数据且采用DDR方式收发数据,理论速率可达3.2GB/s。
FPGA和HPS外扩DDR3存储器的理论速率可达6.25GB/s,受外部存储器接口
性能限制,实际速率可达1.17~1.56GB/s。FPGA的PCIe硬核操作SSD理论速
率可达2GB/s。按PCIe总线负荷最大不超过50%设计,同时为保证同步时钟质
量,FPGABLVDS总线负荷按1/4设计,可配备20路20MS/s采样速率的ADC,
数据流实时性良好,优于目前同类装置,达到设计预期。
5界面显示和测试结果
图7为显示界面程序流程图,在初始化界面时创建与FPGA通信线程、写文件线
程及主线程等,阻塞读取底层来自FPGA的数据,并将读取的数据写入到队列,
而写文件线程读到队列有数据,即将数据解析并写入磁盘。主线程监控按键、定时
器及触发信号等事件,只要事件发生,就执行与事件绑定的函数。应用层显示界面
如图8所示,可对设置采样参数启动采样,查看设定时间范围内的数据波形,导
出该段数据、波形截图,设定网络连接将数据直接传至上位机,启动校准模式等。
图6大容量存储的数据流与总线速度
图7显示界面程序流程图
6结束语
所设计的基于PCIe总线架构的大容量数据存储系统,实现了系统的总体框架设计
和存储架构硬件设计,完成了系统通信协议以及数据存储流程设计。界面显示和测
试结果表明,整个系统运行稳定,可以实现上述的功能。与现有数字示波器和数据
存储记录仪相比,在相同的采样速率和分辨率下能存储记录的数据量更多,对于需
要老化测试、对历史数据进行回顾的复杂系统而言其更为适用,目前该系统已应用
于多种产品的环境试验和老化测试中,全程记录产品关键节点全过程变化趋势,为
产品质量考核和问题分析提供完整数据支撑。
图8应用层显示界面
【相关文献】
[1]李金猛,周勇军.高速大容量数据存储技术的研究综述[J].测控技术,2016,35(2):1-4.
[2]叶芃,曾浩,潘卉青,等.10Gsps数字三维示波器关键技术研究[J].仪器仪表学报,2012,
33(12):2688-2696.
[3]杨扩军,田书林,蒋俊,等.基于TIADC的20GS/s高速数据采集系统[J].仪器仪表学报,2014,
35(4):841-849.
[4]李金猛,周勇军,潘庆国,等.多通道高速大容量数据采集仪的研制[J].测控技术,2017,36(1):
32-36.
[5]荣少巍.基于FPGA的高精度多通道采集存储系统研究[J].电子测量技术,2014,37(4):108-
111.
[6]丁万成,付缅言.基于PXIExpress总线的多通道数字化仪软件技术研究[J].计算机测量与控制,
2017,25(4):126-129.
[7]JohnsonK,oscopeprobesforpowerelectronics:besuretochoo
therightprobeforaccuratemeasurements[J].IEEEPowerElectronicsMagazine,2018,
5(1):37-44.
[8]ZouYX,ZhangSL,mismatchcompensationintime-interleaved
ADCsbadonmultichannelLagrangepolynomialinterpolation[J].IEEETransactionson
Instrumentation&Measurement,2011,60(4):1123-1131.
[9]WangCM,HalePD,JargonJA,tialestimationoftimebacorrectionsfor
anarbitrarilylongwaveform[J].IEEETransactionsonInstrumentation&
Measurement,2012,61(10):2689-2694.
[10]牛军浩,代云启.基于PXI总线的高速数字化仪研制[J].计算机测量与控制,2012,20(3):
859-861.
本文发布于:2022-12-26 23:52:28,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/36843.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |