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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

DSP十天速成精.docx

1、DSP十天速成精实验一 新手上路初学者编写的第一个程序通常是控制 XF 引脚的变化,然后用示波器测量 XF 脚波形或观察与相接的 LED。 这个程序也常常用来测度一下 DSP 能否正常工作。实验 1.1 最简单的程序:控制 XF 引脚周期性变化实验目的:通过简单的程序了解 DSP 程序的结构,熟悉 CCS 开发环境。*最简单的程序:TestXF1.asm*循环对 XF 位置 1和清 0,用示波器可以在 XF 脚检测到电平高低周期性变化*常用于检测 DSP 是否工作。*.mmregs ;预定义的寄存器.def CodeStart ;定义程序入口标记.text ;程序区CodeStart: ;程序

2、入口SSBX XF ;XF置 1RPT #999 ;重复执行 1000次空指令产生延时NOPRSBX XF ;XF清 0RPT #999 ;重复执行 1000次空指令产生延时NOPB CodeStart ;跳转到程序开头循环执行.endNOP 指令执行时间为一个时钟周期, 设 DSP 工作频率是 50MHz, 可以估算出 XF 引脚电平的变化频率约为:5 0M/2000=25kHz在没有示波器的情况下, 就要将程序 1.1稍作改进,增加延时, 用一个延时子程序将 XF 脚电平变化频率降 到肉眼可分辨的程度,就可以用 LED 来显示电平的变化,程序如下:实验 1.2 子程序调用实验目的:学习子程

3、序的调用*TestXF2.asm*对 TestXF1.asm 稍作改进,用延时子程序设置较长的延时,*可以用试验板上的 LED 看到 XF 引脚电平的变化*.mmregs ;预定义的寄存器.def CodeStart ;定义程序入口标记.text ;程序区CodeStart: ;程序入口SSBX XF ;XF置 1CALL Delay ;调用延时程序RSBX XF ;XF清 0CALL Delay ;调用延时程序B CodeStart ;跳转到程序开头循环执行*延时子程序:Delay*用两级减一计数器来延时。调整 AR1和 AR2的大小 LED 闪烁的频率不同*Delay:STM #999,A

4、R1 ;循环次数 1000LOOP1: STM #4999, AR2 ;循环次数 5000LOOP2: BANZ LOOP2,*AR2- ;如果 AR2不等于 0,AR2减 1,再判断BANZ LOOP1,*AR1- ;如果 AR1不等于 0,AR1减 1,跳转到 LOOP1RET.end*注意这种延时方法并不精确,需要精确定时必须用定时器。*按此法延时的近似公式为:4*(AR2+1*(AR1+1*时钟周期*当 DSP 工作在 50MHz(时钟周期 20ns,AR1=999, AR2=4999时*延时约为 400ms,则 LED 闪烁的周期为 800ms,频率 1.25Hz*设计指导:1.源代

5、码书写格式源代码的书写有一定的格式,初学者往往容易忽视。简单归纳如下:1.每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序 标签时的名称。指令区位于标号区之后,以空格或 TAB 格开。如果没有标号,也必须在指令前面加上空格 或 TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。 另外还有专门的注释行,以*打头,必须顶格开始。2.一般区分大小写,除非加编译参数忽略大小写。3.标点符号有时不注意会打成中文全角字符导致错误。书写格式的要求在很多 DSP 书里都没有提, 初学者往往只把书上的代码输入进去, 编译时得到错

6、误的提示, 而不知所措。其中最容易犯的错误指令顶格写,不过一般经提示后不会犯第二次。有些格式 CCS 并没有做要求,但注意养成良好的代码书写风格,增加代码的可读性。以上两个例子的书写 风格可作参考,但不是硬性规定:1.标号区占 3个 TAB 的间隔,即 12个字符2.指令中的指令码占两个 TAB 间隔,然后是操作数。3.每一行的尾注能对齐的尽量对齐4.标明一段程序功能的注释以*号打头顶格写,如果功能说明的注释较多,用分格线框起来。此外其它编程语言的编程风格也可以借用过来,比如标示符命名规则、程序说明的要求等。如果项目组有 规定,则按规定执行。本书的代码尽量保持一定的风格,不过读者可以发现前面的

