卷积 有限冲激响应(FIR)数字滤波器 无限冲激响应(IIR)数字滤波器 快速傅立叶变换(FFT) 第8章 数字信号处理典型算法程序设计

Slides:



Advertisements
Similar presentations
Final Review Chapter 1 Discrete-time signal and system 1. 模拟信号数字化过程的原理框图 使用 ADC 变换器对连续信号进行采样的过程 使用 ADC 变换器对连续信号进行采样的过程 x(t) Analog.
Advertisements

北京师范大学生命科学学院 北京师范大学生命科学学院 余跃强 章腾勋 王航 余跃强 章腾勋 王航 2 目 录目 录目 录目 录  前言 前言  概述 概述  形态和生活史 形态和生活史  寄生适应特征 寄生适应特征  致病机制与症状 致病机制与症状  诊断 诊断  流行情况 流行情况.
天水圍的體育設施.
DSP技术及应用 Digital Signal Processor 数字信号处理器.
存量房交易纳税评估 系统简介 常州市武进地方税务局 政策法规科 2011 年 7 月.
102學年度 多元入學 大 學.
藥物濫用 華德學校上午校 黃秀雯.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
第五章 信号采集与数字分析原理及技术 与模拟分析相比,数字信号分析有以下一些优点: 高度的灵活性,极好的稳定性和可靠性 可多工处理,分时复用
英 德 美 法 标志 1689年 《权利法案》 1871年 《德意志帝国宪法》 1787年宪法 1875年法兰西第三共和国宪法 政体 君主立宪制 民主共和制 行政权 内阁、首相 皇帝、宰相 总统 立法权 议会 国会 权力中心 皇帝 特点 君主虚位 议会至上 军事封建 皇帝权重 总统共和制 议会共和制.
Word高级应用——制作毕业论文 Word高级应用——制作毕业论文 6..
拉丁美洲.
第八章 IT项目收尾管理实践.
102年10月17日 臺北市公共運輸處 報告人:陳榮明處長
第四章 快速付里叶变换(FFT) Fast Fourier Transforming
走過光陰 ── 眷村 三平 2號 何苡瑄.
第7章 数字信号处理中的有效字长效应.
第八章 南极洲.
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
DSP技术与应用 任课老师: 龚 伦 峰 联系电话: 地址:
实验十:FFT的实现与应用 信息工程学院 网络工程系 强文萍.
第一章 绪论.
数字信号处理 (Digital Signal Processing)
第五章 IIR DF的设计方法.
信号处理与系统课程教学案例 FFT的应用—— 声音信号合成与处理 国防科技大学电子科学与工程学院.
公司法(六) 股份有限公司 1.
第三章 无限长单位脉冲响应(IIR)滤波器设计
糖尿病肾病的护理 陈佳莉.
第三章 DFT 离散傅里叶变换.
数字信号处理 (Digital Signal Processing)
滤波器设计matlab相关函数.
第5章 TMS320C54x汇编语言程序设计 内容提要 汇编语言程序设计是应用软件设计的基础,主要任务是利用汇编指令和伪指令编写源程序以完成指定的功能。 本章将结合例子介绍TMS320C54x汇编语言源程序设计的基本方法,涉及的内容包括: 汇编语言源程序的格式 常数、字符串、符号和表达式的规定.
第五章 数字滤波器设计 Filtering Beijing Institute of Technology 数字信号处理.
第 三章 无限长单位脉冲响应(IIR)滤波器 的设计方法(共10学时 )
第7章 汇编语言程序设计 7.1 程序流程控制 7.2 数据块传送 7.3 定点数的基本算术运算 7.4 长字运算和并行运算
数字信号处理 Digital Signal Processing(DSP)
6.5 数字高通、带通和带阻滤波器的设计.
第6章 应用程序设计 内容提要 数字信号处理主要面向密集型的运算,包括乘法-累加、数字滤波和快速傅里叶变换等。’C54x具备了高速完成上述运算的能力,并具有体积小、功耗低、功能强、软硬件资源丰富等优点,现已在通信等许多领域得到了广泛应用。 本章结合数字信号处理和通信中最常见、最具有代表性的应用,介绍通用数字信号处理算法的DSP实现方法,主要包括:
第二章 离散傅里叶变换 及其快速算法(8学时 )
数字信号处理 by Zaiyue Yang CSE, ZJU, 2012.
*第七章 状态变量分析法 7.1 连续系统状态方程与输出方程的建立 7.2 连续时间系统状态方程的s域分析法
‘C54x寻址方式 ‘C54x特殊寻址方式说明 ‘C54x指令集 ‘C54x特殊指令使用说明
Principle and Application of Digital Television
第6章 FIR数字滤波器设计 6.1 FIR数字滤波器原理 6.2 使用DSP Builder设计FIR数字滤波器
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
Digtlal Signal Processing —— Using MATLAB
单片机原理与应用 Principles and Application of Microcontroller
1 3 2 上传密码: 1234 注意:请按时上传作业!到时将自动关机! 14:07:43.
DSP原理与应用 第7章 应用程序设计 电话: ; 微信: jnliuzg
引言 1.DFT是信号分析与处理中的一种重要变换。 年,Cooley, Tukey《机器计算傅里叶级数的一种算法》
第三章 付里叶分析 离散付氏级数的数学解释(The Mathematical Explanation of DFS)
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
迴歸分析 行銷、財務、人資研究.
第三章学习目标 1.理解傅里叶变换的几种形式 2.理解离散傅里叶变换及性质,掌握圆周移位、共轭对称性,掌握圆周卷积、线性卷积及两者之间的关系
数字信号处理基础 第7章 FIR数字滤波器的理论和设计
1.3 算法案例 第一课时.
大气的垂直组成和分布.
102學年度大學個人申請入學 招生審查資料上傳作業說明
第四章 模拟信号分析 模拟信号分析是直接对连续时间信号进行分析处理的过程,利用一定的数学模型所组成的运算网络来实现的。从广义讲,它包括了调制与解调、滤波、放大、微积分、乘方、开方、除法运算等。 本章主要介绍模拟信号分析处理中的调制与解调、滤波、微分、积分以及积分平均等问题。
实验2 中断模拟实验.
第三章 DFT 离散傅里叶变换.
数字图像处理(二).
2019/5/21 实验三 离散傅立叶变换的性质及应用 19:21:59.
信用部財務專業人員初級研習班 台灣債券市場簡介
8-1 基礎電氣之應用實習 8-2 工業機械之應用實習 8-3 車輛系統之應用實習 8-4 飛機應用迴路
第七章 FIR数字滤波器的设计方法 IIR数字滤波器: FIR数字滤波器: 可以利用模拟滤波器设计 但相位非线性
2电能质量的数学分析方法 2.1 概述 电能质量的数学分析方法主要对电能质量现象进行研究,测量分析、以及控制装置研制。 分析算法主要分三种:
第4章 汇编语言程序设计 本章结合C54x的软件开发过程,介绍DSP所采用的COFF目标文件格式、结构和规范。
第三章时 域 分 析 引言 语音信号的短时处理方法 短时能量和短时平均幅度 短时平均过零率 短时自相关函数 短时时域处理技术应用举例
第四章 线性方程组 4.1 消元法 4.2 矩阵的秩 线性方程组可解的判别法 4.3 线性方程组的公式解 4.4 结式和判别式.
Presentation transcript:

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

