首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP 学习资料 七

DSP 学习资料 七

(2)压缩程序 线性到压缩数据的变换一般采用程序计算实现,下面是线性数据到(律压缩数据的TMSC25程序。 ;初始化 LDPK 0 LALK 132 SACL BIAS2 LALK -7 SACL NEG7 LARP ARO ;压缩子程序 LTOU: ZALH IN SFL SFL BLZ NEGCMP ADDH BIAS2 LAR AR0,NEG7 RBTK 6 NORM ANDK OF000H,14 SACH Q SAR AR0,S ZALH S ABS ADD Q,2 XORK 0FF00H,4 B SATCH。 NEGCMP: ABS ADDH BIAS2 LAR AR0,NEG7 RBTK 6 NORM ANDK 0F000H,14 SACH Q SAR AR0,S ZALH S ABS ADD Q,2 XORK 07F00H,4 SACH OUT,4 RET 上述程序中,待压缩的数据在IN中,压缩后的数据在OUT中。数据存储单元都定义在第 0页中。需要注意的是,应保证待压缩数据的数值范围在一7774”+7774之间。 B.内部定时器的应用 TMS320C2X内部具有一个定时器,可产生周期中断,可以用来设置诸如A/D的采佯频率,在外部标志引脚XF上产生周期脉冲等。TMS320C2X的定时器由一个16位的定时器寄存器和一个16位的周期寄存器组成。在每个CLKOUT1周期,定时器寄存器的值减1,当该寄存器的值为0时,产生一个定时器中断(TINT)。在下一个CLKOUT1周期,周期寄存器的内容(PRD)装入至定时器寄存器。因此,定时器中断的周期是PRD+l个CLKOUT1周期,即中断频率为 CLKOUTl/(PRD+1)。设晶体的时钟为40MHz,要产生一个10KHz的定时器中断,则周期寄存器的值为: f = CLKOUT1/(PRD+1) PRD = (CLKOUT1/f)-1 =(10MHz/10KHz)-1 = 999 下面是一个在XF引脚上产生一个10KHz正脉冲的TMS320C2x程序。 PRD .set 3 IMR .set 4。 .text LDPK 0 LALK #999 SACL PRD ;置定时器周期寄存器 = 999 LACL #8 0R IMR SACL IMR ;开放定时器中断 RXF ;XF 置低 EINT :开中断 LO0P: B LOOP ;定时器中断服务程序 TINT_ISR: SXF ;XF置高 SXF ;XF置低 EINT ;开中断 RET ;中断返回。 TMS320C5X的定时器在TMS320C2X的基础上增加了一些控制功能,通过设置定时器控制寄存器TCR可以启动、停止定时器,也可以设定定时器分频比。定时器的中断频苹为 f = CLKOUT1/[(TDDR+1)(PRD+1)] 式中,TDDR为分颇比,PRD为周期寄存器的值。 C.中断的保护和恢复 中断程序的状态保护和恢复只要根据中断程序中寄存器的使用情况进行保护和恢复即可。但是在保护两个状态寄存器ST0和STl时必须特别注意恢复时的先后顺序。TMS320C2X 保护ST0和STl寄存器时使用专门的指令SST0和SST1,恢复时使用LST0和LST1,如果采用间接寻址进行保护,则保护和恢复的顺序无关紧要。但是如果采用直接寻址,则必须注意恢复时的先后顺序。下面是采用直接寻址方式时TMS320C2x中断保护和恢复的正确方法,程序中TST0、TST1等都是定义在数据空间第O页的存储单元。 ISR_SUB: SST0 TST0 ;保存ST0至TST0单元(强制DP = 0) SST1 TST1 ;保存ST1至TST1单元(强制DP = 0) LDPK 0 ;DP = 0 SACL TACCL ;保存ACC的高16位 SACH TACCH ;保存ACC的低16位,“ ZAIS TACCL ;恢复ACC的低16位 ADDH TACCH :恢复ACC的高16位 LST1 TST1 ; 恢复 ST1 LST0 TST0 ;恢复ST0 EINT :中断使能。 RETI ; 中断返回 如果将恢复的顺序颠倒过来,即首先执行LST0指令然后执行LST1指令,则数据页指针DP就不能正确地加以恢复。因为,数据页指针DP在状态寄存器ST0中,执行了LST0实际上就将当前数据页改为ST0中的DP值,再执行LSTl时,由于不像SST1那样强迫将DP置为0。因此数据页不对,恢复的ST1内容就不正确了。 D.TMS320C5X矢量表的重定位 TMS320C2x中断矢量表的地址固定在程序空间o地址开始的一段位置,固定中断矢量表地址在某些情况下会带来一定的麻烦。例如.当系统采用低速EPROM加高速RAM的存储器配置时,虽然程序可以在系统加电运行时从EPROM搬移至高速RAM运行,但由于中断矢量的地址是固定的,因此系统产生中断时,在中断矢量地址的跳转指令将不得不多运行几个指令周期。TMS320C5x作了改进,使中断矢量表的地址可以通过程序进行重定位,可以将矢量地址重新定位至程序空间中任何2K字页面的开始,如800H。重定位的方法是在PMST寄存器的IPTR域中设置对应的值,复位时,IPTR =0,中断矢量表的首地址为0H,若IPTR=1则首地址为800H。复位后执行下面的指令将矢量表地址重定位在800H: OPL #800H,PMST 执行上述指令后,后面产生的中断将从新的矢量表中获取中断矢量,例如复位后定时器中断的矢量地址为BH,而新的矢量地址为808H。 E.TMS320C5X等待状态产生的软件实现 为了与低速的存储器或I/O设备接口, TMS320C2x需要采用硬件等待状态产生器实现,这使硬件设计复杂化。TMS320C5X支持硬件等待状态产生,也可采用软件控制等待状态的产生,从而使硬件设计简单化,节省了系统体积。软件可编程等待状态产生器是由两个16位等待状态寄存器PDWSR和IOWSR及一个5位控制寄存器CWSR控制的. F.TMS320C2x至TMS320C5X的软件移植 TMS320C2x的指令集在源代码级是向上兼容的。因此,原则上说,TMS320C2X的程序经 过TMS320C5X的汇编器重新汇编后就可以在TMS320C5x上运行。但是,由于TMS32l0C5x在 串行口、定时器和全局控制等方面与TMS320C2x不同, 因此在TMS320C2x至TMS320C5X的软件移植时,还必须作-些迎要的修改,例如表2.2列出了有关串行口设置的一些指令的侈改。此外,还必须注意有些寄存器的地址也不相同。 表2.2 串行口指令的修改 TMS320C25 TMS320C50 RFSM APL #0FFF7H,SPC SFSM OPL #8,SPC RTXM APL #0FFDFH,SPC STXM OPL #020H,SPC FORT0 APL #0FFFBH,PC FORT1 OPL #4,SPC
四 代码调试工具 开发DSP芯片,调试工具是必不可少的。TMS320系列DSP芯片的系统集成和调试工具主要有: (1)C/汇编语言源码调试器。 (2)初学者工具DSK (3)软件模拟器(Simulator)。 (4)评价模块EVM。 (5)软件开发系统SWDS (6)仿真器XDS 下面我们分别介绍这几种调试工具。 4.1 C/汇编源码调试器 c/汇编源码调试器是一种工作在PC机上的先进的软件揍口,它与调试工具(如软件模拟器、评价模块、软件开发系统、仿真器)配合使用。调试器可以完全控制用C或汇编语言编写的程序。用户程序既可用C语言调试,也可用汇编语言调试,还可以进行C和汇编的混合调试。调试器提供了非常友好的用户界面,面向窗口、支持鼠标和莱单式的接口使用户不必记忆复杂的命令,使用十分方便。 A 调试器的主要特征 调试器的主要特征包括: (1)提供完善的控制程序运行的特征,如:条件执行,单步执行,断点设置和清除,批文件执行命令。 (2)多操作支持:增强了并行处理能力以支持TMS320C40的多处埋器的调试。 (3)多级调试:可同时调试C和汇编语言“,调试C语言时,用户可同时观察C源码及由C源码产生的目标代码的反汇编,调试器也可用作汇编语言调试器。 (4)可灵活配置的界面:由于调试器的显示界面是可配置的,因此用户可根据需要设置不同的界面。显示的颜色、窗口的边界、尺寸和位置等都可以改变。 (5)灵活的命令输人:输入命令的方式灵活多样,可用键人命令法。鼠标、功能键或下拉莱单输入。调试器具有命令记忆功能,不必重新输人即可执行以前输人的命令。 (6)全屏幕编辑:任何窗口中显示的数据值可很容易地更改。 (7)连续更新:调试器可连续更新屏幕上的信息,并高亮显示更改的数据。 (8)综合数据显示:用户可方便地在屏幕上建立窗口以显示和编辑变量、数组、结构及指针等数据类型。 (9)功能强大的命令集:调试器提供了一个充分利用C表达式的命令集。 B 调试器的调试模式 调试器提供三种调试模式:自动模式,汇编模式,混合模式。 (1)自动模式:在自动模式中,调试器自动显示当前正在运行的代码,或者是汇编语言,或者是C语言。这也是缺省的调试模式。 (2)汇编模式:在这种模式下,显示的是汇编语言,不管运行的是C语言还是汇编语言。 (3)混合模式:在这种模式下,可以同时显示C语言程序和汇编程序。 C 调试器窗口 调试器能显示多种不同类型的窗口。窗口的名称显示在窗口的顶行。
返回列表