CORDIC算法笔记整理

CORDIC算法有两种模式,分别为旋转模式和向量模式。而在数字硬件实现混频处理时,CORDIC算法是比较好的方法,使用的是CORDIC的旋转模式,只需通过移位操作和加法就可以实现频谱搬移的乘法操作。

1 CORDIC算法理解

1.1 单次旋转 

 对于CORDIC算法的理解先从简单的开始——从一个角度\beta的(x1,y1)旋转\theta到角度\varphi的(x2,y2),如下图所示。

假设图中圆的半径为L,则有如下的关系:

cos\beta =\frac{x_{1}}{L}sin\beta =\frac{y_{1}}{L}

cos(\theta +\beta )=\frac{x_{2}}{L}=cos\theta cos\beta -sin\theta sin\beta

sin(\theta +\beta )=\frac{y_{2}}{L}=cos\theta cos+sin\theta sin\beta

因此可以得出如下关系式:

x_{2}=x_{1}cos\theta -y_{1}sin\theta

y_{2}=x_{1}sin\theta +y_{1}cos\theta

对上式提出cos\theta表示成如下:

X_{2}=x_{1} -y_{1}tan\theta=\frac{x_{2}}{cos\theta }

Y_{2}=x_{1}tan\theta +y_{1}=\frac{y_{2}}{cos\theta }

因此每次旋转一个角度\theta对应的x和y都会有个缩放因子cos\theta,旋转结束后需要将总的缩放系数还原。

1.2 多次旋转

上面将的是将一个角度进行单次旋转到另一个角度的表示,如果一个角度需要旋转多次逼近目标旋转角度,可以将单次旋转进行多次,用矩阵的方式来表示则更容易理解,矩阵形式如下图所示。

 以此类推,可以推出(x2,y2)到(x1,y1),(x1,y1)到(x0,y0)的旋转矩阵。

此时缩放系数也好理解,就是K=cosA_{0}cosA_{1}cosA_{2}.....cosA_{n-1}。只要n取得足够大,缩放系数K就无限接近1.647,因此1.647也被用作缩放系数常数。

从(x0,y0)到(x1,y1)旋转第一次的角度记为\theta _{0},从(x1,y1)到(x2,y2)旋转第一次的角度记为\theta _{1},……而我们旋转的角度为A=A_{0}+A_{1}+A_{2}+...+A_{n},因此只需要知道我们需要旋转的角度,就可以实现通过一系列小角度A_{n}的连续旋转来完成。如果规定每次旋转的角度为tanA_{n}=2^{-n},则有利于硬件实现,可以用查表的方式实现tanA_{n}的计算。

nA_{n}tan(A_{n})
0452^{-0}
126.552^{-1}
214.032^{-2}
n2^{-n}

 上图中的s_{n}2^{-n}=tanA_{n},由于A_{n}的角度范围为(-\frac{\pi}{2}, \frac{\pi}{2}),tanA_{n}取值存在负数,而正切表中存放的是正数2^{-n},故s_{n}为符号位,对应当前输入A_{n}位于(-\frac{\pi}{2}, 0)还是(0, \frac{\pi}{2}),大于0则符号位为正,小于0则符号位为负。

2 CORDIC在频谱搬移数字实现中的应用 

频谱搬移包括了上变频(DUC)和下变频(DDC),其实现的理论框图如下图所示。

他们可以通过NCO(数控振荡器)产生特定频率的载波信号实现频谱的搬移,也可以通过CORDIC算法实现频谱的搬移。前者需要用到乘法器和NCO模块,对于硬件资源很紧俏的情况,一般会选择CORDIC算法,因为它只需要通过加法器和移位器实现。

在DDC中输入信号表示为cos(w_{b}t+w_{c}t+\varphi )sin(w_{b}t+w_{c}t+\varphi ),其中w_{b}t=2\pi f_{b}tw_{c}t=2\pi f_{c}tf_{b}为信号频率,f_{c}为载波频率,\varphi为固定相位。DDC的目标是去掉载波,保留信号,即最终需要的是信号为cos(w_{b}t ),即需要将输入信号旋转的角度为\Theta =w_{c}t+\varphi,其中t=nT=n\frac{1}{f_{s}}=\frac{n}{f_{s}},T为采样周期,f_{s}为采样率。因此DDC输入信号可表示为cos(\frac{2nf_{b}\pi}{f_{s}}+\frac{2nf_{c}\pi}{f_{s}}+\varphi )sin(\frac{2nf_{b}\pi}{f_{s}}+\frac{2nf_{c}\pi}{f_{s}}+\varphi ),因此DDC每次输入以下信号的瞬时相位为\frac{2nf_{b}\pi}{f_{s}}+\frac{2nf_{c}\pi}{f_{s}}+\varphi,需要旋转的角度为\frac{2nf_{c}\pi}{f_{s}}+\varphi

