好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

几种fpga的fir滤波器方案详析.doc

22页
  • 卖家[上传人]:F****n
  • 文档编号:93536489
  • 上传时间:2019-07-23
  • 文档格式:DOC
  • 文档大小:613.50KB
  • / 22 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • FIR 滤波器设计方案DesigneryaoguaiwsFIR滤波器的基本结构一. 横截型(卷积型、直接型)FIR滤波器的差分方程表达式为:很明显,这就是线形时不变系统的卷积和公式,也就是x[n]的延时级联的横向结构,如下图所示:由于线形相位FIR滤波器的系数是镜像对称的,所以N阶滤波器系数只需要个储存单元即可而输入x[n]的值需要N个储存单元,这样总共就需要个储存单元二. 级联型将H(z)分解成实系数二阶因子的乘积形式:图中画出了一个FIR滤波器的级联结构,其中每一个二阶因子用一个横截型来表示:这种结构的每一节控制一对零点,因而在需要控制传输零点时可以采用它但是这种结构所需要的系数比卷积型的系数h[n]要多,因而需要更多的储存单元理论上需要个单元储存系数,再加上各单元储存中间结果,结果一共需要个储存单元三. 频率抽样型把一个N店有限长序列的z变换H(z)在单位圆上作N等分抽样,就得到,其主值序列就等于h(n)的离散傅里叶变换即H(z)的内插公式为:这个公式就为FIR滤波器提供了另外一种结构,这种结构由两部分组成。

      其中的第一部分为(这是一个FIR子系统,是由N节延时单元构成的梳状滤波器):级联的第二部分为(这是一个由N个一节网络并联而成的IIR子系统):频率抽样型的结构如图所示:该系统需要2N个储存单元用来缓存输入的数据,N个储存单元用来储存系数,一共需要花费3N个储存单元量化误差分析理论设计的FIR滤波器系数都是无限精度的,当他们有硬件实现时,必须要量化,这必然引起量化误差这也就使得理论滤波器和实际滤波器存在一些性能上的差别<由于FIR滤波器只有z=0只一个极点,他在单位圆内,不会出现系统的不稳定,这还算Lucky! >系数的量化误差对系统的影响,不仅仅和量化字长有关,更是和滤波器的结构密切相关的!分析:假设为理论系数,为量化系数,为量化误差,则有:可以得到由于各的偏差引起的第i个零点位置变化量为(推导过程见:《数字信号处理教程.程佩青.清华大学出版社》):上式分母中的每一个因子是由一个零点指向的矢量,而整个分母正是所有其它零点指向该零点的矢量积当系统的零点非常密集时,他们互相的矢量长度就很短,矢量积就更小,就较大高阶直接型滤波器的零点数目多而密集,而低阶直接型滤波器的零点数目少而稀疏,因而前者对系数的量化误差要敏感得多。

      实现方案比较· Direct-type使用储存单元最少,但是由于阶数很高,所以零点非常密集,系数的量化误差对零点的影响较大,必须要通过增加系数的量化字长来确保系统的正确· Cascade-type使用的储存单元较多,但是由于每一个子系统都是二阶系统,故量化误差对整个系统的影响较小,可以使用较短的系数量化字长· Decimation-type使用的储存单元较多,由于每一个并联的二阶字系统的误差值对自身影响,故该结构的整个系统误差最小但是由于引入了IIR系统,故在系数量化的时候,必须是极点量化在单位圆之内,否则将使系统不稳定指标:采样频率 系数量化字长 通带截止频率 阻带截止频率 通带纹波系数 阻带衰减 在右上角的幅频特性曲线图(经放大)中,我们可以看到,系数经过量化后,会对幅频特性产生一定的影响但是由于量化比特数非常的高,所以影响不是太大,能符合我们的设计指标右下角展示了量化过后的系数对零极点的影响设计方案由于要求是硬件最少,并且最优,我们采取第一种方案,即:系数高bit量化的直接型结构。

      由于FIR滤波器的系数镜像对称,故将线形相位FIR滤波器的流图改造成如下格式:在上结构中,每一个乘加单元都是将镜像对称的两个值进行MAC运算所以我们在实现输入值x[n]的缓冲时,将缓冲设置成两个镜像对称的缓冲器这样在实现累加时两个buffer可以共用一个指针减计数器(采用减计数器,而不采用加计数器的原因将会在后续的时序关系中得到解释),而不必要使用一个指针加计数器和一个指针减计数器,或者让系数ROM的指针变量产生复杂的运动,这能简化时序设计的复杂性,同时也就节约了硬件;并且采用用镜像对称buffer,再不额外增加硬件的同时,可以降低时钟一半的频率,这是非常重要的虽然增加了一个(24+1)-bit加法器,但是同时也减少了ROM中的计数器(资源共享原理将在ROM模块介绍),并且换来上述的优化设计在上述的原理框图中我们可以看到,所有的MAC都是规则分布的,这种几何上的“美”,正好是时分复用的最好例证假设x[n]的输入时钟clk的速率为,MAC单元的处理速率为,若存在,则可以实现MAC单元的复用,这样就将个MAC单元降低为1个,大大的节约了硬件。

      FIR滤波器的实现框图如下:ROM-cell实现:方案一(直接法)由于该FIR滤波器的性能要求极高,所以在实现时,FIR滤波器的系数非常的多且由以上的“零极点图”可以看出,零点非常的密集,这就修要使用高bit来量化FIR滤波器的系数当采用27-bit量化时才能取得较好的结果这样,理论上需要由于系数众多,所以需要大量的存储单元方案二(缩放法【ScalingTechä】)可以证明,一个十进制数要被二进制数表示时,该十进制数越接近于,产生相同精度时,用于表示该数的二进制位数越少若,其中c为滤波器系数,为量化间距,N为量化比特数假设为相对量化误差,则有:显然,当相对量化误差一定时,系数c越大,所采用的量化比特数N就越少在下图中可以很明显地看出量化间距对相对量化误差的影响很明显,当系数c太小时,很容易被量化间距所造成的量化噪声所淹没,而完全不能恢复所以我们可以先把所有的系数(左图)放大后再进行量化,将放大后的数(右图)进行量化并进行乘法运算,最后将乘法的结果减小倍(这对于硬件实现非常容易,只需要讲结果右移N位即可)但是我们从系数上来观察,发现采用“直接型”FIR滤波器所产生的系数相差非常的大,其动态范围高达,不宜采用单因子缩放。

      这里引入一个叫做缩放矩阵和趋一矩阵的概念:记为缩放矩阵为,趋一矩阵为将所有的系数绝对值被1除,将得到的商项下取整得,由于,所以必有,再计算和,这时将满足分别将P和用二进制量化为t比特、c比特,于是有:由于,所以只需要用较少的比特来量化他就可以满足精度的要求,试验证明:当c=14时,较精确的满足了要求再算得t=5,所以一共只需要采用19比特就可以了这样每个系数就节约了8比特理论上一共节约了误差分析:1. 当采用直接法量化时,N=27,,算得:2. 而采用收缩法量化时,N=14,,算得:3. 可以看出,当采用【ScalingTechä】技术以后,不仅能将量化比特数几乎降为原来的一半,而且最大相对量化误差降为原来的当采用【ScalingTechä】算法时,乘法器所需要的最高速度变为:采用直接法时,MAC单元可以直接采用Booth乘法器,而采用缩放法时需要对Booth乘法器添加移位运算器(shifter)当采用收缩法时,由于最后要将乘法结果进行右移以后才能将结果进行累加,所以会损失一定的精度移位得越多,精度损失得越多直接法收缩法ROMMACROMMAC资源耗费ROMs(64´1)2714LUTs10811479237MAC-cell实现:MAC-cell是由一个乘法器和一个累加器组成,累加器设计较为简单,也不会占用太多的资源,关键在于乘法器的设计。

      在该FIR滤波器中,乘法器要实现的乘法运算,不合理的结构对资源的占用是巨大的,极有可能使资源崩溃!乘法器的实现大致分为3种1. 串行乘法器:资源最节约,但是由较多的延时,适合于大规模;2. 并形乘法器:资源消耗很大,但是速度较快,适合于中规模;3. 查表乘法器:资源耗费巨大,速度最快,只适合于小规模在该设计中,由于乘法运算的位数很高,所以必须采用“串行乘法器”来实现其功能串行乘法器”在算法上是由一个移位寄存器和一个累加器构成,SR负责进行乘数的移位,而ACC负责将移位的二进制数相加,并把结果保留在寄存器中,以供下次使用方案一(校正算法)由于在该MAC运算单元中,涉及到的是两个有符号数的乘法,所以还必须先对有符号数进行编码,然后才能进行运算我们这里采用二进制补码的编码方案,该方案是目前在DSP领域类最为流行的有符号数字表示法考虑到,两个符号相依的数不能直接采用无符号乘法器,所以我们必须先对编码做一定转换后送入无符号乘法器,然后将结果通过另一个与之相反的网络,使结果正确算法框图如下图所示:要对有符号数进行乘法运算,必须要将它们进行编码。

      在编码方案中,二进制补码表示法是目前DSP领域最为流行的有符号数字表示法,在该编码方案中,若最高位为’0’,则表示该数为正数,反之则表示为负数首先将乘数和被乘数的首位进行比较,若它们相同,则直接送到无符号乘法器中进行乘法运算—我们可以证明两个负数相乘和两个正数相乘都可以采用无符号乘法器—得到结果若首位不相同,则将其中的负数通过“负正变换网络”后再将两数送入无符号乘法器,最后将结果在通过“正负变换网络”,进行校正此时得到的结果就是正确的方案二(Booth算法)该算法不仅能处理负数相乘的情况,而且速度较快下图给出了Booth算法的流程:乘数与被乘数分别载入Q和M寄存器内,同时还有一个1比特寄存器,位于Q寄存器最低位的右边,称为Q’乘法的结果出现在A和Q寄存器中A和Q’的初始值为0控制逻辑也是每次扫描乘数的一位(扫描的次数位Q长度-1),但同时也要检查右边的一位若两位相同,则A、Q和Q’的所有位右移一位若两位不同,则根据是1-0还是0-1决定A+M还是A-M;加减之后再右移一位也就是说,右移运算总是要进行的。

      智利的右移是算术移位,即如果移到后,原来得值仍然保留在中Booth Arithmetic 校正算法Booth算法资源消耗(LUTs)339107最大时钟频率(MHz)105.7144.0可以明显地看出,采用Booth算法后,不但能大大的节约资源(339—>107),而且可以大幅的提高最大频率(105.7—>144.0),故在有符号乘法器中都采用Booth乘法器输入缓冲FIFO的读写时钟的时序关系图:在in_clk的上升沿,缓冲F。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.