基于分布式算法的FIR平方根升余弦多相滤波器的仿真_上传.docVIP

基于分布式算法的FIR平方根升余弦多相滤波器的仿真_上传.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于分布式算法的FIR平方根升余弦多相滤波器的仿真_上传

基于分布式算法的FIR平方根升余弦多相滤波器的仿真、设计与实现 实验要求 设计的FIR根升余弦滤波器的参数要求如下: 序号 参数名称 参数 1 滤波器类型 平方根升余弦FIR滤波器 2 阶数 32 3 信号传输速率 8.448Mbps 4 过采样点数 4Points/bit 5 升余弦系数 0.6 实验原理 过采样与滤波器的多相实现 在通信系统中,不论是成型滤波器还是匹配滤波器都是对源信号进行过采样后的的信号进行滤波【1】。 图1、过采样和滤波示意图 如图1所示,将想经I倍过采样后得到,再经过冲击响应为的FIRLPF得到输出序列。 在时刻 的值,是由下式来计算: (1) 将 带入(1)式有: (2) 进一步定义,方程(2)变为: (3) 由于是经I倍上采样得到的,即在每两个数据之间插入了I-1个0,因此,成立,所以方程(3)变为: (4) 由方程(1)可看出,次滤波器是阶的,由于源序列是经过了I倍过采样的信号,故可以化简为方程(4),由此可看出,对于任意一个时刻,实际上只用到了2M个滤波器系数,当i不同时,所用的滤波器系数不同,也就是将原来的一个阶滤波器分成了I个2M阶的滤波器来实现,这样降低了滤波器的阶数,从而减小了滤波延时,这种实现方式即称为滤波器的多相实现方式,其中称为第i相子滤波器。 此处,对信号进行4被过采样,滤波器阶数为32,因此可将滤波器分为4相实现,每个子滤波器的阶数为8。假设原滤波器系数为,则每一相的子滤波器系数,应时以下组合: 子滤波器 对应的原滤波器系数 表1、各子滤波器所对应的滤波系数 它的实现框图如图2所示: 图2、4倍过采样的滤波器多相实现结构图 FIR滤波器的分布式算法实现 由前一部分可知,对一个I过采样的信号进行滤波时,可以将滤波器拆为I个低阶滤波器的组合来实现滤波过程这在一定程度上降低了运算量,减小了滤波延时;但是在FPGA实现时对于滤波的卷积过程的实现一般并不是直接按照卷积的定义,每输入一个数据就去求一次卷积,这样运算的计算量仍然很大,基于此问题就提出了卷积过程的分布式实现算法。 由于FPGA中数据大都是std_logic_vector类型,很适合进行二进制的乘加运算,分布式算法正式基于二进制的乘加运算来实现的。 由于卷积相当于将其中的一个序列倒序排列后进行内积运算可表示为【2】: (5) 即是前面的滤波器系数的转置再平移N步,,即为输入的信息序列,假设FPGA实现是输入数据是B位的,且用补码表示,则: (6) 最高位是符号位,当=0时;当0时.由此,(5)式可变为: (7) 进一步化为: (8) 由(8)式可以看出,将内积运算分解为B项之和,而且每一项都是一个内积运算,这样做看似变复杂了,但是进一步分析可以看出,由于(8)式中的内积运算与(5)式中的内积运算有了很大的不同: (8)式中的内积运算完全不再需要乘法器,而仅仅用加法器就可以实现,当时,则与之相乘的项就不进行加法运算;当时,则与之相乘的项就作为一个加数进行运算;这就大大减小了运算量,这也是FIR滤波器的分布式算法的最大优点。 实际上,在FPGA使显示,(8)式并不是即用即算的,还有更加快捷的方法。在(8)式B个内积项当中,由于,而且各项内积运算都相当于是的一个线性组合,且每一项的系数都为0或1,而这样的线性组合共有种。基于以上事实,我们可以事先先将这种组合的值算出来并存入一片ROM当中,这样一来(8)式中的B次内积运算就相当于对ROM进行B次读操作,而第B-k次读ROM的地址就是N个输入数据的第B-k位所组成的二进制序列的值,而我们知道FPGA读ROM的某一个单元仅需要一个或两个时钟周期,其延时远远小于做N次加法或更多运算所需要的时间,这样就大大减小了运算量和延时。一种ROM的存储内容构造方式如图3所示【3】: 图3、ROM的地址与内容对应关系 本实验中,内容与地址构造方式与图3相反。 在实现时,对于(8)式的一次具体运算过程设这样的: (1)、将输入的N个数据都表示成B位2进制数。 (2)、将N个数的最低位(第0位)按事先排好的顺序放在一起组成一个N位的二进制数作为读取ROM的地址,并将此单元中的值读出来,存在Sum当中,之后将Sum左移一位,最高位补0,让Sum仍为B位。 (3)将将N个数的第1位按事先排好的顺序放在一起组成一个N位的二进制数作为读取ROM的地址,并将此单元中的值读出来,并将其加到Sum当中,之后又将Sum左移一位,最高位补0,让

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档