《DSP原理及应用》主讲:黄灿水电话:13960992859Email:fzu_cshuang@126.com基于TMS320LF240x系列课堂授课时间分配:(32学时)•第1章TMS320LF240x概述——2•第2章TMS320LF240x系列DSP内部资源介绍——4•第3章TMS320C240x寻址方式和指令系统——4•第4章CCS3.1集成调试环境——4•第8章数字量(I/O)模块——4•第9章事件管理器模块(EVM)——6•第10章AD转换模块——4•第11章串行外设接口模块(SPI)——•第12章串行通信接口模块(SCI)——•第13章CAN控制器模块——•第14章应用实例——4第2章TMS320LF240x系列DSP内部资源介绍•2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•2.2存储器和I/O空间•2.3系统配置和中断•2.4程序控制2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•中央处理单元(CPU)–输入定标器–乘法单元–中央算术逻辑单元2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•1、输入定标移位器–是一个16位到32位的滚动式左向移位器;–能将输入的16位数据的0~15位在本周期内向左移位以得到32位的输出;–本操作不需要额外的周期。3116150Inputshifter(32bits)MUX中央算术逻辑单元16161632程序读总线数据读总线Inputscalingsection2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•移位器的输入来源–数据读总线(DRDB),该输入值来自指令操作数据所引用的数据存储单元;–程序读总线(PRDB),该输入是指令操作数给出的常数。•移位量的来源–嵌在指令字中的常数。把移位量放在指令字中,该程序代码使用特定的数据比例;–临时寄存器TREG提供。根据TREG的值移位,数据的定标因子是动态确定的,可适应不同的系统要求。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•输入移位器的输出值–最低有效位LSBs段填0;–未使用的最高有效位MSBs填0或者根据状态寄存器ST1的SXM位的值来确定是否需要进行符号扩展XXXXAF11163200AF1100输入移位器接收数据左移8位后的输出值(SXM=0)XXXXAF111632FFAF1100输入移位器接收数据左移8位后的输出值(SXM=1)AF11AF11(a)(b)2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•2、乘法器–16×16位的硬件乘法器,在单个周期内产生一个32位乘积结果的有符号或无符号数;–除了MPYU指令,所有的乘法指令都执行有符号的乘法操作。PREGTREGMultiplier16×16MUX中央算术逻辑单元16161632程序读总线数据读总线MultiplicationsectionProductshifter(32bits)32数据写总线1616162.1TMS320LF240x系列DSP的CPU内部功能模块介绍•乘法器的输入–16位临时寄存器(TREG),在乘法之前把数据读总线的值加载到TREG;–数据读总线的数据存储器值和程序读总线的程序存储器值。•乘法器的输出–两个输入值相乘后的32位结果保存在乘积寄存器(PREG)中;–PREG的输出连接到32位的乘积定标移位器(PSCALE),通过PSCALE将乘积结果送到CALU或数据存储器。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•乘法定标移位器(PSCALE)–输入:该移位器的32位输入到PREG的输出。–输出:完成移位后,全部32位送到CALU,或将结果的16位存到数据存储器。–移位模式:该移位器可用4种移位模式,这些模式由状态寄存器ST1的乘积移位方式(PM)位确定。–注:PREG的内容保持不变,其值被复制到PSCALE中,进行移位。PM移位说明00不移位乘积结果没有移位地送到CALU单元或数据总线01左移1位移去在一次2的补码乘法运算中产生的1位附加符号位,以得到一个Q31的乘积10左移4位当与一个13位的常数相乘时,移去在16×13位的2的补码乘法运算中产生的4位附加符号位,以生成一个Q31的乘积11右移6位对乘积结果进行定标,以使得运行128次的乘积累加器不会溢出2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•乘法器相关指令及操作–用LT指令将数据从数据总线载入TREG提供1操作数,MPY指令提供第2个操作数或从数据总线上得到。–使用MPY指令时,可以对一个13位的立即数进行操作,每两个指令周期得到一个乘积。–代码执行多路乘法和乘积求和运算时,CPU支持流水线操作。指令操作LT把通过CALU得到的前次乘积结果装载到TREGLTP把PREG的值装载入ACCLTA把PREG的值加载到ACCDMOV,LTD把PREG的值加到ACC,移位TREG输入数据到数据存储器的下一地址LTS从ACC中减去PREG的值2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•乘法器相关指令及操作–乘且累加并带动数据移动指令MAC和MACD充分利用了乘法器的计算宽度,允许两个操作数被同时处理。–无符号乘法运算MPYU指令执行大大方便了用于扩展精度的算术运算。–平行并累加前次乘积指令SQRA和平方并减去前次乘积指令SQRS传送相同的数到乘法器的两个输入端,以对一个数据存储器单元的值进行平方运算。–存储乘积的高字节指令SPH和低字节指令SPL,可将装入PREG的32位乘积结果传送到CALU单元或数据存储器。–在执行中断服务程序前必须对PREG的值进行保存。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•3、中央算术逻辑部分–中央算术逻辑单元(CALU):实现各种算术、逻辑功能;–32位累加器(ACC):接收来自CALU的输出,并可以根据进位位(C)的值来实现移位;–输出移位器:将ACC的高位字和低位字在送入数据存储器之前进行移位。MUXACCHACCLCOutputshifter(32bits)CALUCentralarithmeticlogicsection32321632323232输入移位器乘积移位器数据存储器2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•中央算术逻辑单元(CALU)–运算功能:16位加、16位减、布尔逻辑操作、位测试、移动和循环。–输入:一个由累加器提供,另一个由乘积定标移位器或输入数据定标移位器提供。–输出:其结果送至32位累加器,进行移位。–相关状态位:符号扩展模式位SXM(ST1第10位)确定CALU是否进行符号扩展。SXM=0,抑制符号扩展;SXM=1,进行符号扩展。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•累加器(ACC)–功能:对送到ACC的CALU的运算结果进行单个移位和循环操作。–输入:CALU的运算结果。–输出:ACC的高16位和低16位中任何一个都可送到输出定标移位器,经定标移位后存入数据存储器。–相关状态位状态位状态寄存器说明进位位CST1第9位C=0:减结果产生借位/加结果未产生进位;C=1:加结果产生进位/减结果未产生借位;左移或左循环,ACC最高位送至C,否则最低位送至C。溢出方式位OVMST0第11位决定ACC如何反映算术运算的溢出。OVM=1:正溢出,ACC填充最大正数,否则填充最大负数;OVM=0:正常溢出。溢出标志位OVST0第12位ACC未发生溢出时,OV=0;否则OV=1且被莎存。测试/控制标志位TCST1第11位根据被测试位的值,该位被置0或1。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•输出定标移位器将累加器输出的内容左移0~7位,移动位数由存储器指令指定,然后用SACH或SACL指令将移位器中的高位字或低位字保存到数据存储器中,ACC的内容不变。00F0F0A10F0F0F0F0A103216累加器输出移位器(左移4位)数据存储器位置00F0F0A128403C3C28403216累加器输出移位器(左移6位)数据存储器位置(b)(a)2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•4、辅助寄存器算术逻辑单元(ARAU)–在CALU操作的同时执行8个辅助寄存器(AR7~AR0)上的算术运算。–8个辅助寄存器提供了灵活而有效的间接寻址。–通过把数值0~7写入状态寄存器ST0第3位的辅助寄存器指针(ARP),选择一个辅助寄存器作为当前AR。–当前AR存放被访问的数据存储器的地址,根据指令的需要分别向数据读/写地址总线读/写数据,使用完该数据后,当前AR的内容可以被ARAU增减,可实现无符号16位算术运算。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•ARAU可执行的操作–将辅助寄存器值增、减1,或者增、减一个变址量(借助任何支持间接寻址的指令)。–使辅助寄存器的值加/减一个常数(ADRK/SBRK指令),该常数是指令字的低8位。–将AR0的内容与当前AR的内容进行比较,并把结果放入状态寄存器ST1的测试/控制位TC(CMPR指令)。结果经数据写总线DWEB传送到TC。•辅助寄存器的用途–数据存储器地址存储器;–通过CMPR指令,使辅助寄存器支持条件分支、调用及返回;–用作暂存单元;–用作软件计数器,按需要对其进行加、减。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•5、状态寄存器–两个状态寄存器ST0和ST1,含有各种状态和控制位;–可保存在数据存储器,也可从数据存储器加载,可以保存和恢复子程序的机器状态;–加载状态寄存器LST指令写ST0和ST1,保存状态寄存器SST指令读ST0和ST1;–INTM位不受LST指令的影响;–寄存器中每一位均可由SETC和CLRC指令单独置位和清0。2.1TMS320LF240x系列DSP的CPU内部功能模块介绍•ARB辅助寄存器指针缓冲器:当ARP被加载到ST0,除了使用LST指令外,原有的ARP值被复制到ARB中;当通过LST#1指令加载ARB时,把相同的值复制到ARP。•ARP辅助寄存器指针:ARP选择间接寻址时使用的当前AR;当ARP被加载时,原有的ARP值被复制到ARB寄存器中;在讲解寻址时,ARP可由存储器相关指令改变,也可由LARP、MAR和LST指令改变;当执行LST#1时,ARP也加载与ARB相同的值。ARPOVOVM1INTMDP1513121110980ARPCNFTCSXMC115131211109876543210ST0ST11XF11PM112.1TMS320LF240x系列DSP的CPU内部功能模块介绍•OV溢出标志位:该位锁存的值指出CALU是否发生了溢出;发生溢出,OV=1,直到复位、溢出时条件转移、无溢出时条件转移或LST指令执行时才被清0。•OVM溢出方式位:该位决定如何管理CALU的溢出。SETC和CLRC指令分别可将该位置1或清0;LST指令也可修改该位;OVM=0,ACC结果正常溢出;OVM=1,根据发生的溢出,把ACC置为最大正值或负值。ARPOVOVM1INTMDP1513121110980ARPCNFTCSXMC115131211109876543210ST0ST11XF11PM112.1TMS320LF240x系列DSP的CPU内部功能模块介绍•CNF片内DARAM配置位:CNF=0,可配置双口RAM被映射到数据存储空间;CNF=1,可配置双口RAM被映射到程序;该位可通过SETC、CLRC和LST指令修改;RS复位时该位清0。•TC测试/控制标志位:TC=1,由BIT或BITT指令测试位为1;利用NORM指令测试时,ACC的2个最高有效位“异或”为真;CMRP所测试的当前AR和AR0之间的比较条件成立。ARPOVOVM1INTMDP1513121110980ARPCNFTCSXMC115131211109