一 数据传输通道总体设计
在上传数据时首先将 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 作为整个高速数据传输时的缓存,达到了大容量缓存的效果。