8.1 卷积运算的DSP实现 8.2 数字滤波器的DSP实现 8.3 IIR滤波器的DSP实现 8.4快速傅立叶变换的DSP实现 目录: 第8章 数字信号处理典型算法程序设计 目录: 8.1 卷积运算的DSP实现 8.2 数字滤波器的DSP实现 8.3 IIR滤波器的DSP实现 8.4快速傅立叶变换的DSP实现

第8章 数字信号处理典型算法程序设计 8.1 卷积运算的DSP实现 数字卷积运算通常采用两种方法: 线性卷积 圆卷积

函数f(t)与h(t)的卷积积分,用符号“﹡ ”表示,即: 第8章 数字信号处理典型算法程序设计 8.1.1信号的卷积 函数f(t)与h(t)的卷积积分,用符号“﹡ ”表示,即: 读作f(t)与h(t)的卷积积分,简称卷积。

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

第8章 数字信号处理典型算法程序设计 例:如图所示离散时间序列,可表示为: 1 2 3 1 2 3

与卷积积分一样,离散卷积也可通过图解法来计算,分为反折、平移、相乘、取和等过程。 第8章 数字信号处理典型算法程序设计 2.离散系统的卷积计算过程 设两个离散时间信号为 和 ,定义 与 的卷积和运算为: 与卷积积分一样,离散卷积也可通过图解法来计算,分为反折、平移、相乘、取和等过程。

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

TI公司提供了以C54x系列芯片为基础的DSPLIB库函数,在CCS开发系统内包含DSPLIB库函数。 第8章 数字信号处理典型算法程序设计 8.1.3.重叠保留法卷积运算在C54x上的实现 1.利用C54x自带的dsplib库函数实现 TI公司提供了以C54x系列芯片为基础的DSPLIB库函数,在CCS开发系统内包含DSPLIB库函数。 这些库函数均为经过优化处理的符合C语言标准的函数。

DSPLIB库提供了一个直接进行线性卷积运算的函数,形式如下: 第8章 数字信号处理典型算法程序设计 DSPLIB库提供了一个直接进行线性卷积运算的函数,形式如下: oflag = short convol (DATA *x, DATA *h, DATA *r, ushort nr, ushort nh) 其中x,h为输入数组,即进行卷积的两序列,r为输出数组。

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

#define Frame 240 //输入数据长度 #define FilterLength 8 //滤波器长度 第8章 数字信号处理典型算法程序设计 其算法为: ,0 <=j <=nr C程序代码为: #define Frame 240 //输入数据长度 #define FilterLength 8 //滤波器长度 for ( i = 0 ; i < (Frame-7) ; i ++ )  {  for ( j = 0 ; j <  FilterLength ; j ++ )  Acc0 = L_mac( Acc0, Filter[j], Spnt[i+j] ) ;   Spnt[i] = round( Acc0) ; //小数16位精度 }  注: L_mac:Acc0=Filter*Spnt, 参见TMS320C54x-Optimizing C-C++ Compiler User’s Guide-spru103g-October 2002.pdf

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

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

为了能高效的利用DSP流水线,待卷积的两组数据都应存放在DARAM中 第8章 数字信号处理典型算法程序设计 程序设计的要点简要分析如下: 为了能高效的利用DSP流水线,待卷积的两组数据都应存放在DARAM中 如果使用双操作数指令,辅助寄存器只能用 AR2~AR5,在此我们选择AR3和AR4作为双操作数寻址辅助寄存器 汇编语言的代码设计要充分考虑到资源的优化等

重叠保留法卷积运算算法程序 在此经常使用一种零长度循环缓冲区,循环体对应的汇编程序如下: (修改书中的红色部分) .bss x,239 .bss y,233 .bss h,8 BEGIN STM # 233,BRC STM # x,AR1 STM # x,AR3 STM # h,AR4 STM # y,AR5 STM # -7, AR0 ; loop starts RPTB next-1

第8章 数字信号处理典型算法程序设计 LD #0, A ;LD *AR4+, 13, A ; 原先的程序是IIR滤波?! 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+, A MAC *AR4 +0%, *AR3-, A ; 双操作数只有+0% SFTA A, 2 ;在此不需要 RND A ; 小数16位精度 MVMM AR1+, AR3 STL A, * AR5+ LD #0,A ; 上面第一行有了,这里不需要了 ; loop ends next:

用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好的特点。 第8章 数字信号处理典型算法程序设计 8.2 数字滤波器的DSP实现 用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好的特点。 本节主要介绍FIR和IIR滤波器DSP实现方法。 首先简要介绍滤波器的基本原理、结构和设计方法,然后通过实例介绍滤波器设计在C54x上的实现方法。

1.FIR滤波器的结构 一般时域离散系统或网络的描述方式: 差分方程 单位脉冲响应 系统函数进行描述。 第8章 数字信号处理典型算法程序设计

第8章 数字信号处理典型算法程序设计 如果系统输入、输出服从N阶差分方程: 则其系统函数,即滤波器的传递函数为:

第8章 数字信号处理典型算法程序设计 若所有的 均为零,则有: 相应的传递函数为:

