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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

dsp技术实验讲义Word格式.docx

1、实验成绩按照学校规定的比例计入该课程总成绩。对于考核不及格的学生,必须重修。课程简介:“DSP原理及应用”实验课程是高等学校面向电子类专业开设的一门限选技术基础课。通过本课程的各个教学环节的实践,通过实践,帮助学生理解DSP芯片的硬件结构和软件系统。熟悉DSP芯片的内部结构和性能。熟悉DSP软件开发环境及其开发工具。在DSP实验板上进行编程及DSP芯片的加载调试过程。熟悉TMS320C54x系列芯片的结构特点 .工作原理 .片内外设电路及应用场合;掌握面向DSP 芯片编程的方法和所采用的编程语言,以及CCS集成开发环境的使用,使学生初步具备面向DSP编程的能力。为今后以DSP为核心的系统的使用

2、和设计工作打下基础。教学大纲要求总学时72,其中理论教学54学时 .实验18学时,实验个数6个。DSP原理及应用实验课实验项目一览表序号实验项目名称实验类型及计划学时开设学期开出要求演示验证综合设计1DES综合外设试验36必修2C54x的基本算数运算C54x的浮点数运算4用定时器实现数字振荡器5fir数字滤波器快速傅立叶变换(fft)的实现合计18实验一 DES综合外设试验实验目的: 1、学习外设的控制原理2、学习在外设的控制程序中所使用的汇编和c混合编程3、学习对C54x的中断、IO空间操作等基本DSP编程技巧试验要求: 1、要求掌握和巩固DSP编程的基本方法 2、通过试验,能独立编写复杂的

3、外设控制程序。 3、学习CCS开发环境实验器材: PC机,DSP54XX教学实验系统实验原理:(1). C54XX 的IO 空间读写C54XX 提供64K 字的IO 空间访问能力。在汇编指令中分别提供了读和写命令:portr 和portw。你也可以在C 中实现该IO 操作,方法如下:首先定义IO 空间变量,如:ioport unsigned portXXXX; /* 其中,XXXX 代表具体IO 口地址 */然后,就可以象访问普通变量一样访问IO 口。如portXXXX=0x55; /* 将0x55 写到XXXX 指定的IO 口 */(2). 交通灯的控制DES5402PP-U 提供了16 个

4、LED,其控制地址为IO 空间的0x0c000h。该地址的D0-15比特位分别对应这16 个LED。将1 写入可以点亮LED,0 则关闭。请参考下面代码:/* 说明IO 空间0x0c000h 变量,以便用C 实现IO 空间操作 */ioport unsigned portc000; /* for LEDs show */* 下面是LED 控制代码 */portc000=0; /* 关闭所有16 个LED */* 该C 语句等效于汇编指令 portw #0, 0c000h */mydelay(); /* 使用空循环延时 */portc000=0xffff; /* 点亮所有16 个LED */*

5、下面依次逐个点亮LED(DS1-DS16) */led=1;for(i=0;i16;i+)portc000=led; /* 点亮一个LED */ /* 延时 */ /* 关闭LED */led=led 1;(3). 直流电机控制DES5402PP-U 实验系统配有一个小型直流电机,可以DSP 编程完成直流电机的调速控制。其控制方法为:当向0x0e000h(VC5402 的IO 空间)的D0 比特位写入1 时,电机正向转动;当写入0 时,电机反向转动。用户可以通过DO 位1 或0 的持续时间(即D0输出方波的占空比)控制电机的转速。注意,使用直流电机时,应该先接通电机的电源,方法如下:向IO 空

6、间的0x8000 地址的D0 比特位写入1。若要关闭电源,请写入0。当写入1 或0 时,你可以听到继电器动作的声音。/* 说明IO 空间0x8000 和0x0e000 变量,以便用C 实现IO 空间操作 */ioport unsigned port8000; /* for CTRL word */ioport unsigned porte000; /* for DC MOTOR run */* 下面是直流电机的控制代码 */CtrlWord |= 0x1; /* 设置D0=1 */port8000=CtrlWord; /* 接通DC MOTOR 的电源 */* 下面代码使直流电机正向全速转动

