毕业设计(论文)FIR滤波器的MATLAB设计以及DSP实现

上传人:1666****666 文档编号:36282292 上传时间:2021-10-30 格式:DOC 页数:31 大小:251KB
收藏 版权申诉 举报 下载
毕业设计(论文)FIR滤波器的MATLAB设计以及DSP实现_第1页
第1页 / 共31页
毕业设计(论文)FIR滤波器的MATLAB设计以及DSP实现_第2页
第2页 / 共31页
毕业设计(论文)FIR滤波器的MATLAB设计以及DSP实现_第3页
第3页 / 共31页
资源描述:

《毕业设计(论文)FIR滤波器的MATLAB设计以及DSP实现》由会员分享,可在线阅读,更多相关《毕业设计(论文)FIR滤波器的MATLAB设计以及DSP实现(31页珍藏版)》请在装配图网上搜索。

1、FIR滤波器的MATLAB设计以及DSP实现摘要:在数字信号处理应用中,数字滤波器占有十分重要的地位。本文首先介绍了FIR数字滤波器的原理,接下给出了在MATLAB环境下设计滤波器的方法,同时对本论文中的FIR数字滤波器给以设计,最后用DSP来实现。关键词:FIR滤波器 ; MATLAB ; DSP MATLAB design and realization based on DSP of FIR filterAbstract: In the digital signal processing application, the digital filter holds the extremel

2、y important status. Firstly, the FIR digital filter principle is introduced in this paper. Then, the paper provides the method of the filter designing under the MATLAB environment , simultaneously it gives the designing of the digital filter. Last the paper offers the realization of the digital filt

3、er by DSP.Key word: FIR filter ; MATLAB ; DSP目录1 引言41.1 设计背景41.2 工具简介41.3 本文的内容提要42 FIR滤波器的基本原理和设计方法 42.1 FIR滤波器的基本结构52.2 FIR滤波器的基本步骤52.3 FIR滤波器的设计方法62.4 FIR滤波器的MATLAB设计73 FIR滤波器的DSP实现93.1 DSP实现方式93.1.1 硬件平台TMS320VC5402 DSK93.1.2 软件开发环境 Code Composer Studio(CCS)103.2 FIR滤波器的实现方法.113.3 FIR滤波器的DSP实现 .

4、113.3.1使用带MAC 指令的循环寻址实现FIR 滤波器.113.3.2 利用C54x 系列芯片的提供的FIRS 指令来实现FIR 滤波器.123.3.3 DSP实现.144 结束语18参考文献19致谢20附录211引言1.1 设计背景随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理应用中,数字滤波器占有十分重要的地位。数字滤波和模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压飘移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相

5、位的严格要求。低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,由于FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。1.2 工具简介本次设计硬件平台采用TI公司提供的DSP入门者套件(DSK, DSP Starter Kit)系列的DSK5402;软件开发平台采用Code Composer Studio(CCS)。具体内容将在第三章介绍。1.3 本文的内容提要本文第一部分是引言,第二部分介绍滤波器的基本原理和设计方法 ;第三部分是FIR滤波器的DSP实现;最后,第四部分是结论,对本文作了总结。2 FIR滤波器的基本原理和设计方法2.1 FIR滤波器

6、的基本结构滤波器的功能是把输入序列通过一定的运算,变成输出序列。数字滤波器一般可用如下的差分方程来描述:2-1其中,为输入序列,为输出序列,和b为滤波器系数,N是滤波器的阶数。若上式中所有b均为零,则有 ,这就是FIR滤波器的差分方程,一般我们将其表示为: 2-2对上式Z进行变换得到FIR滤波器的传递函数为: = 2-3FIR滤波器的一般结构如图所示,图1 FIR滤波器的实现结构图2.2 FIR滤波器的设计步骤数字滤波器设计的基本步骤如下:1 确定指标在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在

