应用概述

本文概述了如何在系统中使用RFSoC 射频数据转换器的自动增益控制和NCO跳频功能。

文章目录

  • 应用概述
  • 自动增益控制系统
    • 数字增益补偿
    • 使用 QMC 增益进行补偿
    • 使用 PL 增益进行补偿
    • 确定增益变化延迟
  • NCO 跳频
    • 单转换器模式
    • 多片模式
  • reference

自动增益控制系统

自动增益控制 (AGC) 常用于 RF-ADC 应用中,其中输入的动态范围变化很大。 它提供了一种使用 RFADC 输入范围和最大化信噪比 (SNR) 的方法,同时提供了响应变化信号幅度的灵活性。
AGC 系统由以下组件组成:

  • 可变增益放大器 (VGA)
  • RF-ADC
  • 信号幅度监控
  • AGC 算法/决策逻辑
  • 数字增益补偿

RFSoC RF-ADC 通道允许实施定制 AGC 解决方案 通过将信号幅度监测和补偿功能集成到 RFADC 块中。 这些功能可以与嵌入在 FPGA PL 中的外部 VGA 和 AGC 逻辑一起使用。RFSoC Gen 3 器件在每个 RF-ADC 块中集成了 DSA。 如下图所示。

此图显示了一个示例 AGC 应用程序。 使用阈值功能在每个 RF-ADC 通道内实施信号幅度监控。 此功能提供了两个可以对每个 RF-ADC 通道进行编程的阈值。 当违反阈值电平时,会直接在 PL 中指示,从而绕过数据路径中的任何延迟。AGC 的高级操作示例如下:

  1. 在系统初始化时,阈值电平和模式,包括从 PL 启用阈值清除功能,由 RFdc 驱动程序 API 设置。

  2. 如果违反阈值水平:

  3. 实时超过阈值输出标志置位。

  4. 基于 PL 的 AGC 算法做出决定并计算新的 VGA 增益和补偿增益。

  5. 增益值被编程到 VGA 和数字补偿逻辑。

  6. adcXY_pl_event 由 AGC 逻辑断言。

  7. 阈值被清除。

数字增益补偿

当 VGA 调整模拟信号电平时,可能需要在 RF-ADC 之后进行数字补偿,以保持整体信号电平恒定。 为了最大限度地减少对接收信号的干扰,可以调整增益调整,以便在相对于所应用的模拟增益的相同时间点应用数字补偿。 这个应用时刻必须考虑到模拟增益变化通过 VGA、RF-ADC 和数字逻辑的传播之间的相对延迟。 有多种方法可以实现这种增益调整和同步应用。

使用 QMC 增益进行补偿

QMC 增益功能内置于 RF-ADC 块中,并提供 0 到 2.0 之间的可编程增益,具有 16 位输出分辨率。 使用它,可以放置 12 位 RF-ADC 输出信号,以通过数字数据路径提供灵活的动态范围。 QMC 模块中增益值的应用时刻可以由 adcXY_pl_event 信号控制。 该信号由 PL 中的用户设计直接控制,应延迟以考虑外部 VGA 调整和 RF-ADC 转换所需的延迟。 使用此选项时,可在应用增益时自动清除粘性阈值输出。

使用 PL 增益进行补偿

对于更宽的动态范围数字增益调整,可以使用 FPGA PL。 与 QMC 增益方法类似,应使用通过 VGA、RF-ADC 和数据路径的延迟来延迟 PL 中增益变化的应用。 PL 增益更改后,可以使用 RFdc 驱动程序 API 或发出 adcXY_pl_event 清除阈值。

确定增益变化延迟

为了在正确的时刻应用数字增益补偿,增益变化通过模拟路径的传播之间的相对延迟必须与数字增益更新代码通过数字路径的传播保持一致。 由于外部 VGA 通信和响应时间特定于用户应用程序,因此必须在系统中测量这些相对延迟。 对于数字路径,每个图块都有一个名为 adcXY_pl_event 的专用输入,可用于在确定的时间应用设置,例如增益。 为了确定数字和模拟路径之间的相对延迟,应在设计阶段应用恒定幅度的测试信号,并应用数字和模拟增益调整。 查看输出数据,可以将数字和模拟增益应用时刻之间的增量时间观察为输出信号幅度中的驼峰/直通。 该增量时间应通过计算 RF-ADC 输出时钟 (clk_adcX) 的周期添加到 adcXY_pl_event 断言中。

