




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Blackfin DSP的寻址方式及指的寻址方式及指令系统令系统本章参考书:本章参考书: Blackfin Processor Programming Reference,内核结构及存储器结构回顾内核结构及存储器结构回顾DSP技术技术内核结构(知识回顾)内核结构(知识回顾)DSP技术技术ntwo 16-bit multipliersntwo 40-bit accumulatorsntwo 40-bit arithmetic logic units (ALUs)nfour 8-bit video ALUsnone 40-bit shifterneight 32-bit registers or
2、16 independent 16-bit registers存储器结构(知识回顾)存储器结构(知识回顾)v所有资源,如内部存储器、外部存储器、所有资源,如内部存储器、外部存储器、I/O控制寄存器都统一用控制寄存器都统一用32位地址映射到位地址映射到4GB空空间间vL1存储器由内核直接访问,性能最高存储器由内核直接访问,性能最高v外部存储器通过外部存储器通过External Bus Interface Unit (EBIU)访问访问vDMA可以提供高带宽的数据搬移。它可在内可以提供高带宽的数据搬移。它可在内部存储器和外部存储器之间提供代码及数据部存储器和外部存储器之间提供代码及数据的块传输的块
3、传输DSP技术技术v内部存储器:每个内部存储器:每个Blackfin处理器包含处理器包含3个块个块的片内存储器,内核对这些存储器可以进行的片内存储器,内核对这些存储器可以进行高速访问高速访问qL1指令存储器,由指令存储器,由SRAM和和cache组成。该存储组成。该存储器可以被处理器全速访问。器可以被处理器全速访问。qL1数据存储器,由数据存储器,由SRAM和和(或或)cache组成。该组成。该存储器可以被处理器全速访问。存储器可以被处理器全速访问。qL1高速暂存高速暂存RAM,该存储器可与,该存储器可与L1存储器以相存储器以相同的速度访问,但它只能用作数据同的速度访问,但它只能用作数据SRA
4、M,而不,而不能配置成能配置成cache。qL2存储器,容量比存储器,容量比L1大,访问性能比大,访问性能比L1稍低,稍低,作为多核之间的共享内存,可以存放数据和指令作为多核之间的共享内存,可以存放数据和指令,但不能用作,但不能用作cacheDSP技术技术v外部存储器:通过外部总线扩展器外部存储器:通过外部总线扩展器 External Bus Interface Unit(EBIU)进行访问。进行访问。 它是一它是一个个16位总线接口,可以与多种类型的存储器位总线接口,可以与多种类型的存储器进行无缝连接,如进行无缝连接,如SDRAM、flash memory、 EPROM、ROM、SRAM、m
5、emory-mapped I/O设备。设备。vI/O内存空间:内存空间:Blackfin没有定义独立的没有定义独立的I/O空空间,所有间,所有I/O设备的控制寄存器都通过设备的控制寄存器都通过32位地位地址映射到统一的址映射到统一的4GB地址空间。地址空间。DSP技术技术Register Files(知识回顾)(知识回顾)v处理器的运算单元定义有处理器的运算单元定义有3个寄存器组个寄存器组Data Register File, Pointer Register File, The DAG registersq数据寄存器:用于接收从数据总线输入的操作数数据寄存器:用于接收从数据总线输入的操作数以
6、及以及 保存运算单元的运算结果保存运算单元的运算结果q指针寄存器:存放地址指针指针寄存器:存放地址指针q地址发生寄存器:这是一组专门的寄存器,用于地址发生寄存器:这是一组专门的寄存器,用于管理在数字信号处理运算过程中的循环缓冲器,管理在数字信号处理运算过程中的循环缓冲器,实现地址产生的零开销实现地址产生的零开销DSP技术技术v地址算术单元寄存器组地址算术单元寄存器组DSP技术技术v数据运算单元寄存器组:数据运算单元寄存器组:R0R7q操作举例操作举例32位访问:位访问: R2 = R1 + R2;16位访问:位访问: R2.L = R1.H * R0.Lq在寄存器组与在寄存器组与L1数据存储器
7、之间连接有数据存储器之间连接有3组组32位位的独立数据总线,包括的独立数据总线,包括2个个Load,和,和1个个StoreDSP技术技术v累加器寄存器:累加器寄存器:A0A1q结构结构16位:位:An.L, An.H8位扩展位:位扩展位:An.X32位:位:An.W40位:位:AnDSP技术技术q操作举例操作举例A0 = A1; /* 40-bit move */A1.W = R7; /* 32-bit move */A0.H = R5.H; /* 16-bit move */R6.H = A0.X; /* read 8-bit value and sign extend to 16 bits
8、 */DSP技术技术算术逻辑单元算术逻辑单元ALUv2个个ALUs实现定点数据的算术及逻辑运算。实现定点数据的算术及逻辑运算。ALU定定点指令对点指令对16-, 32-, and 40-bit的操作数进行运算,得的操作数进行运算,得到到16-, 32-, or 40-bit的定点输出。的定点输出。ALU 指令包括:指令包括:q寄存器加减寄存器加减q立即数加减立即数加减q乘法器结果加减乘法器结果加减q逻辑运算:逻辑运算: AND, OR, NOT, XOR, bitwise XOR, Negateq函数运算函数运算: ABS, MAX, MIN, 四舍五入四舍五入, 除法除法DSP技术技术乘累加
9、单元(乘累加单元(MAC)v2个乘法器个乘法器 (MAC0和和MAC1) 实现定点乘法和实现定点乘法和乘累加运算。乘法器实现两个乘累加运算。乘法器实现两个16位数相乘,位数相乘,得到得到32位结果,乘法结果可用于累加器进行位结果,乘法结果可用于累加器进行40位的加减运算。位的加减运算。q乘法运算乘法运算q乘加运算(结果可舍入)乘加运算(结果可舍入)q乘减运算(结果可舍入)乘减运算(结果可舍入)DSP技术技术桶形移位寄存器桶形移位寄存器Barrel Shifterv桶形移位寄存器实现桶形移位寄存器实现16-, 32-, or 40-bit的移位的移位运算。包括:算术移位运算。包括:算术移位, 逻
10、辑移位逻辑移位, 旋转旋转, 以及以及 比特的测试、置位、封装、解封装、指数位比特的测试、置位、封装、解封装、指数位检测等。检测等。DSP技术技术程序控制器程序控制器PROGRAM SEQUENCERv程序控制器控制程序流并提供处理器要执行程序控制器控制程序流并提供处理器要执行的下条指令的地址。程序流大部分是线性的的下条指令的地址。程序流大部分是线性的,此时处理器顺序地执行程序指令。当程序,此时处理器顺序地执行程序指令。当程序采用非顺序结构时,线性程序流会发生改变采用非顺序结构时,线性程序流会发生改变,非顺序结构包括:,非顺序结构包括:q循环循环q子程序子程序q跳转跳转q中断和异常中断和异常q
11、空闲空闲DSP技术技术地址算术单元地址算术单元ADDRESS ARITHMETIC UNITvAAU负责保证在内存和内核寄存器之间进行负责保证在内存和内核寄存器之间进行可靠的数据传输。它可以独立地进行地址运可靠的数据传输。它可以独立地进行地址运算,以免去数据运算单元负担地址运算。算,以免去数据运算单元负担地址运算。DSP技术技术vAAU使用数据地址产生器计算数据的存取地使用数据地址产生器计算数据的存取地址址DSP技术技术vAAU实现多种功能以减小数据访问的开销实现多种功能以减小数据访问的开销q产生地址:在数据访问期间提供数据地址产生地址:在数据访问期间提供数据地址q产生地址后自动修改:提供数据
12、搬移时的地址,产生地址后自动修改:提供数据搬移时的地址,并为下一次搬移自动增减地址并为下一次搬移自动增减地址q产生偏移地址:提供相对于某个基地址的偏移量产生偏移地址:提供相对于某个基地址的偏移量,不改变原始地址指针,不改变原始地址指针q修改地址:增减地址,不进行数据搬移修改地址:增减地址,不进行数据搬移q位逆序地址:在数据搬移时提供位逆序地址位逆序地址:在数据搬移时提供位逆序地址DSP技术技术vDAG的寄存器的寄存器q索引寄存器索引寄存器I3:0:无符号:无符号32位,保存一个指向存储器的位,保存一个指向存储器的地址,如地址,如R3=I0q变址寄存器变址寄存器M3:0:有符号:有符号32位,在
13、寄存器数据搬移时位,在寄存器数据搬移时,提供,提供I寄存器的增量,如寄存器的增量,如R0=I0+M1q基址和长度寄存器基址和长度寄存器B3:0和和L3:0:无符号:无符号32位,位,Bn和和Ln设置一个循环缓冲器的起始地址和寻址范围,设置一个循环缓冲器的起始地址和寻址范围,Bn、Ln及及In相同下标为相关联的一组,公共完成循环寻址相同下标为相关联的一组,公共完成循环寻址q指针寄存器指针寄存器P5:0, FP, USP, SP:无符号:无符号32位指针寄存器位指针寄存器,在不同的指令中操作和使用。堆栈指针,在不同的指令中操作和使用。堆栈指针SP仅在监控模仅在监控模式下可以访问,用户堆栈指针式下可
14、以访问,用户堆栈指针USP在用户模式下是可以在用户模式下是可以访问的访问的DSP技术技术BLANKFIN指令集简介指令集简介DSP技术技术DSP技术技术BlackfinBlackfin指令集特点指令集特点(1)(1)vBlackfin 处理器系列汇编语言指令集使用易于编程处理器系列汇编语言指令集使用易于编程和可读性强的和可读性强的 代数语法。代数语法。v采用专门调整的灵活的高密度编码的指令,这些指采用专门调整的灵活的高密度编码的指令,这些指令令 被编译后只占用非常小的存储空间。被编译后只占用非常小的存储空间。v指令集还提供了多功能指令,以使在一个指令中能指令集还提供了多功能指令,以使在一个指令
15、中能够使用够使用 多个处理器内核资源。多个处理器内核资源。v除许多微控制器上常见的功能外,指令集除许多微控制器上常见的功能外,指令集 编译编译C 和和C+源代码时效率非常高。源代码时效率非常高。v指令集还支持用户(算法指令集还支持用户(算法/应用代码)和管理员应用代码)和管理员(O/S内核,设备驱动,调试器,内核,设备驱动,调试器,ISRs)两种运行)两种运行模式,允许对处理器内核资源的多级访问。模式,允许对处理器内核资源的多级访问。DSP技术技术BlackfinBlackfin指令集特点指令集特点(2)(2)v汇编语言采用了处理器独特的体系结构,具汇编语言采用了处理器独特的体系结构,具有以下
16、优点:有以下优点:q无缝集成无缝集成DSP/CPU特征,对特征,对8位和位和16位操作进行了优化。位操作进行了优化。q并发加载并发加载/存储的改进哈佛体系结构,每个周期支持存储的改进哈佛体系结构,每个周期支持2个个16位位MAC 或或4个个8位位ALU+2个加载个加载/存储存储+2个指针更新。个指针更新。q所有的寄存器、所有的寄存器、I/O、和存储器被映射成为统一、和存储器被映射成为统一4GB存储存储空间,提空间,提 供了一个简化编程模式。供了一个简化编程模式。q微控制器特征,如任意位和位域操作,插入和提取微控制器特征,如任意位和位域操作,插入和提取,对对8位、位、16位位 和和32位数据类型
17、上的整数操作,独立的用户和位数据类型上的整数操作,独立的用户和管理员堆栈指针。管理员堆栈指针。q代码密度增强,包括混合的代码密度增强,包括混合的16和和32位指令(无模式转换位指令(无模式转换和代码分和代码分 离)。常用指令以离)。常用指令以16位编码。位编码。DAG的寻址的寻址DSP技术技术DAG寻址方式汇总寻址方式汇总v帧和堆栈指针帧和堆栈指针v循环缓冲寻址循环缓冲寻址v位逆序寻址位逆序寻址v索引和指针寄存器的索引寻址索引和指针寄存器的索引寻址v自动增减寻址自动增减寻址v预修改堆栈指针寻址预修改堆栈指针寻址v立即数偏移地址的索引寻址立即数偏移地址的索引寻址v后修改寻址后修改寻址DSP技术技
18、术不同位宽的寻址不同位宽的寻址vBlackfin是按字节编址的,但是按字节编址的,但32-,16-,8-bit的访问必须是的访问必须是32-,16-,8-bit对齐的,对应对齐的,对应的的DAG寄存器的增量为寄存器的增量为4,2,1。q32比特访问:比特访问:R0=P3+, 访问后访问后P3的增量为的增量为4q16比特访问:比特访问: R0.L=WI3+, 访问后访问后I3的增量为的增量为2q8比特访问:比特访问: R0=BP3+(Z), 访问后访问后P3的增量为的增量为1, 字节值可以零扩展字节值可以零扩展/符号扩展到符号扩展到32位位DSP技术技术帧和堆栈指针帧和堆栈指针v很多时候,很多时
19、候,FP和和SP可以像普通的可以像普通的P寄存器一寄存器一样来操作,在样来操作,在Load和和Store指令中它们与通用指令中它们与通用指针类似:指针类似:qR1=BSP(Z)vFP和和SP还有其特殊的功能,还有其特殊的功能,FP作为帧指针作为帧指针可以扩展可以扩展16位编码的位编码的Load/Store操作的寻址操作的寻址范围;范围;SP作为堆栈指针在堆栈操作的指令中作为堆栈指针在堆栈操作的指令中发挥作用。发挥作用。DSP技术技术vSPq堆栈指针分为用户堆栈指针和监控堆栈指针。堆栈指针分为用户堆栈指针和监控堆栈指针。用户模式下:只能访问用户堆栈指针用户模式下:只能访问用户堆栈指针USP,但汇
20、编程,但汇编程序中的访问别名仍为序中的访问别名仍为SP监控模式下:可以访问用户堆栈指针监控模式下:可以访问用户堆栈指针USP,和监控堆,和监控堆栈指针栈指针SPDSP技术技术v一些一些Load/Store指令专用指令专用FP和和SP来操作来操作qFP-索引索引Load/Store,扩展了,扩展了16位编码的加载位编码的加载/保保存操作的寻址范围存操作的寻址范围q堆栈的堆栈的Push/Pop指令指令q链接链接/解除链接解除链接(Link/Unlink)指令,他们控制堆指令,他们控制堆栈帧空间并为该空间管理栈帧空间并为该空间管理FPDSP技术技术索引和指针寄存器的索引寻址索引和指针寄存器的索引寻址
21、v索引寻址使用索引寻址使用I寄存器或者指针寄存器中的值寄存器或者指针寄存器中的值作为有效地址作为有效地址qR0 = I2; /* 加载加载32位值位值 */qR0.H = WI2; /* 加载加载16位值位值 */qR0 = BI2; /* 加载加载8位值位值 */qP1 = R0; /* 保存保存32位值位值 */qWP1 = R0; /* 保存保存16位值位值 */qBP1 = R0; /* 保存保存8位值位值 */DSP技术技术v在进行在进行8和和16位位Load操作时可以进行符号位操作时可以进行符号位扩展或者零扩展。例如,假设扩展或者零扩展。例如,假设P1指向的地址指向的地址中的中的1
22、6位值为位值为0 x8080,则,则qR0 = WP1 (Z) ; /* R0 = 0 x0000 8080 */qR1 = WP1 (X) ; /* R1 = 0 xFFFF 8080 */qR2 = BP1 (Z) ; /* R2 = 0 x0000 0080 */qR3 = BP1 (X) ; /* R3 = 0 xFFFF FF80 */DSP技术技术v索引寻址可以支持立即数偏移量,这种寻址索引寻址可以支持立即数偏移量,这种寻址方式允许程序可以利用一个数据表的基地址方式允许程序可以利用一个数据表的基地址,来获取数据表中的数据。而这个寻址过程,来获取数据表中的数据。而这个寻址过程中基地址
23、指针的值不会被修改。中基地址指针的值不会被修改。q例如,假设例如,假设P1 = 0 x64008000,则,则P1+n访问的是访问的是0 x64008000 + n这个地址上的值。这个地址上的值。 q其中,根据访问的位宽,其中,根据访问的位宽,P1+n应该是位对齐的应该是位对齐的,否则会触发一个异常事件。,否则会触发一个异常事件。DSP技术技术自动增减寻址自动增减寻址v自动增减寻址会在访问后自动更新指针寄存自动增减寻址会在访问后自动更新指针寄存器或者器或者I寄存器。寄存器。v增量大小根据访问的位宽决定,增量大小根据访问的位宽决定,32、16和和8比特访问时指针的增量分别为比特访问时指针的增量分
24、别为4、2、1。v8和和16比特的读操作可以指定目标寄存器为比特的读操作可以指定目标寄存器为符号扩展或零扩展符号扩展或零扩展v指针寄存器可以用于指针寄存器可以用于8、16和和32比特访问,比特访问,而而I寄存器只能用于寄存器只能用于16和和32比特访问比特访问DSP技术技术v举例举例qR0 = WP1+(Z); 从从P1指向的地址加载一个指向的地址加载一个16位的值到位的值到R0,高位零扩展。访问后,高位零扩展。访问后P1加加2qR0 = I2-;从从I2指向的地址加载一个指向的地址加载一个32位的值到位的值到R0。访问后。访问后I2减减4DSP技术技术预修改堆栈指针寻址预修改堆栈指针寻址v预
25、修改寻址只用于堆栈指针预修改寻址只用于堆栈指针SPv它是在使用它是在使用SP之前先对之前先对SP进行修改进行修改v仅支持仅支持32位操作位操作v举例:举例:q-SP = R0; 将将R0压入堆栈压入堆栈DSP技术技术后修改寻址后修改寻址v后修改寻址使用后修改寻址使用I寄存器或者寄存器或者P寄存器的值作寄存器的值作为有效地址,然后通过另一个寄存器的值来为有效地址,然后通过另一个寄存器的值来修改它。修改它。qP寄存器可以通过其它的寄存器可以通过其它的P寄存器来修改寄存器来修改qI寄存器可通过寄存器可通过M寄存器来修改寄存器来修改q这类指令不支持这类指令不支持P寄存器作为目的寄存器,也不寄存器作为目
26、的寄存器,也不支持字节寻址支持字节寻址DSP技术技术v后修改寻址举例后修改寻址举例qR5 = P1+P2 ; 从从P1指向的地址指向的地址Load一个一个32位位数到数到R5,然后,然后P1 = P1 + P2qR2 = W P4+P5 (Z); 从从P4指向的地址指向的地址Load一一个个16位值到位值到R2,高位零扩展,然后,高位零扩展,然后P4 = P4 + P5qR2 = I2+M1 ;从从I2指向的地址指向的地址Load一个一个32位位数到数到R2,然后,然后I2 = I2 + M1DSP技术技术循环寻址循环寻址v索引寄存器索引寄存器Ix:是输出到地址总线上的值:是输出到地址总线上的
27、值v变址寄存器变址寄存器Mx:是:是Ix的增量(步长)的增量(步长)v基址寄存器基址寄存器Bx:缓冲区起始地址:缓冲区起始地址v长度寄存器长度寄存器Lx:缓冲区长度:缓冲区长度v缓冲区的边界判断和地址的计算方法如下:缓冲区的边界判断和地址的计算方法如下:q如果如果Mx 0时,时,且且Ix + Mx Bx + Lx, 则则Ix = Ix + Mx ;且且Ix + Mx Bx + Lx, 则则Ix = Ix + Mx Lx;q如果如果Mx 0时,时,且且Ix + Mx Bx , 则则Ix = Ix + Mx;且且Ix + Mx Bx, 则则Ix = Ix + MxLx。DSP技术技术v循环寻址说明
28、循环寻址说明DSP技术技术v循环寻址注意事项循环寻址注意事项q预调整地址方式不支持循环寻址方式。预调整地址方式不支持循环寻址方式。q在向在向Bx寄存器写入起始地址的同时,对应的寄存器写入起始地址的同时,对应的Ix寄存器也寄存器也会自动赋予相同的值。会自动赋予相同的值。qBx、Lx、Ix三个寄存器的序号必须一致,而三个寄存器的序号必须一致,而Mx寄存器可寄存器可以在同一个以在同一个DAG组中任意选取。组中任意选取。q两个两个DAG中都可以设置循环缓存区中都可以设置循环缓存区qMx寄存器可以正也可以负寄存器可以正也可以负q对对Lx和和Bx寄存器清零,对应的寄存器清零,对应的Ix寄存器自动恢复线性寻
29、寄存器自动恢复线性寻址方式。址方式。DSP技术技术v循环寻址的应用循环寻址的应用q构建软件的构建软件的FIFOq一些多维信号运算的缓冲区管理一些多维信号运算的缓冲区管理 ,如,如FFT、矩、矩阵运算等阵运算等DSP技术技术位逆序寻址位逆序寻址v为了对运算输出结果进行有序排列,一些算为了对运算输出结果进行有序排列,一些算法(如法(如FFT)需要采用位逆序方式寻址。为)需要采用位逆序方式寻址。为了满足这些需要,了满足这些需要,DAG的位逆序寻址特征允的位逆序寻址特征允许重复的将数据序列分小块并以位逆序方式许重复的将数据序列分小块并以位逆序方式保存这些数据的地址保存这些数据的地址qP3 += P0(
30、BREV)DSP技术技术v比特逆序的加法比特逆序的加法DSP技术技术v位逆序的来历位逆序的来历FFTqFFT计算过程:输入蝶形运算整序(位逆序计算过程:输入蝶形运算整序(位逆序)输出)输出DSP技术技术v位逆序寻址的概念位逆序寻址的概念q位逆序寻址主要针对位逆序寻址主要针对FFT算法设计,算法设计,FFT计算过计算过程中输入数据的排列次序被按照一定规律打乱,程中输入数据的排列次序被按照一定规律打乱,称为逆序排列。用称为逆序排列。用m=log2N位二进制数可以表示位二进制数可以表示N个输入数据的下标,将二进制下标的高低位交个输入数据的下标,将二进制下标的高低位交换,就得到逆序序列。如换,就得到逆
31、序序列。如N=8时,时,A3的下标是的下标是011,逆序后变成,逆序后变成110,即,即A6,数组,数组A0,A1,A2, A3,A4, A5,A6, A7逆序后变成逆序后变成A0,A4,A2,A6,A1, A5,A3, A7。q位逆序寻址可自动按照逆序规律计算地址,节省位逆序寻址可自动按照逆序规律计算地址,节省了逆序操作的软件开销。了逆序操作的软件开销。DAG提供了位逆序寻提供了位逆序寻址方式。址方式。DSP技术技术指令集指令集DSP技术技术DSP技术技术程序流控制指令程序流控制指令(1)(1)v跳转指令跳转指令qJUMP, JUMP.S, JUMP.Lv语法语法qJUMP (Preg) ;
32、 跳转至寄存器跳转至寄存器Preg所指向的一个绝对地址所指向的一个绝对地址qJUMP (PC + Preg) ; 跳转至跳转至PC(程序计数器)的一个相(程序计数器)的一个相对地址,偏移量为对地址,偏移量为Preg寄存器的内容寄存器的内容qJUMP offset ; 跳转至跳转至PC+offsetqJUMP.S offset ; 短跳转至短跳转至PC=PC+offset (13位)位)qJUMP.L offset ; 长跳转至长跳转至PC=PC+offset(25位)位)qJUMP user_label ; 跳转至用户定义标记的绝对地址跳转至用户定义标记的绝对地址q其中,其中,Preg: P5
33、0, SP, FPvExampleqjump get_new_sample ;跳转至用户定义标记的绝跳转至用户定义标记的绝对地址对地址qjump (p5) ;跳转至寄存器跳转至寄存器Preg所指向的一个绝对所指向的一个绝对地址地址qjump (pc + p2) ;跳转至跳转至PC(程序计数器)的一(程序计数器)的一个相对地址,偏移量为个相对地址,偏移量为Preg寄存器的内容寄存器的内容qjump 0 x224 ;跳转至跳转至PC+offsetqjump.s 0 x224 ;短跳转至短跳转至PC=PC+offsetqjump.l 0 xFFFACE86 ;长跳转至长跳转至PC=PC+offset
34、DSP技术技术DSP技术技术程序流控制指令程序流控制指令(2)(2)v条件跳转指令条件跳转指令qIF CC JUMPv语法语法qIF CC JUMP destination ; 如果如果CC=1,则跳转,则跳转qIF !CC JUMP destination ; 如果如果CC=0,则跳转,则跳转vExampleqif cc jump 0 xFFFFFE08 (bp); 如果如果CC为为1,则后,则后向(向( 0 xFFFFFE08是负值)跳转到一个偏移地址是负值)跳转到一个偏移地址,BP是分支预测选项,帮助处理器提高跳转指是分支预测选项,帮助处理器提高跳转指令的性能。令的性能。qif cc j
35、ump 0 x0B4; 如果如果CC为为1,则前向(,则前向( 0 x0B4 是正值)跳转到一个偏移地址是正值)跳转到一个偏移地址qif cc jump dest_label;如果;如果CC为为1,则跳转到一,则跳转到一个绝对地址个绝对地址DSP技术技术调用和返回指令调用和返回指令(1)v子程序调用指令:子程序调用指令: CALLv语法语法qCALL (Preg) ; 调用寄存器调用寄存器Preg所指向的一个绝所指向的一个绝对地址的子程序对地址的子程序qCALL (PC + Preg) ; 调用调用PC的一个相对地址,的一个相对地址,偏移量为偏移量为Preg寄存器的内容寄存器的内容qCALL
36、offset ; 调用一个相对地址调用一个相对地址PC+offsetq其中,其中,Preg: P50, SP, FPqCALL指令执行后,当指令执行后,当CALL的下一条指令地址会的下一条指令地址会被写入到被写入到RETS寄存器寄存器DSP技术技术vExampleqcall ( p5 ) ;qcall ( pc + p2 ) ;qcall 0 x123456 ;qcall get_next_sample ;DSP技术技术调用和返回指令调用和返回指令(2)v子程序返回指令:子程序返回指令: RTS, RTI, RTX, RTN, RTEv语法语法qRTS ; 由子程序返回,将由子程序返回,将RE
37、TS寄存器的值放入寄存器的值放入PCqRTI ; 由从中断返回,将由从中断返回,将RETI寄存器的值放入寄存器的值放入PCqRTX ; 由特殊情况返回,将由特殊情况返回,将RETX寄存器的值放入寄存器的值放入PCqRTN ; 由非屏蔽中断返回,将由非屏蔽中断返回,将RETN寄存器的值放入寄存器的值放入PCqRTE ; 由竞争返回,将由竞争返回,将RETE寄存器的值放入寄存器的值放入PCDSP技术技术循环指令循环指令v有两种指令格式有两种指令格式v第一种是第一种是LOOP loop_name loop_counter ;LOOP_BEGIN loop_name ;LOOP_END loop_na
38、me ;v第二种是第二种是LSETUP (Begin_Loop, End_Loop)Loop_Counter ;Begin_Loop和和End_Loop可以是偏移地址或绝对地可以是偏移地址或绝对地址标签,编译器会将绝对地址转换为相对地址址标签,编译器会将绝对地址转换为相对地址DSP技术技术vExample 1lsetup ( 4, 4 ) lc0 ;lsetup ( poll_bit, end_poll_bit ) lc0 ;lsetup ( 4, 6 ) lc1 ;lsetup ( FIR_filter, bottom_of_FIR_filter ) lc1 ;lsetup ( 4, 8 )
39、 lc0 = p1 ;lsetup ( 4, 8 ) lc0 = p11 ;DSP技术技术vExample 2loop DoItSome LC0; loop_begin DoItSome; loop_end DoItSome; loop MyLoop LC1; loop_begin MyLoop;loop_end MyLoop; DSP技术技术加载指令加载指令v加载立即数加载立即数qregister = constant ;v加载指针寄存器加载指针寄存器qP-register = indirect_address v加载数据寄存器加载数据寄存器qD-register = indirect_ad
40、dress v加载半字加载半字qD-register = W indirect_address (Z);零扩展;零扩展qD-register = W indirect_address (X);符号扩展;符号扩展DSP技术技术v加载字节加载字节qD-register = B indirect_address (Z);零扩展;零扩展qD-register = B indirect_address (X);符号扩展;符号扩展vExampler0 = -344 (x) ;p3 = p2 ;p5 = p0 + ;r6 = p2 + 12 ;r3 = p0 ;r2 = w sp - (z) ;r0 = b
41、 p4 + 0 xFFFF800F (x) ;DSP技术技术存储指令存储指令v存储指针寄存器存储指针寄存器q indirect_address = P-register;v存储数据寄存器存储数据寄存器q indirect_address = D-register ;vExample fp -12 = p1 ; p2 = p3 ; sp - = r2 ; i3 + m0 = r7 ;w i1 = r3.h ;b p1 + = r7 ;DSP技术技术寄存器数据转移指令寄存器数据转移指令v 语法:语法:q dest_reg = src_regq IF CC dest_reg = src_regq I
42、F ! CC dest_reg = src_regq dest_reg = src_reg (Z/X)q dest_reg = src_reg _byte (Z/X)v Exampler7 = p2 ;retn = p0 ;if cc r3 = r0 ;R4 = R0.L (Z)a0.h = r7.hr7 = r2.b(x) ;DSP技术技术堆栈操作指令堆栈操作指令v 进栈指令进栈指令: -SP (Push)v 语法语法q - SP = src_reg ; 对一个寄存器进行压栈对一个寄存器进行压栈q - SP = (src_reg_range) ; 对多个寄存器进行连续压栈对多个寄存器进行连续
43、压栈v 出栈指令出栈指令: SP+ (Pop)v 语法语法q dest_reg = SP + ;q (dest_reg_range) = SP + ;DSP技术技术vExample - sp = p0 ; - sp = (r7:5, p5:0) ; - sp = (r7:2) ;r0 = sp+ ;(p5:4) = sp + ;DSP技术技术堆栈操作指令堆栈操作指令v连接和撤销指令:连接和撤销指令:LINK, UNLINKv语法语法qLINK uimm18 ;qUNLINK ;v执行连接(执行连接(LINK)指令时,将当前的)指令时,将当前的RETS寄存器和帧指针寄存器和帧指针FP的值压入堆栈
44、,并将帧分的值压入堆栈,并将帧分配在堆栈的空间中。与此相反,撤销连接(配在堆栈的空间中。与此相反,撤销连接(UNLINK)指令时,将恢复压入堆栈中的)指令时,将恢复压入堆栈中的RETS寄存器和帧指针寄存器和帧指针FP的值。利用该指令的值。利用该指令可以在堆栈中为子函数的局部变量分配空间可以在堆栈中为子函数的局部变量分配空间DSP技术技术vExamplelink 8 ; 建立建立8个字的帧空间个字的帧空间 - sp = (r7:0, p5:0) ; 压栈压栈(r7:0, p5:0) = sp + ; 出栈出栈unlink ; 删除帧空间删除帧空间DSP技术技术控制代码比特(控制代码比特(CC)相
45、关指令)相关指令v比较指令比较指令qCC = operand_1 = operand_2qCC = operand_1 operand_2qCC = operand_1 = operand_2vExampleqcc = r3 = r2 ;qcc = r4 = 3 ;qcc = p0 p3 ;qcc = p2 -4 ;qcc = a0 = a1 ;DSP技术技术v转移转移CCqdest = CCqdest |= CCqdest &= CCqdest = CCqCC = sourceqCC |= sourceqCC &= sourceqCC = sourcev取反取反CCqCC = ! CCDSP
46、技术技术逻辑运算(比特域逻辑运算)逻辑运算(比特域逻辑运算)v与:与: dest_reg = src_reg_0 & src_reg_1v非:非: dest_reg = src_regv或:或: dest_reg = src_reg_0 | src_reg_1v异或:异或: dest_reg = src_reg_0 src_reg_1DSP技术技术vBXORSHIFT, BXOR这两种比特域异或指令这两种比特域异或指令可以实现线性反馈移位寄存器(可以实现线性反馈移位寄存器(LFSR)。)。应用:应用:q伪随机序列生成伪随机序列生成q循环码(如循环码(如BCH)的编码和解码)的编码和解码qCRC
47、校验校验DSP技术技术比特运算比特运算v比特清零:比特清零: BITCLR ( register, bit_position )v比特置位:比特置位:BITSET ( register, bit_position )v比特反转:比特反转:BITTGL ( register, bit_position )v比特测试比特测试qCC = BITTST ( register, bit_position )qCC = ! BITTST ( register, bit_position )DSP技术技术v比特融合比特融合qdest_reg = DEPOSIT ( backgnd_reg, foregnd_
48、reg )qdest_reg = DEPOSIT ( backgnd_reg, foregnd_reg ) (X)q该指令将该指令将foregnd_reg 中指定长度的比特段拷贝到中指定长度的比特段拷贝到backgnd_reg中指定的比特位置。中指定的比特位置。q应用:视频图像叠加算法应用:视频图像叠加算法v比特提取比特提取qdest_reg = EXTRACT ( scene_reg, pattern_reg ) (Z)qdest_reg = EXTRACT ( scene_reg, pattern_reg ) (X)q该指令从该指令从scene_reg中提取特定位置及长度的比特段中提取特定
49、位置及长度的比特段q应用:视频图像模式识别与分离算法应用:视频图像模式识别与分离算法DSP技术技术v比特复用比特复用qBITMUX ( source_1, source_0, A0 ) (ASR)qBITMUX ( source_1, source_0, A0 ) (ASL)q该指令将该指令将source_1和和source_0中的比特复用到中的比特复用到A0,并对寄存器中的值进行移位操作。,并对寄存器中的值进行移位操作。q应用:如卷积编码应用:如卷积编码DSP技术技术vExampleDSP技术技术v比特比特1的计数的计数qdest_reg = ONES src_regq该指令统计该指令统计s
50、rc_reg中为中为1的比特的个数的比特的个数q应用:误码校验;错误比特计数应用:误码校验;错误比特计数DSP技术技术移位指令移位指令v算术移位算术移位qdest_reg = shift_magnitude ;qdest_reg = src_reg shift_magnitude (opt_sat) ;qaccumulator = accumulator shift_magnitude ;qdest_reg = ASHIFT src_reg BY shift_magnitude (opt_sat) ;qaccumulator = ASHIFT accumulator BY shift_magn
51、itude;DSP技术技术v逻辑移位逻辑移位qdest_pntr = src_pntr 1 ;qdest_pntr = src_pntr 2dest_pntr = src_pntr 1 ;qdest dest_pntr = src_pntr = shift_magnitude ;qdest_reg shift_magnitude ;qdest_reg = src_reg shift_magnitude ;qdest_reg = LSHIFT src_reg BY shift_magnitude;DSP技术技术v算术移位和逻辑移位的区别算术移位和逻辑移位的区别q算术移位需要对符号位进行处理,即有
52、符号的移算术移位需要对符号位进行处理,即有符号的移位。右移时保持符号位;左移时,移位到一定程位。右移时保持符号位;左移时,移位到一定程度会保持饱和。度会保持饱和。q而逻辑移位是无符号的移位。右移时,符号位补而逻辑移位是无符号的移位。右移时,符号位补0;左移时最低为补;左移时最低为补0DSP技术技术v旋转移位旋转移位qdest_reg = ROT src_reg BY rotate_magnitudeqaccumulator_new = ROT accumulator_old BY rotate_magnitudeq比特旋转移位,从一端移出的比特会从另一端移比特旋转移位,从一端移出的比特会从另一
53、端移进来。移位链中包含进来。移位链中包含CCDSP技术技术vExampleDSP技术技术v移位加移位加qdest_pntr = (dest_pntr + src_reg) 1qdest_pntr = (dest_pntr + src_reg) 2qdest_reg = (dest_reg + src_reg) 1qdest_reg = (dest_reg + src_reg) 2qdest_pntr = adder_pntr + ( src_pntr 1 )qdest_pntr = adder_pntr + ( src_pntr 2 )DSP技术技术算术运算指令算术运算指令v 绝对值:绝对值:dest_reg = ABS src_regv 加减法加减法q 常规加减法:常规加减法:dest_reg = src_reg_1 +/- src_reg_2;q 预减预减/增比例的加增比例的加/减法:减法: dest_reg = src_reg_0 +/- src_reg_1 (RND20/ RND12);q 立即数加减法:立即数加减法: register += constant; register -= constant;q 预减预减/增比例的加增比例的加/减法首先将输入数据进行右减法首先将输入数据进行右/左移位,然后进行加左移位,然后进行加减,再对加减结果进行舍入,最后提取高减,再对加减
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建福州市体育工作大队招聘食堂小工2人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025福建福州罗源县卫健系统事业单位招聘编内41人模拟试卷及答案详解(全优)
- 2025江苏连云港恒驰实业有限公司招聘5人考前自测高频考点模拟试题及完整答案详解1套
- 2025年百菌清项目合作计划书
- 2025年不锈钢、镍纤维及纤维毡项目发展计划
- 2025福建三明市明溪县公安局招聘警务辅助人员13人考前自测高频考点模拟试题完整答案详解
- 2025广东东莞市寮步镇人民政府招聘网格管理员10人考前自测高频考点模拟试题带答案详解
- 2025赤峰环保投资有限公司招聘3人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025安徽阳光采购服务平台有限责任公司社会招聘1人(第二次)模拟试卷及答案详解(全优)
- 2025年装订活动及印刷用附件合作协议书
- 2024年河南郑州高新区招聘社区工作人员笔试真题
- 财务部门增值税发票管理操作手册
- 完整版消防应急预案范本三篇
- 学堂在线 军事理论 章节测试答案
- 六年级科学上册各单元知识点梳理归纳
- 高标准基本农田建设项目电力施工组织设计
- 隧道运营养护管理手册-下册
- 旋挖钻桩基施工方案
- 钢结构监理实施细则(新)
- 某某大学数字化校园建设项目可行性研究报告
- 高边坡施工危险源辨识及风险评价一览表
评论
0/150
提交评论