RFSoC应用笔记 - RF数据转换器 -04- RFSoC关键配置之RF-ADC内部解析(2.2)

简介: RFSoC应用笔记 - RF数据转换器 -04- RFSoC关键配置之RF-ADC内部解析

带数控振荡器的 RF-ADC 混频器


混频器功能具有三种模式:旁路(不混频)、粗混或细混。 精细混频自动启用用于生成载波频率的 NCO。 混频器支持完全正交混频,同时支持实数到 I/Q 和 I/Q 到 I/Q 模式。

image.png

粗调混频器:

  • 粗调混合器允许将数据与 0、Fs/2、Fs/4 或 –Fs/4 的载波混合。选择 0 仅在使用 RFdc 驱动程序 API 时可用。
  • 使用 0 载波进行混音会绕过混音器组件。

精细混频器:

  • 精细混频器允许数据在频率上任意上移或下移。
  • 频移量是通过对NCO 中产生的混频器频率进行编程来获得的。 精细混频器还支持 18 位相位调整。
  • 可以对 NCO 进行编程以输出 NCO 频率 (Fc) 的 cos、-cos、sin 或 -sin。根据当前混频器模式选择 NCO 输出。
  • I/Q to I/Q

image.png

Real to I/Q

image.png

  • 当选择负正交时,Q输入是反向的。
  • NCO 阶段可以使用 XRFdc_UpdateEvent 在图块内同步。
  • NCO 相位可以使用外部事件信号(SYSREF 或 MARKER)跨图块同步。
  • 为管理潜在的溢出,精细混频器输出包括 3 dBV 衰减,如上图所示。 此衰减与 R2C 模式无关,因此 API 的自动模式选择会根据 RF-ADC 混频器缩放输出因子选择正确的衰减级别(见下表)。 手动选择也是可能的,允许 0 dBV 或 -3 dBV。
Tile Usage Coarse Mixer Auto Fine Mixer
IQ (C2C) 1 (0 dBV) 0.707 (-3 dBV)
Real (R2C) 1 (0 dBV) 0.997 (~0 dBV)

混频器设置可以在内核中配置,或者使用 RFdc 驱动 API。 内核用于设置初始混频器设置(例如,混频器类型和混频器模式),RFdc 驱动 API 用于在运行时调整设置。 RFdc 驱动程序 API 和内核都根据提供的采样率和所需频率计算所需的寄存器设置。 下图显示了一个示例配置界面。

image.png

RF-ADC 混频器 RFdc API 示例


相关的 RFdc 驱动 API 函数显示在以下代码中。 此代码说明了 NCO 相位复位功能的使用。 启动时必须使用此函数将精细混频器的相位初始化为有效状态。 请注意,以下代码会重置所有磁贴中的 NCO。

XRFdc_Mixer_Settings Mixer_Settings;
for(tile=0;tile<4; tile++) {
  // 确保混合器设置更新使用 Tile 事件
    for(block=0; block<2; block++) {
        XRFdc_GetMixerSettings (ptr, XRFDC_ADC_TILE, tile, block,&Mixer_Settings);
        Mixer_Settings.EventSource = XRFDC_EVNT_SRC_TILE; //使用XRFDC_EVNT_SRC_TILE事件更新混频器设置
        XRFdc_SetMixerSettings (ptr, XRFDC_ADC_TILE, tile, block,&Mixer_Settings);
    }
    //重置 Tile0 中两个 DDC 的 NCO 相位(假设两者都处于活动状态)
    XRFdc_ResetNCOPhase(ptr, XRFDC_ADC_TILE, tile, 0); // DDC Block0
    XRFdc_ResetNCOPhase(ptr, XRFDC_ADC_TILE, tile, 1); // DDC Block1
    XRFds_UpdateEvent(ptr, XRFDC_ADC_TILE, tile, 1, XRFDC_EVENT_MIXER); //生成tile事件
}  

NCO 频率转换


NCO 处于数字域,其有效频率范围始终为 -Fs/2 至 Fs/2。

当 RF-ADC 或 RF-DAC 工作在子采样频率 (Fc>Fs/2) 时,应用程序必须首先计算第一奈奎斯特频带的信号位置,然后设置有效 NCO 值以移位信号。