在设计的正常操作期间使用此预定延迟可确保对齐增益应用时刻。下图说明了响应示例 AGC 应用程序的阈值事件的阶段。 图的中间区域代表与模拟/VGA路径相关的信号,而下部区域代表与数字路径相关的信号。

如图所示,AGC 更新由阈值的断言启动。 作为对此的响应,PL 中的 AGC 算法计算要对模拟和数字路径进行的增益调整。 VGA 更新写入、VGA 稳定响应和 RF-ADC 延迟显示了延迟通过模拟路径的传播。 通过数字路径的传播延迟由 API 写入新增益值(用 TRFdc_API 表示)和 adcXY_pl_event 断言(用 TDelta_Latency 表示)来显示。 TDelta_Latency 由用户应用程序选择以匹配数字和模拟延迟。 应用数字增益更新后,如果启用了 Auto-Clear 功能,则可以自动取消断言阈值。

使用 RFdc 驱动程序 API 应用 QMC 增益可能会产生一些驱动程序开销。 在不希望出现这种延迟的应用中,可以使用 PL 数字增益补偿方法。

NCO 跳频

当使用带有数控振荡器的 RF-ADC 或 RF-DAC 混频器时,可以使用 RF-ADC 和 RF-DAC 实时 NCO 接口实时调整 NCO 的频率。 本节介绍这些接口的操作。

在执行跳频时,必须将有关 NCO 所需相位和频率的信息传送到 IP 内核。 NCO 频率由 48 位二进制补码有符号数 nco_freq 设置。 nco_freq 信号的范围为 -Fs/2 到 Fs/2。 最大正值 (0x7FFF_FFFF_FFFF) 产生 Fs/2 的 NCO 频率,而最大负值 (0x8000_0000_0000) 产生 -Fs/2 的 NCO 频率。 如下表所示。

NCO Frequency nco_freq
-Fs/2 0x8000_0000_0000
-Fs/4 0xc000_0000_0000
0 0x0000_0000_0000
Fs/4 0x3FFF_FFFF_FFFF
Fs/2 0x7FFF_FFFF_FFFF

如果所需的 NCO 频率高于 Fs/2,则应根据需要通过减去采样频率将频率折叠到 -F s/2 到 Fs/2 范围内。 类似地,对于较大的负频率,将采样频率添加到所需的 NCO 频率,直到它在范围内。 对于偶数 Nyquist 区域中的 NCO 频率,结果频率应取反。对于选择校准模式 1 的 Gen 1 和 Gen 2 RF-ADC,混频器频率应降低 Fs/2。

相位信息由 nco_phase 携带。 这是添加到 NCO 累加器输出的相位偏移。 nco_phase 输入是一个 18 位二进制补码有符号数,范围为 -180 到 180 度。 最大正值 (0x1_FFFF) 给出 180 度的相移。 最大负值 (0x2_0000) 给出 -180 度的相移。 如下表所示。

NCO Phase nco_phase
-1800 0x2_0000
-900 0x3_0000
00 0x0_0000
900 0x0_FFFF
1800 0x1_FFFF

nco_update_en 信号用于确定在更新事件中修改了哪些频率和相位字。 nco_update_en 向量中的位设置为高以修改频率和相位编号的以下位。

  • Bit 5: Reset the phase offset to 0
  • Bit 4: nco_phase[17:16]
  • Bit 3: nco_phase[15:0]
  • Bit 2: nco_freq[47:32]
  • Bit 1: nco_freq[31:16]
  • Bit 0: nco_freq[15:0]

例如,如果只有 nco_update_en 的位 2:0 设置为高,则只有频率值在更新事件上发生变化。

单转换器模式

