DSP技术原理及应用(课件)PPT

上传人:cl****1 文档编号:592805353 上传时间:2024-09-22 格式:PPT 页数:341 大小:4.32MB
返回 下载 相关 举报
DSP技术原理及应用(课件)PPT_第1页
第1页 / 共341页
DSP技术原理及应用(课件)PPT_第2页
第2页 / 共341页
DSP技术原理及应用(课件)PPT_第3页
第3页 / 共341页
DSP技术原理及应用(课件)PPT_第4页
第4页 / 共341页
DSP技术原理及应用(课件)PPT_第5页
第5页 / 共341页
点击查看更多>>
资源描述

《DSP技术原理及应用(课件)PPT》由会员分享,可在线阅读,更多相关《DSP技术原理及应用(课件)PPT(341页珍藏版)》请在金锄头文库上搜索。

1、DSP技术原理及应用1目录第1章绪论第2章TMS320C54x的结构原理第3章TMS320C54x硬件系统设计第4章TMS320C54x指令系统第5章DSP软件开发与设计第6章TMS320C54x的开发应用2教学目的1、理解数字信号处理及数字信号处理器的基本概念;2、了解数字信号处理器的发展现状、发展趋势及应用;3、了解TI公司三大系列DSP芯片的主要特点及应用;4、掌握定点DSP的数据格式。教学重点1、数字信号处理及数字信号处理器的基本概念;2、TI公司三大系列DSP芯片的主要特点及应用;3、定点DSP的数据格式。教学难点定点DSP的数据格式。第一章绪论3课外作业1、课本P26作业1.2,1

2、.42、若x=1.4,y=0.2(1)将x用Q14格式表示,将y用Q15格式表示;(2)再求x+y。3、y=-0.328,将其表示成Q15格式的定点数。4、已知7000H是定标为Q12的定点数。求其对应的浮点数。4DSP有两种理解:有两种理解:一、广义的理解:一、广义的理解:digital signal processing数字信号处理数字信号处理 二、狭义的理解:二、狭义的理解:digital signal processor数字信号处理器数字信号处理器 1.1数字信号处理:数字信号处理: 他是利用计算机或专用处理设备,以数字形式对信号进行采他是利用计算机或专用处理设备,以数字形式对信号进行

3、采集、变换、滤波、估值、增强、压缩、识别等处理,得到符合需集、变换、滤波、估值、增强、压缩、识别等处理,得到符合需要的信号形式。要的信号形式。在通用的计算机上用软件实现。在通用的计算机上用软件实现。在通用计算机系统上加上专用的加速处理机实现。在通用计算机系统上加上专用的加速处理机实现。用通用的单片机实现。用通用的单片机实现。用通用的可编程用通用的可编程DSP芯片实现。芯片实现。用专用的用专用的DSP芯片实现。芯片实现。用用/CPLD/FPGA实现。实现。数字信号处理的实现方法:数字信号处理的实现方法:5TMS320VC5402管脚图6数字信号处理系统的一般组成抗抗混混叠叠滤滤波波器器将将输输入

4、入信信号号X(t)中中比比主主要要频频率率高高的的信信号号分分量量滤滤除除,避免产生信号频谱的混叠现象。避免产生信号频谱的混叠现象。A/D将输入的模拟信号转换为将输入的模拟信号转换为DSP芯片可接收的数字信号。芯片可接收的数字信号。DSP芯片芯片对对A/D输出的信号进行某种形式的数字处理。输出的信号进行某种形式的数字处理。D/A经经过过DSP芯芯片片处处理理的的数数字字样样值值经经D/A转转换换为为模模拟拟量量,然然后后进行平滑滤波得到连续的模拟信号。进行平滑滤波得到连续的模拟信号。7数字信号处理系统的一般设计过程8数字信号处理器DSPDSP:是一种特别适合于进行数字信号处理运算的微处理器,其

5、是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。主要应用是实时快速地实现各种数字信号处理算法。 DSP的主要特点:的主要特点:哈佛结构哈佛结构 :冯冯诺诺依依曼曼结结构构:将将指指令令、数数据据存存储储在在同同一一个个存存储储器器中中,统统一一编编址址,译译稿稿指指令令计计数数器器提提供供的的地地址址来来区区分分是是指指令令还还是是数数据据。取取指指令令和和取取数数据据都都访访问问统统一存储器,数据吞吐率低。一存储器,数据吞吐率低。基本哈佛结构:程序和数据存储在不同的存储空间,程序存储空间和数据基本哈佛结构:程序和数据存储在不同的存储空间,程序存

6、储空间和数据存储空间是两个相互存储空间是两个相互独立独立的的存储空间存储空间,每个存储空间独立编址,独立访问。,每个存储空间独立编址,独立访问。 冯诺曼结构基本哈佛结构改进哈佛结构9多总线结构多总线结构对对DSP来说,总线越多,可以完成的功能就越复杂。来说,总线越多,可以完成的功能就越复杂。流水线结构流水线结构如四级流水线的操作图:如四级流水线的操作图:DSP主要特点续多处理单元多处理单元 DSP内内部部一一般般都都包包括括有有多多个个处处理理单单元元,如如算算术术逻逻辑辑运运算算单单元元(ALU)、辅辅助助寄寄存存器器运运算算单单元元(ARAU)、累累加加器器(ACC)以以及及硬硬件件乘乘法

7、器法器(MULT)单元等。它们可以在一个指令周期内同时进行运算。单元等。它们可以在一个指令周期内同时进行运算。利用这种流水线结构,加上执行重复操作,保证了数字信号处利用这种流水线结构,加上执行重复操作,保证了数字信号处理中用得最多的乘法累加运算可以在单个指令周期内完成。理中用得最多的乘法累加运算可以在单个指令周期内完成。10DSP主要特点续特殊的特殊的DSP指令指令 在在DSP的的指指令令系系统统中中,设设计计了了一一些些特特殊殊的的DSP指指令令。例例如如TMS320C54x中中的的FIRS和和LMS指指令令,则则专专门门用用于于系系数数对对称称的的FIR滤波器和滤波器和LMS算法。算法。指

8、令周期短指令周期短DSP广广泛泛采采用用亚亚微微米米CMOS制制造造工工艺艺,如如TMS320C54x,其其运运行行速速度度可可达达100MIPS。TMS320C6203的的时时钟钟为为300MHz,运运行行速速度度达到达到2 400 MIPS。运算精度高运算精度高DSP的的字字长长有有16位位、24位位、32位位。为为防防止止运运算算过过程程中中溢溢出出,累累加加器器 达达 到到 40位位 。 此此 外外 , 一一 批批 浮浮 点点 DSP, 例例 如如 TMS320C3x、TMS320C4x、 TMS320C67x、 ADSP21020等等,则则提提供供了了更更大大的的动态范围。动态范围。

9、11DSP主要特点续硬件配置强硬件配置强新新一一代代DSP的的接接口口功功能能愈愈来来愈愈强强,片片内内具具有有定定时时器器、串串行行口口、主主机机接接口口(HPI)、DMA控控制制器器、软软件件控控制制的的等等待待状状态态产产生生器器、锁锁相相环环时时钟钟产产生生器器以以及及实实现现在在片片仿仿真真符符合合IEEE 1149.1标标准准的的测测试试仿仿真真接接口口,使使系系统统设设计计更更易易于于完完成成。另另外外,许许多多DSP芯芯片片都都可可以以工工作作在在省省电电方方式,大大降低了系统功耗。式,大大降低了系统功耗。12DSP的分类按基础特性分:按基础特性分:DSP芯片的工作时钟(主频)

10、和指令类型芯片的工作时钟(主频)和指令类型DSPDSP的分类有三种方式:按基础特性分的分类有三种方式:按基础特性分、按数据格式分、按用途分按数据格式分、按用途分静态静态DSPDSP芯片:该类型在某时钟频率范围内都能正常工作,除计芯片:该类型在某时钟频率范围内都能正常工作,除计算速度有变化外,没有性能上的下降。如日本算速度有变化外,没有性能上的下降。如日本OKIOKI电器公司的电器公司的DSPDSP和和TITI公司的公司的TMS320C2XXTMS320C2XX系列;系列;一致性一致性DSPDSP:两种或更多的:两种或更多的DSPDSP芯片,其指令集、机器代码及管芯片,其指令集、机器代码及管脚结

11、构相互兼容。如美国脚结构相互兼容。如美国TITI公司的公司的TMS320C54XTMS320C54X。13DSP的分类 按按数数据据格格式式分分:DSP对对数数据据的的处处理理有有两两种种格格式式:定定点点数数据据格格式式和浮点数据格式。和浮点数据格式。定点定点定点定点DSPDSP芯片:数据以定点格式参加运算。芯片:数据以定点格式参加运算。芯片:数据以定点格式参加运算。芯片:数据以定点格式参加运算。浮浮浮浮点点点点DSPDSP芯芯芯芯片片片片:数数数数据据据据以以以以浮浮浮浮点点点点格格格格式式式式参参参参加加加加运运运运算算算算。不不不不同同同同浮浮浮浮点点点点DSPDSP所所所所采用的浮点

12、格式可能不同。采用的浮点格式可能不同。采用的浮点格式可能不同。采用的浮点格式可能不同。按用途分:按用途分:按用途分:按用途分: 通用型:适合普通的通用型:适合普通的通用型:适合普通的通用型:适合普通的DSPDSP应用。应用。应用。应用。 专用型:为特定的功能、运算而设计的。如数字滤波、卷专用型:为特定的功能、运算而设计的。如数字滤波、卷专用型:为特定的功能、运算而设计的。如数字滤波、卷专用型:为特定的功能、运算而设计的。如数字滤波、卷积、积、积、积、FFTFFT等。如等。如等。如等。如TMS320C24xTMS320C24x适合自动控制;适合自动控制;适合自动控制;适合自动控制;MOTOLOR

13、AMOTOLORA公公公公司的司的司的司的DSP56200DSP56200专用于数字滤波。专用于数字滤波。专用于数字滤波。专用于数字滤波。 14DSP的选择选择选择DSP芯片时应考虑如下几个因素:芯片时应考虑如下几个因素:DSPDSP芯片的运算速度:运算速度可以用以下几种性能指标来衡量;芯片的运算速度:运算速度可以用以下几种性能指标来衡量;芯片的运算速度:运算速度可以用以下几种性能指标来衡量;芯片的运算速度:运算速度可以用以下几种性能指标来衡量; 指令周期:即执行一条指令所需要的时间,通常以指令周期:即执行一条指令所需要的时间,通常以指令周期:即执行一条指令所需要的时间,通常以指令周期:即执行

14、一条指令所需要的时间,通常以nsns为单位。为单位。为单位。为单位。 MAC MAC时间:即完成一次乘法和一次加法时间。时间:即完成一次乘法和一次加法时间。时间:即完成一次乘法和一次加法时间。时间:即完成一次乘法和一次加法时间。 FFTFFT执行时间:即运行一个执行时间:即运行一个执行时间:即运行一个执行时间:即运行一个N N点点点点FFTFFT程序所需时间。程序所需时间。程序所需时间。程序所需时间。 MIPS MIPS:每秒执行百万条指令。:每秒执行百万条指令。:每秒执行百万条指令。:每秒执行百万条指令。 MOPS MOPS:每秒执行百万次操作。:每秒执行百万次操作。:每秒执行百万次操作。:

15、每秒执行百万次操作。 MFLOPSMFLOPS:每秒执行百万次浮点操作。:每秒执行百万次浮点操作。:每秒执行百万次浮点操作。:每秒执行百万次浮点操作。 BOPS BOPS:每秒执行十亿次操作。:每秒执行十亿次操作。:每秒执行十亿次操作。:每秒执行十亿次操作。 DSP DSP芯片的硬件资源;芯片的硬件资源;芯片的硬件资源;芯片的硬件资源; DSP DSP芯片的运算精度:参加运算的数据字长越长精度越高。芯片的运算精度:参加运算的数据字长越长精度越高。芯片的运算精度:参加运算的数据字长越长精度越高。芯片的运算精度:参加运算的数据字长越长精度越高。 DSP DSP芯片的功耗;芯片的功耗;芯片的功耗;芯

16、片的功耗; DSP DSP芯片的开发工具;芯片的开发工具;芯片的开发工具;芯片的开发工具; DSP DSP芯片的价格;芯片的价格;芯片的价格;芯片的价格;DSPDSP芯片发展迅速,价格下降也很快。芯片发展迅速,价格下降也很快。芯片发展迅速,价格下降也很快。芯片发展迅速,价格下降也很快。 其它。封装形式、质量标准、供货情况、生命周期等。其它。封装形式、质量标准、供货情况、生命周期等。其它。封装形式、质量标准、供货情况、生命周期等。其它。封装形式、质量标准、供货情况、生命周期等。151.3定点DSP的数据格式在定点处理器中,数据采用定点表示方法,在定点处理器中,数据采用定点表示方法,定点表示并不意

17、味定点表示并不意味着就一定是整数表示。着就一定是整数表示。它有两种基本表示方法:整数表示方法和小数表示方法。它有两种基本表示方法:整数表示方法和小数表示方法。整数表示方法主要用于控制操作、地址计算和其他非信号处理整数表示方法主要用于控制操作、地址计算和其他非信号处理的应用。的应用。小数表示方法则主要用于数字和各种信号处理算法的计算中。小数表示方法则主要用于数字和各种信号处理算法的计算中。01010111S262524232221208 8位定点整数表示方法:位定点整数表示方法:01110000S2-12-22-32-42-52-62-78 8位定点小数表示方法:位定点小数表示方法:结果=2-1

18、+2-2+2-3=0.875结果=26+24+22+21+20=8716数的补码表示例:求-3.25的补码。用8位二进制数表示。解:方法1+3.25的二进制数为:0011.0100,这也就是+3.25的补码。则-3.25的原码为:1011.0100-3.25的反码为:1100.1011,最末位加1得补码1100.1100方法2将+3.25的补码0011.0100所有位取反得到1100.1011,最末位加1得补码1100.1100求一个数的补码的补码,就得到这上数的相反数的补码。17定点数有两种表示法:定点数有两种表示法:(1)Q表示法表示法;(2)S表示法。表示法。Q表示法的表示法的Qn表示小

19、数点在数据第表示小数点在数据第n位之后(也就是小数位数有位之后(也就是小数位数有n位),位), Qn中的中的n也称为也称为Q值,写为值,写为Q=n。例如,。例如,Q0,表示,表示小数点在第小数点在第0位之后,即位之后,即Q=0,显然,显然,Q表示法的表示法的Q0实际上表实际上表示一个整数。示一个整数。Q15表示小数点在第表示小数点在第15位之后,显然,位之后,显然,Q15实实际上表示一个纯小数。际上表示一个纯小数。S表示法的表示法的Sm.n表示有表示有m位整数,位整数,n位小数(即小数点在第位小数(即小数点在第n位位之后),且之后),且m+n=15。显然,。显然,S表示法的表示法的Sm.n 与

20、与Q表示法的表示法的Qn相同。例如,相同。例如,S0.15与与Q15相同,相同,S15.0与与Q0相同。相同。定点数的表示法18几种常用的几种常用的Q表示法的格式:表示法的格式:Q0格式:Q0格式(S15.0)的字长为16位。位数1514131211109.0值SI14I13I12I11I10I9.I0定点数的整数形式。最高位为符号S,接下来的Ix为15位2补码的整数 ,表示数的范围为(-215215-1),最小的分辨率为1。Q12格式:Q12格式(S3.12)的字长为16位。最高位为符号S,接下来的3位为2补码的整数位,高位在前,后面的12位为2补码小数位。Q12 格式表示数的大致范围为(-

21、8,7),小数的最小分辨率为2-12 。 位数1514131211109.0值SI3I2I1Q11Q10Q9.Q019Q15(或或S0.15) 格式格式Q15格式的字长为格式的字长为16位,其每位的具体表示如下:位,其每位的具体表示如下:位数1514131211109.0值SQ14Q13Q12Q11Q10Q9.Q0最高位为符号最高位为符号S,接下来的为,接下来的为2补码的补码的15位小数位,小数点紧接着符号位,位小数位,小数点紧接着符号位,无整数位。无整数位。Q15格式表示数的范围为(格式表示数的范围为(-1,1),小数的最小分辨率为),小数的最小分辨率为2-15 。 对于对于16位位的定点处

22、理器的定点处理器TMS320C54x来说,来说,Q15是在程序设计中最常用的格式。是在程序设计中最常用的格式。TI公公司提供的数字信号处理应用程序库司提供的数字信号处理应用程序库DSPLIB就主要采用这种数据格式。就主要采用这种数据格式。20Q表示法S表示法十进制数表示的范围Q15S0.15-1x0.9999695Q14S1.14-2x1.9999390Q13S2.13-4x3.9998779Q12S3.12-8x7.9997559Q11S4.11-16x15.9995117Q10S5.10-32x31.9990234Q9S6.9-64x63.9980469Q8S7.8-128x127.996

23、0938Q7S8.7-256x255.9921875Q6S9.6-512x511.9804375Q5S10.5-1024x1023.96875Q4S11.4-2048x2047.9375Q3S12.3-4096x4095.875Q2S13.2-8192x8191.75Q1S14.1-16384x16383.5Q0S15.0-32768x3276721 定定点点格格式式表表示示数数的的范范围围(动动态态范范围围)和和数数据据的的精精度度是是确确定定的的。表表示示数数的的范范围围越越大大,数数据据的的精精度度越越低低,也也就就是是说说,数数的的范范围围与与精精度度是是一一对对矛矛盾盾。对对16位位

24、的的数数据据来来说说,动动态态范范围围最最大大的的格格式式为为整整数数Q0,精精度度(或或分分辨辨率率)最最高高的的格格式式为为Q15。 222.定点数和浮点数的转换关系浮点数A转换成定点数B:B=(int)(A2Q)定点数A转换成浮点数B:B=A2Q例一:浮点数x0.5,定标在Q15,则相应的定点数为Xq0.5215=0.53276816384=4000H例二:一个Q15表示的定点数13107对应的浮点数为x=131072-15=0.3999939例三:y=-0.625,将其表示成Q15格式的定点数。解:Yq=-0.625215=-20480=-5000H求-5000H的补码:将其绝对值50

25、00H的所有位取反(得AFFFH)后加1得到补码为B000H。B000H就是-0.625的Q15格式表示的定点数。例四:已知6000H是定标为Q12的定点数。求其对应的浮点数。解:6000H=24576,对应的浮点数为x=245762-12=623定点格式数据的转换 若若一一个个数数已已经经是是某某种种动动态态范范围围较较小小的的QnQn格格式式,为为了了与与动动态态范范围围较较大大的的QnQn格格式式数数进进行行(加加、减减)运运算算,要要将将其其转转换换为为动动态态范范围围较较大大的的格格式式的的数数。动动态态范范围围小小的的格格式式就就是是整整数数位位数数较较少少,如如果果整整数数位位数

26、数比比动动态态范范围围大大的的格格式式少少k k位位,则则将将动动态态范范围围小小的的数数右右移移k k位位,右右端端移移出出去去的的k k位位去去掉掉不不要要,左左端端进进行行符符号号位位扩扩展展(扩扩展展k k位位),这这样样就就把把动动态态范范围围较较小小的的格格式式的的数数转转换换为为动动态态范范围较大的格式的数围较大的格式的数例例如如,5.625+0.625=6.255.625+0.625=6.25,5.6255.625和和结结果果6.256.25需需要要采采用用Q12Q12格格式式才才能能保保证证其其动动态态范范围围,若若0.6250.625原原来来用用Q15Q15格格式式表表示示

27、,则则需需要要先先将将他他表表示示成成Q12Q12后后,再进行计算,自然,最后的结果也为再进行计算,自然,最后的结果也为Q12Q12。转换过程分析如下:。转换过程分析如下:5.6255.625212=5.6255.625409623040=5A00H0.625215=0.6253276820480=5000H将5000H右移3位。由于5000H为正数,所以5000H右移时左端补0。5000H右移3位后变为0A00H。5A00H+0A00H=6400H=25600,对应的浮点数为256002-12=6.2524练习:1、已知5000H是Q15格式的定点数,请将其写为二进制数,并标上小数点.他对应

28、的十进制数是多少?若为Q12格式,再完成上面的要求。2、求-1.5的补码,用8位二进制数表示。251.4DSP芯片的发展及应用信信号号处处理理系系统统:数数字字滤滤波波(FIRIIRFIRIIR)、自自适适应应滤滤波波器器、快快速速付付立叶变换、相关运算、谱分析、卷积、加窗、波形产生等。立叶变换、相关运算、谱分析、卷积、加窗、波形产生等。通通信信:调调制制解解调调器器、自自适适应应均均衡衡、数数据据加加密密、数数据据压压缩缩、回回波波抵消、多路复用、波形产生等。抵消、多路复用、波形产生等。语语音音:语语音音编编码码、语语音音合合成成、语语音音识识别别、语语音音增增强强、语语音音邮邮件件、语音存

29、储等。语音存储等。图图形形/ /图图像像:二二位位/ /三三维维图图形形处处理理、图图像像压压缩缩与与传传输输、图图像像增增强强、动画、机器人视觉等。动画、机器人视觉等。军事:保密通信、雷达处理、声纳处理、导航、导弹制导等。军事:保密通信、雷达处理、声纳处理、导航、导弹制导等。仪器仪表:频谱分析、函数发生、锁相环、地震处理等。仪器仪表:频谱分析、函数发生、锁相环、地震处理等。自自动动控控制制:引引擎擎控控制制、声声控控、自自动动驾驾驶驶、机机器器人人控控制制、磁磁盘盘控控制等。制等。医疗:助听、超声设备、诊断工具、病人监护等。医疗:助听、超声设备、诊断工具、病人监护等。 家用电器:高保真音响、

30、音乐合成、音调控制、玩具与游戏、家用电器:高保真音响、音乐合成、音调控制、玩具与游戏、数字电话数字电话/ /电视等。电视等。 26代码兼容代码兼容代码兼容27C2000系列系列DSP产品规划产品规划Up To 40 MIPSControl Performance High-Precision Control C242F241LC2404ALF2401ALC2402AMulti-Function, Appliance & Consumer Control F240F243LC2406ALF2402ALF2403ALF2406ALF2407AF2810128-LQFPF2812176-LQFPF2

31、812179-u*BGA150 MIPS!High-endDerivativesApplicationspecificversionsLowCostversionsCostoptimizedversionsC2812F2801?Long Team?C2810F2806F280828TMS320LF2407DSP与TMS320C28xDSP的方框图TMS320C28x是是到到目目前前为为止止用用于于数数字字控控制制领领域域性性能能最最好好的的DSP芯芯片片。32位位的的定定点点DSP核核,最最高高速速度度可可达达400MIPS,可可以以在在单单个个指指令令周周期期内内完完成成3232位位的的乘乘

32、累累加加运运算算,具具有有增增强强的的电电机机控控制制外外设设、高高性性能能的的模模/数数转转换换能能力力和和改改进进的的通通信信接接口口,具具有有8GB的的线线性性地地址址空空间间,采采用用低低电电压压供供电电(3.3V外外设设/1.8V CPU核核),与,与TMS320C24x源代码兼容。该系列芯片已投放市场。源代码兼容。该系列芯片已投放市场。29C5000系列系列DSP产品规划产品规划MulticoreApplicationEnhancedDSP + RISCFeature IntegrationPower Efficiency/System DensityCode Compatible

33、OMAP5910C55x+ARM9C5509A400 MIPS, USBC5510320-400MIPSC55xTM DSPMulticoreOMAPTMC55x+ARM9C55xTM DSPIn SiliconAnnouncementRoadmapTNET30104800 MIPSC5420200 MIPSC5421200 MIPSC5441532 MIPSC5470C54x+ARM7C5501600 MIPSC5502400-600 MIPSC540980-160 MIPSC5410A100-160MIPSC5416120-160MIPSC540150 MIPSC5402100-160MI

34、PSC5404120 MIPSC5407120 MIPSC54CST120 MIPSC54V90120 MIPSC5503 64KB RAMC5507 128KB RAMLow cost FingerprintC5471C54x+ARM730TMS320C5000系列特性比较特特 性性TMS320C54x单单核核DSPTMS320C55xDSP功耗功耗/(mW/MIPS)0.540.05执行速度执行速度/MIPS或或MMACS30160140800代码密度代码密度变指令长度结构变指令长度结构功能功能单元单元MACs ALUs 累加器累加器1 1 22 2 4程序获取程序获取16位位32位位指令

