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次空指令产生延时;NOPCALLDELAYRSBXXF;XF清0;RPT#999;重复执行1000次空指令产生延时;NOPCALLDELAYBCodeStart;跳转到程序开始循环执行DELAY:STM#99。A.end附录BTestXF.cmd-oTestXF.out-mTestXF.map-eCodeStartMEMORY{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、编写程序,分别计算8.04.0和51216384的值;2、编写和调用子程序,计算8.04.0的值;3、定义和调用宏,计算51216384的值。【思考题】为什么当|被除数||除数|时,SUBC指令实现定点整数除法重复减的次数为15次,而不是16次?16384÷512实验三定时器实验【实验目的】通过学习定时器中断的设计方法,熟悉在汇编条件下如何编写中断服务程序,了解串行通信的过程,掌握长时间间隔的定时器的处理,掌握片内外设的设置方法。【实验要求】掌握汇编语言的程序结构,正确进行异步串口通信与定时器的设置,能与系统正确通信。【背景知识】中断指的是当某个事件发生时,暂停当前的操作,转向中断服务程序,执行完后再返回继续原来的操作。这使得DSP能够处理多个任务。最常用的中断有定时器中断和外部中断。本实验采用的是定时器中断。TMS320C5416中有一个可编程的片上定时器,总共包含三个可由用户设置的寄存器,并可以申请主机的中断。这三个寄存器分别为TIM(定时设定寄存器)、PRD(定时周期寄存器)、TCR(定时控制寄存器)。TIM、PRD及TCR均是16位的存储器映射寄存器,TIM的值由PRD来进行装载,并且作减一操作;PRD是用来重装TIM的值的;TCR包含了定时器的控制与状态信息。定时器的所能定时的长度可通过公式)1()1(PRDTDDRT来计算,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控制口D7D6D5D4D3D2D1D0OUT7OUT6OUT5OUT4OUT3OUT2OUT1OUT0注:向控制位写入’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串行口复位(两种复位方式)通过芯片复位端RS复位。当0RS=时,引发的串行口发送器、接收器、采样率发生器复位。当1RS=芯片复位完成后,串行口仍然处于复位状态,0XRSTRRSTFRSTGRST====。利用串口控制寄存器的控制位复位。接收控制寄存器SPCR1中RRST位可对串口接收器进行复位,发送控制寄存器SPCR2中的XRST和GRST位可分别对串口发送器和采样率发生器进行复位。2、复位完成后,串行口初始化。初始化的步骤为:对串口控制寄存器中的复位位置0,刚复位完毕,可不进行这一步操作。按串口复位要求,对MCBSP的寄存器进行编程配置。等待两个时钟周期,以保证适当的内部同步。按照写DXR的要求,给出数据。使串口使能。若要求内部帧同步信号,则设定1FRST。等待2个时钟周期后,接收器和发送器激活。【设计任务】编写程序,实现PC与DSP之间的串口通信。实验六交通灯实验【实验目的】熟练掌握DSP的指令系统,以及TMS320C5416的硬件结构和应用程序设计。掌握DSP扩展数字I/O口的方法。【实验要求】通过本实验,熟悉CCS集成开发环境,熟练掌握TMS320C5416数字I/O口的使用。【背景知识】SEED-DTK实验平台中交通灯控制口地址为0x08000(I/O空间),其说明如表6.1所示。表6.1交通灯控制口D11D