最新DSP原理及应用考试要点[详述]解析.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateDSP原理及应用考试要点详述解析DSP原理及应用考试要点详述解析CHAP11 冯、诺依曼结构和哈佛结构的特点ª 冯、诺依曼结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。ª 哈佛结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线。ª 改进哈佛结构采用双存储空间和数条总线,即一个程序总线和多条数据总线。2 DSP芯片的特点(数据密集型应用)ª 采用哈佛结构ª 采用多总线结构ª 配有专用硬件乘法-累加器ª 快速指令周期ª 采用流水线技术ª 具有特殊的DSP指令ª 硬件配置强3 定点DSP芯片和浮点DSP芯片的区别及应用特点ª 定点DSP芯片,数据以定点格式工作的 精度和范围是不能同时兼顾的。定点DSP是主流产品,成本低,对存储器要求低、耗电少,开发相对容易,但设计中必须考虑溢出问题。用在精度要求不太高的场合。ª 浮点DSP芯片,数据以浮点格式工作 精度高、动态范围大,产品相对较少,复杂成本高。但不必考虑溢出的问题。用在精度要求较高的场合。4 定点DSP的表示(Qm.n,精度和范围与m、n的关系)及其格式转换整数表示法 :最高位是符号位,0代表正数,1代表负数 其余位以二进制的补码形式表示数值。小数表示法:最高位是符号位,0代表正数,1代表负数 其余位以二进制的补码形式表示数值,小数点在Dn1位。16位TMS320C54X是采用的是小数点在D15位数的定标:对定点数而言,数值范围与精度是一对矛盾 n越大,数值范围越小,但精度越高;相反,n越小,数值范围越大,但精度就越低。定点格式数据的转换十进制转换成Qm.n形式:先将数乘以 2n变成整数,再将整数转换成相应的Qm.n形式。不同Qm.n形式之间的转换:即n大的数据格式向n小的数据格式转换。5 TI公司的三大主力系列DSP芯片特点及应用领域C2000系列,定位于控制类和运算量较小的运用,应用于各种工业控制领域。C5000系列,低功耗高性能,定位于中等计算量的应用。主要用于便携式的通信终端。C6000系列,定位于具有较大计算量要求的应用,主要应用于高速宽带和图像处理等高端应用。6 DSP芯片的运算速度TMS320LC549-80在主频为80MHz时的指令周期为12.5ns,一个指令周期内完成一次乘法和加法操作,其MAC时间就是12.5ns,处理能力为80 MIPS。CHAP21 TMS320C54x芯片的组成(三部分,相同系列不同芯片之间的区别和联系)ª CPU、片内存储器和片内外设ª 同系列不同型号片内存储器和片内外设不同2 DSP芯片的电源引脚、DSP芯片的控制引脚电源引脚ª CVdd,电压+1.8V,为CPU内核提供专用电源ª DVdd,电压+3.3V,为各I/O引脚提供的电源ª Vss,接地控制引脚引脚名称引脚序号功能说明MSTRB*24外部存储器选通信号,总开关。RS*98复位引脚,低电平有效。在正常工作情况下,此引脚至少保持2个CLKOUT周期的低电平PS*20外部程序存储器DS*21数据存储器IS*22I/O空间选择信号3 TMS320C54X芯片的总线组成情况,以及各总线的功能ª 1组程序总线PB传送取自程序存储器的指令代码和立即操作数。ª 3组数据总线CB(HW)、DB(LW)用来传送从数据存储器读出的数据;EB 用来传送写入存储器的数据。ª 4组地址总线PAB、CAB、DAB、EAB用来提供执行指令所需的地址4 算术逻辑单元ALU对输入数据的符号扩展及运算结果的溢出处理符号扩展溢出处理(发生溢出时)ª 若OVM=0,则对ALU的运算结果不作任何调整,直接送入累加器ª 若OVM=1,则对ALU的运行结果进行调整。² 当正向溢出时,将32位最大正数00 7FFF FFFFH装入累加器;² 当负向溢出时,将32位最小负数FF 8000 0000H装入累加器。ª 状态寄存器ST0中与目标累加器相关的溢出标志OVA或OVB被置1。5 累加器A、B的组成、两个累加器的区别、累加器内容的保存(移位、保存) 累加器A和B的区别是ª AH可以用作乘法器的一个输入,使用MPYA指令。ª 只能使用累加器A寻址程序空间。带移位的累加器存储操作² 移位操作是在存储累加器内容的过程中同时完成的² 移位操作是在移位寄存器中完成的,累加器的内容保持不变6 桶形移位器的作用、移位数的形式、MAC单元的特点作用 40位桶形移位寄存器主要用于累加器或数据区操作数的定标移位数有3种形式ª 立即数,取值范围:-16 15.ª 状态寄存器ST1中的移位方式位ASM,花计5位,取值范围:-16 15.ª 数据暂存器T中的低6位数值,取值范围:-16 31.特点 MAC单元具有强大的乘法-累加运算功能,可在一个流水线周期内完成1次乘法运算和1次加法运算7 CPU的3个状态和控制寄存器(主要位的作用及设置)这些寄存器都是存储器映像寄存器,位于数据存储器空间的第0页,访问速度最快。1) 状态寄存器0(ST0)主要反映处理器的寻址要求和计算机的中间运行状态2) 状态寄存器1 (ST1)主要用于反映处理器的寻址要求、设置计算的初始状态、I/O及中断控制。3) 工作方式状态寄存器PMST8 TMS320C54X芯片的可寻址存储空间(程序、数据、I/O空间)各64k字程序存储空间:用来存放要执行的指令和指令执行中所需要的系数表(数学用表);数据存储空间:用来存放执行指令所需要的数据;I/O存储空间:用来提供与外部存储器映射的接口,可以作为外部数据存储空间使用9 片内存储器的3种形式以及SARAM(单寻址RAM)、DARAM(双寻址RAM)的特点ª 64千字的程序存储空间ª 64千字的数据存储空间ª 64千字的I/O空间10 3个状态位对片内存储器映射到程序存储空间和数据存储空间的作用最大可用程序空间:MP/MC*=0 OVLY=1 DROM=0最大可用数据空间:MP/MC*=1 OVLY=0 DROM=111 引导程序(自举加载程序)的作用OOTLOADER(引导程序)是一段芯片出厂时固化在ROM中的程序代码。芯片上电时,引导程序便将片外EPROM中的用户代码,引导入片内RAM或片外快速RAM中执行。12 定时器定时时间的计算CLKOUT×(TDDR1)×(PRD1)13 程序存储空间的分页扩展、数据存储器的分页管理程序存储空间的分页扩展所有C54X芯片的数据空间和I/0空间的寻址范围都是64K,程序空间的寻址能力根据地址线的不同而不同。地址线数目为16、20、23,则相应的程序存储器寻址空间为64K、1M、8M。为了实现分页扩展,增加程序计数器扩展寄存器XPC来保存页地址(即A16AX) ,页内地址(64K内)用程序计数器PC保存。数据存储器包括ª CPU寄存器特殊功能寄存器(OOOOH OO1FH)ª 片内外设寄存器(0020H OO5FH)ª 32字暂存器SPRAM(0060H 007FH)ª 896字DARAM(0080H 03FFH)CHAP31 各种寻址方式特点及其应用,重在寻址方式的判断,注意有时一个语句可能用到多种寻址方式立即寻址 LD #80H,*A特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。用途:用于表示常数或对寄存器初始化。绝对寻址 MVKD EXAM1,*AR5 | MVPD TABLE,*AR2 PORTR FIFO,*AR5 |LD *(PN),A特点:指令中包含一个固定的16位地址,能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间。用途:用于对速度要求较低的场合。累加器寻址 READA Smem | WRITA Smem特点:将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。 用途:用于完成程序存储空间与数据存储空间之间的数据传输。直接寻址特点是数据存储器地址由基地址(数据页指针DP或堆栈指针SP)和领衔地址共同构成,共16位。特点ª 直接寻址的优点:每条指令只需要一个字。ª 可在单周期寻址128个单元;ª 寻址速度快,能进行流水线并行操作。用途:主要用于要求运算速度较快的场合。间接寻址特点:通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量、变址寻址、循环寻址,共有16种修正地址的方式。 用途:用于需要按固定步长寻址的场合。存储器映像寄存器寻址用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。 堆栈寻址用途:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。2 直接寻址(地址的确定,DP赋初值)、倒序寻址(地址的确定)、循环缓冲区的建立(首尾地址的确定)15 8 7 6 0 操 作 码 I = 0 数据存储器地址(dmad) I=0,表示指令使用的寻址方式为直接寻址。位倒序寻址间接寻址中*ARi+0B/-0B表示位倒序寻址。AR0=N/2,用于快速傅氏变换算法FFT。在这种寻址方式中,AR0存放的整数N是FFT点数的一半。另一个辅助寄存器指向数据存放的物理单元。当使用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。循环缓冲区的建立长度为R的缓冲区必须从N位地址的边界开始,即循环缓冲区基地址的N个最低有效位必须为0。N应满足:2N>R的最小整数。例如:缓冲区长度R=32, 若2N>32, 则N=6。缓冲区开始的地址:xxxx xxxx xx00 0000B循环缓冲区的尾基地址(EOB)是通过用BK的低N代替ARx的低N位得到 缓冲区长度R=32装入循环缓冲长度寄存器BK中。 3 加法(进位)指令、减法(借位)指令、条件减法指令(实现除法),乘法、乘累加指令的操作数来源、分支转移指令、重复操作指令(RPT)、滤波指令(FIRS MAC)加法指令ADD Smem, srcsrc = src + Smem操作数加到ACC中ADDC Smem, srcsrc = src + Smem + C带有进位的加法ADDS Smem, srcsrc = src + uns(Smem)与ACC进行不带符号扩展的加法减法指令SUB Smem , srcsrc=src-Smem从累加器中减去操作数SUBB Smem , srcsrc=src-Smem-C累加器与操作数带借位减操作SUBC Smem , srcIf(src-Smem<<15)>0,src=(src-Smem<<15)<<1+1Else src=src<<1条件减法操作SUBS Smem , srcsrc=src-uns(Smem)累加器与符号位不扩展的操作数减操作乘法指令MPY Smem , dstdst=T*SmemT寄存器与操作数相乘MPYA dstdst=T*A(32-16)T寄存器与累加器A高位相乘MPYA SmemB=Smem*A(32-16)T=Smem操作数与累加器A高位相乘SQUR Smem , dstdst=Smem * Smem T=Smem操作数的平方SQUR A , dstdst=A(32-16)*A(32-16)累加器A高位的平方分支转移指令分 类 指 令 说 明 无条件分支转移 BD 用该指令指定的地址加载PC BACCD 用累加器的低16位指定的地址加载PC 条 件分支转移 BCD 若满足指令给定条件,用该指令指定的地址加载PC BANZD 若当前选择辅助寄存器不等于0,用该指令指定的地址加载PC 远 程分支转移 FBD 用该指令指定的地址加载PC和XPC FBACCD 用累加器的低23位指定的地址加载PC和XPC ª 最小均方运算LMS,自适应滤波。ª Viterbi译码指令DADST、DSADT、CMPS滤波指令MAC普通滤波,重复N次,一个系数,一个输入。FIRS系数对称、重复N/2次,一个系数,两个输入。4 数据块移动的实现、除法的实现(整数除法、小数除法),乘法的实现(整数乘法、小数乘法)加法编程实现TEMP3=TEMP1+TEMP2法一法二LD TEMP2, AADD TEMP1, ASTL A, TEMP3ADD TEMP1, TEMP2, ASTH A, TEMP3除法编程实现TEMP1/TEMP2=TEMP3TEMP4整数除法小数除法(被除数一定小于除数)LD TEMP1, BRPT #15SUBC TEMP2, BSTL B, TEMP3STH B, TEMP4LD TEMP1, 16, BRPT #15SUBC TEMP2, BSTL B, -1, TEMP3STH B, TEMP4乘法实现整数乘法小数乘法RSBX FRCTLD TEMP1, TMPY TEMP2, ASTL A, TEMP3SSBX FRCTLD TEMP1, 16, AMPYA TEMP2 STH B, TEMP35 能分析常见的汇编程序、能编写简单的程序片断CHAP41 DSP软件的开发过程4编辑、汇编和链接过程 汇编器调试程序链接器汇编程序.asm源文件.obj目标文件.out输出文件. cmd链接命令文件.lst列表文件.map存储器映像文件十六进制转换程序HEX500- o- m- lC程序C编译器.asm汇编文件k2 DSP程序的两种调试模式ª 软件仿真器(simulator)ª 硬件仿真器emulators(XDS510)3 段定义伪指令有哪些,各自作用是什么未初始化段u .bss 符号,字数每调用一次.bss伪指令,汇编器在相应的段保留更多的空间。u 符号 .usect “段名”,字数每调用一次.usect伪指令,汇编器在指定的命名段保留更多的空间。已初始化段u .text 段起点文本段,通常包含可执行代码u .data 段起点数据段,通常包含初始化数据u .sect “段名” ,段起点定义初始化的命名段,可以包含可执行代码或数据。 图表描述助记符及语法格式 说 明 .bss symbol, size in words ,blocking , alignment 为未初始化的数据段.bss保留存储空间。 .data 指定.data后面的代码为数据段,通常包含初始化的数据。 .sect “section name” 定义初始化的命名段,可以包含可执行代码或数据。 .text 指定.text后面的代码为文本段,通常包含可执行的代码。 symbol .usect “section name”, size in words ,blocking ,alignment flag 为未初始化的命名段保留空间。类似.bss伪指令,但允许保留与.bss段不同的空间。 4 常见的常数初始化指令、.field指令、定位指令.align常数初始化指令(把n位值汇编入当前连续的字中).byte 把一个或多个8位的值放入当前段中.int.、word 把一个或多个16位的数值放入当前段中. Float、.xfloat 把一个或多个32位浮点数放入当前段中.long . 、xlong 把一个或多个32位的值放入当前段中.string、.pstring 把一个或多个8位字符或字符串放入当前段中.field value ,size in bits初始化一个可变长度的域,将单个值放入当前字的指定位域中对准段程序计数器的伪指令u .align伪指令的操作数必须是在20216之间且等于2的幂。 操作数为1时,对准SPC到字的边界;操作数为2时,对准SPC到长字/偶字的边界; 操作数为128时,对准SPC到页面的边界; 没有操作数时,.align伪指令默认为页面边界。u .even伪指令等效于指定.align伪指令的操作数为1的情形。当.even操作数为2时,将SPC对准到下一个长字的边界。任何在当前字中没有使用的位都填充0。5 链接器命令文件的作用与含义、链接器命令文件的编写(能结合程序和链接器命令文件判断输入、输出或特殊段的存放地址)链接器的任务:根据链接命令文件(.cmd),将一个或多个COFF目标文件链接起来,生成存储器映像文件(.map)和可执行文件(.out)。(分配存储单元,将目标文件中的段重新定位到目标系统的存储器中)链接命令文件的作用:用来为链接器提供链接信息,可将链接操作所需的信息放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用。链接伪指令:u MEMORY用来指定目标存储器结构。MEMORY PAGE0:name 1(attr):origin=constant, length=constant; PAGEn:name n(attr):origin=constant, length=constant; 存储区间:存储页面 区间名称 区间属性 起始地址 区间长度u SECTIONS用来控制段的构成与地址分配。SECTIONS name:property, property, property, name:property, property, property, name:property, property, property, 段名:定义输出段的名称。属性:定义该段的内容和存储器的分配。链接器为段在目标存储器中分配两个地址: 加载的地址由装入存储器分配完成 执行程序的地址由运行存储器分配完成 通常,这两个地址是相同的。 CHAP61 计算滤波系数的MATLAB语句b=fir1(n,Wn) b=fir1(n,Wn,ftype)b=fir1(n,Wn,Window)b=fir1(n,Wn,ftype,Window)n:滤波器的阶数;Wn:滤波器的截止频率;ftype:用来决定滤波器的类型,当ftype=high时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。Window:用来指定滤波器采用的窗函数类型,其默认值为汉明(Hamming)窗。 其他有Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等。2 采用汉明窗设计高通FIR滤波器低通 b=fir1(n,Wn) 高通 b=fir1(n,Wn,high)带通 b=fir1(n, W1 W2 ) 带阻 b=fir1(n, W1 W2 ,stop) 3 FIR滤波器的DSP实现的两种方法的特点基本算法: 采用乘法累加运算。即不断地输入样本x(n),经过z-1延时后,再进行乘法-累加,最后输出滤波结果y(n)。(1)线性缓冲区法线性缓冲区法又称延迟线法。其方法是:对于n=N的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区,存放最新的N个样本;滤波时从最老的样本开始,每读一个样本后,将此样本向下移位;注意:用线性缓冲区实现z-1运算时,缓冲区的数据需要移动,这样在一个机器周期内需要一次读和一次写操作。因此,线性缓冲区只能定位在DARAM中。 优点:在存储器中新老数据的位置直观明了。 (2)循环缓冲区法对于N级FIR滤波器,在数据存储区开辟一个称为滑窗的具有N个单元的缓冲区,滑窗中存放最新的N个输入样本值。每次输入新的样本时,新的样本将改写滑窗中最老的数据,其他数据则不需要移动。缺点:在循环缓冲区中新老数据的位置不是很直观明了,但不需要数据移动,不要求能够进行一次读和一次写的数据存储器,因此可将缓冲区定位在数据存储器的任何区域。CHAP81 DSP基本系统的设计,外部程序、数据存储器扩展的设计基本系统设计1) 电源电路的设计:大部分采用低电压,双电源。内核电源CVDD采用3.3V、2.5V,或1.8V电源;I/O电源DVDD采用3.3V供电。TI公司提供的双电源芯片TPS73HD301固定的输出电压: 3.3V, 可调的输出电压: 1.2V9.75V TPS73HD325固定的输出电压: 3.3V和2.5VTPS73HD318固定的输出电压: 3.3V和1.8V 2) 复位电路的设计:C54x的复位分为软件复位和硬件复位。 软件复位:是通过执行指令实现芯片的复位。 硬件复位:是通过硬件电路实现复位。 硬件复位有以下几种方法: Å 上电复位 Å 手动复位 Å 自动复位 (多用) 采用专用的复位芯片3) 时钟电路的设计 Å 使用外部时钟源;(多用) Å 使用芯片内部的振荡器。 4) JTAG接口电路的设计当仿真器和DSP距离大于15.24cm时,JTAG测试接口和仿真插座之间需要加缓冲器。2 程序存储器的扩展 C54x的地址总线有1623条,芯片的型号不同其配置的地址总线也不同。 C5402芯片共有20根地址线,最多可以扩展1M字外部程序存储空间,其中高4位地址线(A19A16)是受XPC寄存器控制。3 数据存储器的扩展CHAP9(结合实验)1 setupCCS的作用选择仿真模式,选择芯片型号。2 建立工程文件的过程(汇编源程序的工程文件的组成、C程序的工程文件的组成)Include文件夹,包含了以.h为扩展名的文件(即C语言文件中的头文件等)。Libraries文件夹,存放所有以.lib为扩展名的库文件。Source文件夹,包含所有扩展名为.c和.asm的源文件。工程项目文件,是工程项目的管理文件,以.mak为扩展名。链接命令文件,以.cmd扩展名,直接显示在工程项目文件下。3 断点、探针点的作用断点(Break Point) 可以暂停程序的运行,以便观察程序的状态,检查或修正变量,查看调用的堆栈、存储器和寄存器的内容等。探测点(Probe Point) 是一种设置在源文件某条语句上的特殊断点。每个探测点都有相应的属性,可同用户来设定,主要用来与一个外部文件的读/写相关联。4 外部数据的输入利用CCS提供的探测点可以自动完成外部文件读/写操作。FILE -> FILE I/O -> FILE INPUT -> ADD FILE将探测点与文件关联后,CCS给出”FILE I/O”控制窗口。附,部分题目1 编程实现将程序存储器从地址1000H到1080H区间的内容复制到数据存储器空间2000H开始的地址空间。 STM #2000H,AR2STM #1000 H ,AR3 RPT #80 MVPD *AR3+, *AR2+2 编程y=a1*x1+a2*x2+a3*x3+a4*x4 .title “acc.asm” .mmregsStack .usect “STACK”, 10h .bss a,4 .bss x,4 .bss y,1 .def start .dataTable: .word 1,2,3,4 .word 8,7,6,5Start : STM #0, SWWSR ;插入0等待状态STM #STACK+10h, SP ;设置堆栈指针 STM #a, AR1 ;AR1指向a PRT #7 ;移动8个数据 MVPD table , *AR1+ ;从程序存储器到数据存储器CALL SUMend: B end SUM: LD #0,DPSTM #a,AR3STM #x,AR4RPTZ A,#3MAC *AR3+, *AR4+, ASTL A,yRET. end3 编写 16348/512的程序段 .bss num.1 .bss den.1 .bss quot.1.dataTable : .word 16348 .word 512 .textStart : STM #num,AR1 PRT #1 MVPD Table ,*AR1+;传送两个数据给分子,分母 LD den,16,A;将分母移动到累加器(3116) MPYA num ;(num)*A(3216)B,获取商的符号,在累加器B中ABS A;分母取绝对值 STH A,den ;分母绝对值存放原处LD num,A;分子A(3216) ABS A ;分子取绝对值 RPT #15 ;16次减法重复操作,完成除法 SUBC den,A XC 1,BLT;如果B<0,则需要变号 NEG A STL A,quot ;保存商COMPLETED 2013-6-20 18:58-