微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA实现FIR滤波器时,系数位宽怎么确定

FPGA实现FIR滤波器时,系数位宽怎么确定

时间:10-02 整理:3721RD 点击:
如题,一般用matlab设计滤波器的时候,得出的系数都是无限精度小数,用FPGA实现的话必须化为定点整数,那么要多少位宽是怎么确定的呢?

FPGA的位宽取决于你的最终设计要求,如果你使用Mathworks HDL Design Flow,其中有一个环节就是浮点到定点的转换,Matlab会帮你算出量化误差供你选择。
如果你不用HDL Design Flow,我没用过,不过我觉得滤波器工具箱应该有Fixed Point的工具。
欢迎有经验的加入讨论。

找本DSP书看看吧,一般都会讲

我一般是这么做的,比如,量化前的系数为b,先算出在当前情况下的频率响应freqz(b,1,1024,fs),因为是用matlab算出来的,能保证此时满足指标(通带截止频率、阻带截止频率、通带最大衰减、阻带最小衰减);
    之后如果量化为n+1位(1是符号位,n为数据位),先计算B=round(b*2^n)/2^n,然后再
freqz(B,1,1024,fs),此时的频率响应肯定要比量化之前算出来的差一点。如果还没有满足指标,则慢慢的将
n往上加,直到满足。最终n+1就是所需的位宽。
    大家说说看,我这样行的通没有?

给你个经验值吧18bit。是经过计算过的,对于量化引起的精度误差和截断位数都有考虑,具体怎么计算的这个比较复杂,具体使用时可以考虑这么用!

正好需要。

在fdatool中直接有量化设置。

可以在量化quantity选项中设置,然后再sinmulink中仿真,看一下效果。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top