- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hartley已经引入了一种通过采用公共子表达式交叉系数实现常系数滤波器的概念
实时信号处理大作业
班级
姓名
学号
题目:Hartley已经引入了一种通过采用公共子表达式交叉系数实现常系数滤波器的概念,例如:滤波器
y[n]= (3.19)
其中,3个系数a[k]={480,-302,31}。3个系数的CSD码如下:
从表中可以注意到,结构出现了4次。如果构造一个临时变量h[n]=2x[n]-x[n-1]就可以用
y[n]=256h[n]-16h[n]-32h[n-1]+h[n-1] (3.20)
计算滤波器的输出。
(a).代入h[n]=2x[n]-x[n-1]验证(3.20)。
(b).得到(3.19)的直接CSD实现和子表达式共享的实现分别需要多少个加法器?
(c1).用QuartusII实现8位输入的子表达式共享滤波器。
(c2).仿真滤波器的脉冲响应。
(c3).确定LC的使用量和Registered Performance。
解:
(a). y[n]=a[0]x[n]+a[1]x[n-1]+a[2]x[n-2]
=(512-32)x[n] +(-256-64+16+2)x[n-1]+(32-1)x[n-2]
=256(2x[n]-x[n-1])+(-1)32(2x[n-1]-x[n-2])+ (-1)16(2x[n]-x[n-1])+ (2x[n-1]-x[n-2])
=256h[n]-16h[n]-32h[n-1]+h[n-1]
即可得(3.20)。
(b).直接CSD实现
y[n]=(512-32)x[n]+(-256-64+16+2)x[n-1]+(32-1)x[n-2]
可知,需要7个加法器;
子表达式共享
y[n]=256h[n]-16h[n]-32h[n-1]+h[n-1]
只要4个加法器。
(c). 原始滤波器结构如图:
利用CSD编码将系数变为2的倍数,即可乘法器换成移位寄存器,从而大大减少程序
的运算时间。结构如图:
提出子表达式,进一步减少了加法器的个数。子表达式共享滤波器的结构如图:
因为输入为8位,输出最大可以为:
y=127*147+302*128+127*480=118285为17位
因为有正负,所以最多有18位,即输出设为18位。
Y=127*31+128*302+127*480=103553 17位
程序代码如下:
PACKAGE eighteen_bit_int IS
SUBTYPE BYTE0 IS INTEGER RANGE -131072 TO 131071;
END eighteen_bit_int; --定义18位
PACKAGE eight_bit_int IS
SUBTYPE BYTE1 IS INTEGER RANGE -128 TO 127;
END eight_bit_int; --定义8位
LIBRARY work;
USE work.eighteen_bit_int.ALL;
USE work.eight_bit_int.ALL;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY fir IS
PORT(clock,en:IN STD_LOGIC;
x:IN BYTE1; --定义输入8位
q:OUT BYTE0); --输出18位
END fir;
ARCHITECTURE behave OF fir IS
SIGNAL xtemp1:BYTE1; --定义输入信号8位
SIGNAL htemp1,htemp2:BYTE0; --其余18位
BEGIN
PROCESS(clock,en)
BEGIN
IF(en=0)THEN
IF(clockEVENT AND clock=1)THEN --上升沿到来
htemp1=2*x-xtemp1; --子表达式
q=256*htemp1-16*htemp1-32*htemp2+htemp2; --式(3.20)
xtemp1=x;
htemp2=htemp1; --=即可实现延时
END IF;
END IF;
END PROCESS;
END behave;
(d).
文档评论(0)