Part 8 典型程序设计_第1页
Part 8 典型程序设计_第2页
Part 8 典型程序设计_第3页
Part 8 典型程序设计_第4页
Part 8 典型程序设计_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计 本章将要讲解通信与信号处理中常见的本章将要讲解通信与信号处理中常见的下列几种具有代表性的算法在下列几种具有代表性的算法在C54x芯芯片中的具体实现方法:片中的具体实现方法: 卷积卷积 有限冲激响应有限冲激响应(FIR)数字滤波器数字滤波器 无限冲激响应无限冲激响应(IIR)数字滤波器数字滤波器 快速傅立叶变换快速傅立叶变换(FFT)第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计 目录:目录:8.1 卷积运算的卷积运算的DSP实现实现8.2 数字滤波器的数字滤波器的DSP实现实现 8.3 IIR滤波器的滤

2、波器的DSP实现实现8.4快速傅立叶变换的快速傅立叶变换的DSP实现实现第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.1 卷积运算的卷积运算的DSP实现实现 数字卷积运算通常采用两种方法:数字卷积运算通常采用两种方法:线性卷积线性卷积圆卷积圆卷积第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.1.1信号的卷积信号的卷积函数函数f(t)与与h(t)的卷积积分,用符号的卷积积分,用符号“ ”表示,即:表示,即:( )( )( )( ) ()y tf th tfh td 读作读作f(t)与与h(t)的卷积积分,简称卷积。的卷积积分,简称卷积。第第8章

3、章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.1.2 离散系统的卷积分析离散系统的卷积分析 1.离散时间信号的时域分解离散时间信号的时域分解()k i根据单位序根据单位序列列及单位移位序列及单位移位序列 的选择性,的选择性,( )k可将任意序列可将任意序列f(k)用单位序列及其移位序列表示,即:用单位序列及其移位序列表示,即: ( )( 1) (1)(0) ( )(1) (1)() ()if kfkfkfkf ik i 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计例:例:如图所示离散时间序列,可表示为:如图所示离散时间序列,可表示为:( ) 0 (0)

4、 1 (1) 2 (2) 3 (3)f kkkkk 1230123第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2.离散系统的卷积计算过程离散系统的卷积计算过程1( )f k2( )f k1( )f k2( )f k设两个离散时间信号为设两个离散时间信号为和和,定义,定义与与的卷积和运算为:的卷积和运算为: 1212( )( )( )()kfkfkf i fki与卷积积分一样,离散卷积也可通过图解法来计算,与卷积积分一样,离散卷积也可通过图解法来计算,分为反折、平移、相乘、取和等过程。分为反折、平移、相乘、取和等过程。 第第8章章 数字信号处理典型算法程序设计数字信号处理

5、典型算法程序设计3.卷积的计算卷积的计算在实际应用中,参与卷积运算的两个序在实际应用中,参与卷积运算的两个序列长度往往差距较大,比如我们要实时列长度往往差距较大,比如我们要实时的对一长序列语音信号进行的对一长序列语音信号进行“过滤过滤”处处理,可以采用有限冲激相应序列与该语理,可以采用有限冲激相应序列与该语音信号进行卷积的方法来实现。音信号进行卷积的方法来实现。 比如:重叠保留法比如:重叠保留法 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.1.3.重叠保留法卷积运算在重叠保留法卷积运算在C54x上的实现上的实现 1.利用利用C54x自带的自带的dsplib库函数实现

6、库函数实现TI公司提供了以公司提供了以C54x系列芯片为基础的系列芯片为基础的DSPLIB库函数,在库函数,在CCS开发系统内包含开发系统内包含DSPLIB库函数。库函数。这些库函数均为经过优化处理的符合这些库函数均为经过优化处理的符合C语语言标准的函数。言标准的函数。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计DSPLIB库提供了一个直接进行线性卷积运算的函库提供了一个直接进行线性卷积运算的函数,形式如下:数,形式如下: oflag = short convol (DATA *x, DATA *h, DATA *r, ushort nr, ushort nh)其中其

7、中x,h为输入数组,即进行卷积的两序列,为输入数组,即进行卷积的两序列,r为输出数组。为输出数组。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计其算法为:其算法为: 0( )( ) ()nhkr jh k x jk0 =j =nr通常我们将分段后的待滤波数据放于通常我们将分段后的待滤波数据放于X数组中,而将数组中,而将滤波器冲激响应序列放于滤波器冲激响应序列放于h数组。按前述方法,数组。按前述方法,x长长度为度为L+M-1,h长度为长度为M,则,则nr应为应为L+M-1。计算得。计算得到结果后,舍弃到结果后,舍弃r的前的前M-1个值。个值。第第8章章 数字信号处理典型算

