微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Virtex-6 FPGA的双缓冲模式PCIe总线设计方案和实现

基于Virtex-6 FPGA的双缓冲模式PCIe总线设计方案和实现

时间:02-19 来源:互联网 点击:

  图6 DMA结构框图

  3.4 双缓冲PCIE协议

  以写操作为例,双缓冲PCIE协议如图7所示。初始化时,驱动程序在内存中分配两块缓冲区Buff 1a/2a,然后将Buff 1a的地址信息写入DMA控制/状态寄存器DMA_Reg1(图1)中并开始写操作;DMA引擎将FIFO中的数据以数据包的形式通过PCIE总线发送至缓冲区Buff 1a中,期间驱动程序将Buff 2a的地址信息发送至DMA控制/状态寄存器DMA_Reg2中;当Buff 1a写操作完成时,MSI中断控制器产生MSI中断并通知驱动,此时驱动和DMA控制器同时切换缓冲区,即驱动将缓冲区切换至Buff 2a,DMA控制器将TLP头信息切换至DMA_Reg2,如此继续传输数据。

  

  图7 双缓冲PCIE操作协议(写操作)

  将MSI中断与新缓冲区配置间的时间间隔称为中断延时,如图2和图7所示。双缓冲模式的引入消除了中断延时的影响,使SRSE在中断延时期间仍能传输数据,节约了硬件资源,驱动程序也有更多时间来处理缓冲区的数据。

  4 PCIE调试与性能

  提供了Root Port的Test Bench,它可以模拟PC和驱动程序,如初始化DMA引擎、产生下行数据流并发送至PCIE设备,也可以接收来自PCIE设备的上行数据流等,使整个系统(PCIE核+DMA引擎+DSP核)可以在Modelsim SE环境下仿真。这大大缩短了开发周期,提高了开发效率。功能仿真通过后,使用Xilinx ISE 软件完成代码的输入、综合、实现、验证和下载。

  硬件平台为DELL T3400型PC和Xilinx ML605开发套件。PC端基于Ubuntu 10.10操作系统运行驱动程序,FPGA端DSP核(图6)通过Matlab Simulink调用Xilinx元件库实现。本文DSP核由32位计数器和加法器组成:计数器将值写入TX_FIFO,PC端检测接收数据以验证写操作(SRSE→PC);同样地,PC端产生+1计数值并将数据写入RX_FIFO,DSP核的加法器用来验证读操作(PC→SRSE)。

  结语

  本文设计了基于Xilinx Virtex6 FPGA的通用软件无线电平台,利用C语言开发了基于Linux系统的驱动程序,利用Verilog语言设计基于Xilinx PCIE硬核的双缓冲DMA控制器。双缓冲消除了中断延时的影响,节约了硬件资源,提高了数据传输速度。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top