7、频域中给出幅度和相位响应。幅度指标主要以两种方式给出。第一种是绝对指标。它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。第二种指标是相对指标。它以分贝值的形式给出要求。在工程实际中,这种指标最受欢迎。对于相位响应指标形式,通常希望系统在通频带中仍有线性相位。运用线性相位响应指标进行滤波器设计具有如下优点:只包含实数算法,不涉及复数运算;不存在延迟失真,只有固定数量的延迟;长度为N的滤波器(阶数为N-1),计算量为N/2数量级。2 逼近确定了技术指标后,就可以建立一个目标的数字滤波器模型。通常采用理想的数字滤波器模型。之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的

8、目标。3 性能分析和计算机仿真上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。2.3 FIR滤波器的设计方法FIR(Finite Impose Response filter)滤波器设计的任务是选择有限长度的h(n),使传输函数H(e)满足一定的幅度特征和线性相位要求。由于FIR滤波器很容易实现严格的线性相位,所以FIR数字滤波器设计的革新思想是求出有限的脉冲响应来逼近给定的频率响应。目前常用的FIR滤波器的设计方法主要有三种,分别是窗函数法、频率采样

9、法和切比雪夫等波纹逼近优化设计法。1窗函数设计法设计的基本思想是:从时域出发,把理想的无限长的用一定形状的窗函数截取成有限长的h(n),以此h(n)来逼近,从而使得到的频率响应相接近。设计过程如下: h(n) IDTFT: Inverse Discrete Time Fourier Transform优点是简单、实用,缺点是截止频率不易控制。2频率抽样法设计的基本思想是:从频域出发,把给定的理想的频率响应以等间隔抽样,所得到的h(k)作逆离散傅氏变换,从而求得h(n),并用与之相应的频率响应去逼近理想的频率响应。设计过程如下: h(k) h(n) 优点是直接在频域进行设计,便于优化,缺点是截止

10、频率不能自由取值。3等波纹逼近计算机辅助设计法前两种方法虽然在频率采样点上的误差非常小,但在非样点上的误差沿频率轴不是均匀分布的,而且截止频率的选择还受到了不必要的限制。因此又由切比雪夫理论提出了等波纹逼近计算机辅助设计法。它不但能准确的指定通带和阻带的边缘,而且还在一定意义上实现了绝对所期望的频率响应实行最佳逼近。2.4 FIR滤波器的MATLAB设计MATLAB是英文Matrix Laboratory(矩阵实验室)的缩写,它是由美国MathWorks公司推出的用于数值计算和图形处理的数学计算环境,一套用于科学计算的可视化高性能语言与软件环境。它集数值分析、矩阵运算、信号处理和图形显示于一体

11、,构成了一个界面友好的用户环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。在设计数字滤波器时,通常采用MATLAB来进行辅助设计和仿真。MATLAB设计:设计一个38 阶的FIR 低通滤波器,其采样频率Fs 为25KHZ,通带截止频率 1.2KHZ ,阻带截止频率为2.8KHZ,阻带衰减为40dB。1滤波器技术指标的求取通带截止频率:阻带截止频率:阻带最小衰减:2滤波器系数的求取本文介绍用Matlab软件中数字信号工具箱(signal processing toolbox)内的滤波器设计与分析工具(Filter design and

12、Analysis Tool)来求取的方法。3采用窗函数法来设计,程序如下所示:n=38f=0 0.096 0.224 1.000m=1 1 0 0b=fir2(n-1,f,m)h,w=freqz(b,1,256,1)h=abs(h)h=20*log10(h)plot(w,h),gridxlabelylabel程序运行后幅频特性曲线如图2所示,滤波器的系数(h(n))如下:Columns 1 through 6 -0.0000 -0.0001 -0.0001 0.0001 0.0003 0.0004 Columns 7 through 12 -0.0001 -0.0019 -0.0050 -0.

13、0089 -0.0118 -0.0107 Columns 13 through 18 -0.0024 0.0153 0.0424 0.0762 0.1110 0.1398 Columns 19 through 24 0.1561 0.1561 0.1398 0.1110 0.0762 0.0424 Columns 25 through 30 0.0153 -0.0024 -0.0107 -0.0118 -0.0089 -0.0050 Columns 31 through 36 -0.0019 -0.0001 0.0004 0.0003 0.0001 -0.0001 Columns 37 thr

