【AD9361 数字基带】多片基带内FPGA补偿 I/Q Rotation

news2024/9/19 18:21:01

I/Q 旋转 Rotation

在许多多通道射频系统中,如 AD-FMCOMMS5,甚至在 AD-FMCOMMS2、AD-FMCOMMS3 上,都需要测量或校正两个复数 (I/Q) RF 信号之间的相位差。

从纯粹的数学描述来看,单个正弦波没有相位,一个相位只能在两个不同的正弦波之间发展。增加复杂性的是,我们没有一个单一的真实信号(正弦波),我们有一个复信号(I + Qi) = cos(omega) + sin(omega){i} = e^{{i}{omega}}。将此信号旋转 180° 或 pi 弧度,变为 e^{{i}{pi}} + 1,这就是我们希望能够找到并最终纠正的结果。如果您不确定为什么数学会以这种方式工作,请查看此解释。

在上一节中,我们讨论了 I/Q 校正 - 相对于固定 I 的相移 Q,并使 I 和 Q 的幅度相等。在AD9361/AD9364中,这是在器件内部自动完成的,称为“正交校正”。

我们将检查的第一阶段是测量相位差。

确定相位差

在经典意义上 - 测量不同信号的相位同步,只有相位是重要的。对振幅没有限制。因此,耦合系统的相位同步被定义为它们相位之间关系的出现,而幅度可以保持不相关。下面的许多技术将测量相位/频率/幅度差异,而其他技术将仅测量相位。根据应用和信号的不同,不同的方案可能会提供更好的结果。

尽管 Simulink 可能有一个模块可以直接测量两个复杂输入信号之间的相位差,但大多数其他环境都没有,我们需要更好地理解如何做到这一点。

测量两个射频信号之间相位差的确切方法取决于信号和相关应用:

