超声相控阵系统基于FPGA的PCIe总线传输研究*
2015-10-28彭召斌廉国选李帅源
王 冲 彭召斌 毛 捷 廉国选 李帅源
(中国科学院声学研究所 北京 100190)
研究报告
超声相控阵系统基于FPGA的PCIe总线传输研究*
王冲彭召斌†毛捷廉国选李帅源
(中国科学院声学研究所北京100190)
针对超声相控阵系统的高速传输需求,本文应用了基于FPGA的PCIe总线传输方案,实现了基于PCIe总线的相控阵数据DMA(直接存储器读写)上传、控制命令下传、发送数据缓存及驱动和上位机测试程序设计。通过实验测试了PCIe总线的DMA传输速率,可达6.5 Gbit/s,并成功将该方案应用于64通道超声相控阵检测系统中,实现了超声相控阵系统的PCIe总线数据传输。
超声相控阵检测,PCIe,FPGA,DMA传输
1 引言
超声相控阵技术是近年来发展最快的无损检测方法,被广泛应用于高速铁路、航空航天、油气运输等工业领域[1-4]。传统超声相控阵系统的数据传输方式以千兆网、USB2.0为主,随着全波形存储、快速位置扫查和多角度成像等检测技术的应用,传输带宽已无法满足检测需求。
以蜂窝复合材料的快速、多角度C扫描为例,现场要求扫查速度为200 mm/s,扫查精度为0.2 mm,若每个位置进行30个角度的扫描,每个角度采集4 K个点作全数据存储,每个采样点16 bit位宽,则数据采集速率达1.92 Gb/s,千兆网、USB2.0等传统总线方式显然无法满足其带宽要求。具有更高带宽的总线传输方案成为快速相控阵检测系统的迫切需求。
快速外部设备互联(PCIe)是英特尔提出的第3代IO总线技术,可实现设备间基于数据包的高速点对点串行通讯[5]。以PCIe 1.0协议为例,4x链路的单向数据速率可达8 Gb/s,为高带宽的数据传输提供了可靠解决方案[6]。
在相控阵系统中,硬件系统多以FPGA为控制核心,相比于千兆网和USB2.0总线,基于FPGA(Field-programmable gate array)的PCIe总线在实现上主要有以下难点:
(1)PCIe总线对FPGA的时钟管理、逻辑资源、时序控制等有较高的要求;
(2)PCIe总线通过DMA(Direct memory access)实现高速数据上传,控制协议复杂;
(3)PCIe总线在DMA传输的间隙,需要设计安全的数据缓冲池,以保证DMA速率的前提下避免数据溢出。
针对上述难点,本文应用基于Xilinx FPGA端点硬核的PCIe总线传输方式,根据相控阵系统总线传输的特点,进行了基于PCIe总线的相控阵数据DMA上传、控制命令下传、数据发送缓存逻辑及驱动和上位机测试程序设计。通过实验测试了PCIe总线的DMA传输速率,可达6.5 Gbit/s,并成功将该总线传输方案应用于64通道超声相控阵检测系统中。
2 基于FPGA的PCIe总线传输总体设计
如图1所示,超声相控阵检测系统包括以FPGA为核心的底层硬件、驱动和上位机软件组成。硬件负责实现换能器阵列的时序激发、模拟接收放大、A/D转换和波束合成;上位机软件完成控制参数的计算和检测数据的成像。
图1 超声相控阵系统框架Fig.1 The framework of phased array ultrasonic system
在本系统中,PCIe总线主要完成上位机控制参数的下传和FPGA波束合成后数据的上传。其参数和数据的传输具有以下特点:
(1)PCIe下传参数时数据量小,实时性要求不高;
(2)PCIe上传数据时数据量大,实时性要求较高;
(3)波束合成与PCIe总线间需要较大的数据缓冲池,以缓存突发的上传数据。
针对以上特点,本文进行了基于FPGA的PCIe总线DMA数据上传控制逻辑,控制命令下传逻辑,数据发送缓存逻辑,驱动程序和上位机测试程序设计。
设计框架如图2所示。
图2 基于Xilinx FPGA的PCIe总线设计框架Fig.2 The design framework of PCIe bus based on Xilinx FPGA
3 基于PCIe总线的相控阵数据传输逻辑设计
3.1基于DMA的数据上传逻辑
DMA传输不占用CPU读写周期且传输速率高[7]。PCIe的DMA操作将数据封装在事务层包(TLP)中传输,启动、中断、完成等状态存放于BAR0(Base address register)空间的DMA控制状态寄存器中。
在相控阵检测系统中,每一次激发都会采集一定量的回波数据进入发送缓存。有待发数据时,发送缓存给DMA写逻辑使能信号,在上位机启动和IP核准备好的情况下,通知DMA写逻辑将数据填充在存储器写请求事务包中送入IP核,由IP核完成链路层和物理层的发送。
基于DMA的数据上传逻辑需要上位机与FPGA逻辑协调进行,是本文设计的重点。DMA写逻辑实现过程如图3所示,每一次DMA写的实现过程为
(1)上位机配置传输参数,包括目的地址、本次DMA传输的数据长度;
(2)上位机启动DMA,DMA写逻辑等待发送缓存使能后开始传输;
(3)DMA写逻辑检测到传输数据量等于上位机设定的数据长度时,停止DMA写,以中断方式通知上位机,并不再从发送缓存读取数据;
(4)上位机在收到写完成中断后,进入中断响应函数;
(5)中断响应完成后,根据状态位判断是否需要进行下一次DMA传输。
相控阵数据传输逻辑在DMA写的同时,还要响应上位机的读请求事务包。上位机通过该事务包读取DMA控制状态寄存器,了解DMA的工作状态。本文相控阵数据传输逻辑在收到读请求事务包时,会在DMA写的间隙将目标寄存器中的值填入读完成事务包,发送给上位机。
图3 DMA写逻辑实现过程Fig.3 The design of DMA writing logic
3.2基于BAR0空间读写的控制命令下传
BAR0是PCIe设备的32 bit寄存器空间,包含了DMA控制状态寄存器和用户自定义寄存器,上位机通过对BAR0空间的访问,控制PCIe设备的数据传输。
在数据传输过程中需要进行控制命令的缓存、管理和传输状态的握手。如表1所示,本文在BAR0空间开设了命令接收和握手寄存器,利用FPGA片内FIFO作命令参数缓存,并设计了传控的握手协议。其中:
(1)控制命令寄存器reg_parameter,上位机调用存储器写函数,将控制命令参数写入该寄存器,FPGA将该寄存器的值缓存入FIFO中;
(2)握手寄存器reg_begin_req、reg_begin_ack,用于上位机与FPGA之间在传输开始时的请求和应答握手;
(3)握手寄存器reg_end_flag、reg_end_ack,用于上位机与FPGA之间在传输结束后的完毕标志、应答握手;
(4)出错重传标志寄存器reg_error,用于FPGA对每一次传输结果的校验,并将校验结果放入reg_error中,上位机根据reg_error的值判断本次传输是否出错及重传。
基于BAR0读写的参数下传逻辑实现过程如图4所示,上位机在控制命令下传开始和完毕时均与FPGA进行握手,握手成功后进行发送和允许下一次传输;同时FPGA根据命令定义对每一次传输进行校验,并将校验结果通知上位机。
表1 BAR0空间控制命令下传寄存Table 1 The register table of controlling parameters in BAR0
图4 基于BAR0读写的参数下传实现过程Fig.4 The design of parameters sending logic based on BAR0 access
4 基于DDRIII的发送缓存逻辑设计
超声相控阵系统的数据传输有突发性强、数据量大的特点,而PCIe总线在一次DMA写完成后,需要等待上位机的配置和启动,如果发送缓存容量过小,极容易造成相邻两次DMA写之间的突发数据丢失。因此本文设计了容量为4 GB的片外DDRIII缓存,如图5所示,结合片内异步FIFO,作为相控阵逻辑中波束合成与PCIe总线的数据缓冲池,其容量完全满足相控阵检测中的突发缓存要求。
图5 发送缓存设计框架Fig.5 The framework of DDRIII buffer logic
5 驱动及上位机程序设计
硬件系统与上位机的PCIe总线传输需要设备驱动和控制程序。本文PCIe设备驱动在WinDriver平台下开发;PCIe传输控制程序在Qt环境下编写。
5.1WinDriver驱动开发流程
WinDriver是针对WDM模型驱动程序的主流开发工具之一。使用WinDriver的用户模式开发驱动,可移植性较好,且不需要掌握操作系统内核知识,极大地简化了驱动开发的难度。Windows 7系统下的开发流程包括以下步骤:
(1)设置硬件环境,上位机查找到PCIe设备,提示安装驱动;
(2)选择PCIe设备并建立工程;
(3)生成和安装INF文件;
(4)生成驱动代码。
5.2PCIe数据传输控制程序
使用WinDriver完成驱动开发后,本文在熟悉WinDriver提供的底层API函数的功能和使用方法的基础上,设计了以下主要函数,完成底层API的调用和对PCIe设备的操作。
(1)OpenDevice()和StopDMA()实现PCIe设备的打开和关闭;
图6 上位机PCIe控制程序流程Fig.6 The flow of PCIe controlling program on PC
(2)WriteBAR0()和ReadBAR0()实现对BAR0空间寄存器的访问;
(3)DMAWriteMenAlloc()实现DMA写操作时上位机对内存的申请和操作;
(4)IntDealFunction()实现DMA读写完成中断处理。
控制程序工作流程如图6所示,上位机启动DMA传输后,等待DMA写完成中断,在中断响应中完成内存数据的处理,并根据成像需要开启下一次DMA传输。
6 PCIe总线验证测试
完成基于PCIe总线的相控阵数据传输逻辑设计、驱动及上位机控制程序设计后,本文从DMA写逻辑正确性、上位机接收数据正确性和接口速率三个方面对PCIe总线进行了验证和测试。本次测试的PCIe链路选择4x,链路位宽为64 bit,每个事务层包的最大链路负载为128 B。
6.1DMA写逻辑正确性验证
使用Xilinx在线逻辑分析工具Chipscope检测DMA写逻辑与IP核之间的接口时序,为方便观测,数据源采用32 bit的递增数据,每两个一组写入发送缓存中。
图7中fifo_q_PCIe_us即为DMA写逻辑从异步FIFO读出的64 bit数据,其高低32 bit分别从1和0开始作步进为2的递增运算。
如图7所示,IP核准备好接收数据时(tready_thrtl为高电平),DMA写逻辑按事务层包格式在s_axis_tx_tdata_r上输出包头和数据,同时给出标志信号s_axis_tx_tvalid_r。前96 bit为即TLP包头,包头的后32 bit 0x08F91000为目的地址,紧跟的就是数据。事务包中的每个32 bit数据按照低字节在前高字节在后的顺序排列,字节内位序不变,这样保证数据在上位机内存中按字节先后顺序排列。
如图8所示,在一个TLP传完时,DMA写逻辑给s_axis_tx_tlast_r标志,向IP核表明当前是最后一数据。下一个周期便是新的事物包包头,其目的地址为0x08F91080,增加了128 B,表示上一个事务包共传输了128 B数据,与设定的最大链路负载参数相符。
图7 DMA写逻辑时序图_1Fig.7 The timing sequence 1 of DMA writing logic
图8 DMA写逻辑时序图_2Fig.8 The timing sequence 2 of DMA writing logic
6.2上位机接收数据正确性验证
将DMA传输至上位机的数据使用winhex软件查看,如图9所示,每个32 bit数据按照字节从低到高的顺序排列正确。
上述DMA写逻辑时序和上位机数据接收的验证结果表明,本文PCIe接口的DMA传输逻辑和控制程序均可正常工作。
6.3PCIe接口速率测试
PCIe 4x下的最大理论速率为8 Gb/s[8-10],为检测PCIe接口的传输速率,本文使用控制程序分别测试了不同DMA写长度下的传输速率,如表2所示。
图9 上位机接收数据Fig.9 The receiving data on PC
表2 不同DMA写长度下的PCIe传输速率对比Table 2 The speed of PCIe bus with different DMA writing size
如表2所示,本文的PCIe接口的实际传输速率可达832 MB/s以上,即6.5 Gb/s,满足相控阵检测系统的带宽要求。
从表2也可以看出,随着DMA写长度的增大,传输速率也会增加。原因是增加了每次DMA写操作中传输的有效字节数,减少了存储器读写操作的总次数,从而减少了传输中的固定开销,提高了总体的传输速度。但在相控阵检测系统中,DMA写长度的增大会使成像软件的等待时间增大,不利于整体检测平台的运行,因此还需要根据实际的相控阵检测需要,合理地选择DMA写长度参数。
目前,该项技术已成功应用于自研的64通道超声相控阵检测系统,实现了控制命令的PCIe下传和波束合成数据的DMA上传,并形成了实时A、B与S扫描图像(如图10所示)。
图10 系统A、B、S扫描图像Fig.10 The A scan,B scan,S scan of phased array ultrasonic system
7 结论
本文首先分析了超声相控阵检测中的高速传输需求,应用了基于Xilinx FPGA端点硬核的PCIe总线传输方案。相比于使用PCIe桥接芯片,基于Xilinx FPGA端点硬核的PCIe总线传输具有配置灵活、可靠性高等优势,可以简化板级设计,使用户专注于PCIe事务层开发,缩短系统开发周期。本文通过数据传输逻辑、数据发送缓存逻辑和驱动、上位机程序设计,实现了控制命令的PCIe下传和波束合成数据的DMA上传,并成功应用于64通道超声相控阵检测系统中。测试结果表明,4x PCIe接口的DMA写速率高达6.5 Gb/s,完全满足超声相控阵系统的高速总线传输需求,该技术为高性能超声相控阵设备的高速实时数据传输的提供了有效保证。
[1]MCNAB A,CAMPBELL M J.Ultrasonic phased arrays for nondestructive testing[J].NDT&E.,1987,(6):333-337.
[2]ZHANG B X,LIU D D,SHI F F.Ultrasonic focusing and scanning with multiple waves[J].Chin.Phys.B,2013,22(1):014302.
[3]孔超,冀映辉,蔡炜,等.超声相控阵控制、采集与全并行处理系统设计[J].应用声学,2011,30(2):105-111.
KONG Chao,JI Yinghui,CAI Wei,et al.The design of control-acquisition and fully parallel processing phased array ultrasonic system[J].J.Appl.Acoust.,2011,30(2):105-111.
[4]彭小冲,费跃农.相控阵超声接收动态聚焦算法及其物理实现[J].应用声学,2014,33(5):453-461.
PENG Xiaochong,FEI Yuenong.Receiving dynamic depth focusing algorithm of phased array ultrasound imaging and its physical implementation scheme[J].J. Appl.Acoust.,2014,33(5):453-461.
[5]KAVIANIPOUR H,BOHM C.A high-reliability PCIe communicationsystemforsmallFPGAs.nuclear[C]. Science Symposium and Medical Imaging Conference(NSS/MIC),IEEE,2013.
[6]KAVIANIPOUR H,MUSCHTER S,BOHM C.High performance FPGA based DMA interface for PCIe[C].2012 18th IEEE-NPSS Real Time Conf.,2012.
[7]KAVIANIPOUR H,BOHM C.High performance FPGA-based scatter/gather DMA Interface for PCIe[C].Nu-clear Science Symposium and Medical Imaging Conference(NSS/MIC),IEEE,2012.
[8]李木国,黄影,刘于之.基于PCIe总线的高速数据采集卡设计与实现[J].测控技术,2013,32(7):19-22.
LI Muguo,HUANG Ying,LIU Yuzhi.Design and implementation of a high-speed data acquisition card based on PCIe bus[J].Measurement&Control Technology,2013, 32(7):19-22.
[9]Xilinx Inc:Virtex-6 FPGA integrated block for PCI express[EB/OL].[2015-02-10].http://china.xilinx.com/ support/documentation/ip_documentation/v6_pcie/ v2_5/ug671_V6_IntBlock_PCIe.pdf.
[10]PCI Express Base Specification 2.0[EB/OL].[2015-02-10]. https://www.pcisig.com/specifications.
Research of PCIe bus based on FPGA in ultrasonic phased array system
WANG ChongPENG ZhaobinMAO JieLIAN GuoxuanLI Shuaiyuan
(Institute of Acoustics,Chinese Academy of Sciences,Beijing 100190,China)
PCIe bus solution based on Xilinx FPGA is developed for high-speed data transmission in ultrasonic phased array system.In this solution,DMA(Direct memory access)data up-transfer,control instruction downtransfer,data buffer,PCIe driver and test demo are designed in this paper based on PCIe bus.Test result shows that DMA data up-transfer speed can reach up to 6.5 Gb/s,which satisfies the requirement of high-speed data transmission in ultrasonic phased array system.Also,this solution is successfully adopted in the 64-channel ultrasonic phased array system.
Ultrasonic phased array testing,PCIe,Field-programmable gate array,Direct memory access
TB559
A
1000-310X(2015)05-0377-08
10.11684/j.issn.1000-310X.2015.05.001
2015-02-12收稿;2015-04-25定稿
*中国科学院科研装备研制项目(Y329011331)
王冲(1990-),男,山东淄博人,硕士研究生,研究方向:信号与信息处理。†
E-mail:pengzhaobin@mail.ioa.ac.cn