14、ough 38 -0.0001 -0.0000图 2 窗函数法设计的低通滤波器幅频特性曲线3 FIR滤波器的实现3.1开发平台3.1.1硬件开发环境TMS320VC5402 DSK本次FIR滤波器的硬件实现是在DES5402PP-U实验系统平台上完成的。DES5402PP-U是成都银杏科技有限责任公司与美国德州仪器(TI)电子科技大学DSPs技术/培训中心联合开发的第三代教学实验设备。该设备采用广泛使用的TMS320VC5402为核心,配备包括AD/DA、键盘、液晶等I|O在内的完整的DSP系统。TMS320VC5402 DSK是一套性价比较高的DSP入门套件(DSK,DSP Starter

15、Kit),该DSK包括:1 100 MHz TMS320VC5402 DSK2 64K字(16位),个等待周期的外部SRAM3 256K字FLASH存储器4 自带JTAG控制器,用并口与PC机相连5 DAA电话线接口6 话筒扬声器音频接口7 RS-232异步数据接口8 外部扩展子板接口9 V DC电源为了配合硬件工作,该DSK中还包括一套DSK版的CCS。3.1.2软件开发环境 Code Composer Studio(CCS)为了与DSK5402硬件平台相配套,TI提供了集成化的软件开发环境CCS IDE(Code Composer Studio Integrated Develop Env

16、ironment)。CCS专门为TI的DSP设计,扩充了基本的开发工具,增加了调试和实时分析功能,主要有以下特点:1项目管理和编辑工具,用来对项目进行创建、配置、生成和运行,支持通过makefile和命令行来生成可执行代码;2代码生成工具包括C编译器、汇编器和链接器等工具,另外CCS还提供了可视化的链接工具Visual Linker,帮助用户来调整代码和数据内存,实现程序内存的最优化;3 CCS提供了丰富的调试工具,支持多种模拟器和仿真版,支持在程序运行中探测存储器特定地址的值,用户可以方便地在PC和目标版上交换数据;4提供了丰富的函数库支持,如CSL、DSPLIB以及IMGLIB等;5支持实

17、时内核DSP/BIOS,极大的便利了程序的开发,使开发者能够把精力集中在对算法的研究上 。3.2 FIR滤波器的实现方法数字滤波器的实现方法一般有以下几种:1采用加法器、乘法器、延时器设计专用的滤波电路。2在通用计算机系统中加上专用的加速处理机设计实现。3用通用的可编程DSP芯片实现。4用专用的DSP芯片实现。在一些特殊的场合,要求的信号处理速度极高,用通用DSP芯片很难实现。这种芯片将相应的滤波算法在芯片内部用硬件实现,无需进行编程。5采用FPGA/CPLD设计实现。在上述几种方法中,第种方法的缺点是速度较慢,一般可用于DSP算法的模拟。第、种方法专用性强,应用受到很大的限制。第、种方法都可

18、以通过编程来实现各种数字滤波,但是,第种因有专用的指令来实现滤波运算编程实现容易,而第种方法编程实现较为困难。3.3 FIR滤波器的DSP实现如果FIR 滤波器的冲激响应为h(0),h(1), .,h(N-1) 。表示滤波器在n 时刻的输入,则n 时刻的输出为: 3 -1使用MAC 或FIRS 指令可以方便地实现上面的计算。3.3.1使用带MAC 指令的循环寻址实现FIR 滤波器为了能正确使用循环寻址,必须先初始化BK,块长为N。同时,数据缓冲区和冲激响应(FIR 滤波器的系数)的开始地址必须是大于N 的2 的最小幂的倍数。例如,N=11 ,大于N 的最小2 的幂为16,那么数据缓冲区的第一个