35、长度指令长度固定固定16位位848位可变位可变31C6000系列系列DSP产品规划产品规划 Code CompatibleC6416T1 GHzC6411C6416T720 MHzC6415T720 MHzC6414T720 MHzDM642Performance ValueC6412DM641DM640C6415T1 GHzC6414T1 GHzHigh PerformanceApplication SpecificFloating PointC6701C6712C6711C6201C6202C6203C6204C6205C6211 More than 20 code-compatible

36、devices Ranging from sub $9 to 1GHz 30K+ Programmers Millions shipped to dateIncreasing Performance, Memory & PeripheralsC6713C6416C6415C6414C6413C641032DSP性能推动革新199050 MHz50 MHz50MIPS2000600 MHz600 MHz4800 MIPS因特网音频播放器因特网音频播放器线缆调制解调器线缆调制解调器DSL调制解调器调制解调器数字相机数字相机多媒体网关多媒体网关数字收音机数字收音机智能电话智能电话数字视频相机数字视频

37、相机平板平板PC720 MHz720 MHz5760 MIPS2003仪器仪器军事军事工业工业PC调制解调调制解调器器数字通信数字通信数字无线电话数字无线电话phones硬盘驱动器硬盘驱动器发音玩具发音玩具200 MHz200 MHz1600 MIPS19971 GHz1 GHz8000 MIPSTI 推出推出 1 GHz DSP 1995100 MHz100 MHz100MIPS33用户接口先进的操作系统MPEG4编解码器H263编解码器AMR编解码器MP3编解码器OMAP平台对数字信息终端的意义 所所针对多媒体应用针对多媒体应用 无线视频和图像处理无线视频和图像处理 无线高级语音应用无线高

38、级语音应用 无线音频处理无线音频处理 图形和视频显示加速处理图形和视频显示加速处理 因特网网页生成接入因特网网页生成接入 无线数据处理无线数据处理 全球卫星定位系统全球卫星定位系统(GPS ) 短距离无线通信应用短距离无线通信应用(SDW) ARM 和和DSP 操作系统操作系统34教学目的1、了解TMS320C54x的内部结构和主要特性。2、掌握存储器系统及其使用方法。3、了解CPU各组成部分的特点和作用。4、掌握定时器和时钟发生器的工作原理及使用方法。5、了解McBSP多通道缓冲串口。6、掌握中断系统的工作原理及使用方法。教学重点1、存储器系统及其使用方法。2、定时器和时钟发生器的工作原理及

39、使用方法。3、中断系统的工作原理及使用方法。教学难点1、定时器和时钟发生器的工作原理及使用方法。2、McBSP多通道缓冲串口的工作原理。3、重新映射中断向量地址。第二章TMS320C54x的结构原理351、课本P114作业2.4,2.5,2.7,2.8,2.10,2.11,2.13,2.4,2.152、希望将程序放在C54xDSP片内RAM中运行,要怎么设置?3、写出将状态寄存器ST1中的SXM位置为1的指令。4、一个16位的二进制数送入ALU后将成为40位的二进制数。现将8000H送入ALU,并放在第15-第0位,写出下面两种情况下得到的40位二进制数:(1)SXM=0;(2)SXM=15、

40、若CPU时钟频率为32MHz,用定时器定时500微秒,求TDDR和PRD的值。6、已知输入时钟CLKIN的频率为16MHz,若希望DSP时钟频率为32MHz,设计相应的程序。假设已求得PLLCOUNT的值为20h。课外作业36第二章TMS320C54x的结构原理2.1TMS320C54x的内部结构及主要特性2.1.1TMS320C54x的内部结构(1)CPU:包括:包括算术逻辑单元、算术逻辑单元、乘法器、累加乘法器、累加器、移位寄存器、移位寄存器、各种专门器、各种专门用途的寄存器、用途的寄存器、地址发生器以地址发生器以及内部总线;及内部总线;(3)片片内内的的外外设设:包包括括片片内内的的定定

41、时时器器、各各种种类类型型的的串串口口、主主机机接接口口、片片内内的的锁锁相相环环(PLL)时时钟钟发发生生器器以以及及各各种种控控制制电电路;路;JTAGJTAG接口。接口。 (2)存存储储器器系系统统:包包括括1624位位外外接接存存储储器器接接口口、片片内内的的程程序序ROM、片片内内的的单单访访问问的的数数据据RAM和和双双访访问的数据问的数据RAM;372.1.2TMS320C54x的主要特性CPU先进的多总线结构,具有1条程序存储器总线、3条数据存储器总线和4条地址总线;40位算术逻辑单元(ALU),包括40位的桶形移位寄存器和2个独立的40位的累加器;17位乘17位的并行乘法器与

42、一个40位的专用加法器结合在一起,用于单周期乘累加操作;比较、选择和存储单元(CSSU),用于Viterbi操作(一种通信的编码方式)中的加/比较选择;指数编码器用于在单周期内计算40位累加器的指数值;2个地址生成器,包括8个辅助寄存器和2个辅助寄存器算术单元。382.1.2TMS320C54x的主要特性续(2)存储器系统具有16位192K的基本可寻址空间:64K字程序空间,64K字数据和64K字的I/O空间;片内的存储器结构及容量根据芯片的型号有所不同(见表2-1)(3)在片外设和专用电路软件可编程等待状态产生器;可编程的存储器体转换逻辑;片内的锁相环(PLL)时钟发生器,可采用内部振荡器或

43、外部的时钟源;外部总线关断控制电路可用来断开外部数据总线、地址总线和控制信号;数据总线具有数据保持特性;可编程的定时器;直接存储器访问(DMA)控制器;可与主机直接连接的8位并行主机接口(HPI),有些产品(见表2-1)还包括:扩展的8位并行主机接口(HPI8)和16位并行主机接口(HPIl6);片内的串口根据型号不同分以下类型(见表2-1):全双工的标准串口,支持8位和16位数据传送、时分多路(TDM)串口、缓冲串口(BSP)以及多通道缓冲串口(McBSP)。392.1.2TMS320C54x的主要特性续(4)片内的引导功能除TMS320C5420外,所有的芯片都具有片内的引导功能,能从片外

44、的存储器将程序引导装入指定的存储器位置。(5)指令系统单指令重复和块重复操作指令;用于程序和数据管理的存储器块传送指令;32位长操作数指令;同时读入2个或3个操作数的指令;并行存储和装入的算术指令;条件存储指令;快速从中断返回的指令;具有延迟转移和调用指令;指令的执行采用指令预提取、指令提取、指令译码、访问操作数、读取操作数、执行等6级流水线并行结构,大大提高了指令的执行速度。402.1.2TMS320C54x的主要特性续(6)执行速度单指令周期时间分为:25/20/15/12.5/10ns;每秒指令数:40/50/66/80/100/200MIPS。(7)电源和功耗可采用5V,3.3V,3.

45、3V和1.8或2.5V的超低电压供电,在型号中分别用C、LC、UC和VC指明,如,TMS320C54x,TMS320LC54x和TMS320UC54x;可采用功耗下降指令IDLE1,IDLE2和IDLE3控制芯片的功耗;可控制禁止CLKOUT信号。(8)片内的仿真功能具有符合IEEE1149.1标准的在片仿真接口,可与主机连接,用于系统芯片开发应用。412.2总线结构422.2总线结构C54x片内有片内有8条条16位总线:位总线:4条程序数据总线和条程序数据总线和4条地址总线。条地址总线。3组组数数据据总总线线(CB、DB和和EB):CB和和DB传传送送读读自自数数据据存存储储器器的的操作数,

46、操作数, EB传送写到存储器的数据。传送写到存储器的数据。CB:双数据读、长数据读(:双数据读、长数据读(32位)读高位)读高16位位DB:单数据读、双数据读、长数据(单数据读、双数据读、长数据(32位)读低位)读低16位、外设读位、外设读4组组地地址址总总线线(PAB、CAB、DAB和和EAB):传传送送执执行行指指令令所所需需的的地址。地址。C54x还还有有一一条条在在片片双双向向总总线线,用用于于寻寻址址片片内内外外围围电电路路。这这条条总总线线通通过过CPU接接口口中中的的总总线线交交换换器器连连到到DB和和EB。利利用用这这个个总总线线读读/写,需要写,需要2个或个或2个以上周期,具

47、体时间取决于外围电路的结构。个以上周期,具体时间取决于外围电路的结构。程序总线程序总线(PB):传送取自程序存储器的指令代码和立即操作数。:传送取自程序存储器的指令代码和立即操作数。432.3存储器系统C54x总的基本存储空间为总的基本存储空间为192 K字,分成字,分成3个可选择的存储空间:个可选择的存储空间:64K字的程序存储空间:字的程序存储空间:64 K字的数据存储空间:字的数据存储空间:64 K字的字的IO空间:空间:存放要执行的指令和执行中要用到的系数表存放要执行的指令和执行中要用到的系数表存放各种数据存放各种数据用于映射外围设备接口用于映射外围设备接口每每64K字可分为字可分为5

48、12页,每页页,每页128字字。在在C54x中,片内存储器的型式有中,片内存储器的型式有RAM和和ROM两种两种。其中。其中RAM又可分为两种类又可分为两种类型:单访问型:单访问RAM(SARAM)和双访问)和双访问RAM(DARAM)片内片内ROM: 片内片内ROM是程序存储器空间的一部分,有时部分也可用作数据是程序存储器空间的一部分,有时部分也可用作数据空间的一部分。各类器件的片内空间的一部分。各类器件的片内ROM容量不同,如表容量不同,如表2-3所列。所列。 片内双访问片内双访问RAM(DARAM):DARAM由几个块组成。由几个块组成。CPU可在一个周期内对同一可在一个周期内对同一DA

49、RAM块访问两次块访问两次: :进行进行两次读或一次读和一次写。两次读或一次读和一次写。DARAM总是会被总是会被映射映射到到数据空间数据空间,且主要,且主要用于用于存存储数据值;也可映射到储数据值;也可映射到程序空间程序空间,用于存储程序代码。,用于存储程序代码。 44存储器系统续片内单访问片内单访问RAM(SARAM)SARAM也是由几个块组成。一个也是由几个块组成。一个SARAM块在每个机器周期只可被访问一次,块在每个机器周期只可被访问一次,进行一次读或一次写。进行一次读或一次写。SARAM总是会被总是会被映射映射到到数据空间数据空间,且主要用于存储数据,且主要用于存储数据值;值;也可被

50、映射到也可被映射到程序空间程序空间,用于存储程序代码。用于存储程序代码。通过处理器工作方式状态寄存器通过处理器工作方式状态寄存器(PMST)(PMST)的的3个状态位个状态位MP/ MC 、OVLY位、位、DROM位位, ,可以控制存储器的配置:可以控制存储器的配置:OVLY位位 若若OVLY=1,则片内,则片内RAM安排到程序和数据空间;安排到程序和数据空间; 若若OVLY=0,则片内,则片内RAM只安排到数据存储空间。只安排到数据存储空间。DROM位位 当当DROM=1,则部分片内,则部分片内ROM安排到数据空间;安排到数据空间; 当当DROM=0,则片内,则片内ROM不安排到数据空间。不

51、安排到数据空间。 DROM的用法与的用法与MPMC 的用法无关。的用法无关。MP/MC位位若若MP/ MC =0,则片内,则片内ROM映射到映射到(安排到安排到)程序空间;程序空间; 若若MP/MC =1,则片内,则片内ROM不映射到不映射到(不安排到不安排到)程序空间。程序空间。45C5402的数据和程序存储器映射图,以及的数据和程序存储器映射图,以及MP/ 、OVLY和和DROM 3个状态位的关系:个状态位的关系:注意:若用户需要运行注意:若用户需要运行BOOT程序应选用微计算机模式程序应选用微计算机模式46C5402扩展程序存储器图(250)47C5402片内4K字ROM区间分配C540

52、2片内4K字ROM由TI公司定,不能用来存储用户程序483、存储器映射寄存器存储器映射寄存器有两种:存储器映射寄存器有两种:26个个CPU内部内部寄存器寄存器、片内、片内外设寄存器外设寄存器它们被映像在数据存储器的第它们被映像在数据存储器的第0页:页:0000H005FH地址段地址段:其其中中0000H001FH是是CPU寄寄存存器器地地址址,0020H005FH是是片片内内外设寄存器的地址。表外设寄存器的地址。表2-1 片内外设寄存器用于对片内外设片内外设寄存器用于对片内外设 的控制和存放数据,对它们操的控制和存放数据,对它们操作需要作需要2个机器周期。个机器周期。 名称地址说明IMR0中断

53、屏蔽寄存器IFR1中断标志寄存器ST06状态寄存器0ST17状态寄存器1表2-1存储器映象寄存器49名称地址说明AL8累加器A低16位AH9累加器A高16位AGAH累加器A最高8位BLBH累加器B低16位BHCH累加器B高16位BGDH累加器B最高8位TREGEH暂存器TRNFH状态转移寄存器AR0710H17H辅助寄存器SP18H堆栈指针BK19H循环缓冲大小BRC1AH块重复计数器RSA1BH块重复起始地址寄存器502.3.4I/O空间C54x有一个独立编址的有一个独立编址的I/O存储器空间。它是一存储器空间。它是一个个64K字的地址空间字的地址空间(0000hFFFFh),都在片,都在片

54、外。外。访问访问I/O是对是对I/O映射的外部器件进行访问映射的外部器件进行访问 只有两条指令可以对其寻址:只有两条指令可以对其寻址:PORTR(读读I/O设备)、设备)、PORTW(向(向I/O设备写)设备写)PORTR 1000H,*AR1PORTW *AR1,1000H512.4中央处理单元CPUCPU由以下几部分组成:由以下几部分组成: 40位算术逻辑运算单元位算术逻辑运算单元(ALU); 2个个40位累加器;位累加器; 桶形移位寄存器;桶形移位寄存器; 乘法器乘法器/加法器单元;加法器单元; 比较、选择和存储单元比较、选择和存储单元(CSSU); 指数编码器;指数编码器; CPU存储

55、器映射寄存器;存储器映射寄存器; 两个地址发生器;两个地址发生器;522.4.1 CPU状态和控制寄存器状态和控制寄存器C54x有有3个状态和控制寄存器:个状态和控制寄存器:状态寄存器状态寄存器0(ST0);状态寄存器状态寄存器1(STl);处理器工作方式状态寄存器处理器工作方式状态寄存器(PMST)。 1 1、状态寄存器、状态寄存器 ST0和和ST1 : ST0主要反映寻址要求和计算的中间运行状态。其各位定义如主要反映寻址要求和计算的中间运行状态。其各位定义如下:下:53ST0各位的含义ARP:辅助寄存器指针,用于间接寻址单操作数的辅助寄存器的选择。当DSP处于标准运行方式时(CMPT0),

56、ARP0。TC:测试控制标志。用来保存ALU的测试位操作结果。同时,可以由TC的状态(0或1)控制条件分支的转移和子程序调用,并判断返回是否执行。BC 2000H,TC(NTC);TC=1 或或 TC=0C:进位标志。加法进位时,置1。减法借位时,清0。当加法无进位或减法无借位的情况下,完成一次加法此标志位清0,完成一次减法此标志位置1。带16位移位操作的加法只能对它置位(有进位时),而减法只能清0(有借位时)。OVA:累加器A溢出标志。当ALU或乘/加运算的加法器发生溢出,且运算结果送入累加器A时,OVA置l。运算时一旦发生溢出,OVA将一直保持置位状态,直到硬件复位或软件复位后方可解除此状

57、态。(AOV或ANOV)OVB:累加器B溢出标志。当ALU运算结果送入累加器B且溢出时,OVB置1。运算时一旦发生溢出,OVB将一直保持置位状态,直到硬件复位或软件复位后方可解除此状态。(BOV或BNOV)54ST0各位含义续DP:数据存储器页指针。DP的9位数作为高位将指令中的低7位作为低位,结合形成16位直接寻址方式下的数据存储器地址。这种寻址方式要求STl中的编译方式位CPL0,DP字段可用LD指令加载一个短立即数或从数据存储器加载。ST1主要反映寻址要求、计算的初始状态设置、主要反映寻址要求、计算的初始状态设置、IO及中断控及中断控制制 。其各位定义如下:。其各位定义如下:例:例:LD

58、 #1 , DP55TMS320VC5402管脚图56ST1各位含义BRAF:块块重重复复操操作作标标志志。此此标标志志置置位位表表示示正正在在执执行行块块重重复复操操作作指指令令。此此位位清清零表示没有进行块操作。零表示没有进行块操作。CPL:直直接接寻寻址址编编辑辑方方式式标标志志位位,标标志志直直接接寻寻址址选选用用何何种种指指针针。此此位位置置位位CPL1表表示示选选用用堆堆栈栈指指针针(SP)的的直直接接寻寻址址方方式式。此此位位清清零零CPL0表表示示选选用用页页指指针针(DP)的直接寻址方式。的直接寻址方式。XF:XF引引脚脚状状态态控控制制位位,控控制制XF通通用用外外部部IO

59、引引脚脚输输出出状状态态。可可通通过过软软件件置位或清零控制置位或清零控制XF引脚输出电平。引脚输出电平。HM:芯芯片片响响应应HOLD信信号号时时,CPU保保持持工工作作方方式式标标志志。此此位位置置位位表表示示CPU暂暂停停内内部部操操作作。此此位位清清零零标标志志CPU从从内内部部处处理理器器取取指指继继续续执执行行内内部部操操作作,外外部部地地址、数据线挂起,呈高阻态。址、数据线挂起,呈高阻态。INTM:中中断断方方式式控控制制位位。此此位位置置位位(INTM1由由SSBX指指令令)关关闭闭所所有有可可屏屏蔽蔽中中断断。此此位位清清零零(INTM0由由RSBX指指令令)开开放放所所有有

60、可可屏屏蔽蔽中中断断。此此位位不不影影响响不不可屏蔽中断可屏蔽中断RS、NMI。此位不能用存储器操作设置。此位不能用存储器操作设置。 0:保留。:保留。57ST1各位含义OVM:溢出方式位。此位确定溢出时,累加器内容加载方式。当运算结果产生溢出时,将按如下方式进行处理:(1)如果OVM=0,则累加器直接加载ALU的实际运算结果而不对其修改。(2)如果OVM=1,则累加器不加载ALU的结果,而是当ALU运算发生正数溢出时,目的累加器加载最大正32位值(007FFFFFFFH);发生负数溢出时加载最小的负32位值(FF80000000H)。这称为溢出处理。此位可由指令SSBX和RSBX置位或清零。

61、SXM:符号扩展方式位,用以确定符号位是否扩展。此位置位SXM1表明数据进入ALU之前进行符号位扩展。此位清零SXM0表示数据进入ALU之前符号位禁止扩展。此位可由指令SSBX和RSBX置位或清零。C16:双16位双精度算术运算方式控制位。此位置位C161表示ALU工作于双16位算术运算方式。此位清零C160表示ALU工作于双精度算术运算方式。FRCT:小数方式控制位。此位置位FRCT1乘法器输出自动左移1位,消去多余的符号位。58ST1各位含义CMPT:间接寻址辅助寄存器修正方式控制位。此位置位CMPT1,除AR0外,当间接寻址单个数据存储器操作数时,可通过修正ARP内容改变辅助寄存器ARl

62、一AR7的值。此位清零CMPT0,ARP必须清零,且不能修正。注意:注意:1、对、对ST0、ST1中某一位若可以复位或置位均可用指令中某一位若可以复位或置位均可用指令 RSBX 和和 SSBX。 2、对其中几位赋值均可用、对其中几位赋值均可用LD指令,如指令,如 LD #立即数,立即数,DP(ASM,IPTR)例例:LD #15,ASM 3、亦可随整个寄存器操作,用指令、亦可随整个寄存器操作,用指令STM,如如 STM #立即数,立即数,MMRASM:累加器移位方式位。占5位,规定一个从-16至15的移位数(2的补码),可以用LD指令(短立即数)对ASM加载。59微处理器微处理器/微型计算机工

63、作方式位微型计算机工作方式位MP/MCMP/MC0:微计算机模式,允许使能并寻址片内ROMMP/MC1:微处理器模式,不能利用片内ROM复位时,采样MP/MC引脚上的逻辑电平,并且将MP/MC位置成此值。直到下一次复位,不再对MP/MC引脚再采样。RESET指令不影响此位。MP/MC位也可以用软件的办法置位或复位。处理器工作模式状态寄存器PMSTIPTR:中断向量指针;指示中断向量所驻留的128字程序存储器的位置。在自举加载操作情况下,用户可以将中断向量重新映象到RAM。复位值名称位0000MP/MC引脚值1FFHSSTSMULCLKOFFDROMAVISOVLYMP/MCIPTR012345

64、615-7无效无效60处理器工作模式状态寄存器PMST续OVLY:RAM重复占位位。OVLY可以允许片内双寻址数据RAM块映射到程序空间。OVLY0只能在数据空间而不能在程序空间寻址在片RAMOVLY1片内RAM可以映象到程序空间和数据空间,但是数据页0(0h7Fh)不能映象到程序空间AVSI:地址可见位。AVIS允许/禁止在地址引脚上看到内部程序空间的地址线。AVIS=0,外部地址线不能随内部程序地址一起变化。控制线和数据不受影响,地址总线受总线上的最后一个地址驱动。AVIS=1,让内部程序存储空间地址线出现在C54X的引脚上,从而可以跟踪内部程序地址。而且,当中断向量驻留在片内存储器时,可

65、以连同IACK引脚一起对中断向量译码61处理器工作模式状态寄存器PMST续DROM:数据ROM位。DROM可以让片内ROM映象到数据空间。DROM位的值为:DROM=0片内ROM不能映象到数据空间DROM=1片内ROM的一部分映象到数据空间CLKOFF:CLKOUT时钟输出关断位。当CLKOFF1时,CLKOUT的输出被禁止,且保持为高电平SMUL:乘法饱和方式位。SST:存储饱和位仅LP器件有这两个状态位,所有其它器件上此位均为保留位。622.4.2算术逻辑单元ALUX输入端的数据:输入端的数据:移移位位器器的的输输出出(32位位或或16位位数数据据存存储储器器操操作作数数以以及累加器中的数

66、值,经移位器移位后输出及累加器中的数值,经移位器移位后输出)。来自数据总线来自数据总线DB的数据存储器操作数。的数据存储器操作数。Y输入端的数据:输入端的数据:累加器累加器A中的数据。中的数据。累加器累加器B中的数据。中的数据。来自数据总线来自数据总线CB的数据存储器操作数。的数据存储器操作数。T寄存器中的数据寄存器中的数据。ALU控制信号:控制信号:SXM:当状态寄存器当状态寄存器STl的的SXM0时,则不包含数据存时,则不包含数据存储器操作数的位添储器操作数的位添0;当;当SXM1时,则不包含数据存储器时,则不包含数据存储器操作数的位进行符号位扩展。操作数的位进行符号位扩展。指令指令:SS

67、BX SXM RSBX SXMC16C16:状态寄存器状态寄存器STl的的C16=1=1,ALU在单个周期内可以进行在单个周期内可以进行特殊的双特殊的双16位算术运算。位算术运算。OVM:OVM:OVM=0OVM=0,则累加器直接加,则累加器直接加载载ALUALU的结果。的结果。OVM=1OVM=1,则则根根据据溢溢出出方方向向,用用3232位位最最大大正正数数 00 00 7FFFFFFFh7FFFFFFFh( (正正向向溢溢出出) )或或绝绝对对值值最最大大的的负负数数FF FF 80000000h(80000000h(负负向向溢溢出出) )加加载累加器。载累加器。溢出发生后,相应的溢出标

68、志溢出发生后,相应的溢出标志位位(OVA(OVA或或OVB)OVB)置置1 1,直到复位,直到复位或执行溢出条件指令或溢出标或执行溢出条件指令或溢出标志位志位(OVA/OVB)(OVA/OVB)被清除。被清除。 632.4.3累加器累加器A和和B累加器A和B都可以配置成乘法器/加法器或ALU的目的寄存器。40位的累加器A、B可以分成三部分分别映射在数据存储空间的0页:AL:8H,AH:9H,AG:AHBL:BH,BH:CH,BG:DH1、累加器的作用:累加器A和B都可以配置成乘法器/加法器或ALU的目的寄存器。提供ALU的另一个输入可作为乘法器(只有A)/加法器的输入AGAHAL39-32 3

