DSP原理与应用——汇编语言程序设计_第1页
DSP原理与应用——汇编语言程序设计_第2页
DSP原理与应用——汇编语言程序设计_第3页
DSP原理与应用——汇编语言程序设计_第4页
DSP原理与应用——汇编语言程序设计_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、5.5.1 1 概述概述 5.25.2 堆栈的使用方法堆栈的使用方法 5.35.3 控制程序控制程序 5.45.4 算术运算程序算术运算程序 5.55.5 重复操作程序重复操作程序 5.65.6 数据块传送程序数据块传送程序 5.75.7 小数运算程序小数运算程序 DSP原理及应用1 5.1 5.1 概述概述 DSP原理及应用 2 5 5.1 1.1 1 汇编语言源程序格式汇编语言源程序格式 标号标号: 助记符助记符 操作数操作数 ; 注释注释 助记符指令语法格式:助记符指令语法格式: 【例【例5.1.1】 助记符指令源语句举例。助记符指令源语句举例。 NANHUA .set 1 ; 符号符号

2、NANHUA1 Begin: LD #NANHUA,AR1 ; 将将1加载到加载到AR1 标标 号号 助记符助记符 操作数操作数 注注 释释 DSP原理及应用 3 2.2.操作数操作数 指令的操作数前缀指令的操作数前缀 作为操作数的前缀有三种情况:作为操作数的前缀有三种情况: 使用使用“#”符号作为操作数的前缀;符号作为操作数的前缀; Label: ADD # 99, B 使用使用“* *”符号作为符号作为操作数的操作数的前缀前缀; Label: : LD * * AR3, , B 使用使用“” 符号作为符号作为操作数的操作数的前缀前缀。 Label: : LD x, , A DSP原理及应用

3、 4 5 5.1 1.2 2 汇编语言中的常数与字符串汇编语言中的常数与字符串 汇编器可支持汇编器可支持7 7种类型的常数(常量)。种类型的常数(常量)。 DSP原理及应用 5 5 5.1 1.2 2 汇编语言中的常数与字符串汇编语言中的常数与字符串 浮点整型常量由一串十进制数字组成,可以带小浮点整型常量由一串十进制数字组成,可以带小 数点、分数和指数部分。数点、分数和指数部分。 浮点数浮点数 浮点数的表示方法:浮点数的表示方法: nn E | e n DSP原理及应用 6 5 5.1 1.2 2 汇编语言中的常数与字符串汇编语言中的常数与字符串 字符常数是包括在单引号内的字符串。若单引号字符

4、常数是包括在单引号内的字符串。若单引号 之间没有字符,则值为之间没有字符,则值为0。每个字符在内部表示为。每个字符在内部表示为8位位 ASCIIASCII码。码。 字符常数字符常数 例如例如: a 内部表示为内部表示为6161 h B 内部表示为内部表示为4242 h DSP原理及应用 7 5 5.1 1.2 2 汇编语言中的常数与字符串汇编语言中的常数与字符串 字符串是由双引号括起来的一串字符,最大长度字符串是由双引号括起来的一串字符,最大长度 是可以变化的,由要求字符串的伪指令来设置。字符是可以变化的,由要求字符串的伪指令来设置。字符 在内部用在内部用8 8位位ASCIIASCII码来表示

5、。码来表示。 字符串字符串 例如例如: “example” 定义了一个长度为定义了一个长度为7 7的字符串:的字符串:example DSP原理及应用 8 5 5.1 1.3 3 汇编源程序中的符号汇编源程序中的符号 汇编程序中的符号用于标号、常数和替代字符。汇编程序中的符号用于标号、常数和替代字符。 由字母、数字以及下划线和美元符号(由字母、数字以及下划线和美元符号(A AZ Z, a az z,09,_和和$)等组成;)等组成; 符号名最多可长达符号名最多可长达200个字符个字符( (标号最多标号最多3232个个 字符字符) ); 在符号中,第在符号中,第1 1位不能是数字,并且符号中不位

