武汉理工基于fir的高通滤波器dsp综合报告内容摘要:

行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应 用的目的,其应用范围涉及几乎所有的工程技术领域。 在数字信号处理的应用中,数字滤波器很重要而且得到了广泛的应用。 按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应( IIR)与有限长冲击响应( FIR)等等。 其中,线性时不变的数字滤波器是最基本的类型;而由于数字系统可以对延时器加以利用,因此可以引入一定程度的非因果性,获得比传统的因果滤波器更灵活强大的特性; IIR 滤波器的特征是具有无限持续时间冲激响应,这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器,而 FIR 滤波器的冲 激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现,但其结构主要还是是非递归结构,没有输出到输入的反馈,并且 FIR 滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真,而线性相位体现在时域中仅仅是 h(n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的,且不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。 相对于 IIR 滤波器, FIR 滤波器有着易于实现和系统绝对稳定的优势,因此得到广泛的应用;对于时变系统滤波器 的研究则导致了以卡尔曼滤波为代表的自适应滤波理论的产生。 自适应滤波即利用前一时刻已获得的滤波器参数等结果,自动地调节(更新)现时刻的滤波器参数,以适应信号和噪声未知的统计特性,或者随时间变化的统计特性,从而实现最优滤波。 实验 三 基于 DSP的定时器 实现数字振荡器 一、实验目的 DSP 技术一般指将 DSP 处理器用于完成数字信号处理的方法与技术。 目前的 DSP 芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。 在本实验中将介绍另一种获得正弦 /余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。 本实验除了学习数字振荡器的 DSP 实现原理外,同时还学习 C54X 定时器使用以及中断服务程序编写。 另外,在本实验中我们将使用汇编语言和 C 语言分别完成源程序的编写。 3 实验原理 ( 1)数字振荡器原理 设一个传递函数为阵线序列 sinkwT,其 z 变换为 111 BzAz1 Cz)z(H 其中, A= 2coswT, B= 1,C=sinwT。 设初始条件为 0,求出上式的反 Z 变换得 : y[k]=Ay[k1]+By[k2]+Cx[k1] 这是个二阶差分方程,其单位冲击响应即为 sinkwT。 利用单位冲击函数 x[k1]的性质,即仅当 k=1 时,x[k1]=1,代入上式得: k=0 y[0]=Ay[1]+By[2]+0=0 k=1 y[1]=Ay[0]+By[2]+c=c k=2 y[2]=Ay[1]+By[0]+0=Ay[1] k=3 y[3]=Ay[2]+By[1] k=n y[n]=Ay[n1]+By[n2] 在 k﹥ 2 以后, y[k]能用 y[k- 1]和 y[k2]算出,这是一个递归得方法。 根据上面得说明,我们可以开始数字振荡器得设计。 设该振荡器得频率为 2kHz,采样率为 40kHz(通过定时器设置,每隔 25us 中断一次,即产生一个 y[n])则递归得差分方程系数为: A= 2coswT=2cos(2 PI 2020/40000)=2 B=1 C=sinwT=sin(2 PI 2020/40000)= 79BC22A 15  C00022B 15  13C722C 15  为了便于定点 DSP 处理,我们将所有系数除以 2,然后用 16 为定点格式表示为: 这便是本实验中查生 2kHz 阵线信号的三个系数。 在本实验中,主程序在初始化时先计算出 y[1]和 y[2],然后开放定时器中断。 以后每次进入定时器中断服务程序时,利用前面的 y[1]和 y[2],计算出新的所有 y[n],通过 CCS 提供的图形显示工具,我们将在图形窗口中看到一个正 弦信号波形。 下面时初始化和中断服务程序代码片断: 初始化程序代码 初始化 y[1]和 y[2]: ssbx FRCT :置 FRCT =1,准备进行小数乘法运算 st # INIT_A,AA :将常数 A 装入变量 AA st # INIT_B,BB :将常数 B 装入变量 BB st # INIT_C,CC :将常数 C 装入变量 CC pshd CC :将变量 CC 压入堆栈 popd y2 :初始化 y2=CC ld :装 AA 到 T 寄存器 mpy y2,a :y2 乘系数 A,结果放入 A 寄存器 sth a,y1 :将 A 寄存器得高 16 位存入变量 y1 中断服务程序代码 ld BB,T :将系数 B 装入 T 寄存器 mpy y2,a :y2 乘系数 B,结果放入 A 寄存器 ltd y1 :将 y1 装入 T 寄存器,同时复制到 y2 mac AA,a :完成新正弦数据的计算, a 寄存器中为 y1*AA+y2*BB sth a,l,y1 :将新数据存入 y1,因所有系数都除过 2,所以在 保存结果时转移一位,恢复数据正常大小 sth a,l,y0 :将新正弦 数据存入 y0 (2)C54X 的定时器操作 C54X 的片内定时器利用 CLKOUT 时钟计数,用户使用三个寄存器( TIM,PRD,TCR)来控制定时器,参见表 4- 1。 在表 4- 2 中列出了定时器控制寄存器的各个比特位的具体定义。 ‘ VC5402 得另一个定时器(定时器 1)的控制寄存器分别为: 0 30( TIM1), 0 31( PRD1), 0 32( TCR1)。 表 4- 1‘ VC5402 定时器 0 的相关寄存器 寄存器地址 名称 用途 0024h TIM 定时器寄存器,每计数一次自动减一 0025h PRD 定时器周 期寄存器,当 TIM 减为 0 后 ,CPU 自 动将 PRD 的值装入 TIM 0026h TCR 定时器控制寄存器 表 4- 2 定时器控制就存起( TCR) bit 概要 比特 名称 功能 15- 12 保留 读出时为 0 11 soft 该比特位与 10 位配合使用以决定定时器在使用仿真调试 时的状态 . Soft=0 当进入仿真调试时,定时器立即停止工作。 Soft=1 当计数器被减为 0 后,停止工作。 10 free 该比特位与 11 位配合使用以决定定时器在使用仿真调试 时的状态 free=0 根据 11 比特位决定定时器状态 free=1 忽略 11 比特位,定时器不受影像 9- 6 PSC 定时器预置计数器。 当 PSC 减为 0 后, CPU 自动将 TDDR装入,然后 TIM 开始减 1。 5 TRB 定时器复位。 当 TRB= 1 时, CPU 将 PRD 寄存器的值装入 TIM 寄存器,将 TDDR 的值装入 PSC 4 TSS 定时器停止状态。 当系统复位时, TSS 被清除,定时器立刻开始工作。 TSS= 0 表示启动定时器 TSS= 1 表示停止定时器 0- 3 TDDR 定时器扩展周期。 当 PSC 减到 0, CPU 自动将 TDDR 的值装入 PSC,然后 TIM 减。 所以整个定时器得 周期寄存器可以有 20 个比特( PRD+TDDR) . 从上面的介绍可以看到定时器实际上可以有 20 个比特的周期寄存器。 它对于 CLKOUT 信号计数,先将PSC 减 1,知道 PSC 为 0。 这是 CPU 发出 TINT 中断,同时在 TOUT 引脚输出一个脉冲信号,脉冲宽度与 CLKOUT 一致。 然后用 PDR 重新装入 TIM,重复下去一直到系统或定时器复位。 因而定时器中断得频率由一下的公式决定: TINT 的频率=)1P R D()1T D D R(t 1c  其中 tc 表示 CLKOUT 的周期。 定时器当前得值可以通过读取 TIM 寄存器和 TCR 寄存器的 PSC 比特位得到。 下面时本实验中初始化定时器得程序片段: stm 10h,TCR :停止定时器 stm 2499,PDR : 设置 PDR 寄存器值为 2499 , TINT 中 断 频 率 为Foutclk/(2499+1)=100MHz/2500=40KHz stm 20h,TCR :重新装入 TIM 和 ,PSC,然后启动定时器 ( 3) C54X 中断的使用 在 C54X 中用户可以通过中断屏蔽酒酿 起 IMR 来决定开放或关闭一个中断请求。 图 4- 1 出了 C5402 得 IMR 寄存器的各个比特位的定义。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。