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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: RFSoC应用笔记 - RF数据转换器 -04- RFSoC关键配置之RF-ADC内部解析

前言


RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义。本文参考官方手册,主要对RFSoC ADC的数字数据路径相关功能进行介绍。

RF-ADC 数字数据路径


Tile 中的 RF-ADC 组件具有集成的 DSP 功能,您可以启用这些功能在将来自 RF-ADC 设备的采样数据传递到 PL 之前对其进行预处理。 不同的 DSP 功能块如下:

  • 检测功能:包含一个双级可编程阈值,为内部互连逻辑提供两个标志,并在 RFADC 的绝对输出值大于或小于编程阈值时置位。
  • 补偿功能:包含一个正交调制器校正 (QMC) 模块和一个粗延迟调整模块。
  • 数字下变频器 (DDC):
  • 混频器——粗调(四分之一和半速率)和精细(具有 48 位频率分辨率的 NCO)。
  • Gen 1/Gen 2:信号抽取功能—支持1(旁路)、2、4 或8 抽取。
  • Gen 3:信号抽取功能—支持1(旁路)、2、3、4、5、6、8、12、16、20、24、40 抽取。

可以使用或绕过单个、多个或所有 DSP 功能。 某些功能,例如 QMC,需要在 I 和 Q RF-ADC 中激活相同的功能。 偶数 RF-ADC 始终用于 I 数据路径,奇数 RF-ADC 用于 Q 数据路径。 您可以使用 IP 内核实现、配置或修改一个或多个功能的功能。

下图显示了 RF-ADC 中的可用功能。

image.png

RF-ADC 阈值和超范围设置


与任何 ADC 一样,输入模拟信号必须保持在 ADC 的满量程范围内,并且处于正确的输入电平。 任何不符合这些条件的信号都会导致数据丢失。 为了帮助防止这种情况,阈值检测器功能可用于调整信号链增益,以将信号保持在理想的满量程范围内。 但是,如果信号确实超出了满量程范围,每个 RF-ADC 通道都具有内置的检测和保护功能,具有过量程和过压功能。

过电压和超范围信号提供给 IP 内核上的中断功能,以及 IP 内核上的 RF-ADC 实时信号总线,以便直接访问 PL 设计。

Over Range(超出范围)


当信号超出 RF-ADC 的满量程输入时,会出现超出范围的情况。 当检测到这种情况时,转换后的数据会饱和(限幅)以限制数据损坏,并且信号由中断机制和通过断言 Over Range 实时输出信号进行标记。 由于 Over Range 事件可以短至一个 RF-ADC 样本,因此输出信号具有粘性。 要清除 Over Range 输出和相关中断,使用 API 中断处理机制。

Over Voltage 过压(第 1 代/第 2 代)


当信号远远超出正常工作输入范围时,就会出现过压情况。由于输入端电压过高会损坏器件,因此提供了自动保护机制。过压事件会导致输入缓冲器自动关闭以保护它。 过压电路独立监控差分输入的每个信号,并在任何单个输入信号超过最大输入电压或低于 RF-ADC 输入缓冲器的最小输入电压时标记状态。过压功能为 Zynq UltraScale+ RFSoC 数据表中定义的范围内的信号提供保护(DS926)。 超过此最大值的信号是不允许的,必须注意外部,以确保不会将此类电压提供给 RF-ADC 输入。

当检测到过压情况时,中断机制和置位过压实时输出信号都会对信号进行标记。 过电压实时输出被异步断言和取消断言,并提供事件的即时通知。 因此,当过压条件不再存在时,过压输出会自行清零。 相关的中断是粘性的,因此需要通过 API 中断处理例程清除。

在发生过压事件后,输入缓冲器会自动重新启用,并且 RF-ADC 会像以前一样恢复运行。 但是,应将过压条件视为停止通信并重新启动接收器链的理由。 如果出现过压情况,缓冲器将关闭,由此产生的 RF-ADC 输出数字代码大多只是噪声。 结果,阈值信息变得无关紧要,这会影响 AGC 的实施。 因此,AGC 实施应考虑过电压信号并相应地设置两个阈值检测器,这一点很重要。

下图显示了阈值、过量程和过压电平以及随着输入模拟信号的增加这些电平的响应。

image.png

阈值设置


阈值功能无需等待信号通过信号处理模块传播,而是提供传入信号电平的早期指示。 PL 中实现的自动增益控制 (AGC) 可以使用这种信号电平的早期指示。 用于指示输入信号电平的阈值电平是使用 RFdc 驱动程序 API 设置的。

当 RF-ADC 采样数据进入数据路径时,会进行阈值监控。 将此数据与用户定义的阈值进行比较。 阈值状态信号被发送到 IP 内核的输出,以指示已超过用户定义的阈值。 每个 RF-ADC 有两个实时超阈值输出信号。 阈值监控电路的模式如下表所示。

image.png