为方便起见,Zynq UltraScale+ RFSoC IP GUI 和 API 支持在 -10 GHz 到 10 GHz 的范围内设置 NCO 频率(RFdc API 对 NCO 范围没有限制)。 Vivado Design Suite 或 RFdc API 自动将第一奈奎斯特区之外的高频转换为有效的 NCO 配置。 这适用于 RF-ADC 和 RF-DAC,并严格遵循采样理论。

为避免原始频谱倒置,当所需信号位于偶数奈奎斯特频带时,在下变频中设置正 NCO 频率,或当所需信号位于奇数奈奎斯特频带时,设置负 NCO 频率。 对于上变频,将信号移至偶数奈奎斯特频带时设置负 NCO 频率,将信号移至奇数奈奎斯特频带时设置正频率(此转换仅适用于将 NCO 设置为第一个奈奎斯特频带之外的频率 (±Fs/2) )。

NCO 设置示例


下图说明了为不同场景设置 NCO,从偶数或奇数 Nyquist 频带进行上变频和下变频。 NCO 可以设置在 ±Fs/2 之内或此范围之外。

image.png

RF-ADC 抽取滤波器(第 1 代/第 2 代)


需要抽取滤波器来实现数字下变频 (DDC) 过程的下采样和滤波部分。 整体滤波器响应由使用的抽取级数决定。 抽取链由三个 FIR 滤波器级组成,可以组合起来实现可变抽取率。 当 FIR 级未使用时,它会自动断电。 抽取过滤器允许创建以下内容(第 1 代/第 2 代):

  • 1x:绕过所有过滤器阶段。
  • 2x:使用单个阶段进行抽取过滤。
  • 4x:使用两级抽取滤波。
  • 8x:使用所有三个可用级进行抽取滤波。

每个抽取滤波器元件具有不同数量的抽头,阻带衰减和纹波显示在抽取滤波器详细信息中。 抽取滤波器链可以对 I/Q 数据或真实数据进行操作。 未使用的过滤器链断电。

考虑到 FIR 滤波器的阶跃响应,每个滤波器级都可能溢出,尤其是当满量程数据在输入上时。 为了检测和保护数据路径免于溢出,每个滤波器级和子相位在输出端都有一个带符号的溢出状态信号和饱和信号。 当不使用过滤级时,该标志被强制为零。 这些标志连接到中断处理中描述的数据路径中断机制。 下图中的多路复用器显示了在 IP 配置中选择的抽取级别以及相应的抽取滤波器块选择。

image.png

抽取滤波器操作模式(第 1 代/第 2 代)

Mode Description
Quad and Dual RF-ADC Tile
OFF 整个滤波器被禁用/断电(在禁用 RF-ADC 时适用)
1x 整个过滤器被绕过
2x 2x 抽取,80% 奈奎斯特通带
4x 4x 抽取,80% 奈奎斯特通带
8x 8x 抽取,80% 奈奎斯特通带

80% 奈奎斯特通带为 0.4*Fs。

抽取滤波器使用


IP 内核用于设置抽取率。 这是在 Vivado IDE 中设置的,因为随着 PL 带宽的变化,抽取率的改变会直接影响物理接口。 启用的过滤器如下图所示。 通过选中 Enable ADC 复选框来启用 RF-ADC。

image.png

相关 API 命令


RFdc 驱动程序 API 可用于使用以下代码获取 IP 内核中设置的抽取率。

//获取 Tile0、DDC Block1 的抽取因子
int Tile = 0;
u32 Block = 1;
u32 Decimation_Factor;
if( XRFdc_GetDecimationFactor (ptr, Tile, Block, &DecimationFactor) == XST_SUCCESS) {
  xil_printf("ADC Tile%1d,%1d Decimation Factor is: %d", Tile, Block,Decimation_Factor);
}

抽取滤波器详细信息(第 1 代/第 2 代)

抽取滤波器链由三个 FIR 滤波器组成:FIR2、FIR1 和 FIR0,可启用它们以每级两倍的因子连续抽取。 滤波器传递函数如下图所示。

image.png

image.png

image.png

抽取滤波器的滤波器系数如下表所示。

image.png

RF-ADC 抽取滤波器(第 3 代)


下图显示了第 3 代中的抽取级。

image.png

有四级抽取滤波器级联; 每个抽取级都可以独立绕过。 FIR1 级包含 3 个抽取滤波器——FIR1a (2x)、FIR1b (3x) 和 FIR1c (5x)——对于指定的配置,只能启用其中一个。 FIR2、FIR3 和 FIR4 模块的抽取因子均为 2。使用滤波器组合,以下显示了所有可能的抽取因子:1x(旁路)、2x、3x、4x、5x、6x、8x、10x、12x、 16x、20x、24x、40x 注:DDC的信号流向为:FIR4->FIR3->FIR2->FIR1。

