Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正

这篇具有很好参考价值的文章主要介绍了Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言: 本栏目除特别说明以外,均采用的黑金AX7103开发板,该开发板时钟频率为200M,并且是双端时钟,因此在每个项目中都有一段原语将双端时钟变成200MHz的单端时钟。文章仅作为学习记录,如有不足请在评论区指出,博主不会对各位的问题作出解答,请谅解。博主深知网络上关于HDL Coder的资料十分稀少,特别是中文资料几乎没有,并且官方给出的例子大多挺难不适合入门,因此将自己摸索的过程记录下来,希望给后人一些启发。

1. 项目背景

  1. 本项目是2022年全国大学生集成电路创业创新航天微电子杯的赛题,由于自己时间精力有限,所以特意尝试了一下全部用Simulink完成项目设计,最后发现结果还是很不错的,整个模型2天就搭好并通过测试仿真。相对于初赛花了2周来学习各种ip核的使用,然后手工来写Testbench,Simulink能够节省大量时间。
  2. 赛题要求如下图:
    Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正
    由于疫情影响,我是拿自己手上的AX7103板卡进行实验的,决赛才会发板子。所以没有用到射频部分,同时GTH以及DDR3都不能在Simulink里面模拟仿真。 算法原理可以简单描述为:
  • AD采样信号分为两路,一路传入数据处理模块,一路传入数据储存模块(可以是RAM也可以是DDR3)。
  • 数据处理模块计算两路输入AD信号的相位差,首先FFT找到频谱幅度最大值对应的索引以及实部和虚部。比较两路信号在该频点上的相位差,相位计算可以通过Atan2函数,该函数使用CORDIC硬件加速算法。得到相位差之后计算采样点偏移,即应该偏移多少个采样点才能将两路AD信号信号对齐,相位对应的其实就是时间平移量,找到这个偏移量输出给数据储存模块。
  • RAM通过读取和写入的地址偏差控制AD信号的输出,将两路信号对齐。算法流程可以描述为下图:
    Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正

当然,相位差校正还有不少其他的方法,比如相关法,滤波法等等。

2. Simulink模型

Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正
我这里解释一下为什么后面偏移量我乘了一个系数2,这里是因为给Top模块的有效信号周期为2,但是Simulink本身的时钟周期是1,也就是说,如果你查看外部的输入信号是 1 1 2 2 3 3 4 4,Top收到的信号实际是1 2 3 4,你查看信号波形就明白了。
我找不到最初的模型了,一共写了很多版的代码,这个是比较早的版本,我觉得要清晰一些。
Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正
这是仿真结果。

3. Vivado 仿真

我生成HDL 代码的时候是一个模块一个模块的生成单独测试的,不像之前的时候都是封装成一个顶层模块。也就是每次点Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正的时候,都要选中要生成的模块。或者你们再将里面所有的模块,除了信号源意外都再封装成一个子系统。
Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正
Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正

上面的仿真是直接生成TestBench的仿真结果,可以看到是可以实现功能的。不过对应的Simulink文件可能被我删掉了,我找不到了。

4. 实际效果

Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正
Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正

5. 文件下载

我给出一份可以直接使用的模型,以及对应的Vivado工程,没有Vivado测试文件,直接可以下载到AX7103的,管脚都已经配好了。 用了AD/DA模块:
Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正
我想应该没人会上板测试,两个模块都插到拓展口上,具体位置可以看看约束文件,我忘了,大概是AD J11,DA J13. 不知道有没有加按键功能,如果没有校正效果,看看按板卡上的两个按键有没有效果。
主要是让大家下载之后看看Simulinlk模型,我有点懒,讲的不太清楚,有问题再问吧。等下次看看会不会弄一个比较详细的新工程。
链接:https://pan.baidu.com/s/1_4m0sWSaNs_5eRDs2489wA?pwd=1111
提取码:1111
–来自百度网盘超级会员V6的分享文章来源地址https://www.toymoban.com/news/detail-461470.html

到了这里,关于Simulink HDL Coder FPGA初级开发实践(五)FFT以及CORDIC算法进行信号相位校正的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Verilog HDL的FFT算法硬件实现(8点,三级流水线,DIT-FFT)

    关于fft的相关知识,在之前的文章中,有过介绍,这里不再具体介绍,可以参考学习。 从傅里叶级数(FS)到傅里叶变换(FT)最后到离散傅里叶变换(DFT)_小张爱学习哦的博客-CSDN博客_fs傅里叶级数 FFT原理(基2DIT-FFT)及C语言编程思路及实现_小张爱学习哦的博客-CSDN博客_c语言

    2024年02月14日
    浏览(38)
  • FPGA在校学习记录系列---实验4不同状态的LED+开发板(Verilog HDL)

    此系列记录FPGA在学校的学习过程。 FPGA系列 需要用到的软硬件: 软件:Quartus II 15.0 (64-bit) 硬件: 5CEBA4F23C7芯片 链接: FPGA在校学习记录系列—新建一个FPGA工程编写程序并仿真(Verilog HDL) 创建的工程名字为:LED (这次不用仿真,直接用开发板验证) 编译文件 按键资源:

    2024年04月09日
    浏览(49)
  • m基于FPGA的OFDM系统verilog实现,包括IFFT,FFT,成型滤波以及加CP去CP,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 OFDM原理 2.2 基于FPGA的OFDM系统设计和实现 2.2.1IFFT/FFT模块设计和实现 2.2.2成型滤波模块设计和实现 2.2.3加CP去CP模块设计和实现 3.Verilog核心程序 4.完整算法代码文件获得 vivado2019.2仿真结果如下: CP加入,删除效果: 系统RTL结构图

    2024年02月05日
    浏览(58)
  • FPGA实现Cordic算法求解arctan和sqr(x*2 + y* 2)

    由于在项目中需要使用的MPU6050,进行姿态解算,计算中设计到**arctan 和 sqr(x 2 + y 2),**这两部分的计算,在了解了一番之后,发现Cordic算法可以很方便的一次性求出这两个这两部分的计算。另外也可以一次性求出sin和cos的值。另外该算法还可以计算其他的一些公式(没做过多的

    2024年01月19日
    浏览(45)
  • 【FPGA】Xilinx Cordic IP 内核使用记录(输入输出数据格式介绍)及实验仿真

    Rotate 实现的功能是坐标的旋转。 输入 X, Y, Phase 输出X’, Y’ 具体实现的功能对应的数学表达形式如下: 在做FFT 复乘旋转因子时也可以用这个IP核的Rotate功能来实现。旋转因子-旋转! Translation 实现的功能是求模,以及向量的夹角 输入 X, Y 输出X’ and Phase 具体实现的功能对应

    2024年02月07日
    浏览(50)
  • MATLAB /Simulink 快速开发STM32(使用st官方工具 STM32-MAT/TARGET),以及开发过程

    配置好环境以后就是开发: stm32cube配置芯片,打开matlab添加ioc文件,写处理逻辑,生成代码,下载到板子中去。 配置需要注意事项: STM32CUBEMAX6.5.0 + MABLAB2022B+keilV5.2 Matlab生成的代码CTRL+B 其中关键的配置有哪些,如图: untitledtest_stm32是matlab生成的代码

    2024年02月14日
    浏览(51)
  • FPGA用verilog HDL实现串口通讯协议

    串口通信是一种通过串行传输数据的通信方式。它使用单个数据线将数据位逐个传输,而不是同时传输多个数据位。串口通信常用于连接计算机与外部设备,如打印机、调制解调器、传感器等。 串口通信一般使用的是异步传输方式,即发送方和接收方的时钟不同步。数据传输

    2024年02月05日
    浏览(61)
  • 【Verilog HDL实践】汽车尾灯控制电路实现

    【Verilog HDL实践】汽车尾灯控制电路实现 使用芯片:Altera Cyclone® IV EP4CE22F17C6N FPGA 开发工具:Quartus Ⅱ 开发项目: 设计一个汽车尾灯控制电路。已知汽车左右两侧各有3个尾灯,采用K0、K1进行状态控制,要求尾灯按如下规则亮灭。 (1)汽车沿直线行驶时,两侧的指示灯全灭;

    2024年02月04日
    浏览(40)
  • 【Verilog HDL】FPGA-testbench基础知识

    🎉欢迎来到FPGA专栏~testbench基础知识 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 📜在开发FPGA的过程中,需要掌握V

    2024年02月12日
    浏览(40)
  • FPGA Verilog Cordic算法实现三角函数计算,可计算sin cos arctan,精度达到,10e-5,有完整资料说明

    FPGA Verilog Cordic算法实现三角函数计算,可计算sin cos arctan,精度达到,10e-5,有完整资料说明。 另有串口收发,可上板后在串口助手检测 图文无关,在altera板子上有完整工程。 FPGA Verilog Cordic算法实现三角函数计算 FPGA在近年来得到越来越广泛的应用,针对三角函数计算的需

    2024年02月01日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包