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: 通常我们使用默认的ctrlportctrlport是RFNoC中定义的标准寄存器接口,类似AXI4-Lite接口,在GR中(host)对模块的指定地址来读写参数(寄存器)来改变或获取oot block的设置或读取状态。

  • clk_domain: 可以用来指定寄存器的时钟域,但是通常,要保证该时钟域与接下来的data采用相同的时钟,以避免跨时钟域所产生的莫名其妙的问题

4 Data Interface

data参数项中,将配置block的数据接口类型及数量。

  • fpga_iface: 数据接口通常可以选择axis_pyld_ctxtaxis_data两种类型。
  • clk_domain: 可以用来指定寄存器的时钟域,但是通常,要保证该时钟域与接下来的control采用相同的时钟,以避免跨时钟域所产生的莫名其妙的问题
  • inputs, outputs: 在这两个section下定义模块的输入与输出的端口及个数

5 IO Ports

  • io_ports: 运行block定义独特的io接口用于与外界或RFNoC 框架以外的模块来进行通信,(如DRAM或者radio接口)。使用可以参考rfnoc_block_radio模块

6 保留

registersproperties 暂时没有使用

参考

Getting Started with RFNoC in UHD 4.0

posted @ 2022-01-13 16:03  ArtisticZhao  阅读(158)  评论(0编辑  收藏  举报