第4章TMS320C54XDSP指令系统08.11
第4章TMS320C54XDSP指令系统10PPT课件
57
中断指令同样可以改变程序指针PC的值,使程序从一个地址跳转 到另一个地址执行。但与调用指令一样,DSP在执行完中断服务程序 后要返回发生中断的地方继续执行原来的程序。当发生中断时,DSP 会置INTM为1,屏蔽所有可屏蔽中断,并在中断标志寄存器IFR中设 置相应的中断标志。
INTR指令使ST1的INTM位(bit11)置1关中断
14
算术运算类指令
’c54x的算术运算指令丰富,且运算能力强大。算术运 算指令用于完成加减乘除等算术运算。按照功能可将算术运算 类指令分为7组:
(1)加法指令(Add) (2)减法指令(Subtract) (3)乘法指令(Multiply) (4)乘加指令(Multiply-accumulate) (5)乘减指令(Multiply-subtract) (6)双字指令(32比特操作数) (7)专用指令(Application-specific)
25
举例:应用 SUBC DATA, A 计算( 8/2)
................................
stm #1001h , AR3 stm #1002h , AR4 ld #20h , DP st #0002h , 00h ld #0008h , A
rpt #15 subc 00h, A stl A,*AR3
;将相减的结果(高16位) ;存入1063地址单元
23
24
利用SUBC实现除法运算
在‘C54X中没有提供专门的除法指令, 一般有两种方法来完成除法。
一种是用乘法来代替,除以某个数相当于乘以其倒 数,所以先求出其倒数,然后相乘。这种方法适用于 除以一个常数。
另一种方法是使用SUBC(条件移位减法)指令, 重复16次减法操作完成一次除法运算。
TMS320C54x的指令
26
3. 条件存储指令 举例
A AR6 指令操作前 00 0756 DEFBH 0232H F0F0H 6666H A AR6 BRC 0232H 指令操作后 00 0756 DEFBH 0231H F0F0H F0F0H
SRCCD *AR6-,AGT
BRC 数据存储器 0232H
27
4. 并行执行指令 举例
举例
5
3.
乘法指令
乘法指令的功能是将T 寄存器或一个数据 存储器的值与另一个数据存储器的值或一 个立即数相乘,并将乘积存放于目的累加 器A或B中。
举例 RSBX FRCT LD TEMP1,T MPY TEMP2,A
6
4.乘加和乘减指令
方法
乘加指令先完成一个乘法操作,然后再将 乘积与源累加器的内容相加。而乘减指令 完成从累加器B(或源累加器src或目的累 加器dst)减去T寄存器(或一个操作数与 另外一个操作数的乘积)的操作,并将其 运算结果存入累加器B(或源累加器src或 目的累加器dst)中去。
数据存储器 FFFFH 0222H 12ABH 0233H
29
汇编语言伪指令 汇编语言源程序中,以.asm为程序的扩展名, 用“段”伪指令来组织程序的结构。 程序一般由数据段、堆栈段和代码段组成。 .data用于存放有初值的数据段;.usect用于 为堆栈保留一块存储空间;.text用于设置代 码段。
TMS320C54x的指令系统
TMS320C54x的指令系统分为算术运算指 令、逻辑运算指令、程序控制指令及装载和 存储指令四种基本类型。
1
TMS320C54x指令系统概述
● ● ● ● 算术运算指令; 逻辑运算指令; 装载和存储指令; 程序控制指令;
第4章 TMS320C54xDSP寻址方式
第4章 TMS320C54xTM DSP汇编语言与混合编程 (2) MVDK 语 法:助记符方式 MVDK Smem,dmad 执行过程:(dmad)→EAR if (RC)≠0 Then (Smem)→通过EAR寻址的Dmem (EAR)+1→EAR Else (Smem)→通过EAR寻址的Dmem 该指令不会影响任何状态位。
第4章 TMS320C54xTM DSP汇编语言与混合编程
功能描述:把一个单数据存储器操作数Smem的内容复制 到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数 据存储器单元。可以循环执行该指令来转移数据存储器中 的连续字。
第4章 TMS320C54xTM DSP汇编语言与混合编程 例4.32 MVDK DAT10,8000H
一条指令中可对两种立即数编码, 一种是短立即数(3、5、8或9位),短立即数指令编码 为一个字长。 另一种是16位的长立即数,16位立即数的指令编码为两 个字长。
第4章 TMS320C54xTM DSP汇编语言与混合编程
支持立即数的指令
3位或5位立即数 8位立即数 9位立即数 16位立即数 ADD ADDM AND ANDM BITF CMPM LD MAC OR ORM RPT RPTZ ST STM SUB XOT XORM lK
第4章 TMS320C54xTM DSP汇编语言与混合编程 * 直接寻址 指令中的7 bit是一个数据页内的偏移地址,而 所在的数据页则由数据页指针DP或SP决定,该偏移值加上DP 和SP的值决定了在数据存储器中的实际地址; * 间接寻址 按照辅助寄存器中的地址访问存储器; * 存储器映射寄存器寻址 通过寻址存储器映射寄存器实现 寻址; * 堆栈寻址 把数据压入和弹出系统堆栈。
第4章TMS320C54x汇编指令系统
表4-8 与逻辑运算指令
表4-9 或逻辑运算指令
表4-10 异或逻辑运算指令
表4-11 移位逻辑运算指令
表4-12 测试指令 返回本节
4.2.3 程序控制指令
程序控制指令包括分支转移指令、子程序调用指 令、中断指令、返回指令、重复指令、堆栈操作 指令及混合程序控制指令,分别如表4-13、表414、表4-15、表4-16、表4-17、表4-18及表4-19 所示。
表4-2 加法指令
表4-3 减法指令
表4-4 乘法指令
表4-5 乘加和乘减指令
表4-6 双精度(32位操作数)指令
表4-7 专用指令 返回本节
4.2.2 逻辑运算指令
逻辑指令包括与、或、异或(按位)、移位和测 试指令,分别如表4-8、表4-9、表4-10、表4-11、 表4-12所示。
表4-13 分支转移指令
表4-14 子程序调用指令
表4-15 中断指令
表4-16 返回指令
表4-17 Байду номын сангаас复指令
表4-18 堆栈操作指令
表4-19 混合程序控制指令 返回本节
4.2.4 加载和存储指令
加载和存储指令包括加载指令、存储指令、条件 存储指令、并行加载和存储指令、并行加载和乘 法指令、并行存储和加/减法指令、混合加载和存 储指令,分别如表4-20、表4-21、表4-22、表423、表4-24、表4-25、表4-26及表4-27所示。加 载指令是将存储器内容或立即数赋给目的寄存器; 存储指令是把源操作数或立即数存入存储器或寄 存器。
4.1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
4.2 指令系统
4.2.1 算术运算指令 4.2.2 逻辑运算指令 4.2.3 程序控制指令 4.2.4 加载和存储指令
TMS320C54X DSP 芯片的指令系统
分成512页,每页128个单元 DP取值范围:0~511 7位偏移地址范围:0~127 不改变基地址,可寻址连续的128个单元 DP复位值为0
直接寻址
DP值 00000 0000 偏移量 000 0000 „ 111 1111 000 0000 „ 111 1111 000 0000 „ 111 1111 „ 000 0000 „ 111 1111 数据存储器 第0页:0000H--007FH
例:MVDM 2000H,T RPT #19 ;数据块的复制 ;SAMPLE为常数表示 ;的地址 MVKD 0200H,*AR2+ MVMD AR2,SAMPLE
程序存储器地址(pmad)寻址
确定程序存储器中的一个地址 主要指令:
FIRS MACD MACP MVDP MVPD
Xmem, Smem, Smem, Smem, pmad,
位倒序寻址
主要用于FFT算法。 8点FFT的位码倒序:
若输入顺序:X(0)、X(1)、X(2) 、X(3)、 X(4) 、X(5) 、X(6)、X(7); 则输出顺序:Y(0)、 Y(4)、Y(2) 、Y(6)、 Y(1) 、Y(5) 、Y(3)、 Y(7).
16点FFT的位码倒序:表3.1.6
累加器:
Src,dst,dst_,A,B
移位值:
ASM,TS,SHFT,SHIFT K,k3,k5,k9,lk
立即数:
运算符及其优先级,表3.2.2
3.1 寻址方式
两种:数据寻址和程序寻址 数据寻址(7种基本方式)
立即数寻址 绝对地址寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址 堆栈寻址
轻松学会DSP——第4章-TMS320C54x软件开发
汇编器对段的处理
2.2.已初始化段 已初始化段包含可执行代码或已初始化数据。
这些段的内容存储在目标文件中,加载程序 时再放到TMS320C54X存储器中。三个用于 建立初始化段的伪指令句法分别为: .text [段起点] .data [段起点] .sect “段名”[,段起点]
汇编器对段的处理
件为真时要汇编代码块。 .else — 标志若.if条件为假时要汇编代码块。 .endif — 标志条件块的结束,并终止该条件代码块。
汇编伪指令
3.引用其他文件 .include '文件名' — 将指定文件复制到当前位置,其
内容可以是程序、数据、符号定义等。 .copy '文件名' — 与.include类似。 .def 符号名 — 在当前文件中定义一个符号,可以被
归档器
Option:归档器工作 -q :不显示状态栏及相关信息; -s :打印全局变量;
Libname: 库文件名 Filename:目标文件
Ar500 -a function sine.obj cos.obj flt.obj
3 、连接器
lnk500 [ -options] filename 1 . ... filename n -e global_symbol:定义程序的进入点; -c:使用C编译器的ROM初始化模式; -cr:使用C编译器的RAM初始化模式; -i dir:指定库文件的路径; -l filename:指定连接时使用的库文件名; -m filename:生成map文件; -o filename:指定生成的out文件名。系统缺省
链接器对段的处理有两个功能。首先,它将 汇编器产生的COFF目标文件(.obj文件)中 的各种段作为输入段,当有多个文件进行链 接时,它将输入段组合起来,在可执行的 COFF输出模块中建立各个输出段。其次,链 接器为输出段选择存储器地址。
DSP应用技术教程 部分习题答案
《TMS320C54x DSP应用技术教程》部分习题答案注意:未提供的参考答案习题(因考试为开卷形式,部分在课堂讲过,部分需要自行思考归纳总结或编程),请参考PPT和书上示例,自行解答。
第1章绪论1.简述Digital Signal Processing 和Digital Signal Processor 之间的区别与联系。
答:前者指数字信号处理的理论和方法,后者则指用于数字信号处理的可编程微处理器,简称数字信号处理器。
数字信号处理器不仅具有可编程性,而且其数字运算的速度远远超过通用微处理器,是一种适合于数字信号处理的高性能微处理器。
数字信号处理器已成为数字信号处理技术和实际应用之间的桥梁,并进一步促进了数字信号处理技术的发展,也极大地拓展了数字信号处理技术的应用领域。
2.什么是DSP技术?答:DSP技术是指使用通用DSP处理器或基于DSP核的专用器件,来实现数字信号处理的方法和技术,完成有关的任务。
5.数字信号处理的实现方法有哪些?答:参见P3-4 1.1.3节。
6.DSP的结构特点有哪些?答:哈佛结构和改进的哈佛结构、多总线结构、流水线技术、多处理单元、特殊的DSP指令、指令周期短、运算精度高、硬件配置强。
7.什么是哈佛结构和冯洛伊曼结构?它们有什么区别?答:参见P5-6 1.2.2节。
8.什么是哈佛结构和冯.诺依曼结构?它们有什么区别?答:DSP处理器将程序代码和数据的存储空间分开,各空间有自己独立的地址总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,这就是哈佛结构。
以奔腾为代表的通用微处理器,其程序代码和数据共用一个公共的存储空间和单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行的,这样的结构称为冯·诺伊曼结构。
采用哈佛结构,可同时取指令和取操作数,并行地进行指令和数据的处理,从而可以大大地提高运算的速度,非常适合于实时的数字信号处理。
而冯·诺伊曼结构当进行高速运算时,取指令和取操作数是分时操作的,这样很容易造成数据传输通道的瓶颈现象,其工作速度较慢。
第4章 TMS320C54x汇编指令系统
Viterbi译码指令DADST、DSADT、CMPS
在信道均衡和解码中经常会使用到Viterbi算法,C54x为此提 供了专门的硬件和指令。根据输入信号确定分支似然概率增加量 D1/D2,放在T寄存器中,TRN存储可能信号译码输出。
相关指令应用
第4章 TMS320C54x汇编指令系统
4.1 指令系统中的符号和缩写 4.2 指令系统
特殊指令使用说明
FIRS指令
FIRS指令用于线性相位滤波器的处理。一个如下图的8阶线性 相位滤波器的输出表达式:
FIRS指令使用方法: FIRS *AR2+, *AR3+, COEF
FIR滤波的两指令MAC、FIRS
RPTZ A,#(N-1) ;重复MAC指令N次,先将A清零
MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ; 完成滤波计算。注意FIR滤波 ;系数存放在数据存储区 RPTZ B, #(N/2-1) 重复FIRS指令N/2次,先将B清零 FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。注意FIR滤波系数 ;存放在程序存贮filter_coff为 ;系数起始地址
第四章 TMS320系列DSP芯片概述
4.1
1
TMS320C2xx系列 DSP
4.1.2 TMS320F206引脚与兼容性
TMS320F206 的引脚
引脚名
引脚 类型 说明 号 D0~D2 38~41 I/O/ 并行数据总线D15[最高有效位 (MSB)] 到D0[最低有效位(LSB)]。 D3~D6 26~29 Z 多路转换TMS320F206和外部数据 D7~D10 31~34 空间/程序空间或I/O空间之间的数 D11 36 据。当无输出(R/ W 为高)、 RS 保 D12~D15 38~41 持, OFF =0时变成高阻。
大连理工大学出版社
4.1
4.1.3 片内资源
1
位
TMS320C2xx系列 DSP
模式寄存器PMST
大连理工大学出版社
4.1
4.1.3 片内资源
1
位 15~13
TMS320C2xx系列 DSP
寄存器及相关功能说明
状态寄存器ST0
名称 ARP 说明 当前ARx寄存器号,x=0~7
12
11
OV
OVM
算术逻辑单元ALU溢出时为1
溢出模式位,OVM=0时,对溢出不作处理,OVM= 1时,将溢出数据置为最大正数/负数,即饱和
12
CNF
片内RAM设置,CNP=0时,片内双存取RAM的B0块和 B1块映射为数据空间。CNF=1,则B0和B1映射为程序 空间。复位后,CNP=0
测试/控制位,当BIT,BITT, CMPR, NORM指令测的条 件成立时,TC=1, 否则,TC=0。可用于条件跳转、调用 和返回。
大连理工大学出版社
...
...
大连理工大学出版社
第4章 TMS320C54x汇编语言程序设计
第4章
TMS320C54x汇编语言程序设计
1.段定义伪指令 段定义伪指令有以下五个: ● .bss(未初始化段) ● .data(已初始化段) ● .sect(已初始化段) ● .text(已初始化段) ● .usect(未初始化段)
第4章
TMS320C54x汇编语言程序设计
1) 未初始化段 .bss和 .usect命令建立未初始化段。未初始化段就是 TMS320C54x存储器中的保留空间,它通常被定位在 RAM区。在目标文件中,这些段中没有确切内容,在 程序运行时,可以利用这些存储空间存放变量,变量一
.string “string1” [,…,“string n” ] . pstring “string1” [,…,“string n” ] . long value1[,…,valuen]
pstring
初始化一个或多个字符
long
设置32位无符号整型量
xlong
. xlong value1[,…,valuen]
第4章
TMS320C54x汇编语言程序设计
3.操作数 操作数是指指令中的操作数或伪指令中定义的内
容。操作数之间必须用逗号(,)分开。有的指令无操作
数,如指令NOP。指令中的操作数可以是寄存器、地 址、常数、算术或逻辑表达式。
4.注释
注释从分号(;)开始,可以放在指令或伪指令的后 面,也可以单独占一行或数行。注释是任选项。如果 注释从第1列开始,也可以用星号(*)。
第4章
TMS320C54x汇编语言程序设计
4.1.3 TMS320C54x伪指令
TMS320C54x伪指令给程序提供数据、控制汇编过 程。具体实现以下任务: (1) 将数据和代码汇编到特定的段。 (2) 为未初始化的变量保留存储空间。
第四章 TMS320C54x数据寻址方式-蓝
[ ]中的 内容为可 选择部分
2010-12-14
供本程序的其它部分或其它程序调用。 标号是任选项,标号后面可以加也可 以不加冒号“:”。
指令统 2
要 点
1.标号必须从第1列写起, 1.标号必须从第1列写起, 标号必须从第 2.标号最多可达32个字符,可以是A 2.标号最多可达32个字符,可以是A~Z,a~z,0~9, 标号最多可达32个字符 _,以及$,但标号的第1个字符不能是数字。 以及$ 但标号的第1个字符不能是数字。 3.引用标号时,标号的大小写必须一致。 3.引用标号时,标号的大小写必须一致。 引用标号时 4.标号的值就是段程序计数器SPC的值。 4.标号的值就是段程序计数器SPC的值。 标号的值就是段程序计数器SPC的值 5.如果不用标号,则第一个字母必须为空格、分号 5.如果不用标号,则第一个字母必须为空格、 如果不用标号 空格 或星号(*)。 星号(
17
例:做A=X+Y=1500H .text RSBX CPL LD #3 , DP LD @X , A LD #4 , DP ADD @Y , A X: 01FFH Y: 0200H 0180H
数据存存器 0001 1000 0500
0000 0001 1111 1111B 0000 0001 1000 0000B
2010-12-14
5.间接寻址 .
(1)单操作数寻址 LD *AR1, B
单数据存储器( 可以使用的辅助寄存器: 单数据存储器(Smem)操作数间接寻址可以使用的辅助寄存器: )操作数间接寻址可以使用的辅助寄存器 AR0、AR1、AR2、AR3、AR4、AR5、AR6、 AR0、AR1、AR2、AR3、AR4、AR5、AR6、AR7
2010-12-14
第四章 TMS320C54x的数据寻址方式
第 8页
一、 数据存储器(dmad)寻址 指令中出现用程序标号或地址值表示的操作数所在的数据 存储空间的地址。 这种寻址方式有如下格式(指令的具体说明见5.2节): MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad 【例4-2】向数据存储器传送数据。已知指令执行前,AR3 内容为0100H,数据存储器0100H中的内容为1234H。 MVDK *AR3+,1200H 执行后,数据存储器1200H中的内容为1234H,AR3中的 内容为0101H。
第四章 TMS320C54x的数 据寻址方式
2014-4-15
1
4.1立即寻址 4.2绝对寻址 4.3累加器寻址 4.4直接寻址 4.5间接寻址 4.6存储器映射寄存器寻址 4.7堆栈寻址
第 2页
在指令系统中通常有两个部分:操作码部分和操作数部分。 操作码是指具体要执行的操作,它通常以规定的助记符 (即操作符)形式出现,例如,赋值操作用LD表示,加法 操作用DADD表示,不同型号的DSP规定不同。 操作数指操作的对象,通常分源操作数(第一个操作数, 指初始操作数据)和目的操作数(第二个操作数,指操作 结果数据)。 在执行指令时,CPU首先要找到源操作数,然后再根据操作 码对操作数进行操作,最后把结果放到指令中指定的目的 操作数位置。
第 20页
一、单操作数寻址
在单操作数寻址中,还有位码倒序寻址。 例如:AR0=0000 1010B,AR2=0110 0110B,如执行 *AR2+0B 寻址功能,也就是(0110 0110)+(0000 1010), 结果AR2=0110 1101B。应注意,计算是采用从左到右运算 的。
第4章 TMS320C54x汇编语言程序设计PPT课件
2020/8/17
6
⑤ 程序中注释是可选项。如果注释在第一列开始时,前面必 须标上星号“*”或分号“;”,在其他列开始的注释前面必须 以分号“;”开头;
⑥ 如果源程序很长,需要书写若干行,可以在前一行用反斜 杠字符(\)结束,余下部分接着在下一行继续书写。
2020/8/17
7
1.标号 所有汇编指令和大多数汇编伪指令都可以选用标号,供本程序或 其它程序调用。使用标号时应注意: ① 标号必须从语句的第1列写起,标号后可附加冒号“:” ;
2020/8/17
20
【例】 有效定义的表达式。
label1
label2 X goodsym1 goodsym3 goodsym4
.data .word .word .word .word .set .set .set .set
0 1 2 3 50h l00h + X label1 label2-label1
2020/8/17
23
4.2 堆栈的使用方法
当程序调用中断服务程序或子程序时,需要将程 序计数器PC的值和一些重要的寄存器值进行压栈保 护,以便程序返回时能从间断处继续执行。
’C54x提供一个用16位堆栈指针SP寻址的软件 堆栈。
当向堆栈中压入数据时,堆栈是从高地址向低地 址方向填入,堆栈指针SP先减1,然后将数据压入堆 栈。
2020/8/17
10
指令:
❖算术运算指令 ❖逻辑运算指令 ❖程序控制指令 ❖装入和存储指令
2020/8/17
11
伪指令
伪指令为程序提供数据、控制汇编过程。 伪指令在汇编时,不产生目标代码。
2020/8/17
12
3. 操作数
操作数是指指令中参与操作的数值或汇编伪指令定义的内容, 紧跟在助记符的后面,由一个或多个空格分开。
第4章 TMS320C54x汇编指令系统
(abc)
小括号表示一个寄存器或存储单元的内容
xy
x值被传送到y(寄存器或存储单元)中
r(n-m)
表示寄存器或存储器r的第n~m位
<<nn
移位nn位,nn为正时左移,为负时右移
||
表示两指令并行操作
\\
循环左移
//
循环右移
X
X取反
|X|
X取绝对值
AAH
AA代表一个十六进制数
11
指令系统中的符号、缩写、记号与运算符
1/1
4 ADD Smem [,SHIFT], src[,dst] dst=src+Smem<< SHIFT
操作数移位后加至累加器
2/2
5 ADD Xmem, SHFT, src
src=src+Xmem<< SHFT
操作数移位后加至累加器
1/1
6 ADD Xmem, Ymem, dst
dst=Xmem<<16+Ymem<<16
说明
字数/指 令周期数
1 ADD Smem, src
src=src+Smem
操作数加至累加器
1/1
2 ADD Smem, TS, src
src=src+Smem<<TS
操作数移位后加至累加器
1/1
3 ADD Smem, 16, src [, dst]
dst=src+Smem<<16
操作数左移16位加至累加器
8 5位移位数(-16≤SHIFT≤15)
指令系统中的符号、缩写、记号与运算符
符号
含义
DSP技术及应用习题答案
《DSP技术及应用》习题答案第1章绪论1.1 DSP的概念是什么?本书说指的DSP是什么?答:DSP有两个概念。
一是数字信号处理(Digital Signal Processing),指以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理;二是数字信号处理器(Digital Signal Processor),指是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。
本书中的DSP主要指后者,讲述数字信号处理器的应用。
1.2 什么是哈佛结构和冯•诺伊曼结构?它们有什么区别?答:(1)冯·诺伊曼(Von Neuman)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
(2)哈佛(Harvard)结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
1.3 已知一个16进制数3000H,若该数分别用Q0、Q5、Q15表示,试计算该数的大小。
答:3000H=12288。
若用Q0表示,则该数就是12288;若用Q5表示,则该数就是12288*2-5=384;若用Q15表示,则该数就是12288*2-15=0.3751.4 若某一个变量用Q10表示,试计算该变量所能表示的数值范围和精度。
答:Q10能表示的数值范围是-32~31.9990234,其精度为2-101.5 若x=0.4567,试分别用Q15、Q14、Q5将该数转换为定点数。
答:Q15:x*215=int(0.4567*32768)=14965;Q14:x*214=int(0.4567*16384)=7482;Q5:x*25=int(0.4567*32)=14。
TMS320C54x的数据传送指令
9 STL src , Smem
Smem = src(15-0)
累加器低阶位存入存储单元
10 STL src ,ASM ,Smem Smem = src(15-0)<<ASM 累加器低阶位移位后存入存储单元
11 STL src ,SHFT ,Xmem Xmem = src(15-0)<<SHFT 累加器低阶位移位后存入存储单元
(4) STRCD Xmem,cond
功能: 若满足cond条件,则将T寄存器中的内容存入 Xmem中。
2023年10月16日7时21分
DSP原理及应用
15
4.混合装载和存储指令 用于完成数据存储器、程序存储器以及I/O口
之间的数据传输,共计12条。
(1) MVDD Xmem,Ymem
功能: Ymem = Xmem 将数据存储器Xmem中的数据传送
功能: Smem = pmad 将以pmad为地址的程序存储器中 的数据传送到数据存储器Smem中。
(9) PORTR PA,Smem
功能: Smem = PA 将以PA为地址的I/O口中的数据传送
到数据存储器Smem中。
2023年10月16日7时21分
DSP原理及应用
18
4.混合装载和存储指令
(10) PORTW Smem,PA
累加器高阶位存入存储单元
6 STH src ,ASM ,Smem Smem = src(31-16)<<ASM 累加器高阶位移位后存入存储单元 7 STH src ,SHFT ,Xmem Xmem = src(31-16)<<SHFT 累加器高阶移位后存入存储单元
8 STH src [,SHIFT],Smem Smem = src(31-16)<<SHIFT 累加器高阶位移位后存入存储单元
DSP第四章TMS320C54x定时器/计数器
CLKMD 1 0 0 0 1 1 1 1 0
表4-4 复位时的时钟方式(C5402)
CLKMD 2 0
0
CLKMD 3 0
1
CLKMD寄存 器
E007H
9007H
时钟方式
乘15,内部振荡器工作,PLL工作 乘10,内部振荡器工作,PLL工作
(2)中断初始化
●中断允许寄存器IFR中的定时中断位TINT=1, 清除未处理完的定时中断。
●中断屏蔽寄存器IMR中的定时屏蔽位TINT=1, 开放定时中断。
●状态控制寄存器ST1中的中断标志位INTM位 清零,开放全部中断。
(3)方波发生器程序清单
2.脉冲频率监测
第四章 TMS320C54x 定时器/计数器
TMS320C54x片内外设简介
1.通用I/O引脚 2.定时器 3.时钟发生器 4.主机接口(HPI) 5.串行口 6.软件可编程等待状态发生器 7.可编程分区转换逻辑
4.1 定时器结构
定时器的组成框图如图4-1所示。它有3个 存储器映象寄存器:TIM、PRD和TCR。这 3个寄存器在数据存储器中的地址及其说明 如表4-1所示。定时器控制寄存器(TCR) 位结构如图4-2所示,各控制位和状态位的 功能如表4-2所示。
图4-1 定时器组成框图
表4-1 定时器的三个寄存器
Timer0 地址
0024H
0025H
0026H
Timer1 地址
0030H
0031H
0032H
寄存器
说明
定时器寄存器,每计数一次自动减
TIM
1
定 时 器 周 期 寄 存 器 , 当 TIM 减 为 0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21
‘C54X中提供了多条(13条)用于减法的指令, 如SUB,SUBB,SUBC和SUBS。
其中: SUBS用于无符号数的减法运算 SUBB用于带借位的减法运算(如32位扩展精度的减法) SUBC为条件移位减法运算,DSP中除法就是用该指令来实现的
SUB指令与ADD指令一样,有许多的寻址方式。
22
4
装载指令(Load)可将存储器的内容或立即数赋给目的 寄存器。共有21条装载类指令:
5
6
SXM是ST1中第8位,意思是符号位扩展方式
7
存储指令(Store)可将源累加器、立即数或临时 寄存器等的值保存到数据存储单元或存储映射寄存器。 存储指令共14条 。
8
T为暂存寄存器
9
BRC为块重复寄存器
33
34
乘减指令MAS,将临时寄存器T或一个数据存储单元的内容与 另一个数据存储单元的内容相乘并把乘积与源累加器的内容相 减,然后把结果放进累加器中。
35
(SXM=1)
36
双字指令是指那些有一个操作数为双字长(32比特)的指令。以DADD为例, 它在C16的控制下完成一个32比特的加或两个16比特的加。
ADD Xmem,Ymem, dst 例如: ADD *AR2,*AR3,A
17
‘C54X中提供了多条用于加法的指令, 如ADD,ADDC,ADDM和ADDS。
其中:
ADDS用于无符号数的加法运算
ADDC用于带进位的加法运算(如32位扩展精度加法) ADDM专用于立即数的加法。
18
利用ADDS实现32位数据装入
中断名称 RS/SINTR NMI/SINTR SINT17 SINT18
中断地址 00H 04H 08H 0CH
功能说明 复位(硬件/软件) 不可屏蔽中断 软件中断#17 软件中断#18
优先级 1 2 — —
4
5 6 7 8 9 10
SINT19
SINT20 SINT21 SINT22 SINT23 SINT24 SINT25
14
算术运算类指令
’c54x的算术运算指令丰富,且运算能力强大。算术运算 指令用于完成加减乘除等算术运算。按照功能可将算术运算类 指令分为7组:
(1)加法指令(Add) (2)减法指令(Subtract) (3)乘法指令(Multiply) (4)乘加指令(Multiply-accumulate) (5)乘减指令(Multiply-subtract) (6)双字指令(32比特操作数) (7)专用指令(Application-specific)
50H
54H 58H 5CH 60H 64H 68H
缓存串口0接收中断
缓存串口0发送中断 DMA通道0中断 定时器1/DMA1中断 外部中断3 HPI口中断 缓存串口1接收 /DMA2中断 缓存串口1发送 /DMA3中断 DMA4中断 DMA5中断
7
8 9 10 11 12 13
27
28 29
6CH
2、算术运算类指令(Arithmetic)
3、逻辑运算类指令(Logical) 4、程序控制类指令(Program-control) 5、单个循环类指令(Loop)
3
装载存储类指令
装载存储类指令即数据传送指令,其作用是 把源操作数从源存储器中送到目的操作数指定的 存储器里,用于完成数据的读入和保存。 ’c54x的数据传送指令包括装载指令、存储 指令(含条件存储指令)、混合装载存储指令 及并行装载存储、并行装载乘法、并行存储乘 法、并行存储加/减等等。
20
21 22 23 24 25 26
BRINT0/SINT4
BXINT0/SINT5 DMAC0/SINT6 TINT1/DMAC1/ SINT7 INT3/SINT8 HINT/SINT9 BRINT1/DMAC 2/SINT10 BXINT1/DMAC 3/SINT11 DMAC4/SINT12 DMAC5/SINT13 —
70H 74H 78-7F
14
15 16
30-31
保留
— 59
60
返回指令用于在执行完被调用的程序段或中断服务程序后, 返回到调用指令或发生中断的地方,使DSP能继续执行原来的程序
61
62
重复指令可以使DSP重复执行一条指令或一段指令
63
RPT #K
;单指令重复,RC= #K
64
堆栈操作指令可以对堆栈进行压入(PUSH)和弹出 (POP)操作,相应的操作数可以是数据存储单元Smem或 存储映射寄存器MMR。
LD LD
#10H,dp 60h,16,a
; 设置数据页指针 ; 将0860H的内容装入A的高16位 ; 将0861H的内容加到A的低16位 ; 直接装入32位到B寄存器
ADDS 61h,a DLD 60h,b
19
20
减法指令是将累加器内容或另一个数据存储单元内容与 一个16比特值相减,并把结果放进累加器中(共13条)。
减法指令使用举例
stm #60h,ar2
stm #61h,ar3
sub *ar2+, *ar3,b
;将变量temp1的地址装入 ; ar2寄存器 ; 将 变 量 temp2 的 地 址 装 入 ; ar3寄存器 ;将变量temp2, temp1左移 ; 16位后相减,结果放入寄 ;存器B(高16位)中,ar2加1 ;将相减的结果(高16位) ;存入temp3单元中
43
44
异或指令(XOR)
45
46
移位指令(SHIFT)
47
测试指令(TEST)
48
条件代码CC值说明
条件代码 表达式 说明 测试ARx是否等于 AR0 测试ARx是否小于 AR0 测试ARx是否大于 AR0 测试ARx是否等于 AR0
49
00
EQ
01
LT
10
GT
11
NEQ
50
51
程序控制类指令
52
跳转指令可以改变程序指针PC的值,使程序从一个地址 跳转到另一个地址执行。这种跳转可以是无条件的,也可以 是有条件的;可以是无延迟的,也可以是带延迟的。
53
54
调用指令同样可以改变程序指针PC的值,使程序从一个地址跳 转到另一个地址执行。但与跳转指令不同的是,DSP在执行完被调 用的程序段后要返回起跳处继续执行原来的程序。同样,这种调用 也可以是无条件的或有条件的。
mpya temp2
sth b, *AR3
如:0.1(0x0ccd) x 0.7(0x599a) = 0.06997680664063(0x08f5)
注:可以使用MPYR完成四舍五入。 比较如下结果
mpyr temp1,b
; T * temp1 -> b
31
0054
32
乘加指令是将临时寄存器T或一个数据存储单元的内容与一个 立即数或另一个数据存储单元的内容相乘并把乘积与源累加 器的内容相加,然后把结果放进目的累加器中。
—
— —
14
SINT29
38H
软件中断#29
—
58
15 16 17 18 19
SINT30 INT0/SINT0 INT1/SINT1 INT2/SINT2 TINT0/SINT3
3CH 40H 44H 48H 4CH
软件中断#30 外部中断0 外部中断1 外部中断2 内部定时器0中断
— 3 4 5 6
程序控制指令用于控制程序的流程,也就是指令的 执行顺序。’c54x的程序控制令(Branch) (2)调用指令(Call)
(3)中断指令(Interrupt) (4)返回指令(Return) (5)重复指令(Repeat) (6)堆栈操作指令 (7)其他程序控制指令
25
补充举例:SUBC DAT2, A
26
乘法指令是’c54x指令系统中最具特色的部分。可将临时寄存器T或一 个数据存储单元的内容与一个立即数或另一个数据存储单元的内容相乘,并 把结果放进目的累加器。乘法指令共有10条。
27
实现16位定点整数乘法
’C54X中提供了大量的乘法运算指令,其结果都 是32位,放在A或B寄存器中。乘数在‘C54X的乘 法指令很灵活,其操作数可以是T寄存器、立即 数、存贮单元以及A寄存器的高16位。 如果是无符号数乘时,可使用MPYU指令。这是 一条专用于无符号数乘法运算的指令,而其它指令 都是有符号数的乘法。
28
整数乘法举例
rsbx FRCT ld ;清FRCT标志,准备
; 整数乘
temp1,T ;将变量temp1装入T
; 寄存器
mpy temp2,a
;完成temp2*temp1,
; 结果放入A寄存器(32位)
29
实现小数乘法
在‘C54X中,小数的乘法与整数乘法基本一致,只 是由于两个有符号的小数相乘,其结果的小数点的 位臵在次高的后面,所以必须左移一位,才能得到 正确的结果。 C54X中提供了一个状态位FRCT(ST1),将其设臵为 1时,系统自动将乘积结果左移一位。两个小数(16位) 相乘后结果为32位,如果精度允许的话,可以只存高 16位,将低16位丢弃,这样仍可得到16位的结果。
10
混合装载-存储指令可实现程序/端口/数据-数据存储单元间的 数据交换,以及两个存储映射寄存器间的数据交换(共12条)。
11
12
13
数据块移动指令MVDD、MVDP、MVPD
在C54x系列DSP,数据与数据存储器、数据与程序存储器 之间可以方便的进行数据传输,结合单指令循环可实现数据 块移动。如16个系数的移动:
24
利用SUBC完成Temp1/Temp2
ld temp1,B ;将被除数temp1装入B寄存器 ;的低16位 ;重复SUBC指令16次 ;使用SUBC指令完成除法 ;将商(B寄存器的低16位) ;存入变量temp3 ;将余数(B寄存器的高16位) ;存入变量temp4