您当前的位置:五五电子网电子知识电子知识资料总线技术基于双缓冲与单缓冲比较总线设计方案 正文
基于双缓冲与单缓冲比较总线设计方案

基于双缓冲与单缓冲比较总线设计方案

点击数:7636 次   录入时间:03-04 11:40:29   整理:http://www.55dianzi.com   总线技术

     

    图5 PCIE功能框图与接口

    本文使用Xilinx CORE Generator生成PCIE核,其主要配置参数如表1所列。

     

     

    表1 PCIE核主要配置参数

    3.3 总线主控DMA传输

    参考Xilinx应用实例XAPP1052[5],本文设计的DMA结构框图如图6所示,各部分功能介绍如下:

    ① 发射引擎。发射引擎产生传输层数据包(TLP)并通过传输接口发送至PCIE核,数据包的数据来自TX_FIFO,头信息来自DMA控制/状态寄存器,也负责驱动对DMA寄存器的读取。

    ② 接收引擎。接收引擎将来自上位机的数据包解码并转存至RX_FIFO中,也接收来自驱动的配置信息并将寄存器值写入DMA控制/状态寄存器中。

    ③ DMA控制/状态寄存器。该模块是DMA的主控制器,控制着DMA复位、读写等操作;内存缓冲区的地址信息和TLP包长度等信息也存储在该寄存器中。

    ④ MSI中断控制器。该模块产生读写中断,然后通过中断接口通知PCIE核,进而通知驱动程序。

    ⑤ TX/RX_FIFO.通过Xilinx Core Generator将FIFO配置为独立时钟异步模式,实现不同时钟域的数据缓冲和位宽转换。本文PCIE时钟为250 MHz、位宽64位,而DSP核时钟为200 MHz、位宽32位。

    ⑥ PCIE核。该模块为例化的PCIE集成块,框图和参数详见图5和表1.

    ⑦ DSP核。该模块为用户设计的算法或者功能模块,例如通过Simulink调用Xilinx库实现某种功能。

     

     

    图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控制器。双缓冲消除了中断延时的影响,节约了硬件资源,提高了数据传输速度。



上一页  [1] [2] 


本文关键字:暂无联系方式总线技术电子知识资料 - 总线技术

《基于双缓冲与单缓冲比较总线设计方案》相关文章>>>