《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于PCIE的高速光纤图像实时采集系统设计
基于PCIE的高速光纤图像实时采集系统设计
来源:电子技术应用2013年第10期
雷 雨1,2, 任国强1, 孙 健1,2, 徐永刚1,2, 黄 辉1,2
1. 中国科学院光电技术研究所, 四川 成都 610209; 2. 中国科学院大学,北京100149
摘要: 利用PCI Express(PCIE)总线及DMA数据传输技术,设计光纤图像实时采集系统。利用FPGA中的PCIE硬核实现了PCIE总线的DMA传输,同时介绍了整个采集系统的数据流和光纤接口模块的设计。测试结果表明,系统DMA数据传输速度可达到138 MB/s,完全满足高速光纤图像实时采集的需要。
中图分类号: TP914.3
文献标识码: A
文章编号: 0258-7998(2013)10-0136-03
Design of high-speed real-time fiber image acquisition system based on PCIE bus
Lei Yu1,2, Ren Guoqiang1, Sun Jian1,2, Xu Yonggang1,2, Huang Hui1,2
1. Institute of Optics and Electronics of Chinese Academy of Sciences, Chengdu 610209, China; 2. University of Chinese Academy of Sciences, Beijing 100149, China
Abstract: PCIE technology and DMA technology are used to implement the real-time fiber image acquisition system. The paper focuses on how to implement DMA transmission on PCIE hard core and introduces the data stream of the system and the custom protocol of high speed serial fiber transmission. The test result shows that the DMA speed can reach 138MB/s, so the system fulfils the need of high-speed real-time fiber image acquisition.
Key words : PCIE; DMA; real-time acquisition; fiber; hard core; transaction layer packet

    随着高分辨率、高频帧的CCD相机在航测中的广泛使用,如何对产生的高速图像数据进行实时记录,成为了一个技术难题。光纤通信具有带宽高、价格低廉、传输距离长等优点,单根光纤的传输带宽达到10.2 Tb/s。大量光电转换模块的出现,使光纤在高速图像采集传输系统中大量使用,常规光模块带宽达到2 Gb/s,而传统通过PCI总线与主机通信的理论带宽只有133 MB/s,但当实际数据采集速度到达100 MB/s左右时就变得相当困难 ,难以满足对记录带宽的要求。PCIE是继PCI后的第三代高性能I/O总线,与PCI相比,PCIE属于串行总线,引脚少,采用基于数据包的协议进行事务编码,每个传输通道独享带宽;硬件接口简单,采用点对点互联,X1的单向传输理论带宽即可达到2.5 Gb/s,用户可以根据实际需要将PCIE链路配置为X1、X2、X4、X8、X16等。

    PCIE数据包在传输过程中要经过事务层,数据链路层及物理层。采用类似网络分层的思想,不同之处在于PCIE体系中的各个层都是采用硬件逻辑来实现。事务层是PCIE架构的上层,其主要功能是接收、缓冲和分发事务包TLP(Transaction Layer Packet)。TLP通过使用I/O、存储器 、配置和消息事务来传递信息。数据链路层是保证可靠正确的数据传输,主要负责链路管理与数据完整性相关的功能,包括错误检测与改正,装配和拆解数据链路层包DLLP。物理层是PCIE协议的最底层,为设备链路提供物理支持,分为逻辑子块和电气子块。逻辑子块完成对数据包的合成分解、加扰和去扰、8 bit/10 bit编码和10 bit/8 bit解码、并串转换和串并转换;电气物理层负责对每路串行数据差分驱动的传输与接收及阻抗匹配[1-2]。
1 采集系统简述
    本文采用CCD相机的分辨率为2 352×1 728,灰度级别为8 bit,帧频为31 F/s,产生的数据量为120.2 MB/s,则PCIE接口采用X1通道就可以满足带宽需要。采集系统的具体结构如图1所示。

    XC5VFX70T是Xilinx公司VIRTEX系列的一款具有5 328 KB RAM资源、内嵌3个PCIE硬核和16个可配置的高速串行收发器GTX,速率可达6.5 Gb/s,采用CML电平标准,在系统中和SFP模块无缝连接。该芯片在系统中主要实现高速数据的接收和缓存,以及数据的实时采集[3-4]。
    光纤信号通过光纤接口模块和位宽转换,数据被写入DDR2中,DDR2分为A、B两个独立的存储区。当A储存区写满时,将数据写入PCIE接口模块的TX_FIFO中,这时DMA控制器发送中断给主机,主机会准备好接收缓存区,并将缓存区首地址告知DMA控制器,开始DMA传输,将数据写入到主机内存中,同时将采集的数据写入B存储区中。同理,当B存储区中的数据被写满时,也通过同样的方式写入主机的内存中。主机内存中的数据通过SATA总线被写到SATA硬盘并记录下来。DDR2采用交叉缓存工作,以保证高速数据流的不间断采集。
2 功能模块设计
2.1光纤接口模块逻辑设计

    光纤接口模块分为GTX和包数据解析两个部分。光纤信号经GTX核后,输出16 bit位宽的并行数据和相应的K字符信号。根据K字符信号提取数据包。包数据解析根据自定义的协议进行数据包解析,得到帧头标志、帧尾标志、有效图像数据和附加信息等。附加信息是一组固定长度的双字组合,含有图像相关的一些信息,如大小、位数、编码方式等[5-6]。图2所示为自定义协议包。

    包头和包尾作为数据包的起始和结尾标志,包长用于指示发送数据的有效长度,包累加和用于包内有效数据字节的统计,包编号用于统计发送的数据包有无丢失。帧头标志、帧尾标志、有效图像数据和附加信息等则放在有效数据中。
