分布式FIR数字滤波器设计.docVIP

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

VLSI结课设计报告 分布式算法FIR滤波器 学院: 班级: 姓名: 学号: 指导老师: 一、设计目的 1.熟悉FPGA设计基本方法 2.掌握用Verilog语言设计一个数字滤波器 二、设计原理与方法 目前FIR滤波器的实现方法有三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。使用DSP器件实现虽然简单,但由于程序顺序执行,执行速度必然不快。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好。但长期以来,FPGA一直被用于系统逻辑或时序控制上,很少有信号处理方面的应用,其原因主要是因为在FPGA中缺乏实现乘法运算的有效结构。现在这个问题得到了解决,使FPGA在数字信号处理方面有了长足的发展。 (1) 输入数据x[n]可以采用B+1位补码来表示,即 (2) 因为系数h为已知常数,则内积y可以写成: (3) 将式(3)中的第二部分展开,重新分别求和,这也是“分布式算法”名称的由来,可以得到: (4) 这样就可以将式(3)化简为 (5) 计算h[n]xb[n],就是用查找表实现一个映射,然后再将此映射经过相应的二次幂加权,最后即可得到滤波器的输出。 分布式FIR的实现结构 图1给出了分布式FIR滤波器最直接的实现结构,虚线为流水线寄存器。对于小位宽的数据来讲,Da算法不仅速度快,而且所占用的芯片资源也很少。 图1 移位加法DA结构 对于式(4)括号中的每一个乘积项都代表了输入变量的某一位与常量的二进制“与”操作,加号代表了算术和操作,指数因子对括号中的值加权。如果事先构造一个查找表,该表储存了括号中所有可能的组合值,就可以通过所有输入变量相对应的组合向量(xb[N-1], xb[N-2], … ,xb[0])对该表进行寻址。该表结构如表1所示。 表1 构造规则 在LUT实现分布式算法是,由于LUT的规模随着N的增加而呈指数增加,如果滤波器系数N过多,则查表的规模十分庞大。为了减小规模,可以利用部分表计算。由于FIR滤波器是线性滤波器,因此低阶滤波器输出可以相加,由此定义一个高阶滤波器的输出。例如,可以把16输入的查找表分割成4个并行的查找表,如图2所示。依次类推,可以将更大的LUT分割成多个小LUT。如果加上流水线,这一结构的改变并不会降低速度,却可以大大减小设计规模。 图2 简化规模的DA结构 三、FIR滤波器的具体设计方法 本设计是使用Verilog实现一个8阶对称系数的FIR滤波器,其系数分别是41,132,341,510,341,132,41。 该本滤波器的输入为12比特,先把相同系数对应的数据相加,输入到DA滤波器的数据经过符号位的扩展后变成13比特。这样可以看成是一个4阶的FIR滤波器,减小了构造表的复杂度。 设计程序: module fir1(clk,reset,fir_in,fir_in_reg,fir_out,divfre_count_4b,divfre13_clk); parameter S0=1d0; //初始状态 parameter S1=1d1; //处理状态 input clk; input reset; input[11:0]fir_in; output[12:0]fir_out; output[11:0]fir_in_reg; output[3:0]divfre_count_4b; output divfre13_clk; reg[12:0]fir_out; reg[11:0]fir_in_reg; reg[12:0]shift_buf[7:0]; reg[12:0]add_buf[3:0]; //reg[12:0]state_shift_buf[4-1:0]; reg[12:0]state_shift_buf0; reg[12:0]state_shift_buf1; reg[12:0]state_shift_buf2; reg[12:0]state_shift_buf3; wire[3:0]table_4b; wire[11:0]table_out_12b; reg[12:0]sum; reg STATE; reg[3:0]divfre_count_4b; reg di

文档评论(0)

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

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

1亿VIP精品文档

相关文档