据上两式可直接画FIR滤波器的直接型结构: 第8章 数字信号处理典型算法程序设计 据上两式可直接画FIR滤波器的直接型结构: FIR滤波器的直接型结构又称为卷积型结构,有时也称为横截型结构。

可以在幅度特性随意设计的同时,保证精确、严格的线性相位 第8章 数字信号处理典型算法程序设计 FIR滤波器主要具有如下几个特点: 可以在幅度特性随意设计的同时,保证精确、严格的线性相位 FIR滤波器的单位脉冲响应是有限长序列,因此FIR滤波器系统总是稳定的

由于FIR滤波器一般为非递归结构,在有限精度运算中,不会出现像递归机构的滤波器那样的极限震荡等不稳定现象,误差较小 第8章 数字信号处理典型算法程序设计 由于FIR滤波器一般为非递归结构,在有限精度运算中,不会出现像递归机构的滤波器那样的极限震荡等不稳定现象,误差较小 FIR滤波器可采用FFT算法实现,从而提高运算效率

就是单位冲激响应序列,滤波器设计的目标就是 第8章 数字信号处理典型算法程序设计 2. FIR滤波器的设计方法 中,系数 (k=1~M)形成的序列 就是单位冲激响应序列,滤波器设计的目标就是 找到合适的序列 (k=1~M)。 方法1:傅立叶级数法 是以 为周期的周期函数,所以可展开为傅 立叶级数,即:

第8章 数字信号处理典型算法程序设计 这里我们用 表示归一化频率,即 ,则有: 可由下式求得:

因为FIR的系数为有限个,因此需将上式中的系数进行截取,到近似的传递函数为 : 第8章 数字信号处理典型算法程序设计 通常 为偶函数,这时: 且 。 因为FIR的系数为有限个,因此需将上式中的系数进行截取,到近似的传递函数为 : 式中Q为有限的正整数。

上式即为所求系统的Z域传递函数。近似传递函数的冲激响应是由系数决定。 第8章 数字信号处理典型算法程序设计 令 , 则有: 上式即为所求系统的Z域传递函数。近似传递函数的冲激响应是由系数决定。

方法2:窗函数法设计FIR 窗函数法的思路是寻找一有限长序列 逼近理想的滤波器脉冲响应 。 是对 做截 取处理。 第8章 数字信号处理典型算法程序设计 方法2:窗函数法设计FIR 窗函数法的思路是寻找一有限长序列 逼近理想的滤波器脉冲响应 。 是对 做截 取处理。 用一个有限长度的窗函数序列 来截取 ,即:

第8章 数字信号处理典型算法程序设计 利用 ,就可得到一近似的传递函数: 如令 ,则有:

同样,为使式8-17具有因果性,需延迟Q个样值,可得: 第8章 数字信号处理典型算法程序设计 同样,为使式8-17具有因果性,需延迟Q个样值,可得: 令 上式成为:

第8章 数字信号处理典型算法程序设计 再令 , ,得到: 设计FIR滤波器时,加窗是一个重要的计算步骤。采用矩形窗函数是简单并且直接的方法。而在实际设计中,一般采用其他窗函数,比较常用的窗函数有Hanning、Hamming、Blackman、Kaiser窗等。

FIR滤波器分为低通滤波、高通滤波、带通滤波和带阻滤波。 第8章 数字信号处理典型算法程序设计 FIR滤波器分为低通滤波、高通滤波、带通滤波和带阻滤波。 下面给出各种滤波器具体的设计方法: 1)低通滤波器的设计

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

带通滤波器可以由两个截止频率不同的低通滤波器获得,其系数等于两个低通滤波器的系数之差。 第8章 数字信号处理典型算法程序设计 3) 带通滤波器的设计 带通滤波器可以由两个截止频率不同的低通滤波器获得,其系数等于两个低通滤波器的系数之差。 fc1和fc2为低通滤波器的截止频率,fs为采样频率。

带阻滤波器可由(n)和带通滤波器相减获得,其系数可以由一个幅度为1的响应减去一个带通滤波的响应来获得。 第8章 数字信号处理典型算法程序设计 4) 带阻滤波器的设计 带阻滤波器可由(n)和带通滤波器相减获得,其系数可以由一个幅度为1的响应减去一个带通滤波的响应来获得。

一种是标准通带滤波器的设计FIR1 一种是多带FIR滤波器的设计FIR2 3.FIR滤波器的设计工具 第8章 数字信号处理典型算法程序设计 3.FIR滤波器的设计工具 在MATLAB中,提供了两种FIR滤波器设计方法: 一种是标准通带滤波器的设计FIR1 一种是多带FIR滤波器的设计FIR2

函数FIR1:只能设计标准的低通、高通、带通和带 第8章 数字信号处理典型算法程序设计 函数FIR1:只能设计标准的低通、高通、带通和带 阻线性相位FIR滤波器。 函数FIR2:还可设计加窗的FIR滤波器,但它针 对任意形状的分段线性频率相应,这一点在FIR1 中是受到限制的。

(4)b=fir1(n,Wn,‘ftype’,Window) 第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)

当ftype=high时,可设计高通滤波器; 当ftype=stop时,可设计带阻滤波器。 第8章 数字信号处理典型算法程序设计 n:滤波器的阶数; Wn:滤波器的截止频率; ftype:用来决定滤波器的类型: 当ftype=high时,可设计高通滤波器; 当ftype=stop时,可设计带阻滤波器。 Window:用来指定滤波器采用的窗函数类型,其默认值为汉明(Hamming)窗。

使用b=fir1(n,Wn)可得到低通滤波。0 Wn 1, Wn=1相当于0.5fs。 格式: b=fir1(n,Wn) 第8章 数字信号处理典型算法程序设计 ①设计低通FIR滤波器: 使用b=fir1(n,Wn)可得到低通滤波。0 Wn 1, Wn=1相当于0.5fs。 格式: b=fir1(n,Wn) ②设计高通FIR滤波器: 在b=fir1(n,Wn, 'high')中, 0 Wn 1, 。 格式: b=fir1(n, Wn, 'high')

