DSP原理及应用总复习.ppt_第1页
DSP原理及应用总复习.ppt_第2页
DSP原理及应用总复习.ppt_第3页
DSP原理及应用总复习.ppt_第4页
DSP原理及应用总复习.ppt_第5页
已阅读5页,还剩184页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程回顾,DSP应用技术,DSP基本概念 DSP的硬件结构 DSP的软件结构 应用系统设计,DSP的概念 DSP的分类 DSP的特点 DSP的发展,TMS320C54x系列 DSP各部件工作原理,-,软件体系 指令系统 编程方法,-汇编语言、C语言,设计流程 开发调试,-开发工具,第1章 DSP及其应用概述,什么是DSP DSP的特点 DSP的分类 TMS320系列DSP,Digital Signal Processing 数字信号处理 Digital Signal Processor 数字信号处理器,一、DSP的含义,二、可编程DSP芯片的特点,1.采用数据总线和程序总线分离的哈佛结构或改进的哈佛结构; 2.片内多总线结构; 3.采用流水线技术; 4.配有专用的硬件乘法-累加器; 5.具有特殊的DSP指令; 6.快速的指令周期; 7.带有DMA通道和串口、中断处理器、定时控制器、软硬件等待 功能等; 8.支持多处理器结构; 9.节电管理和低功耗。,二、TMS320系列DSP芯片的特点,1改进的哈佛结构,-采用双存储空间和数条总线,即一条程序总线和多 条数据总线。允许程序空间和数据空间之间相互传 送数据,可以同时访问指令和数据。比传统处理器 的冯诺依曼结构具有更高的数据处理能力和指令执 行速度。,2多总线结构,-可以同时进行取指令和多个数据存取操作,并由辅 助寄存器自动增减地址进行寻址,使CPU在一个机 器周期内可多次对数据空间和程序空间进行访问, 解决传统芯片的总线冲突问题,大大提高系统的速 度和效率。 -如:TMS320C54x系列内部有P、C、D、E四组总线,每组总线中都有地址总线和数据总线, 这样在1个机器周期内可完成如下操作: 从程序存储器中取1条指令; 从数据存储器中读2个操作数; 向数据存储器写1个操作数。,-DSP芯片广泛采用流水线,使取指、译码、取操作数和 执行等操作可以重叠执行,即实现多条指令的并行执 行。从而在不提高时钟频率的条件下减少每条指令的执 行时间。 -C54x的流水线操作由6个操作阶段(周期)组成,预取 指、取指、译码、寻址、读操作数、执行彼此相互独 立。在任何1个机器周期内,可以有1-6条不同的指令同 时工作,每条指令可在不同的周期内工作在不同的操作 阶段。,3流水线操作,-DSP芯片都配有专用的硬件乘法-累加器,可在1个周期内完成一次乘法和一次加法操作。乘法速度越快,DSP的性能越高。,4专用的硬件乘法-累加器,5特殊的DSP指令,-完成特殊功能的指令。C54x系列共计15条,如FTRS和 DELAY指令等。,6. 快速的指令周期 -哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令及继承电路的优化设计,目前TMS320系列处理器的指令周期已经达到了20ns以下,有的甚至达到了几个ns,这使得DSP芯片能够实时实现许多DSP应用。,3种分类方式:,1按基础特性分,2按数据格式分,3按用途分,静态DSP芯片:工作时钟 一致性DSP芯片:指令类型,三、DSP芯片的种类,定点DSP芯片:定点格式 浮点DSP芯片:浮点格式,通用型DSP芯片 专用型DSP芯片,TMS320C54xDSP属于16位通用、定点、一致性芯片。,四、TMS320系列DSP芯片,TI公司的通用型DSP芯片可归纳为四大系列,即,C6000(C64x/C62x/C67x)系列 -主要用于高性能复杂的通信系统; C5000(C5x/C54x/C55x/OMAP5910)系列 -主要用于低功耗、便携的无线通信终端产品; C2000(C2x/C2xx)系列 -主要用于数字控制系统。,C3x第一代浮点DSP系列,五、DSP芯片的选择,1运算速度:最重要的性能指标 2价格 3运算精度 4硬件资源,5开发工具 6功耗 7其它因素,六、DSP典型系统,第2章 C54x DSP硬件结构,基本结构 内核结构和原理 片内外设 节电模式 外部总线 流水线,TMS320C54x是TI公司为实现低功耗、高速实时信号处理而专门设 计的16位定点DSP芯片; 采用改进的哈佛结构,具有高度的操作灵活性和运行速度,适应 于远程通信等实时嵌入式应用的需要; 现广泛应用于无线通信系统,如数字蜂窝通信、无线数据通信、 调制解调器等领域。,1. C54x的基本结构,C54x DSP系列芯片种类很多,但结构基本相同; 围绕1组程序总线、3组数据总线和4组地址总线而建立的改进的 哈佛结构; 主要由中央处理器CPU、内部总线控制、特殊功能寄存器、数据 存储器RAM、程序存储器ROM、I/O接口扩展功能、串行口、主机 通信接口HPI、定时器、中断系统等部分组成; 不同型号的C54x DSP芯片CPU结构与功能完全相同,其差异主要 体现在存储器容量、片内外设、供电电压、速度以及封装上。,TMS320C54x DSP的引脚:,C54x芯片采用CMOS制造工艺,采用塑料或陶瓷四方扁平封装; 生产型号不同引脚个数也不同; VC5402共有144个引脚,按功能可分为电源引脚、时钟引脚、控 制引脚、地址和数据引脚、串行口引脚、主机接口引脚、通用 I/O引脚和测试引脚8个部分。,2. C54x内核的结构和原理,一、C54x的内部总线结构, 片内3套8组16位总线:1组程序总线(PB)和3组数据总线(CB、 DB、EB)以及对应的4组地址总线(PAB、CAB、DAB,EAB(4套总 线可同时操作);,CB、DB是与读操作相关的数据总线,用来传送从数据存储器读出的 数据; EB是与写操作相关的数据总线,用来传送写入数据存储器的数据。,3组数据总线分别与不同的功能单元相连接。将CPU、PAGEN、 DAGEN、片内外设、数据存储器等连接在一起;,PB主要用来传送取自程序存储器的指令代码和立即操作数;,4组地址总线主要用来提供执行指令所需的地址。,C54x读/写操作占用总线情况,2. C54x内核的结构和原理,二、优化的CPU结构, 采用先进的多总线结构实现,由控制部件和运算部件组成; 1个40位算术逻辑单元ALU,包括1个40位的桶形移位器和2个独 立的40位累加器(ACCA和ACCB); 1个1717位并行乘法器,与1个40位专用加法器相连,可用于 进行非流水线的单周期乘法-累加(MAC)运算; 比较、选择、存储单元(CSSU),用于提高维特比编译码的 速度; 指数编码器,是支持单周期指令EXP的专用硬件,可在一个周 期内计算40位累加器数值的指数; CPU状态和控制寄存器。,图3 ALU的功能框图,ALU输入数据的预处理:1.数据存储器操作数在低16位时, 则当SXM=0,高24位用0填充;SXM=1,高24位扩展为符号,符号扩展,图3 ALU的功能框图,ALU输入数据的预处理:2.数据存储器操作数在高16位时, 则当SXM=0,39-32位和15-0位用0填充;SXM=1,39-32位扩展 为符号,15-0位用0填充,图3 ALU的功能框图,ALU的输出为40位运算结果。除存储器操作指令(ADDM、ANDM、 ORM、XORM)外,ALU的运算结果通常都被送到累加器A和B。,溢出处理,若OVM=0,对运算结果不进行任何调整,直接送累加器; 若OVM=1,饱和逻辑使能,根据溢出方向,累加器加载最大正32 位值(00 7FFF FFFFH)或最小负32位值(FF 8000 0000H)。,当发生溢出时,与目标累加器相关的溢出标志位OVA或OVB被 置1,直到复位或执行溢出条件指令。,通过使结果保持为最大值或最小值,ALU的饱和逻辑可防止结 果产生溢出。,图3 ALU的功能框图,40位的累加器ACCA和ACCB存放从ALU或乘累加单元输出的数据, 也能输出到ALU或乘法器/加法器中。,累加器,1.累加器ACCA和ACCB是CPU内核中最繁忙的寄存器,ALU要进行的大 部分运算都要通过累加器A或B进行中转。,2.累加器ACCA和ACCB都可以分为3部分,保护位、高阶位、低阶位。 保护位用于防止迭代运算中产生的溢出。AG、BG、AH、BH、AL和 BL都是存储器映射寄存器(MMR),可使用寄存器寻址的方式进行 操作。,ACCA的3216位可用作乘累加单元的一个输入。,例:假设累加器A=0FF 4321 1234H,观察数据存储单元 TEMP中内容的变化情况。,STH A, 8,TEMP ;T=2112H STH A,-8,TEMP; T=FF43H STL A, 8, TEMP; T=3400H STL A,-8, TEMP; T=2112H,例:STH B,8,*AR7,MAC单元包括1个17位17位的乘法器和1个40位的专用 加法器。 MAC单元具有强大的乘累加功能,在一个流水线周期内 可以完成1次乘法运算和1次加法运算。,乘累加单元,ST0 反映寻址要求和运行中间状态 ST1 反映寻址要求、计算的初始设置、I/O及中断控制 PMST 主要设定并控制处理器的工作方式,反映其工作状态。,CPU状态和控制寄存器,1.通过设置PMST中的MP/MC=0,可以使能或禁止内ROM。 2.通过设置PMST中的DROM=1,可以将部分片内ROM 映射到数据存储空间。 3.通过设置PMST中的OVLY=1,可以将片内DARAM映射 到程序存储空间。,PMST与存储器配置有关:,2. C54x内核的结构和原理,三、存储空间,C54x DSP的存储空间可达192 K字,分为3个独立的可选择空间:,64 K字的数据存储空间,64 K字的程序存储空间,64 K字的I/O空间,用于存放执行指令所使用的数据,包括需要程序处理的数据或数据处理的中间结果;,用来存放要执行的指令以及指令执行中所需的常数表格;,用于对片外设备的访问,也可用于扩展外部数据存储空间。,程序存储器ROM C54x的程序存储器可由ROM和RAM配置而成,即程序空间可定义在 ROM上,也可定义在RAM中; 当需要高速运行程序时,可将片外ROM中的程序调入片内RAM, 以提高程序的运行速度,降低对外部ROM的速度要求,增强系统 的整体抗干扰性; 不同型号的C54x,其ROM的容量配置不同。,VC5402有20根地址线,可寻址1兆字的外部程序空间。分成16页, 每页64千字。,图2 VC5402扩展程序存储空间结构图,图3 片内ROM程序存储器映射(高2 K字的地址),VC5402有4k字的内部ROM。当MP/MC=0,这4k字被映射到程序空 间地址范围为F000H-FFFFH,其中高2k字ROM中的内容由TI公司定义。,当处理器复位时,复位和中断向量被映射到起始地址为 FF80H的程序空间。 在C54x DSP的片内ROM中,128字被保留用于器件的测 试。 写到片内ROM并且在片内ROM执行的应用程序代码必 须保留128字(FF00HFF7FH)。,数据存储器RAM 有两种片内数据存储器; 双访问/双寻址RAM(DARAM):在一个指令周期内,可对 其进行2次存取操作,1次读出和1次写入; 单访问/单寻址RAM(SARAM):在一个指令周期内,只能 进行1次存取操作,1次读或写; 不同型号的C54x,其DARAM和SARAM的容量和存取速度不 同。,低1k字的数据空间包括存储器映射的CPU寄存器、存储器映射外设寄存器、32位的暂存寄存器和896字的DARAM(0080H03FFH)。,这些寄存器驻留在数据页第0页(数据地址0000h007Fh)。包栝:,26个CPU寄存器(0000H001FH),访问不需要插入等待周期;,外设寄存器(0020H005F)用于控制外围电路的状态,可作为外设 的数据存储器,具有专用的外设总线结构。,暂存存储器RAM块(0060H007FH),包括32个字的DARAM,用 于存储变量,避免对大RAM块进行分段。,从0080H开始,按每80H个存储单元为一个数据块,将DARAM分成若 干数据块,便于CPU并行操作,提高芯片的高速处理能力。,具有64k字的I/O空间,主要用于对片外设备的访问; 利用I/O空间可以扩展外部存储器; 使用两条指令PORTR和PORTW对I/O空间寻址,无须通过累加器, 直接与存储单元互传数据。 访问I/O是对I/O映射的器件进行访问,而不是访问存储器。,I/O空间,3. C54x的片内外设,定时器 C54x具有一个带4位预分频器的16位定时电路; 是软件可编程减法计数器,用来产生定时中断; 可由专门状态位编程实现停止、重启动、复位和禁止; 在每个CLKOUT周期,定时/计数器减少1;每次减少到0则产生一个 定时中断;,为CPU提供时钟信号,由内部振荡器和锁相环(PLL)电路组成, 可通过内部晶振或外部时钟源驱动。 PLL具有频率放大和信号提纯功能,利用PLL的特性,可以锁定时钟 发生器的振荡频率,为系统提供高稳定的时钟频率。 PLL能使时钟电源乘上一个特定的系数,得到一个比内部 CPU时钟频 率低的时钟源。,时钟发生器,主机通信接口(HPI) HPI提供与主机设备或主处理器接口的并行端口,用于DSP与其他 总线或CPU进行通信; 通过片内存储器实现C54x器件与主机进行数据交换; 不同型号的器件HPI配置不同; 可分为8位标准HPI接口、8位/16位增强型HPI接口。,HPI具有两种工作方式:共用访问模式和仅主机访问模式,C5402、C5410带有HPI-8,C5420为HPI-16。,SP-标准同步串行口。高速、全双工串口,可与编码器、A/D转换器等 串行设备直接通信。,BSP-缓冲同步串口。增强型全双工和双缓冲同步串口,工作在CLKOUT 频率。在SP基础上增加一个自动缓冲单元 (ABU),允许串口直接 读写内存,实现与CPU的并行操作。,TDM-时分多路同步串口。增强的同步串口,允许数据分时多路转 换,可配置为同步串口SP方式和TDM方式,应用于多处理器。,McBSP-多通道带缓冲同步串行口。高速、双向、通道数多、数据格式 范围宽等特点。可与其它C54x器件、编程器或串口器件通信。 McBSP以标准串口为基础,并进行了很多功能扩展。,C5402带有2个多通道缓冲串行口McBSP,串行口:不同型号的器件配置的串口功能不同,C54x有多种省电方式,可使CPU暂停工作处于休眠状态,以减小 功耗,但保持CPU中的内容。 当省电方式结束后,CPU可以继续正常工作。,C54x有4种省电方式:闲置方式1、2、3和保持方式。,省电方式的实现: 执行IDLE1、IDLE2和IDLE3三条指令; 使外部信号HOLD=0,状态位HM=1。,4.C54x的节电方式,外部总线关断:关片内外设接口时钟。 主时钟关断:用指令禁止CLKOUT信号输出。,其他省电方式:,区别:,包括数据总线、地址总线以及一组控制信号组成,可以用来 寻址片外存储器和I/O口。 外部总线优先级: 数据存取的优先级高于程序的读取。,1)外部总线的组成,5.C54x的外部总线,2)软件可编程等待状态发生器SWWSR,软件可编程等待状态发生器可通过编程来延长总线的等待周期,最多可达到714个机器周期。 若外部器件要求插入的等待周期大于714个时,可以利用硬READY线来实现。 当所有的外部器件都配置在0等待状态时,加到等待状态发生器的内部时钟将被关断,器件工作在省电状态。,例如: STM #349B,SWWSR,349BH=0011 0100 1001 1011,SWWSR=0 011 010 010 011 011,I/O空间:3个等待状态;,数据空间:2个等待状态;,程序空间:3个等待状态。,复位时,SWWSR=7FFFH,程序、数据和I/O空间都被插入7个等待状态,流水线操作:各条指令以机器周期为单位,相差一个时间周期而 连续并行工作。 操作原理:将指令分成几个子操作,每个子操作由不同的操作阶段 完成。 每隔一个机器周期,每个操作阶段就可以进入一条新指令。 在同一个机器周期内,在不同的操作阶段可以处理多条指令,相当 于并行执行了多条指令。,6.C54x的流水线操作,C54x DSP有一个6级深度的指令流水线。,C54x DSP的流水线操作由6个操作阶段或操作周期组成。 这6个操作阶段彼此相互独立,可并行操作,允许指令的重叠执行。 在任何一个机器周期内,可以有16条不同的指令同时工作,每条指 令可在不同的周期内工作在不同的操作阶段。,6级流水线结构介绍,图2 流水线的6个阶段中的各个操作,1. 程序预取指P: 在T1机器周期内,CPU将PC中的内容(即下一条要执 行指令的地址)加载到程序地址总线PAB,找到指令代码的存储单元。,这6级流水线结构的功能如下:,图2 流水线的6个阶段中的各个操作,2. 取指F: 在T2机器周期内,CPU从选中的程序存储单元中,取出指 令代码加载到程序总线PB;从PB上取指令字并装入指令寄存器IR。 P、F完成了一条指令的取指。,这6级流水线结构的功能如下:,图2 流水线的6个阶段中的各个操作,3. 译码D: 在T3机器周期内,对指令寄存器IR的内容译码,确定所操 作的存储器的类型、数据地址产生单元DAGEN和CPU的控制信号。 此过程产生执行指令所需要的一系列控制信号。,这6级流水线结构的功能如下:,图2 流水线的6个阶段中的各个操作,4. 寻址A: 即寻址操作数。在T4机器周期内,根据指令的不同,CPU 将数据1和数据2(如果有)的读地址分别加载到DAB和CAB,并对辅 助寄存器和堆栈指针进行修正。 此过程是2阶段操作数读顺序的第一阶段,给出的是读的地址。,这6级流水线结构的功能如下:,图2 流水线的6个阶段中的各个操作,5. 读数R: 在T5机器周期内,CPU将从数据总线DB和CB上读入该读 操作数。如果是并行操作指令,则将数据3的写地址加载到EAB上。 此过程是2阶段操作数读顺序的第二阶段,同时是2阶段操作数写顺 序的开始。D、A、R完成了数据读入。,这6级流水线结构的功能如下:,图2 流水线的6个阶段中的各个操作,6. 执行X:在T6机器周期内,CPU按照操作码要求执行指令,并将写数 据3加载到EB,写入指定的存储单元,完成操作数写序列。 指令在本阶段中被执行。R、X完成了数据写。,这6级流水线结构的功能如下:,图2 流水线的6个阶段中的各个操作,如CPU访问DARAM会发生时序冲突的情况: 同时从同一存储块中取指令和读操作数; 同时对同一存储块进行写操作和读第2操作数。,C54x的流水线结构,允许多条指令同时利用CPU的内部资源。 由于CPU资源有限,当多于一个流水线上的指令同时访问同一资 源时,可能产生时序(流水线)冲突。,解决办法:, 由CPU通过延时自动解决;, 通过程序解决,如重新安排指令或插入NOP指令。,流水线冲突:,第3章 C54x DSP中断系统,中断定义 中断分类 中断标志寄存器和中断屏蔽寄存器 中断响应过程 重新映射中断向量地址,中断系统是DSP应用系统实现实时操作和多任务多进程操作的关键部分。 C54x的中断系统根据芯片型号的不同,提供了2430个硬件及软件中断源,分为1117个中断优先级,可实现多层任务嵌套。,中断:CPU正处理某件事情(执行程序)时,外部发生了某一事件并向CPU发信号请求去处理,CPU暂时中断当前工作,转去处理这一事件(进入中断服务程序),处理完再回来继续原来的工作。 实现这种功能的部件称为中断系统。 产生中断的请求源称为中断源。,一、定义,1. C54x中断定义,硬件和软件驱动都可以使C54x 产生中断。 硬件中断是由外围设备信号产生的中断,有两种形式: 受外部中断信号(A/D、D/A及其他处理器)触发的外部硬件中断 由片内外设电路(定时器、串行口、HPI等)引起的内部硬件中断 软件中断一般由程序指令(INTR、TRAP、RESET等)引起。,二、硬件中断和软件中断,三、中断优先级,软件中断不分优先级。 硬件中断有优先级,当多个硬件中断同时触发时,C54x按照它们的优先级顺序进行处理,优先级较高的中断会被先处理(1表示最高优先级) 。,在一个实际DSP应用中,不同的中断可能在任何时间或相同时间发生,因此,对DSP来说,必须划分中断的优先级,ISR按照这个次序执行。故通常对每个中断类型设置一个中断优先级。,VC5402有30个中断源和16个中断优先级,RS优先级最高。,表1 VC5402的30个中断和16个优先级,表1 VC5402中断和优先级(续),C54x 的中断分两类:可屏蔽中断和不可屏蔽中断,可屏蔽中断:可通过软件设置来屏蔽或使能。 可屏蔽中断受ST1寄存器中全局中断屏蔽位INTM和中断屏蔽寄存器 IMR中相应位的影响。 当INTM=0时,IMR中某位为1,则开放相应中断。 C54x最多可以支持16个用户可屏蔽中断(SINT15SINT0)。 有的处理器只用了其中的一部分,如VC5402只有13个可屏蔽中断。 有些中断又有两个名称,因为这些中断可以通过软件或硬件进行初 始化。,2. C54x中断分类,C54x 的中断可分两类:可屏蔽中断和不可屏蔽中断,VC5402的13个硬件可屏蔽中断:,非屏蔽中断:这些中断是不能够屏蔽的。 C54x对这一类中断总是响应,并从主程序转移到中断服务程序。 包括所有的软件中断和两个外部硬件中断RS(复位)和NMI(非屏蔽 中断),可通过硬件控制也可通过软件控制。 RS对C54x所有操作方式产生影响。 NMI中断不会对C54x的任何操作方式产生影响。但其中断响应时,所 有其他中断将被禁止。一般,它被分给时间关键的中断资源。,表1 VC5402中断和优先级,非屏蔽中断,表1 VC5402中断和优先级(续),可屏蔽中断,3.IFR 和IMR,C54x中断系统设置两个中断寄存器:中断标志寄存器IFR和中断 屏蔽寄存器IMR。都是存储器映射的CPU寄存器。,1. 中断标志寄存器,IFR对各硬件中断进行标志,当一个中断出现时,IFR中的相应 的中断标志位置1,直到被CPU识别为止。,2. 中断屏蔽寄存器,IMR主要用来使能或禁用除RS和NMI外的硬件中断。若ST1中INTM=0,IMR中某位置1,就能开放相应的中断。,4.中断响应过程,C54x的中断控制主要是屏蔽某些中断,避免其他中断对当前运行 程序的干扰,以及防止同级中断之间的响应竞争。 中断处理过程可分三个阶段:,1. 中断请求 2. 中断响应 3. 执行中断服务程序ISR,一个中断由硬件器件或者软件指令请求。 如果请求的中断是可屏蔽中断,则不管该中断是否被处理器应答, IFR寄存器中相应的中断标志位都被置1。当请求的中断响应后,该 标志位自动被清除。 (1)硬件中断请求 外部硬件中断,由外部中断口的信号发出请求; 内部硬件中断,由片内外设的信号发出中断请求。,1. 接收中断请求,(2)软件中断请求 软件中断由如下程序指令发出中断请求: INTR K ; TRAP K; RESET,软件中断和不可屏蔽中断会立即被响应。 对于可屏蔽中断,要满足三个条件才能被CPU响应: 当前中断优先级最高(同时出现多个中断时) INTM位为0 ,即全局中断开放 IMR中相应位为1 ,即该中断开放 满足上述条件后,CPU响应中断,终止当前正在进行的操作; INTR指令会强制PC转到相应的中断向量地址,取出中断服务 程序地址; CPU在取到软件向量的第一个字后会发出中断响应信号/IACK (中断应答),对可屏蔽中断,/IACK会清除IFR中相应的中断 标志位。,2. 中断响应,当中断响应后,CPU会进行如下操作: 保存现场,将程序计数器PC的值压入堆栈。远程返回指令 FRETE可以用于从ISR返回。 (2) 将中断向量的地址加载到PC (3) 从中断向量所指向的地址开始取指 (4) 执行分支转移指令,进入用户自定义的中断服务程序 (5) 执行ISR直到出现返回指令 (6) 从堆栈中弹出返回地址到PC中 (7) 继续执行主程序。,3. 执行中断服务程序ISR,5.重新映射中断向量地址,中断向量地址由PMST寄存器中的IPTR(9位中断向量地址指针) 和 左移两位后的中断向量号K(031,左移两位后再变成7位)组成。,复位时,IPTR所有的位被置1(IPTR=1FFH),并按此值将复位向 量映射到程序存储器。故硬件复位后总是从FF80H开始执行程序。 加载除1FFH之外的值到IPTR后,中断向量可以映射到其他地址。,DSP中提供的中断是以中断向量表的形式出现的。,图2 中断向量地址的产生示例,例: INT0的中断向量号K为16,第4章 C54x DSP的软件体系,汇编语言源程序的格式 汇编指令 寻址方式 公共目标文件格式 汇编语言程序设计 CCS开发调试工具,助记符指令语法格式,label: mnemonic operand list ;comment 标号区: 助记符区 操作数区 ;注释区,代数指令语法格式,标号区: 指令 ;注释区,一、汇编语言源文件格式,助记符(指令)一定不能从第一列开始,否则视为标号。,所有语句必须以标号、空格、*或 ;开头。,用作标号的符号在程序中表示地址。,助记符指令语法格式: 标号区: 助记符 操作数 ;注释区 SYM1 .set 2 ;符号SYM1=2 start: LD # SYM1,AR1 ;将2装入AR1 .word 016H ;初始化字( 016H ) RET ;返回,算数运算指令 逻辑运算指令 程序控制指令 装载和存储(数据传送)指令,TMS320C54x的指令系统共有129条基本指令,由于操 作数的寻址方式不同,又可派生至205条指令。按功能 分为如下几类:,二、汇编指令,表4-2 指令系统中的符号和缩写,表4-3-1 加法指令,算术运算指令,表4-3-2 减法指令,算术运算指令,算术运算指令,表4-3-3 减法指令(续),表4-3-4 乘法指令,算术运算指令,表4-3-5 乘加和乘减指令,算术运算指令,算术运算指令,表4-3-5 乘加和乘减指令(续),表4-3-6 双精度(32位操作数)指令,算术运算指令,表4-3-7 专用指令,算术运算指令,表4-4-1 与逻辑运算指令,逻辑运算指令,表4-4-2 或逻辑运算指令,逻辑运算指令,表4-4-3 异或逻辑运算指令,逻辑运算指令,表4-4-4 移位逻辑运算指令,逻辑运算指令,表4-4-5 测试指令,逻辑运算指令,表4-5-1 分支转移指令,程序控制指令,表4-5-2 子程序调用指令,程序控制指令,表4-5-3 中断指令,程序控制指令,表4-5-4 返回指令,程序控制指令,表4-5-5 重复指令,程序控制指令,表4-5-6 堆栈操作指令,程序控制指令,表4-5-7 混合程序控制指令,程序控制指令,表4-6-1 加载指令,加载和存储指令,表4-6-2 存储指令,加载和存储指令,表4-5-3 条件存储指令,加载和存储指令,表4-6-4 并行加载和存储指令,加载和存储指令,表4-6-5 并行加载和乘法指令,加载和存储指令,表4-6-6 并行存储和加/减法指令,加载和存储指令,表4-6-7 并行存储和乘法指令,加载和存储指令,表4-6-8 混合加载和存储指令(数据块传送指令),加载和存储指令,C54x有7种基本的数据寻址方式:,立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 MMR寄存器 寻址 堆栈寻址,:指令提供一个操作数 :指令提供一个操作数地址 :以累加器内容为地址访问程序空间某单元 :寻址地址为DP或SP加上指令提供的偏移量 :利用辅助寄存器访问存储器 :用来改变MMR寄存器 :用来管理系统堆栈中的操作,部分寻址缩略语,指令中含有一个固定的立即数 LD #0,ARP ;ARP=2(#k3) LD #3,ASM ;ASM=3(#k5) LD #50,DP ;DP=50(#k9) LD #1234,A ;A=1234(#lk) STM #FFFFh,IMR ;IMR=FFFFh(#lk),立即数寻址示例,绝对寻址示例,指令中含有所要寻找的操作数的16位存储单元地址 数据存储器地址(dmad)寻址: MVDK Smem, dmad MVDM dmad, MMR MVKD dmad, Smem MVMD MMR, dmad 程序存储器地址(pmad)寻址: MACD Smem, pmad, src MACP Smem, pmad, src MVDP Smem, pmad MVPD pmad, Smem 端口地址(PA)寻址 PORTR PA, Smem PORTW Smem, PA *(lk)寻址适用于支持单数据存储器操作数的指令,1. MVDK Smem,dmad,功能描述:把一个单数据存储器操作数Smem的内容复制 到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数 据存储器单元。可以循环执行该指令来转移数据存储器中 的连续字。,数据存储器地址(dmad)寻址,例4.32 MVDK DAT10,8000H,Data Memory,2. MVKD dmad, Smem 功能描述:把数据从一数据存储器单元转移到另一个数据 存储器单元中。源数据存储器单元由一个16 bit立即数dmad 寻址,然后转移到Smem中。循环执行该指令可以转移数据 存储器中的连续字(使用间接寻址)。,例4.36 MVKD 1000H,*+AR5,Data Memory,1. MACD Smem,pmad,src 功能描述:一个单数据存储器值Smem与一个程序存储器值pmad相乘,乘积和源累加器src的值相加,结果存放在src中。另外,还把数据存储器值Smem装入到T寄存器和紧接着Smem地址的数据单元中去。 该指令受FRCT和OVM的影响,并影响到OVsrc。,程序存储器地址(pmad)寻址,Program Memory,例4.75 MACD *AR3,COEFFS,A,2. MVDP Smem,pmad 功能描述:把严格的16 bit单数据存储器操作数Smem复 制到一个由16 bit立即数pmad寻址的程序存储器单元中。 通过循环执行该指令可以把数据存储器中的连续字(使 用间接寻址)转移到由16 bit立即数寻址的连续的程序存 储器空间中。,例4.35 MVDP DAT0,0FE00H,Data Memory,Program Memory,端口地址(PA)寻址,1. PORTR PA,Smem ;(PA)Smem 功能描述:从一个外部I/O口PA(地址为16 bit立即数)把一个 16 bit数读入到指定的数据存储器单元Smem中。,2. PORTW Smem,PA ;(Smem)PA 功能描述:把指定的数据存储器单元Smem中的16 bit数写到 外部I/O口PA中去。,例4.41 PORTR 05H,INDAT ;INDAT .equ 60H,I/O Memory,Data Memory,例4.42 PORTW OUTDAT,05H ;OUTDAT .equ 07H,I/O Memory,Data Memory,例如,把数据空间中地址为BUFFER单元中的数据传送到累加器A,指令可写为: LD *(BUFFER),A,采用一个符号或是一个特定的值来指明数据空间的地址。适用于所有支持单数据存储器操作数的指令。,长立即数 *(Ik)寻址,累加器寻址示例,将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。,用于完成程序存储空间与数据存储空间之间的数据传输。,READA Smem 功能:把累加器A所确定的程序存储器单元中的一个字,传送 到单数据存储器(Smem)操作数所确定的数据存储器单元中。 2. WRITA Smem 功能:把Smem操作数所确定的数据单元中的一个字,传送到 累加器A所确定的程序存储器单元中去。,Program Memory,Data Memory,例4.43 READA DAT6,例4.44 WRITA DAT5,Program Memory,Data Memory,直接寻址示例,指令中只含有数据存储器的低7位地址(偏移地址dmad); 利用数据指针DP和堆栈指针SP寻址。所要寻址的数据存储器16位地址是由基地址和偏移地址构成。,CPL=0时,数据存储器16位地址由DP和偏移地址dmad构成;,CPL=1时,数据存储器16位地址由SP加偏移地址dmad构成。,直接寻址标识: 变量前加,如x; 在偏移量前加,如5。,例:RSBX CPL ;基地址为DP LD #3,DP ;设置当前页面为3 LD x,A ;将x值加载到累加器A LD #4,DP ;设置当前页面为4,y所在的页面 ADD y,A ;将y值加到累加器A,例4.7 LD *AR4,DP,Data Memory,间接寻址示例,根据辅助寄存器(AR0AR7)给出的16位地址进行寻址,例4.6 LD *AR3+,T,Data Memory,例4.48 ADDC *+AR2(5), A,Data Memory,;(Smem)+(src)+(C)src,ADDC Smem,src,存储器映像寄存器寻址示例,LDM MMR,dst ;将MMR加载到累加器 MVDM dmad,MMR ;数据存储器向MMR传送数据 MVMD MMR,dmad ;MMR向指定地址传送数据 MVMM MMRx,MMRy ;MMRx向MMRy传送数据 POPM MMR ;将数据从栈顶弹至MMR PSHM MMR ;将MMR数据压入堆栈 STLM src,MMR ;累加器低位存入MMR STM #lk,MMR ;长立即数lk存入MMR,主要用于修改存储器映像寄存器的内容,1. LDM MMR,dst 功能描述:把存储器映射寄存器MMR中的值装入到目的累加器dst中。不管DP的当前值或ARx的高9位的值是多少,都把有效地址的高9位清0,以指定为在数据页0中。,例4.12 LDM AR4,A,2. STLM src,MMR ;(src(15-0)MMR 功能描述:把源累加器src的低端(150位)存放到存储器映射寄存器MMR中。无论DP的当前值或ARx的高9位是多少,都对有效地址的高9位清0。指令允许src存放在数据第0页中的任何一个存储器单元中而不必修改状态寄存器ST0中的DP域。,例4.23 STLM A,BRC,堆栈寻址示例,利用SP指针,按照先进后出的原则进行寻址,PSHD Smem ;将Smem中的数据压入堆栈 PSHM MMR ;将MMR中的数据压入堆栈 POPD Smem ;将数据从栈顶弹至Smem中 POPM MMR ;将数据从栈顶弹至MMR中,例4.169 POPD DAT10,Data Memory,1. POPD Smem ; (TOS)Smem,(SP)+1SP 功能描述:把由SP寻址的数据存储器单元的内容转移到由Smem确定的数据存储器单元中。然后SP执行加1操作。,Data Memory,例4.170 POPM AR5,2. POPM MMR ; (TOS)MMR,(SP)+1SP 功能描述:把由SP寻址的数据存储器单元的内容转移到指定的存储器映射寄存器MMR中。然后SP执行加1操作。,例4.171 PSHD *AR3+,Data Memory,3. PSHD Smem ;(SP)-1SP,(Smem)TOS 功能描述:SP执行减1操作后,把存储器单元Smem的内容压入堆栈指针SP指向的数据存储器单元中去。,例4.155 INTR 3,Data Memory,4. 中断指令(压栈) INTR k ;(SP)-1SP,(PC)+1TOS,中断向量PC, 1INTM 该指令影响INTM和IFR,例4.160 RET,Data Memory,5. RETD ;(TOS)PC,(SP)+1SP 功能描述(出栈):把栈顶TOS单元中的16 bit数据弹入到 程序指针PC中,堆栈指针SP加1。,Data Memory,例4.150 CALA A,6. 子程序调用指令(压栈) CALAD src,非延迟调用:(SP) -1SP,(PC)+1TOS, (src(15-0)PC 延迟调用:(SP) -1SP,(PC)+3TOS,(src(15-0)PC,例:计算 ,主要程序如下: .bss x, 10 ;为变量分配11个字的空间 .bss y, 1 STM #x,AR1 ;设置数据段的首地址 STM #9,AR2 ;AR2作为循环计数器,初值为9,执行10次加法 LD #0,A ;累加器清0 loop:ADD *AR1+,A ;累加运算,并修改地址 BANZ loop, *AR2- ;若计数值不为0,则循环,并计数值减1 ;若计数值为0,则结束循环 STL A,y ;累加和存入y中,循环操作程序BANZ举例,例:对一个数组进行初始化:x5=0,0,0,0,0。 .bss x,5 STM #x,AR1 LD #0,A RPT #4 STL A,*AR1+ 利用RPTZ代替LD和RPT .bss x,5 STM #x,AR1 RPTZ A,#4 STL A,*AR1+,单指令重复操作举例,注意:, 对x5中的5个元素置0, 重复次数为4,即执行1次 STL A,AR1+指令后,再重 复执行4次;, RPTZ指令设定重复次数后,再对累加器清零。,例:对数组x5中的每个元素加1。 .bss x,5 start: LD #1,16,B STM #4,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B ,块程序重复操作举例,;设置数组空间 ;立即数1送入BH ;设置重复次数,BRC=4,循环5次 ;数组首地址x送入AR4 ;设置循环结束地址 ;数组数据左移16位与BH相加 ;存入数组结果,并修改地址 ;B清0,注 意 块结束地址REA通常取程序块最后一条指令的下一条指令地址-1; 重复次数为4次 RPTB指令可以响应中断。,例:对数组x5=1,2,3,4,5初始化。,.bss x,5 .data table: .word 1,2,3,4,5 .text start: STM #x,AR1,RPT #4 MVPD table,*AR1+ ,重复执行MVPD指令,可以实现程序存储器至数据存储器的数据传送, 在系统初始化过程中十分有用。,.bss x,20 .bss y,20 ,STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+ ;数据到数据,例:将数据存储器中的数组x20复制到数组y20。,在数字信号处理时,经常需要将数据存储器中的一批数据传送 到数据存储器的另一个地址空间。,例:将数据存储器中的数组x20复制到数组y20。,.title “copy.asm” ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器 stack : .usect “STACK”,30H ;设置堆栈 .bss x,20 ;为数组x分配20个存储单元 .bss y,20 ;为数组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 .def start ;定义标号start .text,start: STM #x,AR1 ;将目的地首地址赋给AR1 PRT #19 MVPD table,*AR1+ ;程序到数据 STM #x,AR2 ;将x的首地址存入AR2 STM #y,AR3 ;将y的首地址存入AR3 RPT #19 MVDD *AR2+,*AR3+ ;数据到数据;将地址x开 ; 始的20个值复制到地址y ;开始的20个单元 end: B end .end,例: 将数据存储器中的数组x10复制到数组y10。 .title “copy.asm” ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器 stack .usect “STACK”,30H ;设置堆栈 .bss x,10 ;为数组x分配10个存储单元 .bss y,10 ;为数组y分配10个存储单元 .data table:.word 1,2,3,4,5,6,7,8,9,10 .def start ;定义标号start .text,start:STM #0,SWWSR ;复位SWWSR STM #stack+30H,SP;初始化堆指针 STM #x,AR1 ;将目的地首地址赋给AR1 RPT #9 ;设定重复传送的次数为10次 MVPD table,*AR1+ ;程序存储器传送到数据存储器 STM #x,AR2 ;将x的首地址存入AR2 STM #y,AR3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论