69、1-16 15-0ABGBHBL39-32 31-16 15-0B安全位安全位 高字高字 低字低字2、A、B操作:AL、AH、AG、BL、BH、BG都可以用PSHM、POPM指令进行堆栈操作。A、B装载数据装载数据可用LD指令A、B数据保存保存可以利用STH、STL、STLM和SACCD等指令或者用并行存储指令。在存储前可以对累加器的内容进行移位操作。右移时,AG和BG中的各数据位分别移至AH和BH;左移时,AL和BL中的各数据分别移至AH和BH,低位添0。64累加器内容的保存一、把累加器高字保存到数据存储器中的指令STH(1)STHsrc,Smem(2)STHsrc,ASM,Xmem(3)S

70、THsrc,SHFT,Xmem(4)STHsrc,SHIFT,Smem其中:src:A为累加器A,B为累加器BSmem:单数据存储器操作数;Xmem:双数据存储器操作数0SHFT15;-16SHIFT15执行:(1)(src(31-16)保存到Smem(2)(src)(ASM-16)保存到Smem(3)(src)(SHFT-16)保存到Xmem(4)(src)(SHIFT-16)保存到Smem二、把累加器的低字保存到数据存储器中的指令STL(1)STLsrc,Smem(2)STLsrc,ASM,Xmem(3)STLsrc,SHFT,Xmem(4)STLsrc,SHIFT,Smem65累加器内容

71、的保存续累加器内容的保存续例如:假设累加器AFF43211234h,执行带移位的STH和STL指令后,数据存储单元TEMP中的结果如下:STH A,8,TEMP ;TEMP=2112hSTH A,-8,TEMP ;TEMP=FF43hSTL A,8,TEMP ; TEMP=3400hSTL A,-8,TEMP ;TEMP=2112hLD #1234,APSHM APOPM A累加器移位和循环移位累加器移位和循环移位累加器移位或循环移位的指令共有如下6条:SFTA(算术移位算术移位)SFTL(逻辑移位逻辑移位)SFTC(条件移位条件移位)ROL(累加器循环左移累加器循环左移)ROR(累加器循环右

72、移累加器循环右移)ROLTC(累加器带累加器带TC位循环左移位循环左移)662.4.4桶形移位器桶桶形形移移位位器器(40位位)用用来来为为输输入入的的数据进行定标,可以进行以下操作:数据进行定标,可以进行以下操作:ALU运运算算前前,对对来来自自数数据据存存储储器器的的操作数或者累加器的值进行定标;操作数或者累加器的值进行定标;对累加器的值进行算术或逻辑移位;对累加器的值进行算术或逻辑移位;对累加器归一化处理;对累加器归一化处理;对对累累加加器器的的值值存存储储到到数数据据存存储储器器之之前进行定标前进行定标。40位桶形移位器的输入端来自:位桶形移位器的输入端来自:DB,取得,取得16位输入

73、数据;位输入数据;DB和和CB,取得,取得32位输入数据;位输入数据;40位累加器位累加器A或或B。40位桶形移位器的输出端接至:位桶形移位器的输出端接至:ALU的一个输入端;的一个输入端;经过经过MSW/LSW(最高有效字最高有效字/最低有效最低有效字字)写选择单元至写选择单元至EB总线。总线。 672.4.4桶形移位器续桶形移位寄存器的控制:1、操作数带符号位不带符号位扩展控制:ST1寄存器的SXM位:当SXM1时,执行符号位扩展。2、移位位数的控制:指令中的移位数就是移位的位数。正值表示左移,负值表示右移。移位数可以用以下方式定义:指令操作数中给定的一个4或5位的立即数值表示一个移位数值

74、,范围为(-1615)。状态寄存器STl的累加器移位方式(ASM)位,共5位,表示一个范围为-1615的移位数。T寄存器中最低6位的数值表示一个范围为-1631的移位数。例如:ADDA,-4,B;累加器A右移4位后加到累加器BADDA,ASM,B;累加器A按ASM规定的移位数移位后加到累加器BNORMA ;按T寄存器中的数值对累加器归一化 682.4.5乘法器/加法器单元硬件乘法器是硬件乘法器是17位位*17位,它与一个位,它与一个40位专用加法器相连。乘法器位专用加法器相连。乘法器/加法器加法器单元可以在一个流水线状态周期内完成一次乘法累加单元可以在一个流水线状态周期内完成一次乘法累加(MA

75、C)运算。运算。 乘法器能够实现如下方式乘法运算:乘法器能够实现如下方式乘法运算:有符号数乘法,每个有符号数乘法,每个16位操作数扩展成位操作数扩展成17位有符号数;位有符号数;无符号数乘法,每个无符号数乘法,每个16位操作数前面加一个位操作数前面加一个0;无符号数与有符号数,一个无符号数与有符号数,一个16位操作数前面加一个位操作数前面加一个0,另一个,另一个16位操作位操作数符号扩展成数符号扩展成17位有符号数。相乘运算。位有符号数。相乘运算。692.4.5乘法器/加法器单元乘法器的输入信号:乘法器的输入信号:乘乘法法器器的的输输入入端端包包括括输输入入端端XM和和输输入端入端YM。输入端

76、输入端XM数据来自:数据来自: T寄存器。寄存器。 累加器累加器A的位的位3216。 DB总总线线传传送送过过来来的的数数据据存存储储器器操操 作数。作数。输入端输入端YM的数据来自:的数据来自: 累加器累加器A的位的位3216 由由DB总总线线和和CB总总线线传传送送过过来来的的数据存储器操作数数据存储器操作数 由由PB总总线线传传送送过过来来的的程程序序存存储储器器操作数。操作数。 乘法器的输出:乘法器的输出:乘乘法法器器的的输输出出加加到到加加法法器器的的输输入入端端XA,累累加加器器A或或B则则是是加加法法器器的的另另一一个个输输入入。最最后后结结果果送送往往目目的的累累加加器器A或或

77、B。702.4.5乘法器/加法器单元乘法器乘法器/加法器的控制:加法器的控制:1 1、乘法器工作控制:、乘法器工作控制:状态寄存器状态寄存器STlSTl中的小数方式位中的小数方式位FRCTFRCT1 1时,小数相乘方式,时,小数相乘方式,乘法结果左移乘法结果左移1 1位,以消去多余的符号位。位,以消去多余的符号位。FRCT=0FRCT=0时,整数相乘方式。时,整数相乘方式。2 2、乘法运算的饱和处理、乘法运算的饱和处理 :当当SMULSMUL1 1时,在用时,在用MACMAC或或MASMAS指令进行累加以前,对乘法结果作饱和处理。指令进行累加以前,对乘法结果作饱和处理。仅当仅当OVM=1OVM

78、=1和和FRCTFRCT1 1时,时,SMULSMUL位才起作用位才起作用 3 3、加法运算的饱和处理、加法运算的饱和处理 :当当OVMOVM1 1时,在用时,在用MACMAC或或MASMAS指令进行累加以后,对加法结果作饱和处理,然后保指令进行累加以后,对加法结果作饱和处理,然后保存到累加器存到累加器A A或或B B。ALU运算发生正数溢出,目的累加器置成正的最大值运算发生正数溢出,目的累加器置成正的最大值(007FFFFFFFH);发生负;发生负数溢出置成负的最大值数溢出置成负的最大值(FF80000000H)如果发生溢出则如果发生溢出则ST1的的OVA位或位或OVB位置位置1。4 4、乘

79、加结果的舍入、乘加结果的舍入( (圆整)处理:圆整)处理:如如MACMAC、MASMAS等指令,如果带后缀等指令,如果带后缀R R,就对结果进行舍入处理,即加,就对结果进行舍入处理,即加2 21515至结果,并至结果,并将目的累加器的低将目的累加器的低1616位清位清0 0。71两个定点小数相乘两个Q15的定点数相乘后得到一个带2个符号位的Q30的数。例如:十进制乘法0.50.5=0.25当二进制数相乘时0.100000000000000;Q150.100000000000000;Q1500.010000000000000000000000000000=0.25;Q30(32位)符号位在结果保

80、存时一般只保存与输入数据相同的精度的结果即可,也就是只保存高16位即可,但DSP乘法运算结果的高16位中包含了2个符号位,也即高16位是1个带有2个符号位的Q14的数,从而其精度将损失1位。因此在保存乘法运算结果的高1 6位 时 , 应 将 乘 积 左 移 一 位 。 72练习1、LD#0CH,4,A写出SXM=0和SXM=1两种情况下,指令执行后A中的值。2、LD#0C000H,A写出SXM=0和SXM=1两种情况下,指令执行后A中的值。73练习答案1、LD#000CH,4,A写出SXM=0和SXM=1两种情况下,指令执行后A中的值。答:SXM=0时,A=00000000C0HSXM=1时,

81、A=00000000C0H2、LD#0C000H,A写出SXM=0和SXM=1两种情况下,指令执行后A中的值。答:SXM=0时,A=000000C000HSXM=1时,FFFFFFC000H742.4.6比较、选择和存储单元CSSU可可对对累累加加器器的的高高位位字字和和低低位位字字进进行行比比较较,使使状状态态寄寄存存器器ST0中中的的测测试试位位/控控制制标标志志位位(TC)和和转转移移寄寄存存器器TRN保保持持传传送送纪纪录录状状态态,并并选选取取累累加加器器中中最最大的数送至数据存储器中。加速大的数送至数据存储器中。加速Viterbi蝶形运算。蝶形运算。从左图可见从左图可见CMPS指令

82、只能对指令只能对A或或B累累加器操作。加器操作。例如:例如:CMPS B ,*AR3+;if(B(31-16)B(15-0) then;B(3116)(*AR3);TRN1;0TRN(0);0TC;Else B(150)(*AR3);TRN1;1TRN(0);1TC752.4.7 指数编码器指数编码器指数编码器是一个专用硬件,专门用于在单个周期内执行指数编码器是一个专用硬件,专门用于在单个周期内执行EXP指令,并将累加指令,并将累加器中数的指数值以器中数的指数值以2的补码形式的补码形式(-831)存放到存放到T寄存器中。寄存器中。 例如:例如:LD #5H,AEXP A ;(冗余符号位冗余符号

83、位-8)T寄存器寄存器, ;冗余符号位;冗余符号位=40-除冗余符号位的有效位除冗余符号位的有效位,T=001CH(28)NORM A ;对累加器归一化;对累加器归一化(A按按T中值移位中值移位,左移左移28位位) ;A=00 5000 0000HEXP指令:将指令:将累加器的内容取指数值,也就是为消累加器的内容取指数值,也就是为消去多余符号位而将累加器中的数值左移的位数。结去多余符号位而将累加器中的数值左移的位数。结果以补码形式存入果以补码形式存入T T寄存器(寄存器(BIT0-5BIT0-5),其值的范围),其值的范围为为-16-16到到3131) 针对编码器有两条指令:针对编码器有两条指

84、令:EXP指令和指令和NORM指令指令NORM指令:对累加器归一化指令:对累加器归一化(累加器按累加器按T中值移位)中值移位)762.4.8地址发生器地址发生器C54X有两个地址发生器:程序地址发生器、数据地址发生器。有两个地址发生器:程序地址发生器、数据地址发生器。1、数据地址发生器:、数据地址发生器:数据地址发生器为存入数据存储器的信息操作产生地址。数据地址发生器为存入数据存储器的信息操作产生地址。组成:组成:AR0-AR7八个辅助寄存器八个辅助寄存器 ARAU0和和ARAU1辅助寄存器算术单元辅助寄存器算术单元 (可在每个周期产生两个数据存储器地址)(可在每个周期产生两个数据存储器地址)

85、 BK循环缓冲寄存器循环缓冲寄存器 ST1的的bit(15-13)ARP用于选择辅助寄存器用于选择辅助寄存器AR0-AR7 DP数据存储器页指针数据存储器页指针 SP堆栈指针寄存器堆栈指针寄存器用于直接寻址方式用于直接寻址方式用于用于间接间接寻址寻址方式方式772.4.8地址发生器续地址发生器续程序地址发生器程序地址发生器 :为程序存储器的信息操作产生地址。为程序存储器的信息操作产生地址。组成:组成:PAGEN共有共有6个寄存器:个寄存器:程程序序计计数数器器(PC):PC中中保保存存的的某某个个内内部部或或外外部部程程序序存存储储器器的的地地址址,就就是是即即将将取指的某条指令、某个取指的某

86、条指令、某个16位立即操作数或系数表在程序存储器中的地址。位立即操作数或系数表在程序存储器中的地址。重复计数器重复计数器(RC):内容为重复指令内容为重复指令RPT后边的操作数(自动装载)。后边的操作数(自动装载)。RPT n块重复计数器块重复计数器(BRC):设置程序代码块重复执行的次数。设置程序代码块重复执行的次数。 STM #立即数,立即数,BRC块重复起始地址寄存器块重复起始地址寄存器(RSA): 块重复指令块重复指令RPTB后边第一条指令的地址(自动装载)后边第一条指令的地址(自动装载)块重复结束地址寄存器块重复结束地址寄存器(REA):内容为块重复指令内容为块重复指令RPTB的操作

87、数(自动装载)的操作数(自动装载) REA装入的同时,装入的同时,ST1(BIT15)BRAF=1 。RPTB pmad扩扩展展程程序序计计数数器器(XPC):用用以以寻寻址址扩扩展展的的程程序序存存储储空空间间。 C548以以上上的的芯芯片片有,有有,有6条专用扩展程序空间寻址指令条专用扩展程序空间寻址指令FB extpmad; extpmad (15-0)PC, extpmad (19-16)XPC 用于块重用于块重复操作复操作78加载加载PC的几种途径的几种途径操操 作作加载到加载到PC的地址的地址复位复位PCFF80h顺序执行指顺序执行指令令PCPC+1分支转移分支转移用紧跟在分支转移

88、指令后面的用紧跟在分支转移指令后面的16位立即数加载位立即数加载PC由累加器分由累加器分支转移支转移用累加器用累加器A或或B的低的低16位加载位加载PC块重复循环块重复循环假如假如BRAF1(块重复有效块重复有效),当,当PC+1等于块重复结束地等于块重复结束地址址(REA)+1时,将块重复起始地址时,将块重复起始地址(RSA)加载加载PC子程序调用子程序调用将将PC+2压入堆栈,并用紧跟在调用指令后面的压入堆栈,并用紧跟在调用指令后面的16位立即数加载位立即数加载PC。返回指令将栈顶弹出至。返回指令将栈顶弹出至PC,回,回到原先的程序处继续执行到原先的程序处继续执行从累加器调从累加器调用子程

89、序用子程序将将PC+1压入堆栈,用累加器压入堆栈,用累加器A或或B的低的低16位加载位加载PC。返。返回指令将栈顶弹出至回指令将栈顶弹出至PC,回到原先的程序处继续执行,回到原先的程序处继续执行792.5片内外设C54xC54x 片内外设包含如下几部分:片内外设包含如下几部分:外部总线操作;外部总线操作;通用通用I/OI/O口口( (引脚引脚) );定时器;定时器;时钟发生器;时钟发生器;主机接口;主机接口;同步串行接口;同步串行接口;时分复用串行接口时分复用串行接口(TDM)(TDM); 软件可编程等待状态发生器;软件可编程等待状态发生器;可编程存储器组切换模块。可编程存储器组切换模块。JT

90、AG接口接口802.5.1通用I/O口通用通用I/O口有两个:跳转控制输入引脚口有两个:跳转控制输入引脚BIO和外部标志输出引脚和外部标志输出引脚XF 跳转控制输入引脚跳转控制输入引脚BIO :该该引脚可用于监视外部接口器件的状态引脚可用于监视外部接口器件的状态 。程序可以根据的引脚程序可以根据的引脚BIO输入状态有条件地跳转输入状态有条件地跳转 用于对时间要求严格的循环中,用于对时间要求严格的循环中, 在其执行时不能够被外部中断打断的时候在其执行时不能够被外部中断打断的时候 条件执行指令:条件执行指令: XC n,BIO;如果引脚;如果引脚BIO为低电平(条件满足),则执行后面的一条单为低电

91、平(条件满足),则执行后面的一条单字指令或一条双字指令或字指令或一条双字指令或2条单字指令。条单字指令。(n=1 or 2)(n=1 or 2) 外部标志输出引脚外部标志输出引脚XFXF外部标志输出引脚外部标志输出引脚XF可以用于向外部接口器件发出信号。可以用于向外部接口器件发出信号。XF信号可以由软件控制。通过对信号可以由软件控制。通过对STl(bit13)中的中的XF位置位置1或清或清0 0, XF引脚输引脚输出为高电平和低电平,亦即出为高电平和低电平,亦即CPU向外部发出向外部发出1和和0信号。信号。 执行指令:执行指令: SSBX XF ;对对XF置位置位 RSBX XF ;对;对XF

92、复位复位812.5.2 2.5.2 定时器定时器 片片内内硬硬件件定定时时器器是是软软件件可可编编程程的的,可可用用于于周周期期性性的的产产生生中中断断。定定时时器器可可以以用用来产生外部接口电路的采样时钟,如模拟接口。来产生外部接口电路的采样时钟,如模拟接口。 它包含三个存储器映射寄存器:它包含三个存储器映射寄存器: TIM定时寄存器(定时寄存器(0024H):加载定时值,):加载定时值,减减1计数器计数器 ; 30H PRD定时周期寄存器(定时周期寄存器(0025H):):存放定时时间常数存放定时时间常数 ; 31H TCR定时器控制寄存器(定时器控制寄存器(0026H):):存储定时器的

93、控制及状态位存储定时器的控制及状态位; 32H 32H15-1211109-6543-0保留softfreePSCTRBTSSTDDR预定标定时器重新加载位定时器停止状态位定时器分频系数TCR定时器控制寄存器各位含义:定时器控制寄存器各位含义:54x的的特特点点是是有有一一个个带带4位位预预定定标标器器PSC(等等于于TRC中中的的TDDR bit0-3)的的16位的定时器。位的定时器。预预定定标标器器PSC:定定时时分分频频系系数数,对对片片内内定定时时器器的的输输入入时时钟钟(CLKOUT)分分频频. 由由TRC中的中的TDDR (bit0-3)加载。加载。822.5.2 2.5.2 定时

94、器定时器定时器的工作过程:定时器的工作过程:定时器的基准工作脉冲由定时器的基准工作脉冲由CLKOUT提供,每来一个脉冲,预定标提供,每来一个脉冲,预定标计数器计数器PSC减减1,当,当PSC减至减至0,下一个脉冲到来时,下一个脉冲到来时,PSC产生借产生借位。借位信号分别控制定时计数器位。借位信号分别控制定时计数器TIM减减1和重新将和重新将TDDR的内容的内容加载预定标计数器加载预定标计数器PSC,每次定时计数器,每次定时计数器TIM 减为减为0 0时产生定时时产生定时中断中断TINT, 同时重新用同时重新用PRD值装载值装载TIM 。 定时器的基本定时时间可由下式计算:定时器的基本定时时间

95、可由下式计算: 定时周期定时周期CLKOUT(TDDR+1)(PRD+1) 当系统复位时,当系统复位时,TIMTIM和和PRDPRD都为都为FFFFHFFFFH,TCR TCR 中的中的TDDRTDDR全部清零。全部清零。当使用定时器时,必须对其进行初始化当使用定时器时,必须对其进行初始化 。83定时器的使用初始化定时器的步骤如下:初始化定时器的步骤如下: 对寄存器对寄存器TCR中的中的TSS位置位置1,停止定时器工作;,停止定时器工作; 装入装入TIM初值;初值; 装入装入PRD初值;初值; 装装入入TCR初初始始化化TDDR和和启启动动定定时时器器;使使TSS清清0使使能能定定时时器器,使

96、使TRB置位,重新装入定时初值。置位,重新装入定时初值。 对对IFR中的中的TINT位置位置1,可以清除挂起,可以清除挂起(尚未处理完的尚未处理完的)定时中断;定时中断; 对对IMR中的中的TINT位置位置1,使能定时器中断;,使能定时器中断; 使使ST1状态寄存器状态寄存器INTM位清位清0,开放所有的中断。,开放所有的中断。 84定时器的使用用定时器可以实现放波发生器、脉冲频率监测器、周期信号周期监测等功能。用定时器可以实现放波发生器、脉冲频率监测器、周期信号周期监测等功能。ORM #0010h,TCR0 ;停止定时器;停止定时器0 STM #799,TIM0 STM #799,PRD0

97、STM #K_TCR0,TCR0 ;启动定时器;启动定时器0中断中断;TCR0=0269H ST #0FFFFh,IFR ;初始化中断;初始化中断 ORM #0008h,IMR RSBX INTM例如:用定时器设计一个周期为例如:用定时器设计一个周期为4ms的方波信号发生器。的方波信号发生器。假假设设DSP主主频频为为4MHZ(TCLKOUT=250ns), 方方波波信信号号周周期期为为4ms,那那么么定定时时中中断断周期应为周期应为T=2MS,每中断一次,输出端电平取反一次。每中断一次,输出端电平取反一次。定定 时时 中中 断断 周周 期期 T=TCLKOUT*(TDDR+1)*(PRD+1

98、), 假假 设设 TDDR=9,那那 么么PRD=799(031FH).15-1211109-6543-0保留保留softfreePSCTRBTSSTDDR预定标预定标定时器重新加载定时器重新加载1定时器停止状态定时器停止状态1定时器分频系数定时器分频系数85;K_TCR0设置定时器设置定时器0控制寄存器的内容控制寄存器的内容K_TCR0_SOFT .set 0b11K_TCR0_FREE .set 0b10K_TCT0_PSC .set 1001b6K_TCT0_TRB .set 1b5K_TCT0_TSS .set 0b4K_TCT0_TDDR .set 1001bPROMPAGE0.te

99、xt:PROMPAGE0.data:DRAMPAGE1.bss:DRAMPAGE11512.6中断系统C54x DSP既支持既支持软件中断软件中断,也支持,也支持硬件中断硬件中断:1、软件中断软件中断:由程序指令(:由程序指令(INTR、TRAP或或RESET)请求的中断。)请求的中断。2、硬件中断硬件中断:由物理设备信号请求的中断,他有两种形式:由物理设备信号请求的中断,他有两种形式:受外部中断口信号触发的外部硬件中断。受外部中断口信号触发的外部硬件中断。 受片内外设信号触发的内部硬件中断。受片内外设信号触发的内部硬件中断。一、中断分类一、中断分类分成如下两大类:分成如下两大类:可屏蔽中断可

100、屏蔽中断和和不可屏蔽中断。不可屏蔽中断。1 1、可屏蔽中断可屏蔽中断:可以用软件来屏蔽或使能的中断:可以用软件来屏蔽或使能的中断 C54x DSPC54x DSP最多可以支持最多可以支持1616个用户可屏蔽中断,例如个用户可屏蔽中断,例如C5402C5402只使用只使用1414个可屏蔽个可屏蔽中断。这中断。这1414个中断的硬件名称为:个中断的硬件名称为: RINT0 RINT0、XINT0XINT0、RINT1RINT1和和XINT1XINT1(串行口中断)(串行口中断) TINT0 TINT0、TINT1TINT1(定时器中断)(定时器中断) HPINT HPINT、DMAC0DMAC0、

