基于SOPC的FIR数字滤波器的设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于SOPC的FIR数字滤波器的设计

基于SOPC的FIR数字滤波器的设计 摘要:为了探讨如何优化设计数字滤波器系统课题,本文首次提出了利用可编程的片上系统(SOPC)技术,采用基于SOPC的软硬件协同开发方法,设计了一个高速的、软件灵活配置的一个片上FIR系统,同时给出了硬件系统设计方法和软件系统的设计流程,还探讨了软硬件协同仿真和验证方法。在此系统上,用软件可以定制各种类型的FIR滤波器系统,包括自适应的FIR滤波器系统,又能满足系统的高速的要求。FIR (Finite Impulse Response有限冲激响应)数字滤波器在数字通信系统中,被大量的用于实现各种功能,如低通滤波、带通选择、抗混叠、抽取和内插等。 ??? 目前FIR滤波器的实现方法有三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。使用DSP器件实现虽然简单,但由于程序顺序执行,执行速度必然不快。可编程逻辑器件虽然可以并行处理数据和定制不同精度要求,但是它很难实现算法复杂的滤波器。随着当今集成电路的高速发展,一种新的可编程的片上系统技术(SOPC)也发展起来,这里我们用SOPC技术结合传统数字滤波器的两种实现方法,既可以很好满足数字处理的高速的要求,又容易实现复杂的算法。 1 FIR滤波器的原理与设计 ??? 对于一个FIR滤波器系统,它的冲激响应总是有限长的,其系统函数可以记为: ? 最基本的FIR滤波器可用下式表示: ? 其中:x(n)是输入采样序列,h(n)是滤波器系数,L是滤波器的阶数,y(n)表示滤波器的输出序列。用卷积来表示: ? ??? 图1中显示了一个典型的直接一型的3阶FIR滤波器,其输出序列y(n)满足下列等式: y(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+h(3)x(n-3) ??? 在这个FIR滤波器中,总共有3个延时结、4个乘法单元、一个4输入的加法器。如果采用普通的数字信号处理器(DSP Processor)来实现,只能采用顺序的方式执行延时、乘加操作,不可能在一个DSP处理器指令周期完成,必须用多个指令周期完成。但是,如果采用FPGA来实现,就可以采用并行结构,在一个时钟周期内得到一个FIR滤波器的输出。而且从图1中可以看出所示的电路结构是一种流水线结构,这种结构在硬件系统中有利于并行高速运行。 ? 图1 3阶FIR滤波器结构 ??? 在SOPC中的硬件模块可以独立成为一个功能块,也可成为SOPC系统的一个组成模块,甚至可以成为Nios嵌入式系统中一条自定义的指令对应的加速器模块。以下将设计一个可输人参数、方便调用、支持DMA方式的16阶FIR滤波器模块,作为SOPC系统的一个组成模块。 ??? 为了使该滤波器方便来回调用,在Xin 输入后插入一个延时,同时让Z0的系数项h(0)恒为0。FIR滤波器处理的往往是信号流,增加延时单元不会影响处理结果,只是让系统增加了一个时钟周期。对于该FIR滤波,其系统函数表示为: H(z)=h(1)z-1 +h(2)z-2+h(3)z-3+h(4)z-4 ??? 其中h(n)作为输入端口。由于浮点运算所需的硬件资源太大,所以将参数进行量化处理后再输入到端口。 ??? 采用4个4阶的FIR滤波器级连在一起构成一个16阶的FIR滤波器,有16个参数输入端口,系统依然是流水线的结构,其系统函数表示为: ? 据此设计一个4阶的FIR滤波器模块: module FIR_Rank4(clk,rst,chipselect,fir_in,fir_out,coff1,coff2,coff3,coff4) ??? 这个模块将作为下面设计的l6阶的FIR滤波器的子模块来调用,它的接口的定义:clk系统时钟、rst同步复位而且可以清空所有的参数寄存器、chipselect是片选信号、fir_in是输入的处理信号、fir_out是输出处理完的信号、coff_x是系统的滤波系数。 ??? 为了更加有效地利用总线资源,在FIR滤波器单元加入缓存器,在数据输入端加人1K16位宽的FIFO,在数据输出端加入同样大小的FIFO。 整个FIR滤波器的硬件模块可分为:一个管理控制模块MCU、一个l6阶的FIR模块和2个FIFO模块,如图2所示。 图2 FIR滤波器系统 ??? FIFO模块是利用FPGA的Block RAM生成的,加入输入输出两个FIFO可以让FIR系统支持DMA,提高整个系统的效率。FIR_X是一个四阶的 FIR滤波器,串连四个就组成了一个16阶的流水线架构的FIR滤波器。MCU是这个系统的核心模块,它要负责控制内部的FIFO、FIR_X动作,产生控制时序,给CPU反馈内部各个模块的状态。 2 基于Nios的FIR滤波器的软

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档