DSP原理与应用实验指导书.docx
《DSP原理与应用实验指导书.docx》由会员分享,可在线阅读,更多相关《DSP原理与应用实验指导书.docx(10页珍藏版)》请在冰豆网上搜索。
DSP原理与应用实验指导书
DSP原理与应用
实验指导书
胡鸿志编写
桂林电子科技大学
2009年9月
实验一CCS及实验箱使用入门
【实验目的】
熟悉DSP集成开发环境CCS,熟悉CCS中工程管理和程序编辑、汇编和链接的过程。
熟悉SEED-DTK系列DSP实验平台,掌握CCS中源文件管理、编辑和调试的方法。
【实验要求】
掌握CCS环境下软件工作及编译方法。
了解SEED-DTK实验平台的基本组成,熟悉SEED-DEC5416实验环境。
【实验内容】
1、利用SEED-DTK实验箱来完成工程管理,以及源文件管理、编译、汇编、链接和调试。
(1)安装、配置SEED-XDSUSB2.0仿真器。
(2)建立DSP工程
(3)建立DSP源文件
(4)学习使用CCS的调试工具
2、在CCS下开发DSP软件项目需要先建立一个工程文件,扩展名缺省为*.pjt,所有关于项目的信息都会存储在这个工程文件中;若用C语言开发,需要使用Project→AddFilestoProject…命令将C语言的标准支持库rts.lib或rts_ext.lib添加到工程文件中。
此外,还需要将链接器命令文件*.cmd添加到工程文件中。
执行Project→RebuildAll命令,对工程进行编译、汇编和链接,在Output窗口中将显示相关信息。
目标文件*.out生成成功后,执行菜单命令File→LoadProgram,选择*.out文件并打开,将生成的可执行程序加载到DSP中,CCS将自动打开一个“反汇编”窗口,显示加载程序的反汇编指令。
执行菜单命令Debug→Run运行程序。
【实验步骤】
1、将DSP仿真器与计算机连接好;
2、将DSP仿真器的JTAG插头与SEED-DEC54xx单元的J1连接;
3、启动计算机后,打开SEED-DTK实验箱的电源。
观察SEED-DTK-101单元的+5V、+3.3V、+15V和-15V的电源指示灯,以及SEED-DEC54xx的D1以及SEED-DSK2812的D2是否均亮;若有不亮,断开电源,检查电源。
4、配置SEED-XDSUSB2.0仿真器。
5、进入CCS环境。
6、创建一个工程,添加附录汇编源文件TestXF.asm和链接器命令文件TestXF.cmd。
7、编译并调试,相关命令如下:
●设置断点
将光标放在需要设置断点的程序前,执行Debug→Breakpoints设置断点。
●复位
Debug→ResetCPU,复位DSP目标系统,初始化所有的寄存器,终止程序的执行。
Debug→Restart,将PC值恢复到程序的入口,该命令不开始程序的执行。
Debug→Gomain,将程序运行到主程序的入口地址处暂停。
●程序的执行
Debug→Run,从当前程序计数器(PC)执行程序,碰到断点时暂停。
Debug→Halt,终止程序执行。
Debug→Animate,动画运行程序。
Debug→Runfree,从当前程序计数器(PC)执行程序,忽略所有的断点。
Debug→RuntoCursor,程序执行到光标处。
●单步执行操作
Debug→StepInto,单步执行。
如果运行到调用函数处,将跳入到函数中单步执行。
Debug→StepOver,单步执行。
为了保护处理器的流水线操作,该指令后的若干条延迟指令或调用指令将同时被执行。
如果运行到函数调用处,将直接执行完整的函数功能,而不跳入函数内部单步执行。
Debug→StepOut,调处函数或子程序执行。
●内存、寄存器与变量操作
View→WatchWindow,检查和编辑C语言表达式和变量的值。
View→Registers→CPURegisters,显示DSP的CPU寄存器中的值。
View→Memory,显示指定的存储器中的内容。
8、执行File→Workspace→SaveWorkspace,保存调试环境。
【附录】
附录ATestXF.asm
.mmregs;预定义的寄存器
.defCodeStart;定义程序入口标记
.text;程序区
CodeStart:
SSBXXF;XF置1
RPT#999;重复执行1000次空指令产生延时
NOP
RSBXXF;XF清0
RPT#999;重复执行1000次空指令产生延时
NOP
BCodeStart;跳转到程序开始循环执行
.end
附录BTestXF.cmd
-oTestXF.out
-mTestXF.map
-eCodeStart
MEMORY
{
PAGE0:
PRAM:
org=0100h,len=0F00h
}
SECTIONS
{
.text:
>PRAMPAGE0
}
实验二定点除法实验
【实验目的】
熟悉CCS集成开发环境中TMS320C54x汇编程序的编写和调试方法。
掌握’C54x数据格式,以及定点算术运算的基本方法和指令。
【实验要求】
掌握’C54x系列DSP的定点算术运算方法,掌握定点除法的原理及实现。
熟练使用CCS对程序进行调试。
【背景知识】
TMS320C54xDSP中没有提供专门的除法指令实现16位定点整数除法,通常有两种方法可实现除法运算。
一种方法是除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘;这种方法适用于除以常数。
另一种是使用条件减法指令SUBC,重复16次减法完成除法运算。
使用SUBC指令进行除法运算,惟一限制是两个操作数都必须为正,所以需要先判断结果的符号,方法是将两个操作数相乘,保存累加器A或B的高16位以便判断乘积符号。
然后只做两个正数的除法,最后修正结果的符号。
为了实现两个整数相除,先将被除数装入A或B的低16位,接着重复执行SUBC指令,用除数重复减16次后,除法运算的商在累加器的低16位,余数在高16位。
如果|被除数|<|除数|,则先将被除数装入A或B的高16位,重复减的次数为15次。
TMS320C54xDSP中实现16位的小数除法与整数除法基本一致,也是使用条件减法指令SUBC来实现,但需要注意’C54x中小数的定点表示方法。
【设计任务】
1、编写程序,分别计算
和
的值;
2、编写和调用子程序,计算
的值;
3、定义和调用宏,计算
的值。
【思考题】
为什么当|被除数|<|除数|时,SUBC指令实现定点整数除法重复减的次数为15次,而不是16次?
实验三定时器实验
【实验目的】
通过学习定时器中断的设计方法,熟悉在汇编条件下如何编写中断服务程序,了解串行通信的过程,掌握长时间间隔的定时器的处理,掌握片内外设的设置方法。
【实验要求】
掌握汇编语言的程序结构,正确进行异步串口通信与定时器的设置,能与系统正确通信。
【背景知识】
中断指的是当某个事件发生时,暂停当前的操作,转向中断服务程序,执行完后再返回继续原来的操作。
这使得DSP能够处理多个任务。
最常用的中断有定时器中断和外部中断。
本实验采用的是定时器中断。
TMS320C5416中有一个可编程的片上定时器,总共包含三个可由用户设置的寄存器,并可以申请主机的中断。
这三个寄存器分别为TIM(定时设定寄存器)、PRD(定时周期寄存器)、TCR(定时控制寄存器)。
TIM、PRD及TCR均是16位的存储器映射寄存器,TIM的值由PRD来进行装载,并且作减一操作;PRD是用来重装TIM的值的;TCR包含了定时器的控制与状态信息。
定时器的所能定时的长度可通过公式
来计算,T为机器周期。
若需要更长的计时时间,则可以在中断程序中设计一个计数器,直到产生一定次数的定时中断后再执行相应的操作
【设计任务】
1、采用中断方法设计程序,实现方波发生器(占空比为50%),方波周期为4ms。
2、修改程序,实现周期为20s的方波发生器。
【设计步骤】
1、定时器及中断初始化
(1)中断允许寄存器IFR中的定时中断位TINT=1,清除未处理完的定时中断。
(2)停止定时器运行(TCR中的TSS=1)
(3)设定时器的定时长度(即加载PRD的值)
(4)允许定时器中断(TSS=0,TRB=1)
(5)运行定时器
(6)打开中断
中断屏蔽寄存器IMR中的定时屏蔽位TINT=1,开放定时中断;状态控制寄存器ST1中的中断标志位INTM=0,开放全部中断。
2、编写方波发生器源程序注意周期的设定。
【思考题】
方波发生器也可以用延时的方法实现,与延时的方法相比,定时器法有什么优势?
实验四数字I/O实验
【实验目的】
掌握TMS320C541xDSP扩展数字I/O口的方法,了解SEED-DTK的硬件系统。
【实验要求】
通过本实验,了解DSP对I/O口的操作,完成对SEED-DTK实验平台中LED的控制。
【背景知识】
TMS320C541xDSP提供64K字的I/O空间(0000h~0FFFFh)。
I/O空间都在片外,作用是与片外设备连接。
使用PORTR和PORTW两条指令可对I/O空间寻址。
TMS320C5416的I/O空间必须通过外加缓冲器或锁存电路,配合外部I/O读写控制时序构成片外外设的控制电路。
其实现方法一般有两种:
其一为采用锁存器,如75LS273、74LS372之类的集成芯片;另一种是采用CPLD,在其内部做锁存器逻辑。
SEED-DTK实验平台采用CPLD实现。
本实验程序主要是实现将数据往一个I/O端口送,从而显示一种状态,来验证DSP对I/O口地址0x080002送数,通过观察发光二极管的变化,来验证其正确性。
SEED-DTK实验平台中LED控制口地址为0x08002(I/O空间),其说明如表4.1所示。
表4.1LED控制口
D7
D6
D5
D4
D3
D2
D1
D0
OUT7
OUT6
OUT5
OUT4
OUT3
OUT2
OUT1
OUT0
注:
向控制位写入’1’时,点亮相对应的LED灯。
【设计任务】
1、编写程序,循环点亮SEED-DTK实验平台上LEDD17~D24;
2、编写和调用子程序,实现各状态之间延时1s。
【思考题】
如何用定时器中断实现延时?
实验五串口通信实验
【实验目的】
了解DSP的MCBSP外设的使用,熟悉MCBSP的设置方法。
【实验要求】
通过本实验,熟悉对MCBSP的各个寄存器的功用与设置方法,掌握DSP对二次寄存的访问。
熟悉串行通信的编程方法,实现主机与DSP之间的串口通信。
【背景知识】
TMS320C54x提供高速、双向、多通道带缓冲串口(MCBSP)。
它是DSP的片上外设资源,它可以与其它的DSP、CODEC和带有SPI接口的器件进行通信。
在TMS320C5416上共有3个MCBSP,主要包括数据通路和控制通路两部分,通过7个引脚与外部器件相连。
对MCBSP的配置主要是通过3个16位寄存器SPCR[1,2]和PCR进行的。
而接收和发送寄存器RCR[1,2],X[1,2]分别配置接收和发送操作的各种参数。
发送和接收的基本步骤为:
1、MCBSP串行口复位(两种复位方式)
●通过芯片复位端
复位。
当
时,引发的串行口发送器、接收器、采样率发生器复位。
当
芯片复位完成后,串行口仍然处于复位状态,
。
●利用串口控制寄存器的控制位复位。
接收控制寄存器SPCR1中
位可对串口接收器进行复位,发送控制寄存器SPCR2中的
和
位可分别对串口发送器和采样率发生器进行复位。
2、复位完成后,串行口初始化。
初始化的步骤为:
●对串口控制寄存器中的复位位置0,刚复位完毕,可不进行这一步操作。
●按串口复位要求,对MCBSP的寄存器进行编程配置。
●等待两个时钟周期,以保证适当的内部同步。
●按照写DXR的要求,给出数据。
●使串口使能。
●若要求内部帧同步信号,则设定
。
●等待2个时钟周期后,接收器和发送器激活。
【设计任务】
编写程序,实现PC与DSP之间的串口通信。
实验六交通灯实验
【实验目的】
熟练掌握DSP的指令系统,以及TMS320C5416的硬件结构和应用程序设计。
掌握DSP扩展数字I/O口的方法。
【实验要求】
通过本实验,熟悉CCS集成开发环境,熟练掌握TMS320C5416数字I/O口的使用。
【背景知识】
SEED-DTK实验平台中交通灯控制口地址为0x08000(I/O空间),其说明如表6.1所示。
表6.1交通灯控制口
D11
D10
D09
D08
D07
D06
D05
D04
D03
D02
D01
D00
NR
NY
NG
ER
EY
EG
SR
SY
SG
WR
WY
WG
WG:
方向为西的绿灯控制位;WY:
方向为西的黄灯控制位;
WR:
方向为西的红灯控制位;SG:
方向为南的绿灯控制位;
SY:
方向为南的黄灯控制位;SR:
方向为南的红灯控制位;
EG:
方向为东的绿灯控制位;EY:
方向为东的黄灯控制位;
ER:
方向为动的红灯控制位;NG:
方向为北的绿灯控制位;
NY:
方向为北的黄灯控制位;NR:
方向为北的红灯控制位;
注:
当以上各位置’1’时,点亮各位所控制、代表交通灯状态的LED。
【设计任务】
编写程序,在SEED-DTK实验平台上模拟实现交通灯控制。
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。