信号缩放.docx
《信号缩放.docx》由会员分享,可在线阅读,更多相关《信号缩放.docx(21页珍藏版)》请在冰豆网上搜索。
信号缩放
内蒙古工业大学信息工程学院
实验报告
课程名称:
DSP技术及应用
实验名称:
信号缩放
实验类型:
验证性■综合性□设计性□
实验室名称:
信息工程学院9楼机房
班级:
电子11-2班学号:
姓名:
组别:
同组人:
成绩:
实验日期:
2014年6月27日
实验报告撰写要求
一、实验前用预习报告纸撰写预习报告,预习报告包括以下内容
1、实验目的
2、实验用仪器设备、器材或软件环境
3、实验原理、方案设计、程序框图、预编程序等
4、实验过程中需要记录的实验数据表格
二、实验过程中,要认真观察,仔细记录
三、完成实验后用实验报告纸撰写实验报告,包括以下内容
1、仪器设备型号及编号
2、实验器材或软件环境
3、实验步骤、程序调试方法
4、实验数据处理及结果分析
5、实验中存在的问题
6、体会及思考题
四、报告撰写时,要求格式规范、书写整齐
预习报告成绩:
指导教师审核(签名):
年月日
预习报告
一、实验目的
(1)了解DSP软件工程项目的基本构成和程序的编译、汇编、链接过程
(2)了解cmd文件的作用;
(3)学会使用gel文件进行调试;
(4)认识定点算法中的数据溢出现象。
二、实验用仪器设备、器材或软件环境
(1)微机一台;
(2)CCS软件;
(3)DES5402PP-U实验箱。
三、预习要求
(1)参照教材学习DSP软件工程项目的基本构成和程序的编译、汇编、链接过程;
(2)参照教材学习cmd文件的编制及其作用;
(3)参照教材学习使用gel文件进行调试
四、实验要求
(1)记录100倍放大前后的正弦序列波形,观察是否存在失真;
(2)记录400倍放大前后的正弦序列波形,观察是否存在失真;
(3)用实验方法确定放大倍数超过何值时就会发生溢出,用理论计算解释之。
5.实验报告要求
(1)绘制程序流程图(要求与代码相对应);
(2)实验要求记录的数据、波形以及其他关键信息;
(3)程序调试中遇到的问题以及解决过程;
(4)实验代码清单。
实验报告成绩:
指导教师审核(签名):
年月日
实验报告
一、实验目的
(1)了解DSP软件工程项目的基本构成和程序的编译、汇编、链接过程;
(2)了解cmd文件的作用;
(3)学会使用gel文件进行调试;
(4)认识定点算法中的数据溢出现象。
二、实验用仪器设备、器材或软件环境
(1)微机一台;
(2)CCS软件;
(3)DES5402PP-U实验箱。
三、实验步骤
在CCS下的仿真器驱动程序的具体过程:
建立工程:
步骤1:
在弹出对话框中单击“Clear”按钮,清除以前定义的配置
单击加入系统配置按钮,将所选中的配置文件输入到CCS设置窗口当前正在创建的系统配置中
步骤2:
保存并退出
步骤3:
单击“File-Save(保存)”按钮,将配置保存在系统寄存器中。
步骤4:
通过“Project→AddFilestoProject”,将Volume.c添加到工程中。
步骤5:
用同样方法将Vector.asm添加到工程中。
(Vector.asm中包含的是将RESET中断指向C程序入口c_int00的汇编指令和其他中断的入口指令。
如果调试的程序较为复杂,则可在Vector.asm中定义更多的中断矢量)将load.asm添加到工程文件中。
(该文件包含一个简单的汇编循环程序,被C程序调用。
调用时带有一个参数(argument),执行此程序共需约1000×argument个指令周期
步骤6:
将“C:
\ti\c5400\cgtools\lib”下的rts.lib加入到工程文件中。
(该文件是采用C语言开发DSP应用程序的运行支持库函数)
步骤7:
同理全部添加项目:
编译和运行程序:
“Project→RebuildAll”,对工程进行重新编译。
•“File→LoadProgram”,选volume.out并打开,将Build生成的程序加载到DSP。
•“View→MixedSource/ASM”。
该设置使得C程序与其汇编结果同时显示。
•“Debug→GoMain”。
使得程序从主程序开始执行。
•“Debug→Run”,可以在Output窗口看到“beginprocessing”信息。
•“Debug→Halt,中止正在执行的程序。
单击“确定”按钮,FileI/O对话框指示文件连至一个ProbePoint。
在FileI/O对话框中,在Address域填入inp_buffer,在length域填入100,选中WrapAround复选框(读取数据的循环特性。
“View→Graph→Time/Frequency(显示→图形→时域/频域)”。
弹出GraphProperty对话框
在GraphProperty对话框中,更改GraphTitle(图形标题)、StartAddress(起始地址)、AcquisitionBufferSize(采集缓冲区大小)、DSPDataType(DSP数据类型)、Autoscale(自动伸缩属性)及MaximumY-value(最大Y值)。
(3)单击OK按钮,出现一个显示inp_buffer波形的图形窗口。
(4)在图形窗口中右击,从弹出菜单中选择ClearDisplay,清除已显示波形。
(5)再次执行“View→Graph→Time/Frequency”。
(6)将GraphTitle修改为outputbuffer,StartAddress修改为out_buffer,其他设置不变。
(7)单击OK按钮,出现一个显示out_buffer波形的图形窗口,右击从菜单中选择ClearDisplay命令,清除已有显示波形
在Debug菜单单击Animate。
此命令将运行程序,碰到断点后临时中断程序运行,更新窗口显示,然后继续执行程序(与Run不同的是,Animate会继续执行程序直到碰到下一个断点。
只有人为干预时,程序才会真正中止运行。
可以将Animate命令理解为一个“运行→中断→继续”的操作)。
最终显示的波形:
四、实验源程序
*volume.c
*Copyright2001byTexasInstrumentsIncorporated.
*Allrightsreserved.PropertyofTexasInstrumentsIncorporated.
*Restrictedrightstouse,duplicateordisclosethiscodeare
*grantedthroughcontract.
*U.S.PatentNos.5,283,9005,392,448
*/
/*"@(#)DSP/BIOS4.51.005-23-01(barracuda-i10)"*/
/***************************************************************************/
/**/
/*VOLUME.C*/
/**/
/*Audiogainprocessinginamainloop*/
/**/
/***************************************************************************/
#include
#include"volume.h"
/*Globaldeclarations*/
intinp_buffer[BUFSIZE];/*processingdatabuffers*/
intout_buffer[BUFSIZE];
intgain=MINGAIN;/*volumecontrolvariable*/
unsignedintprocessingLoad=BASELOAD;/*processingroutineloadvalue*/
/*Functions*/
externvoidload(unsignedintloadValue);
staticintprocessing(int*input,int*output);
staticvoiddataIO(void);
/*
*========main========
*/
voidmain()
{
int*input=&inp_buffer[0];
int*output=&out_buffer[0];
puts("volumeexamplestarted\n");
/*loopforever*/
while(TRUE)
{
/*
*Readinputdatausingaprobe-pointconnectedtoahostfile.
*Writeoutputdatatoagraphconnectedthroughaprobe-point.
*/
dataIO();
/*applygain*/
processing(input,output);
}
}
/*
*========processing========
*
*FUNCTION:
applysignalprocessingtransformtoinputsignal.
*
*PARAMETERS:
addressofinputandoutputbuffers.
*
*RETURNVALUE:
TRUE.
*/
staticintprocessing(int*input,int*output)
{
intsize=BUFSIZE;
while(size--){
*output++=*input++*gain;
}
/*additionalprocessingload*/
load(processingLoad)
return(TRUE);
}
/*
*========dataIO========
*
*FUNCTION:
readinputsignalandwriteprocessedoutputsignal.
*
*PARAMETERS:
none.
*
*RETURNVALUE:
none.
*/
staticvoiddataIO()
{
/*dodataI/O*/
return;
}
volume.cmd
/*
*Copyright2001byTexasInstrumentsIncorporated.
*Allrightsreserved.PropertyofTexasInstrumentsIncorporated.
*Restrictedrightstouse,duplicateordisclosethiscodeare
*grantedthroughcontract.
*/
/*
*========volume.cmd========
*
*/
MEMORY
{
PAGE0:
EPROG:
origin=0x1400,len=0x7c00
VECT:
origin=0xff80,len=0x80
PAGE1:
USERREGS:
origin=0x60,len=0x1c
BIOSREGS:
origin=0x7c,len=0x4
IDATA:
origin=0x80,len=0x1380
EDATA:
origin=0x1400,len=0x8000
EDATA1:
origin=0x9400,len=0x4c00
}
SECTIONS
{
.vectors:
{}>VECTPAGE0
.sysregs:
{}>BIOSREGSPAGE1
.trcinit:
{}>EPROGPAGE0
.gblinit:
{}>EPROGPAGE0
frt:
{}>EPROGPAGE0
.text:
{}>EPROGPAGE0
.cinit:
{}>EPROGPAGE0
.pinit:
{}>EPROGPAGE0
.sysinit:
{}>EPROGPAGE0
.bss:
{}>IDATAPAGE1
.far:
{}>IDATAPAGE1
.const:
{}>IDATAPAGE1
.switch:
{}>IDATAPAGE1
.sysmem:
{}>IDATAPAGE1
.cio:
{}>IDATAPAGE1
.MEM$obj:
{}>IDATAPAGE1
.sysheap:
{}>IDATAPAGE1
.stack:
{}>IDATAPAGE1
}
;vector.asm
;Copyright2001byTexasInstrumentsIncorporated.
;Allrightsreserved.PropertyofTexasInstrumentsIncorporated.
;Restrictedrightstouse,duplicateordisclosethiscodeare
;grantedthroughcontract.
;U.S.PatentNos.5,283,9005,392,448
;
;"@(#)DSP/BIOS4.51.005-23-01(barracuda-i10)"
;========vectors.asm========
;PlugintheentrypointatRESETintheinterruptvectortable
;
.sect".vectors"
.ref_c_int00;Centrypoint
.align0x80;mustbealignedonpageboundary
RESET:
;resetvector
BD_c_int00;branchtoCentrypoint
STM#200,SP;stacksizeof200
nmi:
RETE;enableinterruptsandreturnfromone
NOP
NOP
NOP;NMI~
;softwareinterrupts
sint17.space4*16
sint18.space4*16
sint19.space4*16
sint20.space4*16
sint21.space4*16
sint22.space4*16
sint23.space4*16
sint24.space4*16
sint25.space4*16
sint26.space4*16
sint27.space4*16
sint28.space4*16
sint29.space4*16
sint30.space4*16
int0:
RETE
NOP
NOP
NOP
int1:
RETE
NOP
NOP
NOP
int2:
RETE
NOP
NOP
NOP
tint:
RETE
NOP
NOP
NOP
rint0:
RETE
NOP
NOP
NOP
xint0:
RETE
NOP
NOP
NOP
rint1:
RETE
NOP
NOP
NOP
xint1:
RETE
NOP
NOP
NOP
int3:
RETE
NOP
NOP
NOP
.end
;load.asm
;Copyright2001byTexasInstrumentsIncorporated.
;Allrightsreserved.PropertyofTexasInstrumentsIncorporated.
;Restrictedrightstouse,duplicateordisclosethiscodeare
;grantedthroughcontract.
;U.S.PatentNos.5,283,9005,392,448
;
;"@(#)DSP/BIOS4.51.005-23-01(barracuda-i10)"
;
;========load.asm========
;
;C-callableinterfacetoassemblylanguageutilityfunctionsforthe
;volumeexample.
.mmregs
.global_load
.text
N.set1000;multipleoffour.
;
;========_load========
;ThisfunctionsimulatesaloadontheDSPbyexecutingN*loadValue
;instructions,whereloadValueistheinputparametertoload().
;
;trueexecutiontime:
(loadValue)*((N/4+25)+13
;
;Preconditions:
a=loadValue
;
;Postconditions:
none.
;
;Modifies:
a
;
;voidload(unsignedintloadValue)
;
_load:
bcdone,aeq;doneifa=0
sub#1,a
stlma,ar4;ar4=loopCount-1
ld#(N/4-2),a;a=(N/4)-2
loop:
stlma,brc;initializecountregisterforblockrpt
nop
nop
rptb$1
nop
nop
nop
$1nop
banzloop,*ar4-
done:
.if__far_mode;-mfflagwillassemblefarmodereturnopcode
fret
.else
ret
.endif
;/*endload()*/
.end
VOLUME_H
*Restrictedrightstouse,duplicateordisclosethiscodeare
*grantedthroughcontract.
*U.S.PatentNos.5,283,9005,392,448
*/
/*"@(#)DSP/BIOS4.51.005-23-01(barracuda-i10)"*/
/*
*========volume.h========
*
*/
#ifndef__VOLUME_H
#define__VOLUME_H
#ifndefTRUE
#defineTRUE1
#endif
#defineBUFSIZE0x64
#defineFRAMESPERBUFFER10
#defineMINGAIN1
#defineMAXGAIN10
#defineMINCONTROL0
#defineMAXCONTROL19
#defineBASELOAD1
#endif/*__VOLUME_H*/
5、实验中遇到的问题
1.对软件不够熟悉,但是很快通过老师讲解结合课本和视频便掌握了软件操作步骤。
不过需要多次试验,才能熟能生巧。
2.对定点算法中的数据溢出现象开始没观测到,后来发现程序添加有问题,添加后现象明显。
六、实验心得体会
在本次试验中,我们通过视频讲解和老师的辅导,很快的学会了软件操作。
这是效率比较快的一次试验。
但是虽然掌握了软件方法但是实话实说,对于软件的个步骤原理还是不能够很好的理解。
后来通过老师的指导,熟悉了各个操作步骤的含义。
在本次试验中对DSP有了进一步的学习。
加强了理论和实践相结合的学习,在实验中我们之所以有时候遇见参数更改会不知所措,是因为我们还不够了解试验原理。
不够明白试验的意图。
只有明白试验的原理和试验所要达到的目的,才能够更有方向的进行试验操作和试验的方法的摸索。
本次试验的最大的启示就是只有明白为什么出发才能够更好的完成试验。