【FPGA 】Altera基于IP核的FIR数字滤波器(上板成功)

提示:基于Altera的FIR数字滤波器设计 2021


前言

使用软件版本 quartus ii 18.0


基于Altera的FIR数字滤波器设计

一、FIR滤波器

FIR滤波器是有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

二、Altera FPGA实现过程

1.抽头系数

  • 打开Matlab,输入fdatool打开滤波器设计工具
    在这里插入图片描述

    (根据自己设计要求选取参数)
    在这里插入图片描述
  • 然后导出抽头系数。

2.IP核配置

在配置界面配置好时钟与抽头系数的形式,然后导入之前生成好的抽头系数。
在这里插入图片描述
输出的配置暂时不用动,之后在代码中实现数据位的截断。

3.代码

  • 高速ADC
    我这里使用的ADC是8位ADC,ADC的时钟设置50KHz。
  • 高速DAC
    DAC是10位DA,DA的时钟设置50KHz。
//`配置AD  DA模块
always @(posedge sys_clk or negedge sys_rst_n)
 begin
  if(!sys_rst_n)
   begin
    AD_Clk<=1'b0;
    clk_cnt<=32'd0;
   end
  else
    if(clk_cnt==32'd499)//sample 50K
     begin
      AD_Clk<=~AD_Clk;
      DA_Clk<=~DA_Clk;
      clk_cnt<=32'd0;
     end
    else
     clk_cnt<=clk_cnt+1'b1;
 end
	always @ (posedge sys_clk or negedge sys_rst_n)
	begin
		if(sys_rst_n == 1'b0)
			cnt <= 6'd0;
		else if(cnt == 6'd999)
			cnt <= 6'd0;
		else
			cnt <= cnt + 1'b1;
	end
  • IP核配置代码
    FIR IP的例化程序代码

4.关于数据截断问题

//`
fir_ip fir_ip_inst(
. clk (sys_clk),
. reset_n (sys_rst_n),
. ast_sink_data (AD_Dat_tmp),
. ast_sink_valid (fs_pulse),
. ast_sink_error (2’b0),
. ast_source_data (ast_source_data),
. ast_source_valid (ast_source_valid),
. ast_source_error (ast_source_error)
);

关于信号ast_source_data数据位的截断
可以在singaltap里面观察ast_source_data波形,然后选择保留两三个符号位剩下的为数据位
例如这个,选择[27:18]就可以(根据不同的DA芯片的位数不同,选择的截断长度也不同,这里只是给出一个参考)
在这里插入图片描述
在这里插入图片描述

总结

以上就是设计FPGA数字滤波器的全过程,很简单。如果上板成功得到的波形是正弦阶梯波的形式,你还需要做一个模拟低通滤波器过滤高频谐波,进行波的整形。(有疑问或者需要工程文件请添加QQ:236395527)

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值