当前位置:文档之家› 实验10任意信号发生器

实验10任意信号发生器

实验十任意信号发生器座位号: 第一组B5姓名:陈翔宇1104210311 小组成员: 董泽人1104210202于杏 1104210101 指导老师: 李彧晟2014年一、实验目的1、熟悉DSP的软硬件开发平台2、熟悉TI DSP软件集成开发环境3、学习DSP程序的编程开发4、熟悉工程代码产生方法5、掌握TMS320F2812的ADC外设的使用6、熟悉TMS320F2812的中断的设置7、掌握代码调试的基本方法二、实验仪器计算机、C2000 DSP 教学实验箱、XDS510USB仿真器、示波器和信号源等。

三、注意事项进入CCS顺序:1、打开C2000实验箱电源(确认实验箱电源正常加载)2、点击CCS2(C2000) 进入开发界面退出CCS顺序:1、关闭CCS2(C2000)应用程序2、关闭C2000实验箱电源四、实验内容建立工程,编写DSP的主程序,并对工程进行编译、链接,利用现有DSP 平台实现数据的采集、存储以及模拟还原,通过图表以及示波器观察结果。

五、实验要求实验指导书上的要求:1、独立完成项目编译、链接、调试的全过程;2、利用数码显示管,在DSP初始化子模块后添加语句或者编写程序,使之能够显示实验日期;3、记录实验中各子程序包括主程序的入口实际地址,与memory比较,指出分别位于什么类型的存储器中;4、指出波形数据保存的空间地址,并以图形方式显示线性调频信号的波形,并保存,附在实验报告中。

课件上的要求:5、数码管显示实验日期或学号(同要求2);6、指出线性调频信号波形的存储地址,作图显示,并在示波器上输出该波形;7、改变正弦信号频率编程实现,在示波器上验证,要求记录改变参数以及实测频率。

六、实验步骤及结果1、检查DSP平台(仿真器、实验箱、计算机)之间的连接,打开计算机及实验板电源,检查电源加载是否异常;2、打开CCS,执行命令Project→New,弹出“Project Creation”对话框,在第一项Project Name中输入工程名“A2”,在第二项Location中选择D盘名为a文件夹下的A2文件夹中,其余默认,单击“完成”。

3、单击Project→Add Files to Project,找到实验十的范例程序所在位置,拉下文件类型选择框改为“显示所有类型文件”,选中第一个需要加入工程的文件,按住shift键,选中最后一个需要加入的文件,点击确认,这样,所有需要添加进去的.c文件、.cmd文件和.lib文件都添加进了工程。

4、打开source下的RamGen.c文件,进入c程序编辑界面;将初始化LED 的程序段改为下面程序:/* 初始化LED */*LED8 = 0x66; // LED8显示4*(LED8+0x100) = 0x06; // LED7显示1*(LED8+0x200) = 0x86; // LED6显示1.*(LED8+0x300) = 0x06; // LED5显示1*(LED8+0x400) = 0xE6; // LED4显示4.*(LED8+0x500) = 0x06; // LED3显示1*(LED8+0x600) = 0x3F; // LED2显示0*(LED8+0x700) = 0x5B; // LED1显示2*(LEDWR) = 0XFF; // WIRTE DATA TO LED程序功能:LED显示实验日期“2014.11.14”。

5、Project→build,编译链接生成.out文件后,点击File→Load Program,选择A2.out,运行程序。

数码管显示日期正常,结果如下:要求2和5完成。

6、选中main,单击右键,选择Add to Watch Window,观察变量查看窗口数值。

变量查看窗口中main的value一栏显示0x0000 0000,得到主程序的入口地址为0x0000 0000,打开F2812_EzDSP_RAM_lnk.cmd文件,Memory 定义部分如下:MEMORY{PAGE 0 :RAMM0 : origin = 0x000000, length = 0x000400BEGIN : origin = 0x3F8000, length = 0x000002PRAMH0 : origin = 0x3F8002, length = 0x000FFERESET : origin = 0x3FFFC0, length = 0x000002PRAM : origin = 0x100000, length = 0x10000PAGE 1 :RAMM1 : origin = 0x000400, length = 0x000400DRAMH0 : origin = 0x3f9000, length = 0x001000}由上面定义可以得到主程序位于程序存储器的RAMM0块。

要求3完成。

7、接下来修改程序,产生线性调频信号:信号形式:2()cos(),t [0.0128:0.0128],K 39062,N 1024s t Kt π=∈-==。