8、法程序设计数字信号处理典型算法程序设计2.汇编语言设计汇编语言设计C54x指令集内提供了单周期乘累加指令指令集内提供了单周期乘累加指令MAC和循环和循环寻址方式,使每个样值的乘累加计算可以在一个周寻址方式,使每个样值的乘累加计算可以在一个周期内完成。期内完成。 卷积运算就是实现两组数对应项乘积的累加和。可卷积运算就是实现两组数对应项乘积的累加和。可采用采用RPTZ和和MAC指令,结合循环寻址方式去方便指令,结合循环寻址方式去方便地实现这一运算:地实现这一运算: RPTZ 累加器,累加器,N-1MAC (双访问数据),(双访问数据),累加器(双访问数据),(双访问数据),累加器第第8章章 数字信

9、号处理典型算法程序设计数字信号处理典型算法程序设计其中,其中,RPTZ 指令将累加器清零初始化,并将指令将累加器清零初始化,并将立即数立即数N-1(16位)装入到重复计数器,使下位)装入到重复计数器,使下一条指令重复执行一条指令重复执行N次。次。MAC指令实现将两存储区数据的乘积累加到指令实现将两存储区数据的乘积累加到累加器,再通过存储区指针以循环寻址的方累加器,再通过存储区指针以循环寻址的方式指向下一个存储区。式指向下一个存储区。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计程序设计的要点简要分析如下:程序设计的要点简要分析如下:为了能高效的利用为了能高效的利用DSP流

10、水线,待卷积的两组流水线,待卷积的两组数据都应存放在数据都应存放在DARAM中中如果使用双操作数指令,辅助寄存器只能用如果使用双操作数指令,辅助寄存器只能用AR2AR5,在此我们选择,在此我们选择AR3和和AR4作为双操作为双操作数寻址辅助寄存器作数寻址辅助寄存器汇编语言的代码设计要充分考虑到资源的优化汇编语言的代码设计要充分考虑到资源的优化等等 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计在此经常使用一种零长度循环缓冲区,循环体对应在此经常使用一种零长度循环缓冲区,循环体对应的汇编程序如下:的汇编程序如下: .bss x,239 .bss y,233 .bss h,8

11、BEGINSTM # 233,BRC STM # x,AR1 STM # x,AR4 STM # H,AR3 STM # y,AR5 STM # 7,AR0 ; loop starts RPTB next-1第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计 LD *AR4+, 13, A MAC *AR4 +, *AR3+, A MAC * AR4 +, *AR3+, A MAC *AR4 +, *AR3+, A MAC *AR4 +, *AR3+, A MAC *AR4 +, *AR3+, A MAC *AR4 +, *AR3+, A MAC *AR4 +, *AR3+,

12、 A MAC *AR4 +0%, *AR3-, A ;修改地址指针修改地址指针 SFTA A, 2 RND A MVMM AR1, AR3 STH A, * AR1+ LD #0,A ; loop endsnext:第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.2 数字滤波器的数字滤波器的DSP实现实现本节主要介绍本节主要介绍FIR和和IIR滤波器滤波器DSP实现方法。实现方法。首先简要介绍滤波器的基本原理、结构和设计首先简要介绍滤波器的基本原理、结构和设计方法,然后通过实例介绍滤波器设计在方法,然后通过实例介绍滤波器设计在C54x上上的实现方法。的实现方法。用用DS

13、P芯片实现数字滤波除了具有稳定性好、芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活精确度高、不受环境影响等优点外,还具有灵活性好的特点。性好的特点。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.2.1 FIR滤波器的结构与设计滤波器的结构与设计 1.FIR滤波器的结构滤波器的结构一般时域离散系统或网络的描述方式:一般时域离散系统或网络的描述方式:差分方程差分方程单位脉冲响应单位脉冲响应系统函数进行描述。系统函数进行描述。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计则其系统函数,即滤波器的传递函数为:则其系统函数,

14、即滤波器的传递函数为: 01( )1MkkkNkkkb zHza z如果系统输入、输出服从如果系统输入、输出服从N阶差分方程:阶差分方程: 01( )()()MNkkkky nb x nka y nk第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计ka相应的传递函数为:相应的传递函数为:0( )( )MkkH zb k z若所有的若所有的均为零,则有:均为零,则有:0( )()Mkky nb x nk第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计据上两式可直接画据上两式可直接画FIR滤波器的直接型结构:滤波器的直接型结构: ( )x n1z1z1z1z

15、(0)h(1)h(2)h(3)h N (2)h N (1)h N ( )y nFIR滤波器的直接型结构又称为卷积型结构,有时滤波器的直接型结构又称为卷积型结构,有时也称为横截型结构。也称为横截型结构。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计FIR滤波器主要具有如下几个特点:滤波器主要具有如下几个特点: 可以在幅度特性随意设计的同时,保证可以在幅度特性随意设计的同时,保证精确、严格的线性相位精确、严格的线性相位FIR滤波器的单位脉冲响应是有限长序列,滤波器的单位脉冲响应是有限长序列,因此因此FIR滤波器系统总是稳定的滤波器系统总是稳定的第第8章章 数字信号处理典型算