6、不能是数字,并且符号中不 能含空格。能含空格。 DSP原理及应用 9 5 5.1 1.3 3 汇编源程序中的符号汇编源程序中的符号 作为标号的符号代表在程序中对应位置的符号地作为标号的符号代表在程序中对应位置的符号地 址。址。 通常,标号是局部变量,在一个文件中局部使用通常,标号是局部变量,在一个文件中局部使用 的标号必须是唯一的。的标号必须是唯一的。 标号分大小写。标号分大小写。 例如:例如:ABCABC,AbcAbc,abcabc是是3个不同的符号。个不同的符号。 DSP原理及应用 10 标号还可以作为标号还可以作为.globalglobal,.refref,.defdef或或.bssbs

7、s等汇等汇 编伪指令的操作数。编伪指令的操作数。 如:如: . .global label lable1 NOP ADD label,B B label1 DSP原理及应用 11 符号也可被设置成常数值。为了提高程序的可读符号也可被设置成常数值。为了提高程序的可读 性,可以用有意义的名称来代表一些重要的常数值。性,可以用有意义的名称来代表一些重要的常数值。 伪指令伪指令.setset和和.structtruct.tagtag.endstructendstruct可以用可以用 来将常数赋给符号名。来将常数赋给符号名。 5 5.1 1.3 3 汇编源程序中的符号汇编源程序中的符号 DSP原理及应用

8、 12 【例【例5.1.2】 定义符号常数举例。定义符号常数举例。 N .set 512 N .set 512 buffer .set 4 buffer .set 4 * * N N nzg1 .set 1 nzg1 .set 1 nzg2 .set 2 nzg2 .set 2 nzg3 .set 3 nzg3 .set 3 item .struct item .struct . .int nzg1int nzg1 .int nzg2 .int nzg2 .int nzg3 .int nzg3 tang .endstruct tang .endstruct array .tag item ar

9、ray .tag item . .bss arraybss array,tangtang* * N N ;定义常数定义常数 ;itemitem结构定义结构定义 ;常数偏移常数偏移nzg1 = 1 ;常数偏移常数偏移nzg2 = 2 ;常数偏移常数偏移nzg2 = 3 ;声明数组声明数组 DSP原理及应用 13 3.3.预先定义的符号常数预先定义的符号常数 汇编器有若干预先定义符号,包括:汇编器有若干预先定义符号,包括: 5 5.1 1.3 3 汇编源程序中的符号汇编源程序中的符号 DSP原理及应用 14 4.4. 替代符号替代符号 可将字符串值可将字符串值(变量变量)赋给符号,使符号名与该变赋

10、给符号,使符号名与该变 量等效,成为字符串的别名,这种用来代表变量的符量等效,成为字符串的别名,这种用来代表变量的符 号称为替代符号。号称为替代符号。 5 5.1 1.3 3 汇编源程序中的符号汇编源程序中的符号 例如:例如: .asg “high”,AR2 ;寄存器寄存器AR2与与high等效等效 DSP原理及应用 15 5.5. 局部标号局部标号 局部标号是一种特殊的标号,使用的范围和影响局部标号是一种特殊的标号,使用的范围和影响 是临时性的。是临时性的。 5 5.1 1.3 3 汇编源程序中的符号汇编源程序中的符号 定义方法:定义方法: DSP原理及应用 16 5.5. 局部标号局部标号

11、 局部标号可以被取消定义,并可以再次被定义或局部标号可以被取消定义,并可以再次被定义或 自动产生。自动产生。 取消局部变量的方法:取消局部变量的方法: 使用使用.newblock伪指令;伪指令; 使用伪指令使用伪指令.sect,.text或或.data改变段改变段 ; 使用伪指令使用伪指令.include或或.copy,进入进入include文文 件;件; 达到达到include文件的结尾,离开文件的结尾,离开include文件。文件。 DSP原理及应用 17 【例例5.1.3】合法、非法局部标号合法、非法局部标号$ $n n举例。举例。 Label1Label1: LD ADDRA,A LD

12、 ADDRA,A SUB ADDRB,A SUB ADDRB,A BC $1,ALT BC $1,ALT LD ADDRB,ALD ADDRB,A B $2 B $2 $1 $1 LD ADDRA,ALD ADDRA,A $2 ADD ADDRC,A $2 ADD ADDRC,A .newblock .newblock BC $1,ALT BC $1,ALT STL A,ADDRC STL A,ADDRC $1 NOP $1 NOP ;将将ADDRAADDRA装入累加器装入累加器A A ;减去地址减去地址B B ;如果小于如果小于0 0,分支转移到,分支转移到$1 $1 ;否则将否则将ADDR