在b=fir1(n,Wn,‘ftype’)中,当ftype= stop, Wn=[ W1 W2 ]时,fir1函数可得到带阻滤波器。 第8章 数字信号处理典型算法程序设计 ③设计带通FIR滤波器: 在b=fir1(n,Wn)中,当Wn=[ W1 W2 ]时,可得到带通滤波器,其通带为W1 <w<W2,W1和W2分别为通带的下限频率和上限频率。 格式: b=fir1(n,[ W1 W2 ]) ④设计带阻FIR滤波器 在b=fir1(n,Wn,‘ftype’)中,当ftype= stop, Wn=[ W1 W2 ]时,fir1函数可得到带阻滤波器。 格式: b=fir1(n,[ W1 W2 ],‘stop’)

Boxcar Hanning Bartlett Blackman Kasier chebwin等 第8章 数字信号处理典型算法程序设计 在上述滤波器设计中,Window参数可采用的窗口函数有: Boxcar Hanning Bartlett Blackman Kasier chebwin等 默认的窗函数为汉明(Hamming)窗。

它可用来设计有任意频率响应的各种加窗FIR滤波器。 第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)

m:参数m为幅度点矢量,在矢量m中包含了与f相对应的期望得到的滤波器幅度; 第8章 数字信号处理典型算法程序设计 n:滤波器的阶数; f:频率点矢量,且f[0,1],f=1对应于0.5fs。矢量f按升序排列,并且第一个元素必须为0,最后一个元素必须为1,并可以包含重复的频率点; m:参数m为幅度点矢量,在矢量m中包含了与f相对应的期望得到的滤波器幅度;

Window:用来指定所使用的窗函数类型,其默认值为汉明(Hamming)窗; 第8章 数字信号处理典型算法程序设计 Window:用来指定所使用的窗函数类型,其默认值为汉明(Hamming)窗; Npt:用来指定fir2函数对频率响应进行内插的点数; Lap:用来指定fir2函数在重复频率点附近插入的区域大小。

cfir fir firdec firinterp firs firs2 firlat 1) 利用C54x自带的dsplib库函数实现 第8章 数字信号处理典型算法程序设计 4. FIR滤波器在C54x上的实现 1) 利用C54x自带的dsplib库函数实现 DSPLIB库提供了几个与FIR滤波直接有关的函数,分别是: cfir fir firdec firinterp firs firs2 firlat

2) FIR滤波运算的汇编语言程序设计 采用汇编的方法主要有: 单值更新缓存法 线性缓冲区法 区域更新缓存法 循环缓冲区法 第8章 数字信号处理典型算法程序设计 2) FIR滤波运算的汇编语言程序设计 采用汇编的方法主要有: 单值更新缓存法 线性缓冲区法 循环缓冲区法 区域更新缓存法

(1)在数据存储器中开辟一个N单元的缓冲区,用来存放最新的N个输入样本; 第8章 数字信号处理典型算法程序设计 (1) 线性缓冲区法 单值更新缓存法: 具体实现步骤如下: (1)在数据存储器中开辟一个N单元的缓冲区,用来存放最新的N个输入样本; (2)从最老样本开始取数,每取一个数后,样本向下移位; (3)读完最后一个样本后,输入最新样本并存入缓冲区的顶部。

线性缓冲区法实现FIR滤波 .title " fir1.asm " .mmregs .def start X .usect “x”,8 ;定义数据存储空间 PA0 .set 0 PA1 .set 1

.data COEF: .word 1*32768/10 ;h6=0.1 .word 2*32768/10 ;h5=0.2 .word -4*32768/10 ;h4=-0.4 .word 3*32768/10 ;h3=0.3 .word -4*32768/10 ;h2=-0.4 .word 2*32768/10 ;h1=0.2 .word 1*32768/10 ;h0=0.1 .text

STM #6,AR0 LD #x+1,DP ; PORTR PA1,@x+1 start: SSBx FRCT STM #x+7,AR2 STM #6,AR0 LD #x+1,DP ; PORTR PA1,@x+1 This instruction loads the upper 9 bits of address x into DP (in ST0)

FIR1: ;FIR滤波运算 RPTZ A,#6 ;累加器 A清零,设置迭代次数 MACD *AR2-,COEF,A ;完成乘法-累加并移位 STH A, *AR2 ;暂存y(n) PORTW *AR2+ ,PA0 ;输出y(n) BD FIR1 循环 PORTR PA1,*AR2+0 ;输入最新样本,并修改AR2=AR2+AR0,并指向缓冲区底部 .END

(1)在数据存储器中开辟一个N个单元的缓冲区(滑窗),用来存放最新的N个输入样本; 第8章 数字信号处理典型算法程序设计 (2)用循环缓冲区实现FIR滤波器 循环缓冲区算法的过程如下: (1)在数据存储器中开辟一个N个单元的缓冲区(滑窗),用来存放最新的N个输入样本; (2)从最新样本开始取数; (3)读完最老样本后,输入最新样本来代替最老样本,而其他数据位置不变; (4)用BK寄存器对缓冲区进行间接寻址,使缓冲区地址首尾相邻。

2)用循环缓冲区实现FIR滤波器 FIR_TASK: STM #INPUT,AR6 ;加载输入数据 STM #OUTPUT,AR7 ;指向输出数据地址单元 STM #K_FRAME_SIZE-1,BRC ;设定循环次数 RPTBD FIR_FILTER_LOOP-1 ;程序块循环 STM #K_FIR_BFFR,BK ;设置缓冲区长度 LD *AR6+,A ;读入输入数据,修改数据指针 FIR_FILTER: STL A, *AR4+% ;将读入的输入数据放到循环缓冲区中 RPTZ A , (K_FIR_BFFR-1) ;A清零,重复执行37次 MAC *AR4+0%, *AR5+0% , A ;输入数据与滤波器系数 乘累加,并按模修正数据指针 STH A,*AR7+ ;保存输出数据到输出地址单元 FIR_FILTER_LOOP .end

循环缓冲区法实现FIR 滤波器 .title " fir2.asm " .mmregs .def start .bss y,1 xn .usect “xn”,7 ;定义数据存储空间 h0 .usect “h0”,7 ;定义数据存储空间 PA0 .set 0 PA1 .set 1

.data Table: .word 1*32768/10 ;h0=0.1 .word 2*32768/10 ;h1=0.2 .word 3*32768/10 ;h2=0.3 .word 4*32768/10 ;h3=0.4 .word 5*32768/10 ;h4=0.5 .word 6*32768/10 ;h5=0.6 .word 7*32768/10 ;h6=0.7 .text