当不支持多块同步 (MTS) 时,所有转换器都是独立的。 为每个转换器实例化一个 NCO 更新状态机。 在执行 NCO 更新之前,必须将事件源设置为 Tile。更新 NCO 设置的过程如下所示。

  1. 首先在实时 NCO 信号接口端口上设置所需的频率、相位和相位复位值。
  2. 设置更新使能端口以指示要更新哪些转换器寄存器值。需要更新的值越多,T1(将 NCO 值写入转换器寄存器的时间)就会增加。 在 RF-DAC 和 Quad RF-ADC 情况下,写入一个寄存器通常需要 29 个 s_axi_aclk 周期。 每增加一次寄存器写入,T1 就会增加三个 s_axi_aclk 周期。在 Dual RF-ADC 情况下,写入一个寄存器通常需要 45 个 s_axi_aclk 周期。 每个额外的寄存器写入都会将 T1 增加六个 s_axi_aclk 周期。
  3. 然后向更新请求端口发送一个脉冲。 如果 IP 状态机已完成启动过程,则开始访问所请求的 NCO 寄存器。
  4. 忙信号保持高电平,直到 NCO 更新过程完成。 频率、相位和相位复位值应保持到忙碌信号被取消断言为止。

多片模式

选择多块同步时,SYSREF 用于更新 NCO 设置。 这确保了混频器更新在所有转换器之间同步。 在进行 NCO 更新之前,必须将事件源设置为 SYSREF。

因为 SYSREF 用于触发 NCO 更新,所以应该对其进行门控以确保在更新过程中边缘不会到达。 如果 SYSREF 在外部进行门控,则 IP 内核的工作方式与单转换器情况相同。 在第 3 代器件中,您可以通过置位 dac{x}_sysref_gate 实时输入来选择在 IP 内部对 SYSREF 进行门控。 在这种情况下,IP 内核也以与单转换器情况相同的方式工作。 SYSREF 应在 NCO 更新过程开始之前关闭,并在 IP 解除忙信号时重新启用。

如果上述两种 SYSREF 门控方法均未实现,则 IP 内核可以通过写入 RF-DAC tile 0 中的寄存器来内部门控 SYSREF 信号。在这种情况下,更新 NCO 设置的过程如下所示。

  • 首先,在需要更新的所有NCO 通道的实时NCO 信号接口端口上设置所需的NCO 频率、相位和相位复位值。 同时更新使能端口 (dac0_update_en, dac{x} _ update_en) 应设置为指示要更新哪些寄存器值。
  • 将 dac0_sysref_int_gating 驱动为高电平以向 IP 指示它应该在内部选通 SYSREF。
  • 要启动 NCO 更新,请向 dac0_nco_update_req 端口发送一个脉冲。
  • 当 IP 接收到更新请求时,它首先等待启动状态机完成,然后执行寄存器写入,以在 RFDAC tile 0 中选通 SYSREF。完成后,它驱动 dac0_nco_update_busy 输出的位 1 高的。
  • 然后,您可以为多块同步组 (dac{x}_update_req) 中的其他转换器断言更新请求输入,以通过实时 NCO 信号接口请求它们的 NCO 更新。
  • 当多块同步组中转换器的所有更新繁忙输出均为低时,除dac0_nco_update_busy[1] 外,NCO 寄存器写入已完成。 繁忙的输出可以彼此异步取消断言。
  • 然后您应该向 dac0_sysref_int_reenable 端口发送一个脉冲,以指示可以重新启动 SYSREF。 当 dac0_nco_update_busy[1] 变为低电平时,该过程完成。

在访问请求的 NCO 寄存器之前,更新过程一直等到 IP 状态机完成启动过程。

需要更新的值越多,将 NCO 值写入寄存器的时间就越长。 这在上图中将 RF-DAC tile 0 显示为 T1。 在 RF-DAC 和 Quad RF-ADC 情况下,写入一个寄存器通常需要 29 个 s_axi_aclk 周期。 每增加一次寄存器写入,T1 就会增加三个 s_axi_aclk 周期。 在 Dual RF-ADC 情况下,写入一个寄存器通常需要 45 个 s_axi_aclk 周期。 每个额外的寄存器写入都会将 T1 增加 6 个 s_axi_aclk 周期。

在上图中,T2 表示从初始寄存器更新开始到该过程完成所用的时间。 该时间取决于 SYSREF 频率、要更新的寄存器值的数量以及 tile 同步组中的转换器数量。

reference

  1. PG269

