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

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

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

DMA,从而提高内存效率。

  2 软件无线电平台设计

  软件无线电基于可编程、可重构的通用硬件平台,通过加载不同的软件实现不同的无线电功能,广泛应用于军用和民用领域。为了能够实现复杂的算法,其平台需要具备高速数据交换和实时信号处理的能力。该设计参考Xilinx ML605开发套件,基于Xilinx Virtex6 LX240T FPGA芯片,通过增加相应的模块搭建通用的软件无线电平台。

  软件无线电原理框图如图3所示。信号获取模块采用两片ADC和DAC以实现IQ两路信号的数模转换;通信模块由以太网和USBRS232接口组成;扩展卡可以是射频发射机或接收机,通过扩展卡接口与母板相连;JTAG接口提供在线编程和内部测试功能;存储器件包括512 MB DDR3内存和128 MB平台Flash,分别用于动态数据存储和配置FPGA;人机接口由LED/LCD、按键和开关等元件组成,实现人机对话;200 MHz有源晶振和SMA时钟接口组成时钟输入模块,向FPGA提供时钟基准;8通道PCIE接口和IP核实现平台与PC间高速数据交换。

  

  图3 软件无线电原理框图

  3 双缓冲模式PCIE总线设计

  3.1 PCIE驱动设计

  PC端基于Linux(Ubuntu 10.10)操作系统。该操作系统免费开源,安全稳定灵活,适合低成本软件开发。驱动程序包含数据流接口和控制接口。数据流接口用于Linux用户空间和 SRSE平台间高速的数据交换;控制接口使用户可以观察和配置SRSE平台寄存器,例如通过控制接口,用户可以在PC端改变SRSE平台的调谐频率等参数。数据流接口是双向独立的,支持双/单工,即可以同时读和写数据。以数据发送(从PC到SRSE)为例,用户空间调用write()函数将任意数量的数据发送至驱动,驱动整理数据碎片以满足PCIE对数据对齐和传输块数据量的要求。当数据满足4096字节,驱动将数据块发送至Root Complex并保留已发送数据的列表,等待接收来自SRSE平台的写操作中断。PCIE驱动数据接收的原理如图4所示。当用户空间调用read()函数或者驱动接收到来自PCIE设备的数据时,驱动初始化读操作。驱动程序将保持阻塞(blocking),直到用户空间调用read()函数,并且已接收到足够的数据包,从而能够填满read()请求的数据量。碎片整理模块对已接收的数据进行整理,然后将数据块返回至用户空间,并通知其解除驱动阻止。

  

  图4 PCIE驱动中的数据接收

  3.2 PCIE核配置

  Virtex6 PCIE Endpoint Block[4]集成了传输层(TL)、数据链路层(DLL)和物理层(PL)协议,它完全符合PCIE基本规范,可配置性增加了设计的灵活性,降低了成本。其功能框图与接口如图5所示。其中收发器通过PCIE总线与Root Complex实现数据包的传递,PCIE总线由系统接口和PCIE接口组成;系统接口由复位和时钟信号组成,PCIE接口由8条差分传输和接收对组成(8lane)。TX/RX Block RAM用来存储来自DMA引擎和系统内存的数据,其大小可以通过Xilinx Core Generator配置。传输接口为用户提供了产生和接收TLP的机制;物理层接口使用户能够观测和控制链路的状态;配置接口使用户能够观察和配置 PCIE终端的配置空间,即DMA寄存器;中断接口实现DMA与PCIE核之间的中断传输。用户通过这些接口设计符合其需要的DMA引擎。

  

  图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库实现某种功能。

  

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

网站地图

Top