阈值级别设置为 14 位无符号值,允许 0 到 16383 之间的任何值。 最大值 16383 表示 RF-ADC 满量程输入的绝对值。 32 位可编程延迟对 RF-ADC 样本进行计数。 要将此计数与特定时间相关联,可以使用以下等式:

image.png

其中对于 Quad RF-ADC tile,Interleaving Factor 为 4,并且为 8 用于双 RF-ADC 模块。

延迟也可以用样本而不是 ms 表示,如下所示:

image.png

清除阈值标志


在 Sticky Over 和 Sticky Under 模式下,阈值置位后,可以通过两种方式清除标志; 通过直接发出 clear 命令或使用 AutoClear 功能。

每当与该 RF-ADC 关联的 QMC 增益值更新时,AutoClear 模式都会清除阈值。

阈值操作示例


下图说明了阈值单元操作。 该图显示了三个阈值 a、b 和 c,每个阈值配置为不同的阈值模式。 在硬件中,所有阈值单元都有独立的阈值电平和延迟值。 在此示例中,阈值水平由水平虚线表示,并且所有单元都使用相同的水平进行说明。

延迟值设置为 5(延迟值对 Sticky Over 模式没有影响),并且设置了粘性阈值以通过不同的清除模式清除。 以下部分描述了该行为。

注意:在下图中,样本由一个 sub-ADC 计数,而不是 RF-ADC。

image.png

Threshold-A, Sticky Over Mode


当第一个样本超过阈值上限时,该标志置位。 在此示例中,使用对 XRFdc_ThresholdStickyClear API 函数的调用来清除标志。

Threshold-B, Sticky Under Mode


当样本持续低于样本延迟数(示例中为 6)的下限阈值时,该标志置位。 在此示例中,通过更新 QMC 增益值来清除标志,该值是通过调用 XRFdc_SetQMCSettings API 函数发出的,然后是更新事件,该事件应用 QMC 增益更新。

Threshold-C, Hysteresis Mode


当第一个样本超过上限阈值时,该标志置位。 当样本持续低于样本延迟数的下限阈值时,该标志被清除。

阈值 RFdc 驱动程序 API 操作


使用 RFdc 驱动程序 API 配置阈值电平和延迟值。

// Initial Setup
XRFdc_Threshold_Settings Threshold_Settings;
Threshold_Settings.UpdateThreshold = XRFDC_UPDATE_THRESHOLD_BOTH; // Setup
values
for threshold 0 and 1
Threshold_Settings.ThresholdMode[0] = XRFDC_TRSHD_STICKY_UNDER; // Set
threshold0
mode to Sticky Under
Threshold_Settings.ThresholdUnderVal[0] = 1000; // Measured in 14-bit
unsigned LSBs
Threshold_Settings.ThresholdAvgVal[0] = 10; // Data must be below lower
threshold for 10*8 4 GSPS RF-ADC samples
// Write threshold values to the selected Tile / RF-ADC
XRFdc_SetThresholdSettings(ptr, Tile, Block, &Threshold_Settings);

阈值应用


阈值检测器的常见用途是自动增益控制 (AGC) 应用。

超量程设置


有两种类型的超量程信号可用作可编程逻辑的状态输出,即超电压和超量程。IP 内核使用中断机制公开这些信号,因此任何违规都会立即标记给用户应用程序。 当超出正常或预期的操作水平时触发这些。

过压信号


只要输入信号超过来自 RF-ADC 输入缓冲器的安全输入范围,就会检测到过压信号。

超量程信号


  • 当输入信号超过RF-ADC 的± 数字满量程范围时,检测到超量程信号。
  • 在RF-ADC 的原始数字输出处测量超量程信号。

信号幅度检测器(第 3 代)


时间交错式 RF-ADC 依赖于多个背景校准,以最大限度地提高其在工艺变化范围内的性能,并在电压和温度变化范围内保持其性能。 背景校准算法需要输入信号存在一段时间才能收敛并达到最佳性能。 当输入信号不存在时,校准会发散,因此当输入信号恢复时,校准需要一段时间才能重新收敛。

如果处理不当,一些实际应用(例如电缆应用和 TDD 无线通信中使用的突发模式信号,或来自雷达应用之类的不可预测信号)会降低校准的准确性。

每个 RF-ADC 通道都内置了幅度检测器,用于监控 RF-ADC 数据并检测信号幅度何时低于某个阈值。 信号的开/关状态呈现给可编程逻辑,并可通过实时端口用于冻结或启用背景校准模块。

概述


幅度检测器模块用于监控 RF-ADC 数据并检测信号幅度何时低于某个阈值。 该模块监视 4 个或 8 个并行输入字。 每个通道监控的输入字数基于 RF-ADC 配置(四通道或双通道块)。下图显示了幅度检测器在 RF-ADC 数据路径上的位置。每个 RF-ADC 通道都有自己的幅度检测器模块。