2.2 缓存模块
    本文的DDR2控制器MPMC采用NPI接口,设计有2个NPI接口分别用于读写操作。一个是用于存储光纤的输入数据,另一个用于输出内存数据到PCIE接口。这样可以避免传输过程中内存的访问仲裁,提高系统的传输效率。
     本文光纤接口模块输出的数据宽度为16 bit,而采用的NPI接口的数据宽度为64 bit。所以需要对原始数据进行位宽转换后才能进行后续处理。位宽转换模块根据需要将数据宽度从16 bit转换为64 bit。
2.3 PCIE接口模块设计
    PCIE接口模块主要是实现主机PCIE总线与采集卡之间的通信。为了实现基于PCIE的DMA传输,需要设计以下8个模块[7-8], 具体PCIE接口模块设计如图3所示。

    图3中各个模块的作用如下:
    (1) PCIE硬核:对外与其他PCIE设备通信,对内与TX和RX模块进行数据传输。
    (2) TX模块:将待发送的数据和DMA寄存器中的信息填充到事务包TLP中,以并行的方式传输给PCIE硬核,实现PCIE写操作状态。
    (3) RX模块:将接收的事务包TLP解析,根据TLPs的包头信息,将数据写入DMA寄存器。
    (4) 缓存:匹配FIFO两边不同传输速率的数据流,缓存待处理的数据和提高数据的传输效率。
    (5) DMA控制模块:DMA寄存器是由发送寄存器、中断寄存器等构成。发送寄存器用于接收和存放主机内存写请求的DMA信息,主要为内存写请求地址寄存器及写长度寄存器、写包数寄存器。中断寄存器是存放中断产生的原因,为辨别何种中断提供依据。
    (6) 用户逻辑:一方面用户逻辑通过DMA控制模块向主机发起DMA传输中断,设置DMA传输的长度;另一方面控制数据的输入,保证TX_FIFO不会溢出,数据不会丢失。
    (7) 用户接口模块:提供简单的数据通道和控制信号通道。
3 DMA传输的逻辑设计与实现
3.1 DMA写操作的设计与实现

    首先用户逻辑检测到TX_FIFO中有需要传输的数据,这时用户逻辑通过DMA控制器发送MSI中断,请求DMA传输。主机响应中断,配置DMA寄存器,TX模块启动DMA传输,TX模块向TLP包加载信息,包括了控制字段、地址字段、数据长度字段以及数据字段等。当一次DMA传输结束后,向主机发送DMA传输结束的中断,这样一次完整的DMA写操作就完成了。具体流程图如图4所示,TX模块和PCIE硬核之间采用64 bit并行传输, 在本文中一个TLP的载荷是128 B,一次DMA操作要进行65 536次包传输,则一次DMA写操作就传输了8 MB的数据量,PCIE写操作状态机是在TX模块中实现。

 

 

    图6是DMA控制寄存器的设计图,初始化寄存器的Byte0用于DMA传输复位。1DW的Byte0用于读开始,Byte1用于读完成,Byte2用于写开始,Byte3用于写完成;2DW用于存放主机写入的缓存首地址;3DW用于存放一个TLP包携带的有效数据量;4DW用于存放一次每次DMA传输发送的TLP包数量;5DW的Byte0用于指示FPGA请求DMA传输,Byte1用于指示DMA传输结束。

4 功能验证与性能测试
    本文PCIE硬核采用X1通道,最大的理论传输带宽为2.5 Gb/s。使用ChipScope对DMA写操作进行了验证,具体时序如图7所示,trn_td是FPGA向主机发送的数据,trn_tsof_n为低时,表示TLP包的第一个64 bit数据;trn_teof_n为低时,表示TLP包的最后64 bit数据,这时trn_trem_n为0X0F,则说明最后一个64 bit只有高32位有效。传输一个TLP包大约需要108个时钟周期,采用125 MHz的采样频率,一个TLP包有效载荷为128 B,则可得出在X1的配置下,DMA的传输速度大约为141.3 MB/s。

    本文针对高速光纤图像实时采集的需要,设计了一种基于PCIE的采集系统。经实际测试,系统运行稳定可靠。采用X1的PCIE总线接口,DMA写操作速度大约为138 MB/s,满足光纤图像实时记录的带宽要求。如果实际需要更高的采集带宽,可以参考本文设计,将PCIE接口设计为X4或X8,以实现更高的采集性能。本设计具有通用性,可被移植于其他内嵌有PCIE硬核及串行收发器GTX等资源的 FPGA平台。
参考文献
[1] BUDRUK R, ANDERSON D,SHANLEY T. PCI Express系统体系结构标准教材[M].田玉敏,等译.北京:电子工业出版社,2005.
[2] PCI-SIG. PCI express card electromechanical specification  Rev 1.0a[Z].USA: PCI-SIG,2003:5-33.
[3] Virtex-5 FPGA RocketIO GTX transceiver v2.1 user guide[Z].USA:Xilinx,2011.
[4] 使用用于PCI Express设计的集成端点模块实现点到点连接[Z].USA:Xilinx ,2007.
[5] 孙科林,周维超,吴钦章.高速实时光纤图像传输系统的实现[J].光学精密工程,2011,19(9):2228-2235.
[6] 缪露鹏,涂晓东,张新颖.光纤适配卡数据总线的研究与实现[J].光通信技术,2011(1):8-10.
[7] 汪精华,胡善清,龙腾. 基于FPGA 实现的高速串行交换模块实现方法研究[J].电子技术应用,2010,36(5):37-40.
[8] 何琼,陈铁,程鑫. 基于FPGA的DMA方式高数数据采集系统设计[J].电子技术应用,2011,37(12):40-43.

此内容为AET网站原创,未经授权禁止转载。