16、法程序设计数字信号处理典型算法程序设计由于由于FIR滤波器一般为非递归结构,在有滤波器一般为非递归结构,在有限精度运算中,不会出现像递归机构的滤限精度运算中,不会出现像递归机构的滤波器那样的极限震荡等不稳定现象,误差波器那样的极限震荡等不稳定现象,误差较小较小FIR滤波器可采用滤波器可采用FFT算法实现,从而提算法实现,从而提高运算效率高运算效率第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2. FIR滤波器的设计方法滤波器的设计方法0( )()Mkky nb x nkkbkb中,系数中,系数(k=1M)形成的序列形成的序列(k=1M)。 就是单位冲激响应序列,滤波器设计

17、的目标就是就是单位冲激响应序列,滤波器设计的目标就是找到合适的序列找到合适的序列方法方法1:傅立叶级数法:傅立叶级数法( )dH是以是以 s为周期的周期函数,所以可展开为傅为周期的周期函数,所以可展开为傅立叶级数,即立叶级数,即:(2/)( )sjkdkkHC e 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计/s 这里我们用这里我们用表示归一化频率,即表示归一化频率,即,则有,则有: 2( )jkdkkHC e kC可由下式求得可由下式求得:1211( )2j nkdCHed第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计通常通常( )dH为偶函数,

18、这时为偶函数,这时: 1201( )02j nkdCHedk且且 。 kkCC因为因为FIR的系数为有限个,因此需将上式中的系数进的系数为有限个,因此需将上式中的系数进行截取,到近似的传递函数为行截取,到近似的传递函数为 : 2( )QjkakkQHC e 式中式中Q为有限的正整数。为有限的正整数。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2jze令令 , 则有:则有: ( )QkakkQHzC z上式即为所求系统的上式即为所求系统的Z域传递函数。近似传递函数域传递函数。近似传递函数的冲激响应是由系数决定。的冲激响应是由系数决定。 第第8章章 数字信号处理典型算法程序

19、设计数字信号处理典型算法程序设计( )dh n( )dh n( ) 01hnn N 方法方法2:窗函数法设计:窗函数法设计FIR窗函数法的思路是寻找一有限长序列窗函数法的思路是寻找一有限长序列 逼近理想的滤波器脉冲响应逼近理想的滤波器脉冲响应 。 是对是对 做截做截取处理。取处理。用一个有限长度的窗函数序列用一个有限长度的窗函数序列 来截取来截取 ,即:,即:( )w n( )dh n( )( )( )dh nw n h n第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计利用利用 ,就可得到一近似的传递函数,就可得到一近似的传递函数: ( )h n()( )( )Qjjna

20、dnQHew n h n e如令如令 ,则有,则有: jze( )( )( )QnadnQHzw n h n z第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计同样,为使式同样,为使式8-17具有因果性,需延迟具有因果性,需延迟Q个样值,个样值,可得可得: ( )( )( )( )QQn QadnQH zzHzw n h n z 令令,nQk上式成为:上式成为:20( )( )( )QkdkH zw n h n z第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计( )()()dh kw kQ h kQ再令再令 , 2NQ ,得到:,得到: 0( )( )

21、NkkH zh k z设计设计FIR滤波器时,加窗是一个重要的计算步骤。滤波器时,加窗是一个重要的计算步骤。采用矩形窗函数是简单并且直接的方法。而在实际采用矩形窗函数是简单并且直接的方法。而在实际设计中,一般采用其他窗函数,比较常用的窗函数设计中,一般采用其他窗函数,比较常用的窗函数有有Hanning、Hamming、Blackman、Kaiser窗等。窗等。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计FIR滤波器分为低通滤波、高通滤波、带通滤波和滤波器分为低通滤波、高通滤波、带通滤波和带阻滤波。带阻滤波。下面给出各种滤波器具体的设计方法:下面给出各种滤波器具体的设计

22、方法:1)低通滤波器的设计)低通滤波器的设计 sin2(/) 2csnnffCn第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2)高通滤波器的设计)高通滤波器的设计 高通滤波器可以由一个幅度为高通滤波器可以由一个幅度为1的响应减去一个低通的响应减去一个低通滤波的响应来获得。滤波的响应来获得。 (n)函数的表达式为:函数的表达式为:1000nnn高通滤波器的系数可由下式计算得到:高通滤波器的系数可由下式计算得到:sin2(/)( ) 2csnnffCnn第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计3) 带通滤波器的设计带通滤波器的设计 带通滤波器可以

23、由两个截止频率不同的低通滤波器带通滤波器可以由两个截止频率不同的低通滤波器获得,其系数等于两个低通滤波器的系数之差。获得,其系数等于两个低通滤波器的系数之差。 21sin2(/) sin2(/) 22cscsnnffnffC-nnfc1和和fc2为低通滤波器的截止频率,为低通滤波器的截止频率,fs为采样频率。为采样频率。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计4) 带阻滤波器的设计带阻滤波器的设计 带阻滤波器可由带阻滤波器可由 (n)和带通滤波器相减获和带通滤波器相减获得,其系数可以由一个幅度为得,其系数可以由一个幅度为1的响应减的响应减去一个带通滤波的响应来获得。

