前言
RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义。本文参考官方手册,主要对RF-DAC 奈奎斯特区操作、逆sinc滤波器以及数据通路的相关操作进行介绍。
RF-DAC 奈奎斯特区操作
每个 RF-DAC 都可以通过使用混合模式功能优化其在第二个奈奎斯特区的输出响应。 此功能将 RF-DAC 数据与采样时钟混合,因此增加了第二奈奎斯特区的输出功率,同时衰减了第一奈奎斯特区的输出功率。 如下图所示。
对于正常(非混合模式)操作,蓝线代表理想的 RF-DAC 输出 roll-off sinc 响应。 可以看出,在这种模式下,第二奈奎斯特区的输出图像将被严重衰减。 一个反 sinc 滤波器可用于补偿此模式下第一奈奎斯特区的滚降。
在 RF-DAC 混合模式下,红线代表理想的 RF-DAC 输出响应。 在这种模式下,第二奈奎斯特区的图像输出功率显着增加,并且在该区域的大部分区域内也具有近似平坦的响应。 奈奎斯特区可以在 Vivado IDE 中设置。 由于 sinc 响应衰减和可能的带宽滚降,通常不使用在高于 2 的奈奎斯特区操作 RF-DAC。
RF-DAC 逆 Sinc 滤波器
RF-DAC 的模拟输出响应遵循特征 sinx/x 或 sinc 形状。 对于需要在宽带宽上具有平坦输出响应的应用,可以使用反 sinc 滤波器来实现这一点。 反 sinc 滤波器是一个 11 抽头 FIR,可提供平坦响应,在高达 89% 的奈奎斯特时纹波小于 ±0.05 dB,或在高达 80% 的奈奎斯特时纹波为 ± 0.033 dB。 下图显示了反 sinc 性能。
蓝色线代表滤波器本身的频率响应。 可以看出,它随频率增加以补偿输出的 sinc 响应,如红线所示。 复合输出响应由黄色迹线给出,并显示高达 89% 奈奎斯特的平坦通带。 下图显示了校正响应的详细信息,纹波规格水平以红色突出显示。
反 Sinc 滤波器参数
Inverse Sinc FIR | -1 | 3 | -6 | 15 | -52 | 594 | -52 | 15 | -6 | 3 | -1 |
用于混合模式的反 Sinc 滤波器(第 3 代)
除了用于第一个 Nyquist 频段的反 Sinc 滤波器外,当 RF-DAC 在混合模式下运行时,也可以为第二个 Nyquist 频段提供一个反 Sinc 滤波器。 这是一个具有 9 个抽头的半带滤波器,在 80% 奈奎斯特频带内,平坦度 < ±0.033 dB。
混合模式的反 sinc 滤波器的系数和频率响应如下所示。 N(bit) 是系数的位宽; 用于归一化系数。
N(bit) = 10 Center Tap: 1066 First Half: 5,0,25,1
第二奈奎斯特频带中的反sinc滤波器的平坦度如下所示。
溢出
从反正弦频率响应中可以看出,滤波器增益 >1。 为确保滤波器输出不会溢出,必须回退输入信号幅度以考虑此增益因子。 反 sinc 模块具有自动溢出检测和饱和,如果检测到溢出,则使用 RFdc 驱动程序 API 的中断机制,使用 XRFDC_DAC_IXR_INVSNC_OF_MASK 中断对其进行标记。
RF-DAC 数字数据通路
tile 中的每个 RF-DAC 都具有许多优化的 DSP 功能,可用于实现数字上变频 (DUC) 和传输信号滤波。 这些功能包括:
- Gen 1/Gen 2:信号插值功能——支持 1(旁路)、2、4 或 8 插值。
- Gen 3:信号插值功能——支持插值1(旁路)、2、3、4、5、6、8、12、16、20、24、40和80(IMR模式)。
- 使用 48 位频率分辨率数控振荡器 (NCO) 进行粗混(四分之一和半速率)或精混。
- 补偿功能包含正交调制器校正 (QMC) 块和粗延迟调整块。
- 包含逆正弦 FIR 滤波器的信号调理。
使用 Vivado IDE,可以使用或绕过单个、多个或所有 DSP 功能。下图显示了 RF-DAC 中的可用功能。 以下部分介绍了每个功能。
RF-DAC 插值滤波器(第 1 代/第 2 代)
需要插值滤波器来实现 DUC 过程的上采样和滤波部分。 实现的滤波器操作由三个低通 FIR 滤波器组成,每个滤波器都有一组预定的固定系数,如下图所示。 每个过滤器块可以被绕过,每个过滤器块的输出可以被路由到过滤器的输出。
- 1x - 绕过所有滤波器级
- 2x - 使用单级插值
- 4x - 使用两级插值
- 8x - 使用所有三个可用级插值
插值信号的输出是在较高采样率下呈现的原始信号的精确表示。 将在 F1 采样的信号上采样到更高的采样率 (N*F1) 会导致原始频谱的 N 次复制。 结果的低通滤波有助于去除不需要的复制,从而以所需的更高采样率保存原始信号。
插值滤波器操作模式(第 1 代/第 2 代)
考虑到 FIR 滤波器的阶跃响应,每个滤波器级都可能溢出,尤其是在输入有满量程数据时。 每个滤波器级都有一个溢出状态信号和输出饱和,以检测溢出并保护数据通路。 当不使用过滤级时,溢出标志被拉低。 这些标志连接到数据路径中断机制。
插值滤波器使用
IP 核用于设置插值率。 这是一个 IP 内核设置,因为随着 PL 带宽的变化,改变插值率会直接影响物理接口。 启用的过滤器如下图所示。
I/Q 输入数据和混合至少需要 2 倍插值。 如果需要全带宽 I/Q 数据,两个 RF-DAC 数据转换器可以作为独立的实际流运行,分别包含 I 和 Q 数据。 使用 QMC 时无法进行相位调整。
RFdc 驱动程序 API 命令
RFdc 驱动程序 API 可用于使用以下代码获取在 Vivado® IDE 中设置的插值速率。
// Get Interpolation factor for Tile0, DUC Block1 int Tile = 0; u32 Block = 1; u32 Interpolation_Factor; if( XRFdc_GetInterpolationFactor (ptr, Tile, Block, &Interpolation_Factor) == XST_SUCCESS) { xil_printf("DAC Tile%1d,%1d Interpolation Factor is: %d", Tile, Block,Interpolation_Factor); }