RPT #6 MVPD table,*AR1+ STM #xn+6,AR2 STM #h0+6,AR3 STM #7,BK start: SSBx FRCT;小数乘法编程时,设置FRCT(小数方式)位 STM #h0,AR1 RPT #6 MVPD table,*AR1+ STM #xn+6,AR2 STM #h0+6,AR3 STM #7,BK STM #-1,AR0 LD #xn,DP PORTR PA1,@xn

FIR2: ;FIR滤波运算 RPTZ A,#6 MAC *AR2+0%,*AR3+0%,A STH A,@y PORTW @y,PA0 BD FIR2 PORTR PA1,*AR2+0% ;用最新的样本值替代最旧的样本值 .END

使用循环缓冲区进行滤波时程序中应注意的几个问题: ① 实现N 个循环缓冲区单元首尾相邻,须用BK寄存器 按模间接寻址来实现; 第8章 数字信号处理典型算法程序设计 (2)用循环缓冲区实现FIR滤波器 使用循环缓冲区进行滤波时程序中应注意的几个问题: ① 实现N 个循环缓冲区单元首尾相邻,须用BK寄存器 按模间接寻址来实现; ② 缓冲区起始地址的k个最低有效位必须为0,且必须 满足2k > N 。 ③ 采用Ti 公司的C54x 系列进行滤波仿真,要将滤波 器系数和输入数据转化成Q15格式。

适合于采样与传输数据很快,而处理时间相对较慢的场合。 第8章 数字信号处理典型算法程序设计 (3)区域更新缓存法 区域更新缓存法就是每次批量输入一批(m+N-1个)新样值,然后对这一批数进行滤波处理后批量存储(m个)结果,然后更新缓存。 采用前面卷积程序。 适合于采样与传输数据很快,而处理时间相对较慢的场合。

(4)系数对称FIR滤波器的实现 对称FIR滤波器的实现方法如图所示: 新 旧 系数 第8章 数字信号处理典型算法程序设计 b(0) x(n-4) x(n-5) x(n-6) x(n-7) AR4 x(n) x(n-1) x(n-2) x(n-3) AR3 新 旧 系数

(1)在RAM中开辟两个N/2长度的循环缓冲区New 和Old ,分别存放N/2个新数据和老数据; 第8章 数字信号处理典型算法程序设计 具体过程如下: (1)在RAM中开辟两个N/2长度的循环缓冲区New 和Old ,分别存放N/2个新数据和老数据; (2)设置循环缓冲区指针:AR3指向New区中的最新数据,AR4指向Old区中的最老数据; (3)在程序存储器中设置系数表; (4)进行(AR3)+(AR4)AH加法运算,并修改数据指针,AR3+1AR3,AR4-1AR4;

(6)修正数据指针,AR3指向New区的最老数据; AR4指向Old区的最老数据。 第8章 数字信号处理典型算法程序设计 (5)保存和输出结果; (6)修正数据指针,AR3指向New区的最老数据; AR4指向Old区的最老数据。 (7)用New区的最老数据替代Old区的最老数据,输入新数据替代New区的最老数据 ; (8)重复执行(4)~ (7)。

系数对称FIR滤波器实现优点:乘法的次数减少了一半。 Type II FIR filter x[n-(M-1)/2] x[n-(M+1)/2] x[n-1] x[n-2] x[n-M] x[n-M+1] x[n-M+2] x[n]

优点:乘法的次数减少了一半。 实现方法: 使用专门用于系数对称FIR滤波器的指令。 FIRS Xmem,Ymem,Pmad 该指令的操作如下: 执行: Pmad→PAR 当(RC)≠0 (循环计数器) ((Xmem)+(Ymem))≪16→A (B)+(A(32-16))×PAR→B (PAR+1)→PAR (RC)-1→RC

说明:FIRS指令在同一机器周期内,通过C和D总线读两次数据存储器,同时通过P总线读程序存储区的一个系数。 注意两点: (1) 在数据存储器中开辟两个循环缓冲区,如New和Old缓冲区,分别存放N/2个新数据和老数据,循环缓冲区的长度为N/2。设置了循环缓冲区,就需要设置相应的循环缓冲区指针,如用AR2指向New缓冲区中最新的数据,AR3指向Old缓冲区中最老的数据; (2) 将系数表存放在程序缓冲区内。

.mmregs .def begin .bss y, 1 x_new: .usect ″DATA1″,4 x_old: .usect ″DATA2″,4 size .set 4 PA0 .set 0 PA1 .set 1 .data COEF .word 1*32768/10, 2*32768/10 .word 3*32768/10, 4*32768/10 .text

begin: LD #y,DP SSBX FRCT STM #x_new,AR2 ;AR2指向新缓冲区第一个单元 STM #x_old+(size-1),AR3 ;AR3指向老缓冲区最后1个单元 STM #size, BK ;循环缓冲区长度 STM #-1,AR0 LD #x_new,DP PORTR PA1,#x_new ;输入x[n] FIR: ADD * AR2+0%,* AR3+0%,A ;AH=x[n]+x[n-7](第一次) RPTZ B, # (size-1) ;B=0,下条指令执行size次 FIRS* AR2+0%,* AR3+0%,COEF ;B+=AH*h0, AH=x[n-1]+x[n-6],… STH B,@y ;保存结果

PORTW @y,PA0 ;输出结果 MAR * +AR2(2)% ;修正AR2,指向新缓冲区最老数据 MAR * AR3+% ;修正AR3,指向老缓冲区最老数据 MVDD * AR2,* AR3+0% ;新缓冲区向老缓冲区传送一个数 BD FIR PORTR PA1,* AR2 ;输入新数据至新缓冲区 .end

目标:设计一个15阶FIR低通滤波器,截止频率0.6 DSP应用技术实验指导书.pdf FIR_滤_波_器_设_计.doc 第8章 数字信号处理典型算法程序设计 8.2.2 FIR滤波器在C54x上的实现举例 目标:设计一个15阶FIR低通滤波器,截止频率0.6 DSP应用技术实验指导书.pdf FIR_滤_波_器_设_计.doc 2011年DSP作业FIR滤波器在DSP上的实现 FIR滤波器的设计.doc DSP FIR IIR 课设说明书 DSP课程设计(论文)-FIR滤波器设计.pdf

