基于DSP的数字滤波器的设计与仿真

合集下载

《DSP原理及应用》课程实验报告

《DSP原理及应用》课程实验报告

[《DSP原理及应用》课程实验报告](软、硬件实验)实验名称:[《DSP原理及应用》实验]专业班级:[ ]学生姓名:[ ]学号:[ ]指导教师:[ ]完成时间:[ ]目录第一部分.基于DSP系统的实验 (1)实验3.1:指示灯实验 (1)实验3.2:DSP的定时器 (3)实验3.5 单路,多路模数转换(AD) (5)第二部分.DSP算法实验 (13)实验5.1:有限冲击响应滤波器(FIR)算法实验 (13)实验5.2:无限冲激响应滤波器(IIR)算法 (17)实验5.3:快速傅立叶变换(FFT)算法 (20)第一部分.基于DSP系统的实验实验3.1:指示灯实验一.实验目的1.了解ICETEK–F2812-A评估板在TMS320F2812DSP外部扩展存储空间上的扩展。

2.了解ICETEK–F2812-A评估板上指示灯扩展原理。

1.学习在C语言中使用扩展的控制寄存器的方法。

二.实验设备计算机,ICETEK-F2812-A实验箱(或ICETEK仿真器+ICETEK–F2812-A系统板+相关连线及电源)。

三.实验原理1.TMS320F2812DSP的存储器扩展接口存储器扩展接口是DSP扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。

-ICETEK–F2812-A评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯、DIP开关和D/A设备。

具体扩展地址如下:C0002-C0003h:D/A转换控制寄存器C0001h:板上DIP开关控制寄存器C0000h:板上指示灯控制寄存器详细说明见第一部分表1.7。

-与ICETEK–F2812-A评估板连接的ICETEK-CTR显示控制模块也使用扩展空间控制主要设备:108000-108004h:读-键盘扫描值,写-液晶控制寄存器108002-108002h:液晶辅助控制寄存器2.指示灯扩展原理3.实验程序流程图开始初始化DSP时钟正向顺序送控制字并延时四.实验步骤1.实验准备连接实验设备:请参看本书第三部分、第一章、二。

基于DSP的FIR数字滤波器设计

基于DSP的FIR数字滤波器设计
数 字 滤 波 器 的 实现 方 法 主要 有 I I R滤 波器 和 FR I 滤波 器 两种 ,其 中I 滤 波器 需要 使用 通 用模 I R 拟 滤 波器设计 方 法来进 行设 计 .它 能得 到较 好 的 幅度特 性 ,但 是 相位 特性 是非线 性 的 。为 了得 到 线性 相位 ,它 必须外 加相 位校正 网络 ,而这 会使 滤波 器 的设 计 变得 比较 复杂 ,也会 增加 成 本 ;而 FR滤 波器 则 由有 限个 采样 值 组 成 ,它 可 在保 证 I 幅度 响应满 足指 标要求 的同时 .具有 严 格 的线性
能 。事 实上 ,一个 实 际的应 用 系统 总存在 各种 干 扰 。而使 用D P 行 数 字信 号 处理 可 以从 噪 声 中 S进 提 取信 号 ,即对 一个具 有 噪声 和信号 的混 合 源进 行 采样 ,然后 经过 数字 滤波 器来 滤 除噪声 ,从而 提取 有用 信 号 。用D P 片实 现数 字 滤波 除 了具 S芯 有稳 定 性 好 、精 确 度 高 、不 受 外 界 影 响 等 优 点 外 ,还 具有灵 活性 好 等特点 ,因而可 通过 可 编程 D P 片 来 实现 数字 滤 波 的参 数修 改 ,进 而 十分 S芯
Y()= n () ()+ () ( - )+ n y()= 0 n 1 n1