24、去一个带通滤波的响应来获得。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计3.FIR滤波器的设计工具滤波器的设计工具在在MATLAB中,提供了两种中,提供了两种FIR滤波器设计方法:滤波器设计方法:一种是标准通带滤波器的设计一种是标准通带滤波器的设计FIR1一种是多带一种是多带FIR滤波器的设计滤波器的设计FIR2第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计函数函数FIR1:只能设计标准的低通、高通、带通和只能设计标准的低通、高通、带通和带带阻线性相位阻线性相位FIR滤波器。滤波器。 函数函数FIR2:还可设计加窗的还可设计加窗的FIR滤波器,但

25、它针滤波器,但它针对任意形状的分段线性频率相应,这一点在对任意形状的分段线性频率相应,这一点在FIR1中是受到限制的。中是受到限制的。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计1) fir1函数函数 具体调用格式为具体调用格式为:(1)b = fir1(n,Wn);(2) b = fir1(n,Wn,ftype); (3) b = fir1(n,Wn, Window); (4)b=fir1(n,Wn,ftype,Window) 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计n:滤波器的阶数;滤波器的阶数;Wn:滤波器的截止频率;滤波器的截止频率

26、;ftype:用来决定滤波器的类型:用来决定滤波器的类型:当当ftype=high时,可设计高通滤波器;时,可设计高通滤波器;当当ftype=stop时,可设计带阻滤波器。时,可设计带阻滤波器。 Window:用来指定滤波器采用的窗函数类型,用来指定滤波器采用的窗函数类型,其默认值为汉明(其默认值为汉明(Hamming)窗。)窗。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计设计低通设计低通FIR滤波器滤波器: 使用使用b=fir1(n,Wn)可得到低通滤波。可得到低通滤波。0 Wn 1, Wn=1相当于相当于0.5fs。 格式:格式: b=fir1(n,Wn) 设计高

27、通设计高通FIR滤波器滤波器: 在在b=fir1(n,Wn)中,当中,当Wn= W1 W2 时,可得时,可得到带通滤波器,其通带为到带通滤波器,其通带为W1 wW2,W1和和W2分别为通带的下限频率和上限频率。分别为通带的下限频率和上限频率。 格式:格式: b=fir1(n, W1 W2 ) 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计设计带通设计带通FIR滤波器滤波器: 在在b=fir1(n,Wn)中,当中,当Wn= W1 W2 时,可时,可得到带通滤波器,其通带为得到带通滤波器,其通带为W1 wW2,W1和和W2分别为通带的下限频率和上限频率。分别为通带的下限频率和

28、上限频率。 格式:格式: b=fir1(n, W1 W2 ) 设计带阻设计带阻FIR滤波器滤波器 在在b=fir1(n,Wn,ftype)中,当中,当ftype= stop, Wn= W1 W2 时,时,fir1函数可得到带阻滤波器。函数可得到带阻滤波器。 格式:格式: b=fir1(n, W1 W2 ,stop) 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计在上述滤波器设计中,在上述滤波器设计中,Window参数可采用的窗口函参数可采用的窗口函数有:数有:BoxcarHanningBartlettBlackmanKasierchebwin等等默认的窗函数为汉明(默认的

29、窗函数为汉明(Hamming)窗。)窗。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2) fir2函数函数它可用来设计有任意频率响应的各种加窗它可用来设计有任意频率响应的各种加窗FIR滤波器。滤波器。 具体调用格式为:具体调用格式为:b=fir2(n,f,m)b=fir2(n,f,m,Window)b=fir2(n,f,m,npt)b=fir2(n,f,m,npt,Window)b=fir2(n,f,m,npt,lap)b=fir2(n,f,m,nptt,lap,Window) 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计n:滤波器的阶数;滤波

30、器的阶数;f:频率点矢量,且频率点矢量,且f 0,1,f=1对应于对应于0.5fs。矢量矢量f按升序排列,并且第一个元素必须为按升序排列,并且第一个元素必须为0,最,最后一个元素必须为后一个元素必须为1,并可以包含重复的频率点;,并可以包含重复的频率点;m:参数参数m为幅度点矢量,在矢量为幅度点矢量,在矢量m中包含了与中包含了与f相对应的期望得到的滤波器幅度;相对应的期望得到的滤波器幅度;第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计Window:用来指定所使用的窗函数类型,其默认用来指定所使用的窗函数类型,其默认值为汉明(值为汉明(Hamming)窗;)窗;Npt:用来

31、指定用来指定fir2函数对频率响应进行内插的点函数对频率响应进行内插的点数;数;Lap:用来指定用来指定fir2函数在重复频率点附近插入的函数在重复频率点附近插入的区域大小。区域大小。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.2.2 FIR滤波器在滤波器在C54x上的实现上的实现1.利用利用C54x自带的自带的dsplib库函数实现库函数实现 DSPLIB库提供了几个与库提供了几个与FIR滤波直接有关的函数,滤波直接有关的函数,分别是分别是:cfirfirfirdecfirinterpfirsfirs2firlat 第第8章章 数字信号处理典型算法程序设计数字信号

