ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:459.73KB ,
资源ID:8916171      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8916171.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(几种FPGA的FIR滤波器方案详析.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

几种FPGA的FIR滤波器方案详析.docx

1、 FIR 滤波器设计方案 Designer yaoguaiws FIR滤波器的基本结构 一. 横截型(卷积型、直接型) FIR滤波器的差分方程表达式为: 很明显,这就是线形时不变系统的卷积和公式,也就是x[n]的延时级联的横向结构,如下图所示: 由于线形相位FIR滤波器的系数是镜像对称的,所以N阶滤波器系数只需要个储存单元即可。而输入x[n]的值需要N个储存单元,这样总共就需要个储存单元。 二. 级联型

2、> 将H(z)分解成实系数二阶因子的乘积形式: 图中画出了一个FIR滤波器的级联结构,其中每一个二阶因子用一个横截型来表示: 这种结构的每一节控制一对零点,因而在需要控制传输零点时可以采用它。但是这种结构所需要的系数比卷积型的系数h[n]要多,因而需要更多的储存单元。理论上需要个单元储存系数,再加上各单元储存中间结果,结果一共需要个储存单元。 三. 频率抽样型 把一个N店有限长序列的z变换H(z)在单位圆上作N等分抽样,就得到,其主值序列就等于h(n)的离散傅里叶变换。即H(z)的内插公式为:

3、 这个公式就为FIR滤波器提供了另外一种结构,这种结构由两部分组成。 其中的第一部分为(这是一个FIR子系统,是由N节延时单元构成的梳状滤波器): 级联的第二部分为(这是一个由N个一节网络并联而成的IIR子系统): 频率抽样型的结构如图所示: 该系统需要2N个储存单元用来缓存输入的数据,N个储存单元用来储存系数,一共需要花费3N个储存单元。 量化误差分析 理论设计的FIR滤波器系数都是无限精度的,当他们有硬件实现时,必须要量化,这必然引起量化误差。这也就使得理论滤波器和实际滤波器存在一些性能上的差别<由于FIR滤波器只有z=0只一个极点,他在

4、单位圆内,不会出现系统的不稳定,这还算Lucky! > 系数的量化误差对系统的影响,不仅仅和量化字长有关,更是和滤波器的结构密切相关的! 分析: 假设为理论系数,为量化系数,为量化误差,则有: 可以得到由于各的偏差引起的第i个零点位置变化量为(推导过程见:《数字信号处理教程.程佩青.清华大学出版社》): 上式分母中的每一个因子是由一个零点指向的矢量,而整个分母正是所有其它零点指向该零点的矢量积。当系统的零点非常密集时,他们互相的矢量长度就很短,矢量积就更小,就较大。 高阶直接型滤波器的零点数目多而密集,而低阶直接型滤波器的零点数目少而稀疏,因而前者对系数的量化误差要敏感

5、得多。 实现方案比较 · Direct-type 使用储存单元最少,但是由于阶数很高,所以零点非常密集,系数的量化误差对零点的影响较大,必须要通过增加系数的量化字长来确保系统的正确。 · Cascade-type 使用的储存单元较多,但是由于每一个子系统都是二阶系统,故量化误差对整个系统的影响较小,可以使用较短的系数量化字长。 · Decimation-type 使用的储存单元较多,由于每一个并联的二阶字系统的误差值对自身影响,故该结构的整个系统误差最小。但是由于引入了IIR系统,故在系数量化的时候,必须是极点量化在单位圆之内,否则将使系统不稳定。

6、 指标: 采样频率 系数量化字长 通带截止频率 阻带截止频率 通带纹波系数 阻带衰减 在右上角的幅频特性曲线图(经放大)中,我们可以看到,系数经过量化后,会对幅频特性产生一定的影响。但是由于量化比特数非常的高,所以影响不是太大,能符合我们的设计指标。右下角展示了量化过后的系数对零极点的影响。 设计方案 由于要求是硬件最少,并且最优,我们采取第一种方案,即:系数高bit量化的直接型结

7、构。由于FIR滤波器的系数镜像对称,故将线形相位FIR滤波器的流图改造成如下格式: 在上结构中,每一个乘加单元都是将镜像对称的两个值进行MAC运算。所以我们在实现输入值x[n]的缓冲时,将缓冲设置成两个镜像对称的缓冲器。这样在实现累加时两个buffer可以共用一个指针减计数器(采用减计数器,而不采用加计数器的原因将会在后续的时序关系中得到解释),而不必要使用一个指针加计数器和一个指针减计数器,或者让系数ROM的指针变量产生复杂的运动,这能

8、简化时序设计的复杂性,同时也就节约了硬件;并且采用用镜像对称buffer,再不额外增加硬件的同时,可以降低时钟一半的频率,这是非常重要的。虽然增加了一个(24+1)-bit加法器,但是同时也减少了ROM中的计数器(资源共享原理将在ROM模块介绍),并且换来上述的优化设计。 在上述的原理框图中我们可以看到,所有的MAC都是规则分布的,这种几何上的“美”,正好是时分复用的最好例证。 假设x[n]的输入时钟clk的速率为,MAC单元的处理速率为,若存在,则可以实现MAC单元的复用,这样就将个MAC单元降低为1个,大大的节约了硬件。 FIR滤波

9、器的实现框图如下: ROM-cell实现: 方案一(直接法) 由于该FIR滤波器的性能要求极高,所以在实现时,FIR滤波器的系数非常的多。且由以上的“零极点图”可以看出,零点非常的密集,这就修要使用高bit来量化FIR滤波器的系数。当采用27-bit量化时才能取得较好的结果。这样,理论上需要。由于系数众多,所以需要大量的存储单元。 方案二(缩放法【ScalingTechä】) 可以证明,一个十进制数要被二进制数表示时,该十进制数越接近于,产生相同精度时,用于表示该数的二进制位数越少。 若,其中c为滤波器系数,为量化间距,N为量化比特数。假设为

10、相对量化误差,则有: 显然,当相对量化误差一定时,系数c越大,所采用的量化比特数N就越少。在下图中可以很明显地看出量化间距对相对量化误差的影响。很明显,当系数c太小时,很容易被量化间距所造成的量化噪声所淹没,而完全不能恢复。 所以我们可以先把所有的系数(左图)放大后再进行量化,将放大后的数(右图)进行量化并进行乘法运算,最后将乘法的结果减小倍(这对于硬件实现非常容易,只需要讲结果右移N位即可)。但是我们从系数上来观察,发现采用“直接型”FIR滤波器所产生的系数相差非常的大,其动态范围高达,不宜采用单因子缩放。这里引入一个叫做缩放矩阵和趋一矩阵的概念:记为缩放矩阵为,趋一

11、矩阵为。 将所有的系数绝对值被1除,将得到的商项下取整得,由于,所以必有,再计算和,这时将满足。分别将P和用二进制量化为t比特、c比特,于是有: 由于,所以只需要用较少的比特来量化他就可以满足精度的要求,试验证明:当c=14时,较精确的满足了要求。再算得t=5,所以一共只需要采用19比特就可以了。这样每个系数就节约了8比特。理论上一共节约了。 误差分析: 1. 当采用直接法量化时,N=27,,算得: 2. 而采用收缩法量化时,N=14,,算得: 3. 可以看出,当采用【ScalingTechä】技术以后,不仅能将量化比特数几乎降为原来的一半,而且最大相对量化误差降为原来

12、的。 当采用【ScalingTechä】算法时,乘法器所需要的最高速度变为: 采用直接法时,MAC单元可以直接采用Booth乘法器,而采用缩放法时需要对Booth乘法器添加移位运算器(shifter)。当采用收缩法时,由于最后要将乘法结果进行右移以后才能将结果进行累加,所以会损失一定的精度。移位得越多,精度损失得越多。 直接法 收缩法 ROM MAC ROM MAC 资源耗费 ROMs(64´1) 27 14 LUTs 108 114 79 237 MAC-cell实现: MAC-cell是由一个

13、乘法器和一个累加器组成,累加器设计较为简单,也不会占用太多的资源,关键在于乘法器的设计。在该FIR滤波器中,乘法器要实现的乘法运算,不合理的结构对资源的占用是巨大的,极有可能使资源崩溃!乘法器的实现大致分为3种 1. 串行乘法器:资源最节约,但是由较多的延时,适合于大规模; 2. 并形乘法器:资源消耗很大,但是速度较快,适合于中规模; 3. 查表乘法器:资源耗费巨大,速度最快,只适合于小规模。 在该设计中,由于乘法运算的位数很高,所以必须采用“串行乘法器”来实现其功能。“串行乘法器”在算法上是由一个移位寄存器和一个累加器构成,SR负责进行乘数的移位,而ACC负

14、责将移位的二进制数相加,并把结果保留在寄存器中,以供下次使用。 方案一(校正算法) 由于在该MAC运算单元中,涉及到的是两个有符号数的乘法,所以还必须先对有符号数进行编码,然后才能进行运算。我们这里采用二进制补码的编码方案,该方案是目前在DSP领域类最为流行的有符号数字表示法。考虑到,两个符号相依的数不能直接采用无符号乘法器,所以我们必须先对编码做一定转换后送入无符号乘法器,然后将结果通过另一个与之相反的网络,使结果正确。算法框图如下图所示: 要对有符号数进行乘法运算,必须要将它们进行编码。在编码方案中,二进制补码表示法是

15、目前DSP领域最为流行的有符号数字表示法,在该编码方案中,若最高位为’0’,则表示该数为正数,反之则表示为负数。 首先将乘数和被乘数的首位进行比较,若它们相同,则直接送到无符号乘法器中进行乘法运算—我们可以证明两个负数相乘和两个正数相乘都可以采用无符号乘法器—得到结果。若首位不相同,则将其中的负数通过“负正变换网络”后再将两数送入无符号乘法器,最后将结果在通过“正负变换网络”,进行校正。此时得到的结果就是正确的。 方案二(Booth算法) 该算法不仅能处理负数相乘的情况,而且速度

16、较快。下图给出了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

17、 339 107 最大时钟频率(MHz) 105.7 144.0 可以明显地看出,采用Booth算法后,不但能大大的节约资源(339—>107),而且可以大幅的提高最大频率(105.7—>144.0),故在有符号乘法器中都采用Booth乘法器。 输入缓冲FIFO的读写时钟的时序关系图: 在in_clk的上升沿,缓冲FIFO写入一个外界数据x[n],在该个in_clk的上升沿余下一个in_clk的上升沿之间,FIFO中的数据经过out_clk时钟将FIFO中的N个数据读出倒下一个模

18、块进行运算。由以上关系可以得出,out_clk的频率必须是in_clk频率的N倍。当Reset信号有效时,FIFO被清零,并且读写指针都指向首地址。 coe-ROM读时钟与FIFO读时钟的时序关系图: 由于从缓冲FIFO中取出的数需要和FIR滤波器的系数相乘,所以ROM时钟必须要和FIFO读时钟同步,才能在下一个模块中进行MAC运算。当Reset系号有效时,ROM指针指向首地址。 MAC单元系统运算时钟与移位时钟的时序关系图: 在MAC单元的设计中,采用的是串行乘法器,由于系数被量化成27-bit,所以移位寄存器的

19、时钟频率必须是累加器频率的27倍,才能够完成一次MAC运算。累计器中存储的数据不仅要在reset 信号的作用下被清零,而且要在下一个数据x[n]输入FIFO进行下一个y[n]的数出之前必须被清零。 由于三个运算单元存在事实上的前后关系,所以这些关系必须要从时序上体现出来,这和采样时间密切相关。系统在实际运行的过程中,先将外界的一个信号x[n]采样进来,然后将数据FIFO的镜像相加,最后将和数与系数ROM一起送到MAC单元移位相乘。由此也就决定了,采样时间最优先,紧接着是FIFO的“镜像相加”,然后紧接着是MAC单元的移位相乘。 在以上的时序关系图中正好体现了这个特点:当reset 信号变为

20、无效以后的紧接着的上升沿中(图中前面3个采样点),将数据采样并压入FIFO中,并且执行FIFO的镜像相加。由于相加时钟和采样时钟同步,若使用加计数器(用来作为FIFO读指针),第一次是读首单元。由于使用非阻塞赋值(<=),所以并没有把这次的x[n]读出来,而读出的是上一次存在FIFO中的x[n]!所以应该采用减计数器,“镜像相加”操作从x[n-(N/2-1)] + x[n-N/2]开始,这就是为什么要采用减计数器的原因。 当每一次“镜像相加”操作完成后,就应该是MAC单元的移位相乘,它必须紧接着“镜像相加”操作,它并不能在西一个上升沿采样,这样会让最后的一个bit无

21、法进行移位操作,所以移位相乘的采样时间被安排到,紧接着的下一个上升沿。在shift_clk的上升沿采样,并且仅当acc_clear信号有效时,MAC中的累加器执行一次清零操作,表示本次的整个y[n]以运算完毕。 ModelSim 仿真 ctrl_cell模块仿真: 当reset信号有效时(reset=0),将所有的时钟信号清零(mac_clk=0 / in_clk=0);当reset信号有效时,使得所有的时钟信号开始工作。此时当mac_clk的上升沿出现时,开始进行FIFO和ROM的数据读出,并送入MAC单元进行下一步的处理。在MAC中,由于乘法器是采用的移位累加器来实现

22、的,所以必须先要将外面的数据写入以后才能开始进行移位累加运算。由于MAC-cell中的Booth-Multiplier是下降沿时钟有效,但是我们看到,由于reset信号的失效时刻到再次有效与系数采样时钟 (mac_clk) 之间有一个base_clk空操作信号,所以这会产生错位移位运算! 这里采用“动态锁死”技术【DynamicCaptureä】来防止信号出现上面的错位移位运算。当时使用该技术后,产生一个新的全局清零信号:reset_d。有上图可以看出,如果用reset_d作为时钟清零信号,第一个有效base_clk信号都将会紧接着出现在第一个有效mac_clk信号之后,这样就防止了信号的错

23、位运算。 该图为上述时钟模块的全局仿真图,clear信号为MAC中累加器的清零信号(并非毛刺!这可以在第一幅图中很清楚地看到)。 coe_cell模块仿真: “index”为外界地址指针输入,它为ROM提供地址单元信号。可以看出在”index”信号的作用下,FIR滤波器的悉数被一个一个地“读”出来(图中的coe_out信号)。 fifo_data 模块仿真 该仿真中可以看到,外界向FIFO中写数据x[n],并且读指针”index”才开始工作—对FIFO进行一次循环取数,即当”index”每一次不同的取值,都要从FIFO中读一次数据”data

24、out”。由于在”in_clk”第一次写入的数据为”000000” 由于第一次写入的数据为”000000”,所以第一次读出的数据为”000000+000000=000000”。第二次写入的数据为”00198e”。 由于第二次写入的数据为”00198e”,所以第二次读出的数据为”00198e+000000=00198e”。第三次写入的数据为”0032db”。然后紧接着读出:”000000+000000=000000”……。 第三次读出的数据为”0032db+000000=0032db”和”00198e+000000=00198e”。第四次写入的数据为

25、004ba7” …… 全景仿真图 结束语 由于采用高度的时分复用模型,故能采取最少的硬件资源实现该高性能FIR滤波器,但是高度的时分复用对时序设计提出了较高的要求,在考虑延迟(包括:器件延迟、路径延迟,等)的问题上必须要仔细,否则可能达不到时序上的要求,这需要仔细的分析每个模块的关键路径,并设置一些约束条件来保证时序关系的正确性。 Resource Estimation ctrl_cell fifo_cell coe_cell mac_cell Clock Names base_clk in_clk ma

26、c_clk in_clk mac_clk shift_clk Requested frequency 55MHz 2MHz 8MHz 2MHz 8MHz 55MHz Estimated frequency 280.1MHz 619.6MHz 79.0MHz NA 136.8MHz 99.1MHz FD 2 uses 14 uses FDC 1 uses 2714 uses 24 uses FDE_1 5 uses 39 uses FDR 4 uses 67 uses GND 2 us

27、es 2 uses MULT_ADD 23 uses MUXCY_L 23 use 61 uses MUXF5 731 use 5 uses 21 uses MUXF6 223 uses 2 uses VCC XORCY 1 uses 62 uses I/O primitives 5 uses 56 uses 25 uses 70 uses I/O Register bits 24 Register bits not including I/Os 15 2741 120 14 Total LUTs 17 1578 79 237

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服