13、BADDRB装入累加器装入累加器A A ;分支转移到分支转移到$2 $2 ;$1$1:将将ADDRAADDRA装入累加器装入累加器A A ;$2$2:加上加上ADDRC ADDRC ;取消取消$1$1的定义,使它可被再次使用的定义,使它可被再次使用 ;若小于若小于0 0,分支转移到,分支转移到$1 $1 ;存存ACCACC的低的低1616位到位到ADDRC ADDRC . .newblocknewblock. .newblocknewblock BC $1,ALT BC $1,ALT ;若小于若小于0 0,分支转移到,分支转移到$1 $1 STL A,ADDRC STL A,ADDRC ;存存

14、ACCACC的低的低1616位到位到ADDRC ADDRC $1 NOP$1 NOP;错误:错误:$1$1被多次定义被多次定义 DSP原理及应用 18 【例例5.1.4】name?name?形式的局部标号的使用方法。形式的局部标号的使用方法。 ;包括文件中有包括文件中有mylabmylab第第2 2次定义次定义 ;从包括文件中退出复位后,从包括文件中退出复位后, mylabmylab的第的第3 3个定义个定义 DSP原理及应用 19 【例例5.1.4】name?name?形式的局部标号的使用方法。形式的局部标号的使用方法。 DSP原理及应用 20 【例例5.1.4】name?name?形式的局

15、部标号的使用方法。形式的局部标号的使用方法。 DSP原理及应用 21 5 5.1 1.4 4 汇编源程序中的表达式汇编源程序中的表达式 序号序号符符 号号运算操作运算操作求值顺序求值顺序 1+ - !取正、取负、按位求补、逻辑负取正、取负、按位求补、逻辑负 从右至左从右至左 2* * / %乘法、除法、求模乘法、除法、求模从左至右从左至右 3+ -加法、减法加法、减法从左至右从左至右 4指数指数 从左到右从左到右 5左移、右移左移、右移从左至右从左至右 6 =大于、大于等于大于、大于等于从左至右从左至右 8!= =不等于、等于不等于、等于 从左至右从左至右 9 条件分支转移条件分支转移 若累加

16、器若累加器B0,则转至则转至sub, 否则,往下执行否则,往下执行 CC start,AGEQ,AOV ; 条件调用条件调用 若累加器若累加器A0且溢出且溢出, 则调用则调用start,否则往下执行否则往下执行 RC NTC ; 条件返回条件返回 若若TC = 0,则返回,否则往下执行则返回,否则往下执行 DSP原理及应用 39 5 5.3 3.1 1 分支操作程序分支操作程序 5.5. 比较转移程序比较转移程序 比较操作指令:比较操作指令: CMPR CMPR 测试条件,辅助寄存器测试条件,辅助寄存器ARxARx 指令功能:指令功能:辅助寄存器辅助寄存器ARxARx与与AR0AR0进行比较,

17、进行比较, 若比较结果使所给定的测试条件成立若比较结果使所给定的测试条件成立, , 则则TCTC位置位置1 1。 实现方法:实现方法: 通过通过CMPRCMPR的比较结果得的比较结果得TCTC值;值; 根据根据TCTC值,由条件转移指令实现分值,由条件转移指令实现分 支转移。支转移。 DSP原理及应用 40 5.5. 比较转移程序比较转移程序 比较操作后条件分支转移比较操作后条件分支转移 STM #5,AR1STM #5,AR1 ; AR1=5 STM #10,AR0STM #10,AR0 ; AR0=10 loop: loop: * *AR1+AR1+ ; AR1=AR1+1 CMPR LT

18、,AR1CMPR LT,AR1 ;若若AR1-AR00,则则TC=1,否则为否则为0 BC loop, TCBC loop, TC ;若若AR1-AR0AR1-AR00 0,则循环则循环 若若AR1=AR0AR1=AR0,则顺序执行则顺序执行 DSP原理及应用 41 5.35.3 控制程序控制程序 5 5.3 3.2 2 循环操作程序循环操作程序 循环操作指令:循环操作指令: BANZ BANZ 转移地址,辅助寄存器转移地址,辅助寄存器 指令功能:指令功能:当辅助寄存器不为当辅助寄存器不为0 0时时, ,则转至转移地址则转至转移地址, , 否则顺序执行。否则顺序执行。 DSP原理及应用 42