32、处理典型算法程序设计2.FIR滤波运算的汇编语言程序设计滤波运算的汇编语言程序设计采用汇编的方法主要有:采用汇编的方法主要有:线性缓冲区法线性缓冲区法循环缓冲区法循环缓冲区法单值更新缓存法单值更新缓存法 区域更新缓存法区域更新缓存法 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计1) 线性缓冲区法线性缓冲区法单值更新缓存法:单值更新缓存法:具体实现步骤如下:具体实现步骤如下:(1)在数据存储器中开辟一个在数据存储器中开辟一个N单元的缓冲区,用单元的缓冲区,用来存放最新的来存放最新的N个输入样本;个输入样本; (2)从最老样本开始取数,每取一个数后,样本从最老样本开始取数,

33、每取一个数后,样本向下移位;向下移位;(3)读完最后一个样本后,输入最新样本并存入读完最后一个样本后,输入最新样本并存入缓冲区的顶部。缓冲区的顶部。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2)用循环缓冲区实现用循环缓冲区实现FIR滤波器滤波器 循环缓冲区算法的过程如下:循环缓冲区算法的过程如下:(1)在数据存储器中开辟一个在数据存储器中开辟一个N个单元的缓冲区个单元的缓冲区(滑滑窗窗),用来存放最新的,用来存放最新的N个输入样本;个输入样本;(2)从最新样本开始取数;从最新样本开始取数;(3)读完最老样本后,输入最新样本来代替最老样读完最老样本后,输入最新样本来代

34、替最老样本,而其他数据位置不变;本,而其他数据位置不变; (4)用用BK寄存器对缓冲区进行间接寻址,使缓冲区寄存器对缓冲区进行间接寻址,使缓冲区地址首尾相邻。地址首尾相邻。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计3)区域更新缓存法区域更新缓存法 区域更新缓存法就是每次批量输入一批新样值,然区域更新缓存法就是每次批量输入一批新样值,然后对这一批数进行滤波处理后批量存储结果,然后后对这一批数进行滤波处理后批量存储结果,然后更新缓存。更新缓存。 适合于采样与传输数据很快,而处理时间相对较慢适合于采样与传输数据很快,而处理时间相对较慢的场合。的场合。 第第8章章 数字信号

35、处理典型算法程序设计数字信号处理典型算法程序设计4)系数对称系数对称FIR滤波器的实现滤波器的实现 对称对称FIR滤波器的实现方法如图所示:滤波器的实现方法如图所示:b(0)b(1)b(2)b(3)x(n-4)x(n-5)x(n-6)x(n-7)AR4x(n)x(n-1)x(n-2)x(n-3)AR3新新旧旧系数系数第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计具体过程如下:具体过程如下: (1)在在RAM中开辟两个中开辟两个N/2长度的循环缓冲区长度的循环缓冲区New 和和Old ,分别存放,分别存放N/2个新数据和老数据;个新数据和老数据; (2)设置循环缓冲区指针:

36、设置循环缓冲区指针:AR3指向指向New区中的区中的最新数据,最新数据,AR4指向指向Old区中的最老数据;区中的最老数据; (3)在程序存储器中设置系数表;在程序存储器中设置系数表; (4)进行进行(AR3)+(AR4)AH加法运算,并修改数加法运算,并修改数据指针,据指针,AR3+1AR3,AR4-1AR4; 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计(5)保存和输出结果保存和输出结果; (6)修正数据指针,修正数据指针,AR3指向指向New区的最老数据;区的最老数据;AR4指向指向Old区的最老数据。区的最老数据。 (7)用用New区的最老数据替代区的最老数据替

37、代Old区的最老数据,区的最老数据,输入新数据替代输入新数据替代New区的最老数据区的最老数据 ; (8)重复执行重复执行(4) (7)。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.3 IIR滤波器的滤波器的DSP实现实现 IIR滤波器的结构简单,运算量小,具有经济、灵活、滤波器的结构简单,运算量小,具有经济、灵活、高效等特点高效等特点 。8.3.1 IIR滤波器的基本原理和设计方法滤波器的基本原理和设计方法1. IIR滤波器的特点滤波器的特点IIR滤波器差分方程的一般形式为:滤波器差分方程的一般形式为:01( )()()MNkkkky nb x nka y nk

38、第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计IIR滤波器具有无限长的单位脉冲响应,在结构上存滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,即是递归型的。在反馈回路,即是递归型的。 当当M=N时,在零初始条件下,对上式进行时,在零初始条件下,对上式进行z变换,得变换,得到传递函数:到传递函数:-101-111.-( ).-NNNNkNNkNkb zb zbz zH zCza zaz p第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计 对于对于IIR滤波器,系统稳定的条件如下:滤波器,系统稳定的条件如下: 若若 ,当,当 时,时, ,系统稳定;,