7、*/porte000=1; /* 正向电压 */* 下面代码使直流电机反向全速转动 */porte000=0; /* 反向电压 */* 下面代码使直流电机左右摆动 */20;i+) /* 左右摆动20 次 */* 下面代码使直流电机慢转(通过DO 输出方波的占空比控制) */for(k=0;k4;k+) /* 控制转动持续时间 */1000; porte000=1;for(j=0;j10000;j+); /* 延时(长)*/1300; /* 延时(短)*/* 下面代码关闭电机电源 */CtrlWord &= 0xfffe; /* 设置D0=0; */(4). 步进电机的控制DES5402PP-

8、U 实验系统还配有一个步进电机。IO 空间的0x0f000h 的D0,D1,D2,D3四个比特位分别对应步进电机的四相驱动端。依次向这四个比特位写入1,便可以控制步进的转动。请参考下面的代码:/* 下面代码控制步进电机反向转动5 步 */motor=1;6;j+)portf000=motor; /* send drive pluse to motor */motor=motor2;k+) /* 延时,决定转动速度 */if(motor = 0x0) /* 只有低4 位有效 */(5). 异步串口控制VC5402 本身并未提供异步串口,所以DES5402PP-U 使用TLC16C550 串口控制

9、芯片增加异步串口,以便与PC 机RS232 串口(DB9)直接通讯。实验板上UART 功能使用DSP中断INT0,收与发都是同一中断,所以进入中断服务程序后应该判断是什么中断,然后再做相应操作。实验板上异步串口接口寄存器地址分配情况:(IO 空间)0B000h:发送与接受缓冲寄存器(线路控制寄存器D7=0);波特率因子寄存器低字节(线路控制寄存器D7=1)0B001h:中断允许寄存器(线路控制寄存器D7=0);波特率因子寄存器高字节(线路控制寄存 器D7=1)0B002h:中断识别寄存器0B003h:线路控制寄存器0B004h:MODEM 控制寄存器0B005h:线路状态寄存器0B006h:M

10、ODEM 状态寄存器0B007h:Scratch 寄存器下面是初始化16C550 的一段代码,串口通讯速率为9600 波特率,8 个数据位,1 个停止位,没有校验位:; /* PC UART USE 15C550 , it BASE ADDRESS IS 0B000h */uart_data .set 0b000h ;uart RBR,THR(DLAB=0);DLL(DLAB=1) register addressuart_ier .set 0b001h ;uart IER(DLAB=0);DLM(DLAB=1) register addressuart_iir .set 0b002h ;ua

11、rt IIR,FCR register addressuart_lcr .set 0b003h ;uart LCR register addressuart_mcr .set 0b004h ;uart MCR register addressuart_lsr .set 0b005h ;uart LSR register addressuart_msr .set 0b006h ;uart MSR register addressuart_scr .set 0b007h ;uart SCR register address(中间省略)stm #08bh,tempportw temp,uart_lc

12、r ;set LCR_D7=1 to set baudrate registernopstm #24,tempportw temp,uart_data ;set DLL=24(baudrate=9600,primaryF=3.6864M)stm #0,tempportw temp,uart_iir ;set DLM=0 (baudrate=9600,primaryF=3.6864M)stm #03h,tempset LCR_D7=0 and line controlportr uart_iir,temp ;to clear iirportr uart_lsr,temp ;to clear ls

13、rportw temp,uart_ier ;enable receive,send ints有关异步串口与PC 机的RS232 通讯的操作请参阅TLC16C550 的DATASHEET 和系统配套CD-ROM 中的UART5402 例程。(6). 数码管的控制DES5402PP-U 提供8 个七段数码管,他们直接由系统的MCU(89C52)管理。DSP 部分与MCU 部分之间通过异步串口连接。所以本实验系统提供另一片16C550 串口管理芯片(U17)。MCU 与DSP 的异步串口通讯速率设置为9600 波特率,8 个数据位,1 个停止位,没有校验位。该串口控制芯片(U17)占用DSP 一个外

