基于FPGA实现PCI-E接口和DMA控制器设计

基于FPGA实现PCI-E接口和DMA控制器设计,第1张

  随着网络的飞速发展,人们可获取的信息量日益增长,数据的处理及存储速率的要求也越来越高。万兆网(10Gb以太网)的普及,高速存储设备的应用(如DDR2,传输速率可达800M)对系统带宽带来极大的挑战。

  伴随着FPGA技术的大规模的应用,越来越多的大型系统采用PCI Express总线连接FPGA处理板和PC以实现数据的交互。尽管很多FPGA公司推出了基于PCI Express协议相关的IP硬核,但是掌握这些硬核的使用需要对PCI Express 协议具有一定的了解,而且直接使用硬核,带宽很小,开发难度大,移植性差等缺点这些都是造成目前PCI Express接口设计的瓶颈。为了降低开发难度,提高带宽和移植性,许多现有的方案是在PCI Express硬核中加入高速DMA控制器单元,以此来达到设计需求。

  PCI Express总线简介

  PCI Express总线技术是取代PCI的第三代I/O技术。PCIExpress总线是为计算机和通讯平台定义的一种高性能、通用I/O互联总线。至今已经发布了3个正式版本:PCI Express 1.0、PCIExpress 2.0、PCI Express 3.0。单向单通道带宽分别为:250MB/s, 500MB/s, 1GB/s。PCI Express体系结构的设计非常先进,采用了类似网络体系结构中OSI分层体系结构设计方案,如图2.1所示。按照协议规范,PCI Express总线的层次结构分为物理层(Physical Layer)、数据链路层(Data Link Layer)和事物层(TransacTIon Layer)体系结构。

  在性能方面,相比PCI总线,PCI Express总线具有以下特点:

  (1)在数据传输模式上,PCI Express 采用差分串行传输方式,一条PCI Express通道(称为PCI Express X1)由2对差分信号线来实现数据的发送和接收。

  (2)PCI Express具有高速串行通信接口所特有的时钟恢复核心,将时钟融合到传输的数据中,这样既减去了时钟管脚,又能大大提高传输速度,突破了并行传输带宽的瓶颈。

  (3)PCI Express是采用点到点的互连方法,每个设备都由独立的链路连接,独享带宽,大大提高传输效率。

  (4)具有很好的灵活性,一个PCI Express物理连接可以根据实际需要配置成X1,X2,X4,X8,X16 及X32链路模式。因此传输的速度也就相应的成倍增长。

  (5)PCI Express传输的数据以协议定义的数据包(packet)的形式进行传输,保障了数据传输的完整性和可靠性。

  (6)PCI Express协议加入了数据重传机制,提高了数据传输的可靠性。

  正是由于PCI Express的这些技术特点,使得其越来越广泛的应用在计算机系统架构及海量数据传输接口领域,特别是在加入了高速DMA控制器传输方式下,PCI Express带宽及传输效率大大提高,因此在高速系统领域具有广阔的前景。

  FPGA系统设计方案

  传统FPGA设计方案

  传统FPGA并不具备LVDS信号驱动能力。一般以PEX8311桥接芯片实现PCIe物理层接口,再配合CPLD实现用户逻辑设计。PEX8311提供2个端口,一个为兼容PCIExpress1.0标准的PCIe接口,另一个为LocalBus总线接口,用于与CPLD相连。LocalBus总线工作于66MHz时钟,32-bit总线宽度,可以提供266MB/s带宽。同时,PEX8311还提供了2组DMA通道。使用PEX8311可以方便地从PCI平滑过渡到PCIe,从而降低开发成本,因此被广泛使用。

  然而,PEX8311并不能有效发挥出PCIe高带宽优势,也缺乏可配置性和灵活性,难以提高系统整体性能。

  基于PCIe硬核接口设计

  Xilinx新推出Virtex-6系列的FPGA,集成了PCIeIP硬核模块。该模块兼容PCIExpress2.0标准分层协议(为物理层、数据链路层和事物层,又称传输层),提供了系统接口(SYS)、外部传输接口(PCIEXP)、配置接口(CFG)、事物接口(TRN)和物理链路接口(PL)。其Virtex-6GTX可配置高速串行传输器为PCIe信号可靠传输提供了保障。文中便是针对该硬核的事物层提出片上系统的PCIe设计方案。

  PCI-Express接口及应用层设计

  一个基本的高速数据采集系统,由微处理器(CPU)、FPGA和外部存储器等组成。CPU与FPGA通过PCIe总线进行数据传输,FPGA通过DMA方式对外部存储器进行数据读写 *** 作。文中给出基于PCIex1传输方式的接口设计方案。

  PCIe接口及事物层设计

  较之使用PEX8311桥接芯片的系统设计,采用基于Xilinx的IP核的设计方案,用户可以根据自己的需求灵活设计面向事物层接口电路,并方便加入特殊功能,如与内部总线连接、实现DMA传输等。该设计充分利用FPGA集成度高、可配置性强等特点来发挥PCIe接口性能。FPGA的PCIe接口设计包括XilinxPCIe端点硬核和面向事物层的应用逻辑设计2个部分,这里将详细给出应用层设计,如图1所示。

 基于FPGA实现PCI-E接口和DMA控制器设计,基于FPGA实现PCI-E接口和DMA控制器设计,第2张

  XilinxPCIe硬核支持64-bit数据通路,分别用于发送和接收数据。该硬核提供6个32-bit基地址寄存器BAR0~BAR5(BassAddressRegister,简称BAR),可以根据用户设计需求进行配置。在本设计中使用BAR0和BAR1组成一组64-bit地址空间,用于存储外部CPU访问FPGA内部寄存器地址。使用BAR2和BAR3组成另一组64-bit地址空间,用于存储DMAEngine控制器和缓存器地址。通过判断trn_rbar_hit_n[6:0]来区分BAR0和BAR2,其主要代码如下:

  ⋯ ⋯

  ‘TRN _RX_M EM _RD64_DW 1DW 2: begin

  ⋯ ⋯

  req_bar0_o 《 = ~trn_rbar_hit_n_q [ 0 ] ; req_bar2_o 《 = ~trn_rbar_hit_n_q [ 2 ] ;

  ⋯ ⋯

  end

  以外部CPU读FPGA内部寄存器为例,FPGA将收到的PCIe总线上数据帧经由硬核的事物层,以64-bit带宽送出,应用层通过TRN_RX接收状态机来判断请求访问的地址空间,然后将请求数据缓写入一个双端口的req_fifo;用户逻辑通过读取req_fifo,将有效的寄存器数据写入另一个双端口data_fifo中,最后通过TRN_TX发送状态机发送给硬核事物层。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2628287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-11
下一篇 2022-08-11

发表评论

登录后才能评论

评论列表(0条)

保存