资源目录
压缩包内文档预览:(预览前20页/共43页)
编号:552407
类型:共享资源
大小:1.11MB
格式:ZIP
上传时间:2015-12-05
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
毕业设计论文
- 资源描述:
-
毕业论文 语音控制模型与仿真,毕业设计论文
- 内容简介:
-
1 目 录 1 单片机系统概述 1 1 单片机系统的特点 1 2单片机技术的发展 1 3 单片机技术的 应用 2 凌阳 SPCE061A 单片机 2 1 凌阳 SPCE061A 的硬件结构 2 1 1 nSP内核结构 2 1 2 SPCE061A 存储器 2 1 3 SPCE061A 的输入 /输出接口 2 1 4 定时器 /计数器 2 2 凌阳 SPCE061A 的指令系统 2 2 1 指令的分类 2 2 2 寻址方式 3 SPCE061 精 简开发板 61 板 3 1 61板简介 3 2 61 板的硬件 结构 3 2 1 电源电路 3 2 2 音频电路 3 2 3 ICE 接口电路 3 3 凌阳语音 3 3 1 凌阳音频简介 3 3 2 常用的应用程序接口 API 3 3 3语音识别技术 3 3 4 用 61 板实现语音播放 4 智能玩具“听话精灵”的系统设计 4 1 系统概述 4 2系统的硬件设计及其原理 4 2 1语音识别原理 nts 2 4 2 2硬件电路 4 3 语音识 别程序 4.4 智能玩具的仿真调试 1 单片机系统概述 随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高科技技术之一的单片机以其体积小 、功能强 、 价格底 、 使用灵活等特点,显示出明显的优势和广泛的应用前景。在航空航天、机械加工、智能玩具、家用电器、通信系统等领域,单片机都发挥了重要作用。可以认为单片机技术已成为现代电子技术应用领域十分重要的技术之一。 1 1 单片机系统的特点 所谓单片机( Single Chip Microcomputer)是指在一块芯片 中集成有中央处理器( CPU)、存储器( RAM 和 ROM)、基本 I/O 接口以及定时器 /计数器等部件,并具有独立指令系统的智能器件,即在一块芯片上实现一台微型计算机的功能。如果是简单控制对象,只需要利用单片机作为控制核心,不需要另外增加外部设备就能完成。对于较复杂的系统,只需要对单片机进行适当扩展即可,十分方便。归纳起来,单片机及应用系统有以下特点: ( 1)单片机具有独立的指令系统。 ( 2)系统配置以满足控制对象的要求为出发点,使系统具有较高的性价比。 ( 3)系统规模小,实际应用系统简单实用,成本底,效益好。 ( 4)抗干扰能力强,可靠性高,使用方便。 ( 5)系统小巧玲珑,控制能力强,体积小,便于嵌入被控设备中。 1 2 单片机技术的发展 随着微电子技术的迅速发展,目前各个公司研制出了适合于各种领域的单片机。高性能单片机芯片市场也异常活跃,不断采用新技术,使单片机的种类,性能不断提高,应用领域不断扩大。如 ATMEL公司开发的 89C51芯片,片内含有 4KB EPROM;89C51FA 芯片,片内含 16KBEPROM;凌阳公司最近推出的 SPCE061A 芯片,片内有 32KB FLASH 和 2KB RAM,使得片内可储存量增 加,控制能力增强。这些性能的提高和改进归纳起来,有以下四个方面: 1 CPU 的改进 ( 1)采用双 CPU 结构,提高芯片的处理能力。 ( 2)增加了数据总线宽度,提高处理速度,从 8位、 16 位到 32 位 ( 3)采用流水线结构,类似于高性能的微处理器,提高了运算速度,能够实现简单的 DSP 功能,适合做数字信号处理。 ( 4)串行总线结构,将外部数据总线改为串行传送方式,提高了系统的可靠性。 2存储器的发展 增大片内存储器容量,有利于系统的可靠性。编程加密技术,达到程序保密的目的。 3.片内 I/O 接口 nts 3 ( 1)增加驱动能力,减少了外围驱动芯片的使用 ,可直接驱动 LED、 LCD等显示器等,简化了系统设计,降低了系统成本 ( 2)增加了异步串行通信口,提高了单片机系统的灵活性。 ( 3)增加了逻辑操作功能,具有位寻址操作,增加了操作和控制的灵活性。 ( 4)带有 A/D 、 D/A 转换器,直接对模拟信号输入和输出。 ( 5)并行 I/O 接口设置灵活,可以利用指令将端口的任一位设置为输入、输出、上拉、下拉和悬浮等状态 ( 6)带有 PWM 输出,可直接驱动控制小型直流电机调速,大大方便使用。 1 3 单片机系统应用 由于单片机体积小、价格低、可靠性高、使用范围大以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛的应用。目前不仅优位单片机,16 位单片机也得到了广泛的应用。如机电一体化、集散数据采集系统、分布式控制系统、 智能仪器仪表、家用电器终端及外部设备控制 。 2 凌阳 SPCE061A 单片机 SPCE061A 型单片机是凌阳科技公司最新推出的一款 16 位微处理器,具有体积小、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点,内嵌 32K 字闪存 FLASH,处理速度高,能够很方便 地完成普通单片机的功能,尤其适应于数字语音播放和识别等应用领域,是数字语音识别与语音信号处理的理想产品,得到了广泛应用。 SPCE061A 的结构比较简单,在芯片内部集成了 ICE 仿真电路接口、 FLASH 程序存储器、 SRAM 数据存储器、通用 I/O 端口、定时器 /计数器、中断控制、 CPU 时钟、模 -数转换器 A/D、 DAC 输出、通用异步串行输入输出接口、串行输入输出接口和低电压监测 /低电压复位等若干部分。各个部分之间存在着直接或间接的联系 。 2 1 凌阳 SPCE061A的硬件结构 2 1 1 nSP内核结构 SPCE061A单片机采用凌阳 nSP内核结构。 nSP内核的结构由总线、算术逻辑运算单元、寄存器组、中断系统及堆栈等部分组成。其结构如图所示: nts 4 用户寄存器 SP:堆栈指针 R1-R4:普通寄存器 BP:基指针 SR:段寄存器 NZSR:标志位 DS:数据选择字段 CS:代码选择字段 PC:程序计数器 SB:移位缓存器 内部寄存器 DR:数据寄存器 BR: B寄存器 硬件单元 ADDRGEN:地址编码器 SHIFTER:移位器 ALU:算术运算单元 图 2-1: nSP的内核 结构 1. ALU 算术逻辑运算单元 nSP的 ALU 非常有特色,除了一般基本的 16 位算术逻辑运算,还提供了结合算术逻辑的 16 位移位运算。在数字信号处理方面,提供了高速的 16 位 16 位乘法运算和内积 (乘加 )运算。 ( 1) 16位算术逻辑运算 nSP与大多数 CPU 一样,提供了基本的算术运算与逻辑操作指令,加法、减法、比较、补码、异或、或、与、测试、写入、读出等 16 位算术逻辑运算及数据传送操作。 ( 2) 结合算术逻辑的 16 位移位运算 nSP的移位运算包括:算术右移 ASR、逻辑左 移 LSL、逻辑右移 LSR、旋转左移 ROL 及旋转右移 ROR。 nSP的移位器 shifter 就串接在 ALU 的前面,也就是说,操作数在经过移位处理后,马上会进入 ALU 进行算数逻辑运算。所以, nSP的移nts 5 位指令都是复合式指令,一个指令会同时完成移位和算术逻辑运算。程序设计者可利用这些复合式的指令,撰写更精简的程序代码,进而增加程序代码密集度 (Code Density)。在微控制器应用中,如何增加程序代码密集度是非常重要的问题;提高程序代码密集度可以减少程序代码的大小,进而减少 ROM 或 FLASH 的需 求,以降低系统成本与增加执行效能。 ( 3) 16 位 16 位的乘法运算和内积 (乘加 )运算 除了普通的 16 位算数逻辑运算指令外, nSP还提供了高速的 16 位 16 位乘法运算指令 Mul和 16 位内积运算指令 Muls。二者都可以用于有符号数相乘(signed signed) 或无符号数与有符号数相乘 (unsigned signed)的运算。 其中, Mul指令只需花费 12 个时钟周期, Muls指令花费 10n+6 个时钟周期,其中 n 为乘加的项数。 2 寄存器组 nSP CPU 的寄存器组一共有 8 个 16 位寄存器,可分为通用寄存器和专用寄存器两大类别。通用寄存器包括: R1R4,作为算术逻辑运算的来源及目标寄存器。专用寄存器包括 SP、 BP、 SR、 PC,是与 CPU 特定用途相关的寄存器。 ( 1) 用寄存器 R1R4 (General-purpose registers) 可用于数据运算或传送的 ers)来源及目标寄存器。寄存器 R4、 R3 配对使用,还可组成一个 32 位的乘法结果寄存器 MR;其中 R4 为 MR 的高字符组, R3 为 MR 的低字符组,用于存放乘法运算或内积运算结果。 ( 2) 堆栈指针寄存器 SP (Stack Pointer) SP 是用来纪录堆栈地址的寄存器, SP 会指向堆栈的顶端。堆栈是一个先进后出的内存结构, nSP的堆栈结构是由高地址往低地址的方向来储存的。 CPU 执行 push、子程序调用 call、以及进入中断服务子程序 (ISR, Interrupt Service Routine) 时,会在堆栈里储存寄存器内容,这时 SP 会递减以反映堆栈用量的增加。当 CPU 执行 pop 时、子程序返回 ret、以及从 ISR 返回 reti 时, SP 会递增以反映堆栈用量的减少。 nSP堆栈的大小限制在 2K 字的 SRAM 内,即地址在0x0000000x0007FF 的内存范围中。 ( 3) 基址指针寄存器 BP (Base Pointer) nSP提供了一种方便的寻址方式,即基址寻址方式 BP+IM6;程序设计者可通过 BP 来存取 ROM 与 RAM 中的数据,包括:局部变量( Local Variable)、函数参数( FunctionParameter)、返回地址( Return Address)等等。 BP 除了上述用途外,也可做为通用寄存器 R5,用于数据运算传送的来源及目标寄存器。因此,在程序中, BP 与 R5 是共享的,均代表基址指针寄存器。 ( 4)程序寄存器 PC( Program Counter) 它的作用与一般微控制器中的 PC 相同,是用来纪录程序目前执行位置的寄存器,以控制程序走向。 CPU 每执行完一个指令,就会改变 PC 的值,使其指向下一条指令的地址。在 nSP里, 16 位的 PC 寄存器与 SR 寄存器的 CS 字段,共同组成一个22 位的程序代码地址。 ( 5) 状态寄存器 SR (Status Pointer) SR内含许多字段,每个字段都有特别的用途。其中包含两个 6 位的区段选择字段 : CS (Code Segment), DS (Data Segment),它们可与其它 16 位的寄存器结合在nts 6 一起形成一个 22 位的地址,用来寻址 4M字容量的内存。 SPCE061A只有 32K字的闪存,只占用一页的存储空间,所以 CS和 DS字段在 SPCE061A中都是设为 0。 算数逻辑运算的结果会影响 CPU 内的标志 (flag),标志的内容可以作为条件判断的依据。 nSP有四个 1 位的标志 : N、 Z、 S、 C,即 SR 寄存器中间的 4 个位( B6B9)。 3 数据总线和地址总线 nSP是 16 位单片机,它具有 16 位的数据线 和 22 位地址线。由此决定其基本数据类型是 16 位的“字”型,而不是 8 位的“字节”型;因此内存都是按“字”操作的, 22位的地址线最多可寻址到 4M 字的内存空间。地址线中的高 6 位 A16A21 来自 SR 寄存器中的 6 位的 CS 字段或是 6 位的 DS 字段,低 16 位 A0A15 则来自内部寄存器。通常,地址线的高 6 位称为内存地址的 Page Selector,简称为页码( Page);而低 16 位则称为内存地址的偏移量( Offset)。 nSP通过对区段( Segment)的编码来实现内存分页的检索,即是 说 Segment的含义与 Page的含义是相等的。因而,通过 Segment与 Offset的配合即可产生 22 位地址。 2 1 2 SPCE061A 存储器 SPCE061A单片机片内存储器地址映射表如图 2-2所示,单片机的存储器有 2K的 SRAM(包括堆栈区)和 32K闪存 FLASH。 0X0000 0X07FF 0X0800 0X6FFF 0X7000 0X7FFF 0X8000 0XFFF5 0XFFF6 0XFFFF 图 2-2: SPCE061A内存映射表 1 RAM SPCE061A 有 2K 字的 SRAM(包括堆栈区 ),其地址范围从 0x0000 到 0x07FF。前 64 个字,即 0x0000 0x003F 地址范围内,可采用 6 位地址直接地址寻址方法,存取速度为 2 个 CPU 时钟周期;其余范围内 (0x0040 0x07FF)内存的存取速度则为 3 个 CPU时钟周期。 2 堆栈 SP 是用来记录堆栈地址的寄存器, SP 会指 向堆栈的顶端。堆栈是一个先进后出的内存结构, nSP的堆栈结构是由高地址往低地址的方向来储存的。 CPU 执行 push、子程序呼叫 call、以及进入中断服务子程序 (ISR, Interrupt Service 2K SRAM 保留空间 I/O端口 系统端口 32K FLASH ROM 中断向量 nts 7 Routine) 时,会储存寄存器内容在堆栈里,这时 SP 会递减以反映堆栈用量的增加。当 CPU 执行 pop、子程序返回 ret、以及从 ISR 返回 reti 时, SP 会递增以反映堆栈用量的减少。 nSP堆栈的大小限制在 2K 字的 SRAM 内,即地址为0x0000000x0007FF 的内存范围中。 SPCE061A 系统复位后, SP 初始化为 0x07FF,每执行 push 指令一次, SP 指针减一。 PUSH后 SP减一 0X07ff 堆栈生长方向 POP后 SP加一 0X0000 图 2-3: 堆栈生成方向 3 闪存 FLASH 32K字片内 Flash存储器被划分为 128页(每页存储容量为 256字),在 CPU正常运行状态下均可通程序擦除或写入。全部 32K字 Flash存储器均可在 ICE工作方式下被编程写入或被擦除。 2 1 3 SPCE061A的输入 /输出接口 输入 /输出接口(也可简称为 I/O口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。输出端口负责向外界输送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。 nSP内有并行和串行两种方式的 I/O口。并行口线路成本较高,但是传输速率也很高;与并行口相比,串行口的传输速率较低但可以节省大量的线路成本。 SPCE061A有两nts 8 个 16位通用的并行 I/O口: A口和 B口。这两个口的每一位 都可通过编程单独定义成输入或输出口。 A口的 IOA0IOA7用作输入口时具有唤醒功能,即具有输入电平变化引起 CPU中断功能。在那些用电池供电、追求低能耗的应用场合,可以应用 CPU的睡眠模式(通过软件设置)以降低功耗,需要时以按键来唤醒 CPU,使其进入工作状态。例如:手持遥控器、电子字典、 PDA、计算器、移动电话等。 1 I/O 端口结构 SPCE061A提供了位控制结构的 I/O端口,每一位都可以被单独定义用于输入或输出数据。通常,对某一位的设定包括以下 3个基本项:数据向量 Data、属性向量Attribution和方向控制向量 Direction。 3个端口内每个对应的位组合在一起,形成一个控制字,用来定义相应 I/O口位的输入输出状态和方式。例如,假设需要 IOA0是下拉输入管脚,则相应的 Data、 Attribution和 Direction的值均被置为“ 0”。如果需要 IOA1是带唤醒功能的悬浮式输入管脚,则 Data、 Attribution和 Direction的值被置为“ 010”。与其它的单片机相比,除了每个 I/O端口可以单独定义其状态外,每个对应状态下的 I/O端口性质电路都是 内置的,在实际的电路中不需要再次 外接。例:设端口 A口为带下拉电 阻的输入口,在连接硬件时无需在片外接下拉电路。 A口和 B口的 Data、 Attribution和 Direction的设定值均在不同的寄存器里,用户在进行 I/O口设置时要特别注意这一点。 I/O端口的组合控制设置如表所示: 表 2-1: 端口的组合控制设置 方向 属性 数据 功能 带唤醒 功能 功能描述 0 0 0 下拉 是 带下拉电阻的输入引脚 0 0 1 上拉 是 带上拉电阻的输入引脚 0 1 0 高阻 是 高阻态输入引脚 0 1 1 高阻 否 高阻 态输入引脚 1 0 0 高电平输出(带数据反相器) 否 带数据反相器的高电平 输输出 (当数据位写入 0时,输出 1) 1 0 1 低电平输出(带数据反相器) 否 带数据反相器的低电平输出 (当数据位写入 1时,输出 0) 1 1 0 低电平输出 否 带数据缓存器的低电平输出 (无数据反相功能) 1 1 1 高电平输出 否 带数据缓存器的 高 电平输出 (无数据反相功能) 注: nts 9 *: 口位默认为带下拉电阻的输入管脚; * *:只有当 IOA 70内位的控制字为 000, 001和 010时, 相应位才具 有唤醒的功能。 图 2-5: I/O结构 2 A口寄存器 ( 1) P_IOA_Data(读 /写 )(7000H) A口的数据单元,用于向 A口写入或从 A口读出数据。当 A口处于输入状态时,读出是读 A口管脚电平状态; 写入是将数据写入 A口的数据寄存器。当 A口处于输出状态时,写入输出数据到 A口的数据寄存器。 ( 2) P_IOA_Buffer (读 /写 ) (7001H) A口的数据缓冲寄存器写入或从该寄存器读出数据。当 A口处于输入状态时,是将 A 口的数据写入 到 A口的数据寄存器;读出则是从 A 口数据寄存器内读其数值。当 A 口处于输出状态时,写入输出数据到 A 口的数据寄存器。 ( 3) P_IOA_Dir(读 /写 )(7002H) A口的方向向量单元,用于用来设置 A口是输入还是输出,该方向控制向量寄存器可以写入或从该寄存器内读出方向控制向量。 Dir位决定了口位的输入 /输出方向:即 0为输入, 1为输出。 ( 4) P_IOA_Attrib(读 /写 )(7003H) A口的属性向量单元,用于 A口属性向量的设置。 ( 5) P_IOA_Latch(读 )(7004H) A口的锁存寄存器,该单元以锁存 A口上的输入数据,用于进入睡眠状态前的触键唤醒功能的启动。 3 B口寄存器 nts 10 ( 1) P_IOB_Data(读 /写 )(7005H) B口的数据单元,用于向 B口写入或从 B口读出数据。当 B口处于输入状态时,读出是读 B口管脚电平状态; 写入是将数据写入 B口的数据寄存器。当 B口处于输出状态时,写入输出数据到 B口的数据寄存器。 ( 2) P_IOB_Buffer(读 /写 )(7006H) B口的数据向量单元,用于向数据寄存器写入或从该寄存器内读出数据。当 B口处于输入状态时,写入是将数据写入 B口的数据寄存器;读出则是从 B口数据寄存器里读其数值。当 B口处于输出状态时,写入数据到 B口的数据寄存器。 ( 3) P_IOB_Dir(读 /写 )(7007H) B口的方向向量单元,用于设置 IOB口的状态。 0为输入, 1为输出。 ( 4) P_IOB_Attrib(读 /写 )(7008H) B口的属性向量单元,用于设置 IOB口的属性。 2 1 4 定时器 /计数器 SPCE061A提供了两个 16位的定时 /计数器: TimerA和 TimerB。 TimerA为通用计数器; TimerB为多功能计数器。 TimerA的时钟源由时钟源 A和时钟源 B进行“与”操作而形成; TimerB的时钟源仅为时钟源 A。 TimerA的结构如图 2-6所示, TimerB的结构如图 2-7所示。 定时器发生溢出后会产生一个溢出信号 (TAOUT/TBOUT)。一方面,它会作为定时器中断信号传输给 CPU中断系统;另一方面,它又会作为 4位计数器计数的时钟源信号,输出一个具有 4位可调的脉宽调制占空比输出信号 APWMO或 BPWMO(分别从 IOB8 和IOB9输出 ),可用来控制马达或其它一些设备的速度。此外,定时器溢出信号还可以用于触发 ADC输入的自 动转换过程和 DAC输出的数据锁存。 向定时器的 P_TimerA_Data(读 /写 )(700AH)单元或 P_TimerB_Data(读 /写 )(700CH)单元写入一个计数值 N后,选择一个合适的时钟源,定时器 /计数器将在所选的时钟频率下开始以递增方式计数 N, N+1, N+2, 0xFFFE, 0xFFFF。当计数达到 0xFFFF后,定时器 /计数器溢出,产生中断请求信号,被 CPU响应后送入中断控制器进行处理。同时, N值将被重新载入定时器 /计数器并重新开始计数。 写入 P_TimerA_Ctrl(700BH)单元的第 69位,可选择设置 APWMO输出波形的脉宽占空比;同理,写入 P_TimerB_Ctrl(700DH)单元的第 69位,便可选择设置 BPWMO输出波形的脉宽占空比。 时钟源 A是高频时钟源,来自带锁相环的晶体振荡器输出 Fosc;时钟源 B的频率来自 32768Hz实时时钟系统,也就是说,时钟源 B可以作为精确的计时器。例如,2Hz定时器可以作为实时时钟的时钟源。 nts 11 图 2-6: TimerA结构 图 2-7: TimerB结构 从上面的结构我们可以看出时钟源 A是一个高频时钟源,时钟源 B是一个低频时钟nts 12 源。时钟源 A和时钟源 B的组合,为 TimerA提供了多种计数速度。若以 ClkA作为门控信号, 1表示允许时钟源 B信号通过,而 0则表示禁止时钟源 B信号通过而停止 TimerA的计数。 例如,如果时钟源 A为“ 1”, TimerA时钟频率将取决于时钟源 B;如果时钟源 A为“ 0”,将停止 TimerA的计数。 EXT1和 EXT2为外部时钟源。 寄存器 : ( 1) P_TimerA_Data(读 /写 )(700AH) TimerA的数据单元,用于向 16位预置寄存器写入数据 (预置计数初值 )或从其中读取数据。在写入 数值以后,计数器便会在所选择的频率下进行加一计数,直至计数到 0xFFFF产生溢出。 .溢出后 P_TimerA_Data中的值将会被重置,再以置入的值继续加一计数。 ( 2) P_TimerA_Ctrl(写 )(700BH) TimerA的控制单元如表所示。用户可以通过设置该单元的第 05位来选择 TimerA的时钟源 (时钟源 A、 B)。设置该单元的第 69位(如表 2-3所示), TimerA将输出不同频率的脉宽调制信号,即对脉宽占空比输出 APWMO进行控制。 表 2-2: P_TimerA_Ctrl单元 B15-B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 占空比的设置 时钟源 B选择位 时钟源 A选择位 表 2-3: 设置 B6-B9位 B9 B8 B7 B6 脉冲占空比( APWMO) TAON 1 0 0 1 9/16 1 1 0 1 0 10/16 1 1 0 1 1 11/16 1 1 1 0 0 12/16 1 1 1 0 1 13/16 1 1 1 1 0 14/16 1 1 1 1 1 TAOUT触发信号 1 0 0 0 0 关断 0 0 0 0 1 1/16 1 0 0 1 0 2/16 1 0 0 1 1 3/16 1 0 1 0 0 4/16 1 0 1 0 1 5/16 1 0 1 1 0 6/16 1 0 1 1 1 7/16 1 1 0 0 0 8/16 1 nts 13 注: 1: TAON是 TimerA(APWMO)的脉宽调制信号输出允许位,默认值为“ 0”,当 TimerA的第 69位不全为零时 TAON=1; 2: TAOUT是 TimerA的溢出信号,当 TimerA的计数从 N达到 0xFFFF 后 (用户通过设置 P_TimerA_Data (写 )(700AH)单元指定 N值 ),发生计数溢出。产生的溢出信号可以作为 TimerA的中断信号被送至中断控制系统;同时 N值将被重新载入预置寄存器,使 Timer重新开始计数。 TAOUT触发信号 (TAOUT/2)的占空比为 50%,频率为 FTAOUT/2,其它输入信号的频率为 FTAOUT/16。 表 2-4: 设置 b0 b2 表 2-5: 设置 b3 b5位 注: *代表默认值为 1。若以 ClkA作为门控信号, 1表 示允许时钟源 B信号通过,而 0则表示禁止时钟源 B信号通过而停止 TimerA的计数。如果时钟源 A为 1, TimerA时钟频率将取决于时钟源 B;如果时钟源 A为 0,将停止 TimerA的计数。 ( 3) P_TimerB_Data(读 /写 )(700CH) TimerB的数据单元,用于向 16位预置寄存器写入数据 (预置计数初值 )或从其中读取数据。写入数据后,计数器就会以设定的数值往上累加直至溢出。计数初值的计 算方法和 TimerA相同。 ( 4) P_TimerB_Ctrl(写 )(700DH) TimerB的控制单元(如表 2-6所示)。用户可以通过设置该单元的第 02位来选择 TimerB的时钟源。设置第 69位, TimerB将输出不同频率的脉宽调制信号,即对 脉宽占空比输出 BPWMO进行控制。 表 2-6: 设置 P_TimerB_Ctrl单元 nts 14 表 2-7: B6-B9位 注: 1: TBON是 TimerB(BPWMO)的脉宽调制信号输出允许位,默认值为 0; 2: TBOUT是 TimerB的溢出信号,当 TimerB的计数从 N达到 0xFFFF 后 (用户 通过设置 P_TimerB_Data (写 )(700CH)单元指定 N值 ),发生计数溢出。产生的溢出信号可以作为 TimerB的中断信号被送至中断控制系统;同时 N值将被重新载入预置寄存器,使 Timer重新开始计数。 TBOUT触发信号 (TBOUT/2)的占空比为 50%,频率为FTBOUT/2,其它输入信号的频率为 FTFTBOUT/16。 2 2 凌阳 SPCE061A 的指令系统 指令是 CPU执行某种操作的命令。微处理器 (MPU)或微控制器 (MCU)所能识别全部指令的集合称为指令系统或指令集。指令系统是制造厂家在设计 CPU时所赋予它的功能,用户必须正确的书写和使用指令。因此学习和掌握指令的功能与应用非常重要,是程序设计的基础。 2 2 1指令的分类 nSP单片机指令按其功能可划分为: 1) 数据传送指令,包括立即数到寄存器、寄存器到寄存器、寄存器到存储器存储器nts 15 到寄存器的数据传送操作; 2) 算术运算,包括加、减、乘运算; 3) 逻辑运算,包括与、或、异或、测试、移位等操作; 4) 转移指令,包括条件转移、无条件转移、中断返回、子程序调用等操作; 5) 控制指令,如开中断、关中断、 FIR滤波器的数据的自由 移动等操作。 2 2 2 寻址方式 可分为以下几类: 立即数寻址 这种寻址方式是操作数以立即数的形式出现,例如: R1 = 0x1234,是把 16进制数 0x1234赋给寄存器 R1。 存储器绝对寻址 这种寻址方式是通过存储器地址来访问存储器中的数据,例如:R1 = 0x2222,访问 0x2222单元的数据。 寄存器寻址 这种寻址方式是操作数在寄存器中,例如: R1 = R2,是把寄存器 R2 中的数据赋给寄存器 R1。 寄存器间接寻址 这种寻址方式是操作数的地址由寄存器给出,例如 : R1 = BP,是把由 BP指向的内存单元的数据送寄存器 R1。 变址寻址 这种寻址方式下,操作数的地址由基址和偏移量共同给出,例如: R1 = BP+0x34。 符号约定 表 2-7: 指令系统符号的统一约定 nts 16 3 SPCE061 精简开发板 61 板 3 1 61 板简介 SPCE061A 精简开发板(简称 61 板),是以凌阳 16位单片机 SPCE061A 为核心的精简开发仿真 实验板,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设 计的,也可作为单片机项目初期研发使用。 61板的结构和功能: 61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含 MIC输入部分和 DAC音频输出部分)、复位电路等,采用电池供电,方便随身携带。 61板上有调试器接口( Probe接口)以及下载线( EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线, 配合 unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。图 3.1是 61板( V1.6版)的实物图 。 nts 17 图 3-1: 61板的实物图 3 2 61板的硬件结构 61板的硬件结构框图如图 3-2: 图 3-2: 61板的硬件结构框图 上图中的各部分硬件说明如表 3-1所示。 nts 18 61板各部分硬件说明 如下。 表 3-1: 61板各硬件部分说明 61板的硬件电路大体上可分为 SPCE061A最小系统、电源电路、音频电路、 ICE接口等模块,下面分别介绍 61板的各部分电路。 SPCE061A最小系统中,包括 SPCE061A芯片及其外围的基本模块,其中外围的基本模块有:晶振输入模块( OSC)、锁相环外围电路( PLL)、复位电 路( RESET)、指示灯( LED)等 。 3.2.1 电源电路 如图 3-3所示是电源部分的电路,由电池盒提供的 4.5V直流电压经过 SPY0029后产生 3.3V给整个系统供电。 SPY0029是凌阳公司设计的电压调整 IC,采用 CMOS工艺,具有静态电流低、驱动能力强、线性调整出色等特点。 图中的 VDDH3为 SPCE061A的 I/O电平参考,如果该点接 SPCE061A( PLCC84封装,下面的介绍中当出现 SPCE061A的引脚描述时,均指此封装的芯片)的 51脚,可使 I/O输出高电平为 3.3V; VDDP为 PLL锁相 环电源,接 SPCE061A的 7脚; VDD和 VDDA分别为数字电源与模拟电源,分别接 SPCE061A的 15脚和 36脚; AVSS1是模拟地,接 SPCE061A的 24脚; VSS是数字地,接 SPCE061A的 38脚; AVSS2接音频输出电路的 AVSS2。 nts 19 图 3-3:电源电路图 3.2.2音频电路 音频电路由音频输出和音频输入两部分组成。图 3-4是音频输出电路图。 SPCE061A内置 2路 10位精度的 DAC,只需要外接功放电路即可完成语音的播放。图中的 SPY0030是凌阳的一款音频放大芯片 可以工作在 2.46V范围内,最大输出功率可达 700mW。 图 3-4:音频输出电路 SPCE061A芯片中已经集成了音频输入专用 ADC以及 AGC放大电路,因此芯片外部的电路比较简单,图 3-5是 61板的音频输入电路模块。 nts 20 图 3-5:音频输入模块 3.2.3 ICE接口电路 SPCE061A芯片内部集成了 ICE(在线仿真)接口, PC机通过 Probe(在线调试器)或EZ_Probe(简易下载线)与 61板相连,就可以方便地完成程序的下载、调试等。 61板为 Probe和 EZ_Probe各自提供 了一组接口,可通过 S5跳线来选择使用的接口类型。ICE接口部分电路如图 3-6所示。 nts 21 图 3-6: ICE 接口电路 3 3 凌阳语音 3 3 1 凌阳音频简介 1背景介绍 音频的概述。要了解音频首先要明确音频的特点及分类 我们所说的音频是指频率在 20 Hz 20 kHz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。语音是对讲话声音的一次抽象。是语言的 载体,是人类社会特有的一种信息系统,是社会交际工具的符号。音乐与语音相比更规范一些,是符号化了的声音。但音乐不能对所有的声音进行符号化。乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容。 2压缩分类 压缩分为有损压缩和无损压缩。无损压缩一般指磁盘文件压缩比低( 2: 1 4:1);有损压缩指语音、视频文件,压缩比高( 100: 1)。 凌阳音频压缩算法根据不同的压缩比分为以下几种(以压缩 8KB16 位的 WAVE文件为例): nts 22 SACM-A2000 压缩比为 8: 1, 8: 1 25, 8: 1 5; SACM-S480 压缩比为 80: 3, 80: 4 5; SACM-S240 压缩比为 80: 1 5。 音质排序为: A2000 S480 S240。 3常用的音频形式和压缩算法 ( 1)波形编码 波形编码采用子带编码技术( SBC, Sub-Band Coding)压缩算法SACM-A2000。特点是语音质量高,编码率高,适用于高保真语音和音乐。 ( 2)参量编码 参量编码采用压缩算法 SACM-S240。特点是压缩比高,计算量大,音质一般,价格低廉。 ( 3)混合编码 混合编码采用压缩算法 SACM-S480。特点为综合了参量编码和波形编码的优点。除此之外,还具有 FM 音乐合成式即 SACM-MS01 等。 凌阳 SPCE061A 是 16 位单片机,具有 DSP 功能,有很强的信息处理能力,最高时钟可达到 49MHZ,具备运算速度高的优势。这无疑为语音的录制、播放、合成及识别提供了条件。 凌阳压缩算法中 SACM-A2000, SACM-S480, SACM-S240 主要是用来放音,可用于语音提示; DVR 则用来录放音。语音合成( MS01)算法较烦琐,还需要具备音乐理论配器法和声学知识。 3.3.2 常用的应用程序接口 API 下表所列出的是凌阳音频的几种算法。 表 3-2: SACM-lib 库中模块及其算法类型 模块名称( Model-Index) 语音压缩编码率 采样速率 /KHZ SACM-A2000 16KB/S, 20KB/S, 24 KB/S 16 SACM-S480/S720 4 8 KB/S, 7 2 KB/S 16 SACM-S240 2 4 KB/S 24 SACM-MS01 音乐合成( 16 KB/S, 20 KB/S,24 KB/S) 16 SACM-DVR 16 KB/S 数据率, 8KB 的采样率,用于 ADC 通道录音功能 16 语音和音乐与我们的生活有着密切的关系,而单片机对语音的控制如录放音、合成及辨识也广泛应用于生活中。我们知道对于语音处理大致可以分为 A/D、编码处理、存储、解码处理以及 D/A 等。然而,麦克输入所生成的 WAVE 文件,其占用的空间很大,对于单片机来说想要存储大量的信息显然是不可能的,而凌阳的 SPCE061Ants 23 提出了解决的方法,即 SACM-LIB,该库将 A/D、编码、解码、存储及 D/A 做成相应的模块,对于每个 模块都有其应用程序接口 API,所以只需要了解每个模块所要实现的功能及其参数的内容,然后调用该 API 函数即可实现该功能,例如,在程序中插入语音提示,或连续播放一段语音或音乐,也可以根据自己需要的空间或使用范围选择适合自己的算法。 图 3-7:单片机对语音处理过程 以下就不同的算法简要介绍各自的 API 函数的格式和功能 2 SACM-A2000 SACM-A2000 压缩算法具有压缩比较小、语音质量高、传输码率高的特点,适用于高保真音乐和语音。 相关 API 函数: Void SACM-A2000-Initial( int Init-Index) /初始化 Void SACM-A2000-ServiceLoop( void) /获取语音数据填入译码队列 Void SACM-A2000-Play( int Speech-Index, int Channel, intRamp-Set) /播放 Void SACM-A2000-Stop( void) /停止播放 Void SACM-A2000-Pause( void) /暂停播放 Void SACM-A2000-Resume( void) /暂停后恢复 nts 24 Void SACM-A2000-Volume( Volume- Index) /音量控制 Unsigned int SACM-A2000-Status( void) /获取模块状态 Void SACM-A2000-InitDecode( int Channel) /译码初始化 Void SACM-A2000-Decode( void) /译码 Void SACM-A2000-FillQueue( unsigned int encoded-data) /填充队列 Unsigned int SACM-A2000-TestQueue( void) /测试队列 Call F-FIQ-Service-SACM-A2000 /中断服务函数 3 SACM-S480 该压缩算法压缩比较大 80:3, 存储容量大 ,音质介于 A2000和 S240之间 ,适用于语音播放 , 如“文曲星”词库。 其相关 API函数如下所示: int SACM_S480_Initial(int Init_Index) /初始化 void SACM_ S480_ServiceLoop(void) /获取语音资料,填入译码队列 void SACM_ S480_Play(int Speech_Index, int Channel, int Ramp_Set) / 播放 void SACM_ S480_Stop(void) /停止播放 播放 void SACM_S480_Pause (void) /暂停播放 void SACM_S480_Resume(void) /暂停后恢复 void SACM_S480_Volume(Volume_Index) /音量的控制 unsigned int SACM_S480_Status(void) /获取模块的状态 Call F_FIQ_Service_ SACM_S480 /中断服务函数 4 SACM-S240 该压缩算法的压缩比较大 80:1.5,价格低 ,适用于对保真度要求不高的场合 , 如玩具类产品的批量生产,编码率仅为 2.4 Kbps。 其相关 API函数如下所示: int SACM_S240_Initial(int Init_Index) / 初始化 void SACM_ S240_ServiceLoop(void) / 获取语音资料,填入译码队列 void SACM_ S240_Play(int Speech_Index, int Channel, int Ramp_Set) / 播放 void SACM_ S240_Stop(void) / 停止播放 void SACM_S240_Pause (void) / 暂停播放 void SACM_S240_Resume(void) / 暂停后恢复 void SACM_S240_Volume(Volume_Index) / 音量控制 nts 25 unsigned int SACM_S240_Status(void) / 获取模块状态 Call F_FIQ_Service_ SACM_S240 /中断服务函数 3 3 3 语音识别技术 语音辨识技术有三大研究范围:口音独立、连续语音及可辨认字词数量。 口音独立: 1)早期只能辨认特定的使用者即特定语者 (Speaker Dependent, SD)模式,使用者可针对特定语者辨认词汇 (可由使用者自行定义,如人名声控拨号 ),作简单快速的训练纪录使用者的声音特性来加以辨认 。随着技术的成熟,进入语音适应阶段SA(speaker adap
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。