《DSP原理及应用.ppt》由会员分享,可在线阅读,更多相关《DSP原理及应用.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DspslTMS320C54x DSP 结构、原理及应用结构、原理及应用孔莹莹孔莹莹 1.7 程序存储器地址的形成v主要内容:主要内容:1.程序存储器地址的形成2.影响PC的各种操作:分支转移调用与返回条件操作单条指令或块指令重复操作硬件复位中断Dspslv程序计数器(程序计数器(PC)v重复计数器(重复计数器(RC)v块重复计数器(块重复计数器(BRC)v块重复起始地址寄存器(块重复起始地址寄存器(RSA)v块重复结束地址寄存器(块重复结束地址寄存器(REA)vPC:16位,寻址位,寻址64K程序空间(程序空间(C5402、C5416还有还有一个一个XPC,C5402多的多的4根地址线可寻址
2、根地址线可寻址16个个64K字字页程序空间扩展到页程序空间扩展到1M,C5416多的多的7根地址线寻址根地址线寻址128个个64K字页程序,扩展到字页程序,扩展到8M)程序地址生成器(PAGEN)的组成Dspslv定义:定义:16位计数器位计数器v作用:保存内部或外部程序存储器的地址作用:保存内部或外部程序存储器的地址v例:例:即将取值的某条指令即将访问的某个16位立即操作数即将访问的系数表在程序存储器中地址1.7.1 程序计数器PCDspsl1.7.1 程序计数器PCv表表1-16 加载地址到加载地址到PC的几种途径的几种途径 BD pmad BACCD src CALLD pmad CAL
3、AD src INTR K TRAP K Dspsl1.7.2 分支转移操作对指令而言:对指令而言:v无条件无条件分支转移:表分支转移:表1-19v条件条件分支转移:表分支转移:表1-20两者分延迟操作(指令助记符带D)和不带延迟操作v延迟:可以先执行分支转移指令后面一条双字指延迟:可以先执行分支转移指令后面一条双字指令或两条单字指令;令或两条单字指令;v不带延迟:将已读入的一条双字指令或两条单字不带延迟:将已读入的一条双字指令或两条单字指令从流水线清除(指令从流水线清除(未执行未执行),然后进行转移。),然后进行转移。Dspsl区别0080h0F77h0081h0010h007Fh0315h
4、延迟延迟不延迟不延迟执行执行跳转跳转读入读入清除清除跳转跳转读入读入程序存储器程序存储器一条双字指令或者一条双字指令或者两条单字指令两条单字指令Dspsl表1-19 无条件分支转移指令Dspsl表1-20 条件分支转移指令Dspsl1.7.3 调用与返回操作对程序或函数而言:对程序或函数而言:中断中断原先程序原先程序,转移转移到程序存储的到程序存储的其他地址其他地址执行,执行,并将并将原地址压入堆栈原地址压入堆栈,以便返回时继续执行,以便返回时继续执行v无条件无条件调用与返回:表调用与返回:表121v条件条件调用与返回:调用与返回:表表122两者分延迟操作(指令助记符带D)和不带延迟操作Dsp
5、sl表1-21 无条件调用和返回指令Dspsl表1-22 条件调用和返回指令Dspsl1.7.4 条件操作 C54x有一些指令只有当一个条件或多个条件得到满足有一些指令只有当一个条件或多个条件得到满足时才能执行。时才能执行。A 类类一组一组一组一组Dspsl表1-21 条件指令中的各种条件B类类BAC一组一组二组二组一组一组二组二组Dspsl表124 多重条件指令中的条件组合Dspsl多重条件v分组选择原则:分组选择原则:同一组内,可以在A、B或C类中各选择一个条件不能在同一类中选择两个条件不同组内只能或不能与被测试的必须是同一个累加器Dspsl条件执行指令XCv如果条件分支转移如果条件分支转
6、移只有只有1-2字的程序段字的程序段,可以用,可以用一条但周期条件执行指令一条但周期条件执行指令XC完成。完成。XC,cond,cond,cond若条件满足,就执行紧随此命令后的个字的指令(只能取1或2两个值,1时,执行1个单字指令,2时,执行1个双字指令或2个单字指令),否则就执行1条或2条NOP指令。Dspsl 表125 条件存储指令S-SAVE,AC-ACC,C-CONDITION,D-DMS-SAVE,TR-T Reg.,C-CONDITION,D-DMS-SAVE,RC-BRC,C-CONDITION,DDM有条件的将有条件的将CPU寄存器内容存放到数据存储单元寄存器内容存放到数据存
7、储单元Dspsl1.7.5 重复操作v重复执行单条指令重复执行单条指令v重复执行一段程序重复执行一段程序Dspsl重复执行单条指令v指令:指令:RPT和和RPTZv由重复计数器(由重复计数器(RC)管理)管理v重复执行次数(重复执行次数(RC)1v优点:使一些多周期指令变成单周期指令,提高优点:使一些多周期指令变成单周期指令,提高指令执行速度。指令执行速度。v操作数:操作数:n最大值最大值65535 累加器清零累加器清零 Dspsl表126 重复操作时变成单周期的多周期指令Dspslv有些指令不能与有些指令不能与RPT/RPTZ一起使用一起使用BCCINTRRETv一旦重复指令被取值译码,直到
8、重复循环完成对一旦重复指令被取值译码,直到重复循环完成对所有中断不响应(所有中断不响应(NMI,不包括,不包括RS)。)。v若响应若响应hold信号,重复操作是否执行取决于状态信号,重复操作是否执行取决于状态寄存器寄存器ST1的的HM位,位,HM=0继续否则暂停。继续否则暂停。重复执行单条指令有条件调用有条件调用指令指令无条件分支转移无条件分支转移指令指令中断指令中断指令无条件返回指无条件返回指令令DspslPMSTDspsl引脚DspslST1Dspsl程序块重复操作v由块重复计数器(由块重复计数器(BRC)、块重复起始地址寄存器)、块重复起始地址寄存器(RSA)和块重复结束地址寄存器()和
9、块重复结束地址寄存器(REA)管理与块重)管理与块重复指令复指令RPTB进行块重复操作。进行块重复操作。v重复执行次数(重复执行次数(BRC)1v举例:举例:STM 99,BRC RPTB NEXT1;下一条到NEXT之前为块重复 .NEXT:.v执行结果:执行结果:RPTB的下条指令至的下条指令至NEXT的上一条指令之间的上一条指令之间的程序块重复执行的程序块重复执行100次次 具体解释见具体解释见P54 Dspsl程序块重复操作重复执行BRC+1=100RPTB:PC+2RSANEXT-1REA1 BRAF当BRC 0时0 BRAF利用块重复零开销循环,块重复不能嵌套,要使重复操作嵌套:只
10、能再最里层采用块重复,外层采用BANZ指令。条件分支转移指令条件分支转移指令Dspsl状态寄存器状态寄存器ST1(1)ST1寄存器Dspsl1.7.6 复位操作v复位复位RS是一个不可屏蔽的外部中断,是一个不可屏蔽的外部中断,v任何时候复位,都会使任何时候复位,都会使C54进入一已知状态进入一已知状态(Watchdog问题问题)。)。vRS至少至少5个时钟个时钟周期的低电平。周期的低电平。v复位后,处理器从复位后,处理器从FF80开始执行程序。开始执行程序。Dspsl模拟-数字-模拟信号的过程DspslWatchdogv看门狗看门狗,又叫又叫 watchdog timer,是一个定时器是一个定
11、时器电路电路,一般有一个输入一般有一个输入,叫喂狗叫喂狗,一个输出到一个输出到MCU的的RST端端,MCU正常工作的时候正常工作的时候,每隔一端时间输每隔一端时间输出一个信号到喂狗端出一个信号到喂狗端,给给 WDT 清零清零,如果超过规如果超过规定的时间不喂狗定的时间不喂狗,(一般在程序跑飞时一般在程序跑飞时),WDT 定定时超过时超过,就回给出一个复位信号到就回给出一个复位信号到MCU,是是MCU复位复位.防止防止MCU死机死机.看门狗的作用就是防止程看门狗的作用就是防止程序发生死循环,或者说程序跑飞。序发生死循环,或者说程序跑飞。Dspsl复位期间的操作v将将IPTR置成置成1FFhv将将
12、PMST中的中的 MP/MC位置成与引脚位置成与引脚MP/MC相同的数值相同的数值v将将PC置成置成FF80hvXPC寄存器清成零寄存器清成零(C5402/16)v不管不管MP/MC状态如何状态如何,将,将FF80h加到地址总线加到地址总线v数据总线变成数据总线变成高阻状态高阻状态v控制线均处于无效状态控制线均处于无效状态v产生产生 IACK信号信号vINTM置成置成1,关闭所有的可屏蔽中断关闭所有的可屏蔽中断v中断标志寄存器中断标志寄存器IFR清零清零v产生同步复位信号产生同步复位信号(SRESET),对外围电路初始化,对外围电路初始化DspslTMS320VC5402引脚说明2Dspsl复
13、位时各状态位的初始值:v注意:注意:SP及其它状态位没有初始化。及其它状态位没有初始化。MP/MC=0从片内从片内ROM执执行,否则从外程序存储执行行,否则从外程序存储执行Dspsl1.7.7 中断v中断是由硬件驱动或软件驱动的信号。中断是由硬件驱动或软件驱动的信号。由程序指令(INTR、TRAP或RESET)要求的软件中断。由外围设备发出的硬件中断(1)来自外部中断输入口的外部硬 件中断信号(2)受片内外围电路信号触发的内 部硬件中断信号Dspsl中断类型v可可屏屏蔽蔽中中断断:可可以以用用软软件件屏屏蔽蔽或或开开放放的的硬硬件件或或软软件中断,件中断,16个(个(SINT15SINT30)
14、C541(9个):INT3,INT2,INT1,INT0,RINT0,XINT0,RINT1,XINT1,TINTv非屏蔽中断:非屏蔽中断:RS、NMIRS是一个对C54x所有操作方式影响的非屏蔽中断NMI不会对C54x任何操作方式产生影响,响应时所有其他中断将禁止。Dspsl两个中断寄存器v中断标志寄存器中断标志寄存器IFRv中断屏蔽寄存器中断屏蔽寄存器IMRv两个寄存器两个寄存器每位所代表的中断每位所代表的中断是一样的,作用不是一样的,作用不同。同。Dspsl中断标志寄存器IFRv存储器存储器映象的映象的CPU寄存器寄存器v例:例:C5402IFR/IMRDspsl中断标志清零v当中断出现
15、时,相应的标志位置当中断出现时,相应的标志位置1v以下情况下,中断标志位清以下情况下,中断标志位清0:1、复位;2、中断得到响应;3、将1写到IFR的某一位(此位变成0),相应的尚未处理完的中断被清除;4、执行INTR指令,相应的中断标志位清0Dspsl中断屏蔽寄存器(IMR)v存储器映象的存储器映象的CPU寄存器寄存器v屏蔽外部和内部中断屏蔽外部和内部中断v例:例:C541IMR开放中断:开放中断:(1)状态寄存器状态寄存器ST1中的中的 INTM0(2)IMR中的相应位为中的相应位为1RS和和NMI不能被不能被屏蔽屏蔽Dspsl中断寄存器位域功能说明Dspsl中断处理过程v1.接受中断请求
16、接受中断请求当发生硬件或软件指令请求中断时,IFR相应位置1(RS和NMI除外)。v2.响应中断响应中断对软件中断和非屏蔽中断,CPU立即响应对可屏蔽中断的响应必须满足以下条件:(1)优先级别最高(同时出现多个中断时)(2)ST1 中 的 INTM(中断方式位)0(3)IMR 中 的 相 应 位 为 1vCPU响响应应中中断断时时,让让PC转转到到相相应应的的中中断断向向量量处处,并并发发出出IACK信号,清除相应中断标志位信号,清除相应中断标志位v3.执行中断服务子程序,中断返回执行中断服务子程序,中断返回Dspslv软件中断包括:软件中断包括:INTR响应时ST1中的INTM位置1,关闭其
17、他可屏蔽中断。TRAP响应中断不影响INTM位RESET将C54x转到一个已知的状态,影响ST0,ST1,不影响PMSTRS:PMSTIPTR位位附录附录CDspsl中断处理过程v1.接受中断请求接受中断请求当发生硬件或软件指令请求中断时,IFR相应位置1(RS和NMI除外)。v2.响应中断响应中断对软件中断和非屏蔽中断,CPU立即响应对可屏蔽中断的响应必须满足以下条件:(1)优先级别最高(同时出现多个中断时)(2)ST1 中 的 INTM(中断方式位)0(3)IMR 中 的 相 应 位 为 1vCPU响响应应中中断断时时,让让PC转转到到相相应应的的中中断断向向量量处处,并并发发出出IACK
18、信号,清除相应中断标志位信号,清除相应中断标志位v3.执行中断服务子程序,中断返回执行中断服务子程序,中断返回Dspsl中断操作流程图 关闭关闭 所有的所有的 中断中断 Dspsl中断向量地址的形成v中断向量地址中断向量地址IPTR(9位)左移位)左移2位后的中断向量序号位后的中断向量序号v举例:举例:INT0:其序号为:其序号为10,左移,左移2位为位为40 若若IPTR001,则中断向量地址位,则中断向量地址位00c0hv复位时复位时:IPTR1FF,中断向量表序号为,中断向量表序号为0,故复位向,故复位向量地址为量地址为FF80v改变改变PMST寄存器中的寄存器中的IPTR值,值,可改变
19、中断向量地址可改变中断向量地址v例:用例:用0001h加载加载IPTR,中断向量移至,中断向量移至0080h。Dspsl1.7.8 省电工作方式vC54可以工作在多种省电工作方式(见表可以工作在多种省电工作方式(见表1-28)v在省电工作状态在省电工作状态(IDLE1、IDLE2、IDLE3、HOLD):CPU暂停工作功耗减小保持CPU内容v 省电工作方式结束时,省电工作方式结束时,CPU继续工作继续工作v 此外,还有两种省电方式:此外,还有两种省电方式:将BSCR(分区开关控制)寄存器第0位置1,关断外部总线将PMST(处理器工作方式状态)寄存器的CLKOFF位置1,关断CLKOUT输出Ds
20、psl表1-28 四种省电工作方式Dspsl1.8 流水线v避避免免流流水水线线冲冲突突,各各寄寄存存器器工工作作时时等等待待周周期期,有有效的运行程序。效的运行程序。C54中的流水线操作中的流水线操作典型的流水线图典型的流水线图流水线中的时序冲突流水线中的时序冲突等待周期表等待周期表Dspsl1.8.1 流水线操作vC54 6级指令流水线级指令流水线v任何一个机器周期内,可有任何一个机器周期内,可有16条指令同时工作条指令同时工作Dspsl流水线的存储器操作v分两阶段:分两阶段:加载储存单元的地址进行读/写操作v举例:举例:6个常用操作个常用操作(a)取指(b)单操作数读(c)双操作数读(d
21、)单操作数写(e)双操作数写(f)读一个操作数和写一个操作数Dspsl图1-19 流水线中的存储器存取操作Dspsl图1-19 流水线中的存储器存取操作Dspsl图1-20 分支转移指令的流水线图(继续)v阴影部分表示一条指令的全部操作阴影部分表示一条指令的全部操作Dspsl分支转移指令流水线图分析v流水线流水线1:用:用指令地址指令地址a1加载加载PABv流水线流水线2:双字分支转移指令双字分支转移指令取指取指v流水线流水线3、4:分支转移指令译码:分支转移指令译码v流水线流水线5:用:用b1加载加载PABv流水线流水线6、7:执行阶段:执行阶段v执行分支转移指令需要执行分支转移指令需要4T
22、v在在流流水水线线过过程程中中紧紧随随B指指令令后后的的i3、i4指指令令(都都是是单字单周期指令)根据是否延迟决定单字单周期指令)根据是否延迟决定能否被执行能否被执行。Dspsl1.8.2 延迟分支转移v问题地提出:问题地提出:B指指令令的的执执行行只只需需2T,但但现现在在是是4T,浪浪费费2个周期个周期原因:i3,i4不允许执行v解决办法:延迟分支操作解决办法:延迟分支操作Dspsl延迟分支转移指令流水线图v延迟分支转移指令在延迟分支转移指令在6、7周期执行,变成双周期指令周期执行,变成双周期指令v在转移前,在转移前,执行执行i3,i4(两条单字周期指令)(两条单字周期指令)v第第10个
23、周期转至个周期转至b1,执行,执行j1指令指令Dspsl延迟分支转移指令的用法DspslvBD BANZD CALLD FCALLD RETED FRETD BACCD FBD CALAD FCALAD RETFD FRETED BCD FBACCD CCD RETD RCD具有延迟操作功能的指令Dspsl1.8.3 条件执行vC54x有一条条件执行指令有一条条件执行指令:XC n,cnd,cnd,cnd 如果条件满足,则执行下面n(n=1或2)条指令,否则下面n条指令改为执行n条NOP指令,它的流水线图如图1-22所示。Dspsl条件执行指令流水线图Dspsl条件执行指令流水线v周期周期4:
24、XC指令的地址指令的地址a4加载到加载到PAB。v周期周期5:取:取XC指令的操作码。指令的操作码。v周期周期7:当:当XC指令在流水线中进行到寻址级时,指令在流水线中进行到寻址级时,求解求解XC指令所规定的条件。如果条件满足,则后指令所规定的条件。如果条件满足,则后面的两条指令面的两条指令i5和和i6进入译码级并执行;如果条进入译码级并执行;如果条件不满足,则不对件不满足,则不对i5和和i6指令译码。指令译码。v需要注意的是需要注意的是,在求解在求解XC指令的条件时指令的条件时,它前面的它前面的两条指令还没有执行完两条指令还没有执行完,因此因此,这两条指令对这两条指令对XC的操作是的操作是不
25、会产生影响不会产生影响的。的。Dspsl条件执行指令流水线v 条件执行指令条件执行指令XC,是一条是一条单字单周期指令单字单周期指令,与条与条件跳转指令相比件跳转指令相比,具有快速选择其后具有快速选择其后1或或2条指令条指令是否执行的优点是否执行的优点。XC指令在执行指令在执行前前2个周期就已个周期就已经求出条件经求出条件,如果在这之后到执行前改变条件,如果在这之后到执行前改变条件(例例如,发生如,发生中断中断),将会造成无法预期的结果。所以,将会造成无法预期的结果。所以,要尽力要尽力避免避免在在XC指令执行前指令执行前2个周期个周期改变指令所改变指令所规定的条件规定的条件。Dspsl1.8.
26、4 双寻址RAM(DARAM)与流水线vC54片片内内DARAM存存储储器器块块内内部部允允许单周期访问其两次许单周期访问其两次单周期内允许同时访问DARAM的不同块单周期内允许两条指令访问DARAM的不同块允许处于不同级的两条指令同时访问同一DARAM块Dspsl为何单周期内CPU能同时访问DARAM两次?v原因:原因:一次访问在前半周期另一次访问在后半周期v前半、后半周期操作:前半、后半周期操作:利用PAB、PB取指 前半周期利用DAB、DB读取第一个数据前半周期利用CAB、CB读取第二个数据后半周期利用EAB、EB将数据写入存储器 后半周期DspslDARAM的半周期寻址图DspslDA
27、RAM的半周期寻址图Dspsl从DARAM中同时取指和数vLD*AR2+,A;AR2指向程序代码驻留的指向程序代码驻留的DARAM区区vI2vI3vI4Dspsl单寻址存储器与流水线vC54x内部有两种形式单寻址存储器:内部有两种形式单寻址存储器:单寻址读/写存储器(SARAM)单寻址只读存储器(ROM或DROM)同时寻址的不是同一块不会出现冲突同时访问同一存储块时,出现时序冲突,将另一次寻址自动延迟到下一周期。Dspsl流水线冲突及等待周期v流流水水线线的的优优点点:允允许许CPU多多条条指指令令同同时时利利用用CPU资源;资源;v当当一一个个CPU某某个个资资源源同同时时被被一一个个以以上
28、上流流水水级级访访问问时,就会发生时序上的冲突;时,就会发生时序上的冲突;有些时序冲突,CPU通过延迟寻址,自动缓解;有些时序冲突,无法防止,需插入NOP(空操作)指令(或重新安排指令顺序)解决。Dspsl1.8.6 流水线的等待周期v对下列存储器映象寄存器同时寻址,有可能发生对下列存储器映象寄存器同时寻址,有可能发生时序上的冲突时序上的冲突辅助寄存器(AR0AR7);重复块长度寄存器(BK);堆栈指针(SP);暂存器(T);处理器工作方式状态寄存器(PMST);状态寄存器(ST0和ST1);块重复计数器(BRC);存储器映象累加器(AG、AH、AL、BG、BH、BL)。Dspsl流水线冲突情
29、况分析只有某些只有某些MMR操作才会引起插入等待周期问题操作才会引起插入等待周期问题Dspsl例1:对辅助寄存器执行标准的写操作 引起的等待问题N表示第二条指令需要第一条指令表示第二条指令需要第一条指令AR1中的值中的值Dspsl例2:将例1中的第一条指令改用STM指 令,则情况就发生了变化v(STM是是一一条条保保护护性性指指令令):一一旦旦译译码码立立刻写入刻写入AR1。vMVDKMVMMMVMD有类似的作用有类似的作用Dspsl例3:通过插入NOP指令的方法解决流水线冲突vC54自自动动地地将将写写操操作作延延迟迟一一个个周周期期,缓缓解解了第一个矛盾了第一个矛盾v第第三三条条指指令令需
30、需要要AR1中中的的值值时时,没没有有准准备备好好冲突冲突Dspsl例3方法解决v例例3的方法解决结果是流水线不再发生冲突的方法解决结果是流水线不再发生冲突插入NOP或与程序无关的单字指令Dspsl等待周期表v附附录录D等等待待周周期期表表(哪哪些些指指令令后后面面要插要插NOP,插几个,插几个NOP)v双双字字或或者者三三字字指指令令会会提提供供隐隐含含的的保保护周期。护周期。v下面对等待周期表附录下面对等待周期表附录D用法举例用法举例Dspsl例4:对辅助寄存器执行标准的写操作vSTM是一条双字指令,隐含一个等待周期是一条双字指令,隐含一个等待周期vN表示需要表示需要AR1中的值中的值Ds
31、psl例5:对辅助寄存器执行标准的写操作引起的等待问题vN1表示需要表示需要AR2中的值中的值vN2表示需要表示需要AR3中的值中的值v(见附录(见附录D Tables 3第第2行第行第4列列STLM)Dspsl例5:对ST0执行标准的写操作引起的等待问题vN表表示示需需要要ST0中中的的DP值值(见见附附录录D Tables 1第第4行第行第4列列All other stores are latency 3)Dspsl流水线时序冲突问题小结vCALU操作不存在等待周期问题。操作不存在等待周期问题。v早早一一点点在在初初始始化化时时设设置置好好MMR,可可以以避避免免读读MMR时发生冲突。时发生冲突。v尽尽可可能能利利用用保保护护性性MMR写写指指令令,也也可可以以避避免免发发生生冲突。冲突。v利用利用等待周期表等待周期表,可以处理好对,可以处理好对MMR的写入操作。的写入操作。v在调试中,在调试中,应当关注未被保护的应当关注未被保护的MMR写操作写操作。Dspsl