RF network on chips (RFNoC)片上网络浅析

摘要

软件无线电开发领域常用的GNU-Radio开源开发框架一般是用于GPP架构,由于信号处理都在PC上实现,波形模块的移植性和可复用性好,并且基于流图的开发模式很容易上手,易被学术界接受。但是二代的USRP前端FPGA能力较弱,一般只用于信号上下变频和采样,因此很难达到实际通信协议&产品(如802.11簇)的处理能力和时延要求。

因此,Ettus Research公司基于K-7和Zynq7000等系列的FPGA开发的第三代USRP,其FPGA资源丰富,但是直接进行FPGA开发比GPP门槛高,并且波形模块化和复用难度加大。因此,Ettus Research同时也于2015年开始推出了与之硬件配套的RFNoC(RF network on chips)开源开发框架,支持类似于GNURadio流图开发模式调用FPGA资源,降低了用户开发门槛,也通过支持RFNoC的社区增大相关波形组件的丰富,形成较好的生态,目前效果已初见端倪,成为软件无线电产品级开发的主流技术路线之一。

RFNoC简析

本节根据公开资料,摘录和简要分析了RFNoC框架的特点:
- 基本原理:在FPGA里面实现了分组化网络(packetized network),可以构建基于FPGA的处理模块(block),或者叫Computation Engine(CE)。每个CE可以认为是独立的片上网络结点,与其它CE、GPP或者Radio Block进行通信。
- 波形重构能力:可以采用CE之间的重连线实现,其灵活性和模块化程度类似于GPP+Gnuradio的流图重构机制。Ettus发布的较新tutorial已经可以在GNURadio里面集成混合式的GPP和RFNoC流图。(Ettus Research Tutorial下面有多个展开链接,建议都过一下)
- 波形组件复用性:至少在Zynq系列上的RFNoC波形可以重用(基于Verilog开发),还要确认是否有更强的重新能力。
- 可用波形:目前较少,因为要涉及FPGA开发,所以学术界的相关波形组件开发和开源肯定比GPP的组件慢,但是在基于RFNoC的Zynq系列越来越普及的情况下,RFNoC-GR开源包也会逐步增多,这里将搜集更新可用的包和基本介绍。
- 可用软硬件开发平台:硬件包含Ettus SDR产品为USRP E310/E312和X300/X310(原理上基于Zynq系列核心模组的开发板都可以支持),软件目前新版本GNURadio支持RFNoC开发(要确认版本)
- 初步结论
– RFNoC框架处理了FIFO,分组包封装\解封装以及crossbar总线传输,使得用户可以关注于FPGA的IP的开发。另一方面,有大量的IP可以复用。
– GPP+FPGA组成的RFNoC技术的重构能力和快速开发能力与GPP更为接近,远优于FPGA或者ASIC。
– RFNoC并不需要依赖GNURadio,也可采用纯C++或者其它框架

RFNoC开发流程

– 1. 设计实现、或者复用AXI-based的IP:可以用Verilog、VHDL、HLS、Xinlinx IP等,因此可能复用开源设计和Xinlinx的大量IP
– 2. 测试IP功能:如采用Xinlinx工具。
– 3. 定义跟RFNoC的接口:如数据接口、设置寄存器、回读寄存器
– 4. 基于模板将IP封装为RFNoC模块
– 5. 调测试封装后的RFNoC模块:调测试方案多样,包括xsim、vsim、vivado+JTAG、wireshark等,也可以利用GR作为debug和evaluation工具:例如将待测RFNoC模块和同样功能参数的GR-GPP模块对比输入输出,测试各种激励,从GUI Scope等可视化结果,确认开发的RFNoC的功能正确性。
– 6. 实现host-side的控制代码:包括UHD和GNURadio的两个XML文件
– 7. 在GNURadio中使用RFNoC模块
– 8. 部署时间因素: 因为Vivado的性能限制,X310部署image需要2小时,E31x需要45分钟。

参考资料

  • GRCon2016:RFNoC™: RF Network on Chip
  • Ettus Research Tutorial: RFNoC Overview

你可能感兴趣的:(无线通信,软件无线电)