39、系统稳定;若若 ,当,当 时,时, ,系统不稳定;,系统不稳定;| 1kp n n ( )0h n ( )0h n | 1kp IIR滤波器结构具有多种形式:滤波器结构具有多种形式: (1)直接直接I型型(也称直接型也称直接型)(2)直接直接II型型(也称标准型也称标准型)(3)级联型级联型(4)并联型并联型(5)格型格型(lattice)第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2. IIR数字滤波器的结构与设计数字滤波器的结构与设计1)二阶二阶IIR数字滤波器数字滤波器01212( ) ( )( -1)( -2)-( -1)-( -2) y nbx nbx nbx

40、 nay na y n二阶二阶IIR数字滤波器是构成复杂数字滤波器是构成复杂IIR数字滤波器的基数字滤波器的基本单元,因此又称为二阶基本节。本单元,因此又称为二阶基本节。一个二阶一个二阶IIR滤波器,其输出可写:滤波器,其输出可写: 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计直接型二阶直接型二阶IIR滤波器的结构图:滤波器的结构图: 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计直接直接I型的二阶型的二阶IIR数字滤波器:数字滤波器: 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计标准型二阶标准型二阶IIR数字滤波器:数字滤

41、波器: x(n)y(n)w(n)a1a2b1b21z1z第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2)高阶高阶IIR滤波器滤波器一个高阶一个高阶IIR滤波器可由多个二阶基本节级联组成。滤波器可由多个二阶基本节级联组成。 其传递函数为其传递函数为: 12( ) ( ) ( ). ( )kH zCH z HzHz式中式中Hi(z)为一阶或二节阶的传递函数。为一阶或二节阶的传递函数。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计其结构如图其结构如图: x(n)y(n)此外,一个高阶此外,一个高阶IIR滤波器可由多个二阶基本节并滤波器可由多个二阶基本节

42、并联组成。其传递函数为联组成。其传递函数为 :12( ) ( ) ( ) . ( )kH zCH zHzHz第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计并联型高阶并联型高阶IIR滤波器结构如图滤波器结构如图: x(n)y(n)C第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计格型结构义可分为两种格型结构义可分为两种:一种是所谓的全极点结构一种是所谓的全极点结构:全极点全极点IIR格型格型滤波器以多个基本节级联而成滤波器以多个基本节级联而成一种是即有极点又有零点的零极结构一种是即有极点又有零点的零极结构 第第8章章 数字信号处理典型算法程序设计数字信号

43、处理典型算法程序设计全极点格型全极点格型IIR滤波器的基本节滤波器的基本节: 对于格型滤波器结构,只要对于格型滤波器结构,只要ik的绝对值小于的绝对值小于1,滤波器就是稳定的滤波器就是稳定的第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计3. IIR数字滤波器的设计方法数字滤波器的设计方法常用到的模拟滤波器的原型主要有以下几种:常用到的模拟滤波器的原型主要有以下几种: 1)巴特沃思滤波器,其幅度响应在通带内具巴特沃思滤波器,其幅度响应在通带内具有最平特性;有最平特性;2)切比雪夫滤波器,在通带内具有等波纹特切比雪夫滤波器,在通带内具有等波纹特性性,且阶数小于巴特沃思滤波器;

44、且阶数小于巴特沃思滤波器;3)椭圆滤波器,在通带和阻带内具有等波纹椭圆滤波器,在通带和阻带内具有等波纹特性,且阶数最小。特性,且阶数最小。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计设计步骤如下:设计步骤如下:( )H s( )H s( )H z1)根据模拟设计理论设计出满足要求的传递函数根据模拟设计理论设计出满足要求的传递函数变换成数字滤波器的传递函数变换成数字滤波器的传递函数。 2)将将常用的变换方法有常用的变换方法有:冲激不变法冲激不变法双线性变换法双线性变换法第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计双线性变换的基本性质如下:双线性变

45、换的基本性质如下: s平面上的平面上的j轴映射到轴映射到z平面的单位圆上;平面的单位圆上; s平面的左半平面映射到平面的左半平面映射到z平面的单位圆内;平面的单位圆内; s平面的右半平面映射到平面的右半平面映射到z平面的单位圆外。平面的单位圆外。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计由双线性变换法设计数字滤波器,首先要设计符由双线性变换法设计数字滤波器,首先要设计符合指标要求的模拟滤波器。但一般只给出归一化合指标要求的模拟滤波器。但一般只给出归一化原型滤波器的设计数据。原型滤波器的设计数据。而对于截止频率为而对于截止频率为c的滤波器,可通过适当的代的滤波器,可通

