DSP实时滤波器
用DSP实现的数字滤波器在矿井通信中的应用

对 () 进 行 。变 换 , 理 后 可 得 FR 滤 波 器 的 传 递 函 3式 整 I
数 肌 ) : () 4
装载好文件后 , A L B通过 ad s命 令获得数据在 D P内 M TA dr s e S
存 中的地址 , 则可通过 C S 问并修改 D P内存 的数据 了。 C访 S () 3 采用单步运行或执行到光标 处 , 全速运行 。 打开 或 并 波形观察窗 口, 跟踪观察其执行过程 和滤波效果 。程序运行 后, 观察滤波前后信号的时域 和频域如 图 2 3 , 所示 。
随着工作 面的延伸 , 水层 的水压 、 含 富水 性、 裂隙发育 程度、 水力联 系程度及 注浆线路 的长度 较浅部 有着 明显的不 奥陶系灰岩水 高压注浆 射流 混合器 度较浅部有着明显 的不 同, 现有 的注浆 改造方法 已不适应深
.
11 原理分析及其基本结构 . 数字滤波器原理一般具有如下差分方程 :
( ) k =0 O (一 ) n =  ̄ r 五b (一 ) kL X n y
% 设置 默 认 的链 接 时 间 , 保 不 超 时 ct 确 ah c
st gb,‘o t ’‘r w’; e (cf pi e ,ao ) nr r
需将原频率除以抽样频率 的一半即可。
维普资讯
东 晨 科技
27 0 年第6 0 期
深 部受水 威 胁 燥层 汪浆 改造方 法研 究
尚 亚平 . 陈建 平
( 肥城矿 业集团有 限责任公 司曹庄煤矿 , 东 肥城 山 摘 要
210 ) 76 1
滤波器系数 , Ⅳ是滤波器阶数。当所有 的 均为零 , 则有
y n : 吼x n一 ) () ( () 2
用DSP实现IIR滤波器

前
MPY @B2,A LTD @x1
;计算前向通道,x2*B2→A ;x1送T寄存器,x1移至x2单元
向 MAC @B1,A ;x2*B2+x1*B1→A
运 LTD @x0
;x0送T寄存器,x0移至x1单元
算
MAC @B0,A STH A,@x0
;x2*B2+x1*B1+x0*B0→A ;暂存y(n)=x2*B2+x1*B1+x0*B0→x0单元
X x(n-2)
Y y(n-2)
B B2
A A2
x(n-1) AR4 y(n-1)
AR2 x(n)
y(n) AR5
B1 AR3 A1
B0
(未用)
15
例5-32 编写直接形式二阶IIR滤波器的源程序。
.title “IIR3.asm” ;给汇编程序取名
.mmregs
;说明存储器映象寄存器
.def start ;定义标号start的起始位置
.text
start: SSBX FRCT ;指明进行小数乘法
STM #x,AR1 ;传送初始数据x(n-2),x(n-1)
RPT #1
;重复二次下条指令
MVPD #table,*AR1+ ;x(n-2)=0,x(n-1)=0
STM #Y,AR1 ;传送初始数据y(n-2),y(n-1)
RPT #1
是有限长序列。而IIR滤波器的脉冲传递在Z平面上有
极点存在,ai≠0,其单位冲激响应是无限长序列。 2
特点
IIR滤波器与FIR滤波器的一个重要区别是,IIR滤 波器可以用较少的阶数获得很高的选择特性,所用的 存储单元少,运算次数少,具有经济、高效的特点。 但是,在有限精度的运算中,可能出现不稳定现象。 而且,选择性越好,相位的非线性越严重,不像FIR 滤波器可以得到严格的线性相位。
基于DSP实现的FIR低通滤波器

基于DSP实现的FIR低通滤波器FIR(有限脉冲响应)低通滤波器是一种常见的数字信号处理(DSP)滤波器。
它的设计和实现非常灵活,可以用于去除数字信号中高频成分,使得信号能在一定的频率范围内进行平滑处理。
FIR低通滤波器有很多种设计方法,其中最简单的方法是基于窗函数设计,例如矩形窗、汉宁窗、布莱克曼窗等。
这些窗函数的选择取决于滤波器的性能要求和频率响应的形状。
在DSP中,FIR低通滤波器的实现可以采用直接形式、级联形式、并行形式和迭代形式等多种结构。
其中直接形式是最简单和直观的实现方式,也是最容易理解和实现的一种结构。
直接形式的FIR低通滤波器由一个延迟线、一组乘法器和加法器组成。
延迟线用于延迟输入信号,乘法器用于对延迟后的信号进行调制,而加法器则将调制后的信号相加得到输出信号。
```----------------------,,,x(n) -->, Delay ,-->, Multiply,-->--+ Sum ,--> y(n)Line ,,,----------------------```在实现过程中,需要注意的是延迟线的设置和乘法器的系数。
延迟线的长度决定了滤波器的阶数,即滤波器对输入信号的响应范围。
乘法器的系数则决定了滤波器的频率响应,可以通过窗函数的选取来确定。
通常,FIR滤波器的实现可以通过查表法或者卷积法来实现。
查表法通过预先计算所有可能的输入组合,并将其存储在一张查找表中,以减少计算量。
卷积法则通过将输入信号和滤波器的冲击响应进行卷积运算来得到输出信号。
当实现FIR低通滤波器时,还需要考虑滤波器的性能指标和算法的优化。
常见的性能指标包括滤波器的截止频率、抗混叠性能、通带和阻带的幅频特性等。
算法的优化可以从以下几个方面考虑:乘法器的系数选择、滤波器结构的选择、滤波器长度的选择和存储器的优化等。
总之,基于DSP实现的FIR低通滤波器是一种常用的数字信号处理滤波器,它可以用于去除数字信号中的高频成分,平滑信号的频谱。
FIR滤波器及其DSP实现

FIR滤波器及其DSP实现FIR(Finite Impulse Response)滤波器是一种常见的数字滤波器,它具有有限的脉冲响应。
与IIR(Infinite Impulse Response)滤波器相比,FIR滤波器具有线性相位特性,并且可以实现稳定的滤波效果。
FIR滤波器的核心是其冲激响应,即滤波器的输出响应。
FIR滤波器的输出可以通过对输入信号和滤波器的冲激响应进行卷积来实现。
为了得到所需的滤波效果,需要设计滤波器的冲激响应。
常见的方法包括频域设计和时域设计两种。
频域设计方法主要利用频率响应来设计FIR滤波器的冲激响应。
这包括将所需滤波特性转化为频率域中的理想滤波器响应,然后通过反变换得到冲激响应。
常见的频域设计方法有窗函数法、最优逼近法和频带优化法等。
窗函数法是最简单的频域设计方法之一,通过将理想滤波器的频率响应与窗函数的频率响应相乘得到FIR滤波器的冲激响应。
常用的窗函数有矩形窗、汉宁窗、汉明窗等。
窗函数法的优点是简单易用,但实现的FIR 滤波器在频域存在较大的过渡带宽。
因此,需要根据具体应用需求选择合适的窗函数。
最优逼近法是一种基于最优化理论的频域设计方法。
它通过将所需滤波特性定义为目标函数,利用优化算法来最小化目标函数与实际滤波器响应之间的差距,从而得到FIR滤波器的冲激响应。
最优逼近法能够较好地满足滤波特性的要求,但计算复杂度较高。
时域设计方法主要通过对滤波器的冲激响应进行直接设计来实现。
常见的时域设计方法有零相位响应(Zero-Phase Response,ZPR)设计和线性相位设计。
零相位响应设计方法通过首先设计一个偶对称的冲激响应,并通过反转和平移来得到滤波器的冲激响应。
这样可以实现零相位的滤波效果。
零相位响应设计方法能够保持输入信号的相位信息,适用于对相位要求较高的应用,如音频信号处理。
线性相位设计方法主要通过对滤波器的延迟进行优化来实现。
线性相位设计方法能够使得滤波器的相位响应近似为线性函数,从而实现滤波器对不同频率的信号具有相同的延迟。
滤波器设计中的数字滤波器和模拟滤波器的比较

滤波器设计中的数字滤波器和模拟滤波器的比较在信号处理和电子工程领域中,滤波器是非常重要的一类设备。
滤波器的作用是去除信号中的杂散成分,使得输出信号更接近于所期望的信号。
根据滤波器的工作原理和实现方式的不同,可以将滤波器分为数字滤波器和模拟滤波器两种类型。
本文将对这两种类型的滤波器进行比较和分析。
一、数字滤波器数字滤波器是基于数字信号处理的原理设计和实现的。
它将连续时间信号转换为离散时间信号,并利用数字信号处理算法来处理信号。
数字滤波器的主要特点如下:1. 数字化处理:数字滤波器将信号进行采样,将连续信号转换为离散信号。
这种数字化的处理方式能够使得滤波器具备更高的灵活性和可调性。
2. 稳定性:数字滤波器具有较好的稳定性,能够在无失真的情况下处理信号。
而且数字滤波器易于实现自适应滤波算法,能够对输入信号的变化做出及时的响应。
3. 精确性:数字滤波器的处理过程是以数字化精度为基础的,因此可以实现较高的精确性。
通过调整数字滤波器的采样频率和滤波算法,可以实现更精细的滤波效果。
4. 实时性:由于数字滤波器的工作是基于离散时间信号的处理,所以数字滤波器具备较高的实时性能。
这使得数字滤波器广泛应用于实时信号处理和通信系统中。
二、模拟滤波器模拟滤波器是基于电路和模拟信号处理的原理设计和实现的。
它通过电子元器件来实现信号处理和滤波的功能。
模拟滤波器的主要特点如下:1. 连续处理:模拟滤波器通过连续时间信号传输和处理来实现信号滤波。
这种连续处理的方式能够使得模拟滤波器具备更高的带宽和动态范围。
2. 近似性:对于非常复杂的滤波算法,模拟滤波器可以提供较好的近似性能。
模拟滤波器能够较好地对信号进行平滑和抑制噪声等处理,适用于一些对滤波效果要求较高的应用场景。
3. 廉价性:由于模拟滤波器是基于电路的设计和实现,因此相对来说成本更低。
这使得模拟滤波器在某些应用中具有优势,比如对于信号干扰要求较高的环境。
4. 实现复杂度:模拟滤波器的设计和实现过程相对复杂,需要考虑电路的稳定性、元器件的性能和参数等因素。
基于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.。
基于MATLAB和DSP的滤波器硬件在环实时仿真

smu a in s s e i lto y t m.Si lt n ts n ia e h tt i i e a ih a c r c n h e t r ffe i it n r c i bl mua i e tid c tst a hsfl rh shg c u a ya dt ef au eo lx bl ya dp a tc i o t i a —
i . t y
Ke wo d :h r wa ei-o p;r a— i i ua in ;i e y rs ad r- l n e ltme sm lto fl r t
0 引 言
越来 越 多的实 时嵌 入 式 测 量 系 统需 要 进 行现 场 实 时 仿真, 而常用 的仿 真 工具 MA L B 由于 执行 速 度 慢 , T A 不
编 写算法 , 然后 进行 离线 的系 统 仿 真 , 编 写 滤 波程 序 到 再 实 际 环 境 中 进 行 测 试 , 发 现 D P程 序 设 计 中 的偏 差 。 以 S 该设 计方 法需 要 不 断 地 在 P C上 离线 仿 真 和实 际环 境 中 测试 这 两者之 间反 复 切换 , 成 极 大 的不 便 , 造 因此 需 要 一 种新 的工 具把 MAT A L B和 D P开发工 具集 成起来 。 S
i , LA 是为 了在强 背景 噪声 中把微 弱信 号提 取 出来 , tr D I) e
另外在信号输入到锁定放大器之前应将信号频谱范围之
外 的 噪音去 掉 。 由于 T L S系 统 是 个 实 时动 态 测 量 系 D A 统 , 有参 数需 在现场 进行 调试 。 所
以往 的滤波 器设 计 是 先 按 性 能 指 标 在 MATL AB上
基于DSP的IIR低通滤波器