101、 DMAC4、DMAC5DMAC52 2、非屏蔽中断非屏蔽中断:这些中断是不能够屏蔽的。包括所有的软件中断,以及两个外:这些中断是不能够屏蔽的。包括所有的软件中断,以及两个外部硬件中断(部硬件中断( 复位和复位和 )。)。 152153C5402中断源的中断向量及硬件中断优先权154155二、中断标志寄存器(二、中断标志寄存器(IFR)中断标志寄存器中断标志寄存器: :是一个存储器映射的是一个存储器映射的CPU寄存器寄存器,每个,每个可屏蔽中断可屏蔽中断在在IFRIFR中有其中有其相应的中断标志位,当相应的中断标志位,当CPUCPU接收到可屏蔽中断请求时,接收到可屏蔽中断请求时,IFRIFR相

102、应的位置相应的位置1 1。直到。直到CPU响应该中断为止。响应该中断为止。 将中断标志清将中断标志清0 的的4种方法种方法:C54x DSP复位(复位( 引脚为低电平)。引脚为低电平)。中断得到处理。中断得到处理。将将1写到写到IFR中的适当位(相应的位变为中的适当位(相应的位变为0),相应的尚未处理的中断被清除。),相应的尚未处理的中断被清除。利用合适的中断号执行利用合适的中断号执行INTR指令。指令。156三、中断屏蔽寄存器(三、中断屏蔽寄存器(IMR)中断屏蔽寄存器(中断屏蔽寄存器(IMR): :是一个存储器映射的是一个存储器映射的CPU寄存器,用寄存器,用来屏蔽外部和内部的来屏蔽外部和

103、内部的可屏蔽中断可屏蔽中断。如果状态寄存器如果状态寄存器ST1中的中的INTM位位=1,IMR无效。无效。当当ST1中的中的INTM位位=0时,时, IMR寄存器中的某一位为寄存器中的某一位为1,就使,就使能相应的中断。用户可以对能相应的中断。用户可以对IMR寄存器进行读写操作。寄存器进行读写操作。 157四、四、处理中断的步骤处理中断的步骤C54x DSP处理中断分如下三个步骤:处理中断分如下三个步骤:1、接收中断请求、接收中断请求通通过过软软件件(程程序序代代码码)或或硬硬件件(引引脚脚或或片片内内外外设设)请请求求挂挂起起主主程程序。序。如如果果中中断断源源正正在在请请求求一一个个可可屏

104、屏蔽蔽中中断断,则则当当中中断断被被接接收收到到时时中中断断标标志志寄寄存存器器(IFR)的相应位被置)的相应位被置1。(1)(1)(1)(1) 硬件中断请求硬件中断请求硬件中断请求硬件中断请求 C5402C5402C5402C5402硬件中断硬件中断硬件中断硬件中断的的的的请请求求求求信号信号信号信号: 外部中断口可屏蔽中断:外部中断口可屏蔽中断:外部中断口可屏蔽中断:外部中断口可屏蔽中断: INT3INT3INT3INT3 INT0INT0INT0INT0引脚引脚引脚引脚; 外部口外部口外部口外部口非屏蔽中断:非屏蔽中断:非屏蔽中断:非屏蔽中断:RSRSRSRS和和和和NMINMINMIN

105、MI引脚引脚引脚引脚; 片内外设中断:片内外设中断:片内外设中断:片内外设中断:BRINT0BRINT0BRINT0BRINT0、BXINT0BXINT0BXINT0BXINT0、BRINT1BRINT1BRINT1BRINT1和和和和BXINT1BXINT1BXINT1BXINT1( ( ( (串口中断串口中断串口中断串口中断) ) ) ) TINT0TINT0TINT0TINT0、TINT1(TINT1(TINT1(TINT1(定时器中断定时器中断定时器中断定时器中断) ) ) ); DMAC4DMAC4DMAC4DMAC4、DMAC5DMAC5DMAC5DMAC5(DMADMADMADM

106、A中断);中断);中断);中断); HPINT(HPIHPINT(HPIHPINT(HPIHPINT(HPI中断中断中断中断) ) ) )。 158(2)(2)(2)(2) 软件中断请求软件中断请求软件中断请求软件中断请求 软软软软件中断件中断件中断件中断是是是是由由由由程序指令程序指令程序指令程序指令产生的产生的产生的产生的中断中断中断中断请请求求求求,主要有,主要有,主要有,主要有3 3 3 3条指令:条指令:条指令:条指令: INTR INTR INTR INTR 、TRAPTRAP、RESETRESET指令指令指令指令软件中断指令软件中断指令软件中断指令软件中断指令 INTR INTR

107、:语法:语法:语法:语法:INTR K INTR K ;K K为中断号,为中断号,为中断号,为中断号,0K310K31执行:执行:执行:执行:例例INTR3指令执行前PC=0025hINTM=0SP=1000hRAM:(0FFFh)=9653h指令执行后PC=FF8ChINTM=1SP=0FFFhRAM:(0FFFh)=0026h159软件中断指令软件中断指令软件中断指令软件中断指令TRAPTRAP:语法:语法:语法:语法:TRAP K TRAP K ;K K为中断号,为中断号,为中断号,为中断号,0K310K31执行:执行:执行:执行:软件复位指令软件复位指令软件复位指令软件复位指令RESE

108、TRESET:语法:语法:语法:语法:RESET RESET ;无操作数;无操作数;无操作数;无操作数执行:对执行:对执行:对执行:对PCPC、ST0ST0、ST1ST1、IFRIFR加载初始值如下:加载初始值如下:加载初始值如下:加载初始值如下:(IPTR)7PC1C0DP0BRAF0C160CPL0OVM0OVA1TC1SXM0HM0 FRCT1 INTM0OVB0ARP0ASM1XF0 CMPT0 IFR该指令执行非屏蔽的软件复位,以便使该指令执行非屏蔽的软件复位,以便使C54 x处于一个可知状态。处于一个可知状态。1602、应答中断、应答中断 对于对于对于对于软件中断软件中断软件中断软

109、件中断和和和和非屏蔽的硬件中断非屏蔽的硬件中断非屏蔽的硬件中断非屏蔽的硬件中断,CPUCPUCPUCPU将立即响应,进入将立即响应,进入将立即响应,进入将立即响应,进入相应中断服务程序。相应中断服务程序。相应中断服务程序。相应中断服务程序。 对于对于对于对于硬件可屏蔽中断硬件可屏蔽中断硬件可屏蔽中断硬件可屏蔽中断,满足以下,满足以下,满足以下,满足以下3 3 3 3种条件种条件种条件种条件CPUCPUCPUCPU才能响应中断。才能响应中断。才能响应中断。才能响应中断。 中断优先级最高(当同时出现一个以上中断请求时)。中断优先级最高(当同时出现一个以上中断请求时)。中断优先级最高(当同时出现一个

110、以上中断请求时)。中断优先级最高(当同时出现一个以上中断请求时)。 INTM INTM位清位清位清位清0 0。 IMR IMR屏蔽位为屏蔽位为屏蔽位为屏蔽位为1 1。 满足上述条件后,满足上述条件后,满足上述条件后,满足上述条件后,CPUCPUCPUCPU响应中断,终止当前正进行的操作,指响应中断,终止当前正进行的操作,指响应中断,终止当前正进行的操作,指响应中断,终止当前正进行的操作,指令计数器令计数器令计数器令计数器PCPCPCPC自动转向相应的中断向量地址,取出自动转向相应的中断向量地址,取出自动转向相应的中断向量地址,取出自动转向相应的中断向量地址,取出中断服务程序中断服务程序中断服务

111、程序中断服务程序地地地地址,并发出硬件中断响应信号址,并发出硬件中断响应信号址,并发出硬件中断响应信号址,并发出硬件中断响应信号IACKIACKIACKIACK,而清除相应的中断标志位。,而清除相应的中断标志位。,而清除相应的中断标志位。,而清除相应的中断标志位。 161执行中断服务程序(执行中断服务程序(ISR)当应答中断后,当应答中断后,CPU会采取如下的操作:会采取如下的操作:1、把程序计数器(、把程序计数器(PC)值()值(返回地址返回地址)压入)压入堆栈堆栈;注注意意:程程序序计计数数器器扩扩展展寄寄存存器器(XPC)不不会会自自动动保保存存在在堆堆栈栈中中。因因此此,如如果果ISR

112、位位于于和和中中断断向向量量表表不不同同的的页页面面,用用户户必必须须在在分分支支转转移移到到ISR之之前压入前压入XPC到堆栈中。到堆栈中。FRETE指令可以用于从指令可以用于从ISR返回。返回。2、将、将中断向量的地址中断向量的地址加载到加载到PC;3、取取出出位位于于中中断断向向量量地地址址处处的的分分支支转转移移指指令令(分分支支转转移移被被延延时时时时,并并且且用用户户也也存存储储了了一一个个2字字指指令令或或两两个个1字字指指令令,则则CPU也也会会获获取取这这两两个个字字);4、执执行行分分支支转转移移,转转到到中中断断服服务务程程序序(ISR)。(如如果果分分支支转转移移被被延

113、延时,则在分支转移之前会执行额外的指令);时,则在分支转移之前会执行额外的指令);5、执行中断服务程序直到遇到其中的、执行中断服务程序直到遇到其中的返回指令返回指令;6、从从堆堆栈栈中中弹弹出出返返回回地地址址到到PC中中(注注意意XPC若若被被保保护护,必必须须认认为为恢恢复复);7、回到、回到主程序主程序继续执行;继续执行;162五、五、重新映射中断向量地址重新映射中断向量地址1、中断向量地址的组成、中断向量地址的组成中中断断向向量量地地址址是是由由PMST寄寄存存器器中中高高9位位的的IPTR(9位位中中断断向向量量指指针针)和和左左移移2位位后后的的中中断断向向量量序序号号(中中断断号

114、号为为031,左左移移2位位后变成后变成7位)所组成。位)所组成。例例如如,INT0的的中中断断向向量量号号为为16或或10h,左左移移2位位后后变变成成40h,若若IPTR=0001h,则中断向量的地址为则中断向量的地址为00C0h,中断向量地址产生过程如下:中断向量地址产生过程如下:2、重新映射中断向量地址、重新映射中断向量地址C54x的中断向量表是可重定位的,即在DSP复位时,IPTR=1FFh,中断向量表的起始地址固定为0FF80H,复位后,此表的起始地址可由用户指定。163当加载除1FFh之外的值到IPTR后,中断向量可以映射到其它地址。例如,用0001h加载IPTR,那么中断向量就

115、被移到从0080h单元开始的程序存储器空间。注意:注意:复位时,IPTR的所有位被置1(IPTR=1FFh),并按此值将复位向量映射到程序存储器的511页空间。所以,硬件复位(RS)向量不能被重新映射,总是指向程序空间的FF80h位置。164 例例11:硬件复位中断向量地址:硬件复位中断向量地址分析分析: 复位时:复位时:IPTR全为全为“1”,即,即IPTR=1FFh,指向程序存储,指向程序存储器最后一页(第器最后一页(第511页)页) 复位中断向量序号为复位中断向量序号为0 解解:硬件复位中断向量地址硬件复位中断向量地址=1111,1111,1000,0000B=FF80H 例例22:已知

116、外部中断:已知外部中断1 1(INT1INT1)的中断号为)的中断号为1717(1111H H),若中断向),若中断向量指针量指针IPTRIPTR为为1F01F0H H。 (1 1)求外部中断)求外部中断1 1的中断向量地址;的中断向量地址;(2 2)设外部中断)设外部中断1 1的中断服务程序入口地址为的中断服务程序入口地址为2500H2500H,则在中断向,则在中断向量地址处应放一条什么指令?写出该指令。量地址处应放一条什么指令?写出该指令。 解:解:(1 1)INT1INT1的中断号的中断号为11H11H,左移,左移2 2位成位成为44H44H,所以,所以INT1INT1的中断向量地址的中

117、断向量地址= =11111111,10001000,0 0100100,0100B=0100B=F844HF844H(2 2)应当在当在F844HF844H和和F845HF845H地址地址处放一条分支放一条分支转移指令移指令B 2500HB 2500H165教学目的1、了解TMS320C54x硬件系统组成。2、掌握时钟电路、RC复位电路和供电系统的设计。3、掌握外部存储器和I/O扩展设计。4、了解JTAG在线仿真调试接口电路设计。教学重点1、时钟电路设计。2、复位电路设计。3、供电系统设计。4、外部存储器和I/O扩展设计。教学难点外部存储器和I/O扩展设计。第3章TMS320C54x硬件系统设

118、计166课外作业课本P126习题3.2,3.5167第3章TMS320C54x硬件系统设计3.1TMS320C54x硬件系统组成部分时钟电路设计时钟电路设计 复位电路设计复位电路设计 供电系统设计供电系统设计 外扩数据存储器电路设计外扩数据存储器电路设计 外扩程序存储器电路设计外扩程序存储器电路设计 I/O(输入输出接口输入输出接口)扩展电路设计扩展电路设计 A/D和和D/A接口设计接口设计 JTAG 在线仿真调试接口电路设计在线仿真调试接口电路设计1683.2.1时钟电路设计一般C54x芯片的时钟电路有两种。第一种:利用芯片内部的振荡电路与X1、X2/CLK引脚之间连接的一只晶体和两个电容组

119、成并联谐振电路。第二种:采用封装好的的晶体振荡器,将外部时钟源直接输入X2/CLK引脚,而将X1引脚悬空。1693.2.2复位电路设计C54x DSP可以通过复位引脚可以通过复位引脚RS使使C54x复位到一个已知状态。为保证复位到一个已知状态。为保证DSP可靠复位,可靠复位,RS引脚必须为低电平,且保持足够的时间。引脚必须为低电平,且保持足够的时间。设设计计复复位位电电路路一一般般要要考考虑虑两两种种复复位位需需要要:一一种种是是上上电电复复位位;另另一一种种是是工工作作中的复位。中的复位。复位电路实现方式有两种:复位电路实现方式有两种:RC复位电路复位电路 2. .带有监控功能的复位电路带有

120、监控功能的复位电路 工工作作中中复复位位则则要要求求复复位位的的低低电电平平至至少少保保持持6个个时时钟钟周周期期,以以使使芯芯片片的的初初始始化能够正确的完成。化能够正确的完成。在在系系统统刚刚接接通通电电源源时时(上上电电复复位位),复复位位引引脚脚RS 应应为为低低电电平平且且维维持持时时间间应应该该大大于于系系统统的的晶晶体体振振荡荡器器起起振振时时间间。通通常常,晶晶振振需需要要100200ms的的稳稳定定时间,则上电复位时间应该时间,则上电复位时间应该200ms。170RC复位电路RC复位电路成本较低,但其功耗较大,可靠性差;可靠性差的原因:可靠性差的原因:1.1.当电源出现瞬态降

121、落时,由于当电源出现瞬态降落时,由于RC的响应速度较慢,无法产生符合要求的的响应速度较慢,无法产生符合要求的复位脉冲。复位脉冲。2.2.另外电阻、电容受工作环境特别是温度的影响较大,会给复位门限值的设另外电阻、电容受工作环境特别是温度的影响较大,会给复位门限值的设计带来困难。计带来困难。3. DSP系统的时钟频率较高,在运行中极易产生干扰和被干扰,甚至出现掉系统的时钟频率较高,在运行中极易产生干扰和被干扰,甚至出现掉电和死机现象。电和死机现象。 1712带有监控功能的复位电路1.1.三只管脚三只管脚的监控复位芯片仅提供复位功能,其复位输出方式和复位门限均可选择。2.2.四只管脚四只管脚的监控复

122、位芯片除了提供上述功能外,还提供手动复位功能,该功能可通过一个按键开关来实现。3.3.五只以上管脚五只以上管脚的监控复位芯片不仅提供看门狗功能,还提供电源监视、双复位输出或双复位输入等功能。复位芯片有多种:1723.3供电系统设计TMS320C5402DSP的CPU工作电压是1.8V,片内I/O设备工作电压是3.3V。TPS76318是将5V直流电压转换为1.8V的电压调整器,TPS76333是将5V直流电压转换为3.3V的电压调整器1733.4外部存储器和I/O扩展设计C54x DSP的外部接口包括数据总线、地址总线和一组用于访问片外存储器与I/O端口的控制信号。C54x DSP的外部程序或

123、数据存储器以及I/O扩展的地址和数据总线复用,完全依靠片选和读写选通配合时序控制完成外部程序存储器、数据存储器和扩展I/O的操作。C54x DSP的主要扩展接口控制信号:描述地址总线位数数据总线位数外部存储器选通控制信号外部程序存储器选通信号外部数据存储器选通信号I/O接口选通控制信号I/O接口选通信号读/写信号数据准备完成保持请求保持应答微状态完成指令地址获取中断响应READYR/D0D15A0A15信号名称1743.4.1外扩数据存储器电路设计采用高速数据存储器ICSI64LVl6。其电源电压为3.3V,与TMS320C54x外设电压相同,有64K字、128K字容量的芯片型号可供选择。IC

124、SI64LVl6分别有16条地址和数据线,控制线包括片选CE,读选OE通,写允许WE,高位字节选通UB和低位字节选通LB。该数据存储器占用64K字的地址(0000H-FFFFh)假如该数据存储器占用的地址为(2000H-FFFFh),应该如何设计?1A15A14A131MSTRBDSCE1753.4.2外扩程序存储器电路设计以C5402和AT公司生产的AT29LVl024FlashROM为例,C5402有20条地址线,最多可以扩展到1M字的程序存储空间。AT29LVl024是1M位的FLASH ROM,有16条地址和数据线,有三条控制线,分别是片选、编程写入线和读允许线。 假如需要扩展两片AT

125、29LVl024,他们的地址分别是:00000h0fffh和100001ffffh,应如何设计该接口电路?1763.4.3I/O(输入输出接口)扩展电路设计以常用I/O输入设备键盘和I/O输出设备显示器为例,介绍如何实现TMS320C54x的I/O口扩展设计。引脚符号I/O方向功能说明VddI电源+VssI电源地RESETI复位(1=初始化)I片选RDI读信号线I写信号线A0I寄存器选择DB0DB7I数据线液晶显示电路设计液晶显示电路设计 TMS320C5402芯片和EPSON的液晶模块TCM-A0902的接口设计液晶模块的A0引脚为数据寄存器和命引脚为数据寄存器和命令寄存器选择引脚令寄存器选

126、择引脚。A0=1时,对液晶的数据寄存器操作;时,对液晶的数据寄存器操作;A0=0时,对液晶的命令寄存器操作时,对液晶的命令寄存器操作。扩展的液晶模块占用两个I/O口地址,数据端口地址为0BFFFH,命令端口地址为3FFFH177TMS320C5402芯片和液晶模块TCM-A0902的接口设计A0=1时,对液晶的数据寄时,对液晶的数据寄存器操作;存器操作;A0=0时,对液晶的命令寄时,对液晶的命令寄存器操作存器操作。扩展的液晶模块占用两个I/O口地址,数据端口地址为0BFFFH,命令端口地址为3FFFH178键盘接口电路设计介介绍绍通通过过锁锁存存器器74HC573扩扩展展一一个个35的的矩矩阵

127、阵式式键键盘盘。74HC573是是一一个个带带有有输输出使能和锁存控制端的锁存缓冲器,出使能和锁存控制端的锁存缓冲器,序号符号功能1输出使能11LE锁存控制291D8D数据输入12191Q8Q数据输出输入输出LEDLLLHHHLXHLXXHLQnZ键盘扩展占用两个键盘扩展占用两个I/O端口地址端口地址,读键盘地址为读键盘地址为0EFFFH,写键盘端口地址写键盘端口地址0DFFFH。引脚说明引脚说明 74HC573的真值表的真值表1793.5A/D和D/A接口设计TMS320C54x有多个McBSP(多通道缓冲串口),通常用于A/D转换器和D/A转换器的数据传递接口。以TI公司的音频编解码器(T

128、LC320AD50)的接口设计为例说明A/D和D/A接口电路设计。1803.63.3V和5V混合逻辑设计逻辑电压5VTTL/V5VCMOS/V3.3V逻辑电平/VVOH4.42.42.4VOL0.50.40.4VIH3.52.02.0VIL1.50.80.8Vt2.51.51.5电平转换的芯片有SN74LVTH245和QS3245等。1813.7JTAG在线仿真调试接口电路设计仿真电缆和DSPJTAG测试口的连接是通过一个14脚的插头座(仿真头)来实现的。仿真头上信号连接关系如图3-12所示:其中主要引脚TDI测试数据的输入TDO测试数据的输出TMS是测试模式选择TCK和TCK_RET是测试时

129、钟的输出和返回。当仿真器与DSP距离大于6英寸或小于6英寸时,DSP芯片JTAG逻辑测试口和14脚的仿真座之间的连接关系不同。大于6英寸时,它们之间可以不加缓冲驱动器小于6英寸时,它们之间必须加缓冲驱动器182距离大于6inch的连接图距离小于6inch的连接图183教学目的1、掌握汇编源程序格式。2、掌握寻址方式3、掌握常用的汇编语言指令、汇编伪指令和链接伪指令。教学重点1、汇编源程序格式;2、汇编语言指令系统;3、寻址方式;4、汇编伪指令;5、链接伪指令。教学难点1、汇编语言指令系统;2、寻址方式;3、汇编伪指令和链接伪指令。第4章TMS320C54x指令系统184课外作业课本P172习题

130、:4.1,4.2,4.3,4.4,4.5,4.6,4.9,4.13,4.16,4.17185第4章TMS320C54x指令系统汇编指令系统包含汇编指令系统包含:汇编语言指令、汇编伪指令、宏指令和链接指令汇编语言指令、汇编伪指令、宏指令和链接指令。它的书写形式有它的书写形式有两种两种:助记符形式和代数式形式。:助记符形式和代数式形式。4.2 汇编源程序格式汇编源程序格式 :汇编源程序由汇编伪指令、汇编语言指令、宏汇编指令和注释组成汇编源程序由汇编伪指令、汇编语言指令、宏汇编指令和注释组成 C54x汇编源程序语句格式含有汇编源程序语句格式含有4个域,一般格式如下:个域,一般格式如下:助记符指令格式

131、:助记符指令格式:最多不能超过最多不能超过200个字符个字符 标号标号: 助记符助记符 操作数列表操作数列表 ;注释;注释例如:例如: begin: STM #40, AR1 ;将立即数将立即数40给辅助寄存器给辅助寄存器AR1标号域标号域指令域指令域 操作数域操作数域注释域注释域代数指令格式:代数指令格式: 标号标号: 代数指令代数指令 ;注释;注释例如:例如:begin: AR1 =#40 ;将立即数将立即数40给辅助寄存器给辅助寄存器AR1186 标号域标号域 :标号都是可选项,但伪指令标号都是可选项,但伪指令.set和和.equ必需要必需要标号标号。使用标号时,必须从源语句的使用标号时

132、,必须从源语句的第一列开始第一列开始。一一个个标标号号允允许许最最多多有有32个个字字符符:AZ、az、09、_和和$。第第一一个个字字符符不不能是数字。能是数字。标标号号对对大大小小写写敏敏感感,如如果果在在启启动动汇汇编编器器时时,用用到到了了-c选选项项,则则标标号号对对大大小小写不敏感。写不敏感。标号后可跟一个标号后可跟一个冒号冒号“:”,也可不跟。,也可不跟。如果不用标号,则如果不用标号,则第一列第一列上必须是空格、分号或星号。上必须是空格、分号或星号。标号值等于它所指向的语句所在单元的地址。标号值等于它所指向的语句所在单元的地址。 187指令域指令域(助记符域助记符域)指令域:不能

133、从指令域:不能从第一列第一列开始,一旦从第一列开始,它将被认作标号。开始,一旦从第一列开始,它将被认作标号。指令域包括以下指令码之一:指令域包括以下指令码之一: 汇编语言指令、汇编伪指令、宏指令。汇编语言指令、汇编伪指令、宏指令。 操作数域操作数域操操作作数数域域是是操操作作数数列列表表。操操作作数数可可以以是是常常量量、符符号号、或或是是常常量量和和符符号号的的混混合合表达式。操作数之间用表达式。操作数之间用逗号逗号分开。分开。操操作作数数前前可可以以使使用用前前缀缀来来指指定定操操作作数数(常常数数、符符号号或或表表达达式式)是是地地址址还还是是立立即即数数或间接地址。或间接地址。#前缀:

134、前缀:表示其后操作数是立即数。表示其后操作数是立即数。例如:例如:ADD #123,B 立立即即数数符符号号#,一一般般用用在在汇汇编编语语言言指指令令中中,也也可可使使用用在在伪伪指指令令中中,表表示示伪伪指指令后的立即数,但一般很少用。令后的立即数,但一般很少用。 如:如: A=A+#10 ;#是必需的是必需的 .byte #10 ;#号一般可省略号一般可省略188*前缀:前缀:表示其后操作数是间接地址。表示其后操作数是间接地址。例例如如指指令令:LD *AR4,A。汇汇编编器器将将AR4中中的的内内容容作作为为地地址址,将将此此地地址址单单元元的的内容传送给内容传送给A累加器。累加器。前

135、缀:前缀:表示其后操作数是采用直接寻址的地址。直接寻址产生的地址是表示其后操作数是采用直接寻址的地址。直接寻址产生的地址是后后操作数操作数(地址地址)和数据页指针或堆栈指针的组合。和数据页指针或堆栈指针的组合。例如:例如:ADD #10,XYZ完成的功能:完成的功能:在状态寄存器在状态寄存器STl中中CPL=0时,数据页指针时,数据页指针DP所指页内,偏移量为所指页内,偏移量为XYZ变变量地址低量地址低7位数值大小的地址单元内容和位数值大小的地址单元内容和10相加并存回到该地址单元中相加并存回到该地址单元中(XYZ所指单元所指单元)。助记符指令中使用直接寻址方式时助记符指令中使用直接寻址方式时

