还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
广东石油化工学院DSP综合实验报告课程名称DSP系统__与设计实验题目函数__发生器学号姓名班级指导老师实验日期2012-6-11至2012-6-15基于TMS320C54xDSP的函数发生器的设计
1、设计目的
1、了解数字波形产生的原理;
2、学习用DSP产生各种波形的基本方法和步骤;
3、掌握DSP与D/A转换器接口的使用
2、设计设备计算机、DSP仿真器、ZYE1801B实验箱、20M示波器
3、设计原理波形产生是DSP的重要应用之一而正弦__发生器的设计则是波形产生应用的一个重要方面,它在通信领域有着广泛的应用通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合泰勒级数展开法是根据泰勒展开式进行计算来实现正弦__,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间本次主要用泰勒级数展开法来实现正弦波__产生正弦波的算法正弦函数和余弦函数可以展开成泰勒级数,其表达式取泰勒级数的前5项,得近似计算式递推公式sinnx=2cosxsin[n-1x]-sin[n-2x]cosnx=2cosxsin[n-1x]-cos[n-2x]由递推公式可以看出,在计算正弦和余弦值时需要已知cosx、sinn-1x、sinn-2x和cosn-2x为了减少使用的存储器,可以采用正弦__的对称性,__90~180度的正弦值和180~360度的正弦值余弦__的产生同样可以采用多种方法产生一是采用公式计算得到,二是采用正弦__变换得到方波__产生可以通过轮流输出两个不同大小的数值通过A/D转换得到
4、设计内容本设计题目以TMS320C54xDSP为目标器件,设计并实现基于迭代法的“正弦序列生成”算法及其DSP程序设计步骤
1、熟悉正弦__发生器的算法以及在DSP系统的实现
2、熟悉A/D转换的原理及实验箱的链接
3、掌握A/D转换的程序的编写
4、编写DSP的正弦__发生器的程序
5、编写定时程序产生100HZ、1KHZ、10KHZ的正弦、余弦以及100K、1M的方波__,每种类型的波形单周期360个点
6、编写按键程序,控制输出用三个拨码开关对DSP进行输入,输入的0~7对应的8种不同的波形
7、用示波器观察各个波形
8、分析波形失真的原因
5、实验步骤
1.熟悉本实验原理
2.阅读本实验样例程序
3.依次连接主板上的PC
10、PC
11、TP32到PC
15、PC
16、GND;依次连接主板上的PC
13、PC
14、M58到插板上的DJ
0、DJ
1、S
124.将计算机与ZYE1801C实验箱通过并口P1相连
5.运行CCS软件客户软件\DSP程序\test19,通过插板上的JP1,JP2,JP3来选择不同的波形
6.用示波器观察DA0的输出波形
六、设计的硬件结构框图
7、实验代码先计算0~45°(间隔为
0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(间隔为1°)然后,通过__,获得0~359°的正弦值重复向PA口输出,便可得到正弦波.titlebxfsq.a__.mmregs.global__in.defstart.refd_xsd_sinxd_xcd_cosxsinxcosxsin_x:.usectsin_x360cos_x:.usectcos_x360fangbo:.usectfangbo360STACK:.usectSTACK10Hk_theta:.set286TIM
0.set0024HPRD
0.set0025HTCR
0.set0026HPA.set0100H.textstart:;产生正弦波数据STMk_thetaAR0STM#0AR1STM#sin_xAR6STM#90BRCRPTBloop1-1LDMAR1ALD#d_xsDPSTLA@d_xsSTLA@d_xcCALLsinxCALLcosxLD#d_sinxDPLD@d_sinx16AMPYA@d_cosxSTHB1*AR6+__R*AR1+0loop1:STM#sin_x+__AR7STM#88BRCRPTBloop2-1LD*AR7-ASTLA*AR6+loop2:STM#179BRCSTM#sin_xAR7RPTBloop3-1LD*AR7+ANEGASTLA*AR6+loop3:STM#sin_x+__AR6STM#cos_xAR7STM#269BRCRPTBlcos-1LD*AR6+ASTLA*AR7+lcos:STM#sin_xAR6STM#__BRCRPTBloop4-1LD*AR6+ASTLA*AR7+;产生方波数据loop4:STM#fangboAR6STM#179BRCRPTBlfangbo-1LD#7FFFHASTLA*AR6+lfangbo:STM#179BRCRPTB__in-1LD#0HASTLA*AR6+__in:STM#0SWWSRSTM#STACK+10HSPSTM#3FA0HPMSTSTM#0010HTCR0STM#0260HTCR0STM#0008HIFRSTM#0008HIMRR__XINTMPORTRPA*AR2LD*AR2AAND#01BABCfangbo_1mANEQLD*AR2AAND#010BABCfangbo_100kANEQLD*AR2AAND#0100BABCsin_10kANEQLD*AR2AAND#01000BABCsin_1kANEQLD*AR2AAND#0_____BABCsin_100ANEQLD*AR2AAND#0_____0BABCcos_10kANEQLD*AR2AAND#0_____00BABCcos_1kANEQLD*AR2AAND#_____000BABCcos_100ANEQend:Bendfangbo_1m:STM#10TIM0STM#10PRD0STM#fangboAR3B__infangbo_100k:STM#110TIM0STM#110PRD0STM#fangboAR3B__insin_10k:STM#2TIM0STM#2PRD0STM#sin_xAR3B__insin_1k:STM#30TIM0STM#30PRD0STM#sin_xAR3B__insin_100:STM#306TIM0STM#306PRD0STM#sin_xAR3B__incos_10k:STM#2TIM0STM#2PRD0STM#sin_xAR3B__incos_1k:STM#30TIM0STM#30PRD0STM#sin_xAR3B__incos_100:STM#306TIM0STM#306PRD0STM#sin_xAR3B__in;定时器中断输出TINT_T0:STM#1AR0STM#360BKloop:PORTW*AR3+0%PABloopRETEsinx:.defd_xsd_sinx.datatable_s:.word01c7h;c1=1/8*
9.word030bh;c2=1/6*
7.word0666h;c3=1/4*
5.word1556h;c4=1/2*3coef_s:.usectcoef_s4d_xs:.usectsin_vars1squr_xs:.usectsin_vars1temp_s:.usectsin_vars1d_sinx:.usectsin_vars1l_s:.usectsin_vars
1.textS__XFRCTSTM#coef_sAR5RPT#3MVPD#table_s*AR5+STM#coef_sAR3STM#d_xsAR2STM#l_sAR4ST#7FFFHl_sSQUR*AR2+ASTA*AR2||LD*AR4B__SR*AR2+*AR3+BAMPYAASTHA*AR2__SR*AR2-*AR3+BAMPYA*AR2+STB*AR2||LD*AR4B__SR*AR2-*AR3+BAMPYA*AR2+STB*AR2||LD*AR4B__SR*AR2-*AR3+BAMPYAd_xsSTHBd_sinxRETcosx:.defd_xcd_cosx.datatable_c.word0249h;c1=1/8*
7.word0444h;c2=1/6*
5.word0aabh;c3=1/4*
3.word4000h;c4=1/2*1coef_c.usectcoef_c4d_xc.usectcos_vars1squr_xc.usectcos_vars1temp_c.usectcos_vars1d_cosx.usectcos_vars1l_c.usectcos_vars
1.textS__XFRCTSTM#coef_cAR5RPT#3MVPD#table_c*AR5+STM#coef_car3STM#d_xcAR2STM#l_cAR4ST#7FFFHl_cSQUR*AR2+ASTA*AR2||LD*AR4B__SR*AR2+*AR3+BAMPYAASTHA*AR2__SR*AR2-*AR3+BAMPYA*AR2+STB*AR2||LD*AR4B__SR*AR2-*AR3+BASFTAA-1ANEGAMPYA*AR2+__R*AR2+RETDADD*AR416BSTHB*AR2RET.sect.vectors.align0x80RESET:BD__inSTM#200SP__i:RETENOPNOPNOPsint
17.spa__4*16sint
18.spa__4*16sint
19.spa__4*16sint
20.spa__4*16sint
21.spa__4*16sint
22.spa__4*16sint
23.spa__4*16sint
24.spa__4*16sint
25.spa__4*16sint
26.spa__4*16sint
27.spa__4*16sint
28.spa__4*16sint
29.spa__4*16sint
30.spa__4*16int0:RETENOPNOPNOPint1:RETENOPNOPNOPint2:RETENOPNOPNOPtint:BTINT_T0NOPNOPNOPrint0:RETENOPNOPNOPxint0:RETENOPNOPNOPrint1:RETENOPNOPNOPxint1:RETENOPNOPNOPint3:RETENOPNOPNOP.end
2、cmd文件代码如下说明系统中有哪些可用存储器、程序段、堆栈及复位向量和中断向量等安排在什么地方其中MEMORY段就是用来规定目标存储器的模型,通过这条指令,可以定义系统中所包含的各种形式的存储器,以及它们占据的地址范围;SECTIONS段说明如何将输入段组合成输出段以及在可执行文件中定义输出段、规定输出段在存储器中的位置等bxfsq.o__-obxfsq.out-mbxfsq.__p-estartMEMORY{PAGE0:EPROM:origin=0E000hlength=1000hVECS:origin=0FF80hlength=0080hPAGE1:SPRAM:origin=0060hlength=0020hDARAM1:origin=0080hlength=0010hDARAM2:origin=0090hlength=0010hDARAM3:origin=0200hlength=0600h}SECTIONS{.text:EPROMPAGE
0.data:EPROMPAGE0STACK:SPRAMPAGE1sin_vars:DARAM1PAGE1coef_s:DARAM1PAGE1cos_vars:DARAM2PAGE1coef_c:DARAM2PAGE1sin_x:align512{}DARAM3PAGE1cos_x:align512{}DARAM3PAGE1fangbo:align512{}DARAM3PAGE
1.vectors:VECSPAGE0}
8、设计结果以及结果分析在装有ccs软件的计算机上进行调试仿真,首先在仿真平台上配置好仿真平台,然后将以上代码输入代码编辑器,通过调试可得出实验所要求的波形正弦波形图如下余弦波形图如下方波图形如下三种波形的图如下
九、实验总结本次课程设计中对课堂所学进行了实践中断I/O口定时器……大大地加深了我对DSP编程原理的理解我还在这过程中进一步提高自身的创作、创新水平,扎实基础,扩展所学并且此次课程设计,基于课程理论知识和网上资料,使我对数字__处理课程有了更深一步的了解和掌握,对利用CCS软件编程的数字__处理方法有了进一步的了解在理论课的基础上进行实验实习,是对本门课程的深入学习和掌握,在以后的工作学习中,数字__的处理都是采用计算机仿真的方法进行测试,因此,掌握基于计算机的数字__处理方法对以后的工作和学习有很大的帮助3位数字量输入12位数字量输出模拟量输出DSP芯片D/A转换器。