pcie数据传输

一 数据传输通道总体设计

  在上传数据时首先将 FPGA 中数据缓存到 DDR3 存储器,然后上位机请求后把数据从DDR3 存储器中取出并通过 PCIE 总线将数据传输到上位机;在下传数据时上位机中的数据首先通过 PCIE 总线下传至 FPGA,FPGA 读取这些数据并存储到DDR3 存储器中。 

  FPGA 逻辑设计主要控制 PCIE 总线的高速数据传输通道过程中的数据传输,数据传输通道在传输过程中对数据量大、带宽高和实时性高的数据,使用 DMA 方式,而对于数据量小且不需要连续传输时,将使用 PIO 方式。

二 FPGA逻辑设计

  FPGA 逻辑设计由 PCIE 接口逻辑和 PCIE DMA 控制逻辑两部分组成, DDR3 存储器模块,DMA 引擎模块和通道仲裁器模块组成 PCIE DMA 控制逻辑;PCIE IP 核模块、寄存器堆模块、发送引擎模块、接收引擎模块和中断引擎模块组成 PCIE 接口逻辑。

 

(1)PCIE接口逻辑设计

  PCIE IP 核调用 Xilinx FPGA 芯片内部的 PCIE 硬核,根寄存器堆模块包括 DMA 数据传输时各通道的状态信息,还有与之相关的寄存器,访问这些寄存器需要通过 PIO 方式。

  PCIE IP 核是 7 系列 FPGA 嵌入式 PCIE 硬核,封装了 PCIE 协议的事务层、数据链路层和物理层的一部分。Number of Lanes 设置了 PCIE 支持的最大通道数,;Link Speed 为 PCIE 最大链路传输速率,本文选择 5.0GT/s的传输速率 

  发送引擎模块和接收引擎模块由 FPGA 编程进行设计,设计过程中产生 TLP包的逻辑和解析 TLP 包的逻辑的读 TLP 请求和写 TLP 请求、读 TLP 解析和写 TLP解析、CPLD 解析,并负责处理 FPGA 逻辑设计与 PCIE IP 核接口之间的数据,其中的数据包括 FPGA 逻辑设计产生的 TLP 以及计算机产生的 TLP。
  中断引擎模块根据 FPGA 逻辑设计的发送引擎和接收引擎状态判断各通道中DMA 传输是否完成,完成后向计算机发起 MSI 中断请求。

(2)PCIE DMA控制逻辑设计

  DDR3 存储器为 PCIE 进行数据传输时方便使用各个通道中的数据从而使用了DDR3 读写接口,FPGA 逻辑设计中的各个模块通过 DDR3 存储器进行访问。DDR3存储器内部根据本设计通道的需求设置了 8 个通道缓存区,从而支持多通道同时访问 DDR3 存储器,通道中的数据由接收引擎通过 PCIE 以 DMA 方式写入 DDR3存储器,或者通过 PCIE 以 DMA 方式从 DDR3 存储器中读出来,再通过通道将数据发送出去。为解决多通道同时访问 DDR3 产生的冲突问题,设计了基于一
种通道轮循的 DDR3 存储器。PCIE 总线作为 FPGA 和 PC 间的传输介质,连接 FPGA 和 PC,基于 PCIE2.0总线在单通道时的传输速率最高可达 5Gbps,当与上位机通信时选用PCIE 接口的通道数为 8,传输速率为40Gbps。

  DDR3 存储器由 FIFO 接口、通道仲裁和 MIG IP 核三部分组成,当多个通道访问时,必须要实时回应,所以需对通道的读、写操作进行仲裁;MIG IP 核由 Xilinx 7 系列 FPGA 自带的 IP 硬核,可
对 DDR3 进行读写访问。通过对 DDR3 存储器的设计可使 DDR3 更加适合多通道高速数据传输系统,便于 DDR3 作为整个高速数据传输时的缓存,达到了大容量缓存的效果。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值