136、号可以省略,但代数指令中不能省略。号可以省略,但代数指令中不能省略。 189在编写汇编语句时,应遵循下列规则:在编写汇编语句时,应遵循下列规则:语句的语句的开头开头只能是只能是标号、空格、星号或分号标号、空格、星号或分号。标号是可选项,如果使用,必须从标号是可选项,如果使用,必须从第一列第一列开始。开始。每每个个域域之之间间必必须须由由一一个个或或多多个个空空格格来来分分开开。制制表表符符等等同同于于空空格格的作用。的作用。注注释释是是可可选选项项。开开始始于于第第一一列列的的注注释释用用星星号号或或分分号号(*或或;)来来标明,开始于标明,开始于其它列其它列的注释必须由的注释必须由分号开头分

137、号开头。 源语句的字符数每行不能超过源语句的字符数每行不能超过200个个。1904.2.2 汇编语言常量汇编语言常量C54x汇编器支持汇编器支持7种类型的常量:种类型的常量:二二进进制制整整数数、八八进进制制整整数数、十十进进制制整整数数、十十六六进进制制整整数数、字字符符常常量量、汇汇编编时时常常量、浮点数常量。量、浮点数常量。汇编器在内部把常量作为汇编器在内部把常量作为32bit量。常量不能进行符号扩展。量。常量不能进行符号扩展。例如:常量例如:常量FFH等同于等同于00FFH(16进制进制)或或255(10进制进制),但不是,但不是-1。 十十六六进进制制整整数数常常量量最最多多由由4个

138、个十十六六进进制制数数字字组组成成,其其后后缀缀为为H(或或h)。数数字字包包括括十进制数十进制数09和字符和字符AF及及af。它它必必须须由由十十进进制制值值0-9开开始始,也也可可以以由由前前缀缀(0x)标标明明十十六六进进制制。如如果果少少于于4位,汇编器将把数位右对齐。位,汇编器将把数位右对齐。例如:例如: 78h、 0FH、 37Ach、 0x37AC1、二进制整数常量、二进制整数常量二二进进制制整整数数常常量量最最多多由由16位位二二进进制制数数字字组组成成,其其后后缀缀为为B或或b。若若数数字字少少于于16位,则汇编器将其向右对齐并在左面补零。例如:位,则汇编器将其向右对齐并在左

139、面补零。例如:00000000B、01b2、十进制整数常量、十进制整数常量十十进进制制整整数数常常量量由由十十进进制制数数字字串串组组成成,无无后后缀缀。取取值值范范围围从从-3276832767或或从从065535。191例如:例如:1000,-32768,253、十六进制整数常量、十六进制整数常量十十六六进进制制整整数数常常量量最最多多由由4个个十十六六进进制制数数字字组组成成,其其后后缀缀为为H(或或h)。它它必必须须由由09开开始始,也也可可以以由由前前缀缀0x标标明明是是十十六六进进制制数数。若若少少于于4位位,汇汇编编器器将将其其向向右右边边对对齐。例如:齐。例如:78h, 0FH

140、, 37ACh, 0x37AC4、字符常量、字符常量字字符符常常量量由由单单引引号号括括住住的的一一个个或或两两个个字字符符组组成成。每每个个字字符符在在内内部部表表示示为为8位位ASCII码码。当当单单引引号号代代表表字字符符时时,必必须须采采用用两两个个连连续续的的单单引引号号。若若仅仅有有单单引引号号,其间没有字符,其值为其间没有字符,其值为0。若仅有一个字符,则汇编器将其向右对齐。例如:。若仅有一个字符,则汇编器将其向右对齐。例如:a代表整数61H(字母a的ASCII码为61H)D代表整数2744H(单引号的ASCII码为27H,D的ASCII码为44H)5、符号常量、符号常量伪指令伪

141、指令.set用来将常数赋给一个符号名,则这个符号等效于此常量。在表达式中,被赋的用来将常数赋给一个符号名,则这个符号等效于此常量。在表达式中,被赋的值固定不变。例如:值固定不变。例如: shift .set 3 A=#shift ; 将将3赋给赋给A累加器累加器1924.3 汇编语言指令系统4.3.1指令系统中的符号和缩写4.3.2指令系统中的记号和运算符4.3.2 指令系统分类指令系统分类C54x指令系统有2种分类方法:按指令的功能分类。按指令的功能分类。按执行指令所要求的周期分类。按执行指令所要求的周期分类。按指令的功能,按指令的功能,C54x指令系统可以分成指令系统可以分成4大类:大类:

142、算术运算指令。算术运算指令。逻辑运算指令。逻辑运算指令。程序控制指令。程序控制指令。加载和存储指令。加载和存储指令。课本课本P290P290附录附录A A列出了上述列出了上述4 4大类指令一览表大类指令一览表1934.4寻址方式指令的寻址方式是指当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法。C54X提供提供七种七种基本的数据寻址方式:基本的数据寻址方式:立即数寻址立即数寻址:指令中嵌有一个固定的数;指令中嵌有一个固定的数;绝对(地址)寻址:绝对(地址)寻址:指令中有一个固定的地址;指令中有一个固定的地址;累加器寻址:累加器寻址:按累加器内的地址去访问程序存储器中的一个单元;按累加器

143、内的地址去访问程序存储器中的一个单元;直直接接寻寻址址:指指令令中中的的低低7bits7bits是是一一个个数数据据页页内内的的偏偏移移地地址址,而而所所在在的的数数据据页页由由数数据据页页指指针针DPDP或或SPSP决决定定,该该偏偏移移地地址址加加上上DPDP和和SPSP的的值值决决定定了了在在数数据据存存储储器器中中的的实实际地址;际地址;间接寻址:间接寻址:按照辅助寄存器中的地址访问寄存器;按照辅助寄存器中的地址访问寄存器;存存储储器器映映射射寄寄存存器器寻寻址址:修修改改存存储储器器映映射射存存储储器器中中的的值值,不不影影响响当当前前DPDP或或SPSP的的值;值;堆栈寻址:堆栈寻

144、址:把数据压入和弹出系统堆栈;把数据压入和弹出系统堆栈;194表4-1寻址指令中用到的缩写符号及其含义缩写符号含义Smem16位单数据存储器操作数Xmem在双操作数指令及某些单操作数指令中所用的16位双数据存储器操作数,从DB总线上读出Ymem在双操作数指令中所用的16位双数据存储器操作数,从CB总线上读出;在读同时并行写的指令中表示写操作数dmad16位立即数数据存储器地址(065535)pmad16位立即数程序存储器地址(065535)PA16位立即数I/O口地址(065535)src源累加器(A或B)dst目的累加器(A或B)lk16位长立即数1954.4.1 立即数寻址立即数寻址立即数

145、寻址:立即数寻址:指令里包括了立即操作数。指令里包括了立即操作数。在一条指令中可对两种立即数编码。一种是在一条指令中可对两种立即数编码。一种是短立即数短立即数(立即数的位数是(立即数的位数是3 3、5 5、8 8或或9bits9bits),另一种是),另一种是16bits16bits的的长立即数长立即数。立即数的长度由所使用的指令类型决定。立即数的长度由所使用的指令类型决定。 3bits,5bits,8bits或或9bits立即数包含在单字指令(指令代码只有一立即数包含在单字指令(指令代码只有一个字)中,个字)中,16-bit立即数包含在双字指令中。立即数包含在双字指令中。 3bits和和5b

146、its立即立即数数8bits立即立即数数9bist立即立即数数16bits立即立即数数LDFRAMELDRPTLDADD ADDMAND ANDMOR ORMST STMXOR XORMRPT RPTZMAC SUBBITF CMPTLD196立即数寻址例如例如:LD #1000H,A; :LD #1000H,A; 把立即数把立即数1000H1000H装入累加器装入累加器A A。 RPT #99 RPT #99;将紧跟在此条语句后面的语句重复执行;将紧跟在此条语句后面的语句重复执行99+199+1次。次。操作码操作数BIT: 15 14 13 12 11 10 9 8 7 6 5 4 3 2

147、1 0操作码 (16bit)操作数(16bit)1000hBIT: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0指令代码格式:指令代码格式:1974.4.2绝对(地址)寻址绝对(地址)寻址方式:绝对(地址)寻址方式:指令中包含要寻址的存储单元的指令中包含要寻址的存储单元的1616位地址。可以位地址。可以是单元地址或是单元地址或1616位符号常数。位符号常数。绝对地址寻址指令的指令代码至少是两个字。绝对地址寻址指令的指令代码至少是两个字。 绝对地址寻址有以下四种类型:绝对地址寻址有以下四种类型:数据存储器地址(数据存储器地址(dmad)寻址、程序存)寻址、程序存储器

148、地址(储器地址(pmadpmad)寻址、)寻址、 端口地址(端口地址(PAPA)寻址、)寻址、* *(lklk)寻址)寻址 数据存储器(地址)(数据存储器(地址)(dmad)寻址)寻址 :用一个符号或一个数来确定用一个符号或一个数来确定数据空数据空间间中的一个地址。中的一个地址。 MVDK SmemMVDK Smem,dmad;dmad; (寻找目的地址)(寻找目的地址) MVDM dmadMVDM dmad,MMR ;MMR ; ( (寻源址寻源址) ) MVKD dmadMVKD dmad,Smem;Smem; ( (寻源址寻源址) ) MVMD MMRMVMD MMR,dmad ;dma

149、d ; (寻找目的地址)(寻找目的地址)例如:例如:MVKD 1000HMVKD 1000H,*AR5*AR5 ;把数据空间中地址为;把数据空间中地址为1000H1000H的存储单的存储单元中的数复制到由元中的数复制到由AR5AR5辅助寄存器指向的数据存储单元中去辅助寄存器指向的数据存储单元中去 198程序存储器(地址)(pmad)寻址程序存储器(地址)(程序存储器(地址)(pmadpmad)寻址是用一个符号或一个具体的数来确定)寻址是用一个符号或一个具体的数来确定程程序存储器序存储器中的一个地址中的一个地址 FIRS XmemFIRS Xmem,YmemYmem,pmadpmad y(n)=

150、h(0)x(n)+x(n-7)+ h(1)x(n-1)+x(n-6)+ h(2)x(n-2)+x(n-5)+ h(3)x(n-3)+x(n-4) -8点对称点对称FIR滤波滤波h(n)=h(N-1-n) MACD SmemMACD Smem,pmadpmad,srcsrc一个数据存一个数据存储器器值SmemSmem与一个程序存与一个程序存储器器单元元pmadpmad的的值相乘和相乘和srcsrc相加,相加,结果存在果存在SrcSrc中。另外,中。另外,SmemSmem值装入到装入到T T寄存器中和寄存器中和紧接接SmemSmem地址的数据地址的数据单元元中。中。 实现一个对称的有限冲击响应滤波

151、器实现一个对称的有限冲击响应滤波器B=B+A*B=B+A*(pmadpmad), , A=(Xmem+Ymem)16A=(Xmem+Ymem)RR循环寻址要指定一个辅助寄存器循环寻址要指定一个辅助寄存器循环寻址要指定一个辅助寄存器循环寻址要指定一个辅助寄存器ARxARx指向循环缓冲区。指向循环缓冲区。指向循环缓冲区。指向循环缓冲区。循循环环缓缓冲冲区区示示意意图图(3)(3)循环缓冲区的尾地址循环缓冲区的尾地址(EOB)(EOB)。通过用通过用BKBK的的低低N N位位代替代替ARxARx的低的低N N位而得到。位而得到。 其指令:其指令:其指令:其指令: STM #lkSTM #lk,BKB

152、K ;将立即数;将立即数lklk存放存放BKBK中中218(4)(4)循环缓冲区的循环缓冲区的偏移量偏移量(indexindex) )。就是当前就是当前ARxARx的低的低N N位。位。 0indexBK (5) 循环寻址的步长循环寻址的步长( (stepstep) ) 。是加到辅助寄存器或从辅助寄存器减去的值。是加到辅助寄存器或从辅助寄存器减去的值。例如,若操作数为例如,若操作数为*ARX+0%,*ARX+0%,则则step=AR0step=AR0。 若操作数为若操作数为*ARX+%,*ARX+%,则则STEP=1STEP=1。例如:例如:含有含有3131个字的循环缓冲区:个字的循环缓冲区:

153、缓冲区长度缓冲区长度缓冲区长度缓冲区长度R=31R=31循环缓冲区长度寄存器循环缓冲区长度寄存器( (BKBK) )内容:必须装入内容:必须装入3131循环缓冲区的循环缓冲区的有效基地址有效基地址(EFB)(EFB):最低最低5 5位为位为0 0的地址(即的地址(即xxxx xxxx xxxx xxxx xxx0 0000xxx0 00002 2),因为),因为2 25 53131。含有含有3232个字的循环缓冲区:个字的循环缓冲区:循环缓冲区大小寄存器循环缓冲区大小寄存器(BK)(BK)内容:必须装入内容:必须装入3232循环缓冲区的有效基地址循环缓冲区的有效基地址(EFB)(EFB):最低

154、最低6 6位为位为0 0的地址的地址(即(即xxxx xxxx xxxx xxxx xx00 0000xx00 00002 2),),因为因为2 26 6 3232。219循环寻址的执行过程为:循环寻址的执行过程为: if 0index+stepif 0index+stepBK then BK then index=index+stepindex=index+step else if index+stepBK then index=index+step-BK else if index+stepBK then index=index+step-BK else if index+step els

155、e if index+step0 then index=index+step+BK0 then index=index+step+BK 例:例:设循环缓冲区长度设循环缓冲区长度R=3,则,则BK=3。由于。由于223,所以,所以N=2,即循环缓冲区的有效基循环缓冲区的有效基地址地址(EFB)至少低至少低2位为位为0。取有效基地址为。取有效基地址为0100H。指定辅助寄存器指定辅助寄存器指定辅助寄存器指定辅助寄存器AR1AR1指向循环指向循环指向循环指向循环缓冲区。假设执行下面的两条指令:缓冲区。假设执行下面的两条指令:缓冲区。假设执行下面的两条指令:缓冲区。假设执行下面的两条指令: RPT #

156、3RPT #3 MVDP *AR1+% MVDP *AR1+%,1000h1000h设执行指令前设执行指令前设执行指令前设执行指令前AR1=0100h, AR1=0100h, 即指向第即指向第即指向第即指向第0 0个单元。个单元。个单元。个单元。(1)首先寻址首先寻址100h单元,寻址完后,对偏移量单元,寻址完后,对偏移量index进行修正:进行修正: index=index+1=0+1=1, 则则AR1=101h(2)接着寻址接着寻址101h单元,寻址完后,对偏移量单元,寻址完后,对偏移量index进行修正:进行修正: index=index+1=1+1=2, 则则AR1=102h(3)接着

157、寻址接着寻址102h单元,寻址完后,对偏移量单元,寻址完后,对偏移量index 进行修正:进行修正:index=index+1=2+1=3=BK, 则则index=index+1-BK=2+1-3=0,所以所以AR1=100h,即即AR1又重新指向又重新指向100h单元。单元。220例例例例: LD *+AR1(8)%,A; STL A, *+AR1(8)%; 假定假定假定假定:BK=10,N=4, AR1=100H 由上可知:由上可知:index = 0 (因为(因为 AR1的低四位为的低四位为0000)step =8(*+AR1(8)%) 执行第一条指令时:执行第一条指令时:index =

158、 index + step = 8 (寻址(寻址108H单元)单元)执行第二条指令时:执行第二条指令时:index = index+ step= 8+8=16 BK;故:故:index=index+step-BK=8+8-10=6 (寻址(寻址106H单元)单元)循环寻址过程循环寻址过程:2212、位倒序寻址、位倒序寻址位倒序寻址类型位倒序寻址类型ARx-0BARx-0B和和ARx+0BARx+0B。将将ARxARx中的内容与中的内容与AR0AR0中内容以位倒序的方式相加产生中内容以位倒序的方式相加产生ARxARx中的新内容,即两者相中的新内容,即两者相加时,从左向右逐位相加,进位也从左向右传

159、播,而不是从右向左。加时,从左向右逐位相加,进位也从左向右传播,而不是从右向左。 位倒序寻址主要应用于位倒序寻址主要应用于FFTFFT运算运算 :位倒序寻址用于位倒序寻址用于DITDIT(按时间抽取的(按时间抽取的FFTFFT)时,是将)时,是将输入数据输入数据由自然由自然顺序排列变为顺序排列变为倒位序排列倒位序排列;用于;用于DIFDIF(按频率抽取的(按频率抽取的FFTFFT)时,是将)时,是将运算结果由倒位序变为自然顺序排列。运算结果由倒位序变为自然顺序排列。例如:例如:01100110与与11001100以位倒序的方式相加。以位倒序的方式相加。 0110 + 1100 1001222双

160、操作数(间接)寻址方式双数据存储器操作数寻址用在完成双数据存储器操作数寻址用在完成两次读两次读或或一次读一次读同时并行同时并行一次写一次写的指令中。这的指令中。这些指令只有一个字长且只能以间接寻址的方式工作。些指令只有一个字长且只能以间接寻址的方式工作。 使用使用Xmem和和Ymem代表这两个数据存储器操作数。代表这两个数据存储器操作数。例如:MVDD Xmem,YmemXmem和和Ymem代代表表两两个个数数据据存存储储器器操操作作数数。Xmem表表示示读读操操作作数数;Ymem在在读两个操作数时表示读操作数,在一个读并行一个写的指令中表示写操作数。读两个操作数时表示读操作数,在一个读并行一

161、个写的指令中表示写操作数。如如果果源源操操作作数数和和目目的的操操作作数数指指向向了了同同一一个个单单元元,在在并并行行存存储储指指令令中中(例例如如STLD),),读在写之前执行。读在写之前执行。ST src,Ymem LD Xmem,dst如如果果一一个个双双操操作作数数指指令令( 如如ADD)指指向向了了同同一一辅辅助助寄寄存存器器,而而这这两两个个操操作作数数的寻址方式不同。那么就用的寻址方式不同。那么就用Xmod域所确定的方式来寻址。域所确定的方式来寻址。223双操作数寻址双操作数寻址指令格式指令格式Opcode XmodXarYmodYarBit: 15-8 7 6 5 4 3 2

162、 1 0Bit: 15-8 7 6 5 4 3 2 1 0 Xar or Yar 域域 辅助寄存器辅助寄存器 00AR201AR310AR411AR5确定包含确定包含Ymem地址地址的辅助寄存的辅助寄存器器确定包含确定包含Xmem地地址的辅助址的辅助寄存器寄存器定义用于访问定义用于访问Ymem操作数操作数的间接寻址方的间接寻址方式的类型式的类型定义用于访问定义用于访问Xmem操作数的操作数的间接寻址方式的间接寻址方式的类型类型指令的指令的操作码操作码Xmod or Ymod 域域 操作码语法操作码语法 00*ARx01*ARx-10*ARx+11*ARx+0%注意注意:只有只有AR2、AR3、

163、AR4、AR5四个辅助寄存器可以用于双操作数寻址四个辅助寄存器可以用于双操作数寻址 双操作数寻址操作数的类型只能是双操作数寻址操作数的类型只能是*ARx、*ARx-、*ARx+、*ARx+0%224例:指令MAC Xmem,Ymem,src执行:(Xmem) (Ymem)+(src)src(Xmem)T如:MAC*AR5+,*AR6,A设指令执行前:AR5=0100h,AR6=0200h2254.4.6存储器映射寄存器寻址存储器映射寄存器寻址 C54x C54x DSPDSP数数数数据据据据空空空空间间间间第第第第0 0页页页页(地地地地址址址址范范范范围围围围:0000H007FH0000H

164、007FH)包包包包括括括括:CPUCPU寄寄寄寄存存存存器器器器( 0000H001FH0000H001FH) , 外外外外 设设设设 寄寄寄寄 存存存存 器器器器 ( 0020H005FH0020H005FH) , 3232字字字字 的的的的 暂暂暂暂 存存存存 器器器器(0060H007FH0060H007FH)三部分。)三部分。)三部分。)三部分。第第0 0页的特点页的特点:地址的高:地址的高:地址的高:地址的高9 9位均为位均为位均为位均为0 0,仅低,仅低,仅低,仅低7 7位不同。位不同。位不同。位不同。 存存存存储储储储器器器器映映映映象象象象寄寄寄寄存存存存器器器器寻寻寻寻址址

165、址址用用用用于于于于修修修修改改改改存存存存储储储储器器器器映映映映象象象象寄寄寄寄存存存存器器器器( (MMRMMR) )中中中中的的的的内内内内容容容容,而而而而不不不不影影影影响响响响当当当当前前前前数数数数据据据据页页页页指指指指针针针针DPDP和和和和当当当当前前前前堆堆堆堆栈栈栈栈指指指指针针针针SPSP的的的的值值值值。存存存存储储储储器器器器映映映映象象象象寄寄寄寄存存存存器器器器寻寻寻寻址址址址可可可可以以以以在在在在直接寻址方式直接寻址方式直接寻址方式直接寻址方式和和和和间接寻址方式间接寻址方式间接寻址方式间接寻址方式下工作下工作下工作下工作1.1.采用直接寻址方式采用直接

166、寻址方式2.2.采用间接寻址方式采用间接寻址方式 高高高高9 9 9 9位位位位数数数数据据据据存存存存储储储储器器器器地地地地址址址址置置置置0 0 0 0,利利利利用用用用指指指指令令令令中中中中的的的的低低低低7 7 7 7位位位位地地地地址址址址直直直直接接接接访访访访问问问问MMRMMRMMRMMR。寻址时不需要。寻址时不需要。寻址时不需要。寻址时不需要数据页指针数据页指针数据页指针数据页指针DPDP和堆栈指针和堆栈指针和堆栈指针和堆栈指针SPSP 高高高高9 9 9 9位位位位数数数数据据据据存存存存储储储储器器器器地地地地址址址址置置置置0 0 0 0,按按按按照照照照当当当当前

167、前前前辅辅辅辅助助助助寄寄寄寄存存存存器器器器ARxARxARxARx的低的低的低的低7 7 7 7位地址访问位地址访问位地址访问位地址访问MMRMMRMMRMMR。226 C54xC54xC54xC54x共有共有共有共有8 8 8 8条指令可以进行条指令可以进行条指令可以进行条指令可以进行MMRMMRMMRMMR寻址:寻址:寻址:寻址: LDM MMRLDM MMR,dstdst ; ;将将MMRMMR加载到累加器加载到累加器 MVDM dmadMVDM dmad,MMRMMR ; ;数据存储器向数据存储器向MMRMMR传送数据传送数据 MVMD MMRMVMD MMR,dmaddmad ;

168、 ;MMRMMR向指定地址传送数据向指定地址传送数据 MVMM MMRxMVMM MMRx,MMRyMMRy ; ;MMRxMMRx向向MMRyMMRy传送数据传送数据 POPM MMRPOPM MMR ; ;将数据从栈顶弹至将数据从栈顶弹至MMRMMR PSHM MMRPSHM MMR ; ;将将MMRMMR数据压入堆栈数据压入堆栈 STLM srcSTLM src,MMRMMR ; ;累加器低累加器低1616位存入位存入MMRMMR STM #lkSTM #lk,MMRMMR ; ;将将长立即数长立即数lklk存入存入MMRMMR227例:要将立即数例:要将立即数例:要将立即数例:要将立即

169、数0123H0123H传送到传送到传送到传送到AR0AR0中,可用以下方式实现:中,可用以下方式实现:中,可用以下方式实现:中,可用以下方式实现:1 1、用直接寻址方式用直接寻址方式用直接寻址方式用直接寻址方式 STM #0123H STM #0123H,AR0AR0或或或或 STM #0123H STM #0123H,10H10H;AR0AR0的地址是的地址是的地址是的地址是10H10H2 2、用间接寻址方式用间接寻址方式用间接寻址方式用间接寻址方式STM #10HSTM #10H,AR2AR2;先将;先将;先将;先将AR0AR0的地址的地址的地址的地址10H10H放入放入放入放入AR2AR

170、2中中中中STM #0123HSTM #0123H,*AR2*AR2228 堆堆堆堆栈栈栈栈:当当当当发发发发生生生生中中中中断断断断或或或或子子子子程程程程序序序序调调调调用用用用时时时时,用用用用来来来来自自自自动动动动保存保存保存保存PCPCPCPC内容内容内容内容以及保护现场或传送参数。以及保护现场或传送参数。以及保护现场或传送参数。以及保护现场或传送参数。 C54xC54xC54xC54x的的的的堆堆堆堆栈栈栈栈是是是是向向向向低低低低地地地地址址址址生生生生长长长长,并并并并由由由由16161616位位位位堆堆堆堆栈栈栈栈指针指针指针指针SPSPSPSP管理。管理。管理。管理。SP