14、部中断资源,即INT1。串口通讯格式总共14 个Byte,如下所示:0x55 0x77 xx xx xx xx xx xx xx xx xx xx 0x88 0x99固定(2 Byte) 保留(2 Byte) 8 Byte 对应8 个数码管, 结束标志(2Byte)0x0-0x9 显示数字0-9例如,要在数码管上显示“85450520”8 个数字,则需要将下面14 Byte 通过16C550 发往MCU,以便MCU 正确显示。这14 Byte 的内容为:0x55 0x77 0xff 0xff 0x0 0x2 0x5 0x0 0x5 0x4 0x5 0x8 0x88 0x99(7). 液晶屏的控

15、制DES5402PP-U 提供一个64X128 的图形点阵液晶显示屏。该液晶显示模块自带汉字字库,每屏可以显示4 行8 列共32 个汉字。液晶屏也由MCU 部分(89C52)管理。与数码管控制一样,DSP 将需要显示的信息通过异步串口(串口管理芯片为U17 )发送到MCU,由MCU 负责完成对液晶屏的具体操作。液晶屏与数码管使用的是同一串口资源。讯格式总共23 个Byte 组成,具体分配如下所示:0x55 0x66 xx xx xx xx xx xx xx 0x88 0x99固定(2 Byte) 行 列 显示字 固定16 个Byte,每个汉字 结束标志号 号 符个数 (ASIIC 内码)占用2

16、 个Byte (2 Byte)若少于8 个汉字,后面保留注意,行号为1-4,列号为0-7。液晶屏每行最多显示8 个汉字,若超过,系统将丢弃多余汉字。另外,由于汉字内码为2 个Byte,所以要显示ASIIC 码的英文字母、数字、符号(1 个Byte)时,每次显示的字符个数必须是2 的整倍数。例如,在1 行,0 列显示两个汉字“我们”,这数据格式为:0x55 0x66 0x1 0x0 0x4 0xce 0xd2 0c3 0xc7 0x00 0x00 0x88 0x99固定开头 行、列,共 “我们”两个汉字内码,4Byte,然后 结束标志显示4 个字符 是12 个Byte 的0x0再如,需要在第2

17、行,第0 列显示ASCII 码的3,格式为:0x55 0x66 0x2 0x0 0x2 0x33 0x20 0x00 0x0 0x00 0x00 0x88 0x99固定开头 行、列,共 3的ASCII 码和空格的ASCII 码,然后 结束标志显示2 个字符 是14 个Byte 的0x0(8). 键盘的管理DES5402PP-U 系统提供了一个4X8 共32 个键的小键盘。该键盘仍然由MCU(89C52)部分管理。DSP 通过扩展的异步串口(U17)从MCU 接收按键信息。也就是说,DSP 通过该串口发送显示信息到数码管和液晶屏,并从该串口读取键盘按键。键盘通讯的格式如下:E K Y + 键盘正

18、码 + 键盘反码 + 0x0d(EKY 字母开头) 结束标志例如,当按下数字1 键时,DSP 接收到的数据为:0x45 0x4b 0x59 0x33 0xcc 0x0d实验内容:在CCS 环境中打开工程文件如图1 所示,在该工程文件中,包括存储器连接定位文件onchip.cmd,C 的标准库文件以及用C 和汇编编写的源程序。整个程序采用C 做主程序,关键操作如中断服务程序,外设控制使用汇编的混合模式完成。查看完整地代码段,设置断点,查看各个程序段的代码。思考题:1 利用键盘控制直流电机的转速2 利用键盘控制步进电机的转动步数3 编写计算器程序4 编写募集交通灯控制程序实验二 C54x的基本算数

