《毕业设计(论文)语音控制模型与仿真.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)语音控制模型与仿真.doc(43页珍藏版)》请在三一办公上搜索。
1、目 录1 单片机系统概述 11 单片机系统的特点 12单片机技术的发展 13单片机技术的应用2 凌阳SPCE061A单片机 21 凌阳SPCE061A的硬件结构 211nSP内核结构 212 SPCE061A存储器213 SPCE061A的输入/输出接口 214定时器/计数器22 凌阳SPCE061A的指令系统 221指令的分类 222 寻址方式3 SPCE061 精简开发板61板31 61板简介 32 61板的硬件结构 321 电源电路322 音频电路323 ICE接口电路33 凌阳语音331 凌阳音频简介332 常用的应用程序接口API333语音识别技术334 用61板实现语音播放4 智能
2、玩具“听话精灵”的系统设计 41 系统概述42系统的硬件设计及其原理421语音识别原理 422硬件电路 43 语音识别程序4.4 智能玩具的仿真调试1单片机系统概述随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高科技技术之一的单片机以其体积小、功能强、价格底、使用灵活等特点,显示出明显的优势和广泛的应用前景。在航空航天、机械加工、智能玩具、家用电器、通信系统等领域,单片机都发挥了重要作用。可以认为单片机技术已成为现代电子技术应用领域十分重要的技术之一。11单片机系统的特点所谓单片机(Single Chip Microcomputer)
3、是指在一块芯片中集成有中央处理器(CPU)、存储器(RAM和ROM)、基本I/O接口以及定时器/计数器等部件,并具有独立指令系统的智能器件,即在一块芯片上实现一台微型计算机的功能。如果是简单控制对象,只需要利用单片机作为控制核心,不需要另外增加外部设备就能完成。对于较复杂的系统,只需要对单片机进行适当扩展即可,十分方便。归纳起来,单片机及应用系统有以下特点:(1)单片机具有独立的指令系统。(2)系统配置以满足控制对象的要求为出发点,使系统具有较高的性价比。(3)系统规模小,实际应用系统简单实用,成本底,效益好。(4)抗干扰能力强,可靠性高,使用方便。(5)系统小巧玲珑,控制能力强,体积小,便于
4、嵌入被控设备中。12单片机技术的发展 随着微电子技术的迅速发展,目前各个公司研制出了适合于各种领域的单片机。高性能单片机芯片市场也异常活跃,不断采用新技术,使单片机的种类,性能不断提高,应用领域不断扩大。如ATMEL公司开发的89C51芯片,片内含有4KB EPROM;89C51FA芯片,片内含16KBEPROM;凌阳公司最近推出的SPCE061A芯片,片内有32KB FLASH和2KB RAM,使得片内可储存量增加,控制能力增强。这些性能的提高和改进归纳起来,有以下四个方面:1CPU的改进(1)采用双CPU结构,提高芯片的处理能力。 (2)增加了数据总线宽度,提高处理速度,从8位、16位到3
5、2位(3)采用流水线结构,类似于高性能的微处理器,提高了运算速度,能够实现简单的DSP功能,适合做数字信号处理。(4)串行总线结构,将外部数据总线改为串行传送方式,提高了系统的可靠性。2存储器的发展增大片内存储器容量,有利于系统的可靠性。编程加密技术,达到程序保密的目的。3.片内I/O接口 (1)增加驱动能力,减少了外围驱动芯片的使用 ,可直接驱动LED、LCD等显示器等,简化了系统设计,降低了系统成本 (2)增加了异步串行通信口,提高了单片机系统的灵活性。(3)增加了逻辑操作功能,具有位寻址操作,增加了操作和控制的灵活性。(4)带有A/D 、D/A转换器,直接对模拟信号输入和输出。(5)并行
6、I/O接口设置灵活,可以利用指令将端口的任一位设置为输入、输出、上拉、下拉和悬浮等状态(6)带有PWM输出,可直接驱动控制小型直流电机调速,大大方便使用。13 单片机系统应用 由于单片机体积小、价格低、可靠性高、使用范围大以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛的应用。目前不仅优位单片机,16位单片机也得到了广泛的应用。如机电一体化、集散数据采集系统、分布式控制系统、 智能仪器仪表、家用电器终端及外部设备控制。2 凌阳SPCE061A单片机 SPCE061A型单片机是凌阳科技公司最新推出的一款16位微处理器,具有体积小、集成度高、易扩展、可靠性高、功耗低、结构简单、中
7、断处理能力强等特点,内嵌32K字闪存FLASH,处理速度高,能够很方便地完成普通单片机的功能,尤其适应于数字语音播放和识别等应用领域,是数字语音识别与语音信号处理的理想产品,得到了广泛应用。SPCE061A的结构比较简单,在芯片内部集成了ICE仿真电路接口、FLASH程序存储器、SRAM数据存储器、通用I/O端口、定时器/计数器、中断控制、CPU时钟、模-数转换器A/D、DAC输出、通用异步串行输入输出接口、串行输入输出接口和低电压监测/低电压复位等若干部分。各个部分之间存在着直接或间接的联系。21 凌阳SPCE061A的硬件结构211nSP内核结构 SPCE061A单片机采用凌阳nSP内核结
8、构。nSP内核的结构由总线、算术逻辑运算单元、寄存器组、中断系统及堆栈等部分组成。其结构如图所示:用户寄存器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 位乘法运算和内积(
9、乘加)运算。(1)16位算术逻辑运算nSP与大多数CPU 一样,提供了基本的算术运算与逻辑操作指令,加法、减法、比较、补码、异或、或、与、测试、写入、读出等16 位算术逻辑运算及数据传送操作。(2) 结合算术逻辑的16 位移位运算nSP的移位运算包括:算术右移ASR、逻辑左移LSL、逻辑右移LSR、旋转左移ROL 及旋转右移ROR。nSP的移位器shifter 就串接在ALU 的前面,也就是说,操作数在经过移位处理后,马上会进入ALU 进行算数逻辑运算。所以,nSP的移位指令都是复合式指令,一个指令会同时完成移位和算术逻辑运算。程序设计者可利用这些复合式的指令,撰写更精简的程序代码,进而增加程
10、序代码密集度(Code Density)。在微控制器应用中,如何增加程序代码密集度是非常重要的问题;提高程序代码密集度可以减少程序代码的大小,进而减少ROM 或FLASH 的需求,以降低系统成本与增加执行效能。(3)16 位16 位的乘法运算和内积(乘加)运算除了普通的16 位算数逻辑运算指令外,nSP还提供了高速的16 位 16 位乘法运算指令Mul和16 位内积运算指令Muls。二者都可以用于有符号数相乘(signed signed) 或无符号数与有符号数相乘(unsigned signed)的运算。其中,Mul指令只需花费12 个时钟周期,Muls指令花费10n+6 个时钟周期,其中n
11、为乘加的项数。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 是用
12、来纪录堆栈地址的寄存器,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提供
13、了一种方便的寻址方式,即基址寻址方式BP+IM6;程序设计者可通过BP 来存取ROM 与RAM 中的数据,包括:局部变量(Local Variable)、函数参数(FunctionParameter)、返回地址(Return Address)等等。BP 除了上述用途外,也可做为通用寄存器R5,用于数据运算传送的来源及目标寄存器。因此,在程序中,BP 与R5 是共享的,均代表基址指针寄存器。(4)程序寄存器PC(Program Counter)它的作用与一般微控制器中的PC 相同,是用来纪录程序目前执行位置的寄存器,以控制程序走向。CPU 每执行完一个指令,就会改变PC 的值,使其指向下一条指令
14、的地址。在nSP里,16 位的PC 寄存器与SR 寄存器的CS 字段,共同组成一个22 位的程序代码地址。(5)状态寄存器SR (Status Pointer)SR内含许多字段,每个字段都有特别的用途。其中包含两个6 位的区段选择字段: CS (Code Segment),DS (Data Segment),它们可与其它16 位的寄存器结合在一起形成一个22 位的地址,用来寻址4M字容量的内存。SPCE061A只有32K字的闪存,只占用一页的存储空间,所以CS和DS字段在SPCE061A中都是设为0。算数逻辑运算的结果会影响CPU 内的标志(flag),标志的内容可以作为条件判断的依据。nSP
15、有四个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通过对区段
16、(Segment)的编码来实现内存分页的检索,即是说Segment的含义与Page的含义是相等的。因而,通过Segment与Offset的配合即可产生22 位地址。212 SPCE061A存储器 SPCE061A单片机片内存储器地址映射表如图2-2所示,单片机的存储器有2K的SRAM(包括堆栈区)和32K闪存FLASH。 2K SRAM保留空间I/O端口系统端口32K FLASH ROM中断向量0X0000 0X07FF0X08000X6FFF0X70000X7FFF0X80000XFFF50XFFF60XFFFF图2-2:SPCE061A内存映射表1 RAM SPCE061A 有2K 字的S
17、RAM(包括堆栈区),其地址范围从0x0000 到0x07FF。前64 个字,即0x00000x003F 地址范围内,可采用6 位地址直接地址寻址方法,存取速度为2 个CPU 时钟周期;其余范围内(0x00400x07FF)内存的存取速度则为3 个CPU时钟周期。 2堆栈SP 是用来记录堆栈地址的寄存器,SP 会指向堆栈的顶端。堆栈是一个先进后出的内存结构,nSP的堆栈结构是由高地址往低地址的方向来储存的。CPU 执行push、子程序呼叫call、以及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会储存寄存器内容在堆栈里,这时SP 会递减以反映堆栈用量的
18、增加。当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工作方式下
19、被编程写入或被擦除。213 SPCE061A的输入/输出接口 输入/输出接口(也可简称为I/O口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。输出端口负责向外界输送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。nSP内有并行和串行两种方式的I/O口。并行口线路成本较高,但是传输速率也很高;与并行口相比,串行口的传输速率较低但可以节省大量的线路成本。SPCE061A有两个16位通用的并行I/O口:A口和B口。这两个口的每一位都可通过编程单独定义成输入或输出口。 A口的IOA0IOA7用作输入口时具有唤醒功能,即具有输入电平变化引起CPU中断
20、功能。在那些用电池供电、追求低能耗的应用场合,可以应用CPU的睡眠模式(通过软件设置)以降低功耗,需要时以按键来唤醒CPU,使其进入工作状态。例如:手持遥控器、电子字典、PDA、计算器、移动电话等。 1I/O 端口结构 SPCE061A提供了位控制结构的I/O端口,每一位都可以被单独定义用于输入或输出数据。通常,对某一位的设定包括以下3个基本项:数据向量Data、属性向量Attribution和方向控制向量Direction。3个端口内每个对应的位组合在一起,形成一个控制字,用来定义相应I/O口位的输入输出状态和方式。例如,假设需要IOA0是下拉输入管脚,则相应的Data、Attributio
21、n和Direction的值均被置为“0”。如果需要IOA1是带唤醒功能的悬浮式输入管脚,则Data、Attribution和Direction的值被置为“010”。与其它的单片机相比,除了每个I/O端口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是 内置的,在实际的电路中不需要再次外接。例:设端口A口为带下拉电 阻的输入口,在连接硬件时无需在片外接下拉电路。 A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O口设置时要特别注意这一点。I/O端口的组合控制设置如表所示:表2-1:端口的组合控制设置 方向属性数据功能带唤醒功能
22、功能描述000下拉是带下拉电阻的输入引脚001上拉是带上拉电阻的输入引脚010高阻是高阻态输入引脚011高阻否高阻态输入引脚100高电平输出(带数据反相器)否带数据反相器的高电平输输出(当数据位写入0时,输出1)101低电平输出(带数据反相器)否带数据反相器的低电平输出(当数据位写入1时,输出0)110低电平输出否带数据缓存器的低电平输出(无数据反相功能)111高电平输出否带数据缓存器的高电平输出(无数据反相功能)注: *: 口位默认为带下拉电阻的输入管脚; * *:只有当IOA 70内位的控制字为000,001和010时, 相应位才具有唤醒的功能。 图2-5: I/O结构2A口寄存器(1)P
23、_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口是输入还是输出,该方向控
24、制向量寄存器可以写入或从该寄存器内读出方向控制向量。Dir位决定了口位的输入/输出方向:即0为输入,1为输出。 (4)P_IOA_Attrib(读/写)(7003H) A口的属性向量单元,用于A口属性向量的设置。(5)P_IOA_Latch(读)(7004H) A口的锁存寄存器,该单元以锁存A口上的输入数据,用于进入睡眠状态前的触键唤醒功能的启动。3B口寄存器(1)P_IOB_Data(读/写)(7005H) B口的数据单元,用于向B口写入或从B口读出数据。当B口处于输入状态时,读出是读B口管脚电平状态; 写入是将数据写入B口的数据寄存器。当B口处于输出状态时,写入输出数据到B口的数据寄存器。
25、 (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口的属性。 214 定时器/计数器SPCE061A提供了两个16位的定时/计数器:TimerA和TimerB。TimerA为通用计
26、数器;TimerB为多功能计数器。TimerA的时钟源由时钟源A和时钟源B进行“与”操作而形成;TimerB的时钟源仅为时钟源A。TimerA的结构如图2-6所示,TimerB的结构如图 2-7所示。 定时器发生溢出后会产生一个溢出信号(TAOUT/TBOUT)。一方面,它会作为定时器中断信号传输给CPU中断系统;另一方面,它又会作为4位计数器计数的时钟源信号,输出一个具有4位可调的脉宽调制占空比输出信号APWMO或BPWMO(分别从IOB8 和IOB9输出),可用来控制马达或其它一些设备的速度。此外,定时器溢出信号还可以用于触发ADC输入的自动转换过程和DAC输出的数据锁存。 向定时器的P_
27、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输出波
28、形的脉宽占空比。 时钟源A是高频时钟源,来自带锁相环的晶体振荡器输出Fosc;时钟源B的频率来自32768Hz实时时钟系统,也就是说,时钟源B可以作为精确的计时器。例如,2Hz定时器可以作为实时时钟的时钟源。 图2-6:TimerA结构图2-7:TimerB结构 从上面的结构我们可以看出时钟源A是一个高频时钟源,时钟源B是一个低频时钟源。时钟源A和时钟源B的组合,为TimerA提供了多种计数速度。若以ClkA作为门控信号,1表示允许时钟源B信号通过,而0则表示禁止时钟源B信号通过而停止TimerA的计数。例如,如果时钟源A为“1”,TimerA时钟频率将取决于时钟源B;如果时钟源A为“0”,将
29、停止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将输出
30、不同频率的脉宽调制信号,即对脉宽占空比输出APWMO进行控制。 表2-2:P_TimerA_Ctrl单元B15-B10B9B8B7B6B5B4B3B2B1B0占空比的设置时钟源B选择位时钟源A选择位 表2-3: 设置B6-B9位B9B8B7B6脉冲占空比(APWMO)TAON10019/161101010/161 101111/161110012/161110113/161111014/1611111TAOUT触发信号10000关断000011/161 00102/16100113/16101004/16101015/16101106/16101117/16110008/161注: 1:TAO
31、N是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:设置b0b2 表2-5: 设置b3b5位注: *代表
32、默认值为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位来选择Tim
33、erB的时钟源。设置第69位,TimerB将输出不同频率的脉宽调制信号,即对脉宽占空比输出BPWMO进行控制。表2-6:设置P_TimerB_Ctrl单元 表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)的占
34、空比为50%,频率为FTBOUT/2,其它输入信号的频率为FTFTBOUT/16。22 凌阳SPCE061A的指令系统指令是CPU执行某种操作的命令。微处理器(MPU)或微控制器(MCU)所能识别全部指令的集合称为指令系统或指令集。指令系统是制造厂家在设计CPU时所赋予它的功能,用户必须正确的书写和使用指令。因此学习和掌握指令的功能与应用非常重要,是程序设计的基础。221指令的分类nSP单片机指令按其功能可划分为: 1) 数据传送指令,包括立即数到寄存器、寄存器到寄存器、寄存器到存储器存储器到寄存器的数据传送操作; 2) 算术运算,包括加、减、乘运算; 3) 逻辑运算,包括与、或、异或、测试、
35、移位等操作; 4) 转移指令,包括条件转移、无条件转移、中断返回、子程序调用等操作; 5) 控制指令,如开中断、关中断、FIR滤波器的数据的自由移动等操作。 222 寻址方式可分为以下几类: 立即数寻址 这种寻址方式是操作数以立即数的形式出现,例如:R1 = 0x1234,是把16进制数0x1234赋给寄存器R1。 存储器绝对寻址 这种寻址方式是通过存储器地址来访问存储器中的数据,例如:R1 = 0x2222,访问0x2222单元的数据。 寄存器寻址 这种寻址方式是操作数在寄存器中,例如:R1 = R2,是把寄存器R2 中的数据
36、赋给寄存器R1。 寄存器间接寻址 这种寻址方式是操作数的地址由寄存器给出,例如:R1 = BP,是把由BP指向的内存单元的数据送寄存器R1。 变址寻址 这种寻址方式下,操作数的地址由基址和偏移量共同给出,例如:R1 = BP+0x34。 符号约定表2-7:指令系统符号的统一约定3SPCE061 精简开发板61板31 61板简介 SPCE061A精简开发板(简称61板),是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片
37、机项目初期研发使用。61板的结构和功能:61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电,方便随身携带。61板上有调试器接口(Probe接口)以及下载线(EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。图 3.1是61板(V1.6版)的实物图。 图3-1:61板的实物图32 61板的硬件结构 61板的硬件结构框图如图 3-2: 图3-2: 61板的硬件结构框图 上图中的各部分硬件说明如表 3-1所示。 61板各部分硬件说明如下。表3
38、-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
39、为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。 图3-3:电源电路图3.2.2音频电路音频电路由音频输出和音频输入两部分组成。图3-4是音频输出电路图。SPCE061A内置2路10位精度的
40、DAC,只需要外接功放电路即可完成语音的播放。图中的SPY0030是凌阳的一款音频放大芯片可以工作在2.46V范围内,最大输出功率可达700mW。图3-4:音频输出电路SPCE061A芯片中已经集成了音频输入专用ADC以及AGC放大电路,因此芯片外部的电路比较简单,图3-5是61板的音频输入电路模块。 图3-5:音频输入模块3.2.3 ICE接口电路SPCE061A芯片内部集成了ICE(在线仿真)接口,PC机通过Probe(在线调试器)或EZ_Probe(简易下载线)与61板相连,就可以方便地完成程序的下载、调试等。61板为Probe和EZ_Probe各自提供了一组接口,可通过S5跳线来选择使
41、用的接口类型。ICE接口部分电路如图 3-6所示。图3-6:ICE接口电路33 凌阳语音331 凌阳音频简介 1背景介绍音频的概述。要了解音频首先要明确音频的特点及分类我们所说的音频是指频率在20 Hz20 kHz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。语音是对讲话声音的一次抽象。是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号。音乐与语音相比更规范一些,是符号化了的声音。但音乐不能对所有的声音进行符号化。乐谱是符号化声音的符号组,表示比单个符号更复杂的声
42、音信息内容。2压缩分类压缩分为有损压缩和无损压缩。无损压缩一般指磁盘文件压缩比低(2:14:1);有损压缩指语音、视频文件,压缩比高(100:1)。凌阳音频压缩算法根据不同的压缩比分为以下几种(以压缩8KB16位的WAVE文件为例):SACM-A2000 压缩比为8:1,8:125,8:15;SACM-S480 压缩比为80:3,80:45;SACM-S240 压缩比为80:15。音质排序为:A2000S480S240。3常用的音频形式和压缩算法 (1)波形编码 波形编码采用子带编码技术(SBC,Sub-Band Coding)压缩算法SACM-A2000。特点是语音质量高,编码率高,适用于高
43、保真语音和音乐。(2)参量编码 参量编码采用压缩算法SACM-S240。特点是压缩比高,计算量大,音质一般,价格低廉。(3)混合编码 混合编码采用压缩算法SACM-S480。特点为综合了参量编码和波形编码的优点。除此之外,还具有FM音乐合成式即SACM-MS01等。 凌阳SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟可达到49MHZ,具备运算速度高的优势。这无疑为语音的录制、播放、合成及识别提供了条件。 凌阳压缩算法中SACM-A2000,SACM-S480,SACM-S240主要是用来放音,可用于语音提示;DVR则用来录放音。语音合成(MS01)算法较烦琐,还
44、需要具备音乐理论配器法和声学知识。PI3.3.2 常用的应用程序接口API下表所列出的是凌阳音频的几种算法。 表3-2:SACM-lib库中模块及其算法类型模块名称(Model-Index)语音压缩编码率采样速率 /KHZSACM-A200016KB/S,20KB/S,24 KB/S 16SACM-S480/S72048 KB/S,72 KB/S16SACM-S24024 KB/S 24SACM-MS01音乐合成(16 KB/S,20 KB/S,24 KB/S) 16SACM-DVR16 KB/S数据率,8KB的采样率,用于ADC通道录音功能16语音和音乐与我们的生活有着密切的关系,而单片机对语音的控制如录放音、合成及辨识也广泛应用于生活中。我们知道对于语音处理大致可以分为A/D、编码处理、存储、解码处理以及D/A等。然而,麦克输入所生成的WAVE文件,其占用的空间很大,对于单片机来说想要存储大量的信