171、SPSPSP总是指向栈顶。总是指向栈顶。总是指向栈顶。总是指向栈顶。 堆栈寻址:堆栈寻址:堆栈寻址:堆栈寻址:利用利用利用利用SPSPSPSP指针,按照后进先出的原则进指针,按照后进先出的原则进指针,按照后进先出的原则进指针,按照后进先出的原则进 行行行行寻址。寻址。寻址。寻址。 当当进栈进栈操作时,操作时,SPSP先减先减1,然后数据进入堆栈;,然后数据进入堆栈; 当当出出栈操作操作时,数据先出,数据先出栈,然后然后SPSP加加1。 4.4.7堆栈寻址229共有四条使用堆栈寻址方式访问堆栈的指令:共有四条使用堆栈寻址方式访问堆栈的指令: PSHD SmemPSHD SmemPSHD Smem

172、PSHD Smem ; ; ; ;将将将将SmemSmemSmemSmem中的数据压入堆栈中的数据压入堆栈中的数据压入堆栈中的数据压入堆栈 PSHM MMRPSHM MMRPSHM MMRPSHM MMR ; ; ; ;将将将将MMRMMRMMRMMR中的数据压入堆栈中的数据压入堆栈中的数据压入堆栈中的数据压入堆栈 POPD SmemPOPD SmemPOPD SmemPOPD Smem ; ; ; ;将数据从栈顶弹至将数据从栈顶弹至将数据从栈顶弹至将数据从栈顶弹至SmemSmemSmemSmem中中中中 POPM MMRPOPM MMRPOPM MMRPOPM MMR ; ; ; ;将数据从

173、栈顶弹至将数据从栈顶弹至将数据从栈顶弹至将数据从栈顶弹至MMRMMRMMRMMR中中中中230练习练习1、直接寻址有两种方式。一种以数据页指针DP为基地址(基准);另一种以堆栈指针SP为基地址(基准)。当CPL=0时,是以什么为基地址?2、说出以下几种间接寻址的步长:*ARx-,*ARx+,*ARx(2),*ARx(2)%,*ARx+03、写出将立即数存入存储器映象寄存器的指令的一般形式,并举一个实际指令的例子。4、循环缓冲区的长度为20,则循环缓冲区的有效基地址(EFB)低位至少应有几位0?6、数据空间第0页分为三部分,说出他们的名称,说出他们的地址范围。7、存储器映射寄存器寻址分为两种方式

174、,是哪两种方式?5、双操作数间接寻址方式可以使用的辅助寄存器是哪些?8、存储器映射寄存器寻址采用直接寻址方式时,需要用到DP和SP吗?231练习答案练习答案1、直接寻址有两种方式。一种以数据页指针DP为基地址;另一种以堆栈指针SP为基地址。当CPL=0时,是以什么为基地址?答:是以DP为基地址。2、说出以下几种间接寻址的步长:*ARx-,*ARx+,*ARx(2),*ARx(2)%,*ARx+0答:分别1、1、2、2和AR0的值为步长。3、写出将立即数存入存储器映象寄存器的指令。答:STM#lk,MMR实际指令如:STM1278h,AR14、循环缓冲区的长度为20,则循环缓冲区的有效基地址(E

175、FB)低位至少应有几位0?答:低位至少应有5位为0。5、双操作数间接寻址方式可以使用的辅助寄存器是哪些?答:AR2、AR3、AR4、AR56、数据空间第0页分为三部分,说出他们的名称,说出他们的地址范围。答:C54xDSP数据空间第0页(地址范围:0000H007FH)包括:CPU寄存器(0000H001FH),外设寄存器(0020H005FH),32字的暂存器(0060H007FH)三部分。7、存储器映射寄存器寻址分为两种方式,是哪两种方式?答:直接寻址方式和间接寻址方式。8、存储器映射寄存器寻址采用直接寻址方式时,需要用到DP和SP吗?答:不需要。232说明以下程序的作用:STM#205h

176、,AR1RPT #3ST#1234h,*AR1+练习练习233STM #205h,AR1;间接寻址,使用辅助寄存器AR1RPT#3;循环重复执行下条语句4次ST#1234h,*AR1+;将绝对地址205H开始的4个单元存成;1234H练习答案练习答案234DSP汇编伪指令功能:给程序提供数据并控制汇编过程给程序提供数据并控制汇编过程将代码和数据汇编进特定的段为未初始化的变量保留存储器空间控制展开列表的形式存储器初始化汇编条件块定义全局变量指定汇编器可以获得宏的特定库检查符号调试信息汇编伪指令用以形成常数和变量,当用它控制汇编和汇编伪指令用以形成常数和变量,当用它控制汇编和链接过程时,可以不占存

177、储空间。链接过程时,可以不占存储空间。汇编伪指令,以汇编伪指令,以“.”号开始。如号开始。如: .bss2351. 段定义伪指令段定义伪指令作用:作用:把汇编语言程序的各个部分划分在适当的段中。把汇编语言程序的各个部分划分在适当的段中。五条段定义指令五条段定义指令:.bss 为未初始化的变量保留空间。为未初始化的变量保留空间。.usect 在一个未初始化的在一个未初始化的命名命名段中为变量保留空间。段中为变量保留空间。.sect 定义已初始化的定义已初始化的命名命名段,并将紧接着的段,并将紧接着的代码代码或或数据数据存入该段。存入该段。.data 通常包含了初始化的通常包含了初始化的数据数据。

178、.text 该段包含了可执行的该段包含了可执行的代码代码。1、未初始化段、未初始化段.bss和和.usect 命令建立未初始段。这两条命令的句法如下:命令建立未初始段。这两条命令的句法如下: .bss 符号符号,字数,字数符号符号 .usect “段名段名”,字数,字数其中,符号其中,符号对应于保留的存储空间第一个字的变量名称。对应于保留的存储空间第一个字的变量名称。字数字数表示保留多少个存储单元。表示保留多少个存储单元。段名段名程序员为自定义的未初始化段起的名字。程序员为自定义的未初始化段起的名字。未初未初始化始化段段已初已初始化始化段段2362、已初始化段.text,.data,.sect

179、命令建立已初始化段。已初始化段包含有可执行代码或初始化数据。这3条命令的句法如下:.text 段起点段起点.data 段起点段起点.sect “ 段名段名” ,段起点,段起点例如:例如:.sect “vector” 3命名段命名段就是程序员自己定义的段,它与命名段就是程序员自己定义的段,它与默认默认的的.text、.data和和.bss段一样使用。段一样使用。 产生命名段的伪指令为:产生命名段的伪指令为: 符号符号.usect“段名段名”,字数,字数 .sect “段名段名”,段起点,段起点237.globalstart;定义全局标号.mmregs.bssx,1;定义变量,保留空间.bssy,

180、1;三个变量各为一个字(16位).bssz,1.textstart: RSBXCPLLD#x,DP ;因下面诸变量使用直接寻址,装载DP值ST#1,x;变量赋初值,x=1ST#2,y;y=2LDx,A;将x的值装载至累加器AADDy,A;累加器A加上y的值STLA,z;将累加器A的低16位保存到变量zHERE:BHERE;空循环.end例例编写程序实现下面的功能:先定义三个变量x、y和z;将数值1和2分别赋值给x和y;计算变量x和y的和,和在累加器A中;再将A中的和保存到变量z中。由于x和y的值较小,和不超过16位,所以只需要保存A的低16位作为结果。但如果计算的结果超过了16位,就需要考虑再

181、保存累加器A的高16位结果了。程序如下:238命令文件命令文件MEMORYPAGE0:PRAM:o=100h,l=1f00hPAGE1:DRAM:o=2000h,l=1000hSECTIONS.text:PRAMPAGE0.bss:DRAMPAGE1239.title“example.asm”;用双引号括起的源程序名.mmregs;定义存储器映射寄存器的替代符号STACK.usect“STACK”,10H;在数据存储器中留出16个单元作为;堆栈区,名为STACK.bssa,4.bssx,4;.bssy,1.def start;在此模块中定义,可为别的模块引用.data;紧跟其后的是已初始化数据

182、table: .word1,2,3,4;在程序存储器标号为table开始的8个单.word8,6,4,2;元存放初始化数据例试编一程序,计算试编一程序,计算 的值,放入累加器的值,放入累加器A中。中。其中ai和xi均为整数。a1=1a2=2a3=3a4=4 x1=8x2=6x3=4x4=2240.text;紧跟其后的是汇编语言程序正文start: STM#0,SWWSR;addsnowaitstatesSTM#STACK+10H,SP;setstackpointerSTM#a,AR1;AR1pointtoaRPT#7;move8valuesMVPDtable,*AR1+;fromprogram

183、memoryinto;datamemoryCALLSUM;callSUMsubroutineend: BendSUM:STM#a,AR3;ThesubroutineimplementSTM#x,AR4;multiplyaccumulateRPTZA,#3MAC*AR3+,*AR4+,ASTLA,yRET.end;结束汇编,汇编器将忽略;此后的任何源语句241命令文件命令文件MEMORYPAGE0:ROM:origin=0080h,length=1000hPAGE1:OTHER:origin=0400h,length=400hSECTIONS.text:ROMPAGE0.data:ROMPAGE

184、0.bss:OTHERPAGE1STACK:OTHERPAGE1242 .def 确认一个在当前文件中定义的且能被其他文件使用的符确认一个在当前文件中定义的且能被其他文件使用的符号,汇编器把这个符号存入符号表中。号,汇编器把这个符号存入符号表中。 .ref 确认一个在当前文件中使用但在其他文件中定义的符号。确认一个在当前文件中使用但在其他文件中定义的符号。汇编器把这个符号标注成一个未定义的外部符号,且把它装入目汇编器把这个符号标注成一个未定义的外部符号,且把它装入目标符号表中,以便链接器能还原它的定义。标符号表中,以便链接器能还原它的定义。 .global 表明一个外部符号,使其他模块在连接时

185、可以使用。表明一个外部符号,使其他模块在连接时可以使用。如果在当前文件定义了该符号,那么该符号就可以被其他文件使如果在当前文件定义了该符号,那么该符号就可以被其他文件使用,与用,与.def功能相同;如果在当前文件没有定义该符号,则使用功能相同;如果在当前文件没有定义该符号,则使用了其他文件定义的符号,与了其他文件定义的符号,与.ref功能相同。一个未定义的全局符功能相同。一个未定义的全局符号只有当它在程序中使用的时候,链接器才对其进行处理。号只有当它在程序中使用的时候,链接器才对其进行处理。2、其他常用的伪指令、其他常用的伪指令243其他常用的伪指令其他常用的伪指令.mmregs 定定义义存存

186、储储器器映映射射寄寄存存器器的的符符号号名名,这这样样就就可可以以用用AR0、PMST等等助助记记符符替替换换实实际际的的存存储储器器地地址址。对对于于所所有有的的存存储储器器映映射射寄寄存存器器,使使用用该该指指令令和和执执行行一一个个.set是是一一样样的。的。.word 把一个或多个把一个或多个16bits数存放到当前段的连续字中数存放到当前段的连续字中。.space 在在当当前前的的段段中中保保留留指指定定的的位位数数,汇汇编编器器对对这这些些保保留留的位填充的位填充0。例例: .space 17;保留;保留17位位可可将将字字数数乘乘以以16来来实实现现保保留留字字。例例如如spac

187、e 3*16是是保保留留3个个字。字。.set/.equ 定义符号常量。定义符号常量。.end 结束汇编。它是一个程序的最后一个源语句。结束汇编。它是一个程序的最后一个源语句。244 .copy/.include伪指令告诉汇编器开始从其他文件中读源语句。读完以后,继续从当前文件中读源语句。从.copy文件中读的语句会打印在列表中,而从.include文件中读的语句不会打印在列表中。245C54x链接伪指令246链接链接链接器的主要作用链接器的主要作用根据链接命令或链接根据链接命令或链接命令文件命令文件(.cmd文件),将一个文件),将一个或多个或多个COFF目标文件(目标文件(.obj文件)链

188、接起来,生成存文件)链接起来,生成存储器映射文件(储器映射文件(.map文件)和可执行的输出文件文件)和可执行的输出文件(.out文件)。文件)。链接器提供命令语言来控制存储器结构、输出段链接器提供命令语言来控制存储器结构、输出段的定义以及将变量和符号地址建立联系:的定义以及将变量和符号地址建立联系:MEMORY伪指令伪指令对存储器中要用到的几个部分(区间)对存储器中要用到的几个部分(区间)进行命名,并说明它们的起始地址和长度。进行命名,并说明它们的起始地址和长度。SECTIONS伪指令伪指令确定输出各段放在存储器的什么位确定输出各段放在存储器的什么位置置247MEMORY指令用来对目标系统中

189、实际存在的并且可以在程序中使用的用来对目标系统中实际存在的并且可以在程序中使用的存储器空间进行定义。存储器空间进行定义。MEMORY指令的一般句法如下指令的一般句法如下(MEMORY必须大写必须大写)MEMORYPAGE 0:name 1(attr):orign=constant,length=constantPAGE 1:name n(attr):orign=constant,length=constant PAGE: 对一个存储空间加以标记对一个存储空间加以标记每一个每一个PAGE代表一个完全独立的地址空间。代表一个完全独立的地址空间。页号页号n最多为最多为255,取决于目标存储器的配置。

190、,取决于目标存储器的配置。通常通常PAGE 0定为定为程序存储器程序存储器,PAGE 1定为定为数据存储器数据存储器。若不指定若不指定PAGE,则链接器默认为指定了,则链接器默认为指定了PAGE 0。248Name: 对存储器区间所取的名字。对存储器区间所取的名字。不同不同PAGE上的存储器区间可以取相同的名字,但在同一上的存储器区间可以取相同的名字,但在同一PAGE内的名字不能相同,且不许重叠配置。内的名字不能相同,且不许重叠配置。Origin: 存储区间的起始地址。存储区间的起始地址。键入键入origin、org或或o都可都可Length:存储区间的长度。存储区间的长度。键入键入lengt

191、h、len或或l都可以都可以Attr:指定所命名的存储器区间的属性,是一个可选项指定所命名的存储器区间的属性,是一个可选项 。如果有选项,应写在括号内。如果有选项,应写在括号内。当输出段定位到存储器时,可利用属性加以限制。当输出段定位到存储器时,可利用属性加以限制。属性选项一共有属性选项一共有4项:项:R 指定可以对该存储区执行读操作。指定可以对该存储区执行读操作。W 指定可以对该存储区执行写操作。指定可以对该存储区执行写操作。X 指定该存储区可以装入可执行的程序代码。指定该存储区可以装入可执行的程序代码。I 指定可以对该存储区进行初始化。指定可以对该存储区进行初始化。该项缺省则包含全部该项缺

192、省则包含全部4项属性。项属性。249例例:MEMORY PAGE 0: ROM: origin=0C00h,length=1000h PAGE 1: SCRATCH: origin=60h, length=20h ONCHIP: origin=80h, length=200h程序存储器程序存储器:程序存储器中命名了一个名为程序存储器中命名了一个名为ROM的区间,该区间起始地址为的区间,该区间起始地址为C00h,长度,长度为为1000h(4k字)字)数据存储器数据存储器:命名为命名为SCRATCH的区间,起始地址为的区间,起始地址为60H,长度为,长度为20h(32字)。字)。命名为命名为ONC

193、HIP的区间,起始地址为的区间,起始地址为80h,长度为,长度为200h( 512字)。字)。 250 SECTIONS 指令指令SECTIONS 指令的任务如下:指令的任务如下:说明如何将输入段组合成输出段。说明如何将输入段组合成输出段。在可执行程序中定义输出段。在可执行程序中定义输出段。规定各输出段在存储器中的存放位置。规定各输出段在存储器中的存放位置。允许重新命名输出段。允许重新命名输出段。关于关于输入段输入段和和输出段输出段。一个工程中以一个工程中以.asm和和.c为后缀的文件经汇编器汇为后缀的文件经汇编器汇编后得到后缀为编后得到后缀为.obj的目标文件,的目标文件,.obj文件作为链

194、接器的输入文件进行文件作为链接器的输入文件进行链接,所以,链接,所以,.obj文件中的各个段称为输入段。链接得到可执行的输出文件中的各个段称为输入段。链接得到可执行的输出文件(后缀为文件(后缀为.out),输出文件中的段就称为输出段。),输出文件中的段就称为输出段。SECTIONS 命令的一般句法如下命令的一般句法如下(SECTIONS必须大写必须大写)SECTIONS name:property,property,property, name:property,property,property, name:property,property,property, 每一个输出段的说明都从段名开

195、始。每一个输出段的说明都从段名开始。 段名后面是一行说明段的内容和如何给段分配存储单元的段名后面是一行说明段的内容和如何给段分配存储单元的性能参数性能参数。251一个段可能的性能参数有:一个段可能的性能参数有: Load allocationLoad allocation:定义将输出段加载到存:定义将输出段加载到存储器中的什么位置。储器中的什么位置。 Run allocation Run allocation:定义输出段在存储器的什定义输出段在存储器的什么位置上开始运行么位置上开始运行 Input sectionsInput sections:定义由哪些输入段组成输定义由哪些输入段组成输出段出

196、段 Section type Section type:为输出段定义特殊形式的标为输出段定义特殊形式的标记记 Fill value Fill value:对未初始化空单元定义一个数对未初始化空单元定义一个数值值252Load allocation定义将输出段加载到存储器中的什么位置。定义将输出段加载到存储器中的什么位置。句法:句法:load=allocation,或者,或者allocation.text: load=0x1000 将输出段将输出段.text定位到特定的地址定位到特定的地址0x1000。.text: ROM 将输出段将输出段.text定位到命名为定位到命名为ROM的存储区的存储区