换一种方式理解,由于数字系统的输入数据是连续不断的,每个输入数据为cos(\frac{2nf_{b}\pi}{f_{s}}+\frac{2nf_{c}\pi}{f_{s}}+\varphi ),也就是说每个输入数据需要去掉的相位为\frac{2nf_{c}\pi}{f_{s}}+\varphi,即只需要知道输入信号的初始相位\varphi和相位步进\frac{2f_{c}\pi}{f_{s}}以及输入的序号n,便可知道每个输入数据对应需要去掉的相位。

输入的数据都需要将\frac{2nf_{c}\pi}{f_{s}}+\varphi旋转到0,即每个输入数据都需要旋转多次将角度逼近0,旋转的次数越多越逼近0,次数越多逼近的角度越小,具体需要旋转的次数依据算法能接受的算法性能和精度来选取。

同样的在DUC中输入信号为cos(\frac{2nf_{b}\pi}{f_{s}})sin(\frac{2nf_{b}\pi}{f_{s}}),在DUC后需要输出的信号为cos(\frac{2nf_{b}\pi}{f_{s}}+\frac{2nf_{c}\pi}{f_{s}}+\varphi )sin(\frac{2nf_{b}\pi}{f_{s}}+\frac{2nf_{c}\pi}{f_{s}}+\varphi ),因此旋转的角度依然是\frac{2nf_{c}\pi}{f_{s}}+\varphi

需要注意的点是,在DDC中需要将\frac{2nf_{c}\pi}{f_{s}}+\varphi逐次旋转到0,在DUC中是需要将0旋转到\frac{2nf_{c}\pi}{f_{s}}+\varphi。即只要知道了载波频率和信号采样率,就可以通过cordic算法实现频谱的搬移。

需要注意的一点是:由于数字系统输入信号的初始相位不能准确的知道,所以设计时将初始相位最好设计成寄存器可配,方便后期调整。

3 参考资料

参考文献:

[1] 耿丹,CORDIC算法研究与实现,遥测遥控,2007.11, vol.28

[2] 杨林,OFDM系统NS-CFR技术研究与实现,2023.6

 

如有错误不对处,欢迎指出。

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

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

相关文章

SpringCloud学习记录|day1

学习材料 2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等) 学redis讲到微服务就停了,nginx也是。 所以嘛,我终于来到微服务了。 复习MyBatisP…

CMU 10423 Generative AI:lec14(Vision Language Model:CLIP、VQ-VAE)

