图1 双缓冲PCIE系统框图
PC端的驱动程序在系统内存上为SRSE分配了两个缓冲区(WR_BUF1/2)用于数据存储,这两个缓冲区的地址信息分别存储在FPGA端的DMA寄存器(DAM_Reg1/2)中。Root Complex连接CPU、内存和PCIE器件,它代表CPU产生传输请求[3];PCIE核是Xilinx公司提供的集成块程序,实现PCIE协议的处理;DMA(直接存储器访问)引擎用于实现DSP核和PCIE器件间的高速数据存储与交换;DSP(数字信号处理)核是用户设计的算法或应用程序。以图1为例,DSP核将产生的数据写入TX_FIFO,DMA引擎将数据以传输层数据包(TLP)的形式发送至PCIE核,其中数据包的头信息来自寄存器DMA_Reg1。当SRSE将数据写入缓冲区WR_BUF1时,驱动分配另外一块缓冲区WR_BUF2并将该缓冲区的地址信息写入寄存器DMA_Reg2中;当DMA引擎发出WR_BUF1的写操作消息中断(MSI)后,DMA控制器将数据包的头信息切换至DMA_Reg2,驱动将缓冲区切换至WR_BUF2,继续传输数据。图2 PCIE总线中断延迟测量
与双缓冲相对应的是单缓冲模式。以写操作为例,驱动程序每次在内存上分配一个缓冲区WR_BUF,该缓冲区的地址信息存储在DMA寄存器DMA_Reg中。当写满缓冲区WR_BUF时,DMA引擎会产生MSI中断,并通过PCIE核通知驱动程序。驱动分配新的缓冲区,并将该缓冲区地址通过PCIE总线写入DMA寄存器DMA_Reg中。中断的传输和DMA寄存器的更新会产生一定延时,这需要较大的TX_FIFO来存取延时期间DSP核产生的数据。图3 软件无线电原理框图
3 双缓冲模式PCIE总线设计图4 PCIE驱动中的数据接收
3.2 PCIE核配置图5 PCIE功能框图与接口
本文使用Xilinx CORE Generator生成PCIE核,其主要配置参数如表1所列。表1 PCIE核主要配置参数
3.3 总线主控DMA传输图6 DMA结构框图
3.4 双缓冲PCIE协议图7 双缓冲PCIE操作协议(写操作)
将MSI中断与新缓冲区配置间的时间间隔称为中断延时,如图2和图7所示。双缓冲模式的引入消除了中断延时的影响,使SRSE在中断延时期间仍能传输数据,节约了硬件资源,驱动程序也有更多时间来处理缓冲区的数据。欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |