原创 【博客大赛】直接型FIR的FPGA设计(二)

2012-4-21 15:50 1383 6 7 分类: FPGA/CPLD

 (二)FIR算法的定点仿真

从(一)上设计可得知,滤波器阶数为241阶,系数个数242,并且具有线性相位,系数具有偶对称结构。

首先滤波器进行浮点仿真 来作为我们定点仿真的验证参考。

生成激励信号:选用高斯白噪声作为激励信号,生成采样率为48kHz,共100*242点激励信号,其功率谱如:

awgn_float.jpg

FIR时域计算公式可展开得到:

y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2) + …… + h(N-1)x(n-N+1)

FIR运算即为一种卷积运算,所得结果=输入数据与FIR系数的卷积。其定点仿真则可通过下面简单的程序完成:

% float simulate
% AWGN
output_float = conv(input_float , coef_float);
output_float = output_float(1:simdata_len);

所得结果的功率谱:

awgn_float_out.jpg

而我们采用的定点算法,即是将卷积运算用相乘与累加运算来代替实现,并通过控制将其更便于在FPGA硬件电路上实现,matlab程序如下:

% fixed simulate
%AWGN
output_fixed = zeros(simdata_len-coef_len+1,1);
for i = 1 : simdata_len-coef_len
    sum_data = 0;
    data_ram = input_fixed(i : i + coef_len - 1);
    for j = 1 : coef_len
        sum_data = data_ram(j)*coef_fixed(j) + sum_data;
    end
    output_fixed(i) = floor(sum_data/2^(in_word_len+coef_word_len-out_word_len-1));
end

所得结果功率谱与浮点的结果进行比对:

awgn_fixed_out.jpg

可知,我们所采用的移位相乘累加的方法可以直接实现FIR滤波器的运算。随后我们将在FPGA上用这种直接型结构来实现FIR滤波器。

文章评论1条评论)

登录后参与讨论

用户1727104 2014-11-10 10:40

你好,我想把滤波器的系数存储模块改为双口ram,应该怎么控制系数的写入呢?
相关推荐阅读
jlx_cuc 2014-06-06 18:19
你真的会socket编程吗(1)
最近的项目都围绕着TCP socket在进行着,VC下的socket,Linux下的socket,感觉很简单,但是却发现其实下面的几个同事对于socket这个东西还只是“会”,但并不一定懂。 ...
jlx_cuc 2014-05-16 18:44
操作系统-读书笔记(1)
最近在业余阅读时找到一本《自己动手编写操作系统》觉得不错,视角很新颖,是有关操作系统书籍中为数不多的看了不想睡觉的读本。   由于这本书的出版时间较早,书中引导盘还使用的是软盘,所以在跟随...
jlx_cuc 2014-05-08 17:13
“改变”后的一丝体会
有两个月没写博客了,现在正是开学之际,有必要对前面两个月的工作做做记录。   经历过从北京到苏州的工作地点转换,生活和工作上的体会和收获颇丰。到苏州来以后会觉得,原来的一些看法还是太过狭隘...
jlx_cuc 2014-05-08 17:13
最终我又不要脸的回来了——成为一名“管理者”后的心得
之前的很长一段时间都没再更新过这个博客,一直在EDN潜水,一直在做伸手党。原因有两个,一个是忙,一个是懒。 最终我还是不要脸的回来了。还是想以后好好把这个博客经营下去,也好等咱们的娃长大了给它...
jlx_cuc 2013-07-11 17:13
【博客大赛】写给“即将入学”的硕士研究生们
原本题目定的是《写给即将入学的硕士研究生们》,后来想了想便加上了双引号。先来说说这个双引号。   早在一个多月前全国考研的最后结果便出来了,对于考上研的同学们来说,马上就要开始自己的研究生...
jlx_cuc 2013-04-08 23:22
【博客大赛】老罗和他的锤子之我的见解
事先说明,个人感觉我的观点还算是中立观点,并不是要感叹老罗和锤子有多好,也不想批评它们是否一无是处。只是想在时隔这么就没来EDN,恰巧又遇到锤子的发布这个时间点,发表些个人的感想和见解。 ...
我要评论
1
6
关闭 站长推荐上一条 /2 下一条