本文介绍adrv9002的数字预失真(dpd)功能。使用的一些调试技术也可以应用于一般dpd系统。首先,概述了有关dpd的背景信息以及用户在试验其系统时可能遇到的一些典型问题。最后,它描述了可以在dpd软件工具的帮助下应用于dpd算法以分析性能的调整策略。
介绍
数字预失真(通常称为dpd)是一种广泛用于无线通信系统的算法。dpd的目的是抑制通过射频功率放大器(pa)的宽带信号的频谱再生,1从而提高pa的整体效率。通常,pa在处理高功率输入信号时具有非线性效应和低效率。非线性效应和光谱干扰是由光谱向相邻波段的再生引起的。图1显示了在adrv9002平台上使用tetra1标准进行dpd校正前后的频谱再生。
图1.使用adrv9002的tetra1 dpd。
adrv9002提供内部可编程和功率优化的dpd算法,可定制该算法以校正pa的非线性效应,从而提高整体相邻通道功率比(acpr)。尽管dpd为通信系统带来了预期的好处,但对于没有经验的人来说,开始使用dpd通常非常困难,更不用说正确设置它了。这主要是由于许多因素可能导致错误,从而导致dpd性能不佳。即使在正确设置硬件之后,确定正确的参数以微调dpd并获得最佳解决方案可能仍然具有挑战性。本文旨在帮助在adrv9002中使用dpd选项的工程师。我们还包括用户经常遇到的一些典型问题,并提供了一些使用可用参数微调dpd模型的一般策略,以获得最佳的dpd性能。该设备还包括一个matlab工具,可帮助用户分析dpd。这应该有助于消除许多常见错误,并提供有关内部dpd操作的一些见解。本文将帮助用户开始使用dpd,并提供有关理论概念和解决实际问题的有用信息。®
启用dpd选项时,adrv9002提供高达20 mhz的信号带宽。这是由于接收带宽被限制在100 mhz。 通常,dpd将以5×发射器带宽的接收带宽工作,以便可以看到并校正第三和第五互调信号。adrv9002支持的最高pa峰值功率信号约为1 db(通常称为p1db)压缩区域。此指标指示 pa 压缩的严重性。如果pa被压缩到p1db点以上,则不能保证dpd正常工作。但是,这不是一个严格的要求;正如我们在很多情况下看到的那样,dpd在p1db点上工作,并且仍然提供非常好的acpr。但是,这将是一个逐案调查。通常,如果压缩太严重,dpd可能会遇到不稳定和崩溃问题。我们将在后面的章节中详细讨论压缩区域,包括如何使用 matlab 工具观察当前的 pa 压缩状态。
有关dpd的更多详细信息,请参见ug-1828的“数字预失真”一章。
建筑
执行dpd功能有两种基本方法。第一种称为间接dpd,在pa之前和之后捕获信号。这与直接dpd方法不同,在dpd模块之前和pa之后获取信号。每种方法的优缺点超出了本文的范围。间接dpd查看pa之前和之后的信号以了解其非线性行为,并在dpd模块上执行相反的操作。直接dpd查看dpd之前和pa之后的信号,并通过在dpd模块上应用预失真来消除两者之间的误差。用户应该知道adrv9002使用间接方法以及与之相关的影响。同样重要的是要知道何时使用 matlab 工具,捕获数据也指间接方法。
图2显示了adrv9002的高级dpd工作框图。输入信号u(n)进入dpd模块。dpd将预失真信号并生成x(n)。这里我们称之为传输捕获,尽管它实际上是传输信号的预失真版本。然后信号通过pa变成y(n),最终被发送到空气中。我们称y(n)为接收捕获,尽管它实际上是pa之后的发射信号。然后y(n)反馈到接收器端口,用作观察接收器。本质上,dpd 引擎将捕获 x(n) 和 y(n),然后生成系数,这些系数将应用于 dpd 的下一次迭代。
图2.间接dpd的高级框图。
操作模式
adrv9002支持dpd上的tdd和fdd操作。在tdd模式下,每个传输帧的dpd都会更新。这意味着接收器将在发射帧期间充当观察路径。在fdd中,由于发射器和接收器同时运行,因此需要一个专用的接收器通道。adrv9002具有2t2r,可在2t2r/1t1r tdd和1t1r fdd模式下支持dpd。
dpd 型号
结构
以下等式显示了在发射路径中实现的dpd模型。
哪里:
u(n) 是 dpd 的输入信号 x(n) 是 dpd
的输出信号 t 是 dpd
型号
的总抽头次数ψt是实现 tap t
l 的查找表 (lut) 的多项式函数t是幅度延迟
kt数据延迟
是否为t,lt,i是 dpd 引擎
b 计算的系数t,lt,i是启用或禁用项
的开关 i 是多项式项的索引和幂
用户可以为每个抽头配置多项式项的数量。adrv9002提供三个存储器项抽头和一个交叉项抽头,每个抽头的阶数为0至7。
型号选择
用户可以选择adrv9002提供的默认型号选项(如图3所示),该选项适用于大多数常见情况。或者,用户可以通过启用和禁用术语来选择自己的模型。前三次点击(0 到 2)表示内存术语,其中点击 1 是中心点击。点击 3 是交叉项点击。
图3.dpd 模型多项式项。
注意 点击 3(或交叉项点击)不应启用零阶项,以区别于内存项点击。
lut 大小:用户可以设置 lut 大小。adrv9002提供256和512两种选择。使用512尺寸,用户将具有更好的量化噪声水平,从而获得更好的acpr,因为较大的尺寸通常会提供更好的信号分辨率。对于窄带应用,我们建议使用 512 作为默认选项。256可用于宽带,因为噪声水平不那么严格,并且可以提高计算和功率。
预 lut 缩放:用户可以设置预 lut 缩放器以缩放输入数据,以更好地适应压缩扩展器。压缩扩展器从发射器获取信号并将其压缩以适合 8 位 lut 地址。根据输入信号电平,用户可以调整此值以优化lut利用率。可以在范围 (0, 4) 中设置这些值,步长为 0.25。本文最后一节详细介绍了压缩膨胀机。
配置
图4.启用 dpd 的基本配置。
要执行dpd,用户必须在pa上启用外部环回路径,然后设置反馈功率以确保它不会超出范围。请注意,这是峰值功率,而不是平均功率。功率太强或太弱都会影响dpd性能。用户还需要设置外部路径延迟,可以使用external_delay_measurement.py获得。此脚本可在 ironpython 文件夹下的 adrv9002 评估软件安装路径中找到。
请注意,只需为高采样速率配置文件(例如lte 10 mhz)设置外部延迟。对于低采样率配置文件(tetra1 25 khz),用户可以将其设置为0。在本文的后面,我们将使用软件工具来观察捕获数据,以查看外部延迟效果。
其他设置
图5.dpd 上的其他配置。
用户可以配置样本数。默认情况下,用户可以设置 4096 个样本。建议使用默认值。在大多数情况下,默认的 4096 样本将为 dpd 提供最佳解决方案。
附加功率刻度是一个更高级的参数。在大多数情况下,建议对adrv9002使用默认值4。此参数与内部相关矩阵有关。根据我们的实验,默认值为我们测试的现有波形和pa提供了最佳性能。在极少数情况下,输入信号幅度极小或极大,用户可以尝试将此值调整为越来越小的值,以便相关矩阵保持适当的条件数,从而获得更稳定的解。
rx/tx 归一化:用户应将接收器/发射器归一化设置为数据线性的区域。在图6中,线性区域以红色显示。在这个区域中,数据的功率尚未达到压缩区域,并且足够高以进行增益计算。选择区域后,dpd可以估计发射器和接收器的增益,并继续对算法进行进一步处理。在大多数情况下,–25 dbfs 至 –15 dbfs 应适用于大多数标准 pa。但是,用户仍应注意,因为特殊的pa可能具有非常不同的am/am曲线形状,在这种情况下,需要进行适当的修改。本文后面的部分将对此进行更详细的描述。
图6.典型的 am/am 曲线。线性区域为红色。
设置
硬件设置
典型设置如图7所示。在信号进入pa之前需要一个低通滤波器,以防止lo信号谐波。在某些情况下,当内部lo相位噪声性能不能满足应用要求时,可能需要外部lo。在这种情况下,外部lo源需要与dev_clk同步。窄带dpd通常需要这样做,因为窄带dpd对近带噪声要求更为严格。通常建议在pa之前有一个可变衰减器,以防止对pa的潜在损坏。反馈信号应具有适当的衰减,以设置峰值功率,如上一节所述。
图7.典型的dpd硬件框图。
软件设置
铁蟒蛇
下载 ironpython 库,以便在 gui 上执行 ironpython 代码。
在这里,用户可以在gui的ironpython窗口中运行dpd_capture.py,如图8所示,与matlab工具一起提供,以获取发射器和接收器的捕获数据。dpd采样率也包含在捕获文件中。
图8.ironpython gui 窗口。
请注意,此脚本应在启动或校准状态下运行。
matlab 工具
matlab 工具分析从dpd_capture.py捕获的数据。该工具将有助于检查信号完整性、信号对齐、pa压缩电平,最后是dpd的微调。
matlab 工具需要 matlab 运行时。首次安装需要一些时间才能下载。安装后,用户可以加载 ironpython 脚本捕获的数据,然后观察绘图,如图 9 所示。
图9.matlab dpd 分析仪。
用户还可以设置数据规范化的高/低阈值,并点击重新加载以查看更改。
首先,我们在时域中绘制了归一化的发射器和接收器数据。用户可以放大以观察发射器和接收器的对齐状态。我们只显示数据的真实部分,但用户也可以轻松绘制虚部。通常,实部和虚部都应该对齐或不对齐。
然后我们有发射器和接收器光谱——蓝色是发射器,红色是接收器。请注意,这是间接dpd,发送器数据将是预失真的数据,而不是ssi端口上的发送器数据路径。
接下来,我们有两条am/am曲线,分别是线性和db刻度。这些是有关dpd性能和pa压缩状态的重要指标。
还提供了am/pm曲线和接收器/发射器相位差。
此外,我们还有高阈值和低阈值。这些数字应与adrv9002 tes评估软件中设置的数字相匹配。
请注意,由于我们提供了用于捕获数据的 api,因此用户可以根据需要开发自己的绘图和分析模型。该工具提供了一些用于分析 dpd 的常见检查。这些 api 是:
adi_adrv9002_dpd_capturedata_read,这是读取dpd捕获的数据,必须在校准或启动状态下运行。
adi_adrv9002_dpdcfg_t → dpdsamplingrate_hz,这是dpd采样率,只读参数。
典型问题
dpd可能受到许多不同的因素的影响。因此,值得确保用户考虑和检查列出的所有潜在问题。在考虑所有问题之前,用户应确保硬件连接正确。
传输数据过载
图10显示了adrv9002实现dpd的高级框图。来自接口的发送器数据可能会使dac过载。如果dac过载,发射器的rf信号甚至在pa介入之前就会失真。因此,确保发送器数据不会使dac过载至关重要。
图 10.dpd的高级硬件框图。
要查看发射器dac是否过载,用户只需从gui观察即可。图11显示了tetra1 25 khz波形。峰值距离数字满量程还很远。对于adrv9002,建议与满量程至少保持几db,以避免dac的潜在过载。很难量化用户应该退让多少,这是因为dpd将尝试执行预失真,而预失真信号将被“峰值扩展”,因此可能会使dac过载。这取决于dpd对特定pa的反应——通常,pa压缩得越多,峰值扩展所需的空间就越大。
图 11.时域中 tetra1 标准波形的一部分。
接收器数据过载
另一个常见错误是接收器数据使反馈adc过载。这是由于没有足够的衰减返回到接收器端口造成的。正如您可以从调试工具中观察到的那样,效果是接收器数据被削波,因此发射器和接收器无法有效对齐,导致dpd出现计算错误。dpd通常表现得非常差,导致整个频谱上的噪声增加。
接收器数据过载
与接收器过载相比,这个问题经常被忽视。这是由于未正确设置反馈衰减引起的。用户可能会对反馈路径施加过多的衰减,从而使接收器数据太小。默认情况下,建议adrv9002使用–18 dbm峰值,因为它会将模拟到数字的数据带到dpd的已知功率电平。但是,用户可以调整此数字以满足他们的需求。用户应该知道,dpd反馈接收器使用的衰减器与常规接收器不同,而且它的步长要大得多。衰减水平由用户设置的峰值功率电平调整。–23 dbm 是最低功率电平(衰减为 0)— 超出此值,用户将遇到低功率电平,这将影响 dpd 性能。根据经验,用户应确保始终正确测量和设置反馈功率。通常,用户倾向于尝试不同的功率级别,而忘记正确设置反馈功率,从而导致此问题。
图 12.接收器数据过载。
图 13.未对齐的 dpd 捕获。
tdd 与 fdd
tdd 模式下的 dpd 必须在自动状态机中运行。使用tes进行评估时,在手动tdd模式下,用户仍然可以启用dpd,但性能会很差。这是因为dpd只能基于帧运行。在手动tdd模式下,帧的长度将由发送/接收使能信号切换决定。换句话说,每个播放和停止都是一个帧。然而,在人类切换所需的时间内,pa已经在温度方面转向了不同的状态。因此,如果不使用自动tdd模式,就不可能保持dpd状态,在该模式下,可以频繁切换使能信号。但是,在fdd模式下,dpd应正常工作。
例如,用户可能想要使用tetra1,它遵循类似tdd的帧方案(实际上是tdm-fdd)。因此,不需要直接选择tdd模式并手动检查dpd,并且dpd往往性能不佳。相反,用户可以使用“自定义fdd”配置文件并选择与tetra1相同的采样率和带宽,或者用户可以设置tetra1 tdd帧定时并使用自动tdd模式。这两种方法都可以提供比手动tdd更好的性能。
发射器/接收器未对齐
adrv9002将尝试对发射器和接收器数据进行时间对齐。当用户捕获数据时,它们应对齐。延迟测量在初始校准时间内完成。但是,对于高采样率曲线,需要单独进行更精确的子样品对准。
图 14.放大lte10的真实发射器和接收器数据(未对齐)。
dpd是一种自适应算法,需要取两个实体(即发射器和接收器)的误差。在考虑发射器和接收器的误差之前,需要正确对齐两个信号,尤其是在使用高采样速率配置文件(例如lte10)的情况下。对齐至关重要,因为样品之间的间隔很小。因此,用户需要运行脚本external_delay_measurement.py以提取外部路径延迟。此数字可以在“板配置”→“路径延迟”下输入。
图 15.ironpython 外部延迟测量。
发射器和接收器数据未对齐的影响是,用户将观察到噪声更大的am/am曲线。
设置路径延迟数后,我们可以观察到 am/am 和 am/pm 曲线更干净、噪音更小。相位差也小得多。
图 16.对齐的 dpd 捕获。
图 17.lte10的放大发射器和接收器实部数据(对齐)。
pa 过载
每个 pa 在可以处理多少压缩方面都有自己的规格。虽然p-1db数据通常在数据手册中给出,但实际上仍然建议对dpd进行精确测量,以确保压缩点在p-1db。dpd软件使用户能够根据捕获的数据查看am/am曲线,以观察压缩点与p-1db相比有多接近。
图 18.pa 过载数据。
但是,如果信号超过p-1db,则可能导致dpd不稳定甚至中断,使频谱跳到非常高的水平并且永远不会下降。在图19中,压缩远远超出了峰值上的1 db区域,曲线的形状也开始变得平坦。这表明pa被过驱动,为了增加输出上的功率,输入将被推得更多以支持输出功率水平。此时,如果用户决定继续增加输入功率,dpd性能将下降。
图 19.以 db 为单位的 am/am 曲线(放大)。
一般策略模型选取和调整
间接dpd的想法是在pa之前和之后捕获数据,而dpd引擎将尝试模仿pa的相反效果。lut用于使用系数应用此效果,并且该模型是基于多项式的。这意味着dpd更像是一个曲线拟合问题,用户将尝试使用这些术语来“曲线拟合”非线性效应。不同之处在于曲线拟合问题拟合单个曲线,而dpd还必须考虑记忆效应。adrv9002具有三个存储器抽头和一个交叉抽头,用于对dpd lut进行建模。
图20显示了adrv9002提供的三个存储器抽头和一个交叉抽头。一般策略类似于曲线拟合问题。用户可以从一些基线开始,然后添加和删除术语。通常,必须存在中心抽头(抽头 1)。用户可以逐个添加和删除术语,以测试dpd的效果。然后用户可以再添加两个记忆点击(点击 0 和 2)以添加记忆效果校正的效果。请注意,由于adrv9002有两个侧抽头,因此这些抽头应相同,即对称。添加和删除术语也应通过逐个方法完成。最后,用户可以尝试跨项。交叉项从数学角度完成了曲线拟合问题,从而提供了更好的dpd性能。
图 20.记忆项和交叉项映射。
图 21.模型项设置无效。
请注意,用户不应跳过术语,将其留空,因为这会导致 dpd 出现不希望的行为。另请注意,用户不应在交叉项抽头上设置第 0 项,因为从数学角度来看,这也是无效的。
高级调优
压缩膨胀机和预lut定标器
在上一节中,我们提到了压缩扩展机。当第一次阅读用户指南时,这个概念可能会对它的含义或选择什么(256或512)造成一些混淆。压缩扩展器的目的是压缩输入数据并将其放入lut。
压缩扩展器的一般形状是平方根,您可以在其中输入 i/q 数据。在将它们放入lut之前,将使用方程√(i(n)2+q(n)2)从前面的方程中获取信号幅度。但是,由于平方根在速度方面是一项昂贵的操作,并且我们还需要将它们映射到lut(8位或9位),因此压缩扩展器。图 22 是理想的平方根曲线。实际的实现不会在这里显示,但简而言之,它将是对平方根曲线的估计。
图 22.压缩扩展器 - 估计平方根的形状。
一旦我们了解了数据如何适应lut,我们就可以开始更智能地调整数据。adrv9002可以选择8位(256)或9位(512)作为lut大小。更大的 lut 意味着数据的地址位置加倍。这意味着更精细的数据分辨率,并且通常具有更好的量化噪声水平。对于窄带应用,由于噪声非常重要,我们建议始终使用512选项。对于宽带应用,由于噪声水平不是那么重要,因此可以使用任一选项。但是,如果使用 512 选项,则会消耗更多的功率,并且计算速度会变慢。
直方图和 cfr
我们简要介绍了dpd配置中的预缩放。此参数用于提升lut的输入数据。需要这种提升的原因是,在某些情况下,dpd没有正确利用数据。对于这样的pa压缩问题,真正被压缩并导致问题的是高振幅样本。因此,我们不能平等对待所有样本;相反,我们希望将注意力集中在高振幅样本上。
查看 tetra1 标准波形直方图(参见图 23 和图 24)。我们可以观察到,大多数值出现在中高振幅区域。原因是因为tetra1标准使用d-qpsk调制方案,结果是信号将具有恒定的包络。峰值功率与平均功率没有太大区别。
图 23.tetra1 星等的直方图。
图 24.tetra1 功率直方图。
这对于 dpd 是必需的。如前所述,dpd将捕获更多的高振幅样本,因此可以更好地表征pa的行为。
现在我们以类似的方式看待lte10标准。lte使用ofdm调制方案,该方案将成百上千个子载波组合在一起。在这里,我们再次获得了lte10的幅度和功率。我们可以很容易地观察到与tetra1相比的差异,即峰值与主要平均值相距甚远。
图 25.lte10 幅度的直方图,无 cfr。
在幂直方图中(见图26),如果我们放大远端,我们可以观察到仍然有非常高的峰值出现,但概率非常低。这对dpd来说是非常不希望的。原因有二。
图 26.lte 电源直方图,无 cfr。
首先,高峰值(高幅度信号)的低概率计数将使pa效率极低。例如,lte papr约为11 db。这是一个很大的区别。为了避免损坏pa,输入电平需要大幅回退。因此,pa没有利用其大部分增益能力来提高功率。
图 27.放大高振幅样本。
其次,高峰也浪费了lut的利用率。由于这些高峰值,lut将为其分配大量资源,并且只有一小部分lut分配给大多数数据。这会降低dpd性能。
波峰因数降低(cfr)是一种将信号峰值降低到更可接受的水平的技术。这通常用于 ofdm 类型的信号。adrv9002不包括片内cfr,因此该功能需要在外部实现。在adrv9002 tes评估软件中,我们还包含用于此目的的lte波形的cfr版本。cfr_sample_rate_15p36m_bw_10m.csv如图 28 所示。我们可以观察到,在高功率下,由于cfr,信号的峰值被限制在一定水平(末端倾斜)。这有效地将papr推高到约6.7 db,几乎是5 db的差异。cfr 的操作将“损害”数据,从某种意义上说,evm 会降级。然而,与整个波形相比,高电平幅度峰值的出现概率非常小,好处是巨大的。
图 28.直方图 lte10 幅度与 cfr。
图 29.直方图 lte10 电源与 cfr。
结论
dpd是一种复杂的算法,许多人觉得很难使用。设置硬件和软件以获得最佳结果需要大量的精力和谨慎。adrv9002提供片上集成dpd,可显著降低复杂性。adrv9002还附带dpd软件工具,可帮助用户分析dpd性能。
HUAWEIVRGlass堪称VR眼镜中真正的“眼镜”
PLC控制的变频恒压供水系统
EDA厂商芯愿景终止深交所主板IPO
夏普全方位布局8K生态解决方案,全链条成果初显
自动驾驶创新热潮下,窥探背后的关键技术
排除故障和微调数字预失真的完整指南
温湿度传感器DHT11驱动程序
华为全面下架腾讯游戏!
增效降本 助力海上平价时代乘风破浪
国内首款微电脑轮胎气压监测器上市
谷歌正在研发新型的智能音箱
开关稳压器的基础-降压型开关稳压器的工作原理
浅谈元宇宙的三大基础指标
什么是嵌入式开发?
有刷直流电机的转矩负载、转速、电机电流之间的关系
深圳先进院在快速化微液滴生成和高密度颗粒阵列研究方面取得进展
不同晶体管的优缺点
目前思必驰已经有明确的上市计划,首选国内资本市场
应用机器视觉系统进行导航机器人的设计
YCR单向可控硅系列