




已阅读5页,还剩173页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选,1,DSP原理与应用,第一章概述第二章DSP运算基础第三章DSP的CPU结构及存储器配置第四章寻址方式及指令系统第五章系统功能模块及片内外设第六章DSP设计开发平台第七章FFT的Matlab仿真,精选,2,第一章概述,1、DSP数字信号处理系统低通滤波:将连续信号x(t)中的一些次要成分滤出。平滑滤波:滤出多余的高频分量,对时间域模拟信号起平滑作用。,低通滤波,ADC,DSP,平滑滤波,DAC,x(t),y(t),精选,3,2、DSP的发展和分类发展:1978年,AMI第一片DSP器件1979年,Intel的Intel2920是第一块脱离了通用型微处理器结构的DSP芯片。1980年,NEC的PD7720是第一个具有硬件乘法器的商用DSP芯片。1982年,Hitachi推出浮点DSP。1982年,TI推出第一代DSP芯片TMS32010及其系列产品。1986年,Motorola推出MC56001定点DSP芯片;1990年推出与IEEE浮点格式兼容的浮点DSP芯片。,精选,4,分类按DSP芯片处理的数据格式:定点、浮点按DSP芯片的用途:通用型:TI公司的系列DSP专用型:数字滤波、FFT等主要生产厂家TI:43.5%Agere(Lucent):16.1%Motorola:12.0%ADI:8.2%,精选,5,3、DSP的性能及特点哈佛结构、普通微处理器的冯诺伊曼结构:,内部地址总线,内部数据总线,共享的程序和数据存储器,CPU控制,ALU,精选,6,、DSP的哈佛结构:,地址发生单元,数据地址总线,程序地址总线,程序存储器,数据存储器,DSP控制,ALU,数据总线,程序总线,精选,7,指令流水线、非流水线操作,精选,8,、流水线操作:,精选,9,硬件乘法器在数字信号处理的算法中(如FFT),需要做大量的乘法和加法。显然,乘法速度越快,数据处理能力就越强。而在一般的微处理器中,根本就没有乘法指令,即使有乘法指令的处理器,其乘法指令的执行时间也较长。DSP器件一般都有一个硬件乘法器,而且一次乘累加最少可在一个时钟周期内完成。特殊DSP指令DSP芯片采用了特殊的寻址方式和指令。例如TMS320系列的位反转寻址方式及其他一些特殊的指令。采用这些适合于数字信号处理的寻址方式和指令,能进一步减小数字信号处理的时间。,精选,10,4、DSP的应用数字信号处理,如滤波、FFT、卷积等;通信,如调制解调、纠错编码、传真、可视电话等;语音处理,如语音编码、语音合成、识别、语音存储等;图形/图像处理,如模式识别、图像压缩与传输、动画、机器人视觉等;仪器仪表,如数据采集、函数/波形产生等;军事,如保密通信、全球定位、雷达与声纳信号处理、导航与制导等;医疗,如核磁共振、自动治疗仪等。,精选,11,第二章DSP运算基础,1、数的定标TMS320C/F240的字长为16。数的定标:是设定小数点在不同位置,来表示不同大小和不同精度的小数。Q表示法:将16位二进制数由最低有效位(LSB)到最高有效位(MSB)的位置依次排列为015,则Qi表示小数点在数据第i位之后。例如:Q0:表示小数点在数据第0位之后,即为一个整数。Q15:表示小数点在数据第15位之后。,精选,12,Q表示法及其十进制数值范围:,精选,13,例如:对Q15而言,其能表示的最小负值为:1000000000000000(补)1111111111111111(反)1,0000000000000000(原)=-1其能表示的最大正值为:0111111111111111=2-1+2-2+2-3+2-4+2-5+2-6+2-7+2-8+2-9+2-10+2-11+2-12+2-13+2-14+2-15=1-2-15=0.999969482421875对Q0同样如此.,精选,14,2、IEEE754浮点数表示法例如:10100100120.6=24(20+2-1+2-2+2-3+2-4+2-5+2-6+2-7+2-23)其指数=4+127=131小数=01001001S=0,精选,15,3、定点数与浮点数的转换关系转换公式:浮点数(x)转换为定点数(xd):xd=intx2Q定点数(xd)转换为浮点数(x):x=floatxd2-Q举例:浮点数x=0.4,定标Q=15,则对应的定点数为:xd=intx2Q=int0.4215=13107反之,一个Q15表示的定点数13107对应的浮点数为:x=floatxd2-Q=float131072-15=0.3999939Q数值的确定:设系统中变量表示的数据最大绝对值为|max|,而且|max|小于或等于32767,由下式:2n-1|max|2n可得:Q=15-n举例:某变量取值范围为-7到15,则变量的|max|=15,n=4,则Q=15-4=11。,精选,16,4、定点数的算术运算加减法:注意:、必须保证两个操作数的定标值一样。、若两个数据的Q值不同,在保证数据准确性的前提下调整Q值使数据精度最高,即尽量将Q值小的数调整为与另一个数的Q值一样大。、注意对溢出的判断和处理。举例:x=0.4,y=0.2,计算x+y根据分析,采用Q15表示两个数据可以得到最高精度的运算,x、y的Q15定点表示分别为:xd=13107,yd=6553。xd+yd=13107+6553=19660结果转化为浮点数为:199602-15=0.59997560.6,精选,17,定点数的乘法分三种情况:、小数乘小数(数用Q15表示)Q15Q15=Q30,32位的乘积结果有两个符号位,利用移位操作得到乘积结果的Q31表示。举例:0.50.5=0.25操作数用Q15表示为:0.5215=16384=0100000000000000B0.1000000000000000.100000000000000=00.010000000000000000000000000000将结果左移一位得到乘积结果的Q31表示为:0.0100000000000000000000000000000=20000000H表示的浮点数即为:0.25,精选,18,、整数乘整数(数用Q0表示)Q0Q0=Q0举例:135=65操作数用Q0表示为:13=0000000000001101B5=0000000000000101B00000000000011010000000000000101=00000000000000000000000001000001=00000041H表示的浮点数即为:65,精选,19,、混合表示法在对精度和数据范围要求都比较高的情况下,两个数可以采用介于Q15与Q0之间的不同的Q表示法。举例:设参与运算的两个数x和y的数值范围分别不超过1和4,两个数的Q值分别为Q15和Q13,为了保证数据范围,应该采用Q13。例如:x=0.4y=3.2,计算x+y因为xd=3276,yd=26214,则xd+yd=3276+26214=29490转换为浮点数为:294902-133.59985,精选,20,定点数的除法注意:DSP没有专门的除法指令,利用条件减法指令编写子程序实现。、十进制的除法在计算之前要保证分子不能大于分母的十倍,否则必须进行如下的处理:将分母乘上10(100或1000)后再按下面的计算过程进行除法运算,得到结果后再把该结果乘以10(100或1000)即可得到最终的正确结果。计算过程(子程序):i=0STEP1:重复的用分子减去分母(若分子小于分母,则余数即为分子;否则,余数=分子-分母),直到结果为小于分母的数或0。得到执行的减法次数=Ni及余数。STEP2:i=i+1,余数10作为分子,返回STEP1。STEP3:结果=N0100+Ni10-i,i=1,2,3,,精选,21,举例1:求40/3=?step1:310=30;step2:40-30=1030,70-30=4030,4030=1030,70-30=4030,4030=1040;200-40=160,执行第1次减法;160-40=120,执行第2次减法;120-40=80,执行第3次减法;80-40=40,执行第4次减法;40-40=0,执行第5次减法;次数=5,余数=0;step5:结果=0100+010-1+710-2+510-3=0.075,精选,23,、二进制的除法注意:在计算之前要保证分子小于分母的2倍。计算过程同十进制的除法,下面仅举例。计算40/3=?step1:分母左移3位(即乘以8),得分母=24;step2:00101000(=40)-00011000(=24)=00010000(=16)次数=1,余数=1624;step3:00100000(=32)(余数16左移一位)-00011000(=24)=00001000(=8)次数=1,余数=824;step4:余数=16(余数8左移一位)24次数=0;step5:00100000(=32)(余数16左移一位)-00011000(=24)=00001000(=8)次数=1,余数=824;,精选,24,step6:余数=16(余数8左移一位)24次数=0;step7:00100000(=32)(余数16左移一位)-00011000(=24)=00001000(=8)次数=1,余数=824;step8:余数=16(余数8左移一位)24次数=0;step9:00100000(=32)(余数16左移一位)-00011000(=24)=00001000(=8)次数=1,余数=824;step10:结果=120+12-1+02-2+12-3+02-4+12-5+02-6+12-7=1.1010101step11:将上述结果右移三位,即可得到正确的结果为:最终结果=1101.0101B=13.3125,精选,25,第三章DSP的CPU结构及存储器配置,1、C2系列DSP的功能框图,基于PLL的时钟模块(锁相环),双10位ADC,串行通信接口(SCI),串行外设接口(SPI),外部存储器接口(EMI),事件管理器(EM),数字I/O,标准测试接口(JTAG),CPU,精选,26,2、CPU结构,中央算术逻辑单元(CALU),累加器(ACC),CALU的输入和输出数据定标移位器,乘法器,乘积定标移位器,辅助寄存器运算单元(ARAU),状态寄存器,精选,27,定标移位器:主要用作移位、bit提取、扩展算术运算和溢出防止运算。、输入数据定标移位器(输入移位器):将输入的0到16位的数据左移16位,作为CALU的32位输入数据。、输出数据定标移位器(输出移位器):将累加器里的结果输出到数据存储器之前左移0到7位,累加器里的数据保持不变。、乘积定标移位器(乘积移位器):将乘积寄存器的数据在输出到CALU之前进行移位。,精选,28,辅助寄存器算术单元(ARAU)和辅助寄存器内有8个辅助寄存器(AR0、AR1、AR2、AR3、AR4、AR5、AR6、AR7),当一个指令使用间接寻址来访问数据存储器时,ARAU就产生数据存储器的地址。状态寄存器ST0和ST1、特点:可以被保存到数据存储器(采用指令存储状态寄存器指令SST),也可以从数据存储器加载(采用指令装载状态寄存器指令LST)。、其他指令:SETC:设置寄存器的位CLRC:清除寄存器的位、作用:可以用于子程序中保存和恢复机器的状态。,精选,29,、ST0:1513121110980其中:ARP辅助寄存器指针,用于选择作为间接寻址的辅助寄存器(ARn)。OV溢出标志位,用于表示CALU是否有溢出产生。OVM溢出方式位,决定如何处理CALU中的溢出。=0:累加器中结果正常溢出;=1:溢出时,累加器被置为最大正数或最小负数。INTM中断允许位,使能(=0)或禁止(=1)所有的可屏蔽中断。DP数据页指针。当使用直接寻址时,DP存放存储器的数据页(即存储器地址的高9位),DP与指令代码的最低7位构成16位存储器地址。,精选,30,、ST1:其中:ARB辅助寄存器指针缓冲器CNF片内DARAM配置位。该位决定将DARAMB0映射至数据或程序空间。CNF=0B0:映射到数据区CNF=1B0:映射到程序区TC测试/控制位。SXM符号扩展位。C进位标志位。XFXF引脚状态位。PM乘积移位方式。决定乘积移位寄存器的移位情况。,精选,31,3、C2的存储器C2的片内总线:、特点:独立的数据读地址总线和数据写地址总线使得CPU可以在同一个机器周期内进行读和写操作。独立的程序和数据地址总线允许同时访问程序指令和数据。、片内总线的种类:PAB程序地址总线:提供访问程序存储区的地址。DRAB数据读地址总线:提供从数据存储区所要读取数据的地址。DWAB数据写地址总线:提供写数据存储区的地址。PRDB程序读总线:它载有从程序存储器读取的指令代码以及表格等信息,并送到CPU。DRDB数据读总线:它将数据从数据存储器载送到中心运算逻辑单元(CALU)和辅助寄存器算术单元(ARAU)。DWEB数据写总线:将数据送到程序和数据存储器。,精选,32,片内存储器的分配情况:64K字的程序空间64K字的本地数据空间32K字的全局数据空间:用于和其他处理器共享数据或用作附加的数据空间。64K字的I/O空间:用于寻址外设接口(片外外设)和部分片内外设(因为大部分的片内外设地址都映射到局部数据存储器空间)。采用片内存储器工作的优点:避免了与慢速外部存储器接口所需的等待状态,比采用外部存储器性能更高。比外部存储器更便宜。比外部存储器功耗更低。,精选,33,片内存储器的类型:片内双口RAM(DARAM):大小:544字特点:可以在一个机器周期内访问两次组成:B0(256字)+B1(256字)+B2(32字)注意:主要用于保存数据,但B0也可用于保存程序。片内单次访问的程序/数据RAM(SARAM):特点:一个机器周期内只能访问一次。工厂掩模的片内ROM闪烁存储器(Flash)特点:电可擦除的、可编程及可长期保存数据。,精选,34,局部数据存储器的配置:64K=128字512个数据页(0、1、511)数据页指针DP(由ST0中的DP值决定)、数据页及数据地址之间的关系见下表。,精选,35,I/O空间I/O空间存储器可寻址64K字;访问I/O空间的存储器或片外I/O端口只能用指令IN和OUT;,TMS320C240A0A1A2,AS138,AS138,输入设备,输出设备,精选,36,第四章寻址方式与指令系统,1、寻址方式种类立即寻址:操作数在指令代码中直接以常数给出。直接寻址:将指令代码中的7位偏移地址与数据存储器页指针(DP)的9位组合起来形成16位数据存储器地址。间接寻址:通过8个16位辅助寄存器访问数据存储器。2、立即寻址短立即数寻址特点:指令代码中用一个8位、9位或13位的常数作为操作数。为单指令字。举例:RPT#63H;将紧跟其后的指令重复执行100次,精选,37,单指令字中的位:158701011101101100011RPT指令操作码8位立即数63H长立即数寻址特点:指令代码中用一个16位的常数作为操作数。为双指令字。举例:ADD#0A000H,2;将立即数A000H左移2位后与累加器内容相加,结果存累加器中。第一个字:1011111110010010ADD指令操作码移位次数=2第二个字:101000000000000016位长立即数=0A000H,精选,38,3、直接寻址直接寻址指令代码,8MSB,0,7LSB,指令操作码,偏移量(地址低7位),每页数据存储器地址偏移量,数据页(地址高9位),9位DP值(由ST0决定当前页),直接寻址标志,1514876510,形成16位数据存储器地址:,精选,39,直接寻址要求:应首先为页指针寄存器DP装入一个适当的数(从0到511)注意事项:DSP复位时并没有初始化DP内容,因此程序中要访问数据存储器之前还是应该用LDP指令确定当前数据页。如果程序需要访问不同的数据页,则每当访问新的数据页前,必须先修改DP值,以确保访问正确的数据页。举例:LDP#0E0H;DP指向E0H数据页,地址为7000707FH(1416128=7212=7163=7000H)ADD9H,5;该指令将数据存储器7009H单元的内容左移5位后与ACC相加,结果存ACC指令代码及地址形成过程如下:,精选,40,151487610,ADD操作码,0010,0101,0,0001001,数据存储器地址偏移量=9,移位次数=5,直接寻址标志,011100000,DP=0E0H,0001001,011100000,16位数据存储器地址=7009H,精选,41,4、间接寻址特点:用8个16位辅助寄存器(但每次寻址只能使用其中一个)内容作为间接的地址,可以访问64K数据存储空间中的任一单元,不受当前数据页的限制。辅助寄存器的选择:将一个07的值装入状态寄存器ST0中的辅助寄存器指针ARP,ARP所指向的辅助寄存器称为当前AR,它其中的内容就是要访问的数据存储器的地址。几种间接寻址方式:不增量不减量操作数为*:指令使用当前辅助寄存器的内容作为数据存储器地址,指令执行后,当前辅助寄存器的值不改变。例如:MAR*,AR2;选择AR2作为当前辅助寄存器,即ARP=2,精选,42,加1或减1操作数为*+或*-:指令使用当前辅助寄存器的内容作为数据存储器地址,指令执行后,将当前辅助寄存器的值加1或减1。例如:ADD*+,8;将当前辅助寄存器的内容左移8位后加到ACC,并将当前辅助寄存器的值加1增加或减去一个指定的量操作数为*0+或*0-:辅助寄存器AR0存指定的量。指令将当前辅助寄存器的值作为数据存储器地址,指令执行之后,将当前辅助寄存器的值增加或减去AR0的内容,即指定量。例如:ADD*0+,AR1;将当前辅助寄存器的内容加到ACC,并将AR0的值加给当前AR,该指令结束后指定AR1为当前AR。,精选,43,使用逆向进位增加或减去一个指定的量操作数为*BR0+或*BR0-:辅助寄存器AR0存指定的量。当前辅助寄存器的值作为数据存储器地址使用之后,当前辅助寄存器的值增加或减去AR0保存的指定量。但该加法或减法是逆向进位(主要用于FFT),即加减法是从高位开始运算,向低位进位或借位。例如:ADD*BR0+,AR5;将当前辅助寄存器的内容加到ACC,并将AR0的值按反向进位加给当前AR,该指令结束后指定AR5为当前AR。,精选,44,5、C2的指令集指令类型(按功能)累加器、算术与逻辑指令辅助寄存器和数据页指针指令暂时寄存器(TREG)、乘积寄存器和乘法指令转移指令控制指令I/O和存储器操作指令举例ADDC功能:加给ACC,带进位,直接或间接寻址、指令格式:ADDCdma;直接寻址ADDCind,ARn;间接寻址注意:dma、ind、n可以由用户根据需要而改变;中的内容为可选项,精选,45,、操作数dma;直接寻址时,数据存储器的低7位n;指示下一个辅助寄存器n=07ind;选择下列7种间接寻址方式中的一种:*+*-*0+*0-*BR0+*BR0、操作码ADDCdmaADDCind,ARn各位代表的意义如下所示:,158760,dma,0,0110000001100000,1,ARU,NAR,N,精选,46,ARU:为辅助寄存器的更新代码,确定当前辅助寄存器是否变化以及如何增减。见下表:,精选,47,N:为下一个辅助寄存器指示符,该位声明该指令是否改变ARP的值。N=0ARP内容保持不变;N=1NAR内容被装入ARP,且旧的ARP值被装入状态寄存器ST1的辅助寄存器缓冲器ARB中。NAR:为下一个辅助寄存器的代码值,AR0AR7的对应代码分别为07。、执行(ACC)+(datamemoryaddress)+(C)ACC以下为解释上面指令的一些常用注释符号:(r):表示寄存器或存储单元r的内容;xy:数值x被赋予寄存器或存储单元y;r(n:m):寄存器或存储单元r的位n到m,例如:ACC(7:0)表示累加器的位7到位0;(r(n:m):寄存器或存储单元r的位n到位m的内容。,精选,48,、举例设DAT300为已经赋值为300H的常数。ADDCDAT300;(DP=6:address0300h037Fh),指令执行前,指令执行前,0004H,数据存储器300H,0004H,数据存储器300H,0018H,0,ACC,0013H,1,ACC,C,C,精选,49,6、C2的伪指令指令性语句:即前面介绍的用各种助记符表示的机器指令,每条指令都有其机器代码或指令代码。指示性语句:即伪指令,不产生指令代码,主要用于在汇编过程中与汇编程序“通信”,说明源程序的起止、分段情况、安排各类信息的存储结构以及有关的变量说明等。具体实现以下任务:将数据和代码汇编进特定的段;为初始化的变量保留存储器空间;展开成列表的形式;汇编条件块;定义全局变量;指定汇编器可以获得宏的定义库;检查符号调试信息。,精选,50,7、DSP软件开发流程图,C源文件,C编译器,宏库文件,汇编源文件,C和汇编源文件,汇编器,目标文件,目标库文件,RTS库文件,链接器,COFFEXEfile,执行文件,精选,51,其中:源文件:指的是由程序员写的基本的文本文件,它包括一系列指令。汇编器:它是用来将用户的文本汇编源程序编译成机器可懂的格式。链接器:组织由汇编器生成的机器可读代码,使它能够与相应的目标DSP存储器结构匹配,即其主要用来解决存储器分配问题,使所有最终形成执行程序的指令都有一个特定的存储器地址。目标文件:包括实际的可读指令,可以被特定的DSP目标器件识别;通常一个目标文件是可重新定位的,不能由DSP器件直接使用,它必须先通过一个链接器程序,生成最终的DSP可执行程序。宏:一条宏就是一个指令序列,主要用来代替重复的代码(类似于C语言中的函数、VB中的子程序),这样可以使汇编源程序得到简化并不容易出错。例如:,精选,52,编写一个对数据存储单元某位置1的宏指令如下:宏名字形式参数SBIT1.macroDMA,MASKMAR*,AR1LARAR1,#DMALACC*OR#MASKSACL*.endm在程序中定义了宏之后,就可以在源程序中,将宏的名字作为指令来调用这个宏。例如:将0200H单元的第4位置1,则调用宏语句为:SBIT10200H,0010H(实际参数),精选,53,8、DSP生成的汇编列表文件例子,精选,54,接上表:,精选,55,说明:第一列:汇编源程序语句的行号。用一个十进制的数字来表示源程序语句在汇编源文件中的行号。第二列:段程序计数器(SPC)。将一个程序的各个部分分成不同的段,每个段都有一个十六进制的段程序计数器值,且每个段的段程序计数器值都被初始化为000000。例如,.data段的SPC值=000008,而.text段的SPC值=00000a。注意:有些命令对SPC值不影响,此时,其第二列为空白。第三列:目标代码。这是为DSP准备的二进制机器代码。说明:以12行所示的程序语句为例,这是一条指令,将标号table所指的存储器内容写入AR3寄存器。该指令生成的机器码是“77130000”,第一个4位数字表示实际的指令,后4位数字表示标号table在.data段中的位置。第四列:源程序语句区域。,精选,56,第五章系统功能模块及片内外设,1、系统配置寄存器作用:用户可以对这些寄存器编程来改变系统的一些功能。特点:每个寄存器有两个连续地址,其他寄存器有惟一地址。系统控制寄存器(SYSCR)地址为7018H:其中:RESET1和RESET0为软件复位位,完成DSP器件的软件复位。当(RESET1:RESET0)为(0:0)、(1:0)、(1:1)时均引起一次全局复位发生。CLKSRC1和CLKSRC0为C240DSP的CLKOUT/IOPC1引脚的控制位,控制方式如下表:,精选,57,系统状态寄存器(SYSSR)地址为701AH其中:PDRST:为1时表示上电引起的复位;ILLADR:非法地址复位状态位。为1表示DSP企图访问一个不存在的片内数据或程序存储器引起了复位;,精选,58,SWRST:软件复位状态位,为1表示有软件复位发生;WDRST:看门狗复位状态位,为1表示看门狗定时器溢出发生复位;HP0:硬件保护标志位,只适用于具有片内Flash的DSP;VCCAOR:模拟电压越限位,为1表示电压超出稳压范围;VECRD:中断向量挂起位,当一个中断请求被响应时,该位被置位;其被用于不可屏蔽中断NMI的中断服务子程序。系统中断向量寄存器(SYSIVR)地址为701EH:位158:中断向量高8位,这些位读出总为0。位70:中断向量低8位,这些位被装入中断向量的地址偏移量,该偏移量由挂在外设总线上的外设产生,用以响应相应的可屏蔽中断。,精选,59,2、时钟模块功能:为整个DSP器件提供各种时钟频率。时钟结构:其中:OSCBYP:用来选择内部振荡器是否被旁路,若其接高电平表示使用内部振荡器;若引脚接地,表示旁路内部振荡器而使用外部时钟输入。,时钟模块,XTAL1/CLKIN,XTAL2,CPUCLK,WDCLK,SYSCLK,OSCBYP,精选,60,CPUCLK:是时钟模块提供的最高时钟频率,用于DSP内部的所有存储器以及所有直接连到CPU总线(DSP内部数据总线)的外设(包括外部存储器接口)。SYSCLK:提供所有连到外设总线的外设时钟,为CPUCLK频率的1/2或1/4。WDCLK:是为WD/RTI模块提供的一个低功率时钟,频率一般为16kHz。时钟控制寄存器:、功能:通过编程确定各时钟频率及低功耗方式。特点:控制寄存器8位,分别与片内外设总线低8位相连,对高8位进行读写无意义。、控制寄存器1CKCR0地址为702BH:格式见下表:,精选,61,其中:CLKMD(1:0):确定CPUCLK的时钟源,选择方式如下表:PLLOK(1:0):PLLOK(1)表示PLL触发器状态,PLLOK(0)用于器件测试。PLLPM(1:0):规定低功耗工作模式。,精选,62,ACLKENA:在C24中保留不用PLLPS:确定系统时钟频率是4分频还是2分频。PLLPS=0时,fSYSCLK=fCPUCLK/4;PLLPS=1时,fSYSCLK=fCPUCLK/2。、控制寄存器2CKCR1地址为702DH:格式见下表:其中:CKINF(3:0):这4位指示正在被使用的晶体振荡器频率即输入频率fx,其关系如下表:,精选,63,PLLDIV(2):确定PLL输入是否被2分频,为1时2分频。PLLFB(2:0):确定PLL的乘积因子,如下表:注:PLL电路可以将其输入时钟频率fx(来自内部晶体振荡器或外部时钟输入)乘以1、2、3、4、5和9倍后再送往其它时钟。,精选,64,各种内部时钟频率选择,精选,65,时钟模块的编程正确编程需要如下三条指令:SPLK#0000000001000001B,CKCR0;SPLK#0000000010111011B,CKCR1;SPLK#0000000011000001B,CKCR0;说明:SPLK指令的功能是:存长立即数到数据存储器,直接或间接寻址;第一条指令完成的功能:使CLKMD(1)=0禁止PLL,同时使SYSCLK=CPUCLK/2;第二条指令完成的功能:使CKINF(3)CKINF(0)=1011并指定fx=10MHz,同时使用PLL并使CPUCLK=20MHz;第三条指令完成的功能:使CLKMD(1)=1允许PLL,使系统按上述编程频率工作。,精选,66,3、等待状态发生器功能:当DSP访问慢速外设或存储器时,必须加入等待状态达到外设或存储器时序的要求。等待状态的产生:通过对等待状态产生控制寄存器编程产生。等待状态产生控制寄存器(WSGR):其中:AVIS:地址可见方式,复位时被置1,不产生等待状态。AVIS=0,减少功耗与噪音;AVIS=1,使能器件的地址可见方式,在这一方式下,器件提供一种跟踪内部代码执行的方法。,精选,67,ISWS:I/O空间等待状态位,复位时被置1。ISWS=0:未产生用于片外I/O空间的等待状态;ISWS=1:所有访问片外I/O空间的操作均插入一个等待状态。DSWS:数据空间等待状态位,复位时被置1。DSWS=0:未产生用于片外数据空间的等待状态;DSWS=1:所有访问片外数据空间的操作均插入一个等待状态。PSWS:程序空间等待状态位,复位时被置1。PSWS=0:未产生用于片外程序空间的等待状态;PSWS=1:所有访问片外程序空间的操作均插入一个等待状态。,精选,68,4、中断系统中断类型,中断,包括指令INTR、NMI和TRAP引起的中断(属于非屏蔽中断),硬件中断,软件中断,上电复位引脚PORESET中断,复位引脚RS中断,INTk(k=1,2,3,4,5,6),INT1优先级最高,非屏蔽中断,可屏蔽中断,引脚NMI中断,精选,69,中断优先级,精选,70,硬件中断结构说明:两个中断模块管理DSP内部各种片内外设及外部引脚XINT1XINT3等多个中断源,包括可屏蔽中断INT1INT6、NMI、硬件复位中断和软件中断;它们都是通过可屏蔽中断INT1INT6向CPU中断逻辑提出中断申请。每个可屏蔽中断INT1INT6对应了多个中断源。,DSPCPU地址线1-5IACKINT6INT5NMIINT1INT4INT3INT2IACK,地址线1-5IACKINT6INT5NMIINT1系统中断模块,INT4INT3INT2IACK事件管理模块中断模块,精选,71,中断寄存器、CPU中断寄存器CPU中断屏蔽寄存器IMR地址0004H:INT6INT1:可屏蔽中断的屏蔽位,0/1=屏蔽/允许中断。CPU中断标志寄存器IFR地址0006H:其中:F代表“中断标志”,F=0:无中断请求;F=1:至少有一个INTX中断源请求,CPU响应后自动清除对应标志位。,精选,72,、外部硬件中断控制寄存器:外部引脚XINT1中断控制寄存器XINT1CR地址7070H:其中:位15:为只读位,向该位写清除该标志位;XINT1标志=1表示检测到有效的XINT1中断触发沿。位6:该位为只读,反映引脚的当前逻辑电平。位2:可以编程设置XINT1为下降沿或上升沿触发,XINT1中断有效沿=0/1=下降沿/上升沿触发。位1:XINT1优先级=0/1=高/低优先级。位0:XINT1中断允许=0/1=禁止/允许XINT1中断。,精选,73,外部引脚XINT2中断控制寄存器XINT2CR:同上外部引脚XINT31中断控制寄存器XINT3CR:同上外部引脚NMI中断控制寄存器NMICR:同上外设中断向量的偏移地址、设置外设中断向量偏移地址的原因:每个可屏蔽中断INT1INT6都包含了多个DSP片内或外部中断源;软件中断INTn(n=16)分别与可屏蔽中断INT1INT6占用同一个向量表位置;NMI硬件和NMI软件中断会进入同一个中断服务程序。、如何设置外设中断向量的偏移地址:系统中断模块和事件管理模块中都有确定的“中断向量地址寄存器”保存中断源的中断偏移地址,只要在中断服务程序入口处读取中断向量地址寄存器,即可判断中断源身份,并进入对应中断源的服务程序。,精选,74,中断编程中断初始化流程:,主程序开始,INTM置1禁止所有可屏蔽中断,将IMR中INTk对应位置1允许中断并清除IFR,对某项中断源,将单独屏蔽位置1,并编程有效触发沿,系统初始化,INTM置0等待中断,精选,75,中断初始化编程例子:任务:将外部引脚XINT1设置为高优先级中断.text;编写主程序NOPSETCINTM;禁止中断LDP#0;因为IMR的为地址0004H第0页SPLK#0001H,IMR;允许XINT1中断LACCIFR;将IFR左移16位后装入ACC,ACC的低16位全为0SACLIFR;将ACC的低16位装入IFR,清除标志寄存器IFRLDP#00E0H;14(E)16128=7212=7163=7000HSPLK#0005H,XINT1CR;允许XINT1引脚中断,高优先级,上升沿有效;系统初始化CLRCINTM;允许中断说明:SETC设置INTM位;CLRC清除INTM位;LACC带移位016位装入ACC(32位);SACL带移位07位存低段ACC。,精选,76,ST0与ST1的保护与恢复:保护:采用SST指令恢复:采用LST指令注意:CPU执行SST指令时将自动地将指定的状态寄存器的内容存入第0页数据存储器,并且不改变DP的内容,即允许DP无改变存储。例如:SST#0,60H;保存状态寄存器ST0的内容到第0页的60H单元(CPU自动指向0页无须LDP指令)SST#1,61H;保存状态寄存器ST1的内容到第0页的61H单元LDP#0;指向数据页第0页LST#0,60H;恢复ST0内容LST#1,61H;恢复ST1内容,精选,77,5、数字输入/输出(I/O)接口I/O引脚的特点:既可以作为普通I/O引脚,也可以作为其他功能的引脚。通过编程来指定其是I/O还是功能引脚。F/C240共有28个I/O共享引脚,分为两组:专门I/O端口A、B和C的数据I/O与其他基本功能共享引脚;模块具有内置I/O功能。如SPI、SCI、外部中断和PLL等功能引脚,同时也可编程作为I/O引脚,8个。第一组共享I/O引脚的结构图:,基本功能,I/O数据位(读/写),I/O方向位0=输入1=输出,0OO1O,MUX控制位0=I/O功能1=基本功能,引脚,精选,78,其中:MUX控制位确定引脚是I/O(0)还是功能引脚(1)。I/O方向位当引脚由MUX确定为I/O引脚时,该位决定引脚是输入(0)或输出(0)。I/O数据位当引脚为I/O且方向为输入时,从该位读取数据;若为输出引脚,则可将数据写向该位。MUX控制位由控制寄存器OCRA和OCRB编程实现。I/O方向位和I/O数据位由寄存器PADATDIR、PBDATDIR和PCDATDIR实现。输出控制寄存器A(OCRA)地址7090H,精选,79,各位代表的意义如下表所示:,精选,80,输出控制寄存器B(OCRB)地址7092H其中第7位到第0位为共享引脚功能选择,见下表:,精选,81,I/O端口A数据和方向寄存器(PADATDIR)地址7098H其中:A3DIRA0DIR:当端口A共享引脚定义为I/O时,该4位定义I/O方向。0=设置相应引脚为输入;1=设置相应引脚为输出。IOPA3IOPA0:端口A数据位,与对应方向控制位AnDIR有关。若AnDIR=0,则0/1=相应引脚读回低/高电平;若AnDIR=1,则0/1=设置相应引脚为低/高电平。,精选,82,6、实时中断实时中断(RTI)的功能:提供可编程间隔的中断,可用于实现日历、实时时钟、分时多任务进程控制等功能。实时中断(RTI)的结构:,8-bitReal-timecounter,RTICNTR.7-0,7-bitfreerunningcounter,RTICR.2-0,/32768,/2,WDCLK,/128,精选,83,实时中断(RTI)的特点:RTI定时器是8位可编程用以产生周期性中断的计数器,其中断频率可由软件来选择。中断可以通过软件来允许或禁止。RTICNTR可以在任何时候被读出和清除为0。但是,出系统复位外,7位的不可编程计数器不能被其他操作清除。实时中断计数器寄存器(RTICNTR)地址7021H:8位的RTICNTR存放实时计数器的值,它对来自7位的不可编程的128分频输出信号(WDCLK的128分频)递增记数。RTI控制寄存器(RTICR)地址7027H:表中:位7:实时中断标志位,该位可由软件清除。=0:没有RTI上溢产生的中断;=1:没有RTI上溢产生的中断。,精选,84,位6:RTI中断使能位。=0:清除RTI的未被响应的中断请求,并禁止后续的RTI中断;=1:当RTI上溢时,产生中断请求。位20:实时中断预定标选择位,用于选择用于中断的分频。,精选,85,7、看门狗看门狗的功能:监视DSP软件和硬件操作,当DSP发生混乱不能及时清除WD定时计数器时,WD将会产生溢出中断而复位系统,提高CPU的可靠性。看门狗的特点:WD定时器是8位可复位的加计数器,由WDCLK或7为计数器分频提供时钟。注意事项:程序正常运行时,必须在程序的各个分支,按时“喂狗”,即在WDCNTR溢出前对WDKEY编程清除WDCNTR为0,防止其溢出,保证正常运行时WD不会强行复位系统。WD计数器寄存器(WDCNTR)地址7023H:8位只读WDCNTR包含WD计数器的当前值。该计数器对WDCR选定的输入信号递增记数。当计数器溢出,经过一个单输入信号周期的时延后产生系统复位信号。,精选,86,WD控制寄存器(WDCR)地址7029H:表中:位7:WD中断标志位。=0:表明自上次清除该位后,没有WD产生过复位;=1:表明自上次清除该位后,有WD产生过复位位6:WD使能位。=0:使能WD;=1:禁止WD。位53:WD校验位,必须对这3位写入101B,否则将产生系统复位。读这3位时始终为000B。位20:WD预定标选择位,用于选择WDCNTR的计数信号的分频系数。如下表所示:,精选,87,WD复位关键字寄存器(WDKEY)地址7025H:功能:当将55H和紧跟其后的AAH分别写入WDKEY时,将清除WDCNTR的值。可以写入55H和AAH的任何组合到WDKEY,但仅有55H之后紧跟AAH才能复位WDCNTR。而向WDKEY写入其他任何值都导致系统复位。读该寄存器返回WDCR的内容。,精选,88,举例:LDP#00E0H;数据页指针DP:7000H-707FHSPLK#05555H,WDKEY;SPLK#0AAAAH,WDKEY;复位WDCNTR(若输入SPLK#0040H,WDKEY;将复位系统)WD编程:一旦WD被使能,程序中必须在WD溢出前清除WDCNTR,一般将WD复位程序编写为一个宏命令。如下所示:KICK-DOG:.macroLDP#00E0HSPLK#05555H,WDKEYSPLK#0AAAAH,WDKEYLDP#0.endm,精选,89,8、模拟/数字转换(ADC)片内外设工作原理逐次逼近式A/D转换:原理图,+|,控制电路,D/A转换器,逐次逼近寄存器,缓冲寄存器,比较器,转换结果,CLK,启动信号,Vi,V0,精选,90,工作过程:从最高位开始通过试探值逐次进行测试,直到试探值经过A/D转换器输出的V0与待转换的实际输入电压Vi相等或达到允许误差范围为止。则该试探值即为A/D转换所需的数字量。逐次逼近寄存器存放设定的试探值(数字量)。缓冲寄存器存放转换结果(数字量)。举例:将模拟电压4.80V转换成相应的数字量。设该A/D转换器为8位,能转换的最高电压(即满刻度)为10V(11111111)。逐次逼近过程如下所示:当出现启动脉冲时,逐次逼近寄存器清“0”;当第一个时钟脉冲到来时,控制电路将逐次逼近寄存器最高位位7置“1”,即8位D/A转换器的输入为10000000B,则其输出V0为满刻度的一半即5V(因为x/10=128/255)。以后的逼近过程见下表:,精选,91,精选,92,模/数转换器的技术指标:转换精度:指对于一个给定的数字量,其实际的模拟电压值与理论输入电压值之差。分辨率:指A/D转换器所能分辨的最小量化信号能力,通常用A/D转换器的位数来表示。如对于12位A/D芯片,其分辨率为12位。有时,分辨率也用最大容许模拟输入值/2N来表示。例如,8位A/D芯片,其满量程为5V,则分辨率为5V/28=19.6mV。当模拟输入低于19.6mV时,A/D转换器分辨不出来,均不转换。转换时间和转换率:转换时间是指转换启动到结束所需的时间,转换率是转换时间的倒数。例如,转换时间为200ns,转换率为5MHz。,精选,93,C24DSP中ADC的特点:内部集成了两个10位的A/D转换器,并带有内部采样保持电路,共有16路模拟输入通道。ADC的转换结果保存到两级先进先出(FIFO)寄存器。ADC的预定标功能作用:每个ADC在1个时钟周期内完成输入的采样,在5个时钟周期内完成模/数转换,所以每个采样/转换需要6个ADC时钟周期(大约需要6s)。对于不同的系统时钟频率,为了保证采样/转换时间大于等于6s,ADC提供了一个预定标功能,来保证无论DSP时钟如何变化都可以确保ADC保持最优性能。预定标值的确定:SYSCLK时钟周期TSYSCLK*预定标值*66s预定标值由ADC的控制寄存器ADCTRL2的其中三位决定,其对应关系见下表:,精选,94,例如:系统时钟周期TSYSCLK=1/10MHz,根据上式可以计算得预定标值应大于等于10。,精选,95,ADC模块中的寄存器、ADC控制寄存器1(ADCTRL1)地址7032H:其中:位15:仅用于仿真期间。=0:当位14=0时,立即停止;=1:仿真器停止之前,完成本次转换。位14:仅用于仿真期间。=0:操作由位15确定;=1:仿真器停止时,ADC继续运行。,精选,96,位13:ADC立即开始转换。=0/1:无动作/立即启动转换。位12:ADC2的禁止/使能位,可以在转换过程中写入,不影响本次转换,写入本位的信息在下一次转换时才生效。=0/1:ADC2禁止/ADC2被使能。位11:ADC1的禁止/使能位,同ADC2。位10:ADC连续转换设置位。=0/1:无操作/连续转换。位9:ADC中断允许位。若被置位,则当ADCINTFLAG=1时,将产生一次中断。位8:ADC中断标志位。若该位为1,表示有中断发生。位7:转换结束标志。=0/1:转换结束/转换正在进行。位6位4:ADC2通道选择。=000111:依次选择通道8通道15。位3位1:ADC1通道选择。=000111:依次选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 曹琼与配偶离婚财产协议书子女抚养及监护权保障
- 社保工伤赔偿协议书范本
- 公寓小区车位产权变更及租赁管理服务合同
- 北京互联网数据中心IDC土地经营权抵押贷款合同
- 离婚协议中车辆权益界定模板
- 文化创意产业车间租赁与版权保护协议
- 社区落户协议书范本
- 拆迁工程安全管理承包合同
- 城市综合体大厅美食摊位租赁及经营管理合同
- 旅游景区游客接待中心无偿使用租赁合同
- TCHALPA 0004-2023 民用无人机应急救援应用专业操控员合格证考试点管理办法
- 无损检测PTⅡ级渗透检测理论考试题库
- 《安全仪表系统SIS》课件
- 《项目管理WBS分解》课件
- 万科物业新员工入职考试卷附答案
- 极化曲线研究论文
- 幼儿园大班班本课程《再见幼儿园》
- 兴趣与能力的培养的课程设计
- 为什么天空是蓝色的
- 集团分权管理手册
- 设计报价单模板
评论
0/150
提交评论