- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP-CH4-3讲述
数字滤波是DSP的最基本的应用领域。一个DSP芯片执行数字滤波算法的能力反映了这种芯片的功能大小。 本节主要介绍最常用的数字滤波器——FIR(有限冲激响应)滤波器的’C54x的编程实现方法。 当h(n)= h(N-1-n)或h(n)=-h(N-1-n),则滤波器具有线性相位特性。偶对称线性相位FIR滤波器(N为偶数)的差分方程表达式为: 1). FIR滤波器的结构图 由上可见,FIR滤波算法实际上是一种乘法累加运算。 它不断地输入样本x(n),经延时(Z-1)后,作乘法累加,再输出滤波结果y(n)。 ’C54x片内有I/O资源,CPU通过外部译码可以寻址64K I/O单元。 有两条指令实现输入、输出: PORTR PA, Smem; PA→Smem PORTW Smem,PA; PA←Smem 2) Z-1的实现方法 在DSP芯片中实现z-1(延时一个采样周期)算法是十分方便的。常用的方法有两种: (1).用线性缓冲器实现z-1 线性缓冲器法,又称延迟线法。其特点是: 1)对于N阶的FIR滤波器,在数据存储器中开辟一个N个单元的缓冲区,存放最新的N个输入样本。 2)每读一个样本后,将此样本向下移位。读完最后一个样本后,输入最新样本至缓冲区的顶部。 以上过程,可以用N=6的线性缓冲示意图来说明: 数据存储器 数据存储器 数据存储器 x(n) x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n+1) x(n) x(n-1) x(n-2) x(n-3) x(n-4) x(n+2) x(n+1) x(n) x(n-1) x(n-2) x(n-3) 执行存储器延时指令DELAY,就可以将数据存储单元中的内容向较高地址单元传送,实现Z-1运算: DELAY Smem ;(Smem)→Smem+1 或者 DELAY *AR2- ;AR2指向源地址 用线性缓冲区实现Z -1的优点是:新老数据在存储器中存放的位置直接明了。 (2).用循环缓冲器实现z -1 循环缓冲器法的特点是: 1)对于N阶的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。 2)每次输入新的样本时,以新样本改写滑窗中的最老的样本数据,而滑窗中的其他数据不需要移动。 3)利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址。 下面以N=6的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。 6级循环缓冲区的结构图如下,低地址为顶部: 顶部 底部 初始: 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) 2次: x(n) x(n-1) x(n-2)x(n-3)x(n+2) x(n+1) 循环缓冲区实现Z-1的优点:它不需要移动数据,不存在一个机器周期中要求能进行一次读和一次写的数据存储器,因而可以将循环缓冲区定位在数据存储器的任何位置。因此,尽量采用循环缓冲区。 实现循环缓冲区间接寻址的关键问题是:如何使N个循环缓冲区单元首尾单元相邻?要做到这一点,必须: 1)必须利用BK(循环缓冲器长度)寄存器实现按模间接寻址。 2)为了使循环寻址正常进行,所开辟的循环缓冲区的长度必须是2k>N,其中k是整数,N是FIR滤波器的阶(即横向滤波器的抽头系数的数目)。而且,循环缓冲区的起始地址必须对准2k的边界。 如,N=32时循环缓冲区的边界必须是比32(20h)大的二进制边界,如0080h、00C0h、0100h、0140h均可。 对循环寻址的上述两条要求是通过.ASM文件和.CMD命令实现的。 假定N=32,辅助寄存器用AR3,缓冲区定义名为D_LINE: FIR.ASM x0 .usect “D_CIRCLE”,32 .text STM #32,BK ;BK=循环缓冲区长度 … * AR3+% ;循环寻址 LINK.CMD MEMORY {PAGE 0:…. PAGE 1: RAM: org=0080h,len=100h } SECTIONS { D_CIRCLE:align(64){}>RAM P
文档评论(0)