IIR滤波器的结构简单,运算量小,具有经济、灵活、高效等特点 。 第8章 数字信号处理典型算法程序设计 8.3 IIR滤波器的DSP实现 IIR滤波器的结构简单,运算量小,具有经济、灵活、高效等特点 。 8.3.1 IIR滤波器的基本原理和设计方法 1. IIR滤波器的特点 IIR滤波器差分方程的一般形式为:

IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,即是递归型的。 第8章 数字信号处理典型算法程序设计 IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,即是递归型的。 当M=N时,在零初始条件下,对上式进行z变换,得到传递函数:

对于IIR滤波器,系统稳定的条件如下: 若 ,当 时, ,系统稳定; 若 ,当 时, ,系统不稳定; IIR滤波器结构具有多种形式: 第8章 数字信号处理典型算法程序设计 对于IIR滤波器,系统稳定的条件如下: 若 ,当 时, ,系统稳定; 若 ,当 时, ,系统不稳定; IIR滤波器结构具有多种形式: (1)直接I型(也称直接型) (2)直接II型(也称标准型) (3)级联型 (4)并联型 (5)格型(lattice)

二阶IIR数字滤波器是构成复杂IIR数字滤波器的基本单元,因此又称为二阶基本节。 第8章 数字信号处理典型算法程序设计 2. IIR数字滤波器的结构与设计 1)二阶IIR数字滤波器 二阶IIR数字滤波器是构成复杂IIR数字滤波器的基本单元,因此又称为二阶基本节。 一个二阶IIR滤波器,其输出可写:

第8章 数字信号处理典型算法程序设计 直接型二阶IIR滤波器的结构图:

第8章 数字信号处理典型算法程序设计 直接I型的二阶IIR数字滤波器:

第8章 数字信号处理典型算法程序设计 标准型二阶IIR数字滤波器: x(n) y(n) w(n) a1 a2 b1 b2

一个高阶IIR滤波器可由多个二阶基本节级联组成。 第8章 数字信号处理典型算法程序设计 2)高阶IIR滤波器 一个高阶IIR滤波器可由多个二阶基本节级联组成。 其传递函数为: 式中Hi(z)为一阶或二节阶的传递函数。

此外,一个高阶IIR滤波器可由多个二阶基本节并联组成。其传递函数为 : 第8章 数字信号处理典型算法程序设计 其结构如图: x(n) y(n) Hk(z) H1(z) C H2(z) 此外,一个高阶IIR滤波器可由多个二阶基本节并联组成。其传递函数为 :

第8章 数字信号处理典型算法程序设计 并联型高阶IIR滤波器结构如图: H2 (z) x(n) y(n) H1(z) Hk(z) C

一种是所谓的全极点结构:全极点IIR格型滤波器以多个基本节级联而成 第8章 数字信号处理典型算法程序设计 格型结构义可分为两种: 一种是所谓的全极点结构:全极点IIR格型滤波器以多个基本节级联而成 一种是即有极点又有零点的零极结构

全极点格型IIR滤波器的基本节: 对于格型滤波器结构,只要 的绝对值小于1, 滤波器就是稳定的。 第8章 数字信号处理典型算法程序设计 yi(n) yi-1(n) ei(n) ei-1(n) -ki ki 对于格型滤波器结构,只要 的绝对值小于1, 滤波器就是稳定的。

常用到的模拟滤波器的原型主要有以下几种: 第8章 数字信号处理典型算法程序设计 3. IIR数字滤波器的设计方法 常用到的模拟滤波器的原型主要有以下几种: 1)巴特沃思滤波器,其幅度响应在通带内具有最平特性; 2)切比雪夫滤波器,在通带内具有等波纹特性,且阶数小于巴特沃思滤波器; 3)椭圆滤波器,在通带和阻带内具有等波纹特性,且阶数最小。

冲激不变法 双线性变换法 设计步骤如下: 1)根据模拟设计理论设计出满足要求的传递函数 2)将 变换成数字滤波器的传递函数 第8章 数字信号处理典型算法程序设计 设计步骤如下: 1)根据模拟设计理论设计出满足要求的传递函数 2)将 变换成数字滤波器的传递函数 常用的变换方法有: 冲激不变法 双线性变换法 。

① s平面上的j轴映射到z平面的单位圆上; 第8章 数字信号处理典型算法程序设计 双线性变换的基本性质如下: ① s平面上的j轴映射到z平面的单位圆上; ② s平面的左半平面映射到z平面的单位圆内; ③ s平面的右半平面映射到z平面的单位圆外。

由双线性变换法设计数字滤波器,首先要设计符合指标要求的模拟滤波器。但一般只给出归一化原型滤波器的设计数据。 第8章 数字信号处理典型算法程序设计 由双线性变换法设计数字滤波器,首先要设计符合指标要求的模拟滤波器。但一般只给出归一化原型滤波器的设计数据。 而对于截止频率为Ωc的滤波器,可通过适当的代换得到实际的模拟滤波器。 例如:对于低通滤波器,用s/ Ωc代替原型滤波器中的s即可。

实际应用中,需要设计各种类型的数字滤波器,—般有下列两种方法: 第8章 数字信号处理典型算法程序设计 实际应用中,需要设计各种类型的数字滤波器,—般有下列两种方法: (1)把一个归一化模拟滤波器经频带变换化为所需类型的模拟滤波器,再通过双线性变换法数字化为所需类型的数字滤波器。 (2)将模拟低通原型用双线性变换法数字化为数字低通滤波器,再变换成各种类型的数字滤波器。

第一种方法设计各型数字滤波器的一般步骤: 第8章 数字信号处理典型算法程序设计 第一种方法设计各型数字滤波器的一般步骤: (1)根据数字频率指标计算预畸变的模拟频率指标, 计算方法为: (2)根据通带或阻带允许的波动,确定滤波器类型。根据阻带的衰耗要求,确定滤波器的阶数,进而求得归一化模拟低通滤波器的传递函数Ha(s),然后用s/ Ωc代替滤波器Ha(s)中的s即可得到实际的模拟滤波器传递函数H(s)。

(3)根据双线性变换法把模拟滤波器H(s)变换为数字滤波器H(z)。H(s)与H(z)之间的对应关系为: 第8章 数字信号处理典型算法程序设计 (3)根据双线性变换法把模拟滤波器H(s)变换为数字滤波器H(z)。H(s)与H(z)之间的对应关系为: 以上第(2)步第(3)步可以合并进行,即可参照下表给出的变换公式进行代换。