文章目录 1 概述2 CLIP (Used in GPT-V)3 VQ-VAE (Used in Gemini)**VQ-VAE 详细笔记****VQ-VAE 的模块组成与数据流** **1. 输入数据****2. 编码器(Encoder)****2.1 编码器的作用****2.2 数据流与维度变化****2.3 编码器输出** **3. 量化器(…

IP 数据包分包组包

为什么要分包 由于数据链路层MTU的限制,对于较⼤的IP数据包要进⾏分包. 什么是MTU MTU相当于发快递时对包裹尺⼨的限制.这个限制是不同的数据链路对应的物理层,产⽣的限制. • 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补填 充…

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人: 王 峰 | 阿里云智能集团研究员、开源大数据平台负责人 李 钰|阿里云智能集团资深技术专家 范 振|阿里云智能集团高级技术专家 李劲松|阿里云…

MongoDB聚合操作及索引底层原理

目录 链接:https://note.youdao.com/ynoteshare/index.html?id=50fdb657a9b06950fa255a82555b44a6&type=note&_time=1727951783296 本节课的内容: 聚合操作: 聚合管道操作: ​编辑 $match 进行文档筛选 ​编辑 将筛选和投影结合使用: ​编辑 多条件匹配: …

【AI】AIOT简介

随着技术的快速发展,人工智能AI和物联网IoT已经成为当今最热门的技术领域。AIOT是人工智能和物联网的结合,使物联网设备更加智能化,能够进行自主决策和学习的技术。 通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端&#…

数据治理006-数据标准的管理

元数据的分类和标准有哪些? 一、元数据的分类 元数据可以根据其描述的对象和属性不同,被分为不同的类型。以下是几种常见的元数据分类方法: 基于数据的类型:根据数据的类型,元数据可以被分为结构化元数据、非结构化元…

SQL连接Python

对于运营部门的Yoyo来说,她想要知道夜曲优选的订单都来自哪些省份,每个省份的总订单数以及总订单金额分别是多少。 这时小鹿就会通过SQL对连接的数据库进行查询,再将结果传递给Python处理,并帮助Yoyo生成可视化图表。 我们先来快…

拆解维修飞科剃须刀

原因 用了好几年的剃须刀,经过一次更换电池。后来上面的盖帽松动,无法合盖,经过把弹片矫正后修复。最近一次”大力出奇迹“的操作直接断送了这个老伤员最后的可能性。最终只能花了将近十块大洋买了一套盖着和中间座。简单更换了一下。 记录…

目前最好用的爬虫软件是那个?

作为一名数据工程师,三天两头要采集数据,用过十几种爬虫软件,也用过Python爬虫库,还是建议新手使用现成的软件比较方便。 这里推荐3款不错的自动化爬虫工具,八爪鱼、亮数据、Web Scraper 1. 八爪鱼爬虫 八爪鱼爬虫是一…

Linux:深入理解冯诺依曼结构与操作系统

目录 1. 冯诺依曼体系结构 1.1 结构分析 1.2 存储结构分布图 2. 操作系统 2.1 概念 2.2 如何管理 2.3 什么是系统调用和库函数 1. 冯诺依曼体系结构 1.1 结构分析 不管是何种计算机,如个人笔记本电脑,服务器,都是遵循冯诺依曼结构。…

可视化图表与源代码显示配置项及页面的动态调整功能分析

可视化图表与源代码显示配置项及页面的动态调整功能分析 文章目录 可视化图表与源代码显示配置项及页面的动态调整功能分析1.分析图表源代码2.分析源代码显示功能**完整代码参考:** 3.分析源代码显示及动态调整**完整代码参考:** 4.分析代码编辑器及运行…

华为云LTS日志上报至观测云最佳实践

华为云LTS简介 华为云云日志服务(Log Tank Service,简称 LTS),用于收集来自主机和云服务的日志数据,通过海量日志数据的分析与处理,可以将云服务和应用程序的可用性和性能最大化,为您提供实时、…

基于SSM的爱心慈善公益网站的设计与实现

文未可获取一份本项目的java源码和数据库参考。 选题意义 随着经济的不断进步,发展各种进行公益事业的渠道不断的出现,作为一个礼仪之邦,中华民族一直秉承先人的团结与友善精神,对社会和他人给予帮助关怀。但中国的公益事业相对…

【AIGC】2022-CVPR-利用潜在扩散模型进行高分辨率图像合成

2022-CVPR-High-Resolution Image Synthesis with Latent Diffusion Models 利用潜在扩散模型进行高分辨率图像合成摘要1. 引言2. 相关工作3. 方法3.1. 感知图像压缩3.2. 潜在扩散模型3.3. 调节机制 4. 实验4.1. 关于感知压缩权衡4.2. 利用潜在扩散生成图像4.3. 条件潜在扩散4.…

防sql注入的网站登录系统设计与实现

课程名称 网络安全 大作业名称 防sql注入的网站登录系统设计与实现 姓名 学号 班级 大 作 业 要 求 结合mysql数据库设计一个web登录页面密码需密文存放(可以采用hash方式,建议用sha1或md5加盐)采用服务器端的验证码&#…

基于Hive和Hadoop的招聘分析系统

本项目是一个基于大数据技术的招聘分析系统,旨在为用户提供全面的招聘信息和深入的职位市场分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark 为核…

英集芯IP5911:集成锂电池充电管理和检测唤醒功能的低功耗8位MCU芯片

英集芯IP5911是一款集成锂电池充电管理、咪头检测唤醒、负载电阻插拔和阻值检测等功能的8bit MCU芯片。其封装采用QFN16,应用时仅需极少的外围器件,就能够有效减小整体方案的尺寸,降低BOM成本,为小型电子设备提供高集成度的解决方…

【常读常悟】《大数据之路-阿里巴巴大数据实践》一书读书摘要

【常读常悟】《大数据之路-阿里巴巴大数据实践》一书读书摘要 1、背景2、目录结构3、数据加工链路4、章节摘要4.1 第2章 日志采集4.1.1 日志采集方案4.1.2 采集指标 4.2 第3章 数据同步4.2.1 数据的特点4.2.2 数据同步的三种方式4.2.3 数据同步的最佳实践 4.3 第4章 离线数据开…

以太网交换安全:端口安全

一、端口安全介绍 端口安全是一种网络设备防护措施,通过将接口学习到的动态MAC地址转换为安全MAC地址(包括安全动态MAC和Sticky MAC),阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信,从而增强设备的安全性。以…