RFNoC OOT block 配置参数简介
在前文中提到,要定义自己的OOT block 需要自己修改yml文件来描述block的一些参数。前文为了系统的讲清楚自定义OOT Block的流程,所以这部分直接跳过未详细说明,故单独放一篇来介绍相关参数。
接下来将以gain.yml
为例来介绍各个参数。
1 General Parameters
module_name
: 模块名称chdr_width
: chdr 总线位宽 ,在USRP 第三代(USRP generaition-3)中采用64位总线noc_id
: 模块ID,用于识别模块(在chdr crossbar中),该ID由一个32 bits 数表示,需要唯一
2 Clocks
这里是按照rfnoc设计规范,一个模块可拥有三种时钟:
rfnoc_chdr
: chdr总线时钟,模块必需时钟信号rfnoc_ctrl
: 控制总线时钟,模块必需时钟信号ce
: 内部数字信号处理时钟,可选时钟信号
在参考1中有一小节关于时钟速率的描述:
Finally, the FFT block has an additional clock input port named ce that is used for the FFT signal processing. We need to connect it to a clock domain. Any clock that's at least as fast as the incoming data rate should be sufficient. For example, X3xx devices have a ce clock (214.286 MHz) that is usually a good choice, but rfnoc_chdr clock (200 MHz) should also work for this example. For N31x and E3xx devices, rfnoc_chdr clock is a good choice (200 MHz on N31x and 100 MHz on E3xx). For N32x, radio clock (250 MHz) is a good choice. For example, this is how you would connect the X310's ce clock to the ce port of the FFT block:
这里提到了 X3xx系列USRP的ce
时钟为 214.286 MHz, rfnoc_chdr
时钟为 200 MHz;
在N31x rfnoc_chdr
时钟为 200 MHz;
在E3xx rfnoc_chdr
时钟为 100 MHz;
在N32x radio
时钟为 250 MHz;
3 Control Interface
RFNoC为了保证与GR的交互能力提供了Control接口,配置文件中的这个选项就定义了block将采用何种接口进行控制。
-
fpga_iface
: 通常我们使用默认的ctrlport
。ctrlport
是RFNoC中定义的标准寄存器接口,类似AXI4-Lite接口,在GR中(host)对模块的指定地址来读写参数(寄存器)来改变或获取oot block的设置或读取状态。 -
clk_domain
: 可以用来指定寄存器的时钟域,但是通常,要保证该时钟域与接下来的data
采用相同的时钟,以避免跨时钟域所产生的莫名其妙的问题
4 Data Interface
在data
参数项中,将配置block的数据接口类型及数量。
fpga_iface
: 数据接口通常可以选择axis_pyld_ctxt
或axis_data
两种类型。clk_domain
: 可以用来指定寄存器的时钟域,但是通常,要保证该时钟域与接下来的control
采用相同的时钟,以避免跨时钟域所产生的莫名其妙的问题inputs
,outputs
: 在这两个section下定义模块的输入与输出的端口及个数
5 IO Ports
io_ports
: 运行block定义独特的io接口用于与外界或RFNoC 框架以外的模块来进行通信,(如DRAM或者radio
接口)。使用可以参考rfnoc_block_radio
模块
6 保留
registers
与 properties
暂时没有使用