19、5 5.3 3.2 2 循环操作程序循环操作程序 【例【例.4】 10 1 i i xy计算 .bss x,10 .bss x,10 ; ;给给x x保留保留1010个空间个空间 .bss y,1 .bss y,1 ; ;给给y y保留保留1 1个空间个空间 STM #x,AR1 STM #x,AR1 ; ;设置数据段的首地址设置数据段的首地址 STM #9,AR2 STM #9,AR2 ; ;设置循环计数值设置循环计数值 LD #0,A LD #0,A ; ;累加器清累加器清0 0 loop:loop: ADD ADD * *AR1+,A AR1+,A ; ;累加运算,并修改

20、地址累加运算,并修改地址 BANZ loop,BANZ loop,* *AR2- AR2- ; ;若计数值不为若计数值不为0 0,则循环,并计,则循环,并计 数值减数值减1 1 若计数值为若计数值为0 0,则结束循环,则结束循环 STL A, y STL A, y ; ;累加和存入累加和存入y y中中 DSP原理及应用 43 5.45.4 算术运算程序算术运算程序 基本算术运算包括:基本算术运算包括: 加减法和乘法运算加减法和乘法运算 除法运算除法运算 长字和并行运算长字和并行运算 DSP原理及应用 44 5.45.4 算术运算程序算术运算程序 5 5.4 4.1 1 加、减法和乘法运算加、减

21、法和乘法运算 在数字信号处理中,加法和乘法运算是最常见在数字信号处理中,加法和乘法运算是最常见 的算术运算。的算术运算。 【例例.1】 计算计算y y = a a x x + b b LD a, T LD a, T ; ;取取a a值值,T=aT=a MPY x, B MPY x, B ; ;完成完成axax乘积,乘积,B=axB=ax ADD b, B ADD b, B ; ;完成完成ax+bax+b运算,运算,B=ax+bB=ax+b STL B, y STL B, y ; ;计算结果存入计算结果存入y y中中 DSP原理及应用 45 5 5.4 4.1 1 加、减法和乘法

22、运算加、减法和乘法运算 【例例.2】 计算计算y y = xlxl alal + x2x2 a2a2 程序:程序: LD x1, TLD x1, T MPY a1, B MPY a1, B LD x2, T LD x2, T MAC a2, B MAC a2, B STL B, y STL B, y STH B, y+1 STH B, y+1 ; ;T=x1T=x1 ; ;B=x1a1B=x1a1 ; ;T=x2T=x2 ; ;乘法累加乘法累加,B=x1a1+x2a2B=x1a1+x2a2 ; ;计算结果的低字计算结果的低字BLBL存入存入y y中中 ; ;计算结果的高字计算结

23、果的高字BHBH存入存入y+1y+1中中 DSP原理及应用 46 5 5.4 4.1 1 加、减法和乘法运算加、减法和乘法运算 【例例.3】计算计算 y =y = 程序:程序: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * example.asm example.asm * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

24、 * * * * .title .title “example.asmexample.asm” .mmregs .mmregs stack .usect stack .usect “STACKSTACK”,10h,10h . .bss a,4bss a,4 . .bss x,4bss x,4 .bss y,1 .bss y,1 .def start .def start . .datadata i i ix a 4 1 ;为堆栈指定空间为堆栈指定空间 ;为变量分配为变量分配9 9个字的空间个字的空间 DSP原理及应用 47 5 5.4 4.1 1 加、减法和乘法运算加、减法和乘法运算 【例例5

25、.】计算计算 y =y = 程序:程序: i i ix a 4 1 table:table: .word 1,2,3,4 .word 1,2,3,4 . .word 8,6,4,2word 8,6,4,2 .text .text start: STM #0,SWWSR start: STM #0,SWWSR STM #STACK+10h,SPSTM #STACK+10h,SP STM #a,AR1STM #a,AR1 RPT #7 RPT #7 MVPD table,MVPD table,* *AR1+AR1+ CALL SUMCALL SUM end end: : B end