▲信号中是否存在噪声,噪声是否相关,或者两者中是否存在随机高斯噪声?
▲信号是什么样子的?它是一种宽带信号(如QPSK、QAM、LTE等),还是单音、恒频信号?信号的频率是否在变化(如啁啾声?
▲两个信号的幅度是否接近相同?还是它们非常不同?
▲应用程序是否需要整个帧/数据集的平均相位滞后,或者是否需要跟踪相位在一段时间内的变化情况?

====
■过零 - 虽然这可以单独使用 I/Q 来完成,但查看 2 个不同的 I 和 2 个不同的 Q 信号,然后对差值求平均值/合并,这需要大量的计算。如果信号之间存在少量的直流偏移或幅度差异,这也会出现问题。下面的其他选项没有这些相同的缺点。
■互相关 :这是在 iio 示波器应用程序中实现的,通过使用 David E. Narváez 关于他的论文项目的帖子和他的 Github 存储库中的代码。它衡量两个序列(在本例中为真实信号或复数信号)的相似性(相位和幅度),作为一个序列相对于另一个序列的滞后函数。这样做的缺点是,它的准确性是基于相对于被分析信号的采样时间。在这种情况下,将同时查看振幅和相位/频率。

■单点分析:这使用上图,并查看 2 点之间的相位。由于我们对时间点并不真正感兴趣(因为这不是复杂调制的工作原理),因此这并不适用,也未实现。以下方法处理具有多个捕获样本的事物,并被使用,但主要基于此(公元前 3 世纪亚历山大的欧几里得制定的余弦定律)。唯一的问题是,余弦定律总是提供内角或钝角,而不是反射角,这可能是我们感兴趣的那个。
在这里插入图片描述
■内积 - 虽然这更适合纯正弦波,但它可以用于任意信号,但你得到的是两个向量(包括所有噪声)之间的角度,与振幅无关。这使用上述单点分析,并在整个采样数据中使用它。

在这里插入图片描述
在这里插入图片描述

其中 overline{y[n]}
表示复共轭。

■ 频域:这适用于由恒定频率主导的信号。在这里,您可以将信号转换为频域(使用 fftw)。然后,你会找到与你关心的频率相对应的箱,并得到两个信号之间的角度。例如,如果我们知道第 18 个 bin 是感兴趣的频率,那么它就是:theta_difference = theta_1 - theta_2 = atan(fft_1[18]) - atan(fft_2[18])
。您可以使用余弦定律在向量方法中将其重写为(使用点积,因此使用复数共轭的乘法):

在这里插入图片描述
当您想使用 atan 与 acos 时,取决于 – 如果角度接近 90º,请使用 acos(90º 的棕褐色为 ∞)。缺点是 cos/acos 确实具有对称性 - 无法分辨 45º 和 -45º,或 90º 和 -90º 之间的区别,因此可能需要对实数/虚数符号进行一些额外的测试。如果角度更接近 0º,则使用 atan(atan 在 0º 处的分辨率高于 acos,因此它将提供更准确的数字)。还必须注意确保我们在必要时测量反射角。这都是在 iio 示波器应用程序中实现的,只需为频率法选择 2 个复数输入,不同 bin(标记)的相位差就会显示出来。

■ 希尔伯特变换。这是可以做到的,但我还没有做到

大小 Magnitude

了解我们试图解决什么样的问题 – 理解相位角和时间滞后/超前之间的关系是件好事。

psi{°} = 360{°} * 欧米茄 * {Delta}t 或 {Delta}t = {psi{°}} / {360{°} * 欧米茄}
在这里插入图片描述

因此,对于 1MHz 基带正弦波,即偏离 0.5°,即
在这里插入图片描述

{Delta}t = {0.5{°}} / {360{°} ~ * ~ 1 * 10^6Hz} = 1.389 * 10^{-9} 秒 = 1.389ns。像所有电磁波一样,无线电波以光速(0.299792458米/纳秒)传播。在本例中,0.5°,意味着我们可能偏离任何相对距离测量值41.64厘米(如果这是您正在做的)。

这就是为什么我们需要确保我们不考虑基带的原因。

对于我们调制到2.4GHz(2.401MHz波)的1MHz基带正弦波,它是
在这里插入图片描述

{Delta}t = {0.5{°}} / {360{°} ~ * ~ 2.401 * 10^9Hz} = 5.784626775880420195288999953723 * 10^{-13} 秒 = 0.5784ps。这变成了 ~0.173 毫米的相对距离测量值。

毋庸置疑 - 我们希望尽可能精确,并确保我们引用的是空气/射频接口,而不是基带信号。

旋转 I/Q Rotating

当单个连续波 (CW) 射频音调与基带混合时,它会产生两个信号(同相和正交),它们应该以相同的幅度彼此正交。在不失去通用性的情况下,我们对幅度和相位进行归一化,然后这两个信号可以表示为:
在这里插入图片描述

如上所述,我们希望围绕同一点旋转这些信号,这与提供恒定相移相同。

在这里插入图片描述
其中 Omega 是音调的基带频率,psi 是所需的相移,这将导致围绕原点的固定旋转(在星座图中,或 I 与 Q 图)。

我们可以使用三角和/差恒等式将其重写为:

在这里插入图片描述
并替换我们原始的未校正值,(并交换 Q 素数的顺序,这样我们就可以更容易地看到矩阵…
在这里插入图片描述
将其转换为 2 x 4 矩阵乘法非常容易。

在这里插入图片描述
虽然系数与调整 Q 相对于 I 有很大不同,但可以使用相同的硬件(2 x 2 乘法器)。

这很好,但是由于我们正在处理FPGA内部的定点数学运算,因此我们需要小心溢出。如果我们确定要旋转某物,Ψ 为 45°(或 pi/4 弧度),因为 cos(pi/4) = sin(pi/4) = 1/sqrt{2},

在这里插入图片描述
如果您只是在研究连续音调,那就没问题了。但是,由于简单的CW音调并不能真正代表像QPSK这样的复杂(I/Q)无线电信号,因此对于AD9361,I/Q可能接近分辨率的最大值,即12位或1.11位(1个符号位,11个幅度位)。例如:如果 I 和 Q 都位于 +1638(约为满量程的 80%),则校正后的 I’ 和 Q’ 的结果为 I’ = 0 和 Q’ = 2317。Q’ 将溢出 1.11 位表示。

有两种解决方案:

⚪ 使数据路径更宽(这是ADI设计中所做的,我们允许16位结果)。这会产生改变设备规模的副作用。结果不再只是 12 位,而是可能高出半个位。(如上所述,我们可以将比例尺改变 sqrt{2} 或 1.41 的因子,这可能会增加近 1/2 的量级)。
⚪ 按比例缩小。虽然减小振幅(这可能会抛弃现有的分辨率)始终是一个问题,但这确实有一个好处,即不会改变 ±1 的刻度(无论旋转如何,满量程始终相同)。

要缩放,只需除以收益,在这里插入图片描述.取绝对值很重要,以确保 sin(psi) + cos(psi)
(否则会在 +135 度(+3/4π 弧度)或 +315 (-45) 度(-π/4 弧度)时发生)。这意味着:
在这里插入图片描述
这使得矩阵:

在这里插入图片描述

以上可以直接使用,具体取决于您的数学库可用的函数类型(sin、cos、tan)以及您允许的旋转量(以上适用于 ±180 度)。您可以根据其他 trig 函数进行重写,但必须注意确保分母永远不会接近零。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NNG简介和使用总结

先认识下ZeroMQ 参考:ZeroMQ详解 - 南哥的天下 - 博客园 (cnblogs.com) ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。…

RK3568开发笔记-buildroot系统scp拷贝文件报错dbclient no such file or directory

目录 ​​​​​​​ 前言 一、问题分析 什么是 Dropbear Dropbear 的优点 二、解决办法 总结 前言 在使用RK3588开发板进行系统开发时,很多开发者会选择使用Buildroot来构建自己的定制化系统。在开发过程中,通常需要通过scp(Secure Copy Protocol)命令将文件从本地计…

IDEA工具设置默认使用maven的settings.xml文件

第一步:打开idea工具,选中 File ——> New Projects Setup ——> Settings for New Projects 第二步:先设置下自动构建项目这个选项 第三步:选中 Build Tools ——> Maven,让后就可以设置自己安转的maven和se…

xlsx表格-A列的值需要从C列中匹配到然后输出C列旁边D列的值,怎么写公式?

公式: IFERROR(VLOOKUP(A1, C:D, 2, FALSE), "") 解释: 在VLOOKUP函数中,2表示要返回的列的索引。具体来说,VLOOKUP函数的语法如下: VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])…

