RFNoC 4.0 架构简介

1 什么是RFNoC

RFNoC是一个基于FPGA的一个异构软件无线电框架,可以使用该架构,对USRP系列的SDR设备进行FPGA级别的自定义。也就是说,使用RFNoC可以在GNURadio提供的SDR框架之外,使用剩余的FPGA的资源实现更高性能,更高*度的软件无线电设备的定义。

在UHD 4.0版本之后,RFNoC已经成为了UHD fpga驱动程序的一部分,USRP的核心DSP处理功能将作为RFNoC block应用在UHD中。

下面将从USRP默认的FPGA镜像架构来介绍RFNoC的组成。

2 默认RFNoC镜像组成

下图是默认的USRP的镜像结构图,绝大多数的USRP默认镜像架构都与之非常相似。

RFNoC 4.0 架构简介

可以注意到,RFNoC FPGA镜像由以下部分构成:

  • RFNoC Image Core
    这是RFNoC软件的主体,或者是称之为最大集合,除了FPGA必备的接口以外,剩下的组件均包含在RFNoC Image Core中。RFNoC Image Core 由 RFNoC Image Core YAML文件所定义,并且工具链中的image_builder程序会自动根据RFNoC Image Core YAML文件生成必要的顶层设计文件(top verilog)。

  • Transport Adapter
    传输适配器,是USRP与外部进行通信的接口组件,他允许USRP设备通过高速以太网、SFP+、PCIe等接口与上位机取得联系。P.S. 在E312中,也用于与ARM处理器进行通信。

  • CHDR Crossbar
    所谓CHDR,为Condensed Hierarchical Datagram for RFNoC,是RFNoC中的自定协议,正如他的字面意思,是一种压缩、分层、数据报形式的数据协议。而CHDR Crossbar,就是基于这一协议的动态路由器,他允许在SDR运行前通过软件定义方式,决定stream endpointsTransport Adapter之间的数据走向。也就是说,如果想让模块中的数据从FPGA传输到上位机上,则必须配有stream endpoints

  • Stream Endpoint (SEP)
    Stream Endpoint (SEP),其中一个功能在上一点中已经提到,那就是提供RFNoC内部block中的数据到host的数据接口,除此之外, Stream Endpoint还提供数据流(data traffic)与控制流(control traffic)的分离。其中的控制流则是提供一系列的寄存器读写接口,用来提供host的软件在 运行中控制Block的能力,如在之前我们用到的gain所提供的增益数值,就是通过SEP从GNURadio中传输到block当中,并且这个增益数值是可以在运行时进行更改的。

  • Control Crossbar
    这是一个小型的路由装置,与CHDR Crossbar类似,不同的是,Control Crossbar只能对控制信号进行路由,因此它所占用的 资源更少一些。

  • 其他模块
    在图中的DDC、DUC和Radio则是RFNoC自带的一些功能模块(也是UHD必备的功能模块,早在RFNoC时代之前,他们被强耦合得编译在FPGA软件中,很难作出更改)。通常来说RFNoC模块一般在RFNoC框架中进行数据交互,但是如Radio或者DRAM模块,还需要与RFNoC以外的硬件进行数据的交互。

3 动态连接与静态连接

如果RFNoC模块之间通过了Crossbar连接那么他们就是动态连接,这意味着模块之间的连接可以通过软件动态的改变。CHDR crossbar可以提供十分强大的互联功能,他允许任意模块之间、模块与host之间甚至不同USRP的模块之间通过CHDR进行互联,当然也运行新的DSP单元加入的应用当中。

同样的 control crossbar 也提供动态路由,允许RFNoC block之间、block与host之间发送控制信号(即读写寄存器信号)。

一些模块,并不通过crossbar,例如radio与DDC或DUC连接,再连接到SEP上,这就是静态连接,即他们不能在运行时进行改变,一旦FPGA镜像编译好后,这些连接关系就确定了。静态连接的好处就是不需要占用crossbar的端口,并且能够有效降低模块之间的延迟,并且节约更多的FPGA逻辑资源,以使一个FPGA镜像能够包含更多的功能。静态连接关系可以在RFNoC image core YAML文件进行描述。

参考

Getting Started with RFNoC in UHD 4.0

上一篇:ADRV9009的JESD204接口传输


下一篇:fpga程序固化