1、2.2 XF引脚周期性变化最简单的程序:DSP_XF1.asm 循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化。.mmregs 。预定义的寄存器.def CodeStart定义程序入口标记.text程序区CodeStart:程序入口BSET XFXF置1 RPT #999重复执行1000次空指令产生延时NOPBCLRXF清0RPT #999NOPB CodeStart跳转到程序开头循环执行.endNOP指令执行时间为一个时钟周期,设DSP工作频率是50MHz,可以估算出XF引脚电平的变化频率约为:50M/2000=25kHz在没有示波器的情况下,就要将这个程序稍作改进,增
2、加延时,用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化。2.3 子程序的调用 DSP_XF2.asm对DSP_XF1.asm稍作改进,用延时子程序设置较长的延时,可以用实验板上的LED看到XF引脚电平的变化.mmregs 。 .def CodeStart 。.text 。BSET XF 。CALL Delay 。调用延时程序BCLR XF 。B CodeStart 。延时子程序:Delay用两级减一计数器来延时。调整AR1和AR2的大小LED闪烁的频率不同Delay: MOV#999,*AR1 。循环次数1000LOOP1: MOV #4999,*AR
3、2 。循环次数5000LOOP2: BCC LOOP2,*AR2- 。如果AR2不等于0,AR2减1,再判断BCCLOOP1,*AR1- 。如果AR1不等于0AR1减1,跳转到LOOP1RET.end3 软件程序3.1源程序方波与程序清单timer.asm.mmregs .def _c_int00.ref sdram_inittim0 .set 0x1000prd0 .set 0x1001tcr0 .set 0x1002prsc0 .set 0x1003sysr .set 0x07fdclkmd .set 0x1c00pdp_timer0 .set tim0/128STACK .usect .
4、stack, 200hSYSSTACK .usect .sysstack.bss a1, 1.data .sect .vectorsrsv: b _c_int00 nop .align 8nmi:.loop 8 .endloopint0:int2: .loop 8 nop .endloop tint0: b _Timer0 nop 主程序: .text_c_int00: amov #0,xdp amov #STACK+200h,xsp amov #SYSSTACK+200h,xssp bset intm mov #1,ivpd mov #1,ivph mov #10h,ier0 mov #10
5、h,dbier0 mov #0,ier1 mov #0ffffh,ifr0 mov #0ffffh,ifr1 call sdram_init mov #pdp_timer0,pdp mov #04f0h,port(tcr0 mov #0h,port(tim0mov #0ffffh,port(prd0 mov #15h,port(prsc0mov #0e0h,port(tcr0bclr intm amov #a1, xdpmov #0,ac0 mov ac0, a1loop:Nopb loop_Timer0: mov a1, ac0 bcc Loop1, ac0=#1 b Loop2Loop1:
6、 bset xf mov #0, a1 b nextLoop2: bclr xf mov #1, a1Next: reti .end3.2 SDRAM初始化程序sdram_init.asm.def sdram_init ebsr .set 0x6c00egcr .set 0x800emirst .set 0x801emibe .set 0x802 ce01 .set 0x803ce02 .set 0x804ce03 .set 0x805ce11 .set 0x806ce12 .set 0x807ce13 .set 0x808ce21 .set 0x809ce22 .set 0x80Ace23
7、.set 0x80Bce31 .set 0x80Cce32 .set 0x80Dce33 .set 0x80Esdc1 .set 0x80Fsdper .set 0x810sdcnt .set 0x811init .set 0x812sdc2 .set 0x813sdram_pdp .set egcr/128 .textsdram_init: mov #0xa01,port(#ebsr 。*ebsr = 0xa01mov #sdram_pdp,pdpmov #0x220,port(egcr*egcr = 0x220 mov #0x3000,port(ce01*ce01 = 0X3000 mov
8、 #0x1fff,port(ce11*ce11 = 0X1fff mov #0x1fff,port(ce21*ce21 = 0x1fff mov #0x1fff,port(ce31*ce31 = 0x1fff mov #0x0,port(emirst*emirst = 0 mov #0x5958,port(sdc1*sdc1 = 0X5958 mov #0x38f,port(sdc2*sdc2 = 0X38F mov #0x0,port(init*init= 0ret3.3 方波程序连接命令文件timercmdMEMORY PAGE 0: MMR: origin =00000000h,leng
9、th = 00000c0hSPRAM: origin = 00000c0h,length = 0000040h VECS: origin = 0000100h, length = 0000100h DARAM0: origin = 0000200h, length = 0001E00h DARAM1: origin = 0002000h, length = 0002000hDARAM2: origin = 0004000h, length = 0002000hDARAM3: origin = 0006000h, length = 0002000hSECTIONS .vectors: VECS
10、PAGE 0 .bss: DARAM0PAGE 0.stack: DARAM1 PAGE 0 .sysstack: DARAM1 PAGE 0.text: DARAM2 PAGE 0.data: DARAM3 PAGE 04调试仿真运行结果分析所有程序经调试无误,全部正常运行,根据定时器长度计算公式:Tt=T*(1+TDDR*(1+PRD,通过修改TDDR与PRD的值便可在XF引脚上输出频率任意频率的方波。4.1运行结果截图在mov #0, a1设置断点,当程序运行到此位置时XF位已被置为1。图4.1 XF引脚输出1 在mov #1, a1设置断点,当程序运行到此位置时XF位已被置为0。图4.
11、2 XF引脚输出0当程序再次运行到mov #0, a1断点时,XF位又再一次被置为1。图4.3 XF引脚再次输出14.2课设过程中遇到的问题与解决方案在程序调试过程中出现缺少空格、符号及字母大小写等错误,经过仔细阅读修改后程序运行正常。结 论本文得到的结论如下:在对设计的信号发生器,即对C55xx的汇编语言进行调试。本文以基于DSP 的信号发生器方波)的设计为题,完成了在XF引脚上输出任意频率的方波的任务。但是上述工作尚有许多不成熟、不完善的地方,这就需要今后进一步开展的工作。参考文献1方华刚.DSP原理与应用.北京.北京机械工业出版社,2006.12程佩青.数字信号处理教程第二版.北京.清华
12、大学出版社,2001.83孙宗瀛. TMS320C5x DSP原理设计与应用.北京. 清华大学出版社,20024郑红吴冠. TMS320C54X DSP应用系统设计.北京.北京航空航天大学出版社, 20025TMS320C55X DSP Programmers Guide SPRU376AZ.Texas Instruments,20016TMS320C55X DSP Mnemonic Instruction Set Reference Guide SORU374GZ. Texas Instruments,2002致 谢在这次课程设计从开始到完成,我得到了许多人的帮助。首先我要感谢我的老师在课程
13、设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做毕业设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。课程设计论文)评语及成绩评定指导教师评语:评分_ 指导教师签字)_ _年_月_日论文)及答辩评分:1学生工作态度和平时表现共20分)_;2论文格式规范、语言流畅3数据完整、分析论述充分合理,结论正确4答辩表述能力5基本概念及回答问题情况共20分)_。课程设计总成绩_ 答辩组成员签字)_ _年_月_日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1