RFNoC
RFNoC(片上射频网络),是RF Network on Chip的缩写。目前的FPGA,像Xilinx Kintex-7和Zynq-7000已经应用在第三代的USRP SDR产品系列.这些FPGA有着丰富的资源和优秀的计算能力,但是直接进行FPGA的开发却有着一定的难度。RFNoC的目的就是让用户在没有非常丰富的FPGA开发经验的情况下,也能够充分的利用的FPGA资源,进行FPGA开发。它提供的FPGA开发就像在GNU Radio下,创建流图一样简单。包括PC主机应用程序和FPGA无缝的传输数据,这极大地提高了FPGA的资源应用。我们知道,把一些实时性要求高的程序放在FPGA上,其性能是远远高于单一的在PC上进行处理的。基于FPGA和主机的数据处理流程对于用户来说是透明的,这样的处理流程可以能够应用在多个FPGA和设备组成的网络。
这里有一个在GNU Rdio里应用RFNoC的实例。有4 个模块,数据通过PC产生,然后加载到FPGA进行滤波,最后再回到主机:
下面是另外一个叫做RFNoC fosphorde的例子。这是一个由FPGA RFNoC模块显示的实时FFT展示。这里设置的频点是2.45G,带宽是100MHz,另外一幅图是带宽为200MHz。这里使用的设备都是X310配合UBX-160。
RFNoC采用了简单易用的封装方式,能够让用户在需要的时候,很容易的进行调用。RFNoC模块可以使用多种语言进行开发,包括VHDL、Verilog、XiLinx Vivado HLS。另外,Xilinx CoreGen IP也可以很容易地导入到rfnoc环境。在GNU Radio下,已经有一些开发好的的处理模块,并且他们的数量正在增加:FIFO
FFT
FIR
fosphor (real-time spectrum analyzer)
Decimator (Keep 1 in N)
Log Power Calculator
Radio Interface
Vector IIR (moving average)
Window multiplier (for FFT)
OFDM: Burst detection + synchronization, equalizer, packet demodulator
上面的这些模块,用户都可以进行自定义的FPGA开发,而无需进行VHDL或者Verilog编写。现在,RFNoC已经嵌入到UHD中,在第三代的USRP中(USRP X310、USRP X300、USRP E310、USRP E312、USRP E313、USRP E320、USRP N321、USRP N320、USRP N310和USRP N300)用户可以轻易的进行自己的FPGA设计。