李正弦波振荡器 2文档格式.docx
- 文档编号:20372174
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:20
- 大小:656.62KB
李正弦波振荡器 2文档格式.docx
《李正弦波振荡器 2文档格式.docx》由会员分享,可在线阅读,更多相关《李正弦波振荡器 2文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
6、体会及思考题
四、报告撰写时,要求格式规范、书写整齐
预习报告成绩:
指导教师审核(签名):
年月日
预习报告
一、实验目的
(1)了解利用CCS进行DSP工程项目创建、编译和运行的过程;
(2)会利用CCS中提供的图形化显示工具、断点、探点等调试工具进行工程项目的简单调试;
(3)能够设计基于迭代法的数字正弦振荡器;
(4)掌握定时器中断的设置和使用。
二、实验用仪器设备、器材或软件环境
(1)微机一台;
(2)CCS软件;
(3)DES5402PP-U实验箱。
三、预习要求
(1)参照教材学习DSP定时器的工作原理、中断频率范围、具体寄存器的设置。
根据期望的数据转换速率,得到合理的定时器寄存器设置参数。
(2)参照教材学习二阶IIR数字振荡器的设计原理。
根据选定的数据转换速率和规定的正弦波频率(4kHz),设计相应IIR数字滤波器(差分方程),并对滤波器系数进行合适的量化(确定Q值),转换成定点二进制补码。
(3)参照教材学习在CCS中设置断点、探针的方法,程序动态运行(animate)的要求;
学习设置图形化显示工具进行时、频域分析的方法,特别是频域分析工具的使用(各种谱分析方法、FFT点数的设置、窗函数的选用等)。
规划程序调试策略和数据、波形的采集、分析方法。
(4)参照教材给出的指令说明,编写实验程序代码。
四、实验要求
(1)对自己编写的实验程序进行汇编、运行,对出现的问题进行调试,并作必要记录。
(2)记录数字序列在不少于2个周期内的数据及对应的时域波形(注意地址的一致性)。
(3)分析数字序列的频谱(需要注明FFT点数、窗函数和其他关键信息)。
(4)观察量化(不同Q值)对定点DSP算法的影响(频谱纯度、稳定性),记录关键数据和波形。
五、实验报告要求
(1)说明设计过程(包括滤波器系数、量化结果、定时器设置等);
(2)绘制程序流程图(要求与代码相对应);
(3)实验要求记录的数据、波形以及其他关键信息;
(4)程序调试中遇到的问题以及解决过程;
(5)实验代码清单;
实验报告成绩:
实验报告
三、实验原理
本实验采用递归的差分方程方法计算正弦和余弦值,其数字振荡器的实现原理与实验5(c)相同。
其实现公式为:
y[n]=2cosα×
y[n-1]-y[n-2]
式中:
为角度的计算步长,f0是正弦信号的频率,fs是D/A转换速率。
利用上面的递推公式计算正弦或余弦值y[n]需要已知cosα和正弦/余弦的前两个初始值y[0]和y[1]。
在产生周期性的正弦信号时,必须以一定的D/A转换速率fs将各个样点值送往D/A转换器。
正弦信号每个周期的样点数N由正弦信号的频率f0及D/A转换速率fs决定,即
例如,当利用递归的差分方程产生正弦信号时,若设定D/A转换速率fs=16000Hz,则产生f0=1000Hz的正弦波信号时,存在
,此时
首先在程序中计算出cosα及初始值y[0]和y[1]。
cosα=0.9238795;
y[0]=sin0=0;
y[1]=sinα=0.382683;
n≧2以后的y[n]的值,都可以通过前面的递推公式递归计算得出。
在产生正弦信号的过程中,由于sinx的值总是小于1的数,而F206DSP是16位定点处理器,所以要将其乘以215,变成Q15的数据格式,才能够在DSP中送到D/A转换器进行处理。
本实验采用低速D/A转换器(AIC10)进行D/A转换。
在AIC10中包含A/D和D/A两部分电路,在实验中只使用D/A转换部分。
F206DSP通过片内外设SSP(同步串行口)与EVM板上的AIC10相连。
当F206DSP的发送FIFO缓冲区空时,产生SSP发送中断。
此时调用XmitIsr中断服务程序。
XmitIsr中断服务程序的功能:
对于软件仿真时,中断服务程序根据正弦振荡器的算法计算出1000h点正弦波的波形值,并把这些波形值存储到板载存储器900h开始的存储单元上;
对于硬件仿真时,中断服务程序除了根据正弦振荡器的算法产生正弦波波形值以外,还要将该波形数据通过AIC10进行D/A转换。
四、实验内容与步骤
在CCS下的仿真器驱动程序的具体过程:
步骤1:
双击桌面上的SetupCCS2(’C5000)图标,启动CCS设置在弹出对话框中单击“Clear”按钮,清除以前定义的配置。
从列出的可供选择的配置文件中,选择能与使用的目标系统相匹配的配置文件。
建立新的工程:
添加工程中支持C源文件(*.c*)、汇编源文件(*.a*、*.s*)、库文件(*.o*、*.lib)、头文件(*.h)和链接命令文件(*.cmd)项目,添加文件到工程(Project→AddFilestoProject)
实验源程序:
调试程序:
“Project→RebuildAll”,对工程进行重新编译。
•“File→LoadProgram”,选volume.out并打开,将Build生成的程序加载到DSP。
•“View→MixedSource/ASM”。
该设置使得C程序与其汇编结果同时显示。
•“Debug→GoMain”。
使得程序从主程序开始执行。
•“Debug→Run”,可以在Output窗口看到“beginprocessing”信息。
•“Debug→Halt,中止正在执行的程序。
调试和运行:
在File菜单选择“FileI/O”,出现FileI/O对话框,在对话框中选择输入/输出文件。
在“FileInput”栏中,单击AddFile按钮。
输入输出口设置:
在volume.c文件所在目录选择sina.dat,并单击打开按钮。
此时将出现一个控制窗口,可以在运行程序时使用这个窗口来控制数据文件的开始、停止、前进、后退等操作。
在FileI/O对话框中,在Address域填入inp_buffer,在length域填入100,选中WrapAround复选框(读取数据的循环特性)。
单击“AddProbePoint”按钮,将出现Break/ProbePoints对话框,选中“ProbePoints”栏。
在ProbePoint列表中显示“VOLUME.Cline61-->
NoConnection”。
表明该第61行已经设置ProbePoint,但还没有和PC文件关联。
在Connect域,单击向下箭头并从列表中选sine.dat。
单击Replace按钮,ProbePoint列表框表示ProbePoint已与sine.dat文件相关联。
单击“确定”按钮,FileI/O对话框指示文件连至一个ProbePoint。
单击“确定”按钮,关闭FileI/O对话框。
(1)选择“View→Graph→Time/Frequency(显示→图形→时域/频域)”。
弹出GraphProperty对话框
(2)在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命令,清除已有显示波形。
参数调整:
由于ProbePoint不会更新图形显示内容。
本例将设置一个断点,使图形窗口自动更新。
使用Animate命令,使程序到达断点时更新窗口后自动继续运行。
(1)在volume.c窗口,将光标放在dataIO行上。
(2)在该行同时设置一个断点和一个ProbePoint,使程序中断时执行两个操作:
传送数据和更新图形显示。
(3)在Debug菜单单击Animate。
此命令将运行程序,碰到断点后临时中断程序运行,更新窗口显示,然后继续执行程序(5)每次碰到ProbePoint时,CCS将从sine.dat文件读取100个样值,并将其写至输入缓冲inp_buffer。
由于sine.dat文件保存的是40个采样值的正弦波形数据,因此每个波形包括2.5个sin周期波形,如下图所示。
(6)选择“Debug→Halt(调试→停止)”,停止程序运行。
波形显示:
五、实验源程序代码
主函数
main.asm
.title"
2kHzsinewavegeberator(fs=40000Hz,25usTINT)"
.mmregs
.global_c_int00
.globaly0,y1,y2,AA,BB,CC
.refvector
OFF_INTIMER.set04Ch;
vectorofINTtimeratVECTOR+OFF_INTIMER
INIT_A.set079bch;
A/2=0.9510498046875
INIT_B.set0c000h;
B/2=-0.5
INIT_C.set0278dh;
C=0.308990478515625
.bssy0,1
.bssy1,1
.bssy2,1
.bsstemp,1
.bssAA,1
.bssBB,1
.bssCC,1
.text
_c_int00:
ld#0,dp
ssbxintm;
disableallinterrupt!
st#1fffh,sp
ld#vector,a;
getvectortableaddress!
and#0FF80h,a
andm#007Fh,pmst
orpmst,a
stlma,pmst;
setIPTR
stm#10h,TCR;
initTIMER
stm#2499,PRD;
f=100M/(2499+1)=40kHz
stm#20h,TCR;
resetTIMER
ldmIMR,a;
readbackIMR
or#08h,a;
enableTIMERinterrupt
stlma,IMR;
setIMR
ld#temp,dp;
setDP
ssbxFRCT;
prepareforfractionmpy
st#INIT_A,AA;
initAA
st#INIT_B,BB;
initBB
st#INIT_C,CC;
initCC
pshdCC
popdy2;
inity2,y2=CC
ldAA,T;
T=AA
mpyy2,a;
y2*AA->
a
stha,y1;
y1
stm#0h,TCR;
enableTIMER
nop
rsbxintm;
enableallinterrupts!
idle:
bidle
.end
tint_ISR.asm
.global_tint
.refy0,y1,y2,AA,BB,CC
;
------------------------------
ISRforTIMER0interrupt!
-----------------------------
_tint:
ld#BB,DP
ldBB,T;
T=BB
a=y2*BB
ltdy1;
T=y1,y2=y1
macAA,a;
a=a+y1*AA
stha,1,y1;
newcosdata->
stha,1,y0;
y0
nop;
setbreakpointinCCS!
!
rete
.end
vector_table.asm
s
.ref_c_int00
.ref_tint
.globalvector
.sect"
.int_table"
----------------------------
interruptevectortable
vector:
rsb_c_int00
nop
nmirete
sint17rete
sint18rete
sint19rete
sint20rete
nop
sint21rete
sint22rete
sint23rete
sint24rete
sint25rete
sint26rete
sint27rete
sint28rete
sint29rete
sint30rete
int0rete
int1rete
int2rete
tint0b_tint
brint0rete
bxint0rete
dmac0rete
tint1rete
int3rete
hpintrete
dmac2rete
dmac3rete
dmac4rete
dmac5rete
rev1rete
rev2rete
---------------------------------------
endofinterruptevectortable
sine.cmd
MEMORY
{
PAGE1:
INT_D:
ORIGIN=80h,LENGTH=1F80h
PAGE0:
EXT_P:
ORIGIN=2000h,LENGTH=2000h
}
SECTIONS{
.text:
>
EXT_PPAGE0
.int_table:
(EXT_PALIGN(128)PAGE(0))
.data:
INT_DPAGE1
.out文件
.title"
六、实验中遇到的问题及结果分析
1.建立Project后,添加完sine.cmd文件后,再进行汇编后成功,没有警告和错误。
2.进行查看波形时,出现错误。
首先由于时间过快,调整后仍然不能够显示波形。
经过检查发现是由于没有将sine的波形载入,载入后错误消失。
七、实验心得体会
在本次DSP的实验中,学会了CCS软件的而应用,包括项目的建立,项目所兼容的文件。
添加文件过程要谨慎。
不能遗漏或者乱填加。
会造成后面项目执行出现错误。
以及利用CCS进行DSP工程项目创建、编译和运行的过程会利用CCS中提供的图形化显示工具、断点、探点等调试工具进行工程项目的简单调试;
能够设计基于迭代法的数字正弦振荡器;
掌握了定时器中断的设置和使用。
这个实验不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有所提高。
更重要的是,在实验课上我学会了很多学习的方法。
真正将所学知识应用到实际生活中。
在实验中应用了书本所学的知识,而且将断点知识应用到实践中更加深了对知识的理解。
在本次实验中收获很多。
而且你多做几遍,就对软件和知识更加熟练和透彻,正所谓一份耕耘一份收获。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 李正弦波振荡器 正弦波 振荡器