功能测试和性能测试区别简析,软件测试公司如何开展有效测试?

软件功能测试旨在验证软件是否按照需求和设计规范正常运行,软件性能测试则是用来评估软件在特定负载条件下的行为和响应时间,确保软件在高并发和高需求的环境中能够稳定运行。 虽然两者都属于软件测试的重要组成部分,但它们的目的和重点却有…

零基础5分钟上手谷歌云GCP - 服务器自动扩展

简介 欢迎来到小李哥谷歌云GCP云计算知识学习系列,适用于任何无云计算或者谷歌云技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。 我将每天介绍一个基于全球三大云计算平台(AWS, Azure, GC…

改编版猜数字小游戏,猜错了就黑屏(整蛊版本)

1. 前情提要 在前一篇博客中,我们了解到了如何获得随机数,并且通过运算可以规定所获得的这个随机数的范围在多少数值之间 那么接下来我们就需要去具体去实现猜数字游戏的各种布置 2. 布置主菜单 玩一个游戏,最开始的界面都会是一个主菜单…

iPhone13手机照片被误删,有什么方法可以恢复吗?

在日常使用手机时,我们可能因为误操作、手机崩溃、或者其他原因,导致iPhone13手机中的照片丢失。遇到这种情况,手机误删照片如何恢复?在本文中,我们将分享3个妙招,帮助您恢复iPhone13上误删的照片。 一、通…

2024年第二季度SSD出货量下滑18.4%,降至6750万部,但容量增长4.1%至90.6EB

2024年第二季度SSD Exabytes实现连续季度增长 仅企业级PCIe SSD有所增长:尽管所有其他类别均出现下滑,但企业级PCIe SSD的增长是由其所有终端市场需求增加所驱动的。总体SSD出货量:总体SSD出货量环比下降18.4%,降至6750万部&…

Leetcode JAVA刷刷站(76)最小覆盖子串

一、题目概述 二、思路方向 为了解决这个问题,我们可以使用滑动窗口的方法。滑动窗口是数组/字符串问题中常用的一个技巧,特别是用于寻找子数组或子字符串的问题。 这里的关键是,我们需要知道字符串t中每个字符的出现次数,并在遍…

【Python】函数高阶【上】

本篇文章将讲解函数高阶部分: (1)函数的嵌套 (2)闭包 (3)装饰器 1、函数的嵌套 Python是以函数为作用域,在作用域中定义的相关数据只能被当前作用域或子作用域使用。 &#xf…

(QT-UI)十四、在时间轴上绘制一段段时间片

本系列预计实现 ①刻度上方文字显示, ②时间轴拖动效果, ③时间轴刻度缩放, ④时间轴和其他控件联动显示, ⑤鼠标放置到时间轴,显示具体时间。 ⑥通过定时器,实时更新时间轴 ⑦时间轴上绘制时间片 完…

PostgreSQL11 | 事务处理与并发控制

PostgreSQL11 | 事务处理与并发控制 本文章代码已在pgsql11.22版本上运行且通过,展示页由pgAdmin8.4版本提供,本文章第一次采用md文档,效果比csdn官方富文本编辑器好用,以后的文章都将采用md文档 事务管理简介 事物是pgsql中的…

自己动手写CPU_step2_构建SOPC

ROM实现指令寄存器 上一篇中实现的五级流水线需要一个输入,这个输入是指令数据,而指令数据是通过取指阶段的PC控制的,PC会一直循环的取指令。 指令寄存器实现: //指令寄存器 module inst_rom(input clk,inp…

【C++ Primer Plus习题】2.1

问题: 解答: #include <iostream> using namespace std;int main() {cout << "在下国林!" << endl;cout << "家住天府之国!" << endl;return 0; }运行结果: 考查点: 预处理头文件命名空间main函数c的标准输出和换行字符…

机器学习/数据分析--通俗语言带你入门K-邻近算法(结合案例)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 机器学习是深度学习和数据分析的基础&#xff0c;接下来将更新常见的机器学习算法注意&#xff1a;在打数学建模比赛中&#xff0c;机器学习用的也很多&a…

初识Linux · yum和vim

目录 前言&#xff1a; 1 yum 1.1 yum是什么&#xff1f; 1.2 Centos的生态和yum的本地配置 1.3 yum的相关操作 2 vim 前言&#xff1a; 我们学习Linux的时候&#xff0c;是有编程语言的基础的&#xff0c;那么呢&#xff0c;我们学习Linux的时候最迫切的就是希望能打印…

Flat Ads:全球金融应用现状与发展趋势深度解析

随着全球数字化进程的加速,金融科技(FinTech)应用正逐渐成为现代生活不可或缺的一部分。从移动银行到数字支付,再到智能理财工具,金融应用正在重新定义传统金融服务的边界,并推动行业的深刻变革。 本篇文章 Flat Ads 将从全球视角出发,深入剖析当前金融应用市场的现状,探讨未来…

开关电源测试系统方案:系统结构功能、特点、测试项目

为了应对开关电源测试中的复杂挑战&#xff0c;我们推出了NSAT-8000系列开关电源ate测试系统&#xff0c;它以其全面的功能和灵活性&#xff0c;适应了电源产品测试场景&#xff0c;解决了测试难题。 开关电源测试系统 NSAT-8000系列之开关电源测试系统适用于AC/DC和DC/DC开关电…

苹果macbook电脑怎么玩《黑神话:悟空》游戏教程来了

火爆全网《黑神话&#xff1a;悟空》是一款基于中国神话故事《西游记》改编的动作角色扮演游戏&#xff0c;它在PC平台上的系统要求已经公布&#xff0c;但目前官方尚未发布Mac版本。不过&#xff0c;Mac用户可以通过使用系统兼容工具如CrossOver来尝试在Mac上运行这款游戏。Cr…