197、.bss: (RW) 将输出段将输出段.bss定位到属性为定位到属性为R、W的存储区的存储区将输出段将输出段.bss定位到一个定位到一个n字储存器块的任何一个位置字储存器块的任何一个位置.text: PAGE0 将输出段将输出段.text定位到定位到PAGE 0。如果要用一个以上参数,可以将它们排成一行,例如:如果要用一个以上参数,可以将它们排成一行,例如:.text: ROM align 16 PAGE2.text: load=(ROM align (16) PAGE(2)253Run allocation定义输出段在存储器的什么位置上开始运行。句法:run=allocation或者用大于号

198、代替等号 runallocation加载地址和执行程序地址通常是相同的,但可以把程序加载区和运行区分开先将程序加载到ROM,然后在RAM中以较快的速度运行用SECTIONS命令让链接器对这个段定位两次一次是设置加载地址,另一次是设置运行地址。如:fir: load=ROM,run=RAM 254Input sections定义由哪些输入段组成输出段。句法:input_setions大多数情况下,在SECTIONS命令中是不列出每个输入文件的输入段的段名的:SECTIONS .text:*(.text) .data:*(.data) .bss: *(.bss)或或SECTIONS .text:

199、.data: .bss:链接时,链接器就将所有输入文件的链接时,链接器就将所有输入文件的.text段链接成段链接成.text输出输出段(其它段也一样)段(其它段也一样)255也可以用明确的文件名和段名来规定输入段:也可以用明确的文件名和段名来规定输入段:一个工程中可以有多个一个工程中可以有多个.asm或或.c为后缀的文件,经汇编后得为后缀的文件,经汇编后得到多个到多个.obj的文件,如:的文件,如:f1.obj、f2.obj、f3.obj、f4.obj等。等。下面例子中明确地用文件名和段名来指定输入段。下面例子中明确地用文件名和段名来指定输入段。SECTIONS text: /*创建创建 .t

200、ext 输出段输出段 */ f1.obj(.text) /*链接来自链接来自f1.obj的的.text 段段*/ f2.obj(sec1) /*链接来自链接来自f2.obj的的sec1 段段*/ f3.obj /*链接来自链接来自 f3.obj 的所有段的所有段 */ f4.obj(.text,sec2) /*链接来自链接来自f4.obj的的.text 段和段和sec2 段段 */ 256Section type为输出段定义特殊形式的标记。句法:type=COPY或者type=DSECT或者type=NOLOADFill value对未初始化空单元定义一个数值。句法:fill=value或者n

201、ame:.=value257缺省算法缺省算法如果没有利用如果没有利用MEMORY和和SECTIONS命令,链接器就按缺省算法来命令,链接器就按缺省算法来定位输出段:定位输出段:MEMORYPAGE0: PROG: orign=0x0080, length=0xFF00;PAGE1: DATA: orign=0x0080, length= 0xFF80 ; SECTIONS.text: PAGE=0.data : PAGE=0.cinit: PAGE=0.bss: PAGE=1将所有的将所有的.text输入段,链接成一个输入段,链接成一个.text输出段,成输出段,成为一个可执行的输出文件;为一

202、个可执行的输出文件;所有的所有的.data输入段组合成输入段组合成.data输出段。输出段。将将.text和和.data段定位到配置为段定位到配置为PAGE0上的存储器,上的存储器,即程序存储空间。即程序存储空间。所有的所有的.bss输入段则组合成一个输入段则组合成一个.bss输出段,并由输出段,并由链接器定位到配置为链接器定位到配置为PAGE1上的存储器上,即数上的存储器上,即数据存储空间。据存储空间。如果输入文件中包含有自定义已初始化段(如上如果输入文件中包含有自定义已初始化段(如上面的面的.cinit段),则链接器将它们定位到程序存储段),则链接器将它们定位到程序存储器,紧随器,紧随.d

203、ata段之后。段之后。如果输入文件中包括有自定义未初始段,则链接如果输入文件中包括有自定义未初始段,则链接器将它们定位到数据存储器,并紧随器将它们定位到数据存储器,并紧随.bss段之后。段之后。 258练习练习1、为变量保留空间的段可以由什么段定义伪指令来建立?2、存放可执行代码的段可以由什么段定义伪指令来建立?3、存放初始化数据的段可以由什么段定义伪指令来建立?4、指令LD x,A中的起什么作用?不用该符号行吗?2591、为变量保留空间的段可以由什么段定义伪指令来建立?答:.bss或.usect2、存放可执行代码的段可以由什么段定义伪指令来建立?答:.text或.sect3、存放初始化数据的

204、段可以由什么段定义伪指令来建立?答:.data或.sect4、指令LDx,A中的起什么作用?不用该符号行吗?答:表示对变量x采用直接寻址。可以不用该符号而直接写x练习答案练习答案2605、分别说明下面两条指令的作用:LD#x,DPSTM#x,AR46、命令文件中“PAGE0”和“PAGE1”分别代表什么?7、假设命令文件的SECTIONS伪指令部分为SECTIONS.text:PROG PAGE 0.data:DATA PAGE 1请说明其中“.text: PROG PAGE 0”的含意。的含意。2615、分别说明下面两条指令的作用:LD#x,DPSTM#x,AR4答:指令LD#x,DP的作用

205、是将变量x所在的存储单元的页号放入数据页指针DP中,准备对变量x采用直接寻址;指令STM#x,AR4的作用是将变量所在单元的地址放入AR4中,准备采用间接寻址。6、命令文件中“PAGE0”和“PAGE1”分别代表什么?答:分别代表程序存储器和数据存储器。7、假设命令文件的SECTIONS伪指令部分为SECTIONS.text: PROG PAGE 0.data: DATA PAGE 1请说明其中“.text: PROG PAGE 0”的含意。的含意。答:将输出段答:将输出段.text定位到程序存储器中命名为定位到程序存储器中命名为PROG的存的存储器区间中储器区间中2628、说明伪指令、说明伪

206、指令.mmregs 的作用。的作用。答:答:.mmregs 定义存储器映射寄存器的符号名,这样就可定义存储器映射寄存器的符号名,这样就可以用以用AR0、PMST等助记符替换实际的存储器地址。等助记符替换实际的存储器地址。9、在文件的链接过程中,需要用到linker命令文件。请设计一个命令文件,要求为:链接器要链接的目标文件有两个:file1.obj、file2.obj。生成存储器映像文件file.map,输出文件file.out。存储器模型及输出段配置要求如下:程序存储器的0xff800xffff为中断向量段(.vectors)所处位置程序存储器的0x10000x2000为程序段(.text)

207、所处位置数据存储器0x20000x2fff为数据段(.data)所处位置数据存储器0x30000x3fff为堆栈段(.stack)所处位置263练习答案练习答案答:file1.objfile2.obj-ofile.out-mfile.mapMEMORYPAGE0:EPROM:org=01000h,len=1001hVECS: org=0FF80h,len=80hPAGE1:DARAM:org=2000h,len=1000hSPRAM:org=3000h,len=1000hSECTIONS.vectors:VECSPAGE0.text:EPROMPAGE0.data:SPRAMPAGE1.sta

208、ck:DARAMPAGE1264第五章DSP软件开发与设计教学目的1、了解TMS320C54x软件开发过程。2、掌握用汇编语言编写DSP程序的方法。3、了解汇编语言程序的编辑、汇编和链接过程。4、了解用C语言编写DSP程序的方法。教学重点汇编语言编程。教学难点1、汇编语言编程;2、汇编语言程序的编辑、汇编和链接过程;3、用C语言编写DSP程序的方法。265课本P211习题5.1,5.3,5.4,5.10课外作业266第五章DSP软件开发与设计主要内容:主要内容:TMS320C54x软件开发过程;软件开发过程;汇编语言编程;汇编语言编程;C语言编程。语言编程。267开发过程268269汇编语言编

209、程的开发过程建立一个项目*.pjt。用编辑器编辑一个或多个源文件,如:file1.asm、file2.asm添加到*.pjt中。根据实际应用编辑一个命令文件file1.cmd汇编链接270编辑、汇编和链接过程编辑、汇编和链接过程编辑编辑汇编汇编链接链接调试调试固化用户程序固化用户程序调试:仿真器、硬件仿真器、评价模块调试:仿真器、硬件仿真器、评价模块271汇编语言程序设计汇编语言程序设计一、程序的控制与转移程序的控制与转移包括:包括:分支转移分支转移 子程序操作子程序操作(调用与返回程序调用与返回程序) 循环控制(重复操作)循环控制(重复操作)1、分支转移、分支转移无条件分支转移:无条件执行分

210、支转移;无条件分支转移:无条件执行分支转移;无条件分支转移:无条件执行分支转移;无条件分支转移:无条件执行分支转移;条件分支转移:要在满足一个或多个条件时才执行分支转移;条件分支转移:要在满足一个或多个条件时才执行分支转移;条件分支转移:要在满足一个或多个条件时才执行分支转移;条件分支转移:要在满足一个或多个条件时才执行分支转移;远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。远程分支转移:允许分支转移到扩展存储器。 表5-1无条件分支转移指令指令说明周期数(非延迟/延迟)BD用指令中给出的地址加载PC4/2BACCD用指

211、定累加器(A或B)的低16位作为地址加载PC6/4272无条件分支转移指令的一般形式无条件分支转移指令的一般形式:BD pmad BACCD src例例1(1)B 2000h (2)BD 1000h ANDM #0FFFFh,*AR1 (3)BACC A (4)BACCD B表5-2条件分支转移指令指令说明周期数(条件满足/不满足)非延迟延迟BCD如果指令中的所有条件都得到满足,就用指令中给出的地址加载PC5/33/3BANZD如果指令中所指定的辅助寄存器不等于0,就用指令中给出的地址加载PC(用于循环)4/22/2273指令的一般形式指令的一般形式:BCD pmad,cond,cond ,c

212、ond BANZD pmad,Sind表5-3条件指令中的各种条件274表5-4多条件指令中的条件组合第一组第二组A类B类A类B类C类EQOVTCCBIONEQNOVNTCNCNBIOLTLEQGTGEQ275例例2 条件分支转移指令条件分支转移指令BC举例。举例。 (1)BC new, AGT, AOV ; 若累加器若累加器A0且溢出,则转至且溢出,则转至new,否则往下,否则往下执行执行 单条指令中的多个条件是单条指令中的多个条件是“与与”的关系。的关系。 如果需要两个条件相如果需要两个条件相“或或”,只能写成两条指令。如上一条,只能写成两条指令。如上一条指令改为指令改为“若累加器若累加器

213、A大于大于0或溢出,则转移至或溢出,则转移至new”,可以写成如,可以写成如下两条指令下两条指令 BC new, AGT BC new, AOV (2)BANZ loop,*AR2-表5-5远分支转移指令(46页)指令说明周期数(非延迟/延迟)FBD可以转移到由指令所给定的23位地址(C5402为20位地址)4/2FBACCD可以转移到指定累加器所给定的23位地址(C5402为20位地址)6/4276练习练习1、试设计一个大小为200个单元的堆栈并初始化堆栈指针。2、用条件分支转移指令BANZ编写使NOP指令执行20次的程序段。解:STM#19,AR1LOOP:NOPBANZLOOP,*AR1

214、-2772、调用与返回程序、调用与返回程序 当调用子程序或函数时,当调用子程序或函数时,DSP就会中断原先的程序,转移到就会中断原先的程序,转移到程序存储器的其他地址继续运行。调用时,程序存储器的其他地址继续运行。调用时,下条指令下条指令的地址被的地址被压入堆栈,以便返回时将这个地址弹出至压入堆栈,以便返回时将这个地址弹出至PC,使中断的程序继,使中断的程序继续执行。续执行。两种形式两种形式: 无条件无条件调用与返回,调用与返回,有条件有条件调用与返回。调用与返回。表5-6无条件调用与返回指令278无条件调用指令的一般形式无条件调用指令的一般形式:CALLD pmad CALAD src例例3

215、(1)CALL 3333h (2)CALLD 1000h ANDM #0FFFFh,*AR1 (3)CALA A (4)CALAD B NOP NOP表5-7条件调用与返回指令279条件调用指令的一般形式:条件调用指令的一般形式: CCD pmad,cond,cond ,cond 例例4(1)CC 2222h,AGT (2)CCD 1000h,BOV ANDM #0FFFFh,*AR1表5-8远调用和远返回指令280二、二、 堆堆栈的使用方法的使用方法 当程序调用当程序调用当程序调用当程序调用中断服务程序中断服务程序中断服务程序中断服务程序或或或或子程序子程序子程序子程序时,需要将程序计数器时

216、,需要将程序计数器时,需要将程序计数器时,需要将程序计数器PCPCPCPC的值和一些重要的寄存器值进行压栈保护,以便程序返回时能的值和一些重要的寄存器值进行压栈保护,以便程序返回时能的值和一些重要的寄存器值进行压栈保护,以便程序返回时能的值和一些重要的寄存器值进行压栈保护,以便程序返回时能从间断处继续执行。从间断处继续执行。从间断处继续执行。从间断处继续执行。 C54x C54x C54x C54x提供一个用提供一个用提供一个用提供一个用16161616位堆栈指针位堆栈指针位堆栈指针位堆栈指针SPSPSPSP寻址的软件堆栈。寻址的软件堆栈。寻址的软件堆栈。寻址的软件堆栈。堆栈用法堆栈用法: 压

217、入操作:压入操作:SP先减先减1,然后再将数据压入栈顶。,然后再将数据压入栈顶。 弹出操作:数据弹出后,再将弹出操作:数据弹出后,再将SP加加1。堆栈设置堆栈设置:size.set100stack .usect“STK”, size ;自定义一个名为STK的保留空间,共100个单元 STM #stack+size, SP ;将这个保留空间的下一个地址;(#stack+size)赋给SP,作为栈底 设设置好堆置好堆置好堆置好堆栈栈后,就可以使用堆后,就可以使用堆后,就可以使用堆后,就可以使用堆栈栈了,如:了,如:了,如:了,如: CALL pmad CALL pmad CALL pmad CAL

218、L pmad ;(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS(SP)-1SP,(PC)+2TOS,pmadPCpmadPCpmadPCpmadPC RET RET RET RET ;(TOS)PC,(SP)+1SP (TOS)PC,(SP)+1SP (TOS)PC,(SP)+1SP (TOS)PC,(SP)+1SP 281三、三、 重复操作重复操作重复操作是使重复操作是使CPU重复执行一条指令或一段指令。可以分为单重复执行一条指令或一段指令。可以分为单指令重复和块程序重复。指令重复和块程序重复。 有以下有以下3条指令。条指令。 R

219、PT(重复下条指令重复下条指令)、 RPTZ(累加器清累加器清0并重复下条指令并重复下条指令) RPTB(块重复指令块重复指令)。(1) 重复执行单条指令重复执行单条指令含义:含义:RPT或或RPTZ允许重复执行紧随其后的那一条指令。允许重复执行紧随其后的那一条指令。重复次数:重复次数:如重复执行如重复执行n次,则重复指令中计数值为次,则重复指令中计数值为n1。说明:与BANZ指令进行循环相比,效率要高得多。特别是对于那些乘法累加和数据传送的多周期指令(如MAC、MVDK、MVDP和MVPD等),在执行一次之后就变成了单周期指令,大大提高了运行速度。282例例例例5 5 5 5 对对数数数数组

220、进组进行初始化,使行初始化,使行初始化,使行初始化,使x8=0,0,0,0,0,0,0,0x8=0,0,0,0,0,0,0,0x8=0,0,0,0,0,0,0,0x8=0,0,0,0,0,0,0,0。 .bss x, 8 .bss x, 8 .bss x, 8 .bss x, 8 STM #x, AR1 STM #x, AR1 STM #x, AR1 STM #x, AR1 LD #0, A LD #0, A LD #0, A LD #0, A RPT #7 RPT #7 RPT #7 RPT #7 STL STL STL STL A,*AR1+A,*AR1+A,*AR1+A,*AR1+ .b

221、ss x, 8 .bss x, 8 .bss x, 8 .bss x, 8 STM #x, AR1 STM #x, AR1 STM #x, AR1 STM #x, AR1 RPTZ A, #7RPTZ A, #7RPTZ A, #7RPTZ A, #7 STL A, *AR1+STL A, *AR1+STL A, *AR1+STL A, *AR1+注意:注意:注意:注意:注意:注意: 对对对x8x8x8x8x8x8中的中的中的中的中的中的8 8 8 8 8 8个元素置个元素置个元素置个元素置个元素置个元素置0 0 0 0 0 0,重复次数,重复次数,重复次数,重复次数,重复次数,重复次数为为为

222、7 7 7 7 7 7,即,即,即,即,即,即执执执行行行行行行1 1 1 1 1 1次次次次次次STL ASTL ASTL ASTL ASTL ASTL A, AR1+AR1+AR1+AR1+AR1+AR1+指令后,再重复指令后,再重复指令后,再重复指令后,再重复指令后,再重复指令后,再重复执执执行行行行行行7 7 7 7 7 7次;次;次;次;次;次; RPTZ RPTZ RPTZ RPTZ RPTZ RPTZ指令指令指令指令指令指令设设设定重复次数后,再定重复次数后,再定重复次数后,再定重复次数后,再定重复次数后,再定重复次数后,再对对对累加器清零。累加器清零。累加器清零。累加器清零。累

223、加器清零。累加器清零。 283(2)块程序重复操作块程序重复操作 对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序块重复操作。块重复操作。块重复操作。块重复操作。块重复操作。块重复操作。 用用用用用用于于于于于于块块块块块块程程程程程程序序序序序序重重重重重重复复复复复复操操操操操操作作作作作作指指指指指指令令令令令令为为为为为为RPTBRPTBRPTBRPTBRPTBRPTB和和和和和和RPTBDRPT

224、BDRPTBDRPTBDRPTBDRPTBD。程程程程程程序序序序序序块块块块块块的的的的的的长长长长长长度度度度度度由由由由由由块块块块块块程程程程程程序序序序序序重重重重重重复复复复复复指指指指指指令令令令令令RPTBRPTBRPTBRPTBRPTBRPTB的的的的的的操操操操操操作作作作作作数数数数数数来来来来来来确确确确确确定定定定定定,而重复次数由而重复次数由而重复次数由而重复次数由而重复次数由而重复次数由块重复计数器块重复计数器块重复计数器块重复计数器块重复计数器块重复计数器BRCBRCBRCBRCBRCBRC来决定。来决定。来决定。来决定。来决定。来决定。 通通通通通通常常常常常

225、常RPTBRPTBRPTBRPTBRPTBRPTB的的的的的的操操操操操操作作作作作作数数数数数数为为为为为为程程程程程程序序序序序序块块块块块块的的的的的的结结结结结结束束束束束束地地地地地地址址址址址址,而而而而而而重重重重重重复复复复复复次数可用次数可用次数可用次数可用次数可用次数可用STMSTMSTMSTMSTMSTM指令对指令对指令对指令对指令对指令对BRCBRCBRCBRCBRCBRC进行设定。进行设定。进行设定。进行设定。进行设定。进行设定。块重复指令的一般形式为块重复指令的一般形式为块重复指令的一般形式为块重复指令的一般形式为块重复指令的一般形式为块重复指令的一般形式为 RPT

226、BD pmadRPTBD pmadRPTBD pmad 284例例6 对数组对数组x5中的每个元素加中的每个元素加1。 .bss x, 5begin: LD #1, 16, B STM #4,BRC ;BRC赋值为赋值为4,则代码块执行则代码块执行5次次 STM #x,AR4 RPTB next-1 ;next-1为循环结束地址为循环结束地址 ADD *AR4,16,B,A STH A,*AR4+next: LD #0, B 用next1作为结束地址是恰当的。如果用循环回路中最后一条指令(STH指令)的标号作为结束地址,若最后一条指令是单字指令也可以,若是双字指令,就不对了。285四、四、 循

227、环结构程序循环结构程序 在程序在程序在程序在程序在程序在程序设计时设计时设计时,经经经常需要重复常需要重复常需要重复常需要重复常需要重复常需要重复执执执行某一段程序。利用行某一段程序。利用行某一段程序。利用行某一段程序。利用行某一段程序。利用行某一段程序。利用BANZ BANZ BANZ BANZ BANZ BANZ ( ( ( ( ( (当当当当当当辅辅辅助寄存器不助寄存器不助寄存器不助寄存器不助寄存器不助寄存器不为为为0 0 0 0 0 0时转时转时转移移移移移移) ) ) ) ) )指令可指令可指令可指令可指令可指令可实现实现实现循循循循循循环计环计环计数和操作。数和操作。数和操作。数和

228、操作。数和操作。数和操作。 循环操作指令:循环操作指令:循环操作指令:循环操作指令:循环操作指令:循环操作指令: BANZ BANZ BANZ BANZ BANZ BANZ 转移目的地址,辅助寄存器转移目的地址,辅助寄存器转移目的地址,辅助寄存器转移目的地址,辅助寄存器转移目的地址,辅助寄存器转移目的地址,辅助寄存器 指令功能:指令功能:指令功能:指令功能:指令功能:指令功能:当辅助寄存器不为当辅助寄存器不为当辅助寄存器不为当辅助寄存器不为当辅助寄存器不为当辅助寄存器不为0 0 0 0 0 0时时时时时时, , , , , ,则转至转移目的地址则转至转移目的地址则转至转移目的地址则转至转移目的

229、地址则转至转移目的地址则转至转移目的地址, , , , , ,否则否则否则否则否则否则顺序执行。设辅助寄存器的初值为顺序执行。设辅助寄存器的初值为顺序执行。设辅助寄存器的初值为顺序执行。设辅助寄存器的初值为顺序执行。设辅助寄存器的初值为顺序执行。设辅助寄存器的初值为N N N N N N,则循环,则循环,则循环,则循环,则循环,则循环N+1N+1N+1N+1N+1N+1次次次次次次 1 1 1 1、循环操作循环操作循环操作循环操作286例例例例7 7 7 7 .bss x,10 .bss x,10 .bss x,10 .bss x,10 ; ;给给x x保留保留1010个空间个空间 .bss

230、y,1.bss y,1.bss y,1.bss y,1 ; ;给给y y保留保留1 1个空间个空间 STM #x,AR1STM #x,AR1STM #x,AR1STM #x,AR1 ; ;设置数据段的首地址设置数据段的首地址 STM #9,AR2STM #9,AR2STM #9,AR2STM #9,AR2 ; ;设置循环计数值为设置循环计数值为9 9,则循环,则循环1010次次 LD #0,ALD #0,ALD #0,ALD #0,A ; ;累加器清累加器清0 0loop:loop:loop:loop: ADD *AR1+,AADD *AR1+,AADD *AR1+,AADD *AR1+,A

231、; ;累加运算,并修改地址累加运算,并修改地址 BANZ loop,*AR2-BANZ loop,*AR2-BANZ loop,*AR2-BANZ loop,*AR2- ; ;若计数值不为若计数值不为0 0,则循环,并计数值减,则循环,并计数值减1 1 若计数值为若计数值为0 0,则结束循环,则结束循环 STL A, ySTL A, ySTL A, ySTL A, y ; ;累加和存入累加和存入y y中中 用用用用AR2AR2AR2AR2作为循环计数器,由作为循环计数器,由作为循环计数器,由作为循环计数器,由BANZBANZBANZBANZ实现程序的循环控制。实现程序的循环控制。实现程序的循环

232、控制。实现程序的循环控制。注意:注意:注意:注意:注意:注意: BANZ loop, *AR2-BANZ loop, *AR2-BANZ loop, *AR2-BANZ loop, *AR2-BANZ loop, *AR2-BANZ loop, *AR2- ;先判断,再修正先判断,再修正先判断,再修正先判断,再修正先判断,再修正先判断,再修正AR2=AR2-1AR2=AR2-1AR2=AR2-1AR2=AR2-1AR2=AR2-1AR2=AR2-12872 2 2 2、 循环嵌套循环嵌套循环嵌套循环嵌套 循环嵌套是程序编制中常用的技巧,可以用来简化较为复杂的程序。循环嵌套是程序编制中常用的技巧

233、,可以用来简化较为复杂的程序。循环嵌套是程序编制中常用的技巧,可以用来简化较为复杂的程序。循环嵌套是程序编制中常用的技巧,可以用来简化较为复杂的程序。 RPTRPTRPTRPT重重重重复复复复操操操操作作作作可可可可以以以以和和和和块块块块重重重重复复复复操操操操作作作作RPTBRPTBRPTBRPTB以以以以及及及及循循循循环环环环操操操操作作作作BANZBANZBANZBANZ进进进进行行行行嵌嵌嵌嵌套套套套,实现多重嵌套。实现多重嵌套。实现多重嵌套。实现多重嵌套。 三重循三重循三重循三重循三重循三重循环环环嵌套程序嵌套程序嵌套程序嵌套程序嵌套程序嵌套程序结结结构:构:构:构:构:构: S

234、TM #L-1,AR7STM #L-1,AR7STM #L-1,AR7STM #L-1,AR7 ;2T;2T;2T;2T loop: loop: loop: loop: 外部外部外部外部 STM #M-1,BRC STM #M-1,BRC STM #M-1,BRC STM #M-1,BRC ;2T;2T;2T;2T RPTB r2nd-1RPTB r2nd-1RPTB r2nd-1RPTB r2nd-1 ;4T;4T;4T;4T 中间中间中间中间 中间中间中间中间 RPT #N-1RPT #N-1RPT #N-1RPT #N-1 ;1T;1T;1T;1T 内部内部内部内部 中间中间中间中间 中

235、间中间中间中间 r r r r2nd:2nd:2nd:2nd: 外部外部外部外部 外部外部外部外部 BANZ loop,*AR7-BANZ loop,*AR7-BANZ loop,*AR7-BANZ loop,*AR7- ;4T;4T;4T;4T内内内内层层层层中中中中层层层层外外外外层层层层288五、五、 数据块传送程序数据块传送程序共有共有4种类型(种类型(10条指令):条指令): (1) 程序存储器程序存储器数据存储器数据存储器(MVPD,MVDP)。 (2) 数据存储器数据存储器数据存储器数据存储器(MVDK,MVKD,MVDD)。(3) 数据存储器数据存储器MMR(MVMD、MVDM

236、,MVMM)(4) 程序存储器程序存储器(由由ACC寻址寻址)数据存储器数据存储器(READA,WRITA)这些指令的特点如下:这些指令的特点如下:传送速度比加载和存储指令要快;传送速度比加载和存储指令要快;传送数据不需要通过累加器;传送数据不需要通过累加器;可以寻址程序存储器;可以寻址程序存储器;与与RPT相结合时,都变成单周期指令,可以实现数据块传送相结合时,都变成单周期指令,可以实现数据块传送。 289【例【例4.15】 编写一段程序,首先对数组编写一段程序,首先对数组x20赋值,再将数据存储器中的数组赋值,再将数据存储器中的数组x20复制到数组复制到数组y20。 .title“exp1

237、5.asm” .mmregs .bss x, 20 .bss y, 20 .data table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 .defstart .textStart: STM #x, AR1 RPT#19 MVPD table, *AR1+; 程序存储器传送到数据存储器程序存储器传送到数据存储器 STM #x, AR2 STM #y, AR3 RPT #19 MVDD *AR2+, *AR3+ ; 数据存储器传送到数据存储器数据存储器传送到数据存储器end: Bend .end290/ exp15.cmd

238、*/链接命令文件链接命令文件MEMORY PAGE 0: EPROM:org=0E000hlen=01F80h VECS: org=0FF80hlen=00080h PAGE 1: SPRAM:org=00060hlen=00030h DARAM:org=00090hlen=01380hSECTIONS .vectors:VECSPAGE 0 .text: EPROMPAGE 0 .data: EPROMPAGE 0 .bss: SPRAMPAGE 1291292六、六、 小数运算小数运算 采用小数运算采用小数运算采用小数运算采用小数运算时时,设设定小数点在定小数点在定小数点在定小数点在161

239、61616位中的某个位置称位中的某个位置称位中的某个位置称位中的某个位置称为为定定定定标标。 小数点在小数点在小数点在小数点在16161616位数中的位置不同,可以表示不同大小和不同位数中的位置不同,可以表示不同大小和不同位数中的位置不同,可以表示不同大小和不同位数中的位置不同,可以表示不同大小和不同精度的小数。精度的小数。精度的小数。精度的小数。 数的定数的定数的定数的定标标通常有通常有通常有通常有Q Q Q Q表示法表示法表示法表示法和和和和S S S S表示法,如表示法,如表示法,如表示法,如Q0Q0Q0Q0,Q1Q1Q1Q1,Q15Q15Q15Q15。Q Q Q Q越大,可以表示的数的

240、范越大,可以表示的数的范越大,可以表示的数的范越大,可以表示的数的范围围越小,但精度越高。越小,但精度越高。越小,但精度越高。越小,但精度越高。 在具体的定点程序中,必在具体的定点程序中,必在具体的定点程序中,必在具体的定点程序中,必须须根据具体情况适当根据具体情况适当根据具体情况适当根据具体情况适当选择选择合适的合适的合适的合适的定定定定标标。 1.1.1.1. 数的定标数的定标数的定标数的定标 2.2.2.2. 小数的小数的小数的小数的表示表示表示表示方法方法方法方法 C54xC54xC54xC54x采用基于采用基于采用基于采用基于2 2 2 2的的的的补码补码小数表示形式。最高位小数表示

241、形式。最高位小数表示形式。最高位小数表示形式。最高位为为符号位。一个符号位。一个符号位。一个符号位。一个16161616位位位位2 2 2 2的的的的补码补码小数(小数(小数(小数(Q15Q15Q15Q15格式)的每一位的格式)的每一位的格式)的每一位的格式)的每一位的权值为权值为 MSB LSB 0/1(符号位符号位) . 2-1 2-2 2-15例如:例如:例如:例如:00000010.10100000200000010.1010000021 1+2+2-1-1+2+2-3-3 = 2.625 = 2.625 293表5-9Q表示、S表示及数值范围294十进制纯小数转换为十进制纯小数转换为

242、十进制纯小数转换为十进制纯小数转换为2 2 2 2的补码小数(的补码小数(的补码小数(的补码小数(定点数定点数定点数定点数)的方法:的方法:的方法:的方法: 正数:正数:正数:正数:乘以乘以乘以乘以32 76832 768(2 21515),其整数部分转换成),其整数部分转换成),其整数部分转换成),其整数部分转换成1616进制数;进制数;进制数;进制数; 负负负负数数数数:其其其其绝绝绝绝对对对对值值值值乘乘乘乘以以以以3276832768,整整整整数数数数部部部部分分分分转转转转换换换换成成成成1616进进进进制制制制数数数数后后后后取取取取反反反反加加加加1 1。 如:如:如:如: 0.

243、5 4000H 0.5 4000H 0.5 4000H 0.5 4000H 0.25 2000H 0.25 2000H 0.25 2000H 0.25 2000H 0 0000H 0 0000H 0 0000H 0 0000H -0.25 E000H -0.25 E000H -0.25 E000H -0.25 E000H -0.5 C000H -0.5 C000H -0.5 C000H -0.5 C000H -1 8000H -1 8000H -1 8000H -1 8000H0.5320.5320.5320.532 768=4000H768=4000H768=4000H768=4000H0.

244、25320.25320.25320.2532 768=2000H768=2000H768=2000H768=2000H032032032032 768=0000H768=0000H768=0000H768=0000H(0.2532(0.2532(0.2532(0.2532 768)768)768)768)补补补补=E000H=E000H=E000H=E000H(0.532(0.532(0.532(0.532 768)768)768)768)补补补补=C000H=C000H=C000H=C000H(132(132(132(132 768)768)768)768)补补补补=8000H=8000H=

245、8000H=8000H注意注意注意注意:汇编时,不能直接写成十进制小数汇编时,不能直接写成十进制小数汇编时,不能直接写成十进制小数汇编时,不能直接写成十进制小数。 如:如:0.9070.907 .word 907*32768/1000.word 907*32768/1000 295问题:问题:两个带符号小数相乘,得到的积带有两个带符号小数相乘,得到的积带有两位符号两位符号位位。解决解决冗余符号位冗余符号位的办法:的办法:在程序中设定状态寄存器在程序中设定状态寄存器ST1中的中的FRCT(小数方式小数方式)位为位为1,在乘法器将结果传,在乘法器将结果传送至累加器时就能自动地左移送至累加器时就能自

246、动地左移1位,自动消去了冗余位,自动消去了冗余符号位。符号位。小数乘法编程时小数乘法编程时:应当先设置:应当先设置FRCT位:位: SSBX FRCT MPY *AR2,*AR3,A STH A, z3.3.3.3. 小数乘法与冗余符号位小数乘法与冗余符号位小数乘法与冗余符号位小数乘法与冗余符号位 296 例例例例 编制计算编制计算 的程序的程序 a1=0.3 a2=0.2 a3=-0.4 a4=0.1a1=0.3 a2=0.2 a3=-0.4 a4=0.1a1=0.3 a2=0.2 a3=-0.4 a4=0.1a1=0.3 a2=0.2 a3=-0.4 a4=0.1 x1=0.6 x2=0.

247、5 x3=-0.1 x4=-0.2 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2 .bss a,4.bss a,4.bss a,4.bss a,4 .bss x,4 .bss x,4 .bss x,4 .bss x,4 .bss y,1 .bss y,1 .bss y,1 .bss y,1 .data .data .data .data table: .word 3* table: .word 3* table: .word 3* table: .word 3*

248、32768327683276832768/ / / /10101010 .word 2*32768/10 .word 2*32768/10 .word 2*32768/10 .word 2*32768/10 .word -4*32768/10 .word -4*32768/10 .word -4*32768/10 .word -4*32768/10 .word 1*32768/10 .word 1*32768/10 .word 1*32768/10 .word 1*32768/10 .word 6*32768/10 .word 6*32768/10 .word 6*32768/10 .word

249、 6*32768/10 .word 5*32768/10 .word 5*32768/10 .word 5*32768/10 .word 5*32768/10 .word -1*32768/10 .word -1*32768/10 .word -1*32768/10 .word -1*32768/10 .word -2*32768/10 .word -2*32768/10 .word -2*32768/10 .word -2*32768/10axy297 .text.text.text.text start: start: start: start: SSBX FRCTSSBX FRCTSSB

250、X FRCTSSBX FRCT STM #a,AR1 STM #a,AR1 STM #a,AR1 STM #a,AR1 RPT #7 RPT #7 RPT #7 RPT #7 MVPD table,*AR1+MVPD table,*AR1+MVPD table,*AR1+MVPD table,*AR1+ STM #x,AR2STM #x,AR2STM #x,AR2STM #x,AR2 STM #a,AR3 STM #a,AR3 STM #a,AR3 STM #a,AR3 RPTZ A,#3 RPTZ A,#3 RPTZ A,#3 RPTZ A,#3 MAC *AR2+,*AR3+,AMAC *

251、AR2+,*AR3+,AMAC *AR2+,*AR3+,AMAC *AR2+,*AR3+,A STH A,y STH A,y STH A,y STH A,y done: B donedone: B donedone: B donedone: B doneaxy0.30.2-0.40.10.60.5-0.1-0.20.3298C语言编程C54xDSPC优化编译器分析器(parser)中间文件优化器(optimizer)高级版本的文件代码产生器(codegenerator)汇编语言源文件内部列表公用程序(interlistutility)扩展的汇编源文件汇编器(assembler)COFF目标文件

252、链接器(linker)可执行的目标文件299C优化编译器操作分步操作:用命令的方式实现集成环境:在CCS中设置Parser分析器Optimizer优化器CodeGen代码产生器Assembly汇编源文件选项3005.3.2C语言编程链接命令文件的设计C程序的开发过程:建立一个项目*.pjt。用编辑器编辑一个或多个C程序源文件,如:file1.c、file2.c添加到*.pjt中。对C程序进行编译形成汇编语言源文件file1.asm、file2.asm。根据实际应用编辑一个命令文件,file1.cmd汇编-链接301如何编写.cmd文件C编译器生成的段:成七个可以重定位的代码和数据段(已初始化段

253、和未初始化段)。已初始化段:有四个,包含数据和可执行代码.text段:包括可执行代码、字符串和常量。.cinit段:包括初始化常量和常数表。.const段:字符串常量和以const关键字定义的常量。.switch段:用于开关(switch)语句的数据表。通常.text、.cinit和.switch段可以链接到程序存储空间(page0)的ROM或RAM中去。.const段可以链接到系统ROM或RAM中去,但必须放在数据存储器(page 1) 302未初始化段:有三个段,用于保留存储空间(通常为RAM)三个段链接数据存储器(page1)系统RAM中。.bss段:保留全局和静态变量空间。在程序开始运

254、行时,C的引导(boot)程序将数据从cinit段拷贝到.bss段。.stack段:为C的系统堆栈分配存储空间,用于传递变量。.sysmem段:为动态存储器函数malloc,calloc,realloc分配存储器空间,若C程序未用到这些函数,则C编译器不产生该段。 303.stack与.sysmem段的空间大小定义:.stack与.sysmem段的大小由链接器决定。命令文件(*.CMD)中定义格式:-stack数值-heap数值缺省为1K字304例例5-7独立C/C+编程命令文件-c-mfile.map-ofile.outmain.objfile1.objfile2.obj-lrts.lib-

255、stack100h-heep100hMEMORYPAGE0:PROG:origin80h,1ength0EFDOh PAGE 1:DATA:origin80h, 1ength03F80hSECTIONS.text PROG PAGE 0 .cinit PROG PAGE 0 .switch PROG PAGE 0 .bss DATA PAGE 1 .const DATA PAGE 1 .sysmem DATA PAGE 1 .stack DATA PAGE 13055.4用C语言和汇编语言混合编程用C语言和汇编语言的混合编程方法主要有3种:独立编写C程序和汇编程序,分开编译或汇编形成各自的目标

256、代码模块,然后用链接器将C模块和汇编模块链接起来。直接在C程序的相应位置嵌入汇编语句。对C程序进行编译生成相应的汇编程序,然后对汇编程序进行手工优化和修改。306练习练习1、试设计一个大小为200个单元的堆栈并初始化堆栈指针。2、用条件分支转移指令BANZ编写使NOP指令执行20次的程序段。3、分别说明下面两条指令的作用:LD#x,DPSTM#x,AR44、在文件的链接过程中,需要用到linker命令文件。请设计一个命令文件,要求为:链接器要链接的目标文件有两个:file1.obj、file2.obj。生成存储器映像文件file.map,输出文件file.out。存储器模型及输出段配置要求如下

257、:程序存储器的0x20000x24ff为程序段(.text)所处位置数据存储器的0x00600x007f为.bss段所处位置数据存储器0x30000x3050为数据段(.data)所处位置数据存储器0x31000x3200为堆栈段(.stack)所处位置307.globalstart.mmregs.bssy,5.datatable: .word 1,2,3,4,5.textstart: STM#y,AR2RPT#4MVPDtable,*AR2+LD#1,BSTM#81h,AR5LD#0,ASTM#4,BRCSTM#y,AR5RPTB sub-1ADD*AR5,B,ASTLA,*AR5+sub:

258、LD#0,Bhere: Bhere5、阅读以下程序,写出运行结果。运行以上程序后,(81H)、(82H)、(83H)、(84H)和(85H)的值分别是多少?。3086、编写程序完成以下运算,要求用间接寻址方式。(1)-0.2+0.6;(2)0.3*0.8,用指令MPY实现。309练习答案练习答案1、试设计一个大小为200个单元的堆栈并初始化堆栈指针。解:size.set200stack .usect“STK”, size ;自定义一个名为STK的保留空间,共200个单元 STM #stack+size, SP ;将这个保留空间的下一个地址;(#stack+size)赋给SP,作为栈底2、用条件

259、分支转移指令BANZ编写使NOP指令执行20次的程序段。解:STM#19,AR1LOOP:NOPBANZLOOP,*AR1-3、分别说明下面两条指令的作用:LD#x,DPSTM#x,AR4答:指令LD#x,DP的作用是将变量x所在的存储单元的页号放入数据页指针DP中,准备对变量x采用直接寻址;指令STM#x,AR4的作用是将变量所在单元的地址放入AR4中,准备采用间接寻址。3104、答:file1.objfile2.obj-ofile.out-mfile.mapMEMORYPAGE0:EPROM:org=2000h,len=500hPAGE1:DARAM0:org=0060h,len=20hD

260、ARAM1:org=3000h,len=51hDARAM2:org=3100h,len=101hSECTIONS.text:EPROMPAGE0.bss:DARAM0PAGE1.data:DARAM1PAGE1.stack:DARAM2PAGE13115、运行以上程序后,(81H)、(82H)、(83H)、(84H)和(85H)的值分别是:2、3、4、5、66、编写程序完成以下运算,要求用间接寻址方式。(1)-0.2+0.6;(2)0.3*0.8,用指令MPYA实现。1)汇编语言源文件start:;-0.2+0.6*testADD*STM#z1,AR1STM#x1,AR2STM#y1,AR3S

261、T#-2*32768/10,*AR2;x1=0xE667(-0.199982)ST#6*32768/10,*AR3;y1=0x4CCC(0.599976)LD*AR2,A;loadx1-A=0xFFFFFFE667hADD*AR3,A;A+y1-A=0x0000003333 STLA,*AR1;saveA(low16bits)-;z1=0x3333(0.399994)NOP.mmregs.defstart.bssx1,1.bssy1,1.bssz1,1.bssz2,1.bssz3,1.bssz4_h,1.bssz4_l,1.bssz5,1312;*testMPYA(fraction)*;*0.

262、3*0.8=0x1EB7*SSBX FRCT;准备小数乘法STM#z5,AR1ST#3*32768/10,*AR2;x1=0x26669(0.299988)ST#8*32768/10,*AR3;y1=0x6666(0.799988)LD*AR2,16,A;loadx2intoA(high16;bits);A=0x0026660000MPYA *AR3;x2*y2-B,andy2-T;B=0x001EB7E148STHB,*AR1;结果在z5单元;中;z5=0x1EB7(0.23996)nop;说明:以上括号中的数值是在;MEMORY窗口中选Q=15时得到的十进制小数end:Bend2)运算结果

263、(1)-0.2+0.6;z1=0x3333(0.399994)(2)0.3*0.8;z5=0x1EB7(0.23996)1、指令MPYSmem,dst功能:dst=T*Smem2、指令MPYASmem功能:B=Smem*(A(32-16))T=Smem313教学目的1、掌握定时器/计数器编程和应用的方法。2、了解多通道缓冲串口的应用。3、理解FIR滤波器的实现方法。教学重点1、定时器/计数器编程和应用;2、FIR滤波器的实现方法。教学难点1、定时器/计数器编程;2、多通道缓冲串口的应用3、FIR滤波器的实现方法;第六章TMS320C54x的开发应用3141、用TMS320C54xDSP片内定时

264、器设计一个周期为4ms的方波发生器,假设DSP时钟频率为4MHz,试写出定时器初始化的程序片断。2、简述DSP用线性缓冲区法实现(延时一个采样周期)的方法。3、用循环缓冲区和双操作数寻址方法编写实现FIR滤波的程序。已知单位冲激响应的点数为N=5,滤波器的5个系数为:h0=0.1,h1=0.2,h2=0.3,h3=0.4,h4=0.5。DSP通过I/O空间的地址1H读取输入数据,并将运算得到的数据通过I/O空间的地址0H输出给D/A转换器。课外作业3156.2.1FIR滤波器的实现方法滤波器的硬件结构:316数字滤波是DSP的最基本应用,利用MAC(乘、累加)指令和循环寻址可以方便地完成滤波运

265、算。两种常用的数字滤波器:FIR(有限冲激响应)滤波器和IIR(无限冲激响应)滤波器的DSP实现。设FIR滤波器的系数为h(0),h(1),.,h(N-1),X(n)表示滤波器在n时刻的输入,则n时刻的输出为:FIR滤波器的实现方法317其对应的滤波器传递函数为:如图6-1所示为横截型(又称直接型或卷积型)FIR数字滤波器的结构图。图6-1横截型FIR数字滤波器的结构图318n时刻:n+1时刻:3193 FIR滤波器的滤波器的DSP实现实现 C54x通过两种方法实现通过两种方法实现FIR滤波器的滤波器的延迟线延迟线: 1. 线性缓冲区法线性缓冲区法 2. 循环缓冲区法循环缓冲区法 3201.

266、线性缓冲区法线性缓冲区法(又称延迟线法又称延迟线法) 实现实现N阶阶FIR滤波器,需要在数据存储器中开辟一个滤波器,需要在数据存储器中开辟一个N个个单元单元的缓冲区的缓冲区(滑窗滑窗),用来存放最新的,用来存放最新的N个输入样本。个输入样本。 DSP每计算一个输出值,都需要读取每计算一个输出值,都需要读取N个样本并进行个样本并进行N次乘次乘法和累加法和累加; 从从最老的样本最老的样本开始,每读取一个样本后,将此样本向下移一开始,每读取一个样本后,将此样本向下移一个单元,最老的样本被推出缓冲区。读完最后一个样本后,输个单元,最老的样本被推出缓冲区。读完最后一个样本后,输入入最新样本最新样本存入缓

267、冲区的存入缓冲区的顶部顶部。优点:线性缓冲区法具有存储器中新老数据位置直观明了。优点:线性缓冲区法具有存储器中新老数据位置直观明了。 321N=8的线性缓冲区的线性缓冲区:顶部为低地址单元,存放最新样本,底部为高地址单元,存放最老样本;AR1被用作间接寻址的数据缓冲区的辅助寄存器,指向最老样本单元。AR2被用作间接寻址的系数区的辅助寄存器。n时刻:n+1时刻:滤波器系数滤波器系数:322线性缓冲区法实现线性缓冲区法实现FIR滤波器(滤波器(N=5)的汇编语言程序设计)的汇编语言程序设计 .titleFIR1.ASM.mmregs.defstartx.usectx,6;自定义数据空间自定义数据空

268、间PA0.set0 ;D/A转换器地址转换器地址PA1.set1 ;A/D转换器地址转换器地址.dataCOEF:.word - 4*32768/10;定义;定义b4.word 3*32768/10;定义;定义b3.word - 4*32768/10;定义;定义b2 .word 2*32768/10 ;定义;定义b1.word 1*32768/10;定义;定义b0 .text323start: SSBX FRCT ;设置小数乘法;设置小数乘法STM#x+5, AR1;AR1指向缓冲区底部指向缓冲区底部x(n-4)STM#4,AR0;AR0=4,设置设置AR1复位值复位值LD#x+1, DP;设

269、置页指针;设置页指针PORTR PA1,x+1 ;输入;输入x(n) FIR:RPTZ A, #4 ;累加器;累加器A清清0,设置迭代次数设置迭代次数 MACD *AR1-, COEF,A ;完成乘法;完成乘法-累加并移位累加并移位STHA,*AR1;暂存;暂存y(n)PORTW *AR1+,PA0 ;输出;输出y(n)BDFIR PORTR PA1, *AR1+0 ;输入最新样本,并修改输入最新样本,并修改 ;AR1=AR1+AR0;指向缓冲区底部;指向缓冲区底部.end324指令指令MACDSmem,pmad,src功能:功能:pmad PAR若(若(RC)00则(则(Smem)(Smem

270、)(由由PARPAR寻址得到的寻址得到的Pmem)+(src) srcPmem)+(src) src (Smem) TSmem) T (Smem) Smem +1Smem) Smem +1 (PAR)+1 PAR)+1 PAR指令指令MACXmem,Ymem,src,dst功能:功能: (Xmem)(Ymem)+(src)dst (Xmem) T3252.循环缓冲区法循环缓冲区法 实现实现N阶阶FIR滤波器时,需要在数据存储器中开辟一个称为滑滤波器时,需要在数据存储器中开辟一个称为滑窗的窗的N个单元的缓冲区,用来存放最新的个单元的缓冲区,用来存放最新的N个输入样本。个输入样本。 每当每当输入新