26、 B end ; 变量初始化变量初始化 ; 插入插入0 0个等待状态个等待状态 ; 设置堆栈指针设置堆栈指针 ; AR1AR1指向指向a a ; 移动移动8 8个数据个数据 ; 从程序存储器到数据存储器从程序存储器到数据存储器 ; 调用调用SUMSUM子程序子程序 DSP原理及应用 48 5 5.4 4.1 1 加、减法和乘法运算加、减法和乘法运算 【例例.3】计算计算 y =y = 程序:程序: i i ix a 4 1 SUMSUM: : STM #aSTM #a, , AR3AR3 STM #x, AR4 STM #x, AR4 RPTZ A, #3 RPTZ A, #3

27、 MAC MAC * *AR3+,AR3+,* *AR4+,AAR4+,A STL A, y STL A, y RET RET .end .end ;子程序执行子程序执行 DSP原理及应用 49 5 5.4 4.1 1 加、减法和乘法运算加、减法和乘法运算 【例例.4】求求4 4项乘积项乘积a ai ix xi i(i=1,2,3,4)(i=1,2,3,4)中的最大值,并存中的最大值,并存 放累加器放累加器A A中。中。 程序:程序: STM #a, AR1STM #a, AR1 STM #x, AR2 STM #x, AR2 STM #2, AR3 STM #2, AR3 L

28、D LD * *AR1+,TAR1+,T MPY MPY * *AR2+,AAR2+,A loop1: LD loop1: LD * *AR1+,TAR1+,T MPY MPY * *AR2+,BAR2+,B MAX A MAX A BANZ loop1, BANZ loop1,* *AR3-AR3- ; ;aiai首地址首地址a a给给AR1AR1 ; ;xixi首地址首地址x x给给AR2AR2 ; ;设置计数器设置计数器AR3=2AR3=2 ; ;取系数取系数T=ai,T=ai,并修改并修改AR1AR1 ; ;乘法运算乘法运算A=A=a ai ix xi i, ,并修改并修改AR2AR2

29、 ; ;取系数取系数T=ai,T=ai,并修改并修改AR1AR1 ; ;乘法运算乘法运算B=B=a ai ix xi i, ,并修改并修改AR2AR2 ; ;求求A A和和B B中的最大值中的最大值 ; ;若若AR30,AR30,则循环则循环, ,并修改并修改AR3AR3 若 若AR3=0AR3=0,则不循环则不循环 DSP原理及应用 50 5.45.4 算术运算程序算术运算程序 5 5.4 4.2 2 除法运算除法运算 在在C54xC54x中没有除法器硬件,也没有专门的除中没有除法器硬件,也没有专门的除 法指令。但是,利用条件减法指令法指令。但是,利用条件减法指令( (SUBC)SUBC)和

30、和重复指重复指 令令( (RPT)RPT)可实现两个无符号数的除法运算可实现两个无符号数的除法运算。 5 5.4 4.3 3 长字运算和并行运算长字运算和并行运算 主要用于程序优化主要用于程序优化 DSP原理及应用 51 5.55.5 重复操作程序重复操作程序 实现重复操作的指令:实现重复操作的指令: RPT RPT 重复下条指令;重复下条指令; RPTZRPTZ 累加器清累加器清0 0,并重复下条指令;,并重复下条指令; RPTBRPTB 块重复指令。块重复指令。 DSP原理及应用 52 5.55.5 重复操作程序重复操作程序 利用利用RPTRPT和和RPTZRPTZ可重复执行紧随其后的一条

31、指可重复执行紧随其后的一条指 令。重复次数由该指令的操作数决定,并且等于操令。重复次数由该指令的操作数决定,并且等于操 作数加作数加1 1。 若要重复执行若要重复执行N+1N+1次,则重复指令中应规定重次,则重复指令中应规定重 复次数为复次数为N N。 5 5.5 5.1 1 单指令重复操作单指令重复操作 DSP原理及应用 53 5 5.5 5.1 1 单指令重复操作单指令重复操作 【例例.1】对数组进行初始化,使对数组进行初始化,使x8=0,0,0,0,0,0,0,0 x8=0,0,0,0,0,0,0,0。 .bss x, 8 .bss x, 8 STM #x, AR1 ST

