信息工程学通信工程系内容摘要:

4个存储单元 .bss y,1 ;为结果 y分配 1个存储单元 .def start .data ;定义数据代码段  41iii xay35 table: .word 1*32768/10 ;在 table开始的 8个 .word 2*32768/10 ;地址放数据 .word 3*32768/10 .word 4*32768/10 .word 8*32768/10 .word 6*32768/10 .word 4*32768/10 .word 2*32768/10 36 .text ;定义可执行程序代码段 start:SSBX FRCT ;设置 FRCT位 , 表示进行小数乘 STM x,AR1 ;将 x的首地址传给 AR1 RPT 7 ;重复 8次下条指令 MVPD table,*AR1+ ;将程序空间 8个数传给数据存储器 STM x,AR2 ;将数据存储器第一个数 x1的地址传给 AR2 STM a,AR3 ;将数据存储器第五个数 a1的地址传给 AR3 RPTZ A,3 ;将 A清零 , 重复 4次下条指令 MAC *AR2+,*AR3+,A ;执行乘法累加和 , 结果放在 A中 STH A,@y ;将 A的高端字存入结果 y, 低端字省去 end: B end ;原处循环等待 .end 结果 y=0x1EB7。 转 换 为 十 进 制 数 : y= (1 163+14 162+11 161+7 160) /32768= 37 10. 除法运算 条件减法指令的功能如下: SUBC Smem, src ; ( src) ( Smem) 15 →ALU ;输出端 , 如果 ALU输出端 ≥ 0, ;则 ( ALU输出端 ) 1+1→src , ;否则 ( src) 1→src。 方法:减法指令加重复指令实现无符号运算 ( 1) 当|被除数|<|除数| 此时商为小数。 38 例 514 编写 247。 ( ) 的程序段。 .title “” .mmregs STACK .usect “STACK”,10H .bss num,1 ;为分子分配单元 .bss den,1 ;为分母分配单元 .bss quot,1 ;为商分配单元 .data ;定义数据段起始地址 table:.word 4*32768/10 ;在以 table为地址的 ;单元放入 .word 8*32768/10 ;在以 table为地址的 ;下一单元放入 .def start 39 .text ;定义数据段起始地址 start: STM num,AR1 ;将分子所在单元的地址传给 AR1 RPT 1 ;重复执行下一指令 2次 MVPD table,*AR1+;传送程序空间的 2个数据 ( 分子 、 ;分母 ) 至地址为 num开始的数据存储器单元 LD @den,16,A ;将分母移到累加器 A( 31~ 16) MPYA @num ; ( num) *( A( 31~ 16)) → B, ;获取商的符号 ( 在累加器 B中 ) ABS A ;分母取绝对值 STH A,@den ;分母绝对值存回原处 LD @num,16,A ;分子加载到 A( 31~ 16) ABS A ;分子取绝对值 RPT 14 ; 15次减法循环 , 完成除法 SUBC @den,A ; XC 1,BLT ;如果 B0( 商是负数 ) , 则需要变号 NEG A ;如果 B0执行求反 , 否则跳过此指令 STL A,@quot ;保存商 end: B end .end 40 a) |被除数|<|除数|商为小数 b=|被除数| ≥ |除数|商为整数 41 10. 除法运算 ( 2) 当|被除数| ≥ |除数|时 商为整数。 例 515 编写 16384247。 512的程序段。 将上例程序段仅作两处修改 , 其它不变 , 就得本例的程序段: LD @num,16,A 改成 LD @num,A RPT 14 改成 RPT 15 本例的程序段为: .title “” .mmregs STACK .usect “STACK”,10H 42 .bss num,1 ;为分子分配单元 .bss den,1 ;为分母分配单元 .bss quot,1 ;为商分配单元 .data ;定义数据段起始地址 table: .word 66*32768/100 ;在以 table为地址 ;的单元放入 16384 .word 33*32768/100 ;在以 table为地址 ;的下一单元放入 512 .def start .text ;定义数据段起始地址 start: STM num,AR1;将分子所在单元地址传给 AR1 RPT 1 ;重复执行下一指令 2次 MVPD table,*AR1+;传送程序空间的 2 ; 数据 ( 分子 、 分母 ) 至 地址为 ; num开始的数据存储器单元 43 LD @den,16,A ;将分母移到累加器 A( 31~ 16) MPYA @num ; ( num) *( A( 31~ 16)) → B, ;获取商的符号 ( 在累加器 B中 ) ABS A ;分母取绝对值 STH A,@den ;分母绝对值存回原处 LD @num,A ;分子加载到 A( 15~ 0) ABS A ;分子取绝对值 RPT 15 ; 16次减法循环 , 完成除法 SUBC @den,A ; XC 1,BLT ;如果 B0( 商是负数 ) , 则需要变号 NEG A ;如果 B0执行求反 , 否则跳过此指令 STL A,@quot ;保存商 end:B end .end ; 结果为 quot=0x0020=32。 44 第二节 DSP的浮点运算方法 1. 浮点数的表示方法 (1) C54x 本身是定点 DSP芯片; (2)用定点 DSP芯片进行浮点数运算,必须先将定点数转换为浮点数。 要 点 浮点数表示定点数 ,采用尾数和指数两部分来表示 定点数 =尾数 2(指数) 或 x=m 2e 45 2. 定点数转换成浮点数 这是一条提取指数的指令 , 所提取的指数保存在 T寄存器中。 如果累加器 A=0, 则 0→T ;否则 ,累加器 A的冗余符号位数减 8→T。 累加器 A中的内容不变。 转换要点 ( 1)先将定点数放在累加器 A或 B中,然后用指令: EXP A 或 EXP B。 注意 由于 C54x DSP用 16位表示数字 , 其对浮点数的表示与 IEEE 7541985标准的 32位表示法略有不同。 采用一个单元保存指数和一个单元保存尾数的两个 16位表示法。 46 例 516 提取 A=FF FFFF FFCB中的指数值。 执行指令: EXP A 执行前 执行后 A=FF FFFF FFCB A=FF FFFF FFCB T= 0000 T= 0019 ( 25) 本例中 , 由于 A≠ 0, 需要先求出 A的冗余符号位并减去 8。 A=F F F F F F F F C B 1111 1111 1111 1111 1111 1111 1111 1111 1100 1011 33位冗余符号位 1, 338=25=0x0019 47 例 517 提取 B=07 8543 2105中的指数值。 执行指令: EXP B 执行前 执行后 B=07 8543 2105 B=07 8543 2105 T= 0007 T= FFFC ( 4) 本例中 , 由于 B≠ 0, 需要先求出 B的冗余符号位并减去 8。 A= 0 7 8 5 4 3 2 1 0 5 0000 0111 1000 0101 0100 0011 0010 0001 0000 0101 4位冗余符号位 0, 48=4=0xFFFC 4=( 0x0004) =( 1111 1111 1111 1011+1) 补 =(0xFFFC) 补 48 ( 2) 使用指令 ST T, EXPONENT 将保存在 T寄存器中的指数存放到数据存储器的指定单元 EXPONENT中。 如 EXP A ST T, @e1 ;将指数存入数据存储器 ; e1所指定的单元中。 转换要点 ( 3)使用指令 NORM A。 按T寄存器中的内容对累加器 A进行归一化处理。 这里的将定点数转换成浮点数所进行的归一化处理,指通过左移或右移,使一个二进制数变为一个小数,且小数点后的第一个数不为零,移动的位数用指数表示。 49 例如 : =()2 20=()2 21, = 20=() 2 20, =() 20=()2 22。 3=(11)2 20=()2 22 8=(1000)2 20=()2 24 24=(11000)2 20=()2 25 上例中,对于小数,当转换成小数点后第一位为 1的归一化数时,通过将小数点右移实现,指数为负数。 对于整数,则将小数点左移实现,指数搂正数。 50 例 518 对累加器 A进行归一化处理。 执行指令: NORM A 执行前 执行后 A=FF FFFF F001 A=FF 8008 0000 T= 0013 T= 0013( 19) 执行时 , 按 T中的十进制数值 , 这里为正 19, 对累加器 A中的值左移 19位 , 即将在 A=FF FFFF F001中的值左移 19位 , 低位添零 , 高位溢出丢弃。 A=(1111 1111 1111 1111 1111 1111 1111 0000 0000 0001 )2 ← 1111 1111 1111 1111 1111 1111 1111 0000 0000 0001 0000 0000 0000 0000。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。