基于DSP的IIR低通滤波器摘要:本文介绍了DSP发展及其运用领域和CCS系统的性能、操作。
研究了IIR算法原理,并编写程序实现算法,运用CCS5000进行仿真。
关键字:DSP;IIR算法;CCS5000仿真1DSP简介数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
世界上第一个单片DSP 芯片应当是1978年AMI公司发布的S2811,1979年美国Intel公司发布的商用可编程器件2920是DSP芯片的一个主要里程碑。
这两种芯片内部都没有现代DSP芯片所必须有的单周期乘法器。
1980 年,日本NEC 公司推出的μP D7720是第一个具有乘法器的商用DSP 芯片。
自1980年以来,DSP芯片得到了突飞猛进的发展,DSP芯片的应用越来越广泛。
从运算速度来看,MAC(一次乘法和一次加法)时间已经从80年代初的400ns(如TMS32010)降低到40ns(如TMS32C40),处理能力提高了10多倍。
DSP芯片内部关键的乘法器部件从1980年的占模区的40左右下降到5以下,片内RAM增加一个数量级以上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、摘要在信号处理中,滤波占有十分重要的地位。
数字滤波是数字信号处理的基本方法。
数字滤波与模拟滤波相比有很多优点。
它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求DSP 芯片实现数字滤波具有稳定性好、精确度高、不受环境影响等优点。
数字滤波器分为有限冲激响应滤波器FIR 和无限冲激响应滤波器IIR ,由于FIR 是全零点的滤波器,因而系统总是稳定的。
这对于系统综合是很重要的。
本实验采用TI 公司的TMS320C5409型号的DSP 芯片实现具有线性相位的FIR 低通数字滤波。
二、利用Matlab 获取滤波器系设h(n)(n=0,1,2,…,N 一1)为滤波器的冲激响应,输入信号为x(n),则FIR 滤波器就是要实现下列差分方程:1()()()N k y n h k x n k -==-∑上式就是FIR 滤波器的差分方程。
FIR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。
它的单位脉冲响应h(n)是一个有限长序列。
由上面的方程可见,FIR 滤波箅法实际上足一种乘法累加运算,它不断地输入样本x(n),经延时做乘法累加,再输出滤波结果y(n)。
FIR 滤波器的一个分支的延时线,把每一节的输出加权累加,得到滤波器的输出。
结构如图1所示,它由一条均匀间隔的延迟线上对抽失信号进行加权求和构成。
FIR 滤波器的直接型结构图本实验用MATLAB 的fdatool 功能实现滤波器设计。
具体方法如下:x(n)h(0)h(1)h(2)h(N-1)y(n)(1)输入fdatool,弹出滤波器设计窗口。
输入设计指标,令采样频率为20000Hz,开始衰减的频率为2500Hz截止频率为4600Hz,衰减为50db,软件自动完成设计。
(2)点击File>Export,选择参数,导出滤波器系数,再由导出的参数乘32768后取整数部分转换为十六进制数,即为设计的十六进制系数。
设计的系数如下:0.0042058395684075245 0089H-0.0075151837349766307 -00F5H-0.035418063175322867 -0487H-0.059588974025311756 -079DH-0.035994625237031161 -0498H0.062526635535184144 0800H0.20563298596047033 1A51H0.31249419559483949 27FCH0.31249419559483949 27FCH0.20563298596047033 1A51H0.062526635535184144 0800H-0.035994625237031161 -0498H-0.059588974025311756 -079DH-0.035418063175322867 -0487H-0.0075151837349766307 -00F5H0.0042058395684075245 0089H得出的结果是一个16阶的FIR低通滤波器。
三、滤波器系数验证滤波器的系数验证及软件仿真选用MATLAB的sptool功能实现。
Sptool是MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理箱中的大部分函数,可以方便快捷地自动完成对信号、滤波器及频谱的分析、设计和浏览。
本实验中具体步骤如下:(1)在MATLAB命令窗口中输入以下命令,生成混频信号,信号中包含了低频500Hz和高频8000Hz。
Fs=20000;t=(1:100)/Fs;in=sin(2*pi*t*500)+sin(2*pi*t*8000);(2)在命令窗口中输入sptool,进入仿真界面,在File>Import中导入输入信号in,采样频率Fs,命名sig1,在Filter下的选项中选择New新建滤波器,方法与二相同,点击Apply,生成输出信号,命名为output。
、(3)在Signals的View下观察输入、输出的时域波形输入时域波形输出时域波形(4)在Spectra下点击creat,选择FFT方式,Apply生成频域波形输入信号频谱输出信号频谱由仿真可看出,滤波器使信号中500Hz的低频分量通过,抑制了8000Hz的高频分量,实现了低通滤波,滤波器设计正确。
四、DSP实时滤波器代码合成过程程序设计的总体思路是:启动AD模块对输入的模拟信号进行模数转换,每采集到一个数据就送人DSP滤波运算,运算结果送DAC转换为模拟量。
不断地重复上述过程,在DAC7625的输出端就得到滤波后的模拟信号。
为了精确地控制ADS7864的采样率,使用DSP内部的定时器控制采样时间间隔T,设置定时器的定时时间等于采样时间间隔T,并让它工作在中断方式,则定时器每过T时间就向CPU发出中断请求,CPU响应中断请求,转去执行中断服务程序,在中断服务程序中读取A/D转换结果,对转换结果进行滤波运算,并将运算结果送D/A转换器转换为模拟量。
因此,程序分为A/D转换、定时器中断、中断服务程序、D/A转换等几个模块。
五、实时滤波器软件流程和硬件组成框图及核心代码陈述1、定时器初始化代码如下,设置中断频率prd 为00C7h 即十进制199,tcr 为082Eh 即令TDDR第四位为14,十进制为15,由中断周期计算公式公式TINT 频率=11111+⨯+⨯PRD TDDR tc算出,其中tc 为时钟周期,DSP 中的时钟频率为60MHz ,由此算的采样频率Fs=20000Hz 。
stm #0010h,tcr ;TSS 置1,便于接下来的设置stm #00C7h,prd ;置位prd 以设置中断频率,十进制为199 stm #082Eh,tcr ;tcr 初始化,令TDDR 的低四位为14,10进制为152、中断服务程序如下,每处理一个数据调用一次jump 子程序,由a 逐次-1计数。
jump: SUB #1h,a rsbx xf rpt #5 nop主程序开始 等待定时中断堆栈设置 寄存器设置 启动A/D 转换定时器初始化 开中断 中断服务程序开始读取A/D 转换结果启动A/D 转换进行滤波运算转换结果有效?运算结果送D/A 转换器返回主程序 YNportr 07fffh,*ar2rpt #5nopssbx xfnopportr 0ffffh,*ar5nopnopstl a,*ar5;暂存累加器A的值nopnopcall filter_startnopnopld *ar5,anopnopportw *ar2,0bfffhnopnopRete(2)滤波程序如下,由A/D转换来的数据存在寄存器ar2中,经公式1()()()Nky n h k x n k-==-∑处理后生成滤波后的数据存放在寄存器ar3中,送到D/A转换。
filter_start:LD *ar2,AnopnopnopnopSFTA A,6nopnopnopnopstl A,*ar3nopnopnopnopRPT #K_A-1-1MAR *ar3-0%MPY *ar3+0%,#f15,B LD B,AMPY *ar3+0%,#f14,B ADD B,AMPY *ar3+0%,#f13,B ADD B,AMPY *ar3+0%,#f12,B ADD B,AMPY *ar3+0%,#f11,B ADD B,AMPY *ar3+0%,#f10,B ADD B,AMPY *ar3+0%,#f9,B ADD B,AMPY *ar3+0%,#f8,B ADD B,AMPY *ar3+0%,#f7,B ADD B,AMPY *ar3+0%,#f6,B ADD B,AMPY *ar3+0%,#f5,B ADD B,AMPY *ar3+0%,#f4,B ADD B,AMPY *ar3+0%,#f3,B ADD B,AMPY *ar3+0%,#f2,B ADD B,AMPY *ar3+0%,#f1,B ADD B,AMPY *ar3+0%,#f0,B ADD B,ASFTA A,-4STH A,*ar2NOPfilter_end:RET六、实时滤波器结果展示低频输入输出波形高频输入输出波形示波器通道一接A/D输入端,通道2接D/A输出端,由信号发生器在输入端输入正弦信号,改变输入频率观察实际滤波结果。
实际滤波结果如下:开始衰减频率:2.2kHz截至衰减频率:3.8kHz结果显示2.2kHz之前信号几乎无衰减,3.8kHz之后信号基本衰减到0,故实际过渡带为2.2kHz~3.8kHz。
用软件方法从CCS上查看滤波程序运行后的结果,方法为点击View Graph Time/Frequency…,按图12所示填入相应参数,看频域图要把Display type 选择为FFT Magnitude。
输入信号和滤波后输出信号的时域图和频域图如图13所示。
观测信号波形的属性设置七、误差分析设计的滤波器开始到截止的波段为2.5kHz~4.6kHz,实际开始衰减的频率为2.2kHz偏低;实际截止频率为3.8kHz偏低;原因可能有:1、滤波器参数设计误差2、DSP芯片硬件精确度不足引起误差3、滤波程序设计时采样频率设计不当引起误差八、感想本次实验让我收获了很多。
首先,通过实时滤波器参数设计,让我对数字信号处理中的FIR滤波器有了更深入的了解,也加强了对MATLAB的信号处理功能的运用能力;由于实时滤波器用的是汇编语言实现,这深化了我对DSP芯片内部各模块的理解及各种寄存器的运用。