4位快速加法器和4位串行加法器相比_matlab与FPGA数字滤波器设计(4)—— Vivado DDS 与 FIR IP核设计 FIR 数字滤波器系统...

本篇博客介绍了如何使用DDS IP核在FPGA中生成不同频率的正弦波,结合FIR低通滤波器构建信号产生及滤波系统。通过配置DDS参数,产生0.5 MHz和5 MHz的正弦波,然后利用加法器将两者相加得到待滤波信号。接着,利用MATLAB设计的FIR滤波器进行滤波,最后通过仿真验证了滤波器的输出效果。在仿真分析中,观察了滤波器输出以及其他关键信号的波形,展示了良好的滤波性能。
摘要由CSDN通过智能技术生成

本讲使用两个 DDS 产生待滤波的信号和matlab产生带滤波信号,结合 FIR 滤波器搭建一个信号产生及滤波的系统,并编写 testbench 进行仿真分析,第五讲、第六讲开始编写 verilog 代码设计FIR滤波器,不再调用IP核。

系统框图如图所示:

3f3a6ad55715741bb9029184fc66337e.png

1. 添加DDS的IP核

(1) 新建一个原理图文件,添加DDS的IP。

e6142b69297f96264bc41ca7c324672b.png

(2) DDS配置1

 2a452330934eed93318e03ce09832ba6.png

2处:系统时钟,设为 32 MHz;

4处:通过控制杂散动态范围(Spurious Free Dynamic Range,SFDR)的数值,可以调整正弦和余弦输出数据的数据位宽,这里设置为90,则正余弦输出为15位。

如下图,选择6处的Noise Shaping为None时,输出的正弦波数据的位宽为 90/6 向上取整,即位宽为 15-bit,此处的 m_axis_data_tdata 符合 AXIS 总线协议,位宽必须是 8 的倍数,所以是 16 位([15:0])。

5处:频率分辨率,可以调整相位数据的位宽,设置为1000,32MHz/(1*1000)=32000,以2为底取对数得到大约为14.8,向上取整为15-bit。

e8cd36f4271f866c7390a85340c07841.png

(3) DDS配置-2

    1/2两处选择 Fixed 固定值,表示输出频率和初始相位都不变,3处输出正弦波,总体配置为频率和初相都不变的正弦波;

ab4ee6f4b5eb09ede54eafc15b6f3309.png

(4) DDS配置-3

配置输出信号的频率为 0.5 MHz,结合前面的配置输出 0.5 MHz 的固定的正弦波,其他保持默认;

6f645874da2784dd243136ceda6400a0.png

总结如下,可以看到位宽符合前文的计算。

82c20571e09b92ce3bda2c217e6a7a77.png

2. 使用IP核搭建滤波系统

(1) 按照前文的方式生成两个 DDS,一个频率为 0.5 MHz,一个为 5 MHz;(2) 按照第二讲的方式生成1个FIR低通滤波器;matlab与FPGA数字滤波器设计(2)——Vivado调用IP核设计FIR滤波器

988c5fc155a691e0dc190450ac9ae0be.png

(3) 添加加法器Adder/Subtracter;

1处点开可以更改输入位宽,此处因为要将前面DDS输出的AXIS总线上的数据作为输入,是16位位宽(其中只有低15位是有效的DDS数据),所以此处设置加法器输入16位(与AXIS的数据一致,不然位宽不匹配);

2处可以选择是加法还是减法;

3处配置输出位宽16位,输入的两个数据都是16位的,但是都只有低15位是有效数据,两个15位的数据相加,输出用16位表示可以保证不溢出;

4处配置延时,也是插入的流水线,当为1时表示插入1级流水线,输出的和会有1个时钟的延迟,此处不需要流水线,配置为0,此时输入就不会再有时钟;

此外,在第二页的Control页将Clock Enable勾掉,不需要做使能;

03ead60080642d4c3d464a4abb1baf47.png

