本文转载自:Vuko-wxh的CSDN博客
前言
RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义。本文参考官方手册,主要对RFSoC ADC的可编程逻辑数据接口、多频带操作、以及奈奎斯特区的操作进行介绍。
RF-ADC 可编程逻辑数据接口
RF-ADC 块和 PL 之间的数据接口通过使用 AXI4-Stream 协议的并行数据流实现。 这些数据流通过FIFO 输出,在用户应用程序和 RF-ADC 块之间提供灵活的接口。 对于第 3 代,最大接口宽度为 192 位,最多代表 12 个16 位小端字。数据流和相关的 FIFO 具有可配置的字数,可以灵活地在字数和时钟频率之间进行选择,以与 PL 设计接口。 每个 tile 有四个流,命名约定是 mXY_axis,其中 X 代表 RF-ADC tile 编号,Y 代表从该 tile 输出的流 (FIFO)。 下图显示了接口。
接口数据格式
数据流代表真实数据或 I/Q 数据,具体取决于 RF-ADC 块配置。 对于双 RF-ADC 块,给定的流是实数,I 或 Q。如果 RF-ADC 配置有 I/Q 输出数据,则具有偶数的流代表 I 数据,具有奇数的流代表 Q 数据。 这些双实数和 I/Q 配置显示在 RF-ADC IP 配置中。
对于四路 RF-ADC 块,给定的流要么是真实的,要么是 I/Q 交错的。 如果 RF-ADC 配置有 I/Q 输出数据,则流的偶数样本代表 I 数据,奇数样本代表 Q 数据。 这些 Quad real 和 I/Q 配置将在以下部分中进行说明。
RF-ADC 接口数据和时钟速率
每个通道到 PL 的总数据速率由许多因素决定,RF-ADC 采样率、抽取因子和 I/Q/Real 数据格式。FIFO 通过允许更改每个时钟的字数,提供了一种将此数据速率与 PL 设计的时钟频率相连接的方法。唯一的要求是字数和时钟速率相结合,以匹配 RF-ADC 的输出数据速率和抽取率(如果启用)。
一个 tile 中的所有 RF-ADC 共享一个公共接口时钟频率。 这由以下等式显示,其中 2G_IQMode 对于 Quad RF-ADC tile 设置为 2,I/Q 模式启用,否则设置为 1。
内核根据 RF-ADC 采样率和数据路径设置自动计算数据速率。
因为每个块都有独立的时钟,所以可以在每个块的基础上指定采样率、时钟率、PL 速率和配置。
PL 时钟接口
所有四个片流的 AXI4-Stream 数据与来自 PL 的时钟同步,PL 的命名约定为 mX_axis_aclk,其中 X 代表 RF-ADC 瓦片编号。 此时钟必须处于 IP 内核配置屏幕上显示的所需 AXI4-Stream 时钟指定的频率。
RF-ADC 块还输出可供 PL 使用的时钟。 该输出时钟是 RF-ADC 采样时钟的分频版本,因此对其进行频率锁定。 此时钟具有 clk_adcX 的命名约定,其中 X 表示 RF-ADC 块编号。
接口 FIFO 溢出
通过接口FIFO 的数据速率必须在 RFADC 块运行期间保持恒定,PL 时钟和 RF-ADC 采样时钟域之间没有频率漂移。 如果这些域之间存在频率不匹配,则可能会发生 FIFO 溢出。 接口 FIFO 具有确定是否发生 FIFO 溢出的内置功能,使用 IP 中断机制将其标记到 PL。
溢出有两种类型,实际溢出和边际溢出。 实际溢出表明 FIFO 读/写指针重叠,这意味着数据没有在域之间安全传输,必须采取措施。 边际溢出是一个警告,表示 FIFO 读/写指针接近重叠。 正常操作期间不应发生溢出,如果观察到溢出,则表明 PL/PCB/IP 的时钟基础结构配置不正确。
同步
FIFO 为 RF-ADC 块提供灵活的数据和时钟接口。 但是,与所有双时钟 FIFO 一样,延迟可能会在一个 tile 和另一个 tile 之间变化。 虽然 tile 中的所有通道都具有相同的延迟,但某些应用可能需要使用多个 RF-ADC tile,并且需要在所有 RF-ADC 通道中匹配延迟。 这些应用程序可以使用多块同步 (MTS) 功能来实现这种块间同步。
RF-ADC 多频带操作
RF-ADC 可以配置为在多频带模式下操作。 这是输入模拟输入由上变频(混合)到不同载波频率的基带信号组成的地方。多个 DDC 模块用于下变频模拟输入以恢复单独的基带信号。
RF-ADC 多频段功能支持以下配置:
每对2x 多频段实际数据。 一个 RF-ADC 模拟输入处于活动状态。 两个 RF-ADC 输出均启用。
每对2x 多频段I/Q 数据。 两个 RF-ADC 输入都处于活动状态,一个用于 I,一个用于 Q。两个 RF-ADC 输出均启用。
每个区块4x 多频段实际数据(仅限四路ADC 区块)。 一个 RF-ADC 模拟输入处于活动状态。 所有 4 个 RF-ADC 输出均启用。
每块4x 多频带I/Q 数据(仅限四ADC 块)。 两个 RF-ADC 输入处于活动状态,一个用于 I,一个用于 Q。所有 4 个 RF-ADC 输出均启用。
当多频段关闭时,I 和 Q 输入直接通过多频段路由逻辑。
当多频段开启时,I 和 Q 输入被路由到 tile 中的多个 DDC 模块。
RF-ADC 多频段是通过将一个 RF-ADC 模拟模块的输出路由到多个 RF-ADC DDC 模块来实现的。 每个块处理一个数据带,并且可以从多个载波混合到基带。 下图中的 Quad ADC 块显示了这一点。
RF-ADC Tile 0 (Tile_224) 配置为实际输入到 I/Q 输出模式。 ADC0 转换双频信号; ADC1 关闭。 顶部对可以配置为独立的 RF-ADC。 双频输出路由到 ADC0 和 ADC1 的 DDC 模块。 DDC 模块中的混频器可以配置为从输入数据中提取正确的频带。
RF-ADC Tile 1 (Tile_225) 配置为 4x 多频段 I/Q 输入到 I/Q 输出模式。 这里 ADC0 承载四波段 I 信号,ADC1 承载 Q 数据。 ADC2 和 ADC3 关闭。 RF-ADC 的输出被路由到所有四个 DDC 模块。 每个 DDC 都可以配置为从所需的频带中提取数据。
RF-ADC 奈奎斯特区操作
每个 RF-ADC 通道都可以对第一或第二奈奎斯特区的信号进行采样。 为确保 RFADC 性能最佳,RF-ADC 配置设置应指示预期的操作区域。
第一奈奎斯特区定义为 0 和 Fs/2 之间的信号。
第二奈奎斯特区定义为 Fs/2 和 Fs 之间的信号。
只要信号满足 RF-ADC 输入带宽要求,也可以使用其他奈奎斯特区 . 1、3、5、…区称为奇数区,2、4、…区称为偶数区。
RF-ADC IP 配置
RF-ADC 模块可以配置为多种模式。 Vivado IDE 的 IP 内核配置屏幕上提供了基本配置选项,并且可以使用 RFdc 驱动程序 API 配置高级操作模式。
RF-ADC 可用于四路或双路配置,具体取决于 tile。
双 RF-ADC 配置选项
双 RF-ADC 实输入到实输出
下图显示了一个双 RF-ADC,它具有实际数据输入到实际数据输出、1x 抽取、混频器被绕过并以 250 MHz AXI4-Stream 时钟运行。
双路 RF-ADC 实输入到 I/Q 输出
下图显示了一个双路 RF-ADC,其具有真实数据输入到 I/Q 数据输出、1x 抽取、启用混频器并以 500 MHz AXI4-Stream 时钟运行。
双路 RF-ADC I/Q 输入到 I/Q 输出
对于 I/Q 输入到 I/Q 输出,RF-ADC 是成对的。I/Q 输入到 I/Q 输出配置在每块具有一个 RF-ADC 的设备上不可用。
下图显示了具有 I/Q 输入到 I/Q 输出、1x 抽取、启用混频器并以 500 MHz AXI4-Stream 时钟运行的双 RF-ADC。
四路 RF-ADC 配置选项
下图显示了四路 RF-ADC 实际数据输入到实际数据输出,1x 抽取,混频器被绕过,并以 500 MHz AXI4-Stream 时钟运行。
四路 RF-ADC 实输入到 I/Q 输出
下图显示了四路 RF-ADC 实际输入数据到 I/Q 输出数据、1x 抽取、启用混频器并以 500 MHz AXI4-Stream 时钟运行。 请注意,每个 I/Q 通道在输出数据流上交错。
四路 RF-ADC I/Q 输入到 I/Q 输出
对于 I/Q 输入到 I/Q 输出,RF-ADC 是成对的。
下图显示了 Quad RF-ADC I/Q 到 I/Q、1x 抽取、混频器已启用并以 500 MHz AXI4-Stream 时钟运行。
四路 RF-ADC I/Q 输入到 I/Q 输出
对于 I/Q 输入到 I/Q 输出,RF-ADC 是成对的。
下图显示了 Quad RF-ADC I/Q 到 I/Q、1x 抽取、混频器已启用并以 500 MHz AXI4-Stream 时钟运行。
reference