您的位置 首页 嵌入式

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

基于Xilinx Virtex6 FPGA的通用软件无线电平台设计-近年来软件无线电(SDR)得到了飞速的发展,在很多领域已显示出其优越性。本文的项目背景是通过软件无线电方式实现数字音频广播(DAB)的基带信号处理,这要求软件无线电平台具有高速实时数字信号处理与传输能力。高速可编程逻辑器件(FPGA)和丰富的IP核提供了能高效实现软件无线电技术的理想平台。

导言

近年来软件无线电(SDR)得到了飞速的开展,在许多范畴已显示出其优越性。本文的项目布景是经过软件无线电方法完结数字音频播送(DAB)的基带信号处理,这要求软件无线电渠道具有高速实时数字信号处理与传输才能。高速可编程逻辑器材FPGA)和丰厚的IP核供给了能高效完结软件无线电技能的抱负渠道。

1 PCIE总线计划证明

PCIE是第3代I/O总线互联技能,现在已成为个人电脑和工业设备中首要的标准互联总线。与传统的并行PCI总线比较,PCIE选用串行总线点对点衔接,具有更高的传输速率和可扩展性。例如本文选用的8通道1代PCIE 2.0硬核的理论传输速率是4 GB/s[1],其总线位宽亦可依据需求挑选×1、×2、×4和×8通道。与其他的串行接口(如RapidIO和Hypertransport)比较,PCIE具有更好的功用和更高的灵敏性[2]。

1.1 PCIE总线完结方法

现在,PCI Express总线的完结方法首要有两种:根据专用接口芯片ASIC和根据IP核的可编程逻辑器材FPGA计划。前者一般选用ASIC+FPGA/DSP的组合方法,专用PCIE接口芯片(如PEX8311)防止用户过多地触摸PCIE协议,降低了开发难度;但其硬件电路规划杂乱,功用固定,灵敏性和可扩展性较差。后者运用IP核完结PCIE协议,用户能够开发其所需的功用和驱动,具有可编程性和可重装备才能;别的,单片FPGA降低了本钱和电路杂乱程度,更契合片上体系(SoC)的规划思维。本文选用Xilinx公司Virtex6 FPGA和PCIE集成块,完结双缓冲方式的高速PCIE接口规划。

1.2 双缓冲与单缓冲比较

以写操作(数据从FPGA到内存)为例,双缓冲PCIE体系框图如图1所示。为描绘便利,将该FPGA片上体系命名为SRSE(Software Radio System with PCI Express)。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图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,持续传输数据。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图2 PCIE总线中止推迟丈量

与双缓冲相对应的是单缓冲方式。以写操作为例,驱动程序每次在内存上分配一个缓冲区WR_BUF,该缓冲区的地址信息存储在DMA寄存器DMA_Reg中。当写满缓冲区WR_BUF时,DMA引擎会发生MSI中止,并经过PCIE核告诉驱动程序。驱动分配新的缓冲区,并将该缓冲区地址经过PCIE总线写入DMA寄存器DMA_Reg中。中止的传输和DMA寄存器的更新会发生必定延时,这需求较大的TX_FIFO来存取延时期间DSP核发生的数据。

为准确丈量中止延时时刻,建立了根据DELL T3400型PC和ML605开发套件的渠道,经过ChipScope调查的波形成果如图2所示。DMA中止发生在时刻0(mwr_done:0﹥1);然后PCIE核向驱动宣布MSI中止,驱动程序查询中止寄存器发生在时刻2241(irq_wr_accessed:1﹥0);驱动程序分配新的内存缓冲区,然后更新DMA寄存器发生在时刻2802(wr_dma_buff0_rdy:0﹥1)。在这2802个时钟周期内,PCIE器材无法将数据写入内存。PCIE的时钟频率为250 MHz,所以中止延时T=2802×(1/250 MHz)=11.2 μs.假定DSP核发生数据的速率为200 MB/s,中止延时期间将发生11.2 μs×200 MB/s=2241 B巨细的数据。考虑到其他不行猜测要素,如中止堵塞等,为了不丢掉数据,TX_FIFO至少需求几KB的空间。这关于FPGA内名贵的硬件资源(如Block RAM)来说是严峻的应战。

与单缓冲方式比较,双缓冲方式长处归纳如下:

① 更新缓冲区不会引进中止延时,这意味着较小的FIFO即可满意需求,节省了硬件资源。

② 双缓冲方式延长了驱动程序处理中止的时刻,也使缓冲区数据的处理愈加简单,丢包率大大减小。

③ 数据的传输和内存缓冲区的数据处理能够并行处理,体系的实时性得到确保。

④ 双缓冲更合适Scatter/Gather DMA,替代block DMA,然后进步内存功率。

2 软件无线电渠道规划

软件无线电根据可编程、可重构的通用硬件渠道,经过加载不同的软件完结不同的无线电功用,广泛运用于军用和民用范畴。为了能够完结杂乱的算法,其渠道需求具有高速数据交流和实时信号处理的才能。该规划参阅Xilinx ML605开发套件,根据Xilinx Virtex6 LX240T FPGA芯片,经过添加相应的模块建立通用的软件无线电渠道。

软件无线电原理框图如图3所示。信号获取模块选用两片ADCDAC以完结IQ两路信号的数模转化;通讯模块由以太网USBRS232接口组成;扩展卡可所以射频发射机或接纳机,经过扩展卡接口与母板相连;JTAG接口供给在线编程和内部测验功用;存储器材包括512 MB DDR3内存和128 MB渠道Flash,别离用于动态数据存储和装备FPGA;人机接口由LED/LCD、按键和开关等元件组成,完结人机对话;200 MHz有源晶振和SMA时钟接口组成时钟输入模块,向FPGA供给时钟基准;8通道PCIE接口和IP核完结渠道与PC间高速数据交流。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图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()恳求的数据量。碎片收拾模块对已接纳的数据进行收拾,然后将数据块回来至用户空间,并告诉其免除驱动阻挠。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图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引擎。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图5 PCIE功用框图与接口

本文运用Xilinx CORE Generator生成PCIE核,其首要装备参数如表1所列。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

表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库完结某种功用。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图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,如此持续传输数据。

根据Xilinx Virtex6 FPGA的通用软件无线电渠道规划

图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操控器。双缓冲消除了中止延时的影响,节省了硬件资源,进步了数据传输速度。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/98674.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部