46、过适当的代换得到实际的模拟滤波器。换得到实际的模拟滤波器。 例如:对于低通滤波器,用例如:对于低通滤波器,用s/ c代替原型滤波器代替原型滤波器中的中的s即可。即可。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计实际应用中,需要设计各种类型的数字滤波器,实际应用中,需要设计各种类型的数字滤波器,般有下列两种方法:般有下列两种方法: (1)把一个归一化模拟滤波器经频带变换化为所需类把一个归一化模拟滤波器经频带变换化为所需类型的模拟滤波器,再通过双线性变换法数字化为所型的模拟滤波器,再通过双线性变换法数字化为所需类型的数字滤波器。需类型的数字滤波器。(2)将模拟低通原型用双

47、线性变换法数字化为数字低将模拟低通原型用双线性变换法数字化为数字低通滤波器,再变换成各种类型的数字滤波器。通滤波器,再变换成各种类型的数字滤波器。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计第一种方法设计各型数字滤波器的一般步骤:第一种方法设计各型数字滤波器的一般步骤: (1)根据数字频率指标计算预畸变的模拟频率指标,根据数字频率指标计算预畸变的模拟频率指标, 计算方法为:计算方法为: tan(/2)T (2)根据通带或阻带允许的波动,确定滤波器类型。根据通带或阻带允许的波动,确定滤波器类型。根据阻带的衰耗要求,确定滤波器的阶数,进而求根据阻带的衰耗要求,确定滤波器的

48、阶数,进而求得归一化模拟低通滤波器的传递函数得归一化模拟低通滤波器的传递函数Ha(s),然后用然后用s/ c代替滤波器代替滤波器Ha(s)中的中的s即可得到实际的模拟即可得到实际的模拟滤波器传递函数滤波器传递函数H(s)。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计(3)根据双线性变换法把模拟滤波器根据双线性变换法把模拟滤波器H(s)变换为数字变换为数字滤波器滤波器H(z)。H(s)与与H(z)之间的对应关系为:之间的对应关系为: ( )| ( )|sjz ej TH sH z以上第以上第(2)步第步第(3)步可以合并进行,即可参照下表给步可以合并进行,即可参照下表给

49、出的变换公式进行代换。出的变换公式进行代换。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计模拟低通原型到各种数字滤波器的变换方法:模拟低通原型到各种数字滤波器的变换方法: 变换类型变换类型变换方法变换方法说明说明模拟低通原型模拟低通原型数字低通数字低通表示低通预畸截表示低通预畸截频频模拟低通原型模拟低通原型数字高通数字高通表示高通预畸截表示高通预畸截频频111czsz tan(T/2)cc tan(T/2)cc (1)1czsz第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计模拟低通原型模拟低通原型数字带通数字带通模拟低通原型模拟低通原型数字带阻数字带

50、阻2121cos(+)T/2 cos(-)T/2cccca21 tan(-)T/2acc 22(1)21azszaz21 tan(-)T/2acc 2121cos(+)T/2 cos(-)T/2cccca221211azazsz2c1c注:注: 表示通带或阻带的上截频,表示通带或阻带的上截频, 表示通带或阻表示通带或阻带的下截频,带的下截频,T为采样周期为采样周期第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计例例8-1设计一个低通滤波器。要求:带宽设计一个低通滤波器。要求:带宽BW=1rad/s,采样频率采样频率fs=100Hz。 解:解:根据给定的指标,令根据给定的指标

51、,令c= BW=1rad/s,选择一个满足带宽条件的低通模拟选择一个满足带宽条件的低通模拟T=1/ fs=0.01s。滤波器,传递函数为:滤波器,传递函数为:1( ) s+1aHs 对对 进行预畸变,求进行预畸变,求 c。 1 tan(T/2) tan(1 0.01/2)200cc 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计用用s/ c代换原型滤波器代换原型滤波器( )aHs中的中的s,得,得 :根据表根据表8.1得到:得到: 1( ) 200s+1Hs 111czsz代入上式得数字滤波器的传递函数代入上式得数字滤波器的传递函数 :111z+1( )( ) 201z-

52、199czszHzHs第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.3.2 IIR滤波器的滤波器的C54x实现实现 1.巴特沃思型滤波器的设计巴特沃思型滤波器的设计1)butter函数函数 函数形式为:函数形式为: b,a = butter(n,Wn) b,a = butter(n,Wn,ftype) 当设计截止频率为当设计截止频率为Wn的的n阶低通滤波器,其中截止阶低通滤波器,其中截止频率应满足频率应满足0Wn1,Wn=1相当于相当于0.5fs。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计 当当ftype = high时,可设计截止频率为时

53、,可设计截止频率为Wn的高通滤的高通滤波器;波器; 当当ftype = stop时,可设计带阻滤波器,此时时,可设计带阻滤波器,此时Wn = W1 W2,阻带为,阻带为W1 WW2。当当Wn= W1 W2时,时,butter函数产生一个函数产生一个2n阶阶的数字带通滤波器,其通带为的数字带通滤波器,其通带为W1 w Ws时,为高通滤波器;时,为高通滤波器;当当Wp, Ws为二元矢量时,若为二元矢量时,若Wp Ws,则为带通或,则为带通或带阻滤波器,此时带阻滤波器,此时Wn也为二元矢量。也为二元矢量。利用利用buttord函数可得到滤波器的最小阶数函数可得到滤波器的最小阶数n,并使通,并使通带带

