版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FIR滤波器程序设计中文摘要21世纪是数字化的时代,随着信息处理技术的飞速发展,DSP(数字信号处理器)技术逐渐发展成为一门主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛,工程上常用它来做信号处理、数据传送和抑制干扰等。同时DSP的出现和迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。 本课题主要应用MATLAB软件设计FIR数字滤波器,并对
2、所设计的滤波器进行仿真;应用DSP集成开发环境CCS调试汇编程序,用TMS320C5402来实现了FIR数字滤波。具体工作包括:对FIR数字滤波器的基本理论进行了分析和探讨;采用MATLAB软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对FIR低通数字滤波器进行前期的设计和仿真;系统介绍了TI公司TMS320C54x系列数字信号处理器的硬件结构、性能特点和DSP的集成开发环境CCS;应用DSP集成开发环境CCS调试汇编程序,用TMS320C5402来实现了FIR数字滤波。关键词:频率抽样, FIR滤波器,Matlab,TMS320C5402,CCS,仿真IFIR滤波器
3、程序设计1设计任务和目的1.1设计题目FIR滤波器程序设计1.2设计目的1)掌握DSP编程的过程和指令的使用;2)熟悉运用CCS集成开发环境进行仿真和TMS320C5402的基本功能和使用方法;3)熟悉FIR滤波器的实现方法和设计过程。2设计思路DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器。由于它由具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统。数字滤波器的设计可分为5个独立的阶段:滤波器技术规范、系数计算、实现结构、误差分析和滤波器实现。滤波器技术规范与应用有关,且应该包括振幅和相位特性的规范。系数计算本质上就是求出满足所期望的规范的h(n)值。
4、计算FIR滤波器系数最常用的方法有三种:窗口方法,频率抽样方法,最佳方法。窗口方法是最容易的,但是缺乏灵活性,特别是当通带波纹和阻带波纹不同时更是如此。频率抽样方法非常适合FIR滤波器的递归实现,频率抽样法也适合那些除了要求标准频率选择性滤波器(低通、高通、带通和带阻)之外的滤波器。最佳方法是最高效和灵活的一种设计方法。三中最常用的FIR滤波器结构是横向结构、频率抽样结构和快速卷积结构。横向结构包含一个使用滤波器系数的直接卷积;频率抽样结构直接同系数计算的频率抽样方法相联系。结构的选择与具体的应用有关。此处选择横向结构。长字长的或者高阻带衰减的FIR滤波器的性能可能会受到有限字长的影响。例如,
5、系数量化后他们的频率响应可能会发生变化。因而应当对这些滤波器的特性进行检查以确保允许的合适的字长。在完成好前四步后,通常要考虑实现问题,以及考虑软件编程或选择结构的硬件实现。而我们主要考虑软件的实现过程。3 FIR滤波器设计步骤流程图重新设计结构开始性能规范滤波器系数计算实现结构有限字长效应分析和解决方法硬件、软件的工程实现+测试停止重新计算重新制定规范图2-1 FIR滤波器设计步骤流程图4软件流程图进入qgf.asm程序设置小数乘法DP指向XNtable指向AR1设置缓冲区y指向AR2利用MAC指令完成乘法累加保持结果弹出栈中对于寄存器的值程序返回图4-1 qgf.asm程序流程5设计部分5
6、.1硬件的整体设计和规划CPU选择TI公司的16位定点DSP,具体型号为TMS320C5402是为实现低功耗、高性能而专门设计的定点DSP芯片,其主要应用时无限通信系统等。TMS320C5x的主要特点包括:运算速度快,内部有一个算术逻辑单元,2个累加器、2个加法器、1个乘法器、1个桶形移位器、4条内部总线和2个地址产生器。内部还集成了维特比加速器,用于提高维特比编译码的速度。它是低功耗方式,可以在3.3V或2.7V电压下工作,3个低功耗方式可以节省DSP的功耗,TMS320C5402特别适合于无线移动设备。5.2 FIR滤波器的特点数字滤波器是由一系列滤波器系数定义的方程。这些方程构成数字滤波
7、程序部分,滤波程序接收原始数据,并且输出滤波后的数据。这种程序的最大优点在于滤波器的再设计不需要硬件方面的更改,只要简单地改变滤波器的系数表即可完成滤波器特性的修改。数字滤波程序可在任何处理器上实现,但最有效的是在专门设计用来进行高速滤波或其他DSP处理的硬件上实现。DSP硬件可使非常复杂的任务在极短的时间内完成,因此它经常作为大计算量的系统核心。DSP具的有较大灵活性,可以进行编程或再编程来执行许多功能而不需要修改硬件,这或许是DSP系统最主要的特征,同时拥有优良的性能,DSP可以执行许多模拟系统不可能完成的性能,例如可以实现线性相位响应,复杂的自适应滤波算法可以利用DSP技术来实现。5.2
8、 FIR滤波器的结构选择首先对其结构进行选择,结构的选择取决于多种因素和折中考虑,其中包含实现的容易程度,也就是软件和硬件的复杂度,求冲击响应或传递函数系数的难易程度,以及它们对系数量化的相对敏感度。在实际中,系数描述的精度受限于所用处理器的字长。使用有限的位数来表示描述每个系数趋向于将零从期望的位置移出,这会导致频率响应上的偏差。响应中偏差的大小取决于位数和所用的结构。横向结构非常易于编程,且可由大多数DSP芯片有效的实现,因为这些芯片有针对横向FIR滤波器的指令。直接构造是实现非递归滤波器的最常用方法,它的最主要的优点是其简单性,要求的器件最少,且数据的存储不复杂。串联结构对系统误差和量化
9、噪声不敏感,但是系数值需要做更大的努力才能求出,且程序设计不适合DSP芯片的结构。快速卷积结构能提供出比他方法更好的计算优势,但需要有效的FFT。对于窄带频率选择滤波器来说,频率抽样结构比等价的横向结构计算更有效,在此滤波器中,仅有相对少量的频率抽样值不为零,因此每输出一个值仅需非常少的乘法。然而,频率抽样结构可能要求更为复杂的编程,因为在其差分方程中固有的对数据的复杂索引。为了避免稳定问题,频率抽样结构的零点和极点应该位于单位圆稍内一点。当要求FIR滤波器递归实现时,这种结构是一种自然的选择。这种结构易于模块化,并有利于并行处理。总之,除非规范要求采用频率抽样结构,或者需要计算数据的谱采用快
10、速卷积,那么采用横向结构不失为一个好的选择。采用横向结构,对于这种结构,滤波器的输入x(n)与输出y(n)之间的关系如下:下面两个公式刻画出基本的FIR滤波器 (5-1)对式(4-1)进行Z变换,整理后可以得到FIR滤波器的传递函数为: (5-2)图5-1所示是FIR滤波器的一般结构。图5-1 FIR滤波器结构图式中h(i)(i=0,1,N-1),是滤波器的冲击响应系数。符号代表一个抽样延迟或单位时间延迟。对于横向结构,每一个输出抽样值y(n)的计算要求:N-1个存储位置来保存N-1个输入抽样值;N个存储位置来保存N个系数;N个乘法器;N-1个加法器。H(z)是滤波器的传递函数,N是滤波器长度
11、,即滤波器系数的数目。式(5-1)是FIR时域差分方程,它使用非递归形式描述了FIR滤波器:当前输出信号y(n)只是过去和当前的输入值x(n)的函数。那么做x(n-1)到x(n-N)的加权和。当FIR滤波器利用这种形式实现时,即直接根据(5-1)式进行计算,那么滤波器总是稳定的。式(5-2)是滤波器的传递函数,它提供了分析滤波器的一种方法,例如评估频率响应。FIR滤波算法实际上是一种乘法累加运算。它不断输入样本,经延时,作乘法累加,再输出滤波结果y(n)。系统的单位冲激响应h(n)在有限个n值处不为零; 系统函数H(z)在|z|>0处收敛,在|z|>0处只有零点,有限z平
12、面只有零点,而全部极点都在z=0处。、结构主要是非递归结构,FIR滤波器最主要的特点是没有反馈回路,因此它是无条件稳定系统。它的单位脉冲响应h(n)是一个有限长序列,脉冲响应顾名思义,滤波器的脉冲响应就是滤波器对脉冲输入的响应;换句话讲,当滤波器的输入为单位脉冲时,滤波器的输出就是单位脉冲响应。脉冲响应反映了滤波器的基本特性,由于所有的数字信号可以由脉冲函数构成,所以脉冲响应可用来求各种输入时的输出。如果h(n)是实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则滤波器具有线性相位特性的充要条件。对于非递归FIR滤波器,系数的存储空间和算术运算次数
13、几乎减少了2倍,对于递归滤波器系数转变为简单整数,提高了处理速度。在线性相位滤波器中,所有频率分量通过滤波器时会遇到同样大小的延迟,即没有相位失真。5.3 FIR滤波器的延迟用线性缓冲区法实现在这里用线性缓冲区法实现 ,它的优点是新老数据在存储器中存放的位置直接明了,算法便于理解,以幅度特性随意设计的同时,保证精确、严格的线性相位,由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤波器没有不稳定问题,FIR滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归型结构中的极限震荡等不稳定现象,误差较小,可以用FFT实现过滤信号,可大大提高运算效率。其特点是:对于N级的
14、FIR滤波器,在数据存储区中开辟一个称之为滑窗的N个单元的缓冲区,存放最新的N个输入样本。 从最老的样本开始,每读一个样本后,将此样本向下移位。读完最后一个样本后,输入最新样本至缓冲区的顶部。以上过程,可以用N=6的线性缓冲区存储器图来说明,如图5-2所示。图中线性缓冲区顶部是存储器的低地址单元,底部为高地址单元。参看图5-2(a),当第一次执行 时,由ARx指向线性缓冲区的底部,并开始取数、运算。每次乘法累加运算之后,还要将该数据向下(高地址)移位。求得y(n)以后,从I/O口输入一个新数据x(n+1)至线性缓冲区的顶部单元,再将ARx指向底部单元,开始第二次执行 ,如图5-2(b
15、)所示。之后,再计算y(n+2)依次循环下去。(b)(a)(c)PORTRPORTR数据存储器X(n)X(n-1)X(n-2)X(n-3)X(n-4)X(n-5)X(n)X(n-1)X(n-2)X(n-3)X(n-4)X(n+1)X(n)X(n-1)X(n-2)X(n-3)X(n+2)X(n+1)线性缓冲区顶部数据存储器数据存储器*ARx-*ARx-*ARx-图5-2 N=6的线性缓冲区存储器图5.4 误差问题因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应。所产生的误差主要包括:系数量化引起的误差以及运算过程中的舍入误差,还有溢出误差。任何一种近似方
16、法得到得滤波器系数通常精确到小数点的几位。系统量化误差:为了实现滤波器,滤波器系数必须有固定的位数表示并且这个固定的位数常常是由使用的处理器的字长决定的。滤波器中我们使用16位DSP处理机,则滤波器系数就由16位字长来表示,然而这样做会自动的引入误差,这种误差使得有限字长滤波器的频率响应偏离期望的响应。在某些情况下,这种偏离意味着初始的规范不再满足。系数量化在本质上将未量化的滤波器变换成一套新的规范,由于它会使阻带或通带波纹衰减,然后用新规范来求系数。这种变换必须是系数量化后仍满足原来的规范。舍入误差:滤波器的输出是由h(i)和x(n-i)的乘积和得到的。每一个相乘后,积包含的位数要比h(i)
17、和x(n-i)都多。例如12位输入乘以16位系数,结果有28位长,在存储到存储器之前需要将该28位的结果量化回16位,这种量化产生误差,它的影响类似于ADC噪声,但是可能更为严重。量化算术运算结果常用的方法是把结果截断,得到高的有效位而放弃低位,或者对结果舍入,即选择最接近未舍入结果的高位数据,这是通过给结果加1/2LSB来实现的。用两倍长的寄存器准确的表示所有的乘积,然后在得到最终和后对结果进行舍入,即在得到y(n)后对y(n)做舍入,这样可使舍入误差达到最小。这种方法要比另一种在求和前每个积都做舍入引入的误差小。溢出误差发生在两个数求和时,通常符号相同的两个大数之和会超出允许的字长。如果输
18、出y(n)超出允许的限制,那么很显然,样本值会发生错误,这需要采取一定措施避免这种情况发生。在用定点DSP时,产生误差是不能避免的,但是可以通过一些方法减小误差。如,可以用两个存储单元来表示一个数,运算时使用双字运算;可以根据需要要将滤波器系数都用双字表示,也可以只将一半的系数用双字表示,视需要而定。FIR数字滤波器主要采用非递归结构,因而在有限精度的运算中都是稳定的。除了有限字长效应以外,不同结构引入的误差也有所不同。在实际设计中,要注意实现中的误差问题。在选择不同的结构时,应考虑它们所引入的误差,并用高级语言进行定点仿真,以比较不同结构下误差的大小,从而作出合理选择。5.5程序分析这部分为
19、未初始化段,在TMS320C54x的目标存储器中保留空间以供程序运行过程中的变量作为临时存储空间使用。在目标文件中,在这些段中没有确切的内容,通常将他们定位到RAM区中,其中未初始化段为命令定义,由.usect汇编器伪指令来编写语法,符号对应于保留的存储空间第一个字的变量名称,这个符号可以在其他段引用,为每一个符号留一个存储空间,程序如下:.title "qgf.asm" .mmregsSTACK .usect "STACK",40H .def _main .bss y,19XN .usect "XN",1XNM1 .usect &q
20、uot;XN",1XNM2 .usect "XN",1XNM3 .usect "XN",1XNM4 .usect "XN",1XNM5 .usect "XN",1 .XNM18 .usect "XN",1H0 .usect "H0",1H1 .usect "H0",1H2 .usect "H0",1.H3 .usect "H0",1H4 .usect "H0",1H5 .usect &q
21、uot;H0",1H18 .usect "H0",1 给程序中的未初始化部分保留存储空间后为每一个保留存储空间赋值,在table中给出数值,赋值过程先把XN送到AR1,table中的值依次给*AR1中,循环28次每循环一次之后*AR1加一,赋值完成之后把指针DP指向#XN,y送入AR2中,程序如下: .text_main: SSBX FRCT STM #XN,AR1 RPT #37 MVPD table,*AR1+STM #XN+18,AR3 STM #H0+18,AR4 STM #30,BK STM #-1,AR0 LD #XN,DP STM #y,AR2具体运
22、算过程如下:FIR1: LD XNM18,T ;x(n-18)放入T中 MPY H18,A ;A=*x(n-18) LTD XNM17 ;x(n-17)放入T中 ;x(n-17) 放入 x(n-18) MAC H17,A ;A=A+*x(n-18) LTD XNM16 MAC H16,A LTD XNM15 MAC H15,A LTD XNM14 MAC H14,A LTD XNM13 MAC H13,A LTD XNM12 MAC H12,A LTD XNM11 MAC H11,A LTD XNM10 MAC H10,A LTD XNM9 MAC H9,A LTD XNM8 MAC H8,A
23、 LTD XNM7 MAC H7,A LTD XNM6 MAC H6,A LTD XNM5 MAC H5,A LTD XNM4 MAC H4,A LTD XNM3 MAC H3,A LTD XNM2 MAC H2,A LTD XNM1 MAC H1,A LTD XN MAC H0,A STH A,*AR2+ ;保存y(n) ST #0H,XN B FIR1 ;循环 .END 链接器命令文件的编写和使用:链接器命令文件是将连接的信息放在一个文件中,这样,如果需要多次使用同样的链接信息可以方便的调用。在命令文件中使用两个重要的伪指令MEMORY和SECTIONS,指定实际应用中的存储器结构和进行地
24、址的映射,其中MEMORY用来指定目标存储器结构,SECTIONS用来控制段的构成与地址分配。MEMORY伪指令的PAGE(页面)选项来分开构成程序存储器区域和数据存储器区域的地址空间。在默认的方式下,PAGE0为程序存储器,PAGE1为数据存储器链接器将这两个空间当做完全分开的存储器空间来处理。伪指令SECTIONS可说明如何将输入的段结合成输出段,也可在执行程序中定义输出段,同时指定输出段放在存储器中的位置,并且允许对输出段重新命名。MEMORY伪指令一般和SECTIONS伪指令一起使用,控制输出段的分配。在用MEMORY伪指令定义目标存储器的模型之后,可以使用段伪指令SECTIONS将输
25、出段分配到具有指定名称或属性的存储器中,将.text和.data段分配进命名为ROM的存储器区间,而将.bss段分配进称为SPRAM的区间。MEMORYPAGE 0: /* program space */EPROM: org = 0x0E000, len = 0x0800VECS: org = 0x0FF80, len = 0x0080PAGE 1: /* data space */ SRAM: org=0x60,len=0x0200DRAM: org = 0x0280, len = 0x1000 /* */SECTIONS .vectors : > VECS PAGE 0 /* in
26、terrupt vector table */.text : > EPROM PAGE 0 /* program code */.data : >EPROM PAGE 0 /* initialized data */.bss : > SRAM PAGE 1 /* uninitialized vars for applications */stk : > DRAM PAGE 1其中直接寻址线性缓冲区数据分配如下图:XN数据存储器X(n)X(n-1)X(n-18)h0h1h18y(n)yXNM1XNM18H0H1H18图5-3 直接寻址线性缓冲区数据分配5.6计算机芯片上实现过程CCS集成开发环境:CCS是TI推出的用于开发其DSP芯片的集成开发环境。CCS是一个开发环境,可以通过设置不同的驱动程序来完成对不同环境的支持。它的配置过程很简单,双击桌面上的“Setup CCS2(C5000)”图标使用C54xx软件仿真器,则选择C5402 Device Simulator选项,然后单击Import按钮,单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育心理学强化训练试卷A卷附答案
- 2024年度山西省高校教师资格证之高等教育法规模拟考试试卷B卷含答案
- 2024年家具成套生产线项目资金申请报告代可行性研究报告
- 2024年-2025年《农作物生产技术》综合知识考试题库及答案
- 2024专项产品线唯一供货商协议
- 儿童教育服务协议:2024定制
- 2024照明系统仓库安装协议条款
- 2024工程总承包深度合作协议
- 2024年赔偿问题解决协议模板
- 安全生产管理员的职责与权益明细协议
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- JT-T-617.1-2018危险货物道路运输规则第1部分:通则
- 教育新篇章:数字化转型
- 个人住房贷款提前还款月供及节省利息EXCEL计算
- GA/T 1073-2013生物样品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、异丙醇和正丁醇的顶空-气相色谱检验方法
- 生产计划与排产管理
- 设施农业用地备案申报材料(全套表格)
- 双培养工作实施方案3页
- 全身体格检查评分标准(表)
- 选矿浮选药剂分类及机理
评论
0/150
提交评论