版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 TMS320C54x汇编语言程序设计,5.5 重复操作程序,C54x的重复操作是使CPU重复执行一条指令或一段指令。可以分为单指令重复和块程序重复。,实现重复操作的指令: RPT 重复下条指令; RPTZ 累加器清0,并重复下条指令; RPTB 块重复指令。,使用RPT、RPTZ能重复下一条指令;而RPTB用于重复代码块若干次。利用重复指令可实现比BANZ指令更快的循环程序。,第5章 TMS320C54x汇编语言程序设计,5.5 重复操作程序,利用RPT和RPTZ可重复执行紧随其后的一条指令。重复次数由该指令的操作数决定,并且等于操作数加1。 若要重复执行N+1次,则重复指令中应规定重
2、复次数为N。该数值保存在16位重复计数器RC中,可通过RPT或RPTZ指令加载。一条指令的最大重复次数为65536。 由于要重复的指令只需要取指一次,对于多周期指令,采用重复操作后,可使多周期指令变成单周期指令,提高运行速度。,5.5.1 单指令重复操作,第5章 TMS320C54x汇编语言程序设计,5.5.1 单指令重复操作,【例5.5.1】对数组进行初始化,使x8=0,0,0,0,0,0,0,0。,.bss x, 8 STM #x, AR1 LD #0, A RPT #7 STL A,*AR1+,.bss x, 8 STM #x, AR1,RPTZ A, #7 STL A, *AR1+,注
3、意:, 对x8中的8个元素置0,重复次数为7,即执行1次STL A,AR1+指令后,再重复执行7次;, RPTZ指令设定重复次数后,再对累加器清零。,第5章 TMS320C54x汇编语言程序设计,5.5.1 单指令重复操作,第5章 TMS320C54x汇编语言程序设计,5.5 重复操作程序,5.5.2 块程序重复操作,对于整个程序块需要重复操作时,可采用程序块重复操作。,用于块程序重复操作指令为RPTB和RPTBD。程序块的长度由块程序重复指令RPTB的操作数来确定,而重复次数由块重复计数器BRC来决定。,通常RPTB的操作数为程序块的结束地址,而重复次数可用STM指令对BRC进行设定。,第5
4、章 TMS320C54x汇编语言程序设计,5.5.2 块程序重复操作,块重复操作的特点:, 程序块的起始地址RSA是RPTB指令的下一行; 块结束地址REA由RPTB指令的操作数规定; 对程序块进行重复操作时,不论程序块多长,重复次数多大,所用的机器周期为0; 与单指令重复操作不同,块重复操作可以响应中断。,第5章 TMS320C54x汇编语言程序设计,5.5.2 块程序重复操作,块程序重复指令的特点是对任意长程序段的循环开销为0。循环由ST1状态寄存器的块重复标志位(BRAF)和紧跟在ST1状态寄存器后面的存储器映像寄存器控制。,循环过程:, 将块重复标志位BRAF置1,激活块程序重复循环;
5、 将一个取值在065535范围里的循环次数N加载到BRC; 块重复指令把块重复的起始地址放在块重复开始地址寄存器RSA中; 块重复指令把块重复的末地址放在块重复结束地址寄存器REA中。,第5章 TMS320C54x汇编语言程序设计,5.5.2 块程序重复操作,【例5.5.2】对数组x8中的每一元素加1。,.bss x, 8 begin: LD #1,16,B STM #7,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B ,;设置数组空间 ;立即数1送入BH ;设置重复次数,BRC=7,循环8次 ;数组首地
6、址x送入AR4 ;设置循环结束地址 ;数组数据左移16位与BH相加 ;存入数组结果,并修改地址 ;B清0,注 意 块结束地址REA通常取程序块最后一条指令的下一条指令地址-1; 重复次数为7次 RPTB指令可以响应中断。,第5章 TMS320C54x汇编语言程序设计,5.5 重复操作程序,5.5.3 循环嵌套,循环嵌套是程序编制中常用的技巧,可以用来简化较为复杂的程序。,块程序重复指令RPTB所用的寄存器有: BRC重复计数器; RSA起始地址寄存器; REA结束地址寄存器。,RPT重复操作可以和块重复操作RPTB以及循环操作BANZ进行嵌套,实现多重嵌套。,第5章 TMS320C54x汇编语
7、言程序设计,【例5.5.2】三重循环嵌套程序。,STM #L-1,AR7 ;2T 1st: 外部 STM #M-1,BRC ;2T RPTB 2nd-1 ;4T 中间 中间 RPT #N-1 ;1T 内部 中间 中间 2nd: 外部 外部 BANZ 1st,*AR7- ;4T,内层,中层,外层,第5章 TMS320C54x汇编语言程序设计,5.5.3 循环嵌套,三重循环嵌套结构: 内层 中层 外层, RPT RPTB BANZ, 执行N次 执行M次 执行L次,第5章 TMS320C54x汇编语言程序设计,5.6 数据块传送程序,可以用于数据传送的指令有10条,分别可以实现数据存储器之间、数据存
8、储器和MMR之间、程序存储器和数据存储器之间、程序存储器和数据存储器之间的数据块传送等。,这些指令传送速度比加载和存储指令快,传送数据不需要通过累加器,可以寻址程序存储器,与RPT指令相结合可以实现数据块传送。,第5章 TMS320C54x汇编语言程序设计,5.6 数据块传送程序,1. 数据传送指令,用于数据传送指令可分为四类:,(1) 数据存储器之间的数据传送,MVDK Smem,dmad MVKD dmad,Smem MVDD Xmem,Ymem,2字 2周期 2字 2周期 1字 1周期,第5章 TMS320C54x汇编语言程序设计,1. 数据传送指令,(2) 数据存储器与MMR之间的数据
9、传送,MVDM dmad,MMR MVMD MMR,dmad MVMM MMRx,MMRy,2字 2周期 2字 2周期 1字 2周期,(3) 程序存储器和数据存储器之间的数据传送,MVPD pmad,Smem MVDP Smem,pmad READA Smem WRITA Smem,2字 3周期 2字 4周期 1字 5周期 1字 5周期,第5章 TMS320C54x汇编语言程序设计,1. 数据传送指令,(4) 从PA口读/写数据,PORTR PA,Smem PORTW Smem,PA,2字 2周期 2字 2周期,数据传送指令的特点,传送速度比加载和存储指令要快; 数据传送不通过累加器; 可寻址
10、程序存储器; 与RPT结合,可实现数据块传送。,第5章 TMS320C54x汇编语言程序设计,2. 程序存储器至数据存储器的数据传送,重复执行MVPD指令,可以实现程序存储器至数据存储器的数据传送,在系统初始化过程中十分有用。,【例5.6.1】数组x8=0,1,2,3,4,5,6,7初始化。,. bss x,8 . data TBL: . word 0,1,2,3,4,5,6,7 . text START:STM #x,AR5 RPT #7 MVPD TBL,*AR5+ ,第5章 TMS320C54x汇编语言程序设计,3. 数据存储器之间的数据传送,在数字信号处理时,经常需要将数据存储器中的一
11、批数据传送到数据存储器的另一个地址空间。,【例5.6.2】进行N点FFT运算时,为节约存储空间要用到原位计算,将数组X16赋到数组Y16,计算一个蝶形后,所得输出数据可以立即存入原输入数据所占用的存储单元。,.bss x,16 .bss y,16 STM #x,AR2 STM #y,AR3 RPT #15 MVDD AR2+,*AR3+,第5章 TMS320C54x汇编语言程序设计,4. 数据存储器和MMR之间的数据传送,【例5.6.4】 双操作数方式实现IIR高通滤波器:,table: .word 0 .word 0 .word 653*32768/10000 .word -1306*327
12、68/10000 .word 653*32768/10000 .word -3490*32768/10000 .word -600*32768/10000 .text start: SSBX FRCT STM #x2, AR1 RPT #1 MVPD #table,*AR1+,;x(n-2) ;x(n-1) ;x(n-0) ;B2 ;B0 ;A2 ;A1/2,第5章 TMS320C54x汇编语言程序设计,4. 数据存储器和MMR之间的数据传送,【例5.6.4】 双操作数方式实现IIR高通滤波器:,STM #COEF,AR1 RPT #4 MVPD #table+2,*AR1+ STM #x2,
13、AR3 STM #COEF+4,AR4 MVMM AR4,AR1 STM #3, BK STM #-1,AR0 IIR1: PORTR PA1,*AR3 LD *AR3+0%,16,A MAC *AR3,*AR4,A MAC *AR3+0%,*AR4-,A,;AR4指向A1 ;保存地置值在AR1中 ;设置循环缓冲区长度 ;设置变址寻址步长 ;从PA1口输入数据x(n) ;计算反馈通道。A=x(n) ;A = x(n)+A1*x1 ;A = x(n)+A1*x1+A1*x1,第5章 TMS320C54x汇编语言程序设计,4. 数据存储器和MMR之间的数据传送,【例5.6.4】 双操作数方式实现I
14、IR高通滤波器:,MAC *AR3+0%,*AR4-,A STH A,*AR3 MPY *AR3+0%,*AR4-,A MAC *AR3+0%,*AR4-,A MAC *AR3,*AR4-,A STH A,*AR3 MVMM AR1,AR4 BD IIR1 PORTW *AR3,PA0 .end,;A=x(n)+2*A1*x1+A2*x2=x0 ;保存x0 ;计算前向通道。A=B0*x0 ;A=B0*x0+B1*x1 ;A=B0*x0+B1*x1+B2*x2=y(n) ;保存y(n) ;AR4重新指向A1 ;循环 ;向PA0口输出数据,第5章 TMS320C54x汇编语言程序设计,5.7 小数
15、运算程序,在定点DSP芯片中,采用定点数进行数值运算时,若操作数采用整型数,则DSP芯片给定的字长(一般16位)决定了整型数的最大范围。,通常,定点DSP采用小数乘法。其原因:, 乘法器为16位,对于大于16位的数据难以实现乘法递推,且乘积占用存储资源大; 小数乘法时,既可以存储32位乘积,也可以存储高16位乘积,可用较少的资源保存结果; 小数乘法便于乘法递推。,第5章 TMS320C54x汇编语言程序设计,5.7 小数运算程序,1. 数的定标,采用小数运算时,设定小数点在16位中的位置称为定标。 小数点在16位数中的位置不同,可以表示不同大小和不同精度的小数。 数的定标通常有Q表示法,如Q0
16、,Q1,Q15。Q越大,可以表示的数的范围越小,但精度越高。 在具体的定点程序中,必须根据具体情况适当选择合适的定标。,第5章 TMS320C54x汇编语言程序设计,5.7 小数运算程序,2. 小数的表示方法,C54x采用基于2的补码小数表示形式。每个16位数用1个符号位(最高位)、i个整数位、15-i个小数位来表示。,采用2的补码小数(Q15格式),其位权值为:,MSB LSB -1. 2-1 2-2 2-3 2-15,例如: (Q8格式?) 00000010.1010000021+2-1+2-3 = 2.625,第5章 TMS320C54x汇编语言程序设计,2. 小数的表示方法,基于2的补
17、码小数表示方法: 16位2的补码小数(Q15格式),数值范围-1+1 将十进制小数乘以32 768,并将整数乘积转换成16进制数。,正数:乘以32 768,整数转换成16进制数;,负数:其绝对值乘以32 768,整数取反加1。,第5章 TMS320C54x汇编语言程序设计,2. 小数的表示方法,如: 1 7FFFH 0.5 4000H 0.25 2000H 0 0000H -0.25 E000H -0.5 C000H -1 8000H,132 768=7FFFH 0.532 768=4000H 0.2532 768=2000H 032 768=0000H (0.2532 768)补=E000H
18、 (0.532 768)补=C000H (132 768)补=8000H,注意:汇编时,不能直接写成十进制小数。,如:0.907 .word 32 768*907/1000,第5章 TMS320C54x汇编语言程序设计,5.7 小数运算程序,3. 小数乘法与冗余符号位,小数乘法实例:,0.625(-0.125) = -0.078125,0 1 0 0 (0.5),1 0 0 0 (-0.375),0 1 0 0,0 0 0 0,0 1 0 0,1 1 0 0 (-0100),1 1 1 0 1 0 0,(-0.01875),第5章 TMS320C54x汇编语言程序设计,3. 小数乘法与冗余符号
19、位,乘 积: -0.01875 = 1110100 7位二进制,扩展第8位(符号位)后,乘积:111101000 = -0.09375,出错原因:两带符号数相乘,其结果带有2个符号位。,S x x x (Q3格式),S y y y (Q3格式),S S z z z z z z (Q6格式),解决办法:运算结果左移一位,消去多余符号位。可通过对FRCT位置1,乘法器自动将乘积结果左移一位。,如: 11101000 左移1位: 11010000 结果: -0.01875,第5章 TMS320C54x汇编语言程序设计,3. 小数乘法与冗余符号位,在小数乘法编程时,应事先设置FRCT位, 如: SSB
20、X FRCT MPY *AR2,*AR3,A STH A,Z 完成了Q15*Q15=Q15的小数乘法。,第5章 TMS320C54x汇编语言程序设计,【例5.7.1】 编制计算 的程序,a1=0.3 a2=0.2 a3=-0.4 a4=0.1 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2,.bss a,4 .bss x,4 .bss y,1 .data table: .word 3*32768/10 .word 2*32768/10 .word -4*32768/10 .word 1*32768/10 .word 6*32768/10 .word 5*32768/10 .word
21、 -1*32768/10 .word -2*32768/10,a,x,y,第5章 TMS320C54x汇编语言程序设计,【例5.7.1】 编制计算 的程序,a1=0.3 a2=0.2 a3=-0.4 a4=0.1 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2,a,x,y,.text start: SSBX FRCT STM #x,AR1 RPT #7 MVPD table,*AR1+,STM #x,AR2 STM #a,AR3 RPTZ A,#3 MAC *AR2+,*AR3+,A STH A,y,done: B done,第5章 TMS320C54x汇编语言程序设计,5.8 浮
22、点运算程序,在数字信号处理过程中,定点运算是将数据的整数和小数部分分开,小数点在一个固定位置,其优点是硬件实现比较容易,但动态范围受到限制。 为了扩大数据的范围和精度,需要采用浮点运算。虽然C54x是个定点DSP器件,但它支持浮点运算。 在C54x上实现浮点运算,操作数必须变成定点数,然后再返回浮点数。通过归格化输入数据,可以将定点值变换为浮点值。,第5章 TMS320C54x汇编语言程序设计,5.8 浮点运算程序,1. 浮点数的表示方法,浮点数是由尾数和指数两部分组成,它与定点数的关系: 定点数 = 尾数2-指数,如:定点数:0 x2000 = 0.25 = 0.52-1,尾数= 0.5 =
23、 0 x4000,指数=1。,尾数:可正可负,用补码表示。 指数:可正可负,用补码表示,其范围:-831。,第5章 TMS320C54x汇编语言程序设计,5.8 浮点运算程序,2. 定点数转换成浮点数,C54x通过三条指令可将定点数转换成浮点数。, EXP A 提取指数指令,功能:若A=0,则T=0; 若A0,则T=(A的多余符号位数-8)。 即提取指数,A的内容不变,指数=多余符号位数-8。,例如:执行EXP A前,A=FF FFFF FFCB T=0000,A=FF FFFF FFCB= 1111111111001011,33,多余符号位数:33 指数:33-8=25 T=0019,执行后
24、, A=FF FFFF FFCB T=0019 (25),又如:执行EXP B前,B=07 8543 2105 T=0007 B = 0000 0111 1000,多余符号位数:4 指数:4-8=-4 T=FFFC 执行后,B=07 8543 2105 T=FFFC (-4),第5章 TMS320C54x汇编语言程序设计,2. 定点数转换成浮点数, ST T,EXPONENT,紧随EXP指令之后。,功能:将保存在T中的指数存放在数据存储器EXP单元中。, NORM A,根据T对累加器进行格式化处理指令。,功能:根据T的内容,对累加器A进行移位。 T0,A左移T位;T0,A右移T位。 即ATSA
25、。,第5章 TMS320C54x汇编语言程序设计,2. 定点数转换成浮点数,例如:NORM A,执行前: A=FF FFFF F001 T=0013 (19) A=1111111111111000000000001,28,左移19位,11111111 1000 0000 0000 1000,执行后: A=FF 8008 0000 T=0013 (19),又如: NORM B,A,执行前: A=FF FFFF F001 B=21 0A0A 0A0A T=FFF9(-7) B右移7位送入A A=00 4214 1414 执行后: A=00 4214 1414 B=21 0A0A 0A0A T=FF
26、F9(-7),第5章 TMS320C54x汇编语言程序设计,5.8 浮点运算程序,3.浮点数转换成定点数,定点数浮点数: 根据定点数,求其尾数和指数,然后将尾数按指数T进行移位。,当T0,A左移T位;当T0,A右移T位。,浮点数定点数: 根据指数T,将尾数进行移位。,当T0,A右移T位;当T0,A左移T位。,第5章 TMS320C54x汇编语言程序设计,5.8 浮点运算程序,4.浮点乘法运算实例,实现浮点乘法运算时,首先将定点数规格化成浮点数;然后完成浮点乘法运算;最后将浮点数转换成定点数。,【例5.8.1】编写浮点乘法程序,完成a1a2=0.4(-0.9),程序中保留10个数据存储单元: a
27、1(被乘数) a2(乘数) b1(被乘数的指数) c1(被乘数的尾数) b2(乘数的指数) c2(乘数的尾数) ep(乘积的指数) mp(乘积的尾数) prod(乘积) temp(暂存单元),第5章 TMS320C54x汇编语言程序设计,4.浮点乘法运算实例,程序清单:,.title “float.asm” .def start STACK:.usect “STACK”,100 .bss a1,1 .bss a2,1 .bss b1,1 .bss c1,1 .bss b2,1 .bss c2,1 .bss ep,1 .bss mp,1 .bss prod,1 .bss temp,1,.title “float.asm” .def start STACK:.usect “STACK”,100,.bss a1,1,a1,.bss a2,1,a2,.bss b1,1,b1,.bss c1,1,c1,.bss b2,1,b2,.bss c2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理专业解剖学学习资源
- 客户服务团队文化建设与价值观塑造
- 客户回访中的技巧与策略
- 轮机员安全防护措施及应急处理
- 成都天府生物产业孵化园三期项目水土保持方案报告表
- 列车的日常维护与保养知识培训
- 基于大数据的智慧城市规划与管理研究报告
- 联想集团品牌推广岗位面试要点
- 安徽省就业指导中心:皖地职场指南
- 2025年合成生物学助力合成生物学疫苗保险消费者权益保护
- 记账实操-能源电力行业全盘账务处理分录
- 2026年宁夏石嘴山市单招职业适应性测试题库含答案详解(培优a卷)
- 2026四川成都兴城融晟科技有限公司招聘网络运维工程师、项目经理2人考试备考题库及答案解析
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(轻巧夺冠)
- 2026丽水市国有资本运营有限公司公开招聘工作人员5人考试参考题库及答案解析
- 2026年亳州职业技术学院单招职业倾向性考试题库含答案详解(巩固)
- 煤矿培训纪律制度
- 《仪表飞行课程》课件
- 角度测量-水平角测量误差与注意事项(水利水电工程测量课件)
- 工商管理专业 酒店业人力资源流动管理分析
- 外国文学史(下)-马工程
评论
0/150
提交评论