32、M #x, AR1 LD #0, A LD #0, A RPT #7 RPT #7 STL A, STL A,* *AR1+AR1+ .bss x, 8 .bss x, 8 STM #x, AR1 STM #x, AR1 RPTZ A, #7 RPTZ A, #7 STL A, STL A, * *AR1+AR1+ DSP原理及应用 54 5.55.5 重复操作程序重复操作程序 5 5.5 5.2 2 块程序重复操作块程序重复操作 对于整个程序块需要重复操作时,可采用程序对于整个程序块需要重复操作时,可采用程序 块重复操作。块重复操作。 用于块程序重复操作指令为用于块程序重复操作指令为RPTB

33、DRPTBD 块程序重复指令块程序重复指令RPTBRPTB所用的寄存器有:所用的寄存器有: BRCBRC重复计数器;重复计数器; RSARSA起始地址寄存器;起始地址寄存器; REAREA结束地址寄存器结束地址寄存器。 DSP原理及应用 55 5 5.5 5.2 2 块程序重复操作块程序重复操作 循环过程:循环过程: 将块重复标志位将块重复标志位BRAFBRAF置置1 1,激活块程序重复循,激活块程序重复循 环;环; 将一个取值在将一个取值在0 06553565535范围里的循环次数范围里的循环次数N N加载加载 到到BRCBRC; 块重复指令把块重复的起始地址放在块重复开块重复指令把块重复的

34、起始地址放在块重复开 始地址寄存器始地址寄存器RSARSA中;中; 块重复指令把块重复的末地址放在块重复结束块重复指令把块重复的末地址放在块重复结束 地址寄存器地址寄存器REAREA中。中。 DSP原理及应用 56 5 5.5 5.2 2 块程序重复操作块程序重复操作 【例【例.2】对数组对数组x8x8中的每一元素加中的每一元素加1 1。 . .bss x, 8bss x, 8 begin: LD #1,16,Bbegin: LD #1,16,B STM #7,BRC STM #7,BRC STM #x,AR4 STM #x,AR4 RPTB next-1 RPTB next-

35、1 ADD ADD * *AR4,16,B,AAR4,16,B,A STH A, STH A,* *AR4+AR4+ next: LD #0,Bnext: LD #0,B ; ;设置数组空间设置数组空间 ; ;立即数立即数1 1送入送入BHBH ; ;设置重复次数设置重复次数, ,BRC=BRC=7 7,循环循环8 8次次 ; ;数组首地址数组首地址x x送入送入AR4AR4 ; ;设置循环结束地址设置循环结束地址 ; ;数组数据左移数组数据左移1616位与位与BHBH相加相加 ; ;存入数组结果,并修改地址存入数组结果,并修改地址 ; ;B B清清0 0 DSP原理及应用 57 5.55.5

36、 重复操作程序重复操作程序 5 5.5 5.3 3 循环嵌套循环嵌套 RPTRPT重复操作可以和块重复操作重复操作可以和块重复操作RPTBRPTB以及以及循环操循环操 作作BANZBANZ进行嵌套,实现多重嵌套。进行嵌套,实现多重嵌套。 DSP原理及应用 58 【例【例.3 3】三重循环嵌套程序。三重循环嵌套程序。 STM #L-1,AR7 STM #L-1,AR7 ;2T;2T 1st: 1st: 外部外部 STM #M-1,BRCSTM #M-1,BRC ;2T;2T RPTB 2nd-1RPTB 2nd-1 ;4T;4T 中间中间 中间中间 RPT #N-1 RPT #N-

37、1 ;1T;1T 内部内部 中间中间 中间中间 2 2nd:nd: 外部外部 外部外部 BANZ 1st,BANZ 1st,* *AR7-AR7- ;4T;4T 内内 层层 中中 层层 外外 层层 DSP原理及应用 59 5.65.6 数据块传送程序数据块传送程序 1.1. 数据传送指令数据传送指令 用于数据传送指令可分为四类:用于数据传送指令可分为四类: (1)(1) 数据存储器之间的数据传送数据存储器之间的数据传送 MVDK SmemMVDK Smem,dmaddmad MVKD dmad MVKD dmad,SmemSmem MVDD Xmem MVDD Xmem,YmemYmem 2