经分析,该信号可表示为2()cos(()),[0.0128:0.0128],K 39062,N 1024,[0:1023]i i s t Kf i N Nπ=∈-==∈其中,()i f N为一个关于i 和N 的线性函数。

设该函数等于:y kx b =+使得1,0.0128102422*0.0128,0.012810241024......1023,0.01281024x y x y x y ⎧==-⎪⎪⎪==-+⎪⎨⎪⎪⎪=≈⎪⎩由此得到0.01282,0.0128k b N⨯==-。

所以将原程序中正弦信号内存赋值部分修改为如下:for(i=0;i<1024;i++)*(RamAddr+i) = (int)((cos(39062*Pi*(2*0.0128*i/N-0.0128)*(2*0.0128*i/N-0.0128))*2048));经Build →Load Program →Run 后,打开图形显示窗口View →Graph →Time/Frequency ,将数据起始地址设置为RamAddr ,长度设置为1024。

结果如下:将OUT3接到示波器,可以得到示波器显示:选中程序中RamAddr,添加至观察窗口,可以得到波形数据保存地址的起始地址为:0x0010 0000。

要求4和6完成。

8、打开原正弦信号发生器c程序,将内存赋值部分改回去,部分关键程序如下:/* 内存赋值*/for(i=0;i<1024;i++) *(RamAddr+i) = (int)((sin(2*Pi/N*i)*4096));while(1){ for(i=0;i<1024/1;i++){//tmp = (int)(*(RamAddr+i))<<2;*(DAC1Addr) = (unsigned int)((*(RamAddr+1*i))<<2) + 0x8000;}}build→Load Program→Run→View→Graph→Time/Frequency→OK,可以得到图形如下:示波器显示如图:其中,横坐标为0.2ms/格,纵坐标为0.2V/格。

所以正弦信号频率为f=1/0.96ms=1.04kHz。

改变正弦信号频率,程序修改为:/* 内存赋值*/for(i=0;i<1024;i++) *(RamAddr+i) = (int)((sin(2*2*Pi/N*i)*4096));结果如下:频率为f=1/0.48ms=2.08kHz。

七、实验思考1、打开工程的.map文件,查看.text、.data、.bss段之外,还有哪些有实际长度的段,查找相关资料,指出其含义与作用。

答:除了.text、.data、.bss段外,还有下面这些段:output section page origin length attributes/input.cinit 0 003f8002 0000002e.reset 0 003fffc0 00000002 DSECT.stack 1 00000400 00000400 UNINITIALIZED.ebss 1 003f9000 0000008c UNINITIALIZED 查阅资料可知各段的作用分别为:.cinit:变量初值表.reset:复位.stack:堆栈.ebss:长调用得.bss(超过了64K)的地址限制2、在保持源文件功能正确的前提下,仅修改.cmd配置命令文件,改变段的地址分配,链接工程后,执行程序,如果出现错误,思考原因。

答:根据DSP2418的存储器映射图,按照所需存储文件大小不大于存储区内存的原则,将.cmd文件中的Page 0中的Rammo块的起始地址由0x0000 0000改为0x0000 0008,编译运行程序,没有出现错误。

在变量观察窗口里发现main的起始地址变为0x0000 0008。

3、在不修改波形数值计算子模块前提下,即保持波形数值表中的数据,依照DDS原理,修改程序,调整线性调频信号的输出周期。

答:依照DDS原理,波形数值表中的数值不变,要改变信号输出周期即改变数值写入DSP部分。

将程序修改为下如下:while(1){ for(i=0;i<1024/2;i++){//tmp = (int)(*(RamAddr+i))<<2;*(DAC1Addr) = (unsigned int)((*(RamAddr+2*i))<<2) + 0x8000;}}示波器输出如下:读程序可知,程序中的两个粗体2决定了DSP从波形数据中读取数据的间隔(步长),通过调整该数即可将产生的信号的频率改变。

八、实验总结在试验九的基础上,熟悉的实验的流程和基本操作,这次实验在原有正确程序的基础上,根据老师在试验开始前给大家讲过的实验要求对源程序添加正确公式,然后再修改相关参数,获取多个波形。

在这次实验中,我们在波形及相关结果记录上做的不太好,写报告时波形对号入座时才发现问题,没有按照预期的时间交上报告。

所以,对实验结果进行及时并准确的记录也是实验的一个重要步骤,有了这次的教训,以后会格外注意避免类似错误的发生。

相关主题