《DSP芯片概述》PPT课件_第1页
《DSP芯片概述》PPT课件_第2页
《DSP芯片概述》PPT课件_第3页
《DSP芯片概述》PPT课件_第4页
《DSP芯片概述》PPT课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Freescale(Motorola)16位DSP原理及开发技术,2.DSP芯片概述,第一部分,Freescale(Motorola)16位DSPDSP56800介绍,模拟滤波器原理图,模拟滤波器优点:响应速度快缺点:精度低、放大器的线性及可处理信号的动态范围有很多限制、温度漂移大、系统调试不方便等。,用DSP实现FIR滤波器,低通抗混叠滤波器,信号采样与A/D变换,数字信号处理DSP,D/A转换,信号重建与低通滤波,DSP芯片硬件和软件的结合,|-DSP芯片-|,用DSP实现FIR滤波器的特点:软件与硬件的结合,有大量数学运算,稳定可靠,DSP与CPU,一普通CPU与DSP结构上的区别普通CPU:采用冯.诺曼结构(程序与数据统一编址,不区分存储器的程序空间和数据空间)。DSP:采用哈佛结构(程序与数据空间分开编址)即多总线结构。DSP56800内核的内部总线有7条:PABPDBXAB1XAB2XDB2CGDBPGDB改进的哈佛结构:程序和数据空间相互传数据。,DSP与CPU(续),(1)单并行处理例:ADDX0,AY0,X:(R1)+N(2)双重并行处理例:MACRX0,Y0,AX:(R0)+N,YX:(R3)-,X0;,二、由于多总线结构,DSP可实现指令的并行处理,程序的流水线执行使得读-译-执行似乎在一个时钟周期内完成的,DSP与CPU(续),三DSP的多重流水线结构,DSP与CPU(续),四运算方面乘加运算循环运算CPU要调用相应每一次检查是否乘、加函数循环n次DSP在一或二个时钟有重复n次指令周期内完成乘加REPn运算,用硬件逻辑有循环n次指令完成Doloopn如MAC指令,DSP与CPU(续),五CPU与DSP存储器CPU:片内存储器和片外可扩展存储器RAM、ROM(Flash)DSP:程序Flash、程序RAM、数据Flash、数据RAM、B00tFlash等等。DSP的存储器比单片机要复杂得多!,DSP与CPU(续),六CPU与DSP56800的中断DSP56800的中断比CPU要复杂得多:(1)DSP56800的中断源可达64个;(2)DSP56800的中断优先级达7级;(3)DSP56800与中断有关的寄存器多,达到14个。,16位MCU的使用方法120MIPS的处理效率最卓越的MCU性能120MHz,120MIPS的RAM16位的代码密度,32位的性能兼具MCU的控制功能和DSP的运算能力业界领先的安全结构第三代Flash技术,48KB-560KB的容量范围,EEPROM般的稳定性宽泛的温度范围-40C+85C-40C+105C-40C+125C,DSP56800是MCU和DSP的混合体,DSP56800内核结构,DSP56800的算数逻辑单元(ALU),组成:内部寄存器乘/加器MAC极值限制器,DSP56800的算数逻辑单元,3个16位的数据输入寄存器X0、Y0和Y1,其中Y0与Y1可作为1个32位寄存器Y,2个32位的累加寄存器A和B,A=A1+A0,再加上A2成为36位B=B1+B0,再加上B2成为36位A、B寄存器是当作36位还是当作32位来用,由用户在程序中设定,即对程序控制器中的运行模式寄存器OMR中的CC位编程,内部寄存器,DSP56800的算数逻辑单元,乘/加器MAC在一个周期内可以以并行方式完成乘及加运算,可完成有符号或无符号16位乘16位的分数运算,有符号16位乘16位的整数运算。极值限制器处理数据溢出的饱和限制器。用于处理包含扩展寄存器的36位或20位操作,使在执行从36位到32位或从20位到16位的传输、运算指令时不至于出现错误。(在软件执行时能体现其功能),DSP56800的地址产生单元(AGU),地址指针寄存器偏移量寄存器地址域寄存器堆栈指针寄存器,组成:,DSP56800的地址产生单元寄存器,通用地址寄存器R0-R3:等效为C语言中的指针类型的寄存器变量,用于访问存储器。地址偏移量寄存器N:常包含用于更新地址的偏移量,可为CGDB所读/写,可作为地址运算单元的输入。地址域寄存器M01:用于定义一个循环缓冲区。只有R0和R1可以与M01合作完成循环存储域的运算,R3是在存储器的并行处理时,用做读/写片内存储器的寄存器。堆栈指针SP:所有push和pop指令中都必须用到的寄存器,复位后要首先对SP初始化,用R0寄存器间接寻址一例,$1000,数据存储器,X,X,X,X,$1000,R0,(无影响),N,(无影响),M01,$1000,R0,(无影响),N,(无影响),M01,15,0,15,0,15,0,15,0,15,0,15,0,15,0,例:MOVEA1,X:(R0),$1000,数据存储器,1,2,3,4,15,0,执行后,执行前,012345678,A2,A0,15,0,31,16,32,35,A1,A,012345678,A2,A0,15,0,31,16,32,35,A1,A,使用地址产生单元寄存器注意点,出现的问题:由于DSP并行处理和流水线结构的特点,当使用MOVE指令和位操作指令改变R0-R3、SP、M01这些寄存器时,紧接着执行下一条指令时,上述寄存器的新值还不能起作用,要到再下一条指令时才能使用该新值。解决思路:用MOVE或位操作指令改变地址产生单元AGU中寄存器以后,要先插入一条与该寄存器无关但对程序有用的指令,当然也可以是NOP指令,再执行与该寄存器新值相关的指令。,流水线效应,消除流水线效应的方法有两种在两条指令间插入一条NOP指令,或者重排近处的指令,使流水线效应的条件不再成立。,一个AGU流水线效应的例子,move,#$4,r0,move,X:(r0),b,;用的是r0以前的值,不是4,move,x0,y0,方法1-在两条指令间插入一条NOP指令,move,#$4,r0,nop,;插入NOP指令,move,X:(r0),b,;使用r0的新值,4,move,x0,y0,方法2-重排指令,使条件不再成立,move,#$4,r0,move,x0,y0,;,move,X:(r0),b,;使用r0的新值,4,例设计一个FIR滤波器,算式:,c(0)*x(n-0),y(n)=,c(1)*x(n-1),c(99)*x(n-99),+,+,.,+,扩展的等式:,应怎样计算这个等式?,-为100个系数(c(i)开辟100个存储单元=数据存储器,.为100个数据样本(x(i)开辟100个存储单元=数据存储器,-乘法指令,-加法指令,-传输指令,X:000,C(0),C(1),C(2),C(99),X:099,X:128,X:227,X(n-0),X(n-1),X(n-2),X(n-99),MPY,ADD,MOVE,clra;清除累加器move#0,r3;为系数设置指针move#128,r0;为数据设置指针moveX:(r0)+,y0X:(r3)+,x0do#100,labelmacx0,y0,aX:(r0)+,y0X:(r3)+,x0label,这段代码有什么问题,会导致汇编错误?,设计一个FIR滤波器,设计一个FIR滤波器,答案:第4条指令是一个错误因为它用了r0,r0刚刚在指令3中初始化。解决方法:解决办法1:在指令后面插入一个NOP指令解决办法2:(更好)将第1条指令转移到第3条指令后面,DSP56800的程序控制单元(PCU),主要功能:指令读取指令译码硬件循环控制中断处理存储器的操作和使用,DSP56800的程序控制单元(PCU),PC:程序计数器,提供读取程序存储空间的地址SR:状态寄存,包括一个8位的模式寄存器MR和一个8位的条件码寄存器CCR。OMR:运行模式寄存器HWS:硬件堆栈寄存器LC:循环次数寄存器LA:循环地址寄存器,组成:,一状态寄存器SR(条件码寄存器),LF-循环标志位,LF=1,表示目前程序正执行循环语句操作I1I0-中断1和中断0的屏蔽位,I1=1关中断,I1=0开中断。I0只能写入1,目前没有使用SZ-数值域标志位,SZ位是b29和b30位异或的结果。L-极值限制标志位,复位时清零;数据表达范围超界时,极值限制标志置位。E-符号扩展标志位,E=0表示扩展寄存器A2或B2的值没有意义,仅仅是符号的扩展;E=1说明扩展寄存器中的值是有意义的。U-非规格化标志,是结果的b31位和b30位“异或”得到的N-结果为负标志Z-结果为零标志V-结果溢出标志C-进位、借位标志,二运行模式寄存器OMR,作用:OMR对芯片的运行方式进行控制,标识当前芯片的运行状态,复位时各位均为0。组成:NL-循环嵌套标志,NL=1表示两个DOLOOP循环正在进行。CC-条件码寄存器控制位,CC=1时条件码寄存器中的C、N、V、Z状态的变化依赖于MAC的32位结果;CC=0时上述标识变化基于MAC的36位结果SD-快速唤醒位,置为1可使DSP从stop状态下快速唤醒。R-四舍五入方式位,为0和1确定不同的四舍五入方式SA-饱和控制位。SA=1时,A2和B2不起作用;SA=0时,数值的表达范围扩大到36位或20位。EX-外部数据存储器控制位,EX=1外部数据存储器占全部64K空间MB、MA-模式控制位,可定义四种模式,但在DSP5680 x系列中,这两位一同连到外部引脚XBOOT上,所以只用两种:00:单片方式,11:扩展方式,三循环地址寄存器LA、循环次数寄存器LC、硬件堆栈寄存器HWS,作用:他们用于循环语句的控制。DSP56800指令集中有两种循环控制指令:REP和DO指令。REP指令实例:REP#5;ASLA;将ASLA指令重复执行5次立即数5是被锁存在循环次数寄存器LC中。REP指令只能重复紧接着的一条指令,不能实现多条指令的循环。,三循环地址寄存器LA、循环次数寄存器LC、硬件堆栈寄存器HWS(续),DO指令实例:DO指令:DO#8,END;开始循环语句MOVEX:(R0),A;REP#3;REP嵌套在DOLOOP中ASLAMOVEA,X:(R0)+;循环指令的最后一条指令END.;下一条指令REP指令可以嵌套在DO指令中。,DSP56800的可寻址空间,程序空间大小为64K字,0-$7F为中断向量区,$80-$FFFF为程序存储器区。,数据空间大小为64K字,$FFC0-$FFFF为外设的I/O短寻址空间,$0-$FFBF为数据存储器区。,启动Flash(BootFlash),DSP56800系列各种型号芯片还有2K字的启动Flash(BootFlash),可用于上电复位系统初始化和启动。DSP启动有多种方式:片内Flash启动;片外Flash启动;从I/O口下载一段程序到片内程序RAM中启动;BootFlash启动。,DSP56800系列,DSP56800内核的内部总线,程序空间地址总线PAB:用于读取程序程序空间数据总线PDB:用于读/写数据空间的数据数据地址总线XAB1:用于读/写数据空间的存储器数据地址总线XAB2:只与片内存储器相连,对外部存储器不起作用内部全局数据总线CGDB:用于读/写内部寄存器外设全局数据总线PGDB:用于以I/O短寻址方式读/写外设外部数据总线XDB2,DSP56800内核的内部总线,DSP56800的工作模式,运行模式寄存器OMR中的MB、MA位一同连到DSP外部引脚XBOOT上:XBOOT=0,单片方式。不需要外部扩展ROM(Flash)和RAMXBOOT=1,扩展方式。需要外部扩展ROM(Flash)和RAM,外部扩展的RAM对程序的调试有利。,56800系列DSP应用领域,DSP56F801DSP56F807具有多种外围电路,适合于移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论