标题:
[求助]使用过FIR滤波器IP_CORE的过来看一下,急呀!!
[打印本页]
作者:
Roger Lin
时间:
2006-6-7 09:51
标题:
[求助]使用过FIR滤波器IP_CORE的过来看一下,急呀!!
我使用XILINX的MAC_FIR和DA_FIR过程中,设定
COE_WIDTH = 12;
DATA_IN_WIDTH = 12;
MAC_FIR中统计输出是30位数据,
请问,我怎么截取数据,即,从哪儿开始是符号位?符号位有几位?哪儿开始是数据位?
谢谢帮帮忙呀,提示提示
作者:
vincent
时间:
2006-6-7 09:55
你这个问题,原来就有人问过的,当时的一位大虾给解答的非常的好,你看一下
首先,我要告诉你的是Xilinx是如何给出的输出位宽。
OutputWidth=coefwidth+inputwidth+ceil(log2(Tap)) (*)
比如,这里coefwidth=12, inputwidth=12, Tap是滤波器的阶数,ceil是向上取整。如果阶数为48,最接近48的2^n为64,那么,(*)式最后一项即为6,那么输出位宽即为30。
如何截位?首先,应该求出输出的最大值,
Max(output)=Max(input)*sum(abs(coef)) (a)
这样保证不溢出,求得输出的最大值,化为二进制当然是补码了,即可确定输出最大位宽,系数和输入都是有符号二进制补码表示,那么高两位都是符号位,从次高位向下截取
(a)式所确定的位宽,但这时所得位宽仍较大,实际上由于ad量化噪声引起的部分还可以去除,使得最终位宽仍可进一步减小。但目标是大信号不溢出,小信号不损失。
作者:
Roger Lin
时间:
2006-6-7 09:57
太谢谢了!!我都弄了很久了,现在一下子明白了!!
非常的感谢!!
作者:
deguiqin
时间:
2006-6-7 10:00
首先应保证小信号不损失,然后实验得出截取位数,向后截取一位输出信号减小6dB 。
这个问题我也曾经遇到过,二楼的解答真的很精彩,谢谢了!
作者:
xueym
时间:
2006-6-8 11:03
very good!!!
作者:
silverwolf7516
时间:
2006-6-8 11:48
确实不错,加为精华
作者:
agilite
时间:
2006-6-16 11:00
长见识了!
作者:
cjm15983646014
时间:
2010-6-29 22:15
二楼回答的太好了,不过OutputWidth=coefwidth+inputwidth+ceil(log2(Tap)) 这个式子有问题,用不到那么多位。根据做2加法树计算的流水线设计方法,每一级流水线位数加一位,同时参与加法运算的数据减少一半,所以会得出log2(Tap)这个式子,实际上,因为系数不是取coefwidth所能取到的最大数,所以一定会有冗余位出现,具体取多少位,应该根据仿真或者自己编写一个测试程序来计算。Matlab里的fdatool就做好了这一点,考虑到了冗余位这个问题。
作者:
cjm15983646014
时间:
2010-6-29 22:20
在这里,我想请问一下:输出数据如何截取一定的位数?比如和一楼一样,输入数据12位,系数12位,48阶,假如输出是28位(在这里肯定不会是30位,那么做太失水准了),如何将28位数据截取为12位或16位?如何截取才是最佳方案?
作者:
猫弟虎弟
时间:
2010-6-30 20:40
加载符号表了吗?#3 0x0912c590in?()这种情况一般都是内存越界
作者:
丫头不哭哦
时间:
2010-7-2 05:49
在IDC环境,很多人使用,不能gdb r,该怎么办呢?而且也不是时时core,一天core一两次差不多。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0