1、DSP 重点 仅供参考第一章 DSP技术概要1.DSP的含义数字信号处理是采用数值计算的方法对信号进行处理的一门科学数字信号处理器则是一种用于数字信号处理的可编程微处理器2.2.DSP系统的基本结构DSP系统的基本结构P13.计算机的总线结构(1)冯诺依曼总线示意图P2 (2)哈佛结构和改进哈佛结构示意图P3(3)计算机的总线结构分为:冯诺依曼结构和哈佛结构。多数微处理器和单片机采用冯诺依曼结构,对指令的执行只能串行进行,而不能并行进行,所以处理速度慢,数据吞吐量低,只含一条内部总线和数据总线DSP采用的是改进型哈佛总线结构。哈佛结构的程序存储器和数据存储器是分开的。有多条独立的程序总线和数据
2、总线。PAB(程序地址总线)PDB(程序数据总线)PCB(程序控制总线)DAB(数据数据总线)DCB(数据控制总线)它们可以同时对程序和数据进行寻址和读写。因此指令的执行和对数据的访问可以并行进行,使CPU的运行速度和处理能力都得以大幅度提高。改进型哈佛结构的改进之处是:在数据总线和程序总线之间有布局的交叉连接,也就是说,在程序空间和数据空间之间有相互访问的能力,从而增加了存储器访问的灵活性,提高了DSP的运行效率。DSP的哈佛总线改进之处体现在(1)片内RAM可以映像至数据空间,也可以映像至程序空间(2)片内ROM可以映像至程序空间,也可以映像至数据空间(3)具有装载功能4.DSP芯片内集成
3、有硬件乘法器和乘加单元,没有除法硬件。5.DSP芯片具有硬件重复循环机制,进入重复机制的指令会自动变为单周期指令,大大减少了执行时间。6.TI公司发展起三大系列的DSP芯片TMS320C2000 TMS320C5000 TMS320C6000系列 TMS320C2000该系列是作测控应用的16位/32定点DSP,执行速度最高达150MIPS,有两个系列C24X、C28XTMS320C5000该系列是低功耗的16位定点DSP,处理速度最高可达600MIPS,有C54X和C55X两个系列TMS320C6000该系列是高性能的32位DSP,C6000中又分三个系列C62XX、C64XX和C67XX,
4、其中C62XX、C64XX是定点DSP,C67XX是浮点DSP。7.ADI公司的DSP主要有4个系列ADSP21XX系列,主要以218X和219系列为代表SHARC系列,该系列是32位浮点DSPTiger SHARC系列,该系列比SHARC系列具有更高的浮点运算功能Blackfin系列,低功耗高性能的16/32位DSP8.DSP芯片的分类按照数据格式分类分为定点DSP和浮点DSP定点DSP以定点数据格式工作,数据长度通常为16/32位,其特点:成本较低,功耗小,数值表示范围较窄,编程难度大,有混合小数运算时,必须使用定点定标方法浮点DSP以浮点数据格式工作,数据长度通常为32/64位,特点:开
5、发较容易,更适合大量数字信号处理运算的应用场合,硬件结构相对复杂,功耗较大,且比定点DSP价格高,通常浮点芯片使用在对数据动态范围和精度要求较高的系统中。按芯片用途分类分为通用型DSP和专用型DSP通用型DSP可编程和处理能力强,适用于普通的数字信号处理应用。专用型DSP为实现不同算法而专门设计的芯片,运算速度较高,编程能力有限,使用灵活性较差第二章 TMS320C54X硬件结构及原理1.C54X的内部结构C54X DSP的内部结构主要由C54X CPU内核、片内存储器、片内外围设备(简称片内外设)三大部分组成。多总线的哈佛结构C54X片内配置了8套16位的地址总线和数据总线,用以实现CPU与
6、片内存储器的数据交换,片内还有一套外设总线,通过6通道的直接存储器访问(DMA)可以实现片内外设的数据传送。CPU内核 C54X CPU内含有一个40位算术逻辑运算单元(ALU)和两个40位的累加器(ACCA、ACCB)C54X片内存储空间:C54X片内集成了3ROM和RAMC54X的片内外设包括带有片内锁相环(PLL)的时钟发生器;带4位预定标器的16位可编程定时器,支持全双工操作的多缓冲串行口;与主机通信的8/16位的并行主机接口(HPI);6通道DMA控制器,软件可编程等待状态发生器和可编程分区转换逻辑电路;多条通用的数字I/O接口,具有符合IEEE-1149.1标准的片内仿真接口等。C
7、54X的节电模式提供可编程选择的节电模式:IDLE1 IDLE2 IDLE3(最省电)C54X的总线结构C54X采用了多总线结构,由8套16位的内部总线组成 2套程序存储器操作总线:程序地址总线PAB、程序总线PB6套数据存储器操作总线:数据地址总线CAB DAB EAB,数据数据总线CB DBEB程序存储器操作总线程序地址总线PAB为CPU提供取指令和写指令时所需的地址,CPU可以通过程序总线PB读取程序存储器的指令代码和立即数,或通过数据总线EB进行程序的写操作,程序存储器的数据会经过PB总线传至数据存储器9.数据存储器操作总线数据地址总线CAB DAB EAB负责传送指令执行时所需要的数
8、据存储地址总线CB DB EB负责读/写数据的传送,内部总线使用情况:单数据操作数(Smem)的读使用DAB和DB,单数据的写操作使用EAB和EB读取长数据操作数(Lmem)时CAB和CB分别提供高16位数据的地址和数据,DAB和DB分别提供低16位数据的地址和数据读取双数据操作数(Xmem,Ymem)时,由DAB给出Xmen的地址从DB上读取数据,Ymem的地址及数据分别取自CAB和CB总线片内提供一套与片内外设通信的双向总线10.累加器 C54X CPU内有两个40位的累加器A和B,每个累加器都有三个组成部分:低150高1631和8位保护位3932.保护位的作用:在数值计算中,当出现32位
9、有符号运算溢出时,可以用来保存溢出结果,增大了计算结果的动态范围,提高了定点运算的精度。11.指数编码器(计算)指数编码器是用来求累加器中数据指数的专业硬件,浮点数据格式的数字信号处理中特别有用,它在计算要求精度高,需要采用CPU的状态和控制寄存器C54X CPU有3个状态和控制寄存器,分别是状态寄存器ST0、ST1和处理器模式状态寄存器PMST。对ST0 、ST1进行访问或修改的方法-用指令SSBX或RSBX对ST0、ST1的某些位置位或清零-用装载指令LD给ST0、ST1的某些位加载数据-用存储指令STM等给ST0、ST1加载设定值13.C54X的存储空间分为3个独立空间程序空间、数据空间
10、、I/O空间程序存储器基本空间64K字,最大可扩展至8M字数据存储器空间64K字,I/O空间64K字14.程序存储器(第0页) P30程序空间用于存放指令代码和常系数表格程序存储器第0页的地址0000hFFFFh当 =0时,上电复位程序从片内ROM开始执行,第一条指令的地址FF80h 当 =1时,上电复位后程序从片外扩展的程序存储芯片的地址FF80h开始执行15.分页扩展 P32C5402有20条外部地址线A19A0,16条外部数据线D15D0,最大可扩展程序空间220=1M字,扩展后的程序空间分为16页,每页64K字节,在CPU内部有一个16位的专用寄存器程序计数器扩展寄存器(XPC),用于
11、指出页地址01516.采用MMR方式访问寄存器的优点简化了寻址方式,提高了访问效率,使得CPU对寄存器的读取以及寄存器之间、寄存器与存储器之间的数据交换更加灵活方便17.C54X处于复位时,DSP进行的操作 P35处理器模式状态寄存器PMST的位IPTR=1FFh,将中断矢量表的128个字置于程序存储器的FF80hFFFh区域使程序计数器PC=FF80h,即复位程序从FF80h开始执行使ST1的位INTM=1,关断所有可屏蔽中断使中断标志寄存器IFR=0,指向程序存储器空间的第0页18.C54X系列DSP提供了多种省电工作方式 P36主要有4种:空闲方式1(复位或中断唤醒)、空闲方式2(外部中
12、断源唤醒)、空闲方式3(外部中断源唤醒)和保持方式,其中IDLE3最省电19.中断的分类 P38(1) 根据C54X中断申请源的不同,可将中断划分为软件中断和硬件中断,软件中断通过执行指令INTR、TRAP或RESET而引发;硬件中断则由来自外部引脚的触发信号或来自片内外设的中断申请而引发。(2) 从屏蔽的角度来看,可将中断划分为可屏蔽中断和非可屏蔽中断。非屏蔽中断是指不能被禁止的中断。C54X的非屏蔽中断包括所有的软件中断和两个外部硬件中断 和 ,可屏蔽中断是指可以通过软件设置来禁止或允许的中断。C54X有1316个可屏蔽中断,分别为外部引脚和片内外设所对应的硬件中断20.中断优先级 P38
13、中断优先级由芯片本身确定的,用户不能通过软件来修改(硬件复位)21.14个可屏蔽中断外部 (4个)定时器中断TINT (1个)串行口中断RINT0、XINT0、 RINT1、XINT1、RINT2、XINT2 (6个)主机接口中断 (1个)直接存储器访问DMA中断DMAC4,DMAC5 (2个)22.中断矢量地址的计算 P4023.软件中断指令介绍指令RESET:可在程序的任何位置使用,由RESET引起的软件复位与 引起的硬件复位其初始状态是不同的INTR K 0K31 不管ST1中的中断屏蔽位INTM及中断屏蔽寄存器(IER)的状态如何,执行该指令都会强行使CPU跳转至K所指出的中断矢量地址
14、。当INTR K中断被确认时,位INTM被置1,禁止其他可屏蔽中断,但中断标志寄存器IFR的相应标志位不会置位,也不能清零该位。TRAP K 0K31 TRAP指令不影响位INTM,在CPU响应TRAP指令所引发的中断时,可以被其他高优先级的可屏蔽中断打断。24.C54X有两个寄存器对中断进行管理,中断标志寄存器IFR,中断屏蔽寄存器IMR,都是16位的寄存器映像寄存器,地址分别为(IFR)0001H (IMR)0000H25.当一个中断请求出现时,将把中断标志寄存器IFR中的相应位置126.IMR的各位可以看作是可屏蔽中断的分开关,给相位的标志位写1,允许该中断源产生中断,写0禁止该中断,而
15、ST1中的INTM是总开关,INTM=0,使总开关闭合,令相应IMR某位=1使分开关闭合,该可屏蔽中断才能得到CPU响应,INTM、IMR对 、 不起作用。27.中断响应及中断处理过程(1)非屏蔽中断或软件中断的处理过程产生一个 中断应答信号将INTM位置1,屏蔽其他可屏蔽中断(TRAPK指令除外)保存当前PC值,以便中断结束后,返回主程序CPU进入相应中断服务程序ISR,执行ISR在ISR结束位置有一条返回指令,执行返回指令把返回地址从堆栈中弹给PCCPU继续执行主程序(2)可屏蔽中断的处理过程首先判断:1) INTM=02) IMR的相位位为13) 当前中断优先级最高为真时进行处理:INT
16、M位置1,屏蔽其他可屏蔽中断CPU开始对中断矢量表的相应位寻址当取出中断矢量的第一个字节指令后,DSP产生一个中断应答信号 ,并将IFR相应位清零保存当前PC值CPU进入相应中断服务程序ISR,执行ISR在ISR结束位置有返回指令,执行返回指令将返回地址从堆栈中弹给PCCPU继续执行主程序28.C54X流水线操作由6个阶组成预取指(P),取指(F)译码(D)寻址(A)读数(R)执行(X)29.指令末尾加“D”为有延时操作,否则是无延时操作,有延时操作缩短了执行时间30.流水线冲突(时序性、逻辑性)当多个流水线上的指令同时访问DSP的同一资源时所造成的时序上的冲突或一条指令要使用前一条或前几条指
17、令的运行结果,而这个结果还没有产生,此时就会产生逻辑性的错误第三章 汇编语言指令系统.1在一些实时要求较高的场合仍需采用汇编编程2.C54X指令集包括汇编语言指令、汇编伪指令和宏指令。汇编语言指令又称硬指令。宏指令是由硬指令和伪指令组成的程序段,汇编伪指令在汇编和连接过程中提供信息。3.寻址方式立即寻址,有“#”例:LD #4,DP 4DP绝对寻址,指令中包含着操作数的地址*()有四种类型1) 数据存储器寻址2) 程序存储器寻址3) I/O端口寻址,相关指令 PORTR PA, Smem;PORTW Smem,PA4) *(lk)寻址,该指令不能与单循环指令RPT、RPTZ配合使用累加器寻址,
18、有两条指令采用这种寻址方式1) READA Smem:A中内容为程序存储器地址,将该地址中的数据送入Smem指定的数据存储器中2) WRITA Smem;将Smem指定的数据存储器中的内容送入A所指出的程序存储器中直接寻址,有“”符号,是一种相对寻址 P66间接寻址,*ARX P67存储器映像寄存器寻址存储器映像寄存器寻址是一种直接访问存储器映像寄存器MMR的方式,可以用来修改MMR的值,由于MMR全部映像至数据空间第0页,因此在直接寻址时,不管是SP或DP的值如何,都强制其高9位于0,在间接寻址时,仅使用辅助寄存器中的低7位,而使其高9位为0,另外对数据空间0页上的0060h007Fh也可以
19、采用存储器映像寄存器寻址方式去访问堆栈寻址(保护中断现场)入栈时地址值减小,出栈时地址值增大4.C54X可以访问32位的长操作数,进行加载,存储及加减等运算加载指令 DLD Lmem, dst;在单周期内同时利用CAB、CB和DAB、DB总线,将32位Lmem读入累加器,是1字1周期指令存储指令 DST src Lmem;两次使用EAB、EB总线将累加器的内容分别写入高16位和低16位存储器,是1字2周期指令C54X的32位的长操作数有两种数据存放格式:偶地址存放和奇地址存放。偶地址存放是指数据的高有效字存放在偶地址且是较低的地址,低有效字存放在奇地址且较高的地址;奇地址存放则是数据的高有效字
20、存放在奇地址且是较高地址,低有效字存放在偶地址且是较低地址。5.移位指令 P866.跳转指令 P90(近程无条件转移、远程无条件转移、近程条件转移)跳转指令共6条,4个重要特点:1) 无条件转移和条件转移2) 无延时转移和有延时转移3) 通过Pmad或累加器获得转移地址4) 近程转移和远程转移7.INTR和TRAP这两条指令的区别执行INTR可使位INTM=1,关断所有可屏蔽中断,而执行TRAP不会关断可屏蔽中断8.重复操作指令分为两种单条指令重复(RPT、RPTZ)和程序块重复单条指令重复的最大优点是:由于只需要取址一次,因此可将多周期指令变成单周期指令,大大节省了执行时间。注:RPT #
21、K 重复执行(K+1)次第四章 汇编语言程序设计1.C54X的软件开发过程可以分为文本编辑、编译、汇编、链接四个基本步骤2.采用COFF文件格式的优点是将指令和数据按段的概念进行组织和存储,这使得程序的可读性大大增强,更容易编写程序,更便于进行程序的移植,更利于模块化的设计,为管理代码段及系统存储器提供了灵活的方法和手段3.所谓“段”就是在存储器映像中占据连续空间的代码或数据,有三个默认的段.text段,通常内含可执行代码.data,通常内含已初始化数据.bss,是为没有初始化的数据保留空间4.COFF目标文件的段又可以分为两大基本类型已初始化段(.text .data .sect)未初始化段
22、(.bss .usect)5.汇编器中设置了不可寻址的段程序计数器SPC6.汇编器通过迭代过程来建立段7.链接器有两种定位的方法:缺省定位、存储器映像定位8.链接器对段的处理主要完成两个功能把1个或多个目标文件(文件名.obj)链接起来,产生可执行的COFF输出文件(文件名.out)按照目标系统的需要配置存储器,并将符号和段重新定位,确定输出文件的输出地址9.链接器伪指令MEMORY.SECTION MEMORY用来定义目标系统的存储器,SECTION用来告诉链接器怎样组合输入段以及存储器的何处存放输出段10.伪指令带有前缀“.”且必须小写11.汇编语言程序的格式标号 : 助记符 操作数字段
23、:注释 助记符不能顶格写12.汇编语言程序具有三种结构形式顺序结构、分支结构、循环结构13.DSP的模块化程序设计及汇编链接过程编写中断处理程序编写主程序和头文件编写命令文件编辑、编译、汇编和链接生成各种文件14.计算机有两种数据表示方法定点表示法、浮点表示法,C54X是定点芯片15.常用的定标方法是Q表示法,Q值越大,数值范围越小,精度越高,相反,Q值越小,数值范围越大,精度越低16.Q值的确定对于分布均匀的数据一般采用统计分析法来确定其动态范围,对于分布不均匀的数据可以用数据的3倍方差值作为参考。为了防止异常或者溢出,应该将Q值取低,即数据式放大17.流水线冲突及其解决方法对MMR进行写操
24、作时所引发的流水线冲突 解决方法:添加NOP指令条件执行指令有可能发生流水线冲突 解决方法:添加NOP指令改变PMST可能引起的流水线冲突 解决方法:添加NOP指令延长流水线执行时间或选取适合指令避免产生逻辑错误第五章 C54X高级C语言程序设计如果采用C/C+语言编程,经过C编译器产生的代码已经避免了资源争用和时序上的错误,因此不会产生流水线冲突1.汇编语言和C语言比较汇编语言的优点:程序执行效率高,硬件定时准确。缺点:程序不够直观,设计周期相对较长,程序的可移植性和可维护性比较差。C语言的优点:可移植性好,可维护性好,配合一些优化编译器,能够生成代码执行效率较高的可执行程序。缺:执行效率较
25、低2.C54X与ANSIC的不同点所处理数据的性质不同数据的输入输出设备不同“死循环”的对待不同语法及数据结构细节上的不同3.使用地址变量时,往往需要用vocatile关键字进行说明I/O端口变量的定义格式:ioport数据类型porthex_numAR6被赋给了第一个寄存器变量;AR7被赋给了第二个寄存器变量4.C54X C语言开发的段结构已初始化的段1) .text段,包含了可执行代码2) .cinit段,包含明显初始化的全局变量和静态变量3) .const段,包含字符串常数和全局常量4) .switch段,包含大型switch语句的跳转表未初始化的段1) .bss,包含了未初始化的全局变
26、量和静态变量2) .stack,定义软件堆栈3) .sysmem,为动态存储器函数malloc、calloc、realloc分配存储器空间5.自定义段:用户可以用pragma伪指令来产生其他的自定义段语法结构 #pragma CODE_SECTION(symbol,”section name”)6.存储器模式小存储器模式:编译器默认的存储器模式,这要求.bss在128字范围内,不需要修改DP值,程序代码简单,运行效率高大存储器模式:对.bss没有大小限制,访问变量时首先确定DP值,这将增加指令访问周期7.在C中使用内嵌汇编的格式:asm(“汇编语句”)8.C语言中断函数定义c_intd函数(除
27、c_intoo函数外,不建议使用)Interrupt函数(较直观)9.对C代码进行手工汇编优化有两种方法对照C代码写出汇编代码(有效、慢、开发难度大、容易出错)先用编译器产生汇编代码,然后改写汇编码(效率低、较容易,建议使用)第六章 TMS320 C54X软件开发环境CCS1.CCS是TI公司推出的用于开发DSP芯片集成开发环境2.CCS有两种工作模式软件仿真器模式。可以脱离DSP芯片,在PC机上模拟DSP的指令和工作机制,主要用于前期的算法实现和调试硬件在线编程模式,可以在DSP芯片上实时运行,与硬件开发板进行在线编程和调试应用程序3.CCS的组成代码生成工具集成开发环境(IDE)DSP/B
28、IOS实时内核插件以及相应的程序接口API由TI公司以外的第三方提供的各种应用模块插件等4.代码产生工具 P194C编译器:产生汇编语言源代码汇编器:把汇编语言源文件翻译成机器语言目标文件,机器语言格式为公共目标格式链接器:把多个目标文件组合成单个可执行目标模块,它一边创建可执行模块,一边完成重定位以及决定外部参考5.CCS基本操作CCS集成开发环境(IDE)允许编程、编译和调试DSP目标程序6.DSP的插件介绍 P196TI开发了支持实时分析的DSP/BIOS插件,可用于探测、跟踪和监视DSP/BIOS可提供抢先式多线程的实时系统性能分析,可以说DSP/BIOS是一个小型的实时操作系统内核线
29、程有4种类型硬件中断、软件中断、任务和后台线程DSP/BIOS三种通信方式:基于管道通信,基于流通道的通信,基于主机通道的通信7.CCS提供对片上系统的嵌入式支持,RTDX可以通过主机和DSP API函数提供主机和DSP之间的双向实时数据交换。RTDX由目标系统和主机两部分组成8.RTDX系统组成 P199第七章 TMS320 C54X片内外设及其应用1.片内外设包括软件可编程的等待状态产生器可编程的分区转换逻辑一个主机接口(HPI 8/HPI 16)3个多通道缓冲串行口(MCBSP)一个硬件定时器带有锁相环(PLL)的时钟产生器1个DMA控制器增强型的外部并行接口(XI02)26条通用i/o
30、引脚(GPIO)2.在C54X芯片中主要提供了两条通用i/o引脚外部标志输出XF和跳转控制输入 XF引脚 XF是一个输出引脚,它的输出电平可通过对ST1的D13位(XF)进行控制,当令位XF=1时,XF引脚输出高电平,令XF=0时,XF引脚输出低电平,复位时XF引脚为高电平,XF引脚有一定的驱动能力。 引脚 引脚是一个输入引脚,它可以作为查询引脚,用来检测外部链接器的工作状态,可一颗作为外部中断申请引脚,向CPU发出中断请求3.多缓冲串行口(MCBSP)的引脚作为GPIO令SPCR1.0位 =0,使MCBSP的接受部分复位令SPCR2.0位 =0,使MCBSP的发送部分复位令PCR.13位XIONE=1,使DX作为通用输出引脚 FSX和CLKX作为通用i/o令PCR.12位RIONE=1,使DR和CLKX作为通用输入引脚,FSR和CLKR作为通用i/o4.主机接口(HPI) 的数据引脚作为GPIO当HPI被用作HPI 16模式(HPI 16=1)或是禁用HPI(HPIENA=0)时,HPI的数据线可以作为GPIO来使用5.定时器的组成 定时器主要由定时寄存器(TIM)周期寄存器(PRD)预分频计数器(PSC)预分频系数(TDDR)及控制逻辑电路组成,