image.png

该块的目的是检测信号幅度何时低于或高于某个可编程阈值,并将信号的状态作为实时异步状态输出到可编程逻辑。 结构的输出状态是信号状态。 信号状态被认为是开或关。

信号幅度检测器详解


幅度检测器由一个输入级、一个泄漏积分器滤波器、一个阈值比较器和两个基于滞后计数器的滤波器实例组成。下图显示了检测器的架构。

image.png

Input Stage

输入级以 T4/T8 时钟速率将 N=4 或 N=8 个输入字作为输入,并在每个 T4/T8 周期输出一个样本。 该模块以以下两种模式之一运行:

  • 平均模式:所有子ADC 输入的平均幅度用于检测信号幅度。
  • 随机采样:一个随机选择的数据字(子ADC)用于检测信号幅度。
泄漏积分器(Leaky Integrator )

泄漏积分器用于测量一段时间内的平均信号幅度。 泄漏积分器时间常数可编程从单个 T4/T8 时钟周期到 2 ^16 个时钟周期。

泄漏积分器的变换函数如下:

image.png

其中:

y[n] 是泄漏积分器的输出。

y[n-1] 是泄漏积分器的最后一个输出。

x[n] 是当前输入值; 输入级的输出。

2^λ 的输出是时间常数。

下表给出了可编程时间常数值:

Lambda Index Lambda Value Time Constant (T4/T8 Cycle)
0 0 2^0
1 2 2^2
2 4 2^4
3 8 2^8
4 12 2^12
5 14 2^14
6 16 2^16
7 N/A N/A

image.png

上图中使用了一个高斯分布信号进行说明。 一组基于不同时间常数的曲线显示了泄漏积分器的 20*log10 输出。

用户可编程刷新位可用于刷新将值重置为 0 的泄漏积分器。

上升和下降时间


在输入信号是突发信号或幅度变化剧烈的某些应用中,需要评估泄漏积分器的上升/下降时间。 上升时间可以从它的阶跃响应推导出来; 下降时间可以从它对初始条件的响应中得出。 以下公式分别显示了如何计算上升和下降时间:

image.png

其中: α = 1 - 1/2^λ

考虑到何时泄漏积分器的输出达到上升时间计算最终值的 90%,比最终值低约 1 dB。

对于下降时间,使用 1% (-40 dB) 来说明满量程信号下降到 -40 dBFS,这使得下降时间大约是上升时间的两倍。

下表显示了基于不同时间常数的参考上升/下降时间:

image.png

迟滞计数器(Hysteresis Counter)


漏滤波器之后的滞后计数器块,由一个阈值比较器和两个计数器组成,它们都是用户可编程的。 迟滞计数器用于进一步过滤来自泄漏积分器的信号幅度,以避免在信号幅度接近阈值电平时发生振荡,并输出稳定状态,ON或OFF。

如果信号大于或等于 2 *“高计数器”连续周期数的阈值,则认为该信号为 ON。 以类似的方式,如果信号在 2 *“低计数器”连续周期数内小于“阈值”,则认为该信号为 OFF。如果前一个条件不满足,低计数器和高计数器立即同步复位。 “ON”或“OFF”输出将保持其状态,直到被另一个计数器更改。

阈值电平为 15 位无符号值,以下公式将阈值电平转换为满量程对数值:

image.png

高位计数器和低位计数器均为 17 位 无符号值,虽然高 16 位是用户可编程的,但最低有效位始终为 0。

信号检测器示例


将阈值设置为 -40 dBFS,以下示例说明了此信号检测器模块在不同时间常数和计数器值下的响应。

假设采样率为 4 GHz,插值因子为 8,则每个 T8 为 2 ns。

假设 lambda = 8 时的 on 和 off 计数器值为 1000,lambda = 12 时为 300,则上升时间为 (587 或 9429 + 21000 或 2300) * T8,大约为 5.2 µs 或 20 µs; 在本例中,下降时间应考虑从 -39 dBFS 下降到 -41 dBFS,约为 (58 或 942 + 21000 或 2300) * T8,结果为 4.1 µs 或 3.1 µs。

下图显示了两个示例,均基于高 PAR(约 12 dB)突发信号,信号幅度约为 -40 dBFS,有一点偏移(1-2 dB)。

image.png

上图说明了 lambda = 12 和 counter = 300 的响应。

image.png

上图说明了 lambda = 8 和 counter = 1000 的响应。

这些示例显示了此模块根据输入信号幅度给出的正确响应。 您应该为特定应用选择计数器值和适当的时间常数。

目录
相关文章
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
9天前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
3天前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
|
3天前
|
存储 供应链 安全
深度解析区块链技术的核心原理与应用前景
深度解析区块链技术的核心原理与应用前景
10 0
|
7天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
19 0
|
3天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
14 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
66 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
52 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
59 0
|
1月前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
80 0

推荐镜像

更多