271、的样本输入新的样本时,以新样本时,以新样本改写改写滑窗中滑窗中最老的数据最老的数据,而,而滑窗的其他滑窗的其他数据不需要移动数据不需要移动。326优点:不用移动数据,不需要在一个机器周期中要求进行一次优点:不用移动数据,不需要在一个机器周期中要求进行一次读和一次写的数据存储器,因此,可将循环缓冲区定位在数据读和一次写的数据存储器,因此,可将循环缓冲区定位在数据存储器的任何位置,而不像线性缓冲区要求定位在存储器的任何位置,而不像线性缓冲区要求定位在DARAM中中那样。那样。缺点:在循环缓冲区新老数据不很直接明了。缺点:在循环缓冲区新老数据不很直接明了。327实现循环缓冲区间接寻址的关键:实现循环

272、缓冲区间接寻址的关键:循环寻址方式循环寻址方式注意两点:注意两点:第一,第一,必须采用必须采用BK(循环缓冲区长度循环缓冲区长度)寄存器按模间接寻址来实寄存器按模间接寻址来实现现。BK=N 在实现在实现N阶阶FIR时,设定时,设定BK的值为的值为FIR的阶数,就能保证循的阶数,就能保证循环缓冲区的指针环缓冲区的指针ARx始终指向循环缓冲区,实现循环缓冲区顶始终指向循环缓冲区,实现循环缓冲区顶部和底部的相邻。部和底部的相邻。第二,第二,必须满足必须满足2kN,其中,其中k是整数,是整数,N是是FIR滤波器的级数,滤波器的级数,而且而且循环缓冲区的基地址的循环缓冲区的基地址的k个最低有效位必须为个

273、最低有效位必须为0。 如如N=31时,由于时,由于25=3231,k=5,该地址的最低,该地址的最低5位为位为0,所,所以循环缓冲区必须从二进制地址以循环缓冲区必须从二进制地址xxxx xxx0 0000B开始开始 328循环寻址的执行过程为:循环寻址的执行过程为:if 0index+stepif 0index+stepBK then BK then index=index+stepindex=index+stepelse if index+stepBK then index=index+step-BKelse if index+stepBK then index=index+step-BKe

274、lse if index+stepelse if index+step0 then index=index+step+BK0 then index=index+step+BK 329利用循环缓冲区和双操作数寻址方法实现的FIR滤波器330.titleFIR2.ASM.mmregs.defstart.bssy , 1xn.usect“xn,5b0.usectb0,5PA0.set0PA1.set1.datatable:.word 1*32768/10;定义;定义b0.word 2*32768/10;定义;定义b1.text331start:SSBX FRCT ;设置小数乘法;设置小数乘法STM#

275、b0,AR1 ;AR1指向指向b0RPT#4 MVPD table,*AR1+ ;完成数据搬移;完成数据搬移STM#xn+4, AR2 ;AR2指向缓冲区底部指向缓冲区底部xn-4STM#b0+4, AR3 ;AR3指向系数缓冲区底部指向系数缓冲区底部b4STM#5,BK;BK=5STM#-1, AR0;step=-1RSBX CPLLD#xn,DP ;设置页指针设置页指针PORTR PA1,xn;输入;输入xn 332FIR2:RPTZ A,#4 ;累加器累加器A清清0,设置迭代次数设置迭代次数 MAC *AR2+0%, *AR3+0%, A ;做乘法做乘法-累加累加,完成后完成后指向缓冲指

276、向缓冲 ;区底部区底部STH A,y ;暂存;暂存ynPORTW y,PA0 ;输出;输出ynBDFIR2 PORTR PA1,*AR2+0%;输入最新样本并修改;输入最新样本并修改 ;AR2=AR2+AR0指向缓冲区指向缓冲区83h ;单元;单元 .end333指令指令MACDSmem,pmad,src功能:功能:pmad PAR若(若(RC)00则(则(Smem)(Smem)(由由PARPAR寻址得到的寻址得到的Pmem)+(src) srcPmem)+(src) src (Smem) TSmem) T (Smem) Smem +1Smem) Smem +1 (PAR)+1 PAR)+1

277、PAR指令指令MACXmem,Ymem,src,dst功能:功能: (Xmem)(Ymem)+(src)dst (Xmem) T3343. 系数对称系数对称FIR滤波器的实现方法滤波器的实现方法优点优点:乘法的次数减少了一半乘法的次数减少了一半。实现方法实现方法: 使用专门用于系数对称使用专门用于系数对称FIR滤波器的指令。滤波器的指令。指令指令 FIRS Xmem,Ymem,Pmad该指令的操作如下:该指令的操作如下:执行:执行: PmadPAR 当当(RC)0 (循环计数器)(循环计数器) (A(3216)(由由PAR寻址的寻址的Pmem) (B) B (Xmem)(Ymem)16A (P

278、AR1)PAR (RC)1RC指令指令ADDXmem,Ymem,dst功能:功能: (Xmem)+(Ymem) ) 16dst335说明:说明:FIRS指令在同一机器周期内,通过指令在同一机器周期内,通过C和和D总线读两次数总线读两次数据存储器,同时通过据存储器,同时通过P总线读程序存储区的一个系数。总线读程序存储区的一个系数。注意两点:注意两点:(1) 在数据存储器中开辟两个循环缓冲区,如在数据存储器中开辟两个循环缓冲区,如New和和Old缓冲区,缓冲区,分别存放分别存放N/2个新数据和老数据,循环缓冲区的长度为个新数据和老数据,循环缓冲区的长度为N/2。设。设置了循环缓冲区,就需要设置相应

279、的循环缓冲区指针,如用置了循环缓冲区,就需要设置相应的循环缓冲区指针,如用AR2指向指向New缓冲区中最新的数据,缓冲区中最新的数据,AR3指向指向Old缓冲区中最缓冲区中最老的数据;老的数据;(2) 将系数表存放在程序缓冲区内。将系数表存放在程序缓冲区内。336337 .mmregs.def start.bssy, 1x_new:.usectDATA1,4x_old: .usectDATA2,4size .set4PA0.set0PA1.set1.dataCOEF .word 1*32768/10, 2*32768/10.word 3*32768/10, 4*32768/10.text338

280、start:LD#y,DPSSBX FRCTSTM#x_new,AR2;AR2指向新缓冲区第一个单元STM#x_old+(size-1),AR3;AR3指向老缓冲区最后1个单元STM#size,BK;循环缓冲区长度STM#-1,AR0LD#x_new,DPPORTRPA1,x_new;输入xnFIR:ADD*AR20%,*AR30%,A ;AH=xn+xn-7(第一次)RPTZ B,#(size-1);B=0,下条指令执行size次FIRS*AR2+0%,*AR30%,COEF;B+=AH*a0,AH=xn-1+xn-6,STHB,y;保存结果339PORTW y,PA0 ;输出结果;输出结果 MAR * +AR2(2)% ;修正;修正AR2,指向新缓冲区最老数据,指向新缓冲区最老数据 MAR * AR3+% ;修正;修正AR3,指向老缓冲区最老数据,指向老缓冲区最老数据 MVDD * AR2,* AR3+0% ;新缓冲区向老缓冲区传送一个数;新缓冲区向老缓冲区传送一个数 BD FIR PORTR PA1,* AR2 ;输入新数据至新缓冲区;输入新数据至新缓冲区 .end340 刚才的发言,如刚才的发言,如有不当之处请多指有不当之处请多指正。谢谢大家!正。谢谢大家!341

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号