(4) 调用常数ip核 Constant,配置输出位宽为1,输出数据为1,整体连接图如下图,三个IP时钟一样,0.5 MHz 正弦波与 5 MHz 正弦波相加,得到的待滤波信号输入到 FIR 滤波器的输入数据端,常数 1 输给 s_axis_data_tvalid,表示输入数据恒有效

9903401177a606d4f1f7ebbc132f07c1.png

3. 例化系统

(1) 对原理图文件按照第二讲的方法 Generate Output Products Create HDL Wrapper,并将 design_2_wrapper 设置为顶层文件(Set as Top); 

609809c743c7446049524f93a43922a1.png

(2) 打开 design_2_wrapper.v,可以看到如下引脚:

output [39:0]M_AXIS_DATA_0_tdata;//滤波器输出的滤波后的信号output M_AXIS_DATA_0_tvalid;//滤波器输出信号有效指示信号,为1时表示//输出的数据有效output [15:0]M_AXIS_PHASE_0_tdata;//0.5 MHz的DDS的相位数据output M_AXIS_PHASE_0_tvalid;//0.5 MHz的DDS的相位数据有效指示信号output [15:0]M_AXIS_PHASE_1_tdata;//5 MHz  的DDS的相位数据output M_AXIS_PHASE_1_tvalid;//5 MHz  的DDS的相位数据有效指示信号input aclk_0;//输入时钟,32MHzoutput m_axis_data_tvalid_0;//0.5 MHz的DDS正弦波数据有效指示信号output m_axis_data_tvalid_1;//5 MHz  的DDS正弦波数据有效指示信号

3abbde53c507096311fc38c5611d4051.png

(3) 新建仿真文件testbench

    具体步骤参考上一讲;matlab与FPGA数字滤波器设计(3)—— Matlab 与 Vivado 联合仿真 FIR 滤波器

749ac9b315e51863abc146e865634b9a.png

(4) 编写testbench例化 design_2_wrapper 模块;

    具体参考上一讲matlab与FPGA数字滤波器设计(3)—— Matlab 与 Vivado 联合仿真 FIR 滤波器

aa2ae0a02de2277942bd5fdd7290c073.png

(5) 给定时钟信号;

使用 initial 块always 块设定时钟为 32 MHz(大约),具体见上一讲;

此处只有一个输入是时钟,不需要再配置其他输入信号;

    此外,需要将新的仿真文件 fir_dds_tb 设为顶层文件(Set as Top),这样仿真时才能对新建的文件进行仿真;

f5cc75822017e3be75756befb16421d4.png

4. 仿真分析

(1) 点击仿真,可以看到滤波器输出一个0.5MHz的正弦波,滤波效果很好;

e1aa3af0f363c45299c426cfd3af77f7.png

(2) 观察内部其他信号的波形

首先,复位整个仿真,输入tcl 命令 restart

71b8f087d54e18842ddf3821566d1ed2.png

输入 tcl命令 log_wave -r /*,注意空格,-r前后都有一个空格;

f639518d464d2d372585767dac590296.png

找到下图中对应的模块,比如 DDS 模块的正弦波输出数据目前看不到,没有相应的引脚引出,找到 DDS 模块,对2箭头所指的信号 m_axis_data_tdata 右键,把信号添加到波形窗口 Add to Wave Window

e6fe90f47df076bd9a94c5c347f682bb.png

    添加两个 DDS 的信号和加法器的输出信号,如下图,1处是滤波器的输出信号2处是 0.5 MHz 的正弦波输出信号3处是 5 MHz 的正弦波信号,4处是加法器输出的两个正弦波的叠加信号;

d7a2355ce1917d52ff0d993f8c88991f.png

下一讲使用verilog 编写 FIR 滤波器,并编写testbench进行仿真分析。

matlab与FPGA数字滤波器设计(3)—— Matlab 与 Vivado 联合仿真 FIR 滤波器

matlab与FPGA数字滤波器设计(2)——Vivado调用IP核设计FIR滤波器

matlab与FPGA数字滤波器设计(1)——通过matlab的fdatool工具箱设计FIR数字滤波器

欢迎关注:FPGA探索者

87e24bbe55dc0895b2aafe36bdaef227.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值