RFSoC应用笔记 - RF数据转换器 -14- RFSoC自动增益控制与NCO跳频功能相关推荐

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

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

  2. RFSoC应用笔记 - RF数据转换器 -01- 概述和IP接口介绍

    写在前面 本文对射频数据转换器(RFSoC RF Data Converter )进行了简要描述说明,参考了xilinx的PG269的手册第一二三章,用于快速了解RFSoC射频数据转换器的相关特性,接 ...

  3. RFSoC应用笔记 - RF数据转换器 -07- RFSoC关键配置之RF-DAC内部解析(一)

    前言 RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义.本文参考官方手册,主要对RF-DAC 模拟输出进行介绍. 文章目录 前言 ...

  4. RFSoC应用笔记 - RF数据转换器 -10- RFSoC关键配置之其他功能(一)

    前言 RFSoC中最重要的部分是射频直采ADC和DAC的配置,除了前文介绍的DAC和ADC的基本功能以外,还有其他的相关功能和配置,可以用于配置射频数据转换器,本文参考官方手册,主要对正交调制器校正. ...

  5. RFSoC应用笔记 - RF数据转换器 -22- API使用指南之配置DAC相关工作状态和中断相关函数使用

    前言 本文完结后,关于RFSoC的配置的API函数部分就全部介绍完毕,后续有空将更新介绍简单的射频收发回环示例工程,不定时更新,敬请期待. 配置DAC相关工作状态 XRFdc_SetInterpola ...

  6. RFSoC应用笔记 - RF数据转换器 -02- IP配置指南

    写在前面 承接前文,本文是射频数据转换器IP使用介绍的第二篇,参考PG269的第五章,完成对射频数据转换器(RF Data Converter)IP配置界面的相关参数进行详细的说明,以便于后续开发设计 ...

  7. RFSoC应用笔记 - RF数据转换器 -09- RFSoC关键配置之RF-DAC内部解析(三)

    前言 RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义.本文参考官方手册,主要对高采样率模式.多频带操作以及IP的数据接口进行介 ...

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

    前言 RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义.本文参考官方手册,主要对RFSoC ADC的校准机制进行介绍. 文章目录 ...

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

    前言 RFSoC中最重要的部分是射频直采ADC和DAC的配置,因此了解内部相关原理结构可以帮助我们更好理解相关功能配置参数含义.本文参考官方手册,主要对RFSoC ADC的可编程逻辑数据接口.多频带操 ...

最新文章

  1. 一次失败的机巡平台对接经历分享
  2. ISLR_ANOVA
  3. python中文读音ndarray-numpy中的ndarray方法和属性详解
  4. 全面掌握ISO8583报文协议
  5. 在Asp.net页面中实现数据饼图
  6. Linux基础(day59)
  7. 10丨 Redis主从同步与故障切换,有哪些坑
  8. CentOS用户和用户组的操作
  9. openwrt添加模块时编译报No rule to make target `install'
  10. Git命令:git常用命令
  11. 【Cocos2d入门教程五】Cocos2d-x动作篇
  12. java实现web ssh客户端
  13. 在DialogFragment的onStop(完全不可见)时调用dismiss退出界面报错解决办法
  14. “龙书”作者Jeffery Ullman:相信你自己,自由地思考
  15. python-spider个人笔记
  16. 协议大全 http协议 http://www.chinaitpower.com/Net/xieyi/HTTP/index.html
  17. 论文《Contrastive Learning for Sequential Recommendation》
  18. KrbException: Clock skew too great (37) - PREAUTH_FAILED问题解决与服务器时钟同步
  19. 苹果cms免费自适应模板下载
  20. 递归算法与非递归算法的转化

热门文章

  1. python集合中可以包含相同的元素_Python 集合可以包含相同的元素
  2. 自定义Dialog设置大小
  3. 使用Tushare任取场内或者场外基金历史超过2年的200个公募基金,取得过去两年的基金净值序列,通过计算夏普比率(可任意设定无风险利率),来找到19年表现最好的50个基金。
  4. 百度Apollo星火自动驾驶—慢速车绕行
  5. 聚类算法实践(一)——层次聚类、K-means聚类
  6. CSG:清华大学提出通过分化类特定卷积核来训练可解释的卷积网络 | ECCV 2020 Oral
  7. php网站 qq登陆,PHP QQ一键登入网站实现过程
  8. Golang-go mod download 出现 dial tcp 34.64.4.17:443: i/o timeout
  9. 华为:配置交换机console口验证
  10. 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发