IP 配置和驱动 API 自动选择高阶 FIR 组合。 例如,选择 FIR2 和 FIR1a 进行 4 倍抽取。

抽取滤波器详细信息(第 3 代)


下面列出了所有抽取滤波器的系数和频率响应图。 这些都是半带滤波器,所以只列出了中心抽头值和前半部分。 N(bit) 是系数的位宽,用于归一化系数。

FIR 1a (2x)

N(bit) = 17
Center Tap: 65536
First Half:
5,0,-17,0,44,0,-96,0,187,0,-335,0,565,0,-906,0,1401,0,-2112,0,3145,0,-4723,0,7415,0,-13331,0,41526

FIR 1b (3x)

N(bit) = 19
Center Tap: 174763
2,6,0,-17,-27,0,57,79,0,-143,-187,0,307,385,0,-590,-721,0,1050,1254,0,-1757,-2063,0,2807,3256,0,-4339,-4991,0,6579,7549,0,-9975,-11517,0,15633,18486,0,-27325,-34856,0,71618,144204  

image.png

FIR 1c (5x)

N(bit) = 19
Center Tap: 104858
First Half:
2,0,-4,-10,-13,-11,0,17,35,43,32,0,-47,-91,-107,-78,0,106,198,228,162,0,-210,-386,-437,-304,0,383,693,772,531,0,-652,-1166,-1286,-875,0,1056,1872,2049,1384,0,-1648,-2905,-3163,-2127,0,2514,4421,4804,3227,0,-3819,-6731,-7340,-4956,0,5956,10615,11742,8070,0,-10195,-18821,-21778,-15872,0,24203,52516,79099,98013  

image.png

FIR 2 (2x) Coefficients

N(bit) = 15
Center Tap: 16384
First Half: -12,0,84,0,-337,0,1008,0,-2693,0,10142

FIR 3/4 (2x) Coefficients

FIR 3 和 4 具有相同的系数。

N(bit) = 12
Center Tap: 2048
First Half: -6,0,54,0,-254,0,1230

image.png

抽取滤波器使用


IP 内核用于设置抽取率。 这是在 Vivado IDE 中设置的,因为随着 PL 带宽的变化,抽取率的改变会直接影响物理接口。 启用的过滤器如下图所示。 通过选中 Enable ADC 复选框来启用 RF-ADC。

image.png

相关 API 命令


RFdc 驱动程序 API 可用于使用以下代码获取 IP 内核中设置的抽取率。

//获取 Tile0、DDC Block1 的抽取因子
int Tile = 0;
u32 Block = 1;
u32 Decimation_Factor;
if( XRFdc_GetDecimationFactor (ptr, Tile, Block, &DecimationFactor) == XST_SUCCESS) {
  xil_printf("ADC Tile%1d,%1d Decimation Factor is: %d", Tile, Block,Decimation_Factor);
}  

reference


1.PG269


目录
相关文章
|
1天前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
16 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
2天前
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
7 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
3天前
|
XML 存储 开发框架
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
7 0
|
4天前
|
供应链 搜索推荐 API
API在电子商务中的应用与优势:深入解析
API是电子商务成功的关键,它们不仅促进了技术创新,还提高了用户体验和运营效率。随着技术的不断进步,API将继续在电子商务领域发挥更加重要的作用。电子商务平台通过利用API,可以更加灵活地适应市场变化,提供更加丰富和个性化的购物体验,最终实现业务的增长和扩展。
|
5天前
|
JSON 安全 前端开发
解析FormData格式数据:Python实践指南
解析FormData格式数据:Python实践指南
13 1
|
10天前
|
供应链 Java API
Java 8新特性解析及应用区块链技术在供应链管理中的应用与挑战
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API和Optional类等。通过对这些新特性的详细解析和应用实例,帮助读者更好地理解和掌握Java 8的新技术。
|
11天前
|
存储 芯片
【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)
|
4天前
|
Java Android开发
Android12 双击power键启动相机源码解析
Android12 双击power键启动相机源码解析
13 0
|
1天前
PandasTA 源码解析(一)(2)
PandasTA 源码解析(一)
7 0

推荐镜像

更多