38、2字字 2 2周期周期 2 2字字 2 2周期周期 1 1字字 1 1周期周期 DSP原理及应用 60 1.1. 数据传送指令数据传送指令 (2)(2) 数据存储器与数据存储器与MMRMMR之间的数据传送之间的数据传送 MVDM dmadMVDM dmad,MMRMMR MVMD MMR MVMD MMR,dmaddmad MVMM MMRx MVMM MMRx,MMRyMMRy 2 2字字 2 2周期周期 2 2字字 2 2周期周期 1 1字字 2 2周期周期 (3)(3) 程序存储器和数据存储器之间的数据传送程序存储器和数据存储器之间的数据传送 MVPD pmadMVPD pmad,Sme

39、mSmem MVDP Smem MVDP Smem,pmadpmad READA Smem READA Smem WRITA Smem WRITA Smem 2 2字字 3 3周期周期 2 2字字 4 4周期周期 1 1字字 5 5周期周期 1 1字字 5 5周期周期 DSP原理及应用 61 1.1. 数据传送指令数据传送指令 (4)(4) 从从PAPA口读口读/ /写数据写数据 PORTR PAPORTR PA,SmemSmem PORTW Smem PORTW Smem,PAPA 2 2字字 2 2周期周期 2 2字字 2 2周期周期 DSP原理及应用 62 2.2. 程序存储器至数据存储

40、器的数据传送程序存储器至数据存储器的数据传送 【例【例.1】数组数组x8=0,1,2,3,4,5,6,7x8=0,1,2,3,4,5,6,7初始化。初始化。 . bss x,8bss x,8 . datadata TBL TBL: . word 0,1,2,3,4,5,6,7 word 0,1,2,3,4,5,6,7 . texttext START START:STM #x,AR5STM #x,AR5 RPT #7 RPT #7 MVPD TBL, MVPD TBL,* *AR5+AR5+ DSP原理及应用 63 【例【例.2】进行进行N N点点FFTFFT运

41、算时,为节约存储空间要用到原位运算时,为节约存储空间要用到原位 计算,将数组计算,将数组X16X16赋到数组赋到数组Y16Y16,计算一个计算一个 蝶形后,所得输出数据可以立即存入原输入数蝶形后,所得输出数据可以立即存入原输入数 据所占用的存储单元。据所占用的存储单元。 . .bss xbss x,1616 . .bss ybss y,16 16 STM #xSTM #x,AR2AR2 STM #ySTM #y,AR3AR3 RPT #15RPT #15 MVDD MVDD * *AR2+AR2+,* *AR3AR3+ + DSP原理及应用 64 5.75.7 小数运算程序小数运算程序 采用小

42、数运算时,采用小数运算时,设定小数点在设定小数点在1616位中的位置位中的位置 称为定标。称为定标。 小数点在小数点在1616位数中的位置不同,可以表示不同位数中的位置不同,可以表示不同 大小和不同精度的小数。大小和不同精度的小数。 数的定标通常有数的定标通常有Q Q表示法,如表示法,如Q0Q0,Q1Q1,Q15Q15。 DSP原理及应用 65 5.75.7 小数运算程序小数运算程序 2.2. 小数的表示方法小数的表示方法 C54xC54x采用基于采用基于2 2的补码小数表示形式。每个的补码小数表示形式。每个1616 位数用位数用1 1个符号位个符号位( (最高位最高位) )、i i个整数位、

43、个整数位、15-15-i i个小个小 数位来表示。数位来表示。 MSB MSB LSB LSB -1. 2 -1. 2-1 -1 2 2-2 -2 2 2-3 -3 2 2-15 -15 例如:例如: 00000010.1010000000000010.101000002 21 1+2+2-1 -1+2 +2-3 -3 = 2.625 2.625 DSP原理及应用 66 2.2. 小数的表示方法小数的表示方法 Q15Q15格式下,格式下,2 2的补码小数的补码小数表示方法:表示方法: 将十进制小数乘以将十进制小数乘以3232 768768,并将整数乘积转换,并将整数乘积转换 成成1616进制数。进制数。 正数:正数:乘以乘以3232 768768,整数转换成,整数转换成1616进制数;进制数; 负数:负数:其绝对值乘以其绝对值乘以3232 768768,整数取反加,整数取反加1 1。 DSP原理及应用 67 2.2. 小数的表示方法小数的表示方法 如:如: 1 1 7 7FFFHFFFH 0.5 0.5 4000H 4000H 0.25 0.25 2000H 2000H 0 0 0000H 0000H -0.25 -0.25 E000H E000H -0.

温馨提示

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

评论

0/150

提交评论