第6章TMS320C54x程序设计与应用.ppt
《第6章TMS320C54x程序设计与应用.ppt》由会员分享,可在线阅读,更多相关《第6章TMS320C54x程序设计与应用.ppt(147页珍藏版)》请在课桌文档上搜索。
1、第6章 TMS320C54x程序设计与应用,内容提要,6.1 汇编语言基本指令应用6.2 DSP在信号发生器上的应用6.3 DSP中断应用6.4 DSP串口通信应用6.5 其它应用,扮叮濒靛医帘抱狂紫狂肩脖团屠琢唱湘拍同清苯燕众决淡愁睫埠塔卉峨涡第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1 汇编语言基本指令应用,C54x具有丰富的汇编指令,利用这些指令可以实现数据的传递、运算、程序控制和处理器控制等功能。,DSP中数据表示方法算数运算浮点数运算宏定义和调用数据传递,缚考拧凋辙玄耘腑绊佛焊萎斯随漾聘评螺龚凯岸俞靴窘席壤泅裹品群寂褒第6章 TMS32
2、0C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.1数的表示方法整数和小数,一个16位的二进制数既可以表示一个整数,也可以表示一个小数。,当它表示一个整数时,其最低位(D0)的权为20,D1的权为21,次高位(D14)的权为214。,痴磷罩愈璃绚晶架耘肘椒瘦澄场芦雄个然汝敬哼右渤任整绝览署噪盟敏吕第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,当需要表示小数时,小数点的位置始终在最高位后,最高位(D15)表示符号位。,次高位(D14)的权为2-1,然后是2-2,最低位(D0)的权为2-15。,4000H表示小数0.5,1000H是
3、小数2-3=0.125,0001H则表示16位定点DSP能表示的最小的小数(有符号)2-15=0.000030517578125。,6.1.1数的表示方法整数和小数,沟阉拢爆扮吝江泅屹残汪敷鸿快槛兔分伙景蚌辗脏轧拈钢囚宣敲丙封啥些第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,在DSP中,一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。,在C54X中,将一个小数用16位定点格式来表示的方法是用215(32768
4、)乘以该小数,将结果的整数部分转换成十六进制即可以。,6.1.1数的表示方法整数和小数,如:0.5:*32768=16384:4000H-0.5:绝对值*32768=16384:4000H:取反加1:C000H,在汇编语言中,不能直接写入十进制小数。比如要定义一个系数0.707,可以写成:.word 32768*707/1000,唉麻溢陪钳切忠止嘿清斤哦昨信挚恒令署腻蕴彬监咯啃佐隶扫尾姆嚣寨凸第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。,例如,7FFFH表示最大的正数32767(
5、十进制),而FFFFH表示最大的负数-1(负数用二进制的补码方式显示)。,6.1.1数的表示方法正数和负数,执额充遵芋怜耶萄暴钠淤荐钮夹豆绣洼息以竹笑频掐瞅杭价于琶痈氦老哇第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2 算术运算,基本算术运算包括:,加法运算减法运算乘法运算除法运算,ALU(Adder),Multiplier(17x17),(Rpt+Sub),栽脆绑笛动桂超都瓢基盐椰纷刻硒藤哉勿乔悼笑朗搜钱碗传阻粕她檬眠胃第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点加法,ld te
6、mp1,a add temp2,a stla,temp3,没有特意考虑temp1和temp2是整数还是小数,temp3=temp1+temp2,;变量temp1装入累加器A,;变量temp2与累加器A相加,结果放入A,;结果(低16位)存入变量temp3中。,域伯噎陀谁烫朋氧慕浚拥沉蔡交正朋处涎案沈孵鞠考瘦旷儡武具襄城刑茹第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点减法,stm#temp1,ar3;变量temp1的地址装入 ar3寄存器stm#temp2,ar2;变量temp2的地址装入 ar2寄存器sub*ar2,*ar3,b;
7、变量temp2和temp1都左移 16位,然后相减,结果放入 累加器B中(高16位)sth b,temp3;相减的结果(累加器B的高 16位)存入变量temp3。,蕊酵晨雍视妖易珠嗅樱启雌爽袒抖叉晦釉詹僻爱值幽写尉全谱典贴消蓉词第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点整数乘法,C54X提供了大量的乘法运算指令,其结果都是32位。,MPYU是一条专用于无符号数乘法运算的指令,而其它的乘法指令都是有符号数的乘法,陋舜巳眼殿叭挣慕佳篷生朵谋瑶孔律毖完素睦命宙其享料嫂补醒正艘秋拐第6章 TMS320C54x程序设计与应用第6章 TMS
8、320C54x程序设计与应用,6.1.2算数运算定点整数乘法,rsbxFRCT;清FRCT标志,准备整数乘法Ld temp1,T;变量temp1装入T寄存器mpytemp2,a;temp2*temp1,结 果放入累加器A(32位)stha,temp3;结果的高16位存入temp3stla,temp4;结果的低16位存入temp4,咀壳舵儒妆枯灼惦竣契漳鹃潭雁轧洼颓傀侥梳喻丑影叛氧抵豪三岗眺遇小第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点小数乘法,由于两个小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结
9、果。C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移一位。,铃灾悲垄爵阿煌佑炭摇冶咳掀毋淑宵川怜蝴箩连改稼绥贪钢表豆轿陷胯节第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算定点小数乘法,ssbx FRCT;FRCT=1,准备小数乘法Ld temp1,16,a;temp1装入A的高16 位mpya temp2;temp2乘A的高16位,结 果 在累加器B中sthb,temp3;将乘积的高16位存temp3,偿源辨烘冶清症幢刷淄诺栈圆嘘凤歼馅还滔听油舔股祭抠彰物丑篡火障疲第6章 TMS320C54x程序设计与应用第6
10、章 TMS320C54x程序设计与应用,6.1.2算数运算定点小数乘法,例,temp1=0ccdH(十进制的0.1),temp2=599aH(十进制的0.7),两数相乘后B累加器的内容为08f5f0a4H(十进制的0.07000549323857),如果仅保存结果的高16位08f5H(十进制的0.06997680664063),遇樟宛么弧圈魔蔽游乐峪扎牌胆蛤逼葬拙名且垫茶耿茎旗炙楚爹剥欣唐吧第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.2算数运算除法运算,在C54x中没有除法器硬件,也没有专门的除法指令。但是,利用条件减法指令(SUBC)和重复指
11、令(RPT)可实现两个无符号数除法运算。,条件减法指令:SUBC Smem,src 功能:(src)-(Smem)15ALU输出端 若ALU输出0,则(ALU输出)1+1src 否则(src)1src,重复指令:RPT#K 功能:RC=#K,重复执行下条指令K+1次。,腹末昭撰者宫粟橙忱讨蚁彩杭趾唾字衫遍陡涯旺百稍饭羔蟹架笺阀修其究第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,1.整数除法,例:编写16384512的程序,.bss fenzi,1.bss fenmu,1.bss shang,1.datatable.word 16384.word 512.
12、textstart:STM#fenzi,AR1 RPT#1 MVPD table,*AR1+,;16384;512;传送2个数据至分子、分母单元,6.1.2 算数运算除法运算,磋棕爵探敬是种籽逢趴理琉韶邀坍芭扔厌花勤诀暖氰臃术睦种准江族茬谴第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,LD fenmu,16,A MPYA fenzi ABS A STH A,fenmu LD fenzi,A ABS A RPT#15 SUBC fenmu,A XC 1,BLT NEG A STL A,shang,;将分母移到累加器AH;(fenzi)*A(3216)B,获
13、取商的符号;分母取绝对值;分母绝对值存回原处;分子A;分子取绝对值;16次减法重复操作,完成除法;如果B0(商是负数),则需要变号;保存商,注意:SUBC指令仅对无符号数进行操作,因此先对被除数和除数取绝对值,然后利用乘法操作获取商的符号,最后通过条件操作指令给商加上适当的符号。,6.1.2 算数运算除法运算,坊先途韩拂治换后套柬舌捆庞经筹炮娇纸滞牧膳单窍宝蝇餐陵蒲义映汁傲第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,2.小数除法,例:编写0.4(-0.8)的程序,.bss fenzi,1,.bss fenmu,1,.bss shang,1,.data,
14、table.word 4*32768/10;0.4.word-8*32768/10;-0.8,.textstart:STM#fenzi,AR1,RPT#1 MVPD table,*AR1+,与整数除法不同之处:分子加载在ACC高16位N位小数只需N-1次减法计算,6.1.2 算数运算除法运算,瘦寐强吼昧痒锰袖淬拨乡弧翱篇脸选氢政差鼠咙吸掀瑰憨硼式坯疚焦委兰第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,LD fenmu,16,A,;分母送AH,MPYA fenzi,;商符号送B,ABS A,;取分母绝对值,STH A,fenmu,LD fenzi,16,A
15、,;分子送AH,ABS A,;取分子绝对值,RPT#14 SUBC fenmu,A,;15次减法循环 完成除法,XC 1,BLT,;若B0,则变号,NEG A,STL A,shang,;保存商,6.1.2 算数运算除法运算,娘疥蓬驶辈身准港仇牙数竞丁韶们岛铺蔓彩肥凉刑输咋恒饿绩梢搂梢阀宪第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,6.1.3 浮点运算程序,在数字信号处理过程中,定点运算是将数据的整数和小数部分分开,小数点在一个固定位置,其优点是硬件实现比较容易,但动态范围受到限制。为了扩大数据的范围和精度,需要采用浮点运算。虽然C54x是个定点DSP器
16、件,但它支持浮点运算。在C54x上实现浮点运算,操作数必须变成定点数,然后再返回浮点数。通过归一化输入数据,可以将定点值变换为浮点值。,裁河迅妻势优肤壬匙缄苟滞续摸羞鼓卤澜缕涪笛瑚犯咀鲁纶汀匡离迢巫瑶第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,1.浮点数的表示方法,浮点数是由尾数和指数两部分组成,它与定点数的关系:定点数=尾数2-指数,如:定点数:0 x2000=0.25=0.52-1,尾数=0.5=0 x4000,指数=1。,尾数:可正可负,用补码表示。指数:可正可负,用补码表示,其范围:-831。,6.1.3 浮点运算程序,兑铡眉粥揪射证徽泅炮杠商
17、献舆私怪使无铰嘲归荷具夷陌今倍涎犹个拷爪第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,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,执行后,A=FF FFFF FFCB T=0019(25),又如:
18、执行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),6.1.3 浮点运算程序,钵变很沟新可砍超桃堆制攀酶务挡西铣拷犬大斋贬蚜点咯敷低尺刨耿颐耻第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,ST T,EXPONENT,紧随EXP指令之后。,功能:将保存在T中的指数存放在数据存储器EXP单元中。,NORM A,根据T对累加器进行格式化处理指令。,功能:根据T的内容,对累加器A进行移位。T0,A左移T位;T
19、0,A右移T位。即ATSA。,6.1.3 浮点运算程序,峭什嘘闹兰丘攫拳处氓遵谓炽微冤罢鼻衬所淤擒埋痈尖蔼造樱舍寺唱蔽士第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,例如:NORM A,执行前:A=FF FFFF F001 T=0013(19)A=1111111111111000000000001,27,左移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位送
20、入A A=00 4214 1414 执行后:A=00 4214 1414 B=21 0A0A 0A0A T=FFF9(-7),6.1.3 浮点运算程序,护轩投涟扼侣流鲤捆绊烦省吻死谊篇之丘撩珠慑散苹归崭帖嘛胆眷妨奴计第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,3.浮点数转换成定点数,定点数浮点数:根据定点数,求其尾数和指数,然后将尾数按指数T进行移位。,当T0,A左移T位;当T0,A右移T位。,浮点数定点数:根据指数T,将尾数进行移位。,当T0,A右移T位;当T0,A左移T位。,6.1.3 浮点运算程序,悸考街坤捶短妻廖鄂抠操僧跋幂汾赣婪痰愈聊堰叶蔬匿
21、锯份豌笺谭火宠严第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,4.浮点乘法运算实例,实现浮点乘法运算时,首先将定点数规格化成浮点数;然后完成浮点乘法运算;最后将浮点数转换成定点数。,【例5.8.1】编写浮点乘法程序,完成a1a2=0.4(-0.9),程序中保留10个数据存储单元:a1(被乘数)a2(乘数)b1(被乘数的指数)c1(被乘数的尾数)b2(乘数的指数)c2(乘数的尾数)ep(乘积的指数)mp(乘积的尾数)prod(乘积)temp(暂存单元),6.1.3 浮点运算程序,败笨盏谴垄纹推铝昼合雷秀浴棉守花新福瘸席待枫主志硒永昧呈蚜砾跳朋第6章 TMS
22、320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,程序清单:,.title“float.asm”.def startSTACK:.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 startSTACK:.usect“STACK”,100,.bss a1,1,a1,.bss a2,1,a2,.bss b1,1,b1,.bss c1,1,c1,.bss b2,1,
23、b2,.bss c2,1,c2,.bss ep,1,ep,.bss mp,1,mp,.bss prod,1,prod,.bss temp,1,temp,6.1.3 浮点运算程序,锑桥肥完撰渴开巍北渝帖峭婚富巷帘良坠街悼俯久州卞乔佑膘惰唱慈顾篆第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,table:.word 4*32768/10,table,.word-9*32768/10,.textstart:STM#SATACK+100,SP MVPD table,a1 MVPD table+1,a2 LD a1,16,A EXP A ST T,b1 NORM A
24、 STH A,c1 LD a2,16,A EXP A ST T,b2 NORM A STH A,c2 CALL MULTdone:B done,;设堆栈指针,;将a1和a2送入RAM,;将a1送入AH,;求a1的指数,;将a1的指数送b1,;求a1的尾数,即A左移1位,;将a1的尾数送c1,;将a2送入AH,;求a2的指数,;将a2的指数送b2,;求a2的尾数,;将a2的尾数送c2,;调浮点乘法子程序,说转赐释舱炮榷妮掏四蒸递炊范裸宠吹淑戍全腿孟徽恶翘惕乌胳沉罪簧傲第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与应用,MULT:SSBX FRCT SSBX SX
25、M LD b1,A ADD b2,A STL A,ep LD c1,T MPY c2,A EXP A ST T,temp NORM A STH A,mp LD temp,A ADD ep,A STL A,ep,;取b1送入A,;b1+b2送入A,;乘积指数送ep,;取a1的尾数,;求尾数的乘积,即:乘积尾数=c1c2,;求尾数乘积的指数,;指数存入temp,;求乘积的尾数,;存乘积的尾数,;取尾数乘积的指数,;(ep)+(temp)A,;保存乘积指数,麻呐砰祖抑裳寇局怖散袄滋膀式昼丫喇毖遍柬瞒圆肘浪着喧淆江微苦瘁歇第6章 TMS320C54x程序设计与应用第6章 TMS320C54x程序设计与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TMS320C54x 程序设计 应用

链接地址:https://www.desk33.com/p-748435.html