+ A ) [ ^ ) : X( k ( ( n L1 2 h( L1 一( 】 ) n ) 1 - )


其对 应 的FR滤波器 的传递 函数 为 : I


) hk : () z
K= o
() 2
方便 地 改变 滤波 器 的特 性 。 目前 .基 于D P S 的数
字滤 波 已被 广泛应 用 于语音 、图像 、软件 无 线 电 等 领域 。

基于DSP芯片的语音信号FIR滤波系统

基于DSP芯片的语音信号FIR滤波系统

摘要数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。

在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。

随着微处理技术的快速发展,微处理器芯片的集成度从最早的几千个晶体管发展到现在的上亿个晶体管,字长从4位提高到了64位,正是这些技术的飞速发展引发了一轮又一轮的信息产业革命,而人们的生活、学习和工作方式也在以计算机技术、通信技术为核心的信息技术的影响下发生着前所未有的改变。

然而在这次设计中,比较核心的是数字滤波器,数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域。

滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与IIR滤波器相比,FIR滤波器只有零点,除原点外.在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR 滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR 滤波器难以实现的。

因此。

它在高保真的信号处理.如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。

对于本设计主要是利用一个DSP芯片来进行语音采集系统的设计,而数字信号处理技术的发展使得采用数字化的方法实时的处理语音信号成为可能。

早期的语音信号处理均是采用模拟处理,对声音信号最常用的滤波、相关、谱分析等运算,部分采用模拟电路来实现的。

这种传统的模拟方法处理语音信号,硬件设备昂贵,不能升级、产品生命周期短,而采用数字处理技术处理语音信号具有抗干扰性强、便于传输和处理等优点,代表着语音处理技术的发展方向。

基于MATLAB与DSP的FIR数字滤波器的设计

基于MATLAB与DSP的FIR数字滤波器的设计
4 1D P系统简介 . S D PD g切lSg a P oesr是一种 S (ii in l rcs ) o 实时 、快速 、特 别适合于实现各种数字信 号处 理运算 的微处理 器。由于它由具有丰 富的硬件 资源 、改进的哈佛结构 、高速数
1 引言
个实际的应用 系统 中,由于设备或 者 是外界环境 的原 因,总存在各种 干扰 ,
h, j ;t ( d) 1 fd (= 7



h nl \ 去 ” : f ( £ — T 2 , )
DPMTA I糯滤波器 s;A LBF
由于 h () 是无限长序列 , n 且是非因果
的 。要得到有限长 的 h n ,需要用一个有 ()
4 F 数字滤波器的 D P I R S 设计
应滤波器( R) I 滤波器是有限长单位 I 。FR I 冲激响应滤波器,在结构上是非递归型的, 有限冲激响应滤波器(I ,具有以下的优 FR) 点 :( )可以在幅度特性随意设计的同时 , 1 保证精确 、 严格的线性相位,() 2 由于 FR I
[ y,f ,n is s b t 】= wa r a (十. ved ‘ wa ’ v) %WA V文档的读取 wa wrt ( v ie Y,f ,nb t ‘ s is, 十. wa ’ v) %WAV文档的写入 wa p a ( v l Y Y,f )%W AV 文档的 s 播放 su d) o n s( o n (、su dc)也是 WAV文档
此 类 文 件 ,具 体 格 式 如 下 :
2 F 滤波器的设计方法分析 I R
数字滤波 器依据冲激响应的宽度划分 为有限冲激响应 (I 滤波器和无限冲激响 F R)
公司 ( )生产的第三代 D P 产品 ,本 TI S

基于dsp的语音采集及滤波器设计

基于dsp的语音采集及滤波器设计

基于DSP的语音采集与FIR滤波器的设计与实现摘要: 介绍了一种基于TMS320C5402的语音采集与FIR数字滤波器的设计与实现, 采用TLC320AD50作为语音CODEC模块的核心器件, 简述了FIR数字滤波器的特点,以及其在DSP上实现的原理。

利用TMS320C5402对采集到的语音信号进行FIR滤波, 该系统具有较强的数据处理能力和灵活的接口电路,能够满足语音信号滤波的要求, 可以扩展为语音信号处理的通用平台.关键词: 语音采集; FIR滤波器; TMS320C5402数字信号处理是把数字或符号表示的序列, 通过计算机或专用处理设备, 用数字的方式去处理, 以达到更符合人们要求的信号形式。

而语音处理是数字信号处理最活跃的研究方向之一, 在IP电话和多媒体通信中得到广泛应用. 一个完备的语音信号处理系统不但要具有语音信号的采集和回放功能, 还要能够进行复杂的语音信号分析和处理。

通常这些信号处理算法的运算量很大, 而且又要满足实时的快速高效处理要求, 随着DSP技术的发展, 以DSP为内核的设备越来越多, 为语音信号的处理提供了优质可靠的平台. 软件编程的灵活性给很多设备增加不同的功能提供了方便, 利用软件在已有的硬件平台上实现不同的功能已成为一种趋势。

本文设计了一个语音处理系统, 采用定点DSP芯片TMS320C5402作为CPU, 完成对语音信号的采集和滤波处理.1 语音采集系统的设计1. 1 系统总体设计语音采集与处理系统主要包括3个主要部分: 以TMS320C5402 为核心的数据处理模块; 以TLC320AD50为核心的语音采集与编解码( CODEC)模块; 用户根据需要扩展的存储器模块. 系统硬件结构如图1所示.1. 1. 1 CODEC模块本设计选用TLC320AD50( 以下简称AD50) 完成语音信号的A/ D转换和D/ A转换. AD50是TI公司生产的一款集成有A/ D和D/ A的音频芯片, DSP与音频AD50连接后, 可使用一个缓冲串行口来同时实现语音信号的采集和输出, 从而可以节省DSP的硬件开销. AD50使用过采样技术提供从数字信号到模拟信号和模拟信号到数字信号的高分辨率低速信号转换. 该器件包括2个串行的同步转换通道, 分别用于各自的数据传输. 语音信号直接从AD50的模拟信号输入端输入, AD50对其进行采样, 并将采样后的数据传送至DSP. DSP应用相应的算法对数据进行处理, 并将处理后的数据传送到AD50的D/ A输入端. AD50再对DSP处理后的数据进行数模转换, 变为语音信号后输出到音响设备.本系统中TLC320AD50与TMS320C5402之间采用串行通信, 通过DSP芯片的MCBSP串口实现.接口电路如图2所示.1. 1. 2 MCBSP的工作原理TMS320C5402有2个McBSP 多通道缓存串行口. McBSP提供了全双工的通信机制, 以及双缓存的发送寄存器和三缓存的接收寄存器, 允许连续的数据流传输, 数据长度可以为8、12、16、20、24、32; 同时还提供了A律和L律压扩. 数据信号经DR和DX引脚与外设通讯, 控制信号则由CLKX、CLKR、FSX、FSR等4个引脚来实现[ 4]. CPU和DMA控制器可以读取DRR[ 1, 2] 的数据实现接收, 并且可以对DXR[ 1, 2] 写入数据实现发送. 串行口控制寄存器SPCR[ 1, 2] 和引脚控制寄存器PCR用来配置串行口; 接收控制寄存器RCR[ 1, 2] 和发送控制寄存器XCR[ 1, 2]用来设置接收通道和发送通道的参数; 采样率发生器寄存器SRGR[ 1, 2] 用来设置采样率. TMS320C5402芯片串口控制寄存器功能强大, 用户通过编程不但可以设置时钟信号的极性及输入输出方向, 还可以设置同步信号的极性及输入输出方向.1. 1. 3 AD50与DSP的同步通信在应用中, 将TLC320AD50C接至DSP的同步串口, 并将TLC320AD50设置在主动工作模式下, 即由TLC320AD50 提供帧同步信号和移位时钟,TMS320C5402的管脚电压为3. 3V, 可以与AD50直接相连. 串口的移位时钟SCLK由AD发出, 串行数据在SCLK的驱动下经DIN、DOUT 移进、移出, 在SCLK的下降沿采样DIN 数据, 在SCLK下降沿送出数据到DOUT. XF控制首次或二次通信, XF为低时是AD50的首次通信, 是正常的AD、DA的数据; XF为高时是AD50的二次通信, 这时可以读写AD50的4个寄存器. 进入二次通信有软件的方法, 即把AD50设为15+1位数据模式, 最后一位标记下一个数据是否为二次通信数据, 1表示是, 0表示否.一次通信格式的16位都用来传输数据. DAC的数据长度由寄存器1的D0位决定. 启动和复位时, 默认值为15+ 1模式, 最后一位要求二次通信. 如果工作在16位传输模式下, 则必须由FC产生二次通信请求. 二次通信格式则用来初始化和修改TLC320AD50C内部寄存器的值. 在二次通信中可通过向DIN写数据来完成初始化.二次通信格式如图3所示, D13= 1表示读DIN的数据, D13= 0表示向DIN 写数据.系统复位后, 必须通过DSP 的DX接口向TLC320AD50C的DIN 写数据, 因为采用一片TLC320AD50C, 只需初始化寄存器1、寄存器2、寄存器4. 由于通信数据长度为16位, 初始化是应通过RCR1和XCR1设置McBSP的传输数据长度为16.2 语音采集语音信号的采集, 是通过话筒经模拟放大输入到AD50, AD50作相应的低频滤波并进行A/ D转化, 再通过MCBSP通道输入DSP芯片. 语音信号采集程序包括以下几个部分:( 1) DSP初始化. 对DSP的寄存器以及缓冲串口进行初始化.( 2) AD50初始化. 通过DSP的缓冲串口和XF引脚对AD50进行初始化, 再设置AD50的4个控制寄存器; 确定AD50的4个控制寄存器设置正确后,AD50才能开始采集数据. 此时, 可以用示波器检测AD50的DOUT引脚, 能发现引脚是否有连续的信号输出.( 3) 设置DSP的中断, 从缓冲串口读取数据. 如果此时在缓冲串口连续读取数据, 就可以在仿真软件CCS中查看读取的数据是否正确.( 4) DSP存放数据. 可以将缓冲串口读取的数据存放到DSP的RAM单元, 连续存放, 可通过CCS的图形显示功能判断AD50采样的数据是否正确.3 语音滤波语音去噪在语音信号上应用较多, 在实质上和普通的数字信号去噪没有什么区别, 使用滤波器和各种算法均可以实现语音信号的去噪, 使得含有噪声的信号更加清晰. 但语音信号的去噪和一般的数字信号去噪又存在着很大的差别, 因为语音信号的频谱覆盖在100Hz~3. 4kHz, 较为丰富的信号主要集中在1kHz 附近, 所以一般的滤波去噪时必须考虑语音信号的自身特征.本系统中应用的AD50内置了低通滤波器, 可以通过设置来有效滤除信号中混杂的高频干扰信号, 而对于低于100Hz的干扰信号, 则无能为力. 因此, 要用DSP进行编程设计一个软件可实现高通滤波器, 由处理器来完成信号的去噪, 采用FIR滤波.3.1 FIR滤波器的基本结构及特点有限冲激响应( FIR)滤波器的基本结构是一个分节的延时线, 把每一节的输出加权累加, 得到滤波器的输出. 数学上表示为y(n) =EN-1n=0h(n)x(n-m), (0[ n[ N- 1) (1) 对(1)式进行Z变换, 整理后可得出FIR滤波器的传递函数为H(z) = EN-1n=0h(n)z-n, (0[ n[ N- 1) (2)由( 2)式可知FIR滤波器的一般结构如图1所示.图1 FIR数字滤波器直接实现形式3.2 FIR滤波器的DSP实现原理由( 1)式可知, FIR滤波器的冲激响应为h(0), h(1), ,, h(N- 1). x(n)表示滤波器在n时刻的输入, 则n时刻的输出为y(n) = h(0)x(n) +h(1)x(n- 1) + ,+ h(N- 1)x[ n- (N- 1) ],这是一个乘、加的过程, 可以使用DSP中的MAC 指令实现该运算. 图2说明了使用循环寻址实现FIR滤波器的方法. 为了能正确使用循环寻址, 必须先初始化BK, 块长为N. 同时, 数据缓冲区和冲激响应( FIR滤波器的系数)的开始地址必须是大于N的2的最小幂的倍数. 例如, 当N= 11时, 大于N的最小2的幂为16, 则数据缓冲区的第一位地址应该是16的倍数, 因此数据缓冲区起始地址的最低4位必须是0.在图2中, 滤波系数指针初始化时指向h(N- 1), 经过一次FIR滤波计算后, 在循环寻址的作用下,仍然指向h(N- 1). 而数据缓冲区指针指向的是需要更新的数据, 如x(n). 在写入新数据并完成FIR运算后, 该指针指向x(n- (N- 1)) , 所以, 使用循环寻址可以方便地完成滤波窗口数据的自动更新.4 FIR滤波器设计实例给定FIR数字带通滤波器的技术指标为: 2个通带截止频率分别为4kHz和6kHz, 2个阻带截止频率分别为3kHz和7kHz, 采样频率均为25kHz. 输入为一个混合信号f = [ cos(2000Pt) + cos(10000Pt) + cos(20000Pt)] /6,利用Matlab设计FIR带通滤波器的系数, 将得到的滤波器系数乘以32768(即215)后舍尾取整可得DSP中滤波器系数列表. 用. word汇编命令将各滤波器系数直接输入到DSP程序中; 模拟输入数据由C语言程序实现, 然后用. copy命令将C语言程序生成的数据文件firinput拷贝到DSP程序中. DSP程序实现读入数据、滤波、显示波形等方面的任务. 完成FIR滤波器的程序框图如图3所示, 可知FIR滤波器的DSP实现主要由以下4方面的内容组成.4.1 模拟输入数据的生成用C语言程序生成输入数据, 通过. copy汇编命令将生成的数据文件拷贝到汇编程序中, 作为FIR滤波器的输入数据. C语言程序运行后所生成的数据文件名为firinpu,t 生成firinput数据文件的C语言程序如下所示:#include"stdio. h"#include"math. h"main( ){int ;idouble f[ 256];FILE*fp;if( ( fp= fopen( "e: \ \ firinput", "wt") ) = =NULL){printf( "canct openfile! \n");}for( i=0; i< =255; i++ ){f[ i] =( cos( 2* 3. 14159265* *i 1000/25000) + cos( 2* 3. 14159265* *i 5000/25000) +cos( 2* 3. 14159265* *i 10000/25000) ) /6;fprintf( fp, " . word %ld\n", ( long) ( f[ i]* 32768) );}fclose( fp);}4.2 DSP初始化程序 DSP初始化程序包括了对堆栈指针( SP)、软件等待状态寄存器( SWWSR)、中断寄存器( IFR)、中断屏蔽寄存器( IMR)以及处理器工作状态寄存器( PMST)的初始化; 另外还对各变量赋值, 具体的程序如下: . def _c_int00. mmregsswcr . set 2bht_ar2 . set 066ht_ar3 . set 067hout_wave_buf . set 0d00hdata_in . set 0f00hN . set 51fir_coef_buf . set 100hfir_data . set 200h. textrs b_c_int00_c_int00:stm#2020h, pmstssbx intmssbx sxmssbx frctstm #10h, 26hstm #10h, 36hstm #0ffh, spld #0, dpstm #0ffffh, ifrstm #20h, imrstm #02492h, swwsrstm #0, swcr可看出, FIR滤波器的系数列表将存在100h开始的单元中, 输入数据将存在200h开始的单元中, 而输出数据将存在0d00h开始的单元中.4.3 滤波系数以及输入数据的调入由于滤波器系数一开始是存在程序存储器中, 输入数据则是存在程序外的文件中, 程序对这2组数据进行处理时, 需要把两者都调到数据存储器中, 具体实现程序如下:stm #fir_data, ar6rpt #255mvpd #inpu,t*ar6+stm #fir_coef_bu,f ar6rpt #N-1mvpdfir_coe,f*ar6+stm #fir_coef_bu,f t_ar2stm #fir_data, t_ar3这段程序实现的是把输入数据调到以200h开始的单元, 而把滤波系数调到从100h开始的单元.4.4 滤波子程序一次滤波的过程实质上就是对2组数进行有规律的乘加计算, 具体程序如下:fir:mvdm #t_ar2, ar2 ; 将起始滤波系数地址100h 赋给ar2mvdm #t_ar3, ar5 ; 将起始输入数据地址200h 赋给ar5stm #data_in, ar3 ; ar3=0f00hstm #255, brc ; 定义块循环次数rptbdloop-1 ; 定义块循环结束地址stm #N, bk ; 定义循环缓冲器大小ld *ar5+, a ; 将新数据读到累加器a中 stl a,*ar3+% ; 将新数据读入栈顶rptz a, #(N-1) ; 定义循环次数, 之前先将a累加器清0mac *ar2+0%,*ar3+0%, a ; a=ar2*ar3+a, 每完成一次计算ar2、ar3 ; 指针所对应地址+1sth a, * ar6+ ; 将计算结果保存输出loop这个程序段将重复执行256次, 从而实现对于数据的读入、处理、输出等功能.5 结语本文介绍了一个实时数据采集处理系统的设计和实现, 系统以DSP芯片和TLC320AD50芯片为核心,有很强的数据处理能力和灵活的外围接口电路, 实验证明, 可较好地实现语音的滤波. 该系统可扩展为3G手机语音识别系统, 也可以作为语音信号处理算法研究和实时实现的通用平台参考文献: :[ 1] 邹彦. DSP原理及应用[ M]. 北京:电子工业出版社, 2005.[2] 乔瑞萍, 崔涛,张芳娟. TMS320C54x原理及应用[M].西安: 西安电子科技大学出版社, 2005.[3] 黄海波, 蒋伟荣. 通用语音处理系统的DSP实现[ J] . 微计算机信息, 2006,22( 5) :173- 175.[4] 张勇, 曾炽祥,周好斌. TMS320C5000系列DSP汇编语言程序设计[M]. 西安:西安电子科技大学出版社, 2004.[ 5] 卢山, 田野,郭黎利. 利用DSP技术实现FIR滤波器[ J]. 应用科技, 2002, 29( 11): 19-21.[ 6] 张伟利, 朱煜. FIR滤波器在TMS320C5402中的实现[ J].微处理机, 2005( 2): 4- 6.。

基于DSP Builder的FIR滤波器设计与实现

基于DSP Builder的FIR滤波器设计与实现

基于DSP Builder 的FIR 滤波器设计与实现Design and Implementation of FIR Based on DSP Builder(湖南科技大学)罗韩君 刘明伟 (湖南省电力试验研究院)王成LUO HAN jun LIU MING wei Wang cheng摘 要:针对FIR 数字滤波器的基本原理和结构特点,利用DSP Builder 软件设计了32阶低通FIR 滤波器,对该滤波器的性能进行了仿真,并将设计下载到FPGA 中进行了硬件测试,测试结果表明:采用该方法设计FIR 滤波器简单易行,可缩短设计进程,设计出的滤波器的性能稳定可靠,达到了预期目标。

关键词:DSP Builder;FIR;FPGA;仿真中图分类号:TN713 文献标识码:A 文章编号:Abstract: According to the principle and structure of FIR digital filter, a 32-order lowpass FIR is designed by using DSP Builder, and design is successfully simulated , Finally, the design is downloaded into FPGA device for testing, testing results indicate: this design method is effective for FIR. Key Words: DSP Builder;FIR;FPGA;Simulation 1 引 言在信号处理领域,数字滤波器占有重要地位,数字滤波器在语音和图像处理、模式识别、HDTV、雷达信号分析与谱分析等领域有广泛应用。

与模拟滤波器对比,数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。

基于DSP Builder的数字滤波器设计与实现

基于DSP Builder的数字滤波器设计与实现

该模 块可方便 地把 MA L BS ui T A / m l k中的设计 i n 转换为 F G P A可编译的 V D 文件 圈 H L 。
2 I滤波器 的D PB i e设计 1 阶F 6 R S ul r d
21 滤波器参数选取 .
利用 MA L B提供 的滤波器设计 的专门工 TA 具箱 F A o l D T o可以方便地设计滤波器系数 。根
(= -- ) j i1 )
B i e ̄具箱 中的模块进行简单的调用即可。值 ul r d 得注意的是 , S u dr D PB i e 中的 D P l S 模块是以算法
级 的 描 述 出现 的 ,易于用户从 系统 或 者 算 法 级 进
典 型 的直 接 I FR滤 波器 如 图 l 示 ,滤 型 I 所
(l ke 的形式出现 ,可以在 S ui 环境下进 Bo s ) c t i lk m n
1 FR 波 器 原 理 与 D PB i e I滤 S ul r d
11 I滤 波器 原 理 . FR
对于 一 个 FR 滤 波器 系统 ,它 的冲 激响应 总 I 是有 限长 的,FR 滤 波器 的数 学表 达 式可 用差 分 I
A src: il r ga b ta tFe po rmmal gt ary(P A) eie aewie sdi ii linl r csn p l a o s d be a r e a F G dvcs r dl ue dgt g a po e igapi t n y n as s ci
—弛
12 . DSP B i e ul r d
。蕴 : . 源自图 1 直 接 型 FR 滤 波器 结 构 图 I
以往 MA L T AB工 具 的使 用 往往 作为 DS P算

基于DSP的FIR数字滤波器设计研究

基于DSP的FIR数字滤波器设计研究
统 机 构 ,对 其 进 行 指 令 操 作 ,就 可 以 用 数 据 流 程
的数 字 信号 用 D A 进 行转 化 ,形成 模 拟 的采 样值 , / 塌: 将 得 到 的 不 平 滑 的 滤 波通 过 滤 波器 等设 备进 后 行处 理 ,从 而得 到最 终 的模拟 连续 的信 号 。 因 为 DS P信 号 处理 系统 是 以数 字 信 号处 理 理 论为 基 础 ,故 兼 具 有数 字 信 号 的特 点 。其 特点 一 , 与之 相 兼 容 的接 口比较 多 ,都 是 以数 字 为基 础 的 , 便 与其 他 的 系 统 接 口进 行 连 接 ;其 特 点 二 , 因

要:D P S 芯片 是一种微 处理器 ,能够进行将 信息进 行数字化 的处理 ,用 于对付各 种实时的数字信 号处理 ,卷积 、变 化等 ,处 理效率 高 ,因而被 广泛地应 用在许多 的方 面 ,尤其 在数字滤波器 上。针 对这个情况 ,本文采 用了某公 司的T 30 5 X MS 2C 4 芯片作 为本文研究 的D P S 芯片 ,根据 提出 的算法 实现 了FR I滤波 器 ,并 经过仿 真实验 ,得 到的 实验 结果满 足滤 波的条件 ,预计 的 实验结果 验证 了本 文提出的算 法。
、 l 似 I I 泣 3
基于D P I 娄 字滤波器设计研究 S 的FR
The R gi al i erdesi FI di t l ft gn bas ed he on t DSP


w ANG n Ku
( 河南职业技术学 院 ,郑州 4 0 4 ) 5 0 6
关键词 : D P;T 3 0 4 芯 片;FR S MS 2 C5X 滤波器 J 中图分 类号 :T 1 N7 3 文献标识码 :A 文章编号 :1 0 - 14 2 i )8 上 ) l 7 3 9 0 ( o 0 ( 一O4 -0 0 3 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1系统功能介绍一个实际的应用系统中,总存在各种干扰。

数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用,数字滤波器也是使用最为广泛的信号处理算法之一。

在本设计中,使用MATLAB模拟产生合成信号,然后利用CCS进行滤波。

设定模拟信号的采样频率为48000Hz,。

设计一个FIR低通滤波器,其参数为:滤波器名称:FIR低通滤波器采样频率:Fs=48000Hz通带截止频率:15000Hz阻带截止频率:16000Hz通带最大衰减:0.1dB阻带最少衰减:80dB滤波器系数:由MATLAB根据前述参数求得。

2.2 总体设计方案流程图图1 总体设计方案主要内容和步骤3.1 滤波器原理对于一个FIR 滤波器系统,它的冲击响应总是又限长的,其系统函数可记为:()()10N n n H z h n z --==∑ 其中1N -是FIR 的滤波器的阶数,n z -为延时结,()h n 为端口信号函数。

最基本的FIR 滤波器可用下式表示:()()()10N k y n h k x n k -==-∑ 其中()x n k -输入采样序列,()h k 是滤波器系数,N 是滤波器的阶数()Y n 表示滤波器的输出序列,也可以用卷积来表示输出序列()y n 与()x n 、()h n 的关系,如下: ()()()y n x n h n =*3.2 操作步骤(1)打开FDATOOL ,根据滤波要求设置滤波器类型、通带截止频率、指定阶数、采样频率等。

指定完设计参数后单击按钮Design Filter ,生成滤波器系数。

(2)把生成的滤波器系数传到目标DSP 。

选择菜单Targets->Export to Code Composer Studio(tm)IDE ,打开Export to C Header File 对话框,选择C header file ,指定变量名(滤波器阶数和系数向量),输出数据类型可选浮点型或32 b ,16 b 整型等,根据自己安装选择目标板板号和处理器号,单击OK ,保存该头文件,需指定文件名(filtercoeff .h)和路径(保存在c :\ti\myprojects\fir 工程中)。

(3)修改CCS 汇编程序,删掉数据前的所有文字,在开头加上.data ,第二行加coeff .word ,在每行的前面加上.word ,比且把每行的最后的逗号去掉。

(4)编译汇编程序,如果有错误,按错误进行修改;没错误,则往下执行。

(5)加载初始化DATA 数据。

运行程序,查看输入输出波形,修改相应参数进行调试第4章详细设计在本实验中使用MATLAB模拟产生信号,观察滤波前的时域波形和频域波形。

MATLAB仿真后,使用得到的滤波器参数,进行DSP编程,在DSP中实现带通滤波,并使用CCS的频谱分析功能,查看DSP的滤波效果。

MATLAB程序流程图如图4.1所示图4.1 MATLAB程序流程图CCS汇编程序流程图如图4.2所示图4.2 CCS汇编程序流程图第5章实验过程5.1 汇编语言实验步骤与内容MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。

使用该方法,便于采用汇编语言来实现程序。

头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。

(1)在MATLAB中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图5.1和图5.2所示。

图5.1 待滤波信号的时域图图5.2 待滤波信号的频域图利用FDA TOOL设计FIR滤波器的参数,操作步骤如图5.3所示。

图5.3 FIR滤波器的参数打开Export,把Numerator改为B,如图5.4所示。

图5.4 Export设置已滤波的信号的时域和频域波形,如图5.5和图5.6所示。

图5.5 已滤波信号时域波形图图5.6 已滤波信号频域波形图MATLAB滤波器设计工具在完成FIR设计后,如图5.7所示,在Export as 中选择16bit符号整数输出,然后单击OK按钮。

生成fir.h C语言头文件。

将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。

图5.7 MATLAB输出数值转换图(2)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。

在CCS IDE 中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。

另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h 和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。

(3)加载初始化data数据,图5.8所示。

图5.8 data初始化图运行程序,查看输入输出波形,修改相应参数进行调试。

5.2 实验过程中出现的错误及解决的办法(1)在MATLAB程序设计中,采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。

(2)FIR.m中的采样频率要和开始设置时的采样频率一致,否则结果会出现偏差。

(3)在CCS中未定义标号,程序运行错误。

(4)在.h文件中未把coeff顶格写,编译时出现错误。

(5)未将fir.h和input.dat文件考入工程文件中。

(6)间接寻址过程中,程序中丢失。

(7) 在View的Graph中单击Time/frequency出现graph property dialog 框,未修改抽样点数。

显示的图形出现差异5.3 CCS程序运行后的各种输出结果在View的Graph中单击Time/frequency出现graph property dialog框。

将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。

输出滤波前的信号时域波形。

首先,设置如图5.9所示,输出滤波前的信号时域波形。

图5.9 Graph property dialog设置框图单击OK后生成如下图5.10波形。

图5.10滤波前信号波形图图5.10为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。

修改相应设置,输出如图5.11所示滤波前信号频谱。

图5.11滤波前信号频谱波形图经过滤波后,时域波形频谱波形如图5.12和5.13所示。

图5.12 滤波后信号时域波形图图5.13 滤波后信号频谱图由上述的所有截图可知,输入参数中,通带截止频率和阻带截止频率是比较重要的两个参数,不宜过小,过小滤掉的高频成分太多,很难还原出远波形的形状,也不宜过大,过大滤波效果欠佳。

在本课程设计中,通带截止频率选用4000Hz,阻带截止频率选用4500Hz,因此,显示图形时的,时域显示的抽样点数为1024,频域显示的带宽为0.5Hz。

对比滤波前后信号的时域图5.10和5.12、频谱波形图5.11和5.13可以知道,滤波前的时域信号的波形图的波形很杂乱,很难看出信号的周期性,滤波后周期性也相对的明显起来了;滤波前信号分布在整个频带上,滤波后阻带范围内的基本被滤掉,这些都可以从上述截图看出。

附件:源程序清单用线性缓冲区实现FIR滤波器程序清单:.title “FIR1.ASM”.mmregs.def startx .usect “x”,8PA0 .set 0PA1 .set 1.dataCOEF:.word 1*32768/10.word 2*32768/10.word -4*32768/10.word 3*32768/10.word -4*32768/10.word 2*32768/10.word 1*32768/10.textstart: SSBX FRCTSTM #x+7,AR2STM #6,AR0LD #x+1,DPPORTR PA1,@x+1FIR1: RPTZ A,#6MACD *AR2-,COEF,ASTH A,*AR2PORTW *AR2+,PA0BD FIR1PORTR PA1,*AR2+0.end用循环缓冲区实现FIR滤波器程序清单:.title “FIR2.ASM”.mmregs.def start.bss y,1xn .usect “xn”,7b0 .usect “b0”,7PA0 .set 0PA1 .set 1.datatable: .word 1*32768/10.word 2*32768/10.word 3*32768/10.word 4*32768/10.word 5*32768/10.word 6*32768/10.word 7*32768/10.textstart: SSBX FRCTSTM #b0,AR1RPT #6MVPD table,*AR1+STM #xn+6,AR2STM #b0+6,AR3STM #7,BKSTM #-1,AR0LD #xn,DPPORTR PA1,@xnFIR2: RPTZ A,#6MAC *AR2+0%,*AR3+0%,ASTH A,@yPORTW @y,PA0BD FIR2PORTR PA1,*AR2+0%.end汇编程序清单lhm.h文件内容:.datacoeff .word -85, -64, -61, -36, 8, 62, 110, 136, 131.word 96, 42, -11, -44, -44, -11, 39, 85, 106.word 88, 37, -29, -83, -101, -73, -7, 70, 124.word 131, 82, -5, -96, -151, -144, -72, 37, 140.word 191, 162,61, -76, -191, -231, -174, -35, 132.word 256, 278, 180, -7, -208, -337, -330, -176, 72.word 316, 445, 392, 156, -178, -475, -599, -470, -108.word 361, 745, 857, 594, -6, -748, -1336, -1456, -893.word 386, 2192, 4154, 5816, 6768, 6768, 5816, 4154, 2192.word 386, -893, -1456, -1336, -748, -6, 594, 857, 745.word 361, -108, -470, -599, -475, -178, 156, 392, 445.word 316, 72, -176, -330, -337, -208, -7, 180, 278.word 256, 132, -35, -174, -231, -191, -76, 61, 162.word 191, 140, 37, -72, -144, -151, -96, -5, 82.word 131, 124, 70, -7, -73, -101, -83, -29, 37.word 88, 106, 85, 39, -11, -44, -44, -11, 42.word 96, 131, 136, 110, 62, 8, -36, -61, -64.word -85Fir.asm内容:.title "fir.asm".mmregs.global _c_int00ORDER .set 154D_LEN .set 1024 ; The Length of Input Data xn .usect "xn", (ORDER-1)a0 .usect "a0", (ORDER-1)input .usect "input", D_LENoutput .usect "output", D_LEN.copy "HM.h" ; Get coefs from "coef.h".text.asg AR0, FIR_INDEX.asg AR2, FIR_DATA.asg AR3, FIR_COEF.asg AR5, DATA_IN.asg AR6, DATA_OUT_c_int00:SSBX FRCTSTM #a0,FIR_COEF ; Copy a0(coefs) to FIR_COEF(AR3)RPT #ORDER-1MVPD #coeff,*FIR_COEF+STM #1, FIR_INDEXSTM #xn, FIR_DATA ; Copy xn(data) to FIR_DATA(AR2)RPTZ A,#ORDER-1STL A, *FIR_DATA+STM #(xn+ORDER-1), FIR_DATASTM #(a0+ORDER-1), FIR_COEFSTM #input, DATA_IN ; Get data from "input"STM #output, DATA_OUT ; Write data to "output"STM #D_LEN-1, BRCRPTBD next-1STM #ORDER, BKLD *DATA_IN+, AFIR: STL A, *FIR_DATA+%RPTZ A, (ORDER-1)MAC *FIR_DATA+0%, *FIR_COEF+0%, A ; FIRSSTH A, *DATA_OUT+nextFIR_END:B FIR_END.endFIR.m的程序如下:fs=40000; %/采样HzN=1024 %数据个数T=1/fs; %采样周期n=0:N-1;df=n*(fs/N)%待滤波信号波形xin=randn(1,1024)figure(1)plot(xin)%待滤波信号频谱xinff=abs(fft(xin));figure(2)plot(df,xinff)%滤波后信号波形y_filter_out=filter(B,1,xin)% Y = FILTER(B,A,X) figure(3)plot(y_filter_out)%滤波后信号频谱yff=fft(y_filter_out);figure(4)plot(df,yff)xin=xin/max(xin);%归一化xto_ccs=round(32767*xin)%取整fid=fopen('input1.dat','w');%打开文件fprintf(fid,'1651 1 0 0 0\n');%输出文件头fprintf(fid,'%d\n',xto_ccs);%输出fclose(fid);。

相关文档
最新文档