19、运算学习使用定点DSP实现16位定点加法、减法、乘法、除法运算的基本方法和编程技巧。 1、要求学生熟悉dsp中提供的大量指令。 2、通过试验,学生能独立编写实现定点加法、减法、乘法、除法运算的程序。3、练习并掌TMS320C54X的汇编语言的汇编指令系统的使用方法。4、练习并掌握用CCS调试程序的一些基本操作。PC机,DSP54XX教学实验系统实验原理(1) 定点DSP 中数据表示方法C54X 是16 位的定点DSP。一个16 位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示20 ,D1 位表示21 ,次高位(D14)表示214 。如果表示一个有符号

20、数时,最高位(D15)为符号位,0 表示正数,1表示负数。例如,07FFFH 表示最大的正数32767(十进制),而0FFFFH 表示最大的负数-1(负数用2 的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这样次高位(D14)表示21 ,然后是22 ,最低位(D0)表示215 。所以04000H 表示小数0.5,01000H 表示小数23 = 0.125 ,而0001H表示16 位定点DSP 能表示的最小的小数(有符号) 215 =0.000030517578125。在后面的实验中,除非有特别说明,我们指的都是有符号数。在C54X 中,将一个小数

21、用16 位定点格式来表示的方法是用215 乘以该小数,然后取整。从上面的分析可以看出,在DSP 中一个16 进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。(2) 实现16 定点加法加法运算:ld temp1,a ;将变量temp1 装入寄存器Aadd temp2,a ;将变量temp2 与寄存器A 相加,结果放入A 中stl a,add_result ;将结果(低16 位)存入变量add_result 中。62注意,这里完成计算temp3=temp1+t

22、emp2,我们没有特意考虑temp1 和temp2 是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。(3) 实现16 位定点减法减法运算:stm #temp1,ar3 ;将变量temp1 的地址装入ar3 寄存器stm #temp3,ar2 ;将变量temp3 的地址装入ar3 寄存器sub *ar2+, *ar3,b ;将变量temp3 左移16 位同时变量temp1 也左移16 位,然后;相减,结果放入寄存器B(高16 位)中,同时ar2 加1。sth b,sub_result ;将相减的结果(高16 位)存入变量sub_result。(4) 实现16 定点整数乘法

23、数乘法运算:rsbx FRCT ;清FRCT 标志,准备整数乘ld temp1,T ;将变量temp1 装入T 寄存器mpy temp2,a ;完成temp2*temp1,结果放入A 寄存器(32 位)sth a,mpy_I_h ;将结果(高16 位)存入变量mpy_I_hstl a,mpy_I_l ;将结果(低16 位)存入变量mpy_I_l(5) 实现16 定点小数乘法ssbx FRCT ;FRCT=1,准备小数乘法ld temp1,16,a ;将变量temp1 装入寄存器A 的高16 位mpya temp2 ;完成temp2 乘寄存器A 的高16 位,结果在B 中,同时;将temp2 装

24、入T 寄存器sth b,mpy_f ;将乘积结果的高16 位存入变量mpy_f(6) 实现16 定点整数除法将被除数装入T 寄存器mpy temp2,A ;除数与被除数相乘,结果放入A 寄存器ld temp2,B ;将除数temp2 装入B 寄存器的低16 位abs B ;求绝对值stl B,temp2 ;将B 寄存器的低16 位存回temp2ld temp1,B ;将被除数temp1 装入B 寄存器的低16 位rpt #15 ;重复SUBC 指令16 次subc temp2,b ;使用SUBC 指令完成除法运算bcd div_end,agt ;延时跳转,先执行下面两条指令,然后判断A,若A0,则;跳转到标号div_end,结束除法运算stl B,quot_i ;将商(B 寄存器的低16 位)存入变量quot_isth B,remain_i ;将余数(B 寄存器的高16 位)存入变量remain_ixor B ;若两数相乘的结果为负,则商也应为负。先将B 寄存器清0sub quot_i,B ;将商反号存回变量quot_i 中div_end:(7) 实现16 定点小数除法ld temp1,16,B ;将被除数temp1 装入B 寄存器的高16 位and #0ffffh,B ;将B 寄存器的高16 位清为0。这时余数被丢弃,仅保留商延时跳转,先执行下面

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2