16位单片机及语音嵌入式系统.ppt
《16位单片机及语音嵌入式系统.ppt》由会员分享,可在线阅读,更多相关《16位单片机及语音嵌入式系统.ppt(233页珍藏版)》请在三一文库上搜索。
1、1,16位单片机 及语音嵌入式系统,赵定远 马洪江 主 编,2,第1章 SPCE061A单片机简介,3,一、nSP家族的模块式结构,4,体积小、集成度高、可靠性好且易于扩展 具有较强的中断处理能力 高性能价格比 功能强、效率高的指令系统,二、nSP家族的特点,5,性能,三、 SPCE061A简介,16位nSP微处理器; 工作电压:VDD为2.6-3.6V(cpu), VDDH为VDD- 5.5V(I/O) CPU时钟:0.32MHz-49.152MHz ; 内置2K字SRAM; 内置32K字FLASH; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电小 于2A/3
2、.6V;,6,2个16位可编程定时器/计数器(可自动预置初始计数值); 2个10位DAC(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; 锁相环PLL振荡器提供系统时钟信号;,性能,7,32768Hz实时时钟; 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 具有低电压复位(LVR)功能和低电压监测
3、(LVD)功能; 内置在线仿真电路ICE(In- Circuit Emulator)接口; 具有保密能力; 具有WatchDog功能(由具体型号决定)。,性能,8,四、SPCE061A简介的结构,9,芯片引脚排列,10,SPCE061A实物图,1.2 SPCE061A简介,11,SPCE061A最小系统的构成,12,五、SPCE061A开发方法,通过在线调试器PROBE实现。 它既是一个编程器(即程序烧写器),又是一个 实时在线调试器。 PROBE工作于凌阳IDE集成开发环境软件包下, 其5芯的仿真头直接连接到目标电路板上 SPCE061A相应管脚,直接在目标电路板上的 CPU-SPCE061
4、A调试、运行用户编制的程序。 PROBE的另一头是标准25针打印机接口,直接连 接到计算机打印口与上位机通讯,在计算机IDE集 成开发环境软件包下,完成在线调试功能。,13,计算机、PROBE、用户目标板连接图,14,计算机、PROBE、用户目标板连接实物图,15,本章内容结束,16,第2章 SPCE061A单片机硬件结构,17,2.1 nSP的核心结构,18,2.1.1 ALU算术逻辑运算单元,16位算术逻辑运算 nSP提供了基本算术运算与逻辑操作指令,加法、减法、比较、补码、异或、或、与、测试、写入、读出等16位算术逻辑运算及数据传送操作。,19,2.1.1 ALU算术逻辑运算单元,结合算
5、术逻辑的16位移位运算 包括:算术右移ASR、逻辑左移LSL、逻辑右移LSR、旋转左移ROL及旋转右移ROR。 nSP的移位指令是复合式指令,一个指令会同时完成移位和算术逻辑运算。程序设计者可利用这些复合式的指令,撰写更精简的程序代码,进而增加程序代码密集度 (Code Density)。,20,2.1.1 ALU算术逻辑运算单元,16位16位的乘法运算和内积(乘加)运算 高速的16位16位乘法运算指令MUL和16位内积运算指 令MULS。 可以用于有符号数相乘 (signedsigned) 或无符号数与 有符号数相乘 (unsignedsigned)的运算。MUL指令只 需花费12个时钟周期
6、,MULS指令花费10n+6个时钟周 期,其中n为乘加的项数。例如:“MR=R2*R1 ,4” 表示求4项乘积的和,MULS指令只需花费46( 104+6=46)个时钟周期。这两条指令大大的提升了 nSP的数字信号处理能力。,21,2.1.2 寄存器组,共有8个16位寄存器 分为通用寄存器和专用寄存器两大类 通用寄存器包括:R1R4,作为算术逻辑运算的来源及目标寄存器 专用寄存器包括: SP、BP、SR、PC,是与CPU特定用途相关的寄存器,22,2.1.2 寄存器组,通用寄存器R1R4 (General-purpose registers) 可用于数据运算或传送的来源及目标寄存器。寄存器R4
7、、R3配对使用,还可组成一个32位的乘法结果寄存器MR;R4为MR的高字符组,R3为MR的低字符组,用于存放乘法运算或内积运算结果,23,2.1.2 寄存器组,堆栈指针寄存器SP (Stack Pointer) SP用来记录堆栈地址,指向堆栈顶端。 堆栈是一个先进后出的内存结构,nSP的堆栈结构由高地址往低地址方向储存。 CPU执行push、子程序调用call及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会在堆栈里储存寄存器内容,这时SP会递减以反映堆栈用量的增加。当CPU执行pop、子程序返回ret及从ISR返回reti时,SP会递增以反映堆栈用量的
8、减少。 nSP堆栈的大小限制在2K字的SRAM内,即地址为0x0000000x0007FF的内存范围中。,24,2.1.2 寄存器组,基址指针寄存器BP (Base Pointer),nSP提供了一种方便的寻址方式,即基址寻址方式BP+IM6;程序设计者可通过BP来存取ROM与RAM中的数据,包括:局部变量(Local Variable)、函数参数(Function Parameter)、返回地址(Return Address)等。BP还可做为通用寄存器R5,用于数据运算传送的来源及目标寄存器。,25,2.1.2 寄存器组,程序计数器PC (Program Counter),用来记录程序目前执
9、行位置,以控制程序走向。CPU每执行完一个指令,就会改变PC的值,使其指向下一条指令的地址。在nSP里,16位的PC寄存器与SR寄存器的CS字段,共同组成一个22位的程序代码地址。,26,2.1.2 寄存器组,状态寄存器SR (Status Pointer),状态寄存器SR内含许多字段,每个字段都有特别的用途。其中包含两个6位的区段选择字段: CS (Code Segment),DS (Data Segment),它们可与其它16位的寄存器结合在一起形成一个22位的地址,用来寻址 4M字容量的内存。 SPCE061A只有32K字的闪存,只占用一页的存储空间,所以CS和DS字段在SPCE061A
10、中都是设为0。 算数逻辑运算的结果会影响CPU内的标志(flag),标志的内容可以作为条件判断的依据。 nSP有四个1位的标志: N、Z、S、C,即SR寄存器中间的4个位(B6B9)。,27,2.1.3 数据总线和地址总线,nSP是16位单片机,它具有16位的数据线和22位地址线。所以其基本数据类型是16位的“字”型,内存都是按“字”操作,22位地址线最多可寻址到4M字的内存空间。地址线中的高6位A16A21来自SR寄存器中6位的CS字段或是6位的DS字段,低16位A0A15则来自内部寄存器。通常,地址线的高6位称为内存地址的Page Selector,简称为页码(Page);而低16位则称为
11、内存地址的偏移量(Offset)。 nSP通过对区段(Segment)的编码来实现内存分页检索,通过Segment与Offset的配合产生22位地址,(注意: SPCE061A只有32K字闪存FLASH,仅占一页存储空间,所以CS字段和DS字段在SPCE061A用不到,都设为0),28,2.2 SPCE061A片内存储器结构,SPCE061A片内有2K字的SRAM和32K闪存。,29,2.2.1 RAM,SPCE061A有2K字的SRAM(包括堆栈区),地址范围从0x0000到0x07FF。前64个字,即0x00000x003F地址范围内,可采用6位地址直接地址寻址方法,存取速度为2个CPU时
12、钟周期;其余范围内(0x00400x07FF)内存的存取速度则为3个CPU时钟周期。,30,2.2.2 堆栈SP,SP是用来记录堆栈地址的寄存器,SP会指向堆栈的顶端。 堆栈是一个先进后出的内存结构,nSP的堆栈结构是由高地址往低地址的方向来储存的。CPU执行push、子程序呼叫call及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会储存寄存器内容在堆栈里,这时SP会递减以反映堆栈用量的增加。当CPU执行pop、子程序返回ret及从ISR返回reti时,SP会递增以反映堆栈用量的减少。 nSP堆栈大小限制在2K字的SRAM内,即地址为0x0000000
13、x0007FF的内存范围中。SPCE061A系统复位后,SP初始化为0x07FF,每执行push指令一次,SP指针减一。,31,2.2.3 闪存Flash,SPCE061A是用闪存替代mask ROM的MTP(multi-time-programmable)芯片,闪存可进行多次擦除与写入,可用来存储程序与数据。SPCE061A具有32K字(32K16位)闪存,32K字的内嵌闪存被划分为128页,每页存储容量为256字。它们在CPU正常运行状态下均可通过程序擦除或写入。全部32K字闪存均可在ICE工作方式下被写入或被擦除。不对用户开放整体擦除功能。,32,2.2.3 闪存Flash,用户通过向P
14、_Flash_Ctrl (写) ($7555H)单元写入0xAAAA启用闪存的存取功能。然后,向P_Flash_Ctrl (写) ($7555H)单元写入0x5511,来擦除页的内容。 为保证数据的正确写入,用户必须在写入之前擦除页的内容。页大小为0x100。第一页地址范围:0x80000x80FF,最后一页的地址范围:0xFF000xFFFF。0xFC000xFFFF范围内的地址由系统保留,用户最好不要用本范围内的地址。,33,2.3 SPCE061A的输入/输出接口,输入/输出接口(简称I/O端口)是单片机 与外设交换信息的通道。 输入端口负责从外界接收检测信号、键盘 信号等各种开关量信号
15、。 输出端口负责向外界传送由内部电路产生 的处理结果、显示信息、控制命令、驱动 信号等。,34,2.3 SPCE061A的输入/输出接口,nSP内有并行和串行两种方式的I/O口。 并行口线路成本较高,但是传输速率也较高; 串行口的传输速率较低但可以节省大量的线路成本。,35,2.3 SPCE061A的输入/输出接口,SPCE061A有两个16位的通用并行I/O口:A口和B口。这两个端口的每一位都可通过编程单独定义成输入或输出口。 A口的IOA0-IOA7作为输入端口时,具有唤醒功能,即当输入电平发生变化时,会触发CPU中断。在电池供电、追求低耗电的应用场合,可以让CPU进入睡眠模式(利用软件控
16、制)以降低功耗,需要时才以按键来唤醒CPU,使其进入工作状态。例如:手持遥控器、电子字典、PDA、计算器、无线电话等。,36,2.3.1 I/O端口结构,SPCE061A提供了位控制结构的I/O端口,每一位可单独用于数据输入或输出。每个独立的位可通过以下3种控制向量来作设定: 数据向量Data 属性向量Attribution 方向控制向量Direction,37,2.3.1 I/O端口结构,每3个对应控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。例如,需要IOA0是下拉输入引脚,则对应的Data、Attribution和Direction的值均被设为“0”
17、。如需要IOA1是带唤醒功能的悬浮式输入引脚,则Data、Attribution和Direction的值被设为“010”。与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。,A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点,38,2.3.2 并行I/O端口的控制向量组合,方向向量_Dir、属性向量_Attrib和数据向量_Data 分别代表三个控制口。 三个端口中每个对应的字节合在一起,形成一个控 制字,来定义相
18、对应I/O端口位的输入/输出状态和 方式。,39,2.3.2 并行I/O端口的控制向量组合,_Dir位决定端口位的输入/输出方向:0为输入,1为输出。 _Attrib位决定在端口位的输入状态下是为悬浮式输入还是非悬浮式输入:0为带上拉或下拉电阻式输入,1为悬浮式输入。在端口位输出状态下决定其输出是反相还是同相:0为反相输出,1则为同相输出。 _Data位在端口位的输入状态下被写入时,与_Attrib字节合在一起形成输入方式的控制字00、01、10、11,以决定输入端口是带唤醒功能的上拉电阻式、下拉电阻式或悬浮式以及不带唤醒功能的悬浮式输入。_Data位在端口位的输出状态下被写入的是输出数据,不
19、过,数据是经过反相器输出还是经过同相寄存器输出要由_Attrib位来决定。,40,2.3.2 并行I/O端口的控制向量组合,设置举例: 1、把A口的B0定义成下拉电阻式的输入口,则A口_Dir、_Attrib和_Data三个向量对应的B0组合应设为000。 2、把A口的B1定义成具有唤醒功能的悬浮式输入口,只需将_Dir、_Attrib和_Data向量对应的B1组合设置为010即可。 A口的IOA0IOA7作为唤醒来源,常用于键盘输入。要启用IOA0IOA7的唤醒功能,必先读取P_IOA_Latch单元,以此锁存IOA0IOA7引脚上的按键状态。随后系统才可通过指令进入低功耗的睡眠状态。当有按
20、键按下时,IOA0IOA7的输入状态会与其在进入睡眠前被锁存时的状态不同,从而引起系统的唤醒。,41,2.3.3 B端口的特殊功能,42,2.4 时钟电路,nSP的时钟电路采用晶体振荡器电路。外接晶振采用32768Hz。推荐使用外接32768Hz晶振,RC阻容振荡的电路时钟不如外接晶振准确。,43,2.4 时钟电路,实时时钟RTC(Real Time Clock) 32768Hz实时时钟常用于钟表、实时时钟延时及其它与时间相关类产品。SPCE061A通过对32768Hz实时时钟来源分频,提供了多种实时时钟中断。如,用作唤醒的中断来源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,可作为精确的
21、计时基准。 SPCE061A 还支持RTC振荡器强振模式/自动模式的转换。,44,2.5 PLL锁相环(Phase Lock Loop),PLL的作用:将系统提供的实时时钟基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。系统预设的PLL振荡频率为24.576MHz。,45,2.6 系统时钟,32768Hz的实时时钟经PLL倍频电路后,产生系统时钟频率Fosc,Fosc再经分频得到CPU时钟频率(CPUCLK),可通过设定P_SystemClock(写)(7013H)单元来控制。预设的Fosc、CPUCLK分
22、别为24.576MHz和Fosc/8。用户可以通过对P_SystemClock单元编程完成对系统时钟和CPU时钟频率的定义。,46,2.6 系统时钟,32768Hz RTC振荡器有两种工作方式: 强振模式和自动弱振模式。 强振模式时,RTC振荡器始终运行在高耗能 的状态下。 自动弱振模式时,系统在上电复位(power on reset) 后的前7.5秒内处于强振模式, 然后自动切换到弱振模式以降低功耗。CPU 被唤醒后预设的时钟频率为Fosc/8,用户 可以根据需要调整该值。,47,2.6 系统时钟,在SPCE061A内,P_SystemClock(写 )(7013H)单元控制系统时钟和CPU
23、时钟。 第02位用来改变CPUCLK,若将第02 位设为“111”可以使CPU时钟停止工作,系 统切换至低功耗的睡眠状态; 第57位可以改变系统时钟的频率。 此外,在睡眠状态下,通过设置该单元的第4 位可以开打或关闭32768Hz实时时钟。,48,2.7 时间基准信号,简称时基信号,来自32768Hz实时时钟,通过频率选择组合而成。 时基信号产生器的频率选择TMB1,为TimerA的时钟来源B提供了各种频率选择信号,并为中断系统提供中断源(IRQ6)信号。 时基信号产生器还可通过分频产生2Hz、4Hz、1024Hz、2048Hz以及4096Hz的时基信号,为中断系统提供各种实时中断源(IRQ4
24、和IRQ5)信号。,49,2.7 时间基准信号,50,2.8 Timer定时器/计数器,SPCE061A提供了两个16位的计时/计数 器:TimerA和TimerB。 TimerA为通用计数器, TimerA的时钟源由时钟源A和B进行“与”操作而形成。 TimerB为多功能计数器,其时钟源仅为时钟源C。 定时器发生溢出后,会产生一个溢出信号(TAOUT/TBOUT),它会传送到CPU中断系统以产生定时器中断信号;此外,还可用于触发ADC输入的自动转换过程和DAC输出的数据锁存。,51,2.8 Timer定时器/计数器,52,2.8 Timer定时器/计数器,53,2.9 睡眠与唤醒,2.9.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 16 单片机 语音 嵌入式 系统
链接地址:https://www.31doc.com/p-3099438.html