19、地址应是16 的倍数,因此循环缓冲区起始地址的最低4 位必须是0。图3 FIR 滤波器存储器里的数据存储方式FIR 滤波器存储器里的数据存储方式中滤波系数指针初始化时指向h(N-1) ,经过一次FIR 滤波计算后,在循环寻址的作用下,仍然指向h(N-1) 。而数据缓冲区指针指向的是需要更新的数据,如x(n)。在写入新数据并完成FIR 运算后,该指针指向x(n-(N-1)。所以,使用循环寻址可以方便地完成滤波窗口数据的自动更新。使用带MAC 指令的循环寻址模式实现FIR 滤波器,程序片段如下:(输入数据在AL 中,滤波结果在AH 中) STM #1,AR0 ; AR0=1 STM #N,BK ;

20、 BK=N, 循环寻址BUFFER 大小为N STL A,*FIR_DATA_P+% ; 更新滤波窗口中的采样数据 RPTZ A,#(N-1) ;重复MAC 指令N 次,先将A 清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ; 完成滤波计算。注意FIR 滤波系数 ; 存放在数据存储区3.3.2利用C54x 系列芯片的提供的FIRS 指令来实现FIR 滤波器有限单位冲激响应呈现对中心点对称的FIR 滤波器,具有线性相位响应。比如在语音信号处理中,采用线性相位响应可避免可能降低信号质量的波形失真。长度为N 的线性相位FIR 滤波器的输出表达式为: 3-2利用FIRS

21、指令,需要将输入数据缓冲分成两个,循环缓冲区大小寄存器的值设为N/2。图4显示了输入序列在两个循环缓冲器里的存储情况。设辅助寄存器AR2 指到缓冲区1(Buffer1)的顶部,AR3 指到缓冲区2(Buffer2)的底部。每次进行滤波之前,应先将缓冲区1 顶部的数据移到缓冲区2 的底部,新来的一个样本存储到缓冲区1 中时,并对缓冲区1 指针AR2 加1(使用循环寻址)。处理器然后使用FIRS 指令进行乘加运算,即h(0)x(0)+x(-N+1)。滤波程序每步运算后,AR2指向数据移动到的下一个窗口,而AR3则指向下一个输入数据。对于下一步运算,AR2指向地址1,AR3指向地址N/2-2。使用带

22、FIRS 指令的循环寻址模式实现FIR 滤波器,程序片段如下:(输入数据在AL 中,滤波结果在B 中) STM #1,AR0 ; AR0=1 STM #(N/2),BK ; BK=N/2,循环寻址BUFFER 大小为N MVDD *ar2, *ar3 ; 更新Buffer2 STL A, *ar2+% ; 更新滤波窗口中的采样数据 ADD *ar2+0% , *ar3+0% ; 初始化A RPTZ B, #(N/2-1) ; 重复FIRS 指令N/2 次,先将B 清零 FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。注意FIR 滤波系数存;放在程序存

23、贮区,filter_coff 为系数起始地址MAR *ar2-% ; 修改Buffer1 指针 MAR *+ar3(-2)% ; 修改Buffer2 指针 图4输入序列的存储形式3.3.3 DSP实现利用DES5402PP 实验箱的模拟信号输出通道产生一个1KHz 的方波,然后利用信号输入通道对产生的方波进行低通滤波,得到一个1KHz 的正弦信号,并使用CCS 的图形显示工具显示输入和输出的波形。这里我们使用的是一个38 阶的FIR 低通滤波器,其采样频率Fs 为25KHZ,通带截止频率 1.2KHZ ,阻带截止频率为2.8KHZ,阻带衰减为40dB。1 AC01 的初始化DES5402PP

24、使用AC01 作为模拟信号接口。AC01 提供一个14bit 的D/A 和一个14bit 的A/D 通道。AC01 与VC5402 通过串口0 连接。DSP 通过串口可以控制AC01 的采样频率、增益、低通/高通滤波器的截止频率等参数。这一步是通过读写AC01 的寄存器来实现的。 2 1KHz 方波信号的产生利用AC01 的D/A 通道产生一个1KHz 的方波,作为FIR 滤波器的输入信号。由于串口发送中断将每0.04ms(25KHz )产生一次,所以我们将一个周期的方波信号分25 次送出,这样经D/A 变化后便可得到1KHz 的方波。3 串口的初始化和串口中断服务程序通过DSP 的串口0 输

25、入/输出数据。在串口通讯中,数据时钟和帧同步信号都由AC01 产生,所以VC5402 将使用外部时钟和帧同步信号。完成串口设置后,还需要修改中断向量表以便正确响应串口0 的接收和发送中断请求。使用发送中断产生方波信号和完成对AC01 的初始化;使用接收中断存贮输入的数据,并设置新数据到达标志。主循环在检测到该标志后,调用FIR 滤波程序,完成对输入数据的处理。根据3.3.1所述的算法编制程序(见附录),并将程序移植到TMS320VC5402实验箱的MCBSP0的中断服务程序,并将形成的可执行文件加载到实验箱上运行。由TMS320VC5402实验箱的模拟输入口输入模拟信号,经TLC320A/D转

26、换芯片,按25kHz的采样频率采样转换成数字信号,输入DSP。滤波后经D/A输出模拟量,结果证实该程序可实现对采样率为25kHz的模拟信号进行实时滤波处理。在CCS5000上进行仿真调试运行,得到的滤波前的输入和滤波后的输出频谱如图5、图6所示:图5 滤波前的输入波形图6 滤波后的输出波形4 结语数字滤波器的应用十分广泛,运行MATLAB语言,能很方便、快捷地设计出具有严格要求(如线性相位等)的FIR滤波器,且参数的修改也十分方便。用DSP芯片实现低通FIR数字滤波器,除了具有准确度高、不受环境等优点外,由于DSP芯片具有可编程特性,程序的可移植性好,具有较好的灵活性。在实际应用中,只需按要求

27、修改滤波器参数,并对程序作较少的改动,即可实现不同截止频率的低通滤波器,实用性较强。参考文献1彭红平,杨福宝.基于MATLAB的FIR数字滤波器设计J.武汉理工大学学报,20052张亚妮.基于MATLAB的数字滤波器设计J.辽宁工程技术大学学报,20053王宝林,刘建平. DSP在TMS320VC54XDSP上的实现J.计算机与信息技术4周金治. 基于MATLAB与DSP的FIR数字滤波器软硬件实现J.现代电子技术,20055彭启琮,李玉柏,管庆.DSP技术的发展与应用M.北京:高等教育出版社,20026管庆.DSP54xx超强型仿真教学实验系统使用与实验指导E. 电子科大德州仪器DSPs培训

28、中心培训资料,20017Sen M.kuo ,Bob H.Lee .实时数字信号处理M.卢伯英译.北京:中国铁道出版社,20058丁玉美,高西全.数字信号处理M .第二版.西安:西安电子科技大学出版社,2001谢 辞大学最后的毕业设计,也是我第一次独立完成一个较大的项目。能够顺利地走到现在,这期间获得了许多人的帮助和指导,特别是我的导师穆美好。在整个毕业设计过程中,从最开始的带我入门,中期的耐心解决我的问题,到最后的论文写作,穆老师都给了我很大的帮助,让我有足够独立安排工作的自由,又以严谨的态度对我的工作提出了要求,给予了指导,让我能够顺利完成毕业设计。我愿借机会向他们表示衷心的感谢!通过本次

29、毕业设计,我不仅对所学的知识有了进一步了解,而且学到了很多新东西。路漫漫其修远兮,吾将上下而求索。我愿在未来的学习和研究过程中,以更加丰硕的成果来答谢曾经关心、帮助和支持过我的所有老师和同学。附 录 .title test vc5402bootloader. .ref _c_int00 .mmregsgpiocr .set 3chgpiosr .set 3dhdxr10 .set 23hdrr10 .set 21hspsa0 .set 38hspcr10 .set 39hspcr20 .set 39hxcr10 .set 39hpcr0 .set 39hdxr11 .set 43hspsa1

30、.set 48hspcr11 .set 49hspcr21 .set 49hxcr11 .set 49hpcr1 .set 49hsrgr1 .set 49hsrgr2 .set 49hswcr .set 2bhtimer_count .set 060hmcbsp_init .set 061hwave_ptr .set 062his_new_data .set 063hnew_ad .set 064hout_wave_ptr .set 065ht_ar2 .set 066ht_ar3 .set 067htemp .set 068hwave_buf .set 0900h out_wave_buf

31、 .set 01000hN .set 38 ; FIR tapsfir_coef_buf .set 100h ; FIR coef bufferfir_data .set 200h ; FIR windows data buffer ! .text;-; interrupte vector table !;-rs b _c_int00 nop nopnmi b _ret nop nopsint17 b _ret nop nopsint18 b _ret nop nopsint19 b _ret nop nopsint20 b _ret .word 0,0sint21 b _ret .word

32、0,0sint22 .word 01000h .word 0,0,0sint23 .word 0ff80h .word 0,0,0sint24 .word 01000h .word 0,0,0sint25 .word 0ff80h .word 0,0,0sint26 .word 01000h .word 0,0,0sint27 .word 0ff80h .word 0,0,0sint28 .word 01000h .word 0,0,0sint29 .word 0ff80h .word 0,0,0sint30 .word 01000h .word 0,0,0int0 b _ret nop no

33、pint1 b _ret nop nopint2 b _ret nop noptint b timer nop nopbrint0 b receive nop nopbxint0 b transmit nop noptrint b _ret nop noptxint b _ret nop nopint3 b _ret nop nophpint b _ret nop nopq26 .word 0ff80h .word 0,0,0q27 .word 01000h .word 0,0,0q28 .word 0ff80h .word 0,0,0q29 .word 01000h .word 0,0,0q

34、30 .word 0ff80h .word 0,0,0q31 .word 01000h .word 0,0,0;-; end of interrupte vector table !;-_c_int00: stm #2020h,pmst ; vector table start: 0x2000 ssbx intm ; close all int ! (ssbx intm) ssbx sxm ; extend sign ! ssbx frct ; faction multiply stm #10h,26h ; stop TIMER0 ! stm #10h,36h ; stop TIMER1 !

35、stm #0ffh,sp ; sp= 0x0ff ld #0,dp ; dp=0 stm #0ffffh,ifr ; clear all int ! stm #20h,imr ; bit5-BXINT0, bit4-BRINT0, enable BXINT0 stm #02492h,swwsr ; all 2 waits ! stm #0,swcr;/*-; The following codes switch to 100MHz clock !;-*/; stm #0,58h;wait_pll:; ldm 58h,a; and #1,a; bc wait_pll,aneq; stm #97f

36、fh,58h ; switch pll*10 - 100M clk rpt #100 nop;*; initalize RAM, Variable.;* stm #wave_buf,ar6 stm #1,ar0 rpt #24 mvpd wave_data,*ar6+0 ; move wave data to wave_buf - 0x6000h stm #wave_buf,wave_ptr ; save wave bufferptr stm #out_wave_buf,out_wave_ptr ; save out wave bufferptr, because use ; circular

37、 address, so when save out_wave ; date,must + ! stm #fir_coef_buf,ar6 rpt #N-1 mvpd fir_coef,*ar6+ ; move fir coef to fir_coef_buf(in data mem) stm #fir_coef_buf,t_ar2 ; stm #fir_data,t_ar3 stm #0aa55h,mcbsp_init ; when mcbsp_init=0xaa55, transmit for init ac01 stm #5,timer_count ; init variable tim

38、er_count ! stm #0,is_new_data ; if is_new_data =1 , has new AD data by slave ac01 ! stm #1000h,ar0 stm #1800h,ar5 stm #400h,bk ld *ar0,t ld #0,b;*; The following codes are used to initalize McBSP0 !;* stm #0,spsa0 ; choose SPCR10 stm #2000h,spcr10 ; receive sign_extend in DRR stm #1,spsa0 ; choose S

39、PCR20 stm #0c0h,spcr20 ; fs - int ! stm #2,spsa0 ; choose RCR10 stm #40h,39h stm #3,spsa0 ; choose RCR20 stm #0,39h stm #4,spsa0 ; choose XCR10 stm #40h,xcr10 stm #5,spsa0 ; choose XCR20 stm #0,39h stm #0eh,spsa0 ; choose PCR0 stm #0dh,pcr0 ; fs is low active, rise edge of clkx, falling edge ; of cl

40、kr stm #7h,spsa0 stm #8000h,39h rpt #0ffffh nop stm #00h,dxr10 ldm 22h,a stm #1,38h stm #0c1h,39h ; start McBSP0 send ! ld #603h,a rsbx intm ; enable all int !;-; The following codes are initalized AC01, ALL AC01 setup same !;- idle 1 idle 1 idle 1 idle 1 ; reset two AC01 by software ! ld #600h,a id

41、le 1 ; wait for int . ld #3,a idle 1 ; send #3 ld #00105h,a ; fs=10M/2/A/B= 25k ; flp=10M/2/40/A= 25k (all pass) ; fhp=fs/200= 125Hz (not use !) ; A=05,B=40(0x28) idle 1 ; send 1th regs - 05h ld #3,a idle 1 ; send #3 ld #00228h,a idle 1 ; send 2th regs - 28h ld #3,a idle 1 ; send #3 ld #00300h,a idl

42、e 1 ; send 3th regs - 00h ld #3,a idle 1 ; send #3 ld #00405h,a idle 1 ; send 4th regs - 05h (AD & DA 0 dB) ld #3,a idle 1 ; send #3 ld #00505h,a idle 1 ; send 5th regs - 05h (highpass filter disable) ld #3,a idle 1 ; send #3 ld #00600h,a idle 1 ; send 6th regs - 00h ld #3,a idle 1 ; send #3 ld #007

43、00h,a idle 1 ; send 7th regs - 0 ld #3,a idle 1 ; send #3 ld #800h,a idle 1 ; send 8th regs - 0 ld #0h,a stm #0,38h stm #2001h,39h ; start MCbsp0 receive ! stm #30h,imr ; bit5-BXINT0, bit4-BRINT0, enable BXINT0;*; The following codes are used to initalize TIMER !;* stm #10h,tcr ; stop TIMER ! stm #0

44、ffffh,prd ; stm #0fh,tcr ; TIMER start, each about 100HZ . orm #8,imr ; enable TIMER INT !again: bitf is_new_data,#1 ; test is_new_data = 1 ? cc fir,tc ; =1, then call fir ! new AD data in new_ad(0x64) b again;*; The following codes are serived for McBSP0 transmit !;*transmit: pshm st1 pshm st0 pshm

45、 bk pshm ar7 pshm ah pshm al cmpm mcbsp_init,#0aa55h bc init,tc stm #25,bk ; each AC01 has 25 dots to D/A ! mvdm #wave_ptr,ar7 ; restore wave buffer ptr ! nop ld *ar7+%,a nop stlm a,dxr10 ; send wave data ! Master AC01 make source wave, ; Slave AC01 make filter result wave ! bd wave_make_end mvmd ar

46、7,#wave_ptr ; save wave buffer ptr !init: stlm a,dxr10 bitf dxr10,#800h ; if setup last reg of AC01, set mcbsp_init=0 ! bc wave_make_end,ntc ; not equal ,jump ! stm #0,mcbsp_init ; when mcbsp=0 or 1, transmit for make wave !wave_make_end: popm al popm ah popm ar7 popm bk popm st0 popm st1_ret: rete;

47、*; The following codes are serived for McBSP0 receive ! use AR5,BK!;*receive: pshm st1 pshm st0 ld #0,dp mvkd drr10,*ar5 ; save AD data pshd *ar5+% ; save AD data in AD_buffer(0x1800-0x1c00) popd new_ad stm #1,is_new_data ; has new AD data popm st0 popm st1 rete;*; The following codes are serived fo

48、r vc5402 TIMER !;*timer: pshm ah pshm al ldm timer_count,a sub #1,a bc not_show_led,aneq ; if a != 0 ,jump ! bitf st1,#2000h ; test XF? bc show_led,tc ssbx xf ; set xf=1 b show_conshow_led: rsbx xf ; set xf=0show_con: ld #5,a ; not_show_led: stlm a,timer_count popm al popm ah rete;*; The following codes is used to FIR, new AD DATA in new_ad(0x64); FIR buffer coff- 0x100(ar2), FIR window buffer

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!