《DSP原理与应用》PPT课件.ppt_第1页
《DSP原理与应用》PPT课件.ppt_第2页
《DSP原理与应用》PPT课件.ppt_第3页
《DSP原理与应用》PPT课件.ppt_第4页
《DSP原理与应用》PPT课件.ppt_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

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

文档简介

DSP原理与应用,第一章 概述 第二章 DSP运算基础 第三章 DSP的CPU结构及存储器配置 第四章 寻址方式及指令系统 第五章 系统功能模块及片内外设 第六章 DSP设计开发平台 第七章 FFT的Matlab仿真,第一章 概述,1、DSP数字信号处理系统 低通滤波:将连续信号x(t)中的一些次要成分滤出。 平滑滤波:滤出多余的高频分量,对时间域模拟信号起平滑作用。,低通滤波,ADC,DSP,平滑滤波,DAC,x(t),y(t),2、DSP的发展和分类 发展: 1978年,AMI第一片DSP器件 1979年,Intel的Intel 2920是第一块脱离了通用型微处理器结构的DSP芯片。 1980年,NEC的 PD7720是第一个具有硬件乘法器的商用DSP芯片。 1982年,Hitachi推出浮点DSP。 1982年,TI推出第一代DSP芯片TMS32010及其系列产品。 1986年,Motorola推出MC56001定点DSP芯片;1990年推出与IEEE浮点格式兼容的浮点DSP芯片。,分类 按DSP芯片处理的数据格式:定点、浮点 按DSP芯片的用途: 通用型:TI公司的系列DSP 专用型:数字滤波、FFT等 主要生产厂家 TI:43.5% Agere(Lucent):16.1% Motorola:12.0% ADI:8.2%,3、DSP的性能及特点 哈佛结构 、普通微处理器的冯诺伊曼结构:,内部地址总线,内部数据总线,共享的 程序和 数据存 储器,CPU 控制,ALU,、DSP的哈佛结构:,地址 发生 单元,数据地址总线,程序地址总线,程序 存储 器,数据 存储 器,DSP 控制,ALU,数据总线,程序总线,指令流水线 、非流水线操作,、流水线操作:,硬件乘法器 在数字信号处理的算法中(如FFT),需要做大 量的乘法和加法。显然,乘法速度越快,数据处理能 力就越强。而在一般的微处理器中,根本就没有乘法 指令,即使有乘法指令的处理器,其乘法指令的执行 时间也较长。DSP器件一般都有一个硬件乘法器,而且 一次乘累加最少可在一个时钟周期内完成。 特殊DSP指令 DSP芯片采用了特殊的寻址方式和指令。例如 TMS320系列的位反转寻址方式及其他一些特殊的指令。 采用这些适合于数字信号处理的寻址方式和指令,能 进一步减小数字信号处理的时间。,4、DSP的应用 数字信号处理,如滤波、FFT、卷积等; 通信,如调制解调、纠错编码、传真、可视电话等; 语音处理,如语音编码、语音合成、识别、语音存储等; 图形/图像处理,如模式识别、图像压缩与传输、动画、机器人视觉等; 仪器仪表,如数据采集、函数/波形产生等; 军事,如保密通信、全球定位、雷达与声纳信号处理、导航与制导等; 医疗,如核磁共振、自动治疗仪等。,第二章 DSP运算基础,1、数的定标 TMS320C/F240的字长为16。 数的定标:是设定小数点在不同位置,来表示不同大小和不同精度的小数。 Q表示法: 将16位二进制数由最低有效位(LSB)到最高有效 位(MSB)的位置依次排列为015,则Qi表示小数点 在数据第i位之后。 例如: Q0:表示小数点在数据第0位之后,即为一个整数。 Q15:表示小数点在数据第15位之后。, Q表示法及其十进制数值范围:,例如: 对Q15而言,其能表示的最小负值为: 1000 0000 0000 0000(补) 1111 1111 1111 1111(反) 1,0000 0000 0000 0000(原) = -1 其能表示的最大正值为: 0111 1111 1111 1111 = 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.9999 6948 2421 875 对Q0同样如此.,2、IEEE 754浮点数表示法 例如: 1 0 1 0 0 1 0 0 1 20.6 = 24(20 +2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 + 2-7 + + 2-23 ) 其指数 = 4 + 127 = 131 小数 = 01001001 S = 0,3、定点数与浮点数的转换关系 转换公式: 浮点数(x)转换为定点数(xd): xd = int x 2Q 定点数(xd)转换为浮点数(x):x = float xd 2-Q 举例:浮点数x = 0.4,定标Q=15,则对应的定点数为: xd = int x 2Q= int 0.4 215=13107 反之,一个Q15表示的定点数13107对应的浮点数为: x = float xd 2-Q = float 13107 2-15 = 0.3999939 Q数值的确定: 设系统中变量表示的数据最大绝对值为|max|,而且|max|小于或等于32767,由下式: 2n-1 |max| 2n 可得:Q=15-n 举例:某变量取值范围为-7到15,则变量的|max| =15,n=4,则Q=15-4=11。,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 结果转化为浮点数为:19960 2-15 = 0.5999756 0.6,定点数的乘法 分三种情况: 、小数乘小数(数用Q15表示) Q15Q15=Q30,32位的乘积结果有两个符号位,利用移位操作得到乘积结果的Q31表示。 举例:0.50.5 = 0.25 操作数用Q15表示为: 0.5 215 =16384=0100 0000 0000 0000B 0.100 0000 0000 0000 0.100 0000 0000 0000 = 00.01 0000 0000 0000 0000 0000 0000 0000 将结果左移一位得到乘积结果的Q31表示为: 0.01 0000 0000 0000 0000 0000 0000 0000 0 = 20000000H 表示的浮点数即为:0.25,、整数乘整数(数用Q0表示) Q0Q0=Q0 举例:135 = 65 操作数用Q0表示为: 13 = 0000 0000 0000 1101B 5 = 0000 0000 0000 0101B 0000 0000 0000 1101 0000 0000 0000 0101 = 0000 0000 0000 0000 0000 0000 0100 0001 = 00000041H 表示的浮点数即为:65,、混合表示法 在对精度和数据范围要求都比较高的情况下,两个 数可以采用介于Q15与Q0之间的不同的Q表示法。 举例: 设参与运算的两个数x和y的数值范围分别不超过 1和 4,两个数的Q值分别为Q15和Q13,为了保证数据 范围,应该采用Q13。例如: x = 0.4 y = 3.2 ,计算x + y 因为 xd = 3276, yd = 26214,则 xd + yd = 3276 + 26214 = 29490 转换为浮点数为:29490 2-13 3.59985,定点数的除法 注意:DSP没有专门的除法指令,利用条件减法指令编写 子程序实现。 、十进制的除法 在计算之前要保证分子不能大于分母的十倍,否则必须进行如 下的处理:将分母乘上10(100或1000)后再按下面的计算过 程进行除法运算,得到结果后再把该结果乘以10 (100或1000) 即可得到最终的正确结果。 计算过程(子程序): i = 0 STEP1:重复的用分子减去分母(若分子小于分母,则余数即为 分子;否则,余数=分子-分母),直到结果为小于分母的数或0。得 到执行的减法次数 = Ni 及余数。 STEP2: i = i +1,余数10作为分子,返回STEP1。 STEP3:结果 = N0 100 + Ni 10-i,i = 1,2,3,,举例1:求40/3 = ? step1:310 = 30; step2:40-30=10 30,70-30=4030,4030=1030,70-30=4030,4030=1030, 次数=3,余数=10; step6:根据要求的精度结束计算 step7:结果=1 100 +3 10-1 + 310-2 +3 10-3 + =1.3333 step8:最终结果= 1.333310=13.333 ,举例2:求3/40= ? step1:3 40;300 - 40=260,执行第1次减 法;260 - 40=220,执行第2次减法; 220 - 40=180,执行第3次 减法;180 - 40=140,执行第4次减法;140 - 40=100,执行第5 次减法;100 - 40=60,执行第6次减法;60 - 40=20,执行第7 次减法;次数=7,余数=20; step4: 2010=200,200 40; 200 - 40=160,执行第1次 减法;160 - 40=120,执行第2次减法;120 - 40=80,执行第3 次减法; 80 - 40=40,执行第4次减法; 40 - 40=0,执行第5次 减法;次数=5,余数=0; step5:结果=0 100 +0 10-1 + 710-2 +5 10-3 = 0.075,、二进制的除法 注意:在计算之前要保证分子小于分母的2倍。 计算 过程同十进制的除法,下面仅举例。 计算40 / 3 = ? step1:分母左移3位(即乘以8),得分母=24; step2:00101000 ( =40) - 00011000 ( =24) =00010000 ( =16) 次数=1,余数=16 24; step3: 00100000 ( =32) (余数16左移一位) - 00011000 ( =24) =00001000 ( =8) 次数=1,余数=8 24; step4: 余数=16 (余数8左移一位) 24 次数=0; step5: 00100000 ( =32) (余数16左移一位) - 00011000 ( =24) =00001000 ( =8) 次数=1,余数=8 24;,step6: 余数=16 (余数8左移一位) 24 次数=0; step7: 00100000 ( =32) (余数16左移一位) - 00011000 ( =24) =00001000 ( =8) 次数=1,余数=8 24; step8: 余数=16 (余数8左移一位) 24 次数=0; step9: 00100000 ( =32) (余数16左移一位) - 00011000 ( =24) =00001000 ( =8) 次数=1,余数=8 24; step10 :结果 = 120 +1 2-1 +0 2-2+1 2-3 +0 2-4 +1 2-5 +0 2-6 +1 2-7 =1.1010101 step11:将上述结果右移三位,即可得到正确的结果为: 最终结果 = 1101.0101 B = 13.3125,第三章 DSP的CPU结构及存储器配置,1、C2系列DSP的功能框图,基于PLL的时钟模块 (锁相环),双10位ADC,串行通信接口(SCI),串行外设接口(SPI),外部存储器接口(EMI),事件管理器(EM),数字I/O,标准测试接口(JTAG),CPU,2、CPU结构,中央算术逻辑 单元(CALU),累加器(ACC),CALU的输入和输出 数据定标移位器,乘法器,乘积定标移位器,辅助寄存器运算单元(ARAU),状态寄存器,定标移位器: 主要用作移位、bit提取、扩展算术运算和溢出防止 运算。 、输入数据定标移位器(输入移位器): 将输入的0到16位的数据左移16位,作为CALU的32位输入数据。 、输出数据定标移位器(输出移位器): 将累加器里的结果输出到数据存储器之前左移0到7位,累加器里的数据保持不变。 、乘积定标移位器(乘积移位器): 将乘积寄存器的数据在输出到CALU之前进行移位。,辅助寄存器算术单元(ARAU)和辅助寄存器 内有8个辅助寄存器(AR0、AR1、AR2、AR3、AR4、AR5、 AR6、AR7),当一个指令使用间接寻址来访问数据存储器时, ARAU就产生数据存储器的地址。 状态寄存器ST0和ST1 、特点: 可以被保存到数据存储器(采用指令存储状态寄存器指 令SST),也可以从数据存储器加载(采用指令装载状态寄 存器指令LST)。 、其他指令: SETC:设置寄存器的位 CLRC:清除寄存器的位 、作用: 可以用于子程序中保存和恢复机器的状态。,、ST0: 1513 12 11 10 9 80 其中: ARP辅助寄存器指针,用于选择作为间接寻址的辅 助寄存器(ARn)。 OV溢出标志位,用于表示CALU是否有溢出产生。 OVM溢出方式位,决定如何处理CALU中的溢出。 =0:累加器中结果正常溢出; =1:溢出时,累加器被置为最大正数或最小负数。 INTM中断允许位,使能(=0)或禁止(=1)所有 的可屏蔽中断。 DP数据页指针。当使用直接寻址时,DP存放存储 器的数据页(即存储器地址的高9位),DP与指令代码的最 低7位构成16位存储器地址。,、ST1: 其中: ARB辅助寄存器指针缓冲器 CNF片内DARAM配置位。该位决定将DARAM B0映 射至数据或程序空间。 CNF = 0B0:映射到数据区 CNF = 1B0:映射到程序区 TC测试/控制位。 SXM符号扩展位。 C进位标志位。 XFXF引脚状态位。 PM乘积移位方式。决定乘积移位寄存器的移位情况。,3、C2的存储器 C2的片内总线: 、特点: 独立的数据读地址总线和数据写地址总线使得CPU可以在 同一个机器周期内进行读和写操作。 独立的程序和数据地址总线允许同时访问程序指令和数据。 、片内总线的种类: PAB程序地址总线:提供访问程序存储区的地址。 DRAB数据读地址总线:提供从数据存储区所要读取 数据的地址。 DWAB数据写地址总线:提供写数据存储区的地址。 PRDB程序读总线:它载有从程序存储器读取的指令 代码以及表格等信息,并送到CPU。 DRDB数据读总线:它将数据从数据存储器载送到中 心运算逻辑单元(CALU)和辅助寄存器算术单元(ARAU)。 DWEB数据写总线:将数据送到程序和数据存储器。,片内存储器的分配情况: 64K字的程序空间 64K字的本地数据空间 32K字的全局数据空间:用于和其他处理器共 享数据或用作附加的数据空间。 64K字的I/O空间:用于寻址外设接口(片外外 设)和部分片内外设(因为大部分的片内外设 地址都映射到局部数据存储器空间)。 采用片内存储器工作的优点: 避免了与慢速外部存储器接口所需的等待状态, 比采用外部存储器性能更高。 比外部存储器更便宜。 比外部存储器功耗更低。,片内存储器的类型: 片内双口RAM(DARAM): 大小:544字 特点:可以在一个机器周期内访问两次 组成:B0(256字)+ B1( 256字)+ B2(32字) 注意:主要用于保存数据,但B0也可用于保存程序。 片内单次访问的程序/数据RAM(SARAM): 特点:一个机器周期内只能访问一次。 工厂掩模的片内ROM 闪烁存储器(Flash) 特点:电可擦除的、可编程及可长期保存数据。,局部数据存储器的配置: 64K = 128字512个数据页(0、1、511) 数据页指针DP(由ST0中的DP值决定)、数据页 及数据地址之间的关系见下表。,I/O空间 I/O空间存储器可寻址64K字; 访问I/O空间的存储器或片外I/O端口只能用指令IN和OUT;,TMS320 C240 A0 A1 A2,AS138,AS138,输入设备,输出设备,第四章 寻址方式与指令系统,1、寻址方式种类 立即寻址:操作数在指令代码中直接以常数给出。 直接寻址:将指令代码中的7位偏移地址与数据存储器页 指针(DP)的9位组合起来形成16位数据存储器地址。 间接寻址:通过8个16位辅助寄存器访问数据存储器。 2、立即寻址 短立即数寻址 特点:指令代码中用一个8位、9位或13位的常数作为操作 数。为单指令字。 举例: RPT #63H ;将紧跟其后的指令重复执行100次,单指令字中的位: 15 8 7 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 RPT指令操作码 8位立即数63H 长立即数寻址 特点:指令代码中用一个16位的常数作为操作数。为双指令字。 举例: ADD #0A000H ,2 ;将立即数A000H左移2位后与累 加器内容相加,结果存累加器中。 第一个字: 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 ADD指令操作码 移位次数 = 2 第二个字: 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 16位长立即数 = 0A000H,3、直接寻址 直接寻址指令代码,8MSB,0,7LSB,指令操作码,偏移量(地址低7位),每页数据存储器地址偏移量,数据页(地址高9位),9位DP值(由ST0决定当前页),直接寻址标志,15 14 8 7 6 5 1 0,形成16位数据存储器地址:,直接寻址要求:应首先为页指针寄存器DP装入一个适当的 数(从0到511) 注意事项: DSP复位时并没有初始化DP内容,因此程序中要访问数 据存储器之前还是应该用LDP指令确定当前数据页。 如果程序需要访问不同的数据页,则每当访问新的数据 页前,必须先修改DP值,以确保访问正确的数据页。 举例: LDP #0E0H ;DP指向E0H数据页,地址为7000 707FH(1416128 = 7212 = 7163 = 7000H) ADD 9H,5 ;该指令将数据存储器7009H单元的内 容左移5位后与ACC相加,结果存ACC 指令代码及地址形成过程如下:,15 14 8 7 6 1 0,ADD操作码,0 0 1 0,0 1 0 1,0,0 0 0 1 0 0 1,数据存储器地址偏移量=9,移位次数 = 5,直接寻址标志,0 1 1 1 0 0 0 0 0,DP = 0E0H,0 0 0 1 0 0 1,0 1 1 1 0 0 0 0 0,16位数据存储器地址 = 7009H,4、间接寻址 特点: 用8个16位辅助寄存器(但每次寻址只能使用其中一个) 内容作为间接的地址,可以访问64K数据存储空间中的任一单 元,不受当前数据页的限制。 辅助寄存器的选择: 将一个07的值装入状态寄存器ST0中的辅助寄存器指 针ARP,ARP所指向的辅助寄存器称为当前AR,它其中的内 容就是要访问的数据存储器的地址。 几种间接寻址方式: 不增量不减量 操作数为 * : 指令使用当前辅助寄存器的内容作为数据存储器地址, 指令执行后,当前辅助寄存器的值不改变。 例如: MAR * , AR2 ; 选择AR2作为当前辅助寄存器,即ARP=2,加1或减1操作数为 * + 或 * - : 指令使用当前辅助寄存器的内容作为数据存储器地址,指令 执行后,将当前辅助寄存器的值加1或减1 。 例如: ADD * +,8 ; 将当前辅助寄存器的内容左移8位后加 到ACC,并将当前辅助寄存器的值加1 增加或减去一个指定的量操作数为 * 0 + 或 * 0 - : 辅助寄存器AR0存指定的量。指令将当前辅助寄存器的值作 为数据存储器地址,指令执行之后,将当前辅助寄存器的值增 加或减去AR0的内容,即指定量。 例如: ADD * 0 + ,AR1 ;将当前辅助寄存器的内容加到ACC, 并将AR0的值加给当前AR,该指令 结束后指定AR1为当前AR。,使用逆向进位增加或减去一个指定的量 操作数为 * BR0 + 或 * BR0 - : 辅助寄存器AR0存指定的量。当前辅助寄存器的值作为数据 存储器地址使用之后,当前辅助寄存器的值增加或减去AR0保存 的指定量。但该加法或减法是逆向进位(主要用于FFT),即加 减法是从高位开始运算,向低位进位或借位。 例如: ADD * BR0 + ,AR5 ;将当前辅助寄存器的内容加到 ACC, 并将AR0的值按反向进位 加给当前AR,该指令结束后指定 AR5为当前AR。,5、C2的指令集 指令类型(按功能) 累加器、算术与逻辑指令 辅助寄存器和数据页指针指令 暂时寄存器(TREG)、乘积寄存器和乘法指令 转移指令 控制指令 I/O和存储器操作 指令举例 ADDC功能:加给ACC,带进位,直接或间接寻址 、指令格式: ADDC dma ;直接寻址 ADDC ind ,ARn ;间接寻址 注意: dma、 ind、n可以由用户根据需要而改变; 中的 内容为可选项,、操作数 dma ;直接寻址时,数据存储器的低7位 n ;指示下一个辅助寄存器 n = 07 ind ;选择下列7种间接寻址方式中的一种: * * + * - * 0 + * 0 - * BR0 + * BR0 、操作码 ADDC dma ADDC ind ,ARn 各位代表的意义如下所示:,15 8 7 6 0,dma,0,0 1 1 0 0 0 0 0,15 8 7 6 5 4 3 2 1 0,0 1 1 0 0 0 0 0,1,ARU,NAR,N, ARU:为辅助寄存器的更新代码,确定当前辅助寄存器是否 变化以及如何增减。见下表:, N:为下一个辅助寄存器指示符,该位声明该指令是否改变 ARP的值。 N = 0 ARP内容保持不变; N = 1 NAR内容被装入ARP,且旧的ARP值被装入状 态寄存器ST1的辅助寄存器缓冲器ARB中。 NAR:为下一个辅助寄存器的代码值,AR0AR7的对应代 码分别为07。 、执行 (ACC)+(data memory address)+(C ) ACC 以下为解释上面指令的一些常用注释符号: (r):表示寄存器或存储单元 r 的内容 ; x y:数值x 被赋予寄存器或存储单元y; r(n:m) :寄存器或存储单元r的位n到m,例如:ACC(7:0)表示累加器的位7到位0; ( r(n:m) ):寄存器或存储单元r的位n到位m的内容。,、举例 设DAT300为已经赋值为300H的常数。 ADDC DAT300 ;(DP=6:address 0300h 037Fh),指令执行前,指令执行前,0004H,数据存储器 300H,0004H,数据存储器 300H,0018H,0,ACC,0013H,1,ACC,C,C,6、C2的伪指令 指令性语句:即前面介绍的用各种助记符表示的机 器指令,每条指令都有其机器代码或指令代码。 指示性语句:即伪指令,不产生指令代码,主要用 于在汇编过程中与汇编程序“通信”,说明源程序的起止、分段 情况、安排各类信息的存储结构以及有关的变量说明等。具体 实现以下任务: 将数据和代码汇编进特定的段; 为初始化的变量保留存储器空间; 展开成列表的形式; 汇编条件块; 定义全局变量; 指定汇编器可以获得宏的定义库; 检查符号调试信息。,7、DSP软件开发流程图,C源文件,C编译器,宏库文件,汇编源文件,C和汇编 源文件,汇编器,目标文件,目标库文件,RTS库文件,链接器,COFF EXE file,执行文件,其中: 源文件:指的是由程序员写的基本的文本文件,它包括一系列指令。 汇编器:它是用来将用户的文本汇编源程序编译成机器可懂的格式。 链接器:组织由汇编器生成的机器可读代码,使它能够与相应的目标DSP存储器结构匹配,即其主要用来解决存储器分配问题,使所有最终形成执行程序的指令都有一个特定的存储器地址。 目标文件:包括实际的可读指令,可以被特定的DSP目标器件识别;通常一个目标文件是可重新定位的,不能由DSP器件直接使用,它必须先通过一个链接器程序,生成最终的DSP可执行程序。 宏:一条宏就是一个指令序列,主要用来代替重复的代码(类似于C语言中的函数、VB中的子程序),这样可以使汇编源程序得到简化并不容易出错。例如:,编写一个对数据存储单元某位置1的宏指令如下: 宏名字 形式参数 SBIT1 .macro DMA ,MASK MAR * ,AR1 LAR AR1 ,# DMA LACC * OR # MASK SACL * .endm 在程序中定义了宏之后,就可以在源程序中,将宏的 名字作为指令来调用这个宏。例如: 将0200H单元的第4位置1,则调用宏语句为: SBIT1 0200H,0010H(实际参数),8、DSP生成的汇编列表文件例子,接上表:,说明: 第一列:汇编源程序语句的行号。用一个十进制的数字来 表示源程序语句在汇编源文件中的行号。 第二列:段程序计数器(SPC)。将一个程序的各个部分分 成不同的段,每个段都有一个十六进制的段程序计数器值,且 每个段的段程序计数器值都被初始化为000000。例如,.data 段 的SPC值 =000008,而.text段的SPC值 = 00000a。 注意:有些命令对SPC值不影响,此时,其第二列为空白。 第三列:目标代码。这是为DSP准备的二进制机器代码。 说明:以12行所示的程序语句为例,这是一条指令,将标 号table所指的存储器内容写入AR3寄存器。该指令生成的机器码 是“77130000”,第一个4位数字表示实际的指令,后4位数字表示 标号table在.data 段中的位置。 第四列:源程序语句区域。,第五章 系统功能模块及片内外设,1、系统配置寄存器 作用:用户可以对这些寄存器编程来改变系统的一些功能。 特点:每个寄存器有两个连续地址,其他寄存器有惟一地址。 系统控制寄存器(SYSCR)地址为7018H: 其中: RESET1 和RESET0 为软件复位位,完成DSP器件的软件 复位。当( RESET1 :RESET0 )为(0:0)、(1:0)、 (1:1)时均引起一次全局复位发生。 CLKSRC1和CLKSRC0为C240DSP的CLKOUT/IOPC1引脚 的控制位,控制方式如下表:,系统状态寄存器(SYSSR)地址为701AH 其中: PDRST:为1时表示上电引起的复位; ILLADR:非法地址复位状态位。为1表示DSP企图访问一 个不存在的片内数据或程序存储器引起了复位;,SWRST:软件复位状态位,为1表示有软件复位发生; WDRST:看门狗复位状态位,为1表示看门狗定时器溢出 发生复位; HP0:硬件保护标志位,只适用于具有片内Flash的DSP; VCCAOR:模拟电压越限位,为1表示电压超出稳压范围; VECRD:中断向量挂起位,当一个中断请求被响应时, 该位被置位;其被用于不可屏蔽中断NMI的中 断服务子程序。 系统中断向量寄存器(SYSIVR)地址为701EH: 位158:中断向量高8位,这些位读出总为0。 位70:中断向量低8位,这些位被装入中断向量的地址 偏移量,该偏移量由挂在外设总线上的外设产 生,用以响应相应的可屏蔽中断。,2、时钟模块 功能:为整个DSP器件提供各种时钟频率。 时钟结构: 其中: OSCBYP:用来选择内部振荡器是否被旁路,若其接高 电平表示使用内部振荡器;若引脚接地,表 示旁路内部振荡器而使用外部时钟输入。,时 钟 模 块,XTAL1/CLKIN,XTAL2,CPUCLK,WDCLK,SYSCLK,OSCBYP,CPUCLK:是时钟模块提供的最高时钟频率,用于DSP内 部的所有存储器以及所有直接连到CPU总线 (DSP内部数据总线)的外设(包括外部存储 器接口)。 SYSCLK:提供所有连到外设总线的外设时钟,为 CPUCLK频率的1/2或1/4。 WDCLK:是为WD/RTI模块提供的一个低功率时钟,频 率一般为16kHz。 时钟控制寄存器: 、功能:通过编程确定各时钟频率及低功耗方式。 特点:控制寄存器8位,分别与片内外设总线低8位相连, 对高8位进行读写无意义。 、控制寄存器1CKCR0地址为702BH: 格式见下表:,其中: CLKMD(1:0):确定CPUCLK的时钟源,选择方式如 下表: PLLOK(1:0): PLLOK(1)表示PLL触发器状态, PLLOK(0)用于器件测试。 PLLPM(1:0):规定低功耗工作模式。, ACLKENA:在C24中保留不用 PLLPS:确定系统时钟频率是4分频还是2分频。PLLPS= 0 时,fSYSCLK = fCPUCLK /4; PLLPS = 1时, fSYSCLK = fCPUCLK /2。 、控制寄存器2CKCR1地址为702DH: 格式见下表: 其中: CKINF(3:0):这4位指示正在被使用的晶体振荡器频率 即输入频率 fx ,其关系如下表:,PLLDIV(2):确定PLL输入是否被2分频,为1时 2分频。 PLLFB(2:0):确定PLL的乘积因子,如下表: 注:PLL电路可以将其输入时钟频率fx(来自内部晶体振荡 器或外部时钟输入)乘以1、2、3、4、5和9倍后再送 往其它时钟。,各种内部时钟频率选择,时钟模块的编程 正确编程需要如下三条指令: SPLK #00000000 01000001B,CKCR0 ; SPLK #00000000 10111011B,CKCR1 ; SPLK #00000000 11000001B,CKCR0 ; 说明: SPLK指令的功能是:存长立即数到数据存储器,直接 或间接寻址; 第一条指令完成的功能:使CLKMD(1)= 0禁止PLL, 同时使SYSCLK=CPUCLK/2; 第二条指令完成的功能:使CKINF(3) CKINF(0) = 1011并指定 fx = 10 MHz,同时使用PLL并使 CPUCLK=20MHz; 第三条指令完成的功能:使CLKMD(1)= 1允许PLL, 使系统按上述编程频率工作。,3、等待状态发生器 功能:当DSP访问慢速外设或存储器时,必须加入等待状态达 到外设或存储器时序的要求。 等待状态的产生:通过对等待状态产生控制寄存器编程产生。 等待状态产生控制寄存器(WSGR): 其中: AVIS:地址可见方式,复位时被置1,不产生等待状态。 AVIS = 0 ,减少功耗与噪音; AVIS = 1, 使能器件的地址可见方式,在这一方式下,器 件提供一种跟踪内部代码执行的方法。,ISWS:I/O空间等待状态位,复位时被置1。 ISWS = 0:未产生用于片外I/O空间的等待状态; ISWS = 1:所有访问片外I/O空间的操作均插入一个等待 状态。 DSWS:数据空间等待状态位,复位时被置1。 DSWS = 0:未产生用于片外数据空间的等待状态; DSWS = 1:所有访问片外数据空间的操作均插入一个等 待状态。 PSWS:程序空间等待状态位,复位时被置1。 PSWS = 0:未产生用于片外程序空间的等待状态; PSWS = 1:所有访问片外程序空间的操作均插入一个等 待状态。,4、中断系统 中断类型,中断,包括指令INTR、NMI和TRAP引起 的中断(属于非屏蔽中断),硬件 中断,软件 中断,上电复位引脚PORESET中断,复位引脚RS中断,INTk(k=1,2,3,4,5,6), INT1优先级最高,非屏蔽 中断,可屏蔽 中断,引脚NMI中断,中断优先级,硬件中断结构 说明: 两个中断模块管理DSP内部各种片内外设及外部引脚XINT1XINT3等多个中断源,包括可屏蔽中断INT1INT6、NMI、硬件复位中断和软件中断;它们都是通过可屏蔽中断INT1INT6向CPU中断逻辑提出中断申请。 每个可屏蔽中断INT1INT6对应了多个中断源。,DSP CPU 地址线1-5 IACK INT6 INT5 NMI INT1 INT4 INT3 INT2 IACK,地址线1-5 IACK INT6 INT5 NMI INT1 系统中断模块,INT4 INT3 INT2 IACK 事件管理模块中断模块,中断寄存器 、CPU中断寄存器 CPU中断屏蔽寄存器IMR地址0004H: INT6INT1:可屏蔽中断的屏蔽位, 0 /1 = 屏蔽/允许中断。 CPU中断标志寄存器IFR 地址0006H : 其中: F 代表“中断标志”,F=0:无中断请求;F=1:至少 有一个INTX中断源请求,CPU响应后自动清除对应标志位。,、外部硬件中断控制寄存器: 外部引脚XINT1中断控制寄存器XINT1CR 地址7070H : 其中: 位15:为只读位,向该位写清除该标志位; XINT1标志= 1 表示检测到有效的XINT1中断触发沿。 位6:该位为只读,反映引脚的当前逻辑电平。 位2:可以编程设置XINT1为下降沿或上升沿触发,XINT1 中断有效沿 = 0/1 =下降沿/上升沿触发。 位1: XINT1优先级 = 0/1 = 高/低优先级。 位0: XINT1中断允许 = 0/1 = 禁止/允许XINT1中断。,外部引脚XINT2中断控制寄存器XINT2CR:同上 外部引脚XINT31中断控制寄存器XINT3CR:同上 外部引脚NMI中断控制寄存器NMICR:同上 外设中断向量的偏移地址 、设置外设中断向量偏移地址的原因: 每个可屏蔽中断INT1INT6都包含了多个DSP片内或外部中 断源; 软件中断INTn(n = 16)分别与可屏蔽中断INT1INT6占 用同一个向量表位置; NMI硬件和NMI软件中断会进入同一个中断服务程序。 、如何设置外设中断向量的偏移地址: 系统中断模块和事件管理模块中都有确定的“中断向量地址 寄存器”保存中断源的中断偏移地址,只要在中断服务程序 入口处读取中断向量地址寄存器,即可判断中断源身份,并进 入对应中断源的服务程序。,中断编程 中断初始化流程:,主程序开始,INTM置1禁止所有可屏蔽中断,将IMR中INTk对应位置1允许中断并清除IFR,对某项中断源,将单独屏蔽位置1,并编程有效触发沿,系统初始化,INTM置0等待中断,中断初始化编程例子: 任务:将外部引脚XINT1设置为高优先级中断 .text ; 编写主程序 NOP SETC INTM ;禁止中断 LDP # 0 ;因为IMR的为地址0004H第0页 SPLK # 0001H,IMR ;允许XINT1中断 LACC IFR ;将IFR左移16位后装入ACC,ACC的低16位全为0 SACL IFR ;将ACC的低16位装入IFR,清除标志寄存器IFR LDP # 00E0H ;14(E)16128 = 7212 = 7163 =7000H SPLK # 0005H,XINT1CR ;允许XINT1引脚中断,高优先级, 上升沿有效 ;系统初始化 CLRC INTM ;允许中断 说明: SETC设置INTM位; CLRC 清除INTM位; LACC带移位016位装入ACC(32位); SACL带移位07位存低段ACC。,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内容,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=输出,0O O1 O,MUX控制位 0=I/O功能 1=基本功能,引脚,其中: 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,各位代表的意义如下表所示:,输出控制寄存器B(OCRB)地址7092H 其中第7位到第0位为共享引脚功能选择,见下表:,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=设置相应引脚为低/高电平。,6、实时中断 实时中断(RTI)的功能:提供可编程间隔的中断,可用 于实现日历、实时时钟、分时多任务进程控制等功能。 实时中断(RTI)的结构:,8-bit Real- time counter,RTICNTR.7-0,7-bit free running counter,RTICR.2-0,/32768,/2,WDCLK,/128,实时中断(RTI)的特点: RTI定时器是8位可编程用以产生周期性中断的计数器, 其中断频率可由软件来选择。中断可以通过软件来允许或禁 止。 RTICNTR可以在任何时候被读出和清除为0。但是,出 系统复位外,7位的不可编程计数器不能被其他操作清除。 实时中断计数器寄存器(RTICNTR)地址7021H: 8位的RTICNTR存放实时计数器的值,它对来自7位的 不可编程的128分频输出信号(WDCLK的128分频)递增记数。 RTI控制寄存器(RTICR)地址7027H: 表中: 位7:实时中断标志位,该位可由软件清除。 = 0 :没有RTI上溢产生的中断; = 1:没有RTI上溢产生的中断。,位6:RTI中断使能位。 = 0:清除RTI的未被响应的中断请求,并禁止后续的 RTI中断; = 1:当RTI上溢时,产生中断请求。 位20:实时中断预定标选择位,用于选择用于中断的分频。,7、看门狗 看门狗的功能: 监视DSP软件和硬件操作,当DSP发生混乱不能及时清除 WD定时计数器时,WD将会产生溢出中断而复位系统,提高 CPU的可靠性。 看门狗的特点: WD定时器是8位可复位的加计数器,由WDCLK或7为计数 器分频提供时钟。 注意事项: 程序正常运行时,必须在程序的各个分支,按时“喂狗”,即 在WDCNTR溢出前对WDKEY编程清除WDCNTR为0,防止其溢 出,保证正常运行时WD不会强行复位系统。 WD计数器寄存器( WDCNTR )地址7023H: 8位只读WDCNTR包含WD计数器的当前值。该计数器对 WDCR选定的输入信号递增记数。当计数器溢出,经过一个单 输入信号周期的时延后产生系统复位信号。,WD控制寄存器(WDCR)地址7029H: 表中: 位7:WD中断标志位。 = 0:表明自上次清除该位后,没有WD产生过复位; = 1:表明自上次清除该位后,有WD产生过复位 位6:WD使能位。 = 0:使能WD; = 1:禁止WD。 位53:WD校验位,必须对这3位写入101B,否则将产生 系统复位。读这3位时始终为000B。 位20:WD预定标选择位,用于选择WDCNTR的计数信 号的分频系数。如下表所示:,WD复位关键字寄存器(WDKEY)地址7025H: 功能: 当将55H和紧跟其后的AAH分别写入WDKEY时,将清除 WDCNTR的值。可以写入55H和AAH的任何组合到WDKEY, 但仅有55H之后紧跟AAH才能复位WDCNTR。而向WDKEY写 入其他任何值都导致系统复位。读该寄存器返回WDCR的内容。,举例: LDP #00E0H; 数据页指针

温馨提示

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

评论

0/150

提交评论