关于xilinx fir use reloadable coefficient的用法

最近用到系数可以重新配置的fir滤波器,调用xilinx提供的ip core,使用了use reloadable coefficient功能,但有以下几点疑问,哪位有用过的大虾能否指点迷津下 1、使用use coefficients reloadable之后,仍需导入.coe文件,这个文件的作用是什么,此时滤波器系数不是由coe_din输入了吗? 2、number of coefficient sets的作用是什么,与导入的.coe系数个数有关系。 3、_reload_order.txt中的系数顺序是说coe_din输入系数的顺序还是coefficients file文件的顺序,还是两者都需要按这个顺序?

lxza521 (2011-9-17 09:50:01)

.coe为xilinx的部分IP初始化文件,示波器,RAM都能使用.coe文件进行初始化,滤波器的IP核xilinx只提供了结构,具体的系数需要.coe配置。

lxza521 (2011-9-17 09:50:40)

.coe为xilinx的部分IP初始化文件,示波器,RAM都能使用.coe文件进行初始化,滤波器的IP核xilinx只提供了结构,具体的系数需要.coe配置。

110500623 (2011-9-17 11:29:13)

回复 3# lxza521 谢谢回答,这个我知道,我问的是如果用到系数是由外部配置的,这个coe文件就不需要了吧,或者需要是用来做什么的,初始化吗?

laoxing (2011-9-20 19:30:35)

第一个问题:导入.coe文件,相当于给滤波器一个默认的系数,可能是软件需要的。如果你不重新输入滤波器系数,就默认这组系数了。 第二个问题:那个参数要跟系数个数相同,比滤波器阶数大1。(对称的情况下,例如阶数为32,该参数为33,实际滤波器系数取17) 第三个问题:你用matlab生成的系数文件,需要反过来装入XILINX中。 希望您能试一下,这是我小小的看法~~~以上都是系数对称的情况·

110500623 (2011-9-21 08:16:07)

回复 5# laoxing 回答很详细,很是受用,非常感谢 

laoxing (2011-9-22 20:20:28)

回复 6# 110500623 没事,但愿能帮助您~

qiujian333 (2011-11-23 14:44:19)

用xilinx ise12.4的CORE FIRV5.0生成了FIR滤波器 其中设置了使用系数重载功能, 但是在用modelsim仿真的时候,系数无法正确的配置进去, 求解。 我是这样想的,首先不采集数据,coef_ld先高后低,然后coef_we使能一直为高,接着输入49个系数。(滤波器是49阶的) 但是这样系数配不好,无法得到正确的结果。 有没有高手弄过系数重配的,还请帮下忙解释下,谢谢啊。 还有1个问题,生成的滤波器中,输出口rfd在无数据输入情况下,会一直为高。但是datasheet上第44页说,可以利用coef_ld来强制rfd为低,可是rfd为滴说明已经在采集数据了,这怎么理解的,我不太清楚。 求帮助

catt28 (2011-11-30 23:05:08)

回复 8# qiujian333 这个你得分情况,在DA FIR里面,coef_ld一旦拉高,就指示要开始采集新的系数了,滤波器同时就停止工作了,直到采集完一组新的系数,采集的时间有公式,这个你得在datasheet 里面看,而在transpose FIR和systolic FIR里面,coef_ld拉高滤波器并不停止工作,直到采集完一组新的系数后滤波器才采用新的系数重新工作,采集的时间是系数的长度加一个时钟码片,采集的时间一定要保证足够,不然肯定不能正常工作,同时要注意此时采集的系数要re-order,不然结果也不对,re-order的顺序也要看datasheet。还有RFD是系数采集指示信号,coef_ld拉高会迫使RFD为低,表示一组新的系数还没采集完毕,这个是没有问题的。 我最近也在学习滤波器的Reload功能,这是我的理解,望多交流。

catt28 (2011-11-30 23:06:51)

回复 8# qiujian333 这个你得分情况,在DA FIR里面,coef_ld一旦拉高,就指示要开始采集新的系数了,滤波器同时就停止工作了,直到采集完一组新的系数,采集的时间有公式,这个你得在datasheet 里面看,而在transpose FIR和systolic FIR里面,coef_ld拉高滤波器并不停止工作,直到采集完一组新的系数后滤波器才采用新的系数重新工作,采集的时间是系数的长度加一个时钟码片,采集的时间一定要保证足够,不然肯定不能正常工作,同时要注意此时采集的系数要re-order,不然结果也不对,re-order的顺序也要看datasheet。还有RFD是系数采集指示信号,coef_ld拉高会迫使RFD为低,表示一组新的系数还没采集完毕,这个是没有问题的。 我最近也在学习滤波器的Reload功能,这是我的理解,望多交流。

陆琦 (2012-12-11 10:03:56)

大神啊

 

 

你这个问题,原来就有人问过的,当时的一位大虾给解答的非常的好,你看一下

首先,我要告诉你的是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量化噪声引起的部分还可以去除,使得最终位宽仍可进一步减小。但目标是大信号不溢出,小信号不损失。
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值