模拟低通原型到各种数字滤波器的变换方法: 变换类型 变换方法 说明 模拟低通原型→数字低通 第8章 数字信号处理典型算法程序设计 模拟低通原型到各种数字滤波器的变换方法: 变换类型 变换方法 说明 模拟低通原型→数字低通 表示低通预畸截频 模拟低通原型→数字高通 表示高通预畸截频

模拟低通原型→数字带通 模拟低通原型→数字带阻 第8章 数字信号处理典型算法程序设计 模拟低通原型→数字带通 模拟低通原型→数字带阻 注: 表示通带或阻带的上截频, 表示通带或阻 带的下截频,T为采样周期

例8-1设计一个低通滤波器。要求:带宽BW=1rad/s,采样频率fs=100Hz。 第8章 数字信号处理典型算法程序设计 例8-1设计一个低通滤波器。要求:带宽BW=1rad/s,采样频率fs=100Hz。 解:根据给定的指标,令 = BW=1rad/s, T=1/ fs=0.01s。 选择一个满足带宽条件的低通模拟 滤波器,传递函数为: 对进行预畸变,求 Ωc。

第8章 数字信号处理典型算法程序设计 用s/ Ωc代换原型滤波器 中的s,得 : 根据表8.1得到: 代入上式得数字滤波器的传递函数 :

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

当Wn=[ W1 W2]时,butter函数产生一个2n阶的数字带通滤波器,其通带为W1 < w <W2。 第8章 数字信号处理典型算法程序设计 当Wn=[ W1 W2]时,butter函数产生一个2n阶的数字带通滤波器,其通带为W1 < w <W2。 当ftype = high时,可设计截止频率为Wn的高通滤波器; 当ftype = stop时,可设计带阻滤波器,此时Wn = [ W1 W2],阻带为W1< W<W2。

函数形式为:[n,Wn] = buttord(Wp,Ws,Rp,Rs) 第8章 数字信号处理典型算法程序设计 2)buttord函数 函数形式为:[n,Wn] = buttord(Wp,Ws,Rp,Rs) 当Wp > Ws时,为高通滤波器; 当Wp, Ws为二元矢量时,若Wp < Ws,则为带通或带阻滤波器,此时Wn也为二元矢量。 利用buttord函数可得到滤波器的最小阶数n,并使通带(0,Wp)内的纹波系数小于Rp,阻带(Ws, 1)内衰减系数大于Rs。

函数形式为:[ b,a ] = cheby1(n,Rp,Wn) [ b,a ] = cheby1(n, Rp,Wn,‘ftype’) 第8章 数字信号处理典型算法程序设计 2.切比雪夫滤波器的设计 分为两种类型: ChebyshevⅠ型:通带等波纹性能 ChebyshevⅡ型:阻带等波纹性能 1)cheby1函数 函数形式为:[ b,a ] = cheby1(n,Rp,Wn) [ b,a ] = cheby1(n, Rp,Wn,‘ftype’) 可以设计低通、带通、高通和带阻ChebyshevⅠ型数字滤波器,其通带内为等波纹,阻带内为单调。

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

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

[ n,Wn ] = cheb2ord(Wp, Ws, Rp, Rs) 第8章 数字信号处理典型算法程序设计 4) cheb2ord函数 函数形式为: [ n,Wn ] = cheb2ord(Wp, Ws, Rp, Rs) 可以利用该函数确定ChebyshevⅡ型数字滤波器的最小阶数n和截止频率Wn。

函数形式为:[ b,a ] = ellip(n, Rp, Rs, Wn) 第8章 数字信号处理典型算法程序设计 3.椭圆滤波器的设计 ellip函数 函数形式为:[ b,a ] = ellip(n, Rp, Rs, Wn) [ b,a ] = ellip(n, Rp, Rs, Wn,‘ftype’) 此函数用来设计Elliptic(椭圆)型滤波器。 可设计n阶低通或带通滤波器。 也可设计n阶高通或带阻滤波器。

[ n,Wn ] = ellipord(Wp, Ws, Rp, Rs) 第8章 数字信号处理典型算法程序设计 2) ellipord函数 函数形式为: [ n,Wn ] = ellipord(Wp, Ws, Rp, Rs) 此函数用来选择椭圆滤波器的阶数。

FFT算法的基本原理是把长序列的DFT逐次分解为较短序列的DFT。 第8章 数字信号处理典型算法程序设计 8.4快速傅立叶变换的DSP实现 8.4.1 FFT算法介绍 FFT算法的基本原理是把长序列的DFT逐次分解为较短序列的DFT。 按照抽取方式的不同可分为:DIT-FFT(按时间抽取)和DIF-FFT(按频率抽取)算法。 按照蝶形运算的构成不同可分为:基2、基4、基8以及任意因子(2n,n为大于1的整数)。

对于变换长度为N的序列x(n)其傅立叶变换可以表示如下: 第8章 数字信号处理典型算法程序设计 1.傅立叶变换和逆变换 对于变换长度为N的序列x(n)其傅立叶变换可以表示如下: 其中,W=exp(-2π/N),称为旋转因子或蝶形因子。 上式即为DFT的定义式。

第8章 数字信号处理典型算法程序设计 的特性: 1)对称性: 2)周期性: 并由以上两条得到:

按时间抽取的算法是在时间域内将输入序列不断根据奇偶划分为2个短序列。 第8章 数字信号处理典型算法程序设计 2.基2、DIT-FFT(按时间抽取) 按时间抽取的算法是在时间域内将输入序列不断根据奇偶划分为2个短序列。 这时要求序列的长度N为2的整数幂次,如不满足,可通过补零调整。 在时间域上,将每一级输入序列依次按奇偶分为两个短序列进行计算。

第8章 数字信号处理典型算法程序设计 结果N点X(k)可分为两部分: 其中:

蝶形运算单元如图所示 : 第8章 数字信号处理典型算法程序设计 x1(n) x (n) x2 (n) x (n+N/2) 图8-19 蝶形运算单元图 基2、DIT-FFT(按时间抽取)

