ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:82.58KB ,
资源ID:4993210      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4993210.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP时钟设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP时钟设计.docx

1、DSP时钟设计时钟设计绪 论 DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。 DSP微处理器(芯片)一般具有如下主要特点: (1)在一个指令周期内可完成一次乘法和一次加法; (2)程序和数据空间分开,可

2、以同时访问指令和数据; (3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问; (4)具有低开销或无开销循环及跳转的硬件支持; (5)快速的中断处理和硬件I/O支持; (6)具有在单周期内操作的多个硬件地址产生器; (7)可以并行执行多个操作; (8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。 当然,与通用微处理器相比,DSP微处理器(芯片)的其他通用功能相对较弱些。 DSP的优点:对元件值的容限不敏感,受温度、环境等外部因素影响小; 容易实现集成;VLSI 可以分时复用,共享处理器; 方便调整处理器的系数实现自适应滤波; 可实现模拟处理不能实现的功能:线性相位、多抽

3、样率处理、级联、易于存储等; 可用于频率非常低的信号。1设计任务及目的1.1设计任务(1)通过查看书籍,总结以前学过的东西,明确设计时钟的思路(2)使用芯片设计时钟,使用数码管显示时间,使用键盘修改时间(3)总结设计过程,对实验结果做出总结1.2设计目的(1)通过课程设计,巩固已学过的知识,并在学过的基础上深化已学知识。(2)通过动手做软件和硬件设计,能够熟练掌握数字信号处理技术,增加对基础知识的消化和理解。(3)在课程设计的过程中培养讨论探究问题的能力。2设计原理2.1电路的设计2.1.1时钟电路的设计原则(1)系统中要求多个不同频率的时钟信号时,首选可编程时钟芯片,这样有利于时钟信号的同步

4、;(2)单一时钟信号时,一般的应用建议选择晶体时钟电路;(3)多个同频时钟信号时,可选择有源的晶振作为时钟电路;(4)尽量使用dsp片内的pll,降低片外时钟频率,提高系统的稳定性;(5)c6000、c5510、c5409a、c5416、c5420、c5421和c5441等dsp片内无振荡电路,不能用晶体时钟电路;(6)vc5401、vc5402、vc5409和f281x等dsp时钟信号的电平为1.8v,建议采用晶体时钟电路;2.1.2 C5509简介C5509是一种具有高处理能力和低功耗特性的16位定点DSP芯片,适用于定时器时钟等实时嵌入应用场合。与其它C55X芯片一样,C5509具有高度

5、灵活的可操作性和高速的处理能力。其性能特点如下:操作速率可达100MIPS;具有先进的多总线结构,三条16位数据存储器总线和一条程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个1717乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;整合维特比加速器,用于提高维特比编译码的速度;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSP C语言编译器;数据/程序寻址空间为1M16bit,内置4K16bit ROM和16K16bit RAM;内置可编程等待状态发生器、锁相环时钟产生器、两个多通道缓冲串口、一个与外部处

6、理器通信的8位并行HPI口、两个16位定时器以及6通道DMA控制器且低功耗。C55X系列片上集成有192K存储空间:64K字程序空间、64K数据空间、64K字I/O空间,它具有23条外部程序地址线,可寻址1M字的外部程序空间,因此增设了额外的存储映射程序技术扩展寄存器XPC,以及6条扩展程序空间寻址指令,整个程序空间分成16页。同时可寻址64K外部数据空间、64K外部I/O空间。RAM包括两种类型,一是只可以一次寻址的SARAM,二是可以两次寻址的DARAM。此外,还有数据存储器0页映射的25个特殊功能寄存器。与C55X系列的其它芯片相比,5509具有高性能、低功耗和低价格等特点。它采用6级流

7、水线,且当RPT(重复指令)时,一些多周期的指令就变成了单周期的指令;芯片内部RAM和ROM可根据PMST寄存器中的OVLY和DROM位灵活设置。2.1.3设计时钟时的注意事项(1)需要倍频的DSP需要配置好PLL周边配置电路,主要是隔离和滤波;(2)20MHz以下的晶体晶振基本上都是基频的器件,稳定度好,20MHz以上的大多是谐波的(如3次谐波、5次谐波等等),稳定度差,因此强烈建议使用低频的器件,毕竟倍频用的PLL电路需要的周边配置主要是电容、电阻、电感,其稳定度和价格方面远远好于晶体晶振器件;(3)时钟信号走线长度尽可能短,线宽尽可能大,与其它印制线间距尽可能大,紧靠器件布局布线,必要时

8、可以走内层,以及用地线包围;(4)通过背板从外部引入时钟信号时有特殊的设计要求,需要详细参考相关的资料。2.2 模块知识2.2.1中断和定时器中断,指的是当某个事件发生时,暂停当前的操作,转向中断服务程序,执行完后再返回继续原来的操作。这使得DSP能够处理多个任务。DSP有许多中断源,可以设置中断控制寄存器来确定响应哪些中断而不理会哪些中断。使用定时器首先要对它初始化,基本步骤如下:1关掉中断2停止定时器运行。3设定时器的定时长度4允许定时器中断5运行定时器6打开中断定时器实际上可以有20个比特的周期寄存器。它对CLKOUT信号计数,先将PSC(TCR中的D6-D9位)减1,直到PSC为0,然

9、后用TDDR(TCR中的低4位)重新装入PSC,同时将TIM减1,直到TIM减为0。这时CPU发出TINT中断,同时在TOUT引脚输出一个脉冲信号,脉冲宽度为CLKOUT一致。然后用PRD重新装入TIM,重复下去直到系统或定时器复位。计算公式:TINT的频率=1/(tc*(TDDR+1)*(PRD+1)), tc为CLKOUT的周期。定时器初始化步骤:1对TCR的TSS位写一以停止定时器2装载PRD3初始化TCR中的TDDR,并对TCR中的TSS置0,启动定时器要开放定时中断,必须假定(INTM=1):1对IFR中的TINT写1以清除待决的定时器中断2对IMR中的TINT置1,使能定时器中断3

10、使能全部中断,INTM置0在RESET后,TIM和PRD被设置为最大值(FFFFh)。TCR中的TDDR置0。定时器启动。2.2.2LED数码管显示电路LED数码管是由若干个发光二极管按一定的规律排列而成的,当某个发光二极管导通时,相应的段就会被点亮。根据内部发光二极管连接方式的不同,LED数码管可以分为共阳极和共阴极两类。本文采用共阳极显示方式,段码值从0到9依次为:Ox0C0、OxF9、Ox0A4、Ox0BO、0x9 9、0x92、0x82、0x0F8、Ox80、0x90。数码管显示驱动方式可以分为动态(扫描)驱动和静态驱动,以下是三种设计方案:(1)静态驱动方式该方式中,各个LED数码管

11、同时显示各自的字符,并维持不变,直到显示下一个字符为止。这种方式下,每一个数码管要对应一个8位驱动存储器,8个数码管共需64根驱动线,因而需要较多芯片,显示面板面积较大。(2)采用8根位选线的动态驱动显示这是将所有数码管相同的段选线并联,各数码管位选线轮流选通,分时多路复用。这种方案在任一时刻只有一位数码管被选中发光,然后利用人眼的视觉暂留特点实现同时显示的效果。本显示面板有8个数码管,只需要8个位驱动线和8个段驱动线。但8位循环显示时,每一位数码管的发光时间只占1/8循环时间,可能导数码管显示闪烁。(3)采用4位分组动态驱动显示这是将两个LED数码管共用一根位选线。这种方案相对于方案2少用一

12、个8位驱动器,每一位发光时间有1/4循环,因而比较容易保证数码管显示不闪烁。2.2.3 用键盘修改时间用键盘修改时间,有两种方式:(1)增减方式,。 当键入“1”时,直接秒+,然后判断进位 2. 当键入“2”时,直接分+,然后判断进位。(2)数字键直接修改。 当键入“F”时,进入下一级菜单功能; 等待当键入数字,将数字写入时判断数字合理性; 等待当键入下一个数字,将数字写入分判断数字合理性。3设计过程3.1 设计过程概述首先了解5402DSP定时器的工作原理、操作过程、以中断、定时器的原理。编写定时器初始化程序,在电脑中运行编写的原程序和命令文件。准确无误后接通硬件设备,使用键盘修改时间,使用

13、数码管显示时间,通过定时中断服务程序刷新数码管。分析定时器初始化程序中与定时器有关的控制寄存器的设置。各模块设计过程如下:3.2设计具体过程 3.2.1中断的初始化 ;init interrupt(中断初始化) bset intm mov #1,ivpd mov #1,ivph mov #10h,ier0;ier0.tint0=1 mov #10h,dbier0 mov #0,ier1 mov #0ffffh,ifr0; mov #0ffffh,ifr1; call sdram_init3.2.2 定时器的初始化 ;timer init mov #pdp_timer0,pdp mov #04f

14、0h,port(tcr0); *tcr0 = 0x04f0; mov #0h,port(tim0);*tim0 = 0; mov #0ffffh,port(prd0);*prd0 = 0x0ffff; mov #15h,port(prsc0);*prsc0 = 15; mov #0e0h,port(tcr0);*tcr0 = 0x00e0; bclr intm;enable interupt bset AR3LC amov #led,xar2 mov #6,bk03 amov #led_i,xar3 mov #led_i,bsa23 mov #0,ar3 loop: NOP b loop_Ti

15、mer0: mov *ar3+,*ar2;breakpoint reti.end3.2.3 数码管显示 unsigned int LEDCode30= 0xc000,0xf900,0xA400,0xB000,0x9900,0x9200,0x8200,0xF800, 0x8000,0x9000,0x8800,0x8300,0xc600,0xa100,0x8600,0x8e00, 0x8c00,0xbf00,0xa700,0xff00,0x4000,0x7900,0x2400,0x3000, 0x1900,0x1200,0x0200,0x7800,0x0000,0x1000 LEDReg = 6S

16、piaRegs.SPITXBUF =LEDCodeLEDReg显示程序循环8次,修改8个LED for(i=0,i8,i+) SpiaRegs.SPITXBUF = LEDCode LEDRegi while (SpiaRegs.SPISTS.bit.INT_FLAG != 1)SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF ; 修改显示内容,只要改LEDRegi,例: LEDReg0=8; LEDReg1=7; 3.2.4 用键盘修改时间 键盘的编程 : 初始化GPIOB、 GPIOE,建立变量KEYIN 控制GPIOE输出KEYA; 两次读入GPIOB的高8位,

17、如果相同且有0出 现则说明有键按下;数据送到KEYIN 的低8 位; 控制GPIOE输出KEYB 两次读入GPIOB的高8位,如果相同且有0出 现则说明有键按下;数据送到KEYIN 的高8 位; 等待键的释放,完成键的读取程序如下: int Keyin void Keyscan (void) unsigned int key1R , key2R; GPBDIR &= 0x00FF; GPEDAT = 0xFFF8; for (i=0; i100; i+) key1R = GPBDAT; for (i=0; i30000; i+) if(key1R != GPBDAT ) key1R=0xfff

18、f ; GPEDAT = 0xFFF9 ;for (i=0; i100; i+) key2R = GPBDAT;for (i=0; i30000; i+) if(key2R != GPBDAT ) key2R=0xffff ; Keyin=key2R & 0xff00 + key1R / 256; int Keyin void WaitKeyin (void) int temp;while(Keyin = = 0xFFFF) Keyscan(); temp = Keyin; while(Keyin ! = 0xFFFF) Keyscan(); switch (temp) case K1 : K

19、eyin =1; break ; case K2 : Keyin =2; break ; case Kf : Keyin =f;break ; default : Keyin =0x10; break; 4流程图 图4.1 中断服务程序框图 图4.2 定时器初始化程序 图4.3用键盘修改时间流程图 图4.4 数码管显示时间流程图 5运行结果及分析 软件仿真无误,0个错误,0个警告以上程序运行无误,完成了时钟设计要求,使用dsp芯片设计时钟;使用数码管显示时间;使用键盘修改时间。实现了用DSP定时器做时钟的设计,掌握了使用中断服务程序的编程方法。6总结通过两周的DSP课程设计,我学到了课本上以外

20、的知识,提高了自己的动手能力,加深了对所学的知识的了解。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才会有更大的运用空间。在重新翻阅课本和老师的指导之下,也成功的完成了试验,从抽象的理论回到了丰富的实践创造, 细致的了解了DSP设计的全过程,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习DSP的基础理论, 利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些基本的实践技能。课程设计是培养我们综合运用所学知识,发现、提出、分析、解决问题的一个过程,是对我们所学知识及综合能力的一次考察。随着科学技术日新月异

21、的不断发展,信息技术在不断的变化发展当中,这就要求我们用相应的知识来武装自己,夯实基础,为将来走向工作岗位,贡献社会做好充分的准备。在这次课程设计中,要感谢老师的细心教导,和同学的帮助,最终我顺利的完成了这次课程设计。7致谢本次课程设计的内容是时钟的设计,首先你要感谢沈阳理工大学给我这次实践的机会。以后这样的实践机会不多,很难得。感谢实验室人员为我们提供了良好的实验环境,感谢老师的辛勤指导,当我们有疑问时提供给我们思路,而不是给答案,养成我们独立自主,创新思考的能力,在老师的指导下,我不仅顺利的完成课程设计,而且巩固了DSP说学的理论知识,更既有利于以后在这方面的学习与研究,在这里向老师致以真

22、诚的感谢!8参考文献1 逸民 梁晓雯等,基于DSP的现代电子系统设计,电子工业出版社2 刘益成,TMS320C54XDSP应用程序设计,北京航空航天大学出版社3 郑红,吴冠编著,TMS320C54X DSP应用系统设计,北京航空航天大学出版社,2002.5。4 彭启琮TMS320C540实用教程成都:电子科技大学出版社,19995 孙宗瀛 TMS320C5x DSP原理设计与应用 清华大学出版社 20029 附录9.1程序清单9.1.1时钟设计源程序.asm .mmregs .def _c_int00 .ref sdram_init;参考外部变量 led .set 400001htim0 .s

23、et 0x1000;prd0 .set 0x1001;tcr0 .set 0x1002;prsc0 .set 0x1003;sysr .set 0x07fd;clkmd .set 0x1c00;pdp_timer0 .set tim0/128STACK .usect .stack, 200hSYSSTACK .usect .sysstack, 200h .dataled_i .word 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff .sect .vectorsrsv: ; reset vector B _c_int00 ; bra

24、nch to C entry point NOP .align 8nmi: .loop 8 nop .endloopint0: .loop 8 nop .endloopint2: .loop 8 nop .endloop tint0: B _Timer0 nop .align 8 .text_c_int00: amov #0,xdp amov #STACK+100h,xsp amov #STACK+200h,xssp;init interrupt(中断初始化) bset intm mov #1,ivpd mov #1,ivph mov #10h,ier0;ier0.tint0=1 mov #1

25、0h,dbier0 mov #0,ier1 mov #0ffffh,ifr0; mov #0ffffh,ifr1; call sdram_init;timer init mov #pdp_timer0,pdp mov #04f0h,port(tcr0); *tcr0 = 0x04f0; mov #0h,port(tim0);*tim0 = 0; mov #0ffffh,port(prd0);*prd0 = 0x0ffff; mov #15h,port(prsc0);*prsc0 = 15; mov #0e0h,port(tcr0);*tcr0 = 0x00e0; bclr intm;enabl

26、e interupt bset AR3LC amov #led,xar2 mov #6,bk03 amov #led_i,xar3 mov #led_i,bsa23 mov #0,ar3 loop: NOP b loop_Timer0: mov *ar3+,*ar2;breakpoint reti.end9.1.2数码管源程序.Cigned int LEDCode30= 0xc000,0xf900,0xA400,0xB000,0x9900,0x9200,0x8200,0xF800, 0x8000,0x9000,0x8800,0x8300,0xc600,0xa100,0x8600,0x8e00,

27、 0x8c00,0xbf00,0xa700,0xff00,0x4000,0x7900,0x2400,0x3000, 0x1900,0x1200,0x0200,0x7800,0x0000,0x1000 LEDReg = 6SpiaRegs.SPITXBUF =LEDCodeLEDReg for(i=0,i8,i+) SpiaRegs.SPITXBUF = LEDCode LEDRegi while (SpiaRegs.SPISTS.bit.INT_FLAG != 1)SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF ; 9.1.3键盘源程序.C int Keyin vo

28、id Keyscan (void) unsigned int key1R , key2R; GPBDIR &= 0x00FF; GPEDAT = 0xFFF8; for (i=0; i100; i+) key1R = GPBDAT; for (i=0; i30000; i+) if(key1R != GPBDAT ) key1R=0xffff ; GPEDAT = 0xFFF9 ;for (i=0; i100; i+) key2R = GPBDAT;for (i=0; i30000; i+) if(key2R != GPBDAT ) key2R=0xffff ; Keyin=key2R & 0

29、xff00 + key1R / 256; int Keyin void WaitKeyin (void) int temp;while(Keyin = = 0xFFFF) Keyscan(); temp = Keyin; while(Keyin ! = 0xFFFF) Keyscan(); switch (temp) case K1 : Keyin =1; break ; case K2 : Keyin =2; break ; case Kf : Keyin =f;break ; default : Keyin =0x10; break; .end9.1.4命令文件.CMD -stack 20

30、0h -sysstack 200hMEMORY PAGE 0: MMR : origin = 0000000h, length = 00000c0h SPRAM : origin = 00000c0h, length = 0000040h VECS : origin = 0000100h, length = 0000100h DARAM0 : origin = 0000200h, length = 0001E00h DARAM1 : origin = 0002000h, length = 0002000h DARAM2 : origin = 0004000h, length = 0002000h DARAM3 : origin = 0006000h, length = 00020

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1