文档详情

DSP技术及应用第三章.ppt

发布:2018-04-29约1.83万字共174页下载文档
文本预览下载声明
2、控制程序 1.分支转移操作 通过分支转移指令改写PC,可以改变程序的流向。而子程序调用指令则通过将一个返回地址压入堆栈,执行返回时恢复原地址。 可执行: 分支转移 循环控制 子程序调用 功能 方法 条件分支转移 无条件分支转移 远分支转移 B[D]用指令中所给出的地址加载PC BACC[D]用所指定的累加器的低16位作为地址加载PC。 带延迟 不带延迟 C54xDSP转移种类: BC[D]如果指令中所规定的条件得到满足,就用指令中所给出的地址加载PC; BANZ[D]如果当前辅助寄存器不等于0,就用指令中所规定的地址加载PC。 允许分支转移到扩展程序存储器 无延时 在分支指令到达流水线执行阶段时,紧跟在该指令后面的2条已读入流水线的指令在流水线中被清除,不执行。 带延时 在分支指令到达流水线执行阶段时,紧跟在分支指令后面的一个2字指令或2个单字指令被执行。 远分支转移 远分支转移允许分支转移到扩展存储器。 2.子程序调用和返回 转移前,原程序的下条指令地址被压入堆栈,而在返回时则将该地址弹出至PC,使被中断的原程序能继续执行 当执行调用指令进行子程序或函数调用时,DSP中断当前运行的程序,转移到程序存储器其它地址继续运行。 功能 方法 无条件调用与返回 有条件调用与返回 远调用与远返回 带延迟 不带延迟 CALL[d] lop RET main 3.条件指令中的条件判断 多重条件判断 BC pmad,cond[,cond[,cond]] 相与关系 相或关系 BC pmad,cond BC pmad,cond 第1组 第2组 A 类 B 类 A 类 B 类 C 类 EQ OV TC C BIO NEQ NOV NTC NC NBIO LT ? ? ? ? LEQ ? ? ? ? GT ? ? ? ? GEQ ? ? ? ? 第1组 例如 可以从A类中选一个条件,同时从B类中选择一个条件。但是不能从同一类中选择两个条件。 另外,两种条件测试的累加器必须是同一个。 可以同时测试AGT和AOV,但不能同时测试AGT和BGT。 第1组 第2组 例如 可以同时在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件 可以选择TC、C和BIO,但不能同时选择NTC、C和NC 特 例 如果条件分支转移出去的地方只有1~2字的程序段,则可以用一条单周期条件执行指令(XC)来代替分支转移指令: XC n,cond[,cond[,cond]] 当n=1,且条件得到满足,就执行紧随此条件指令后的1个字指令。 当n=2,且条件得到满足,就执行紧随此指令后的1个双字指令或者2条单字指令。 当条件不满足,就依n的值执行1条或2条NOP指令。 1. 加法和减法运算 例 编写求解加、减法的程序,计算z=x+y-w。 SUM1:LD @x,A ;将x地址的内容送A ADD @y,A ;将y地址的内容与A中x值相加 SUB @w,A ;将A中的内容与w 相减,得z STL A,@z ;将A的计算值存入z 地址中 3、算术运算程序 例 编写求解直线方程的程序,计算y=mx+b。 SUM2:LD @m,T ;将m 地址的内容送T MPY @x,A ;将x 地址的内容与T中的m相乘, ;结果送A ADD @b,A ;将A中的mx与b 地址的内容相加, ;结果送A STL A,@y ;将A的计算结果存入y 地址中 运行速度快; 用间接寻址方式获得操作数,且辅助寄存器只用了AR2~AR5; 占用程序空间小; 2.双操作数乘法运算 特 点 例 编制求解 的程序。 利用双操作数指令可以节省机器周期。迭代次数越多,节省的机器周期数也越多。本例中,在每次循环中,双操作数指令都比单操作数指令少用一个周期,节省的总机器周期数=T*N(迭代次数)。 单操作数指令方案 双操作数指令方案 LD #0,B LD #0,B STM #a,AR2 STM #a,AR2 STM #x,AR3 STM #x,AR3   STM #19,BRC    STM #19,BRC RPTB do
显示全部
相似文档