基于fpga与matlab的超声多普勒频移解调应用

基于fpga与matlab的超声多普勒频移解调应用

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等

一 、超声多普勒频移解调知识点
多普勒效应:接收到的运动目标反射或散射的超声波频率与原发射频率有所不同。
多普勒频移:由多普勒效应引起的发射频率与运动目标反射或散射的频率之间的频差。
多普勒频移解调:发射和接收换能器靠得很近,所以总有一部分发射信号透过来直接耦合到接收器,这些不需要的波称为杂波。从复杂的口波信号中提取多普勒频移信号,称为多普勒频移解调。
多普勒频移解调原理框图:
在这里插入图片描述
二、FPGA多普勒频移解调功能设计开发
1、vivado开发平台(vivado 2019.2,其余版本按照步骤生成新工程即可)
①DDS IP核生成2Mhz和(2Mhz+1Khz)的sin频率信号;
②乘法ip核实现2Mhz和(2Mhz+1Khz)的sin频率信号混频处理;
③FIR IP实现低通滤波算法(Matlab获取滤波参数);
④FFT IP核实现FFT的算法;
⑤乘法ip核实现FFT处理后数据取模运算;
⑤通过算法实现取模运算后65536数据的峰值搜索;
⑥对峰值结果进行计算,并与1Khz理论值比对
2、FPGA功能设计框图
在这里插入图片描述
3、FFT工程设计
①顶层TOP,fft_top.v;
②内部时钟i产生1M时钟,用于FFT IP核时钟;
③dds_ctrl控制模块,DDS IP核实现2Mhz和(2Mhz+1Khz)的sin频率信号,以及乘法ip核实现4Mhz和1Khz的sin频率信号混频处理;
④FIR IP实现低通滤波算法
⑤FFT IP核实现FFT的算法;
⑥通过算法实现取模运算后1024数据的峰值搜索,并计算出杂波频率,与理论值1K比对;
在这里插入图片描述
4、FFT工程设计中IP核配置
①DDS ip
步骤1:打开IP Catalog,点击Window下IP Catalog
在这里插入图片描述
步骤2:查找dds IP核 dds compiler,搜索输入
在这里插入图片描述
步骤3:dds IP核dds compiler配置——Configuration,修改名称,设置选择Phase Generator and SIN COS LUT,设置输入系统时钟50M,两路通道2M和2M+1K
在这里插入图片描述
步骤4:dds IP核dds compiler配置——Implementation,Output 选择Sine模式,对比Matlab中sin信号,相位输出不使能
在这里插入图片描述
步骤5:dds IP核dds compiler配置——Detailed Implementation,DATA Output 选择Chan ID Field,对应两路输出2M和2M+1K的sin信号
在这里插入图片描述
步骤6:dds IP核dds compiler配置——Output Frequencies,设置两路输出信号的频率2M和2M+1K
在这里插入图片描述
②乘法 ip(88)
步骤1:打开IP Catalog,点击Window下IP Catalog
在这里插入图片描述
步骤2:查找乘法 IP核 multiplier,搜索输入
在这里插入图片描述
步骤3:乘法 IP核 multiplier配置——Basic,修改名称,设置输入数据的位宽8
在这里插入图片描述
步骤4:乘法 IP核 multiplier配置——Output and Control,无需设置,只需要关注输出数据的最高位MSB和最低位LSB,方便其他模块使用乘法ip的输出数据
③fir IP核 FIR Compiler
步骤1:打开IP Catalog,点击Window下IP Catalog
在这里插入图片描述
步骤2:查找fir IP核 FIR Complier,搜索输入
在这里插入图片描述
步骤3:fir IP核——Filter Options,选择滤波系数,通过COE File直接导入(后面章节会说明如何使用Maltab生成滤波系数)
在这里插入图片描述
步骤4:fir IP核——Channal Specification,设置时钟频率和采样频率均为50M
在这里插入图片描述
步骤5:fir IP核——Implementation,设置Coefficient Type和Width与Matlab生成系数一致
在这里插入图片描述
步骤6:fir IP核——Interface,适配前端数据(来自dds ip核),需要设置Tready,不需要设置tlast
在这里插入图片描述
④fft IP核 Fast Fourier Transform
步骤1:打开IP Catalog,点击Window下IP Catalog
在这里插入图片描述
步骤2:查找fft IP核 Fast Fourier Transform,搜索输入
在这里插入图片描述
步骤3:fft IP核配置——Configuration,修改名称,设置通道,传输的数据65536,设置Target Clock Frequency,采样率1M,选择基4突发结构
在这里插入图片描述
步骤4:fft IP核配置——Implementation,数据格式选择定点数类型,放缩设置为块浮点模式, 输出 FFT 结果选择顺序输出
在这里插入图片描述
步骤5:fft IP核配置——Detailed Implementation
在这里插入图片描述
步骤6:fft IP核——Implementation Details
①输入给fft ip核的axi4_stream接口的计算数据,fft ip作为slaver,来自dds ctrl;CHAN_0_XN_IM_0(31:16)是复数的虚部,CHAN_0_XN_RE_0(15:0)是复数的实部;
FFT混频信号只使用实部的信号,低 16 位赋值为乘法器输出值, 高 16 位赋值为 0;
②输入给fft ip核的axi4_stream接口的配置数据,fft ip作为slaver,1-正变换,0-逆变换
代码里需要设置配置数据为1,快速傅里叶正变换;
③fft ip核输出的axi4_stream接口的结果数据,fft ip作为master
将fft ip输出的数据的实部和虚部进行平方(通过乘法核实现)再相加
即可得到FFT处理后的频谱图
在这里插入图片描述
⑤乘法 ip(16
16)
步骤1:打开IP Catalog,点击Window下IP Catalog在这里插入图片描述
步骤2:查找乘法 IP核 multiplier,搜索输入
在这里插入图片描述
步骤3:乘法 IP核 multiplier配置——Basic,修改名称,设置输入数据的位宽16
在这里插入图片描述
步骤4:乘法 IP核 multiplier配置——Output and Control,无需设置,只需要关注输出数据的最高位MSB和最低位LSB,方便其他模块使用乘法ip的输出数据
在这里插入图片描述
三、Matlab FIR滤波系数生成
1、选择app滤波器设计工具
在这里插入图片描述
2、根据自己的需求设计低通滤波器
在这里插入图片描述
3、生成xilinx.coe
在这里插入图片描述
四、仿真及结果验证
根据计算,仿真出最大值67,杂波频率(67*1000000)/65536=1022
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰的FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值