54、(0,Wp)内的纹波系数小于内的纹波系数小于Rp,阻带,阻带(Ws, 1)内衰减内衰减系数大于系数大于Rs。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2.切比雪夫滤波器的设计切比雪夫滤波器的设计分为两种类型:分为两种类型: Chebyshev型:通带等波纹性能型:通带等波纹性能 Chebyshev型:阻带等波纹性能型:阻带等波纹性能 1)cheby1函数函数函数形式为:函数形式为: b,a = cheby1(n,Rp,Wn) b,a = cheby1(n, Rp,Wn,ftype) 可以设计低通、带通、高通和带阻可以设计低通、带通、高通和带阻Chebyshev型型数

55、字滤波器,其通带内为等波纹,阻带内为单调。数字滤波器,其通带内为等波纹,阻带内为单调。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2)cheb1ord函数函数 函数形式为:函数形式为: n,Wn = cheb1ord(Wp, Ws, Rp, Rs) 此函数用来选择此函数用来选择Chebyshev型滤波器的阶数。型滤波器的阶数。 Wp和和Ws分别为通带和阻带滤波器的截止频率,其分别为通带和阻带滤波器的截止频率,其值为值为0Wp(或或Ws)1。 Rp和和Rs分别是通带和阻带区的纹波系数。分别是通带和阻带区的纹波系数。 第第8章章 数字信号处理典型算法程序设计数字信号处理典

56、型算法程序设计3) cheby2函数函数函数形式为:函数形式为: b,a = cheby2(n,Rs,Wn) b,a = cheby2(n,Rs,Wn,ftype) cheby2函数与函数与cheby1函数基本相同,但是其通带内函数基本相同,但是其通带内为单调的,阻带内为等波纹,由为单调的,阻带内为等波纹,由Rs指定阻带内的波指定阻带内的波纹。纹。 cheby2函数可以设计函数可以设计Chebyshev型低通、带通、型低通、带通、高通和带阻数字滤波器。高通和带阻数字滤波器。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计4) cheb2ord函数函数函数形式为:函数形式为

57、: n,Wn = cheb2ord(Wp, Ws, Rp, Rs) 可以利用该函数确定可以利用该函数确定Chebyshev型数字滤波器型数字滤波器的最小阶数的最小阶数n和截止频率和截止频率Wn。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计3.椭圆滤波器的设计椭圆滤波器的设计 ellip函数函数函数形式为:函数形式为: b,a = ellip(n, Rp, Rs, Wn) b,a = ellip(n, Rp, Rs, Wn,ftype) 此函数用来设计此函数用来设计Elliptic(椭圆)型滤波器。(椭圆)型滤波器。可设计可设计n阶低通或带通滤波器。阶低通或带通滤波器。

58、也可设计也可设计n阶高通或带阻滤波器。阶高通或带阻滤波器。第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2) ellipord函数函数函数形式为:函数形式为: n,Wn = ellipord(Wp, Ws, Rp, Rs) 此函数用来选择椭圆滤波器的阶数。此函数用来选择椭圆滤波器的阶数。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计8.4快速傅立叶变换的快速傅立叶变换的DSP实现实现8.4.1 FFT算法介绍算法介绍FFT算法的基本原理是把长序列的算法的基本原理是把长序列的DFT逐次分解为逐次分解为较短序列的较短序列的DFT。按照抽取方式的不同可分

59、为:按照抽取方式的不同可分为:DIT-FFT(按时间抽(按时间抽取)和取)和DIF-FFT(按频率抽取)算法。(按频率抽取)算法。按照蝶形运算的构成不同可分为:按照蝶形运算的构成不同可分为:基基2、基、基4、基、基8以及任意因子以及任意因子(2n,n为大于为大于1的整数)。的整数)。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计1.傅立叶变换和逆变换傅立叶变换和逆变换对于变换长度为对于变换长度为N的序列的序列x(n)其傅立叶变换可以表示其傅立叶变换可以表示如下:如下:-10( )( ),0,1,.,1 NknNnX kx n WkN其中,其中,W=exp(-2/N),称

60、为旋转因子或蝶形因子。称为旋转因子或蝶形因子。 上式即为上式即为DFT的定义式。的定义式。 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计NnkW的特性:的特性: 1)对称性:对称性: / 2n kn kNNNWW 2)周期性:周期性: nknkNnkNkNNNWWW并由以上两条得到:并由以上两条得到: ()()n N kn N knkNNNWWW/2(/2)11,nkNNk NkNNNNWWWW 第第8章章 数字信号处理典型算法程序设计数字信号处理典型算法程序设计2.基基2、DIT-FFT(按时间抽取)(按时间抽取)按时间抽取的算法是在时间域内将输入序列不断根按时间抽取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论