图8-20基2、DIF-FFT(按频率抽取)蝶形运算单元图 第8章 数字信号处理典型算法程序设计 另一种FFT算法——按频率抽取的IF-FFT算法,是把输出序列X(k)(也是N点序列)按其顺序的奇偶分解为越来越短的序列 。 其蝶形运算单元如图8-20所示: X1 (k) X2 (k) X (k) X (k+N/2) 图8-20基2、DIF-FFT(按频率抽取)蝶形运算单元图

下面以256点的实数FFT算法为例,介绍FFT算法在 54x系列DSP上的实现过程。 第8章 数字信号处理典型算法程序设计 8.4.2 FFT算法在C54x上的实现 下面以256点的实数FFT算法为例,介绍FFT算法在 54x系列DSP上的实现过程。 1.存储区分配 由于FFT算法中大量使用了乘-累加指令,因而应尽可能将被乘数和乘数安排在DARAM中,以便程序能高速并行地执行。

FFT实现程序存储器和数据存储器空间分布: 0000h 015Fh 程序空间 第8章 数字信号处理典型算法程序设计 FFT实现程序存储器和数据存储器空间分布: 程序存储器 0000h 015Fh 程序空间 FF80h FFFFh 中断向量设置 复位

第8章 数字信号处理典型算法程序设计 0000h-0005Fh 存储器初始化 0060h 记数组 0061h 图形指标 0062h 数据处理缓冲器指标 0070h-007Fh 正弦 0800h-09FFh 余弦 0C00h-3FFh 数据处理区输入的数据存入下一半 1400h-17FFh 数据输出空间 数据存储器: d_grps_cnt d_twid_idx d_data_idx 正弦数据表 余弦数据表 real_fft_input real_fft_output

根据傅立叶变换的对称性和周期性,可以将DFT运算中某些项合并。 第8章 数字信号处理典型算法程序设计 2.算法分析 根据傅立叶变换的对称性和周期性,可以将DFT运算中某些项合并。 一般来说,输入被假定为连续、合成的。当输入为纯粹的实数的时候,我们就可以利用傅立叶变换的基本性质更高效地计算DFT。

将2N点实数序列打包成为N点复数序列,此过程称为“进包”。 由复数FFT运算结果合成为2N点的实数FFT结果的过程称为“解包” 第8章 数字信号处理典型算法程序设计 将2N点实数序列打包成为N点复数序列,此过程称为“进包”。 由复数FFT运算结果合成为2N点的实数FFT结果的过程称为“解包” 其原理和过程如下: (1)首先将变换序列x(n)分为偶序列r(n)和奇序列i(n) (2)构造d(n)=r(n)+j*i(n) (3)对d(n)作复数FFT,则有:

根据DFT的性质,序列的傅立叶变换可分为共轭对称和共轭反对称序列,其各自对应的傅立叶原序列分别是序列的实部和虚部乘j。 第8章 数字信号处理典型算法程序设计 令 : 由此二式可得: 根据DFT的性质,序列的傅立叶变换可分为共轭对称和共轭反对称序列,其各自对应的傅立叶原序列分别是序列的实部和虚部乘j。

这样把D(k)分为共轭对称对称序列De(k)和共轭反对称序列Do(k),即: 第8章 数字信号处理典型算法程序设计 这样把D(k)分为共轭对称对称序列De(k)和共轭反对称序列Do(k),即: , 对应的是输入序列的实部部分即r(n), 而 对应的是输入序列的虚部部分乘以j即j*i(n)

这说明通过计算N点的复数FFT,然后附加一次迭代运算,可得到2N点的实数FFT结果。 第8章 数字信号处理典型算法程序设计 对比可得: 展开x(n)的FFT最终为: 这说明通过计算N点的复数FFT,然后附加一次迭代运算,可得到2N点的实数FFT结果。

针对于C54x的RFFT算法是基-2的按时间抽取(DIT)算法。它由5个阶段构成: 第8章 数字信号处理典型算法程序设计 3.程序组成 针对于C54x的RFFT算法是基-2的按时间抽取(DIT)算法。它由5个阶段构成: N点位翻转使输入按新的次序排列; 进包过程; N点FFT的计算; 解包过程; 产生最终的输出。

1)主文件中的宏定义文件: fft_size.inc 第8章 数字信号处理典型算法程序设计 程序由以下几个部分组成: 1)主文件中的宏定义文件: fft_size.inc 2)汇编文件:Bit_rev.asm、Fft.asm、Initcfft.asm、Power.asm、Rfft.asm、Unpack.asm、Vectors.asm 。 各个文件的功能如下: Bit_rev.asm:第一步,对最原始的输入数据进行位翻转后的从新排序。

Initcfft.asm:设置变量、缓存和平台。 Rfft.asm:进行函数调用,把FFT计算按步骤组合起来。 第8章 数字信号处理典型算法程序设计 Initcfft.asm:设置变量、缓存和平台。 Rfft.asm:进行函数调用,把FFT计算按步骤组合起来。 Vectors.asm:设置中断向量。 Fft.asm:第二步,对翻转后的数据进行FFT计算。 库文件:RTS.LIB, 作用:提供主文件的函数。

下面分5个阶段对FFT算法的实现做一个说明: 第8章 数字信号处理典型算法程序设计 下面分5个阶段对FFT算法的实现做一个说明: 第一阶段:使用文件Bit_rev.asm对最原始的输入数据进行位翻转后的从新排序。 第二阶段:使用文件Fft.asm对翻转后的数据进行FFT计算。 第三阶段:使用文件Unpack.asm它包含了第三、四阶段,把输入数据分成实数的偶对称部分RP(k),实数的奇对称部分RM (k) ,虚数的偶对称部分IP(k)和虚数的奇对称部分IM(k) ,计算出RFFT。

第五阶段:使用文件Power.asm,用来做计算结果的输出。把计算出来的功率谱输出,输出地址为0x1400。 第8章 数字信号处理典型算法程序设计 第四阶段:此阶段主要为了符合最初的2N点的实数输入,由N点复数FFT最终产生2N点实数序列的FFT结果,还需经过一个蝶形运算。输出数据保存在数据处理缓冲器中。 第五阶段:使用文件Power.asm,用来做计算结果的输出。把计算出来的功率谱输出,输出地址为0x1400。

第8章 数字信号处理典型算法程序设计

作业 习题8.2,8.3