DSP实验
- 格式:doc
- 大小:92.00 KB
- 文档页数:16
DSP的原理与应用实验介绍数字信号处理(Digital Signal Processing,DSP)是一种数学算法和基于嵌入式系统的技术,用于处理数字信号,是现代通信、音频处理、图像处理等领域的关键技术之一。
本文将介绍DSP的基本原理以及其在实际应用中的实验。
DSP的基本原理1.数字信号和模拟信号的区别–数字信号是离散的,模拟信号是连续的–数字信号可以用离散的数值表示,模拟信号用连续的数值表示2.采样和量化–采样是指将模拟信号在时间上离散化–量化是指将模拟信号在幅度上离散化3.傅里叶变换–DSP中常用的一种变换方法–将信号从时域转换到频域–可以分析信号的频谱特性4.滤波–常见的信号处理操作之一–可以去除噪声、选择特定频率的信号等–常用的滤波器包括低通滤波器、高通滤波器、带通滤波器等DSP的应用实验1.音频处理实验–使用DSP技术对音频进行处理–实现音频的均衡器效果、混响效果等–可以提高音频的质量和效果2.语音识别实验–利用DSP算法对语音信号进行处理–通过提取特征参数来识别语音内容–可以应用于语音控制、语音识别等领域3.图像处理实验–利用DSP技术对图像进行处理和分析–实现图像增强、去噪等操作–可以应用于图像识别、图像处理等领域4.通信系统实验–使用DSP技术对通信信号进行处理–实现调制解调、信号编解码等操作–可以提高通信系统的性能和可靠性结论数字信号处理(DSP)是一种重要的信号处理技术,可以广泛应用于通信、音频处理、图像处理等领域。
通过实验可以深入了解DSP的原理和应用,提高对信号处理的理解和应用能力。
以上就是DSP的原理与应用实验的简要介绍,希望对你有所帮助!。
dsp原理与应用实验报告总结DSP(Digital Signal Processing)数字信号处理是利用数字技术对信号进行处理和分析的一种方法。
在本次实验中,我们探索了DSP的原理和应用,并进行了一系列实验以验证其在实际应用中的效果。
以下是对实验结果的总结与分析。
实验一:数字滤波器设计与性能测试在本实验中,我们设计了数字滤波器,并通过性能测试来评估其滤波效果。
通过对不同类型的滤波器进行设计和实现,我们了解到数字滤波器在信号处理中的重要性和应用。
实验二:数字信号调制与解调本实验旨在通过数字信号调制与解调的过程,了解数字信号的传输原理与方法。
通过模拟调制与解调过程,我们成功实现了数字信号的传输与还原,验证了调制与解调的可行性。
实验三:数字信号的傅里叶变换与频谱分析傅里叶变换是一种重要的信号分析方法,可以将信号从时域转换到频域,揭示信号的频谱特性。
本实验中,我们学习了傅里叶变换的原理,并通过实验掌握了频谱分析的方法与技巧。
实验四:数字信号的陷波滤波与去噪处理陷波滤波是一种常用的去除特定频率噪声的方法,本实验中我们学习了数字信号的陷波滤波原理,并通过实验验证了其在去噪处理中的有效性。
实验五:DSP在音频处理中的应用音频处理是DSP的一个重要应用领域,本实验中我们探索了DSP在音频处理中的应用。
通过实验,我们成功实现了音频信号的降噪、均衡和混响处理,并对其效果进行了评估。
实验六:DSP在图像处理中的应用图像处理是另一个重要的DSP应用领域,本实验中我们了解了DSP在图像处理中的一些基本原理和方法。
通过实验,我们实现了图像的滤波、边缘检测和图像增强等处理,并观察到了不同算法对图像质量的影响。
通过以上一系列实验,我们深入了解了DSP的原理与应用,并对不同领域下的信号处理方法有了更深刻的认识。
本次实验不仅加深了我们对数字信号处理的理解,也为日后在相关领域的研究与实践提供了基础。
通过实验的结果和总结,我们可以得出结论:DSP作为一种数字信号处理的方法,具有广泛的应用前景和重要的实际意义。
DSP第六、七次实验报告1. 实验目的:(1)进一步熟悉Matlab实验环境和语言。
(2)熟悉各种滤波器的结构及Matlab实现语言。
(3)掌握用冲击响应不变法和双线性变换法设计IIR滤波器的方法。
(4)掌握用窗函数法和频率抽样法设计FIR滤波器的方法。
2. 实验内容及总结:1.滤波器结构:(1)IIR滤波器各种结构1、直接型结构例如直接型滤波器系统函数, 则有系数向量a=[1,a1,a2,a3],b=[b0,b1,b2], 利用:Y=filter[b,a,x]求信号x(n)通过此滤波器的输出。
2、由系统函数或差分方程求系统的二阶分式(含一阶分式)的级联结构将例如的系统函数重写为二阶分式节的级联型, 利用:[sos,G]=tf2sos(b,a)3、由二阶分式的级联结构转换成系统函数的直接结构是第二步的逆运算, 调用函数:[b,a] = sos2tf(sos)可以求得系数向量a,b, 从而得到H(z)4、由系统函数求部分分式展开(留数及其极点计算)即求z反变换的部分分式展开法, 利用:[r,p,c]=residuez(b,a)其中极点为p, 留数为r, 直接项系数为c。
5、由r,p,c求系统函数即第4步的逆运算, 利用:[b,a]=residuez(r,p,c)6、由直接型结构转换为并联型结构需开发函数:[C,B,A]=tf2par(b,a)其中, b,a为直接型的系数向量, C,B,A为并联型实系数向量, 基本思想是: 1.反复调用[r,p,c]=residuez(b,a)求出极点及留数;2.利用cplxpair函数把极点、留数对按复共轭极点-留数对, 实极点-留数对的顺序排列;3.开发cplxcomp函数, 保证极点和留数相互对应;4.调用[b,a]=residuez(r,p,c)计算并联二阶节的分子分母。
7、由并联型结构转换成直接型结构开发函数:[b,a]=par2tf(C,B,A)为[C,B,A]=tf2par(b,a)的逆函数。
【心得体会】dsp实验心得体会在进行dsp实验的过程中,我收获了很多宝贵的经验和启示。
首先,在实验前,我深入了解了dsp的基本原理和相关的知识,为实验的顺利进行打下了坚实的基础。
其次,在实验过程中,我注重细节和精确度,时刻保持专注和耐心。
这对于实验结果的准确性和可靠性起到了至关重要的作用。
在实验过程中,我还学会了如何合理安排时间和资源。
由于dsp实验需要大量的计算和数据处理,我学会了如何高效地利用计算机和相关软件工具。
我学会了如何合理分配时间,以确保实验的顺利进行,并在规定的时间内完成实验任务。
在实验的过程中,我也遇到了一些问题和挑战。
例如,某些实验步骤需要复杂的编程和算法设计,我需要仔细思考和分析,才能找到解决问题的方法。
同时,我还需要不断调整和改进实验方案,以确保实验的准确性和可行性。
通过这次dsp实验,我不仅学到了专业知识和技能,还培养了自己的分析和解决问题的能力。
我学会了如何从不同的角度思考和分析问题,并找到最合适的解决方案。
我还学会了如何与团队成员合作,共同完成实验任务。
通过反思和总结,我认识到在进行dsp实验时,需要注重细节和精确度。
只有保持专注和耐心,才能获得准确和可靠的实验结果。
同时,我还意识到在实验过程中,需要灵活调整实验方案,并不断改进和优化。
只有不断学习和提高自己,才能在dsp领域取得更好的成绩。
最后,我想给其他学习dsp的同学一些建议。
首先,要注重理论知识的学习,建立扎实的基础。
其次,要勇于尝试和实践,通过实验来巩固和应用所学知识。
同时,要善于思考和分析问题,不断寻找解决问题的方法和途径。
最重要的是,要保持学习的热情和持续的努力,只有这样,才能在dsp领域获得更好的成长和发展。
总而言之,通过这次dsp实验,我不仅学到了专业知识和技能,还培养了自己的分析和解决问题的能力。
我学会了如何从不同的角度思考和分析问题,并找到最合适的解决方案。
通过反思和总结,我认识到在进行dsp实验时,需要注重细节和精确度,并不断改进和优化实验方案。
dsp实验心得体会范文3篇_dsp实习心得体会a;digital signal processor简称DSP,中文意思是数字信号处理,DSP就是用数值计算的方式对信号进行加工的理论和技术,现结合自身,谈谈一些心得体会。
本文是dsp实验的心得体会范文,仅供参考。
dsp实验心得体会范文篇一1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。
2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。
3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。
设置好的配置中只能有一项。
4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。
但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。
5. 这次实验采用软件仿真,不需要打开电源箱的电源。
6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。
7. 执行write_buffer一行时。
如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。
8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。
9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。
10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。
如果不重新加载,那么修改执行程序后,其结果将不会改变。
11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。
西北工业大学DSP实验(定点数据表示与处理实验)实验名称定点数据表示与处理实验课程名称 DSP系统实验实验室名称水下电子信息与通信综合实验室姓名学号班级日期一、实验目的掌握数据的定点表示方法;理解数据的量化效应;掌握定点数的溢出、饱和对数据处理的影响;二、实验要求1(理解定点数量化、溢出与饱和的原理;2(建立工程并编写源程序;3(运行程序并观察、分析运行结果。
三、实验原理实验分成信号的量化、定点数的溢出与饱和两个相对独立的实验。
3.1 信号的量化通常模拟数字转换(A/D转换)是数字信号处理的第一步,模数转换在时间上将采样信号离散化,在幅度上对信号进行量化编码,量化将连续的幅度信息变换成了离散的幅度信息。
幅度的离散化,即量化会产生误差,误差的大小与位数有关,即位数越高,误差越小;而位数越小,误差越大。
信号的量化实验首先产生一个16位的正弦波信号,然后依次屏蔽掉信号的低4为、8为和10位,构成可以与16位数据在幅度上可以比拟的12为、8为和6为数据,从而模拟16位、12位、8位和6位量化编码的过程,比较不同位数量化编码的效果。
3.2 定点数的溢出与饱和定点数可以表示的数值范围与数据的位数有关,与浮点数相比,定点数可以表示的数值范围要小得多。
定点数运算式,如果运算值超过了可以表示的最大值,会发生数据的溢出。
在运算中溢出会造成很大的误差,应尽量避免。
DSP处理器一般都有饱和模式。
在饱和模式下,溢出数据用带有正确符号的最大值填充,相当于对运算结果进行了限幅,使结果不会超出数值的表示范围。
定点数的溢出与饱和实验中,让DSP 分别在非饱和模式和饱和模式下对两组数据进行处理,说明溢出、饱和的情况。
一组数据种是将一个数反复的加上一个常数,这个数的数值会不断增加,当大到超过16位定点数的表示范围时,会发生溢出,观察非饱和模式与饱和模式的差别。
另一组数据是16位的正弦波,将正弦波数据乘上一个常数,当正弦波的数值大时,乘上常数会超过16位定点数的表示范围,而发生溢出,观察非饱和模式与饱和模式的差别。
DSP实验报告院(系)名称自动化科学与电气工程学院学生姓名学号任课老师吴冠2014年 6 月实验1 CCS入门实验2(C语言的使用)一、实验目的1. 学习用标准C 语言编制程序;了解常用的C 语言程序设计方法和组成部分。
2. 熟悉使用软件仿真方式调试程序。
二、实验内容1. DSP源文件的建立;2. DSP程序工程文件的建立;3. 掌握C语言在DSP中的应用。
三、实验背景知识当使用标准C 语言编制的程序时,其源程序文件名的后缀应为.c。
CCS 在编译标准C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。
最后生成的是coff 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。
由于使用C 语言编制程序,其中调用的标准C 的库函数由专门的库提供,在编译连接时编译系统还负责构建C 运行环境。
所以用户工程中需要注明使用C 的支持库。
四、实验主程序1.add.c:实验的主程序。
2.28335.gel:系统初始化3.28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。
Add.c 中程序:#include <stdio.h>/* ======== main ======== */void main(){int a=10;int b=10;int c;c=a+b;for(;;);五、实验步骤1.双击图标进入CCS环境;2.添加工程pjt文件,点击Project →open命令3.在弹出的对话框中选中cadd.pjt文件添加该工程文件。
4.添加gel文件,即右键点击工程视窗中的GEL files,在弹出的菜单中选择laod gel 命令。
5.添加.out文件,即使用File→Load Program菜单命令。
装载add.out文件,进行调试。
.out文件一般存放在程序文件夹的debug文件夹中。
6.打开观察窗口观看变量的值,即使用View→Watch Window菜单命令。
一、实验目的1. 理解数字信号处理的基本概念和原理。
2. 掌握离散时间信号的基本运算和变换方法。
3. 熟悉数字滤波器的设计和实现。
4. 培养实验操作能力和数据分析能力。
二、实验原理数字信号处理(Digital Signal Processing,DSP)是利用计算机对信号进行采样、量化、处理和分析的一种技术。
本实验主要涉及以下内容:1. 离散时间信号:离散时间信号是指时间上离散的信号,通常用序列表示。
2. 离散时间系统的时域分析:分析离散时间系统的时域特性,如稳定性、因果性、线性等。
3. 离散时间信号的变换:包括离散时间傅里叶变换(DTFT)、离散傅里叶变换(DFT)和快速傅里叶变换(FFT)等。
4. 数字滤波器:设计、实现和分析数字滤波器,如低通、高通、带通、带阻滤波器等。
三、实验内容1. 离散时间信号的时域运算(1)实验目的:掌握离散时间信号的时域运算方法。
(2)实验步骤:a. 使用MATLAB生成两个离散时间信号;b. 进行时域运算,如加、减、乘、除等;c. 绘制运算结果的时域波形图。
2. 离散时间信号的变换(1)实验目的:掌握离散时间信号的变换方法。
(2)实验步骤:a. 使用MATLAB生成一个离散时间信号;b. 进行DTFT、DFT和FFT变换;c. 绘制变换结果的频域波形图。
3. 数字滤波器的设计和实现(1)实验目的:掌握数字滤波器的设计和实现方法。
(2)实验步骤:a. 设计一个低通滤波器,如巴特沃斯滤波器、切比雪夫滤波器等;b. 使用MATLAB实现滤波器;c. 使用MATLAB对滤波器进行时域和频域分析。
4. 数字滤波器的应用(1)实验目的:掌握数字滤波器的应用。
(2)实验步骤:a. 采集一段语音信号;b. 使用数字滤波器对语音信号进行降噪处理;c. 比较降噪前后的语音信号,分析滤波器的效果。
四、实验结果与分析1. 离散时间信号的时域运算实验结果显示,通过MATLAB可以方便地进行离散时间信号的时域运算,并绘制出运算结果的时域波形图。
DSP原理及应用实验指导书电气与电子工程学院目录系统概述……………………………………………………………….. CCS的安装……………………………………………………………实验一CCS入门实验………………………………………………... 实验二乘累加算法实验………………………………………………实验三混合编程实验实验四SDRAM读写实验实验五FLASH读写实验实验六QDMA读写实验实验七定时器实验实验八PLL锁相环实验系统概述SEED-DTK(DSP Teaching Kit)是一套可以满足大学本科、研究生和教师科研工作的综合实验设备。
其以独特的多DSP 结构、强大的DSP主板功能、丰富的外围实验电路、精心设计的实验程序、精湛的产品工艺形成的高性能产品。
在这里主要介绍的是SEED-DTK6713 实验箱,它由SEED-DEC6713 板卡以及SEED-DTK_MBoard构成;其中主控板是SEED-DEC6713,母板是SEED-DTK_MBoard 板卡。
此外,该款实验箱还可配置DSK 板卡、图像处理卡等多种子卡。
SEED-DTK6713 实验箱实验例程SSED_DEC6713 板卡实验例程1.CCS 软件应用实验介绍CCS 的使用,编写简单的实验例程。
2.DSP 片上资源应用实验本部分例程介绍的是DSP 的片上资源。
3.SSED_DEC6713 板卡应用实验SSED_DEC6713 板卡与实验箱资源的应用实验。
包括:异步、同步串口通讯;扩展I/O 口使用;AD/DA 的使用。
4.算法实验包括FFT,滤波(FIR、IIR),卷积,自适应滤波器算法实验。
5.语音算法实验包括回声,混响,语音滤波等实验。
6.参考实验包括USB 使用实验、自举程序的编写以及SEED-DEC6713 板卡与SEED-DTK_MBoard板卡之间数据传递实验。
母板实验例程1.DSP5402 片上资源应用实验本部分例程主要是DSP片上资源的使用介绍。
实验二编写一个以C语言为基础的DSP的程序c语言文件main(){int x,y,z;x=1; y=2;while ( 1 ){z=x+y;}}cmd文件-l rts55x.libMEMORY{DARAM: o=0x100, l=0x7f00DARAM2: o=0x8000, l=0x8000}SECTIONS{.text: {} > DARAM.bss: {} > DARAM.stack: {} > DARAM.cinit: {} > DARAM}实验三编写一个以ASM语言为基础的DSP的程序amd语言文件.mmregs.model call=c55_std.model mem=large.global x.bss x,1,0,0.sym x,x, 4, 2, 16.global y.bss y,1,0,0.sym y,y, 4, 2, 16.global z.bss z,1,0,0.sym z,z, 4, 2, 16.sect ".text".align 4.global start.sym s tart,start, 36, 2, 0start:MOV #2, *(#y)MOV #1, *(#x)L1:MOV *(#y), AR1ADD *(#x), AR1, AR1MOV AR1, *(#z)B L1cmd文件MEMORY{DARAM: o=0x100, l=0x7f00DARAM2: o=0x8000, l=0x8000}SECTIONS{.text: {} > DARAM.bss: {} > DARAM.stack {} > DARAM}实验四编写一个汇编和C混合的DSP的程序c语言文件int x,y,z;main(){x=3; y=17;while ( 1 ){z=x+y;} // 在此加软件断点}子程序int add(int a,int b){return(a+b);}amd语言文件******************************************************************************* ;* TMS320C55x C/C++ Codegen PC V ersion 2.56 * ;* Date/Time created: Fri Jun 17 16:01:05 2005 *;****************************************************************************** *.mmregs.cpl_on.arms_on.c54cm_off.asg AR6, FP.asg XAR6, XFP.asg DPH, MDP.model call=c55_std.model mem=large.noremark 5549 ; code avoids SE CPU_28.noremark 5558 ; code avoids SE CPU_33.noremark 5570 ; code avoids SE CPU_40.noremark 5571 ; code avoids SE CPU_41.noremark 5573 ; code avoids SE CPU_43.noremark 5584 ; code avoids SE CPU_47.noremark 5599 ; code avoids SE CPU_55.noremark 5503 ; code avoids SE CPU_84 MMR write.noremark 5505 ; code avoids SE CPU_84 MMR read.noremark 5673 ; code avoids SE CPU_89.noremark 5002 ; code respects overwrite rules;****************************************************************************** *;* GLOBAL FILE PARAMETERS *;**;* Architecture : TMS320C55x * ;* Optimization : Always Choose Smaller Code Size *;* Memory : Large Model (23-Bit Data Pointers) *;* Calls : Normal Library ASM calls *;* Debug Info : Standard TI Debug Information *;****************************************************************************** *.file "CProgram.c".global _x.bss _x,1,0,0.sym _x,_x, 4, 2, 16.global _y.bss _y,1,0,0.sym _y,_y, 4, 2, 16.global _z.bss _z,1,0,0.sym _z,_z, 4, 2, 16; c:\ti5000\c5500\cgtools\bin\acp55.exe-@C:\DOCUME~1\ZHAOQI~1\LOCALS~1\Temp\TI5556_4.sect ".text".align 4.global _main.sym _main,_main, 36, 2, 0.func 4;****************************************************************************** *;* FUNCTION NAME: _main *;**;* Function Uses Regs : AR1,SP,CARRY,M40,SATA,SATD,RDM,FRCT,SMUL *;* Stack Frame : Compact (No Frame Pointer, w/ debug) *;* Total Frame Size : 1 word *;* (1 return address/alignment) *;****************************************************************************** *_main:.line 2.line 3MOV #17, *(#_y) ; |6|MOV #3, *(#_x) ; |6|.line 4L1:.line 6MOV *(#_y), AR1 ; |9|ADD *(#_x), AR1, AR1 ; |9|MOV AR1, *(#_z) ; |9|.line 7B L1 ; |10|; branch occurs ; |10|.endfunc 11,000000000h,0;****************************************************************************** *;* TYPE INFORMA TION *;****************************************************************************** *AMD子程序;****************************************************************************** *;* TMS320C55x C/C++ Codegen PC V ersion 2.56 * ;* Date/Time created: Fri Jun 17 15:57:29 2005 *;****************************************************************************** *.mmregs.cpl_on.arms_on.c54cm_off.asg AR6, FP.asg XAR6, XFP.asg DPH, MDP.model call=c55_std.model mem=large.noremark 5549 ; code avoids SE CPU_28.noremark 5558 ; code avoids SE CPU_33.noremark 5570 ; code avoids SE CPU_40.noremark 5571 ; code avoids SE CPU_41.noremark 5573 ; code avoids SE CPU_43.noremark 5584 ; code avoids SE CPU_47.noremark 5599 ; code avoids SE CPU_55.noremark 5503 ; code avoids SE CPU_84 MMR write.noremark 5505 ; code avoids SE CPU_84 MMR read.noremark 5673 ; code avoids SE CPU_89.noremark 5002 ; code respects overwrite rules;****************************************************************************** *;* GLOBAL FILE PARAMETERS *;**;* Architecture : TMS320C55x * ;* Optimization : Always Choose Smaller Code Size *;* Memory : Large Model (23-Bit Data Pointers) *;* Calls : Normal Library ASM calls *;* Debug Info : Standard TI Debug Information *;****************************************************************************** *.file "add.c"; c:\ti5000\c5500\cgtools\bin\acp55.exe-@C:\DOCUME~1\ZHAOQI~1\LOCALS~1\Temp\TI8360_4.sect ".text".align 4.global _add.sym _add,_add, 36, 2, 0.func 1;****************************************************************************** *;* FUNCTION NAME: _add *;* * ;* Function Uses Regs : T0,T1,AR1,SP,CARRY,M40,SATA,SATD,RDM,FRCT,SMUL *;* Stack Frame : Compact (No Frame Pointer, w/ debug) *;* Total Frame Size : 4 words *;* (2 return address/alignment) *;* (2 local values) *;****************************************************************************** *_add:; .line 2;* T0 assigned to _a.sym _a,12, 4, 17, 16;* T1 assigned to _b.sym _b,13, 4, 17, 16.sym _a,0, 4, 1, 16.sym _b,1, 4, 1, 16AADD #-3, SPMOV T1, *SP(#1) ; |2|MOV T0, *SP(#0) ; |2|; .line 3MOV *SP(#1), AR1 ; |3|ADD *SP(#0), AR1, T0 ; |3|; .line 4AADD #3, SP ; |3|RET ; |3|; return occurs ; |3|.endfunc 4,000000000h,3;****************************************************************************** *;* TYPE INFORMA TION *;****************************************************************************** *cmd文件-w-stack 500-sysstack 500-l rts55x.libMEMORY{DARAM: o=0x100, l=0x7f00VECT : o=0x8000, l=0x100DARAM2: o=0x8100, l=0x7f00SARAM: o=0x10000, l=0x30000SDRAM: o=0x40000, l=0x3e0000}SECTIONS{.text: {} > DARAM.vectors: {} > VECT.trcinit: {} > DARAM.gblinit: {} > DARAMfrt: {} > DARAM.cinit: {} > DARAM.pinit: {} > DARAM.sysinit: {} > DARAM.bss: {} > DARAM2.far: {} > DARAM2.const: {} > DARAM2.switch: {} > DARAM2.sysmem: {} > DARAM2.cio: {} > DARAM2.MEM$obj: {} > DARAM2.sysheap: {} > DARAM2.sysstack {} > DARAM2.stack: {} > DARAM2}实验五指示灯控制c文件#include "myapp.h"// 定义指示灯寄存器地址和寄存器类型,为何要定义地址??#define LBDS (*((unsigned int *)0x400001))// 子程序接口void Delay(unsigned int nDelay); // 延时子程序main(){unsigned int uLED[4]={1,2,4,8}; // 控制字,逐位置1: 0001B 0010B 0100B 1000B int i;CLK_init(); // 初始化DSP运行时钟SDRAM_init(); // 初始化EMIF接口while ( 1 ){for ( i=0;i<4;i++ ){LBDS=uLED[i]; // 正向顺序送控制字Delay(256); // 延时}for ( i=3;i>=0;i-- ){LBDS=uLED[i]; // 反向顺序送控制字Delay(256); // 延时}}}void Delay(unsigned int nDelay){int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<1024;jj++ ){kk++;}}}子程序(clk_init.c)#include"myapp.h"void CLK_init(){ioport unsigned int *clkmd;clkmd=(unsigned int *)0x1c00;*clkmd =0x2033; // 0x2033;//0x2413;// 144MHz=0x2613 }void SetDSPPLL(unsigned int uPLL){ioport unsigned int *clkmd;clkmd=(unsigned int *)0x1c00;*clkmd =uPLL;}void TMCR_reset( void ){ioport unsigned int *TMCR_MGS3=(unsigned int *)0x07FE;ioport unsigned int *TMCR_MM =(unsigned int *)0x07FF;*TMCR_MGS3 =0x510;*TMCR_MM =0x000;}子程序(sdram_init.c)#include "myapp.h"void SDRAM_init( void ){ioport unsigned int *ebsr =(unsigned int *)0x6c00;ioport unsigned int *egcr =(unsigned int *)0x800;ioport unsigned int *emirst=(unsigned int *)0x801;//ioport unsigned int *emibe =(unsigned int *)0x802;ioport unsigned int *ce01 =(unsigned int *)0x803;//ioport unsigned int *ce02 =(unsigned int *)0x804;//ioport unsigned int *ce03 =(unsigned int *)0x805;ioport unsigned int *ce11 =(unsigned int *)0x806;//ioport unsigned int *ce12 =(unsigned int *)0x807;//ioport unsigned int *ce13 =(unsigned int *)0x808;ioport unsigned int *ce21 =(unsigned int *)0x809;//ioport unsigned int *ce22 =(unsigned int *)0x80A;//ioport unsigned int *ce23 =(unsigned int *)0x80B;ioport unsigned int *ce31 =(unsigned int *)0x80C;//ioport unsigned int *ce32 =(unsigned int *)0x80D;//ioport unsigned int *ce33 =(unsigned int *)0x80E;ioport unsigned int *sdc1 =(unsigned int *)0x80F;//ioport unsigned int *sdper =(unsigned int *)0x810;//ioport unsigned int *sdcnt =(unsigned int *)0x811;ioport unsigned int *init =(unsigned int *)0x812;ioport unsigned int *sdc2 =(unsigned int *)0x813;*ebsr = 0x221;*egcr = 0x220;*egcr = 0x220;*ce01 = 0x3000;*ce11 = 0x1fff;*ce21 = 0x1fff;*ce31 = 0x1fff;*emirst = 0;*sdc1 = 0x5958;*sdc2 = 0x38F;*init = 0;}CMD文件(ICETEK-VC5509-A.cmd)-w-stack 500-sysstack 500-l rts55x.libMEMORY{DARAM: o=0x100, l=0x7f00VECT : o=0x8000, l=0x100DARAM2: o=0x8100, l=0x7f00SARAM: o=0x10000, l=0x30000SDRAM: o=0x40000, l=0x3e0000}SECTIONS{.text: {} > DARAM.vectors: {} > VECT.trcinit: {} > DARAM.gblinit: {} > DARAMfrt: {} > DARAM.cinit: {} > DARAM.pinit: {} > DARAM.sysinit: {} > DARAM.bss: {} > DARAM2.far: {} > DARAM2.const: {} > DARAM2.switch: {} > DARAM2.sysmem: {} > DARAM2.cio: {} > DARAM2.MEM$obj: {} > DARAM2.sysheap: {} > DARAM2.sysstack {} > DARAM2.stack: {} > DARAM2}实验六DSP的定时器c文件#include "myapp.h"// 定义指示灯寄存器地址和寄存器类型#define LBDS (*((unsigned int *)0x400001))void INTR_init( void );void TIMER_init(void);int nCount;main(){nCount=0;CLK_init();SDRAM_init();LBDS=0;INTR_init();TIMER_init();while ( 1 ){}}void interrupt Timer(){nCount++;nCount%=16; //nCount限制在0至15内if ( nCount==0 )LBDS^=1;}void INTR_init( void ){IVPD=0xd0; //DSP中断指针与HOST中断指针的区别??IVPH=0xd0;IER0=0x10; //中断使能寄存器0DBIER0 =0x10; //debug IER0是什么意思???IFR0=0xffff; //中断标志寄存器0asm(" BCLR INTM");}void TIMER_init(void){ioport unsigned int *tim0;ioport unsigned int *prd0;ioport unsigned int *tcr0;ioport unsigned int *prsc0;tim0 = (unsigned int *)0x1000; //寄存器字地址prd0 = (unsigned int *)0x1001;tcr0 = (unsigned int *)0x1002;prsc0 = (unsigned int *)0x1003;*tcr0 = 0x04f0; //tcr0为何要写两次????*tim0 = 0;*prd0 = 0x0ffff;*prsc0 = 2;*tcr0 = 0x00e0;}子程序clk_init.c (跟上个实验的相同)子程序sdram_init.c (跟上个实验的相同)CMD文件ICETEK-VC5509-A.cmd(跟上个实验的相同)ASM文件vectors.asm;; Copyright 2003 by Texas Instruments Incorporated.; All rights reserved. Property of Texas Instruments Incorporated.; Restricted rights to use, duplicate or disclose this code are; granted through contract.;; "@(#) DSP/BIOS 4.90.270 06-11-03 (barracuda-m10)";; ======== vectors.asm ========; Plug in the entry point at RESET in the interrupt vector table;.sect ".vectors".ref _c_int00 ; C entry point.if (.MNEMONIC)rsv: ; reset vectorB _c_int00 ; branch toC entry pointNOP.align 8nmi:.loop 8nop.endloopint0:.loop 8nop.endloopint2:.loop 8nop.endloop.ref _Timertint:B _Timernop.align 8b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8 b $ nop.align 8.elsersv: ; reset vectorgoto _c_int00 ; branch to C entry pointNOP.align 8.endif实验七外部中断C文件include "myapp.h"#include "ICETEK-VC5509-EDU.h"#include "scancode.h"void InitMcBSP();void INTR_init( void );void TIME_init(void);int nCount;main(){nCount=0;CLK_init();SDRAM_init();INTR_init();InitCTR();InitMcBSP();CTRGR=2; // 使能IOwhile ( 1 ){}}void InitMcBSP(){// IOPin: McBSP1.FSX S15//SPCR2.XRST_=0,PCR.XIOEN=1,PCR.FSXM=1,PCR.FSXP=0/1SPCR2_1&=0x0fffe; //发送器复位PCR1|=0x2800;}void interrupt XINT(){nCount++; nCount%=2;if ( nCount==0 )PCR1^=8;}void INTR_init( void ){IVPD=0x80;IVPH=0x80;IER0=8;DBIER0=8;IFR0=0xffff;asm(" BCLR INTM");子程序clk_init.c (跟上个实验的相同)子程序sdram_init.c (跟上个实验的相同)CMD文件ICETEK-VC5509-A.cmd(跟上个实验的相同)ASM文件vectors.asm(跟上个实验的相同)。