x讲应用程序设计.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
x讲应用程序设计

第7章 应用程序设计 (第10讲) 7.1 定标与溢出处理 补充:定点运算实现的基本原理 7.2 基础算术运算 7.3 FIR滤波器 7.4 IIR滤波器 浮点数的计算机存储格式 7.1 定标与溢出处理 定点数 小数点固定的数 123.45 比较 精度较低,数值范围较大 实现简单,效率较高 硬件支持定点数运算 浮点数 小数点不固定的数 12.345x101 1.2345 x102 0.12345 x103 精度较高,数值范围较小 实现复杂,效率较低 硬件不一定支持浮点运算 7.1 定标与溢出处理 C55x子系列 16位定点DSP 参与运算的数是16位的整型数 如何处理小数? 数的定标 由程序员确定一个数的小数点的位置 C55x中的定标方法 16位整数采用补码形式表示,每个采用Qi定标的16位数 1 个符号位、 i 个小数位、 15-i 个整数位 转换方法 浮点数(x)→定点数(xq) xq=(int)(x*2Q) = x << Q 定点数(xq) →浮点数转换(x) x=(float)(xq*2-Q) = x >> Q 溢出 溢出 算术运算结果超出寄存器所能表示的最大数 C55x的溢出处理机制 保护位 C55x的每个累加器都有8个保护位(39~32位) 溢出标志位 饱和方式位 SATD控制D单元的操作、SATA控制A单元的操作 溢出的处理方法 饱和、输入定标、固定定标和动态定标 补充:定点运算实现的基本原理 B.1 加法/减法的C语言定点模拟 B.2 乘法的C语言定点模拟 B.3 除法的C语言定点模拟 B.1 加法/减法的C语言定点模拟 浮点 定点 x的Q值为Qx,标定值为xq x= xq*2-Qx, xq=(int)(x*2Qx) y的Q值为Qy,标定值为yq y= yq*2-Qy, yq=(int)(y*2Qy) z的Q值为Qz,标定值为zq z= zq*2-Qz, zq=(int)(z*2Qz) B.2 乘法的C语言定点模拟 浮点 定点 B.3 除法的C语言定点模拟 浮点 定点 7.2 基础算术运算 7.2.1 加减运算 7.2.2 乘法运算 7.2.3 除法运算 7.2.4 小数乘法 7.2.1 加减运算 加法指令 单周期内完成32位加法运算 MOV40 dbl(Lmem),ACx ADD dbl(Lmem),ACx 64位的高32位加法要考虑低32位加法产生的进位 ADD uns(Smem), CARRY, ACx 例7-1,64位加法运算 减法指令 单周期内完成32位减法运算: MOV40 dbl(Lmem),ACx SUB dbl(Lmem),ACx 64位的高32位减法要考虑低32位减法产生的借位 SUB uns(Smem),BORROW,ACx 例7-2,64位减法运算 7.2.2 乘法运算 例7-3,32位整数乘法运算 7.2.4 小数乘法 冗余符号位的问题 两个带符号小数相乘,所得乘积带有2个符号位 解决方法 设定状态寄存器ST1中的FRCT(小数方式)为1,当乘法器将结果传送至累加器时就会自动左移1位 例7-8,两个Q31格式有符号小数相乘 7.2.3 除法运算 十进制除法 二进制除法 C55x没提供硬件除法器和专门的除法指令 除法指令 条件减法指令:SUBC 重复指令:RPT 例7-4,无符号16位除16位整数除法 例7-6,带符号16位除16位整数除法 7.3 FIR滤波器 FIR滤波器的输出和输入序列间的关系 例7-9,FIR滤波器的C语言编程实现 例7-10,FIR滤波器的C55x汇编语言实现 小结 掌握 典型程序的设计方法 预习 C55x的片上外设 AC0 AC0 + + + .sect ".text" .align 4 .global start .sym start,start,36,2,0 start: MOV #0100h,AR0 MOV #0102h,AR1 MOV #0104h,AR2 BSET SXMD BCLR SATD BCLR FRCT AMAR *AR0+ ;AR0指向X0 ||AMAR *AR1+ ;AR1指向Y0 MPYM uns(*AR0-),uns(*AR1),AC0 ;AC0=X0*Y0 MOV AC0,*AR2+ ;保存W0 MACM *AR0+,uns(*AR1-),AC0>>#16,AC0 ;AC0=X0*Y0>>16+X1*Y0 MACM uns(*AR0-),*AR1,AC0 ;AC0=X0*Y0>>16 ;

文档评论(0)

phltaotao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档