1、c.打开CMD文件,改变文件的权限,使之变成可读可写文件。未修改CMD文件之前的CMD如下图:将其编译后所得到的MAP文件如下图:d.将PAGE 1中的 DARAM: org=0x2000, len=0x1000改成0x2100则编译后所得到的MAP文件如下图:分析:比较两者的MAP文件可以发现,当CMD文件中数据段起始地址改变,长度改变的时候,MAP中的映射相应的也发生变化。2. 了解GEL文件的功能。Gel文件不是DSP开发必须的文件,而是给CCS使用的文件,它帮助设置CCS的仿真环境,而且可以完成一些常用的调试操作,如硬件设置等。Gel文件的编写是采用类似C语言的编程语言,观察当前的Ge
2、l文件的编写。 打开HELP文件,如下图:3. 使用者如果希望修改其功能,可以直接编写gel文件,保存并重新装载。Menuitem是一级子菜单,hotmenu是二级子菜单,其中的处理可以直接填写或调用其他的函数。修改Gel文件,添加menuitem和hotmenu。menuitem C54x Experiment;hotmenu C5402_Textout( GEL_TextOut(“Hello,GEL is a solid tool !n”; 打开GEL 文件,在其上方添加如上menuitem和hotmenu,如下图:至于DSK板菜单由于没有用到,故在此实验中并没有添加。hotmenu C5
3、402_DSK_Test( /*此功能实现需要用到DSK板,可暂不添加,如做测试,需将此中文注释去掉*/*(int *0x0io = 0xff07; /* turn on LED */ 测试其功能。4. 查询help了解所有Gel的函数功能,并修改文件实现一个其它的Gel函数。四、实验结果和提示 1. 当设备被选用后,与其关联的gel文件将被使用,其中的StartUp函数将被调用。可修改其中的内容,如PMST寄存器的数值,并测试。2. 如果当前CCS中装载了gel文件,那么就会出现相应的菜单项,如图3-1所示。图3-1 GEL菜单3. 添加代码后,重新装载Gel文件将出现新的子菜单,如图3-2
4、所示,并测试新菜单的功能。图3-2 新的子菜单四、实验心得此次实验做得比较顺利,主要是得益于实验指导书的详细指导。我明白,实验的目地不在于你做这个时候有多快有多顺利,而是我们究竟学了多少东西。此次实验增加菜单栏时,我把应用于DSK板子的也添加进去了,导致GEL文件不能识别,这是我的粗心所致。我认为此次实验重点在于教我们怎么写cmd和gel文件,这是一个理论与实验结合的关键点。通过此次实验我明白了CMD文件其实就是一个配置文件。它是用来具体说明对储存空间的配置情况的。通常的配置是第0页存放程序,第1页存放数据,第2页存放I/O空间,数据段必须从0060H开始。其它段意义不大,但是在仿真时不一致。
5、DSP芯片的储存空间包含有ROM和RAM两种存储空间。实验四、正弦信号发生器一、 实验目的1. 掌握利用DSP产生正弦信号的原理2. 熟悉子程序调用的程序结构以及堆栈的使用3. 掌握CCS的图形输出操作二、 实验设备1. 集成开发环境Code Composer Studio(简称CCS)2. 实验代码Sin.s54、Lab.cmd和Lab.gel三、实验内容1. 阅读理解多项式逼近正弦的文档2. 阅读和理解Sin.s543. 调试正弦波发生器4. 加入断点,并选取图形观测,利用动画及时更新5. 试利用迭代的方法来实现正弦信号发生器四、实验结果和分析1. ,为第一象限内的弧度值。因为,所以只需将
6、第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。由于有限精度,规定弧度值从,其中=0x7FFF,/2=0x4000,=0x8000。利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A中的当前弧度值,以便计算结束后实现增量。正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。自动增长时要注意当超过后必须调整到的范围内才能调用计算子程序,即若。2. 需要使用临时数据时,必须用frame语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。要注意的是frame的下一条指令不能使用直接寻
7、址。打开sin_out的MAP文件。3. 注意事项:利用累加器写乘法寄存器T(stlm)之后的下一条指令不能使用T;条件转移指令xc在指令访问阶段判断条件,该条件必须在先于xc指令的2个指令之前产生;条件转移指令bc是在指令执行阶段判断条件,不存在这方面的问题。具体细节请参见数字信号处理系统的应用和设计3.6节和4.5节。4. 图形观测时选择菜单View-Graph-Time/Frequency,然后设置如下图:确定并设置好断点后(断点位置要设置对,几个地方都可以,可多尝试几次使用Debug-Animate就可以观察到动画输出的结果如图:start address中用sin_out时可得如下图
8、:从图中可以观察到正弦波的周期。改变的增量步长观察不同频率的正弦波输出有何不同。改变步长,将步长改为0X f100,得到如下图。比较上述两图可以发现,当步长增大时,正弦波的周期变小了。原因在于周期等于65536/步长。start address中用AR6测试时,可得如下图: start address中用0x2000测试时,可得如下图:观察正弦波的不同,记录图形数据并比较,我们可以发现,当start address改变时,波形大致不发生变化,周期,幅度基本上不变,只是起始波形位置不一样了。原因在于start address只是改变起始地址,并不改变其周期,步长等等。故图形会发生上述变化。当设置
9、多个断点时,可以得到如下图形:比较该图与我们得到的第一个正弦波图形我们可以发现,该波形不再连续,而是出现了阶梯状。原因在于当我们设置多个断点时,程序运行到某处时,它会跳出去接着运行,结果又遇到另一个断点。如此循环,则出现上述阶梯状波形。5. 得到正弦信号迭代公式:,因为为常数,所以为常数,则利用此公式迭代计算每次只需一次乘法和一次加法。6. 尝试不用断点,而用探针Probe Point的方式显示并观察图形。同样需要比较两种运行方式在探针形式下有无区别。不设置断点,运用探针时,可得如下图波形:观察图形,我们可以发现它于设置断点后的波形一致。7. 在断点及动画运行方式实现正弦波显示的情况下,查找到存储器中对应存储正弦波数据实时更新的数据单元。五、实验心得此次实验重点在于掌握用DSP产生正弦(sin)信号的原理。在明白实验步骤的同时,我们也要理解程序每一条指令的含义,熟悉每一条指令的用法,这样才能慢慢地开始致力于将DSP应用于实际。在做这个实验的时候,我一直不明白那个步长是表示什么含义的,以致于后来不知道怎么改变步长,也不知道分析为何波形会发生这样的变化。由此可见,平时的理论知识还是要学扎实,只有理论扎实了,才能在实践上有所突破。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1