7、代码注释较多,后面随着学习的深入,一般不 会对每一条指令加注释,只注明程序段的功能。另外代码贴到 word 里后,格式有些错位,无法一一纠正。2.链接配置文件一个完整的 DSP 程序至少包含三个部分:程序代码、中断向量表、链接配置文件(*.cmd。这里介绍一下链 接配置文件文件,对本次试验影响不大的中断向量表将在后文介绍。连接配置文件的确定了程序链接成最终可执行代码时的选项,其中有很多条目,实现不同方面的选项,其 中最常用的也是必须的有两条:1.存贮器的分配2.标明程序入口。以本次实验为例,下面的简单的链接配置文件就够用了:/* TestXF.cmd */-e CodeStart /*程序入口

8、,必须在程序中定义相应的标号*/MEMORY page 0:PRAM: org=0100h len=0F00h /*定义程序存贮区,起始 0100H,长度 0F00H*/SECTIONS.text:PRAM page 0 /*将.text 段映射到 page0的 param 区*/由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配置文件。作为本手册通用的 链接配置文件如下,可以满足本书大部分程序的需要。在未特别指明的情况下使用这个通用的链接配置文 件:/* 5402.cmd */-e CodeStart /*程序入口,必须在程序中定义相应的标号*/-m map.map /*生

9、成存储器映射报告文件 */MEMORY PAGE 0:VECT: org=0080h len=0080h /*中断向量表*/PARAM: org=100h len=0F00h /*代码区*/PAGE 1:DARAM: org=1000h len=1000h /*数据区*/SECTIONS .text : PARAM PAGE 0 /*代码段*/.vectors : VECT PAGE 0 /*中断向量表*/STACK : DARAM PAGE 1 /*堆栈*/.bss : DARAM PAGE 1 /*未命名段*/.data : DARAM PAGE 1 /*数据段*/更多参考:1.关于代码书

10、写格式:SPRU102: TMS320C54x Assembly Language Tools Users Guide,3.5Source Statement Format2.关于链接配置文件:SPRU102: TMS320C54x Assembly Language Tools Users Guide,7.5Linker Command Files,7.7 The MEMORY Directive,7.8 The SECTIONS Directive练习:1、试一下不按规定格式书写代码会产生什么样的编译错误。2、试一下将链接配置文件中的 MEMORY,SECTIONS 改成小写会出现什么样的

11、编译错误。3.修改程序 1.2中 AR1,AR2的值,观察 LED 闪烁频率实验二 基本运算DSP 指令数量最多的是:算术指令、逻辑指令和数据加载与传送指令。数据加载与传送指令由于处处要用, 所以不单独列为实验。 算术与逻辑指令也是数量繁多,无法一一举例, 这里简单举一个加法和除法的例子, 乘法和乘加指令在 FIR 用得比较多,稍后一并介绍。其它指令有兴趣可以对照指令表的说明,试验一下各 指令运行的结果。实验 2.1 加减法计算*计算 z=x+y-w。*.mmregs.def CodeStartData_DP: ;数据段指针x: .word 10 ;初始化变量y: .word 26w: .wo

12、rd 23z: .word 0.textCodeStart:LD #Data_DP,DP ;装载数据指针 DPSTM #STACK+10H,SPSUMB: LD x,A ;A=xADD y,A ;A=A+ySUB w,A ;A=A-wSTL A,z ;z=AEND: B END计算结果数据存储器地址存储内容十进制x1010H000aH10y1011H001aH26w1012H0017H23z1013H000dH13技巧提示:试验算术指令由于不需要外部资源,可以不需要仿真器和实验箱。同学们可以平时自己用软件仿真,多多实验。但是复杂的算法最好还是在线仿真,因为程序是流水线执行,软件仿真有时与实际硬

13、件 执行结果有所不同。实验 2.2 除法计算DSP 并没有除法指令, 回想一下我们用在稿纸上演算除法列的竖式, 实际是一种移位减法, DSP 中也是通过 做多次减法的办法来做除法。下面例子是把用除以 10的办法二进制数转成 BCD 码例子:*16进制转 BCD 码*.mmregs.global CodeStart.datax: .word 1234 ;待转换的数字y: .word 10 ;除数z: .word 0Fh,0Fh,0Fh,0Fh,0Fh;结果区,每位 BCD 存一个字,;初始化为 F 因为实验板的数码管不显示 F.textCodeStart:LD #x,DP ;设置 DPLD x,A ;被除数STM #z,AR1 ;结果区指针loop:RPT #15 ;执行完 16次减法后,A 的高 16位是余数SUBC y,A ;低 16位是商STH A,*

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

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