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 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 endpoints
与Transport 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
文件进行描述。
参考
标签:CHDR,模块,FPGA,简介,USRP,RFNoC,连接,4.0 来源: https://www.cnblogs.com/ArtisticZhao/p/15799740.html