声音采集与回放项目设计方案.doc_第1页
声音采集与回放项目设计方案.doc_第2页
声音采集与回放项目设计方案.doc_第3页
声音采集与回放项目设计方案.doc_第4页
声音采集与回放项目设计方案.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

声音采集与回放项目设计方案随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、功能强、价格低、使用灵活等特点,显示出其明显的优势和广泛的应用前景。在人们不断增长的物质与文化的需要下,电子产品在大众的生活,学习以及工作中的地位显的举足重轻。电子产品不断的更新换代,消费者对电子产品的要求也越来越高,因此对电子产品的技术以及开发速度也带来不断的挑战。计算机的诞生,给人类带来历史性的飞跃。在现代的各种电子设计技术中,单片机技术已经作为主流的电子开发技术之一,所谓单片机(Single Chip Microcomputer),是指在一块芯片中集成有中央处理器(CPU)、存储器(RAM 和 ROM)、基本 I/O 接口以及定时器/计数器等部件,并具有独立指令系统的智能器件,即在一块芯片上实现一台微型计算机的基本功能。如果是简单控制对象,只需利用单片机作为控制核心,不需另外增加外部设备就能完成。对于较复杂的系统,只需对单片机进行适当扩展即可,十分方便。归纳起来,单片机及应用系统有以下特点:(1)单片机具有独立的指令系统,可以将我们的设计思想充分体现出来(2)系统配置以满足控制对象的要求为出发点,使得系统具有较高的性能价格比。 (3)应用系统通常将程序驻留在片内(外)ROM 中,抗干扰能力强,可靠性高,使用方便。 (4)由于系统规模较小,其本身不具有自我开发能力,一般需借助专用的开发工具进行系统开发和调试,而实际应用系统简单实用,成本低,效益好。 (5)应用系统所用存储器芯片可选用 EPROM、E2PROM、OTP 芯片或利用掩膜形式生产,便于批量开发和应用。许多单片机(如 80C51 系列)的开发芯片和扩展应用芯片相互配套,降低了系统成本。 (6)由于系统小巧玲珑,控制功能强、体积小,便于嵌入被控设备之内,大大推动了产品的智能化。如数控机床、机器人、智能仪器仪表、洗衣机、电冰箱、电视机等都是典型的机电一体化设备和产品。单片机技术已成为现代电子技术应用领域十分重要的技术之一,是电子技术应用领域工程技术人员必备的知识和技能,它能够使您设计的产品更具智能化和先进性。电子设计自动化的出现,不仅为电子系统的设计带来了一场革命性的变化,从某种角度来说也成为其发展的必然。大学生是时代发展的主要支柱,承担着社会进步,社会建设的重要角色。努力学习科学文化知识,开发新技术,是时代赋予当代大学生的任务。1 方案设计与论证1.1 毕业设计的设计任务 此次设计老师给我的要求是研究和实现数字存储式录音系统,通过自学掌握单片机程序设计调试、编辑、编译和下载设计文件,用C语言和汇编语言,利用EDA技术搭建实用硬件系统的方法,选择合适的单片机实现录音机系统,系统具有以下基本功能:留言录音、自动应答、连续放音;要求每项操作过程中使用指示灯。经过多次查找资料,最后确定实现方案:利用凌阳单片机SPCE061A单片机设计一个数字存储式录音系统。系统以单片机为核心,扩展外围存储器HM628128LLP SRAM以存储语音数据,要求系统复位之后播放一段音乐,然后进入录音模式,录音后回放的音质较好,录音时间超过30秒以上。整个录音系统由按键进行控制,具有录制,停止,播放的功能,并且通过指示灯显示当前录音系统处于何种的工作状态。1.2 设计方案方案一: SPCE061A有8路可复用10位ADC通道,其中一路通道(MIC_In)用于语音输入,模拟信号经过自动增益控制器和放大器放大后进行A/D转换。SPCE061A 的A/D转换范围是整个单片机系统的输入范围,即最大的模拟信号输入电压范围:0VAVdd。非法的A/D模拟信号(超过VDD+0.3 V/低于VSS0.3 V)将影响转换电路的工作范围,从而降低ADC的性能。方案一使用SPCE061A单片机自带的MicIN输入,利用单片机芯片内部的AGC自动增益控制器和放大器,从而节省了外围的音频输入电路及相应的音频滤波电路,使系统的硬件电路大大简化。软件实现方面就是利用凌阳SACM库提供的DVR函数进行录放,DVR函数具有良好的API用户接口,只要了解各个函数的功能和参数即可,录音放音过程实现简单。录音资料存放到外挂的存储器HM628128LLP SRAM中。播放时,从HM628128 SRAM中读取语音数据,通过SPCE061A自带的DAC进行播放。原理框图如图1.1:SPCE061A麦克风喇叭存储器放大器 图1.1 MIcIN输入原理框图方案二: 使用SPCE061A单片机自带的MicIN输入,不使用凌阳SACM库提供的DVR函数,直接将ADC的结果进行数字滤波,然后存放到外挂的存储器HM628128中,播放时从外围存储器HM628128中读取数据,直接送到SPCE061A自带的DAC进行播放。这个方案的硬件和方案一相似,只要求外围存储器容量要大,因为语音数据没有经过压缩,而是直接存储到存储器中。两者的区别在软件方面。本方案的原理框图也如方案一所示。方案三: SPCE061A有8路可复用10位ADC通道,其余7路通道(Line_In)和IOA06 管脚复用,可以直接通过引线(IOA06)输入,用于将输入的模拟信号(如电压信号) 转换为数字信号。由于Line_In通道和IOA06共用管脚,建议用户选择其他的IO管脚(非IOA06),以避免由于非法IO信号造成电压不稳(超过VDDIO+0.7V/低于VSSIO-0.7V)而降低ADC的性能。方案三使用SPCE061A单片机自带的LineIN输入,要求外置音频输入通道放大器,将ADC的结果进行数字滤波,然后存放到凌阳存储器SPR4096中,播放时从SPR4096中读取数据,经过外置的输出音频放大器直接送到SPCE061A自带的DAC进行播放。本方案的原理框图如图1.2:SPCE061A放大器1喇叭存储器放大器2麦克风 图1.2 LineIN输入原理框图1.3 方案选择方案比较:因为SPCE061A的MicIN通道内置了带AGC的放大电路,而LineIN通道需要在芯片外围搭建这部分电路,使得方案三的硬件比方案一和方案二多,而且带AGC的放大电路也不是很好调的,所以,方案一和方案二比方案三更容易实现,效果也更好。方案一和方案二比较,方案一利用凌阳SACM库提供的DVR函数进行录放,只要了解了DVR函数的功能,参数,和调用方法,这就很容易实现,效果也好。而方案二在软件方面要编写数字滤波程序,加大了设计任务的复杂性和繁重性。综上所述,方案一最优,方案二次之,方案三最差。从节省系统的成本,选择合适的实现难度以及构建系统的时间紧迫性方面综合考虑,本录音系统最终选择方案一 。2 录音系统的音频信号处理2.1 音频信号处理基础2.1.1 音频的概述(特点,分类)我们所说的音频是指频率在20 Hz20 kHz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。语音是对讲话声音的一次抽象。是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号。音乐与语音相比更规范一些,是符号化了的声音。但音乐不能对所有的声音进行符号化。乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容。 2.1.2 数字音频的采样和量化 将模拟的(连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面。 数字音频的质量取决于:采样频率和量化位数这两个重要参数。此外,声道的数目、相应的音频设备也是影响音频质量的原因。 2.1.3 音频格式的介绍 音频文件通常分为两类:声音文件和MIDI文件 *声音文件:指的是通过声音录入设备录制的原始声音,直接记录了真实声音的二进制采样数据,通常文件较大; *MIDI文件:它是一种音乐演奏指令序列,相当于乐谱,可以利用声音输出设备或与计算机相连的电子乐器进行演奏,由于不包含声音数据,其文件尺寸较小。 (1)声音文件的格式 WAVE文件*.WAV WAVE文件使用三个参数来表示声音,它们是:采样位数、采样频率和声道数。在计算机中采样位数一般有8位和16位两种,而采样频率一般有11025Hz(11KHz),22050Hz(22KHz)、44100Hz(44KHz)三种。我们以单声道为例,则一般WAVE文件的比特率可达到88K704Kbps。具体介绍如下: *WAVE格式是Microsoft公司开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范; *用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。 *WAVE格式支持MSADPCM、CCITT A Law、CCITT Law和其它压缩算法,支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式。 *但其文件尺寸较大,多用于存储简短的声音片段。 AIFF文件AIF/AIFF *AIFF是音频交换文件格式(Audio Interchange File Format)的英文缩写,是苹果计算机公司开发的一种声音文件格式; *被Macintosh平台及其应用程序所支持,Netscape Navigator浏览器中的LiveAudio也支持AIFF格式,SGI及其它专业音频软件包同样支持这种格式。 *AIFF支持ACE2、ACE8、MAC3和MAC6压缩,支持16位44.1Kz立体声。 Audio文件*.Audio *Audio文件是Sun Microsystems公司推出的一种经过压缩的数字声音格式,是Internet中常用的声音文件格式; *Netscape Navigator浏览器中的LiveAudio也支持Audio格式的声音文件。 MPEG文件*.MP1/*.MP2/*.MP3 *MPEG是运动图像专家组(Moving Picture Experts Group)的英文缩写,代表MPEG标准中的音频部分,即MPEG音频层(MPEG Audio Layer); *MPEG音频文件的压缩是一种有损压缩,根据压缩质量和编码复杂程度的不同可分为三层(MPEG Audio Layer1/2/3),分别对应MP1、MP2和MP3这三种声音文件; *MPEG音频编码具有很高的压缩率,MP1和MP2的压缩率分别为4:1和6:18:1,而MP3的压缩率则高达10:112:1,也就是说一分钟CD音质的音乐,未经压缩需要10MB存储空间,而经过MP3压缩编码后只有1MB左右,同时其音质基本保持不失真,因此,目前使用最多的是MP3文件格式。 RealAudio文件*.RA/*.RM/*.RAM *RealAudio文件是RealNerworks公司开发的一种新型流式音频(Streaming Audio)文件格式; *它包含在RealMedia中,主要用于在低速的广域网上实时传输音频信息; *网络连接速率不同,客户端所获得的声音质量也不尽相同:对于28.8Kbps的连接,可以达到广播级的声音质量;如果拥有ISDN或更快的线路连接,则可获得CD音质的声音。 (2)MIDI文件*.MID/*.RMI MIDI是乐器数字接口(Musical Instrument Digital Interface)的英文缩写,是数字音乐/电子合成乐器的统一国际标准; 它定义了计算机音乐程序、合成器及其它电子设备交换音乐信号的方式,还规定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可用于为不同乐器创建数字声音,可以模拟大提琴、小提琴、钢琴等常见乐器; 在MIDI文件中,只包含产生某种声音的指令,这些指令包括使用什么MIDI设备的音色、声音的强弱、声音持续多长时间等,计算机将这些指令发送给声卡,声卡按照指令将声音合成出来,MIDI在重放时可以有不同的效果,这取决于音乐合成器的质量; 相对于保存真实采样资料的声音文件,MIDI文件显得更加紧凑,其文件尺寸通常比声音文件小得多。2.1.4 语音压缩编码基础 语音压缩编码中的数据量是指:数据量=(采样频率量化位数)/8(字节数) 声道数目。 压缩编码的目的:通过对资料的压缩,达到高效率存储和转换资料的结果,即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息。 压缩编码的必要性:实际应用中,未经压缩编码的音频资料量很大,进行传输或存储是不现实的。所以要通过对信号趋势的预测和冗余信息处理,进行资料的压缩,这样就可以使我们用较少的资源建立更多的信息。 举个例子,没有压缩过的CD品质的资料,一分钟的内容需要11MB的内存容量来存储。如果将原始资料进行压缩处理,在确保声音品质不失真的前提下,将数据压缩一半,5.5MB就可以完全还原效果。而在实际操作中,可以依需要来选择合适的算法。 常见的几种音频压缩编码: (1)波形编码:将时间域信号直接变换为数字代码,力图使重建语音波形保持原语音信号的波形形状。波形编码的基本原理是在时间轴上对模拟语音按一定的速率抽样,然后将幅度样本分层量化,并用代码表示。译码是其反过程,将收到的数字序列经过译码和滤波恢复成模拟信号。 如:脉冲编码调制(Pulse Code Modulation,PCM)、差分脉冲编码调制(DPCM)、增量调制(DM)以及它们的各种改进型,如自适应差分脉冲编码调制(ADPCM)、自适应增量调制(ADM)、自适应传输编码(Adaptive Transfer Coding,ATC)和子带编码(SBC)等都属于波形编码技术。 波形编码特点:高话音质量、高码率,适于高保真音乐及语音。 (2)参数编码:参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输。译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号。具体说,参数编码是通过对语音信号特征参数的提取和编码,力图使重建语音信号具有尽可能高的准确性,但重建信号的波形同原语音信号的波形可能会有相当大的差别。 如:线性预测编码(LPC)及其它各种改进型都属于参数编码。该编码比特率可压缩到2Kbit/s-4.8Kbit/s,甚至更低,但语音质量只能达到中等,特别是自然度较低。 参数编码特点:压缩比大,计算量大,音质不高,廉价! (3)混合编码:混合编码使用参数编码技术和波形编码技术,计算机的发展为语音编码技术的研究提供了强有力的工具,大规模、超大规模集成电路的出现,则为语音编码的实现提供了基础。80年代以来,语音编码技术有了实质性的进展,产生了新一代的编码算法,这就是混合编码。它将波形编码和参数编码组合起来,克服了原有波形编码和参数编码的弱点,结合各自的长处,力图保持波形编码的高质量和参数编码的低速率。 如:多脉冲激励线性预测编码(MPLPC),规划脉冲激励线性预测编码(KPELPC),码本激励线性预测编码(CELP)等都是属于混合编码技术。其数据率和音质介于参数和波形编码之间。 总之,音频压缩技术之趋势有两个: (1)降低资料率,提高压缩比,用于廉价、低保真场合(如:电话)。 (2)追求高保真度,复杂的压缩技术(如:CD)。按照实现的功能来分,语音合成可分两个档次: (1) 有限词汇的计算机语音输出 (2) 基于语音合成技术的文字语音转换(TTS:Text-to-Speech) 按照人类语言功能的不同层次,语音合成可分为三个层次: (1) 从文字到语音的合成(Text-to-Speech) (2) 从概念到语音的合成(Concept-to-Speech) (3) 从意向到语音的合成(Intention-to-Speech) 2.2 凌阳音频简介2.2.1 凌阳音频压缩算法的编码标准表2.1是不同音频质量等级的编码技术标准(频响): 表2.1 音频质量压缩标准 信号类型 频率范围(Hz) 采样率(K Hz) 量化精度(位) 电话话音 200 - 3400 8 8 宽带音频(AM) 50 - 7000 16 16 调频广播(FM) 20 15 K 37.8 16 高质量音频(CD) 20 20 K 44.1 16凌阳音频压缩算法处理的语音信号的范围是200Hz3.4KHz的电话话音。 2.2.2 压缩分类 压缩分无损压缩和有损压缩。 无损压缩一般指:磁盘文件,压缩比低:2:14:1。 而有损压缩则是指:音视频文件,压缩比可高达100:1。 凌阳音频压缩算法根据不同的压缩比分为以下几种(具体可参见语音压缩工具一节内容): SACM-A2000:压缩比为8:,8:1.25,8:1.5 SACM-S480: 压缩比为80:3,80:4.5 SACM-S240: 压缩比为80:1.5 按音质排序:A2000S480S240 2.2.3 凌阳常用的音频形式和压缩算法 (1)波形编码:sub-band即SACM-A2000 特点:高质量、高码率,适于高保真语音音乐。 (2)参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码。如:SACM-S240。 特点:压缩比大,计算量大,音质不高,廉价! (3)混合编码:CELP即SACM-S480 特点:综合参数和波形编码之优点。 除此之外,还具有FM音乐合成方式即SACM-MS01。 2.2.4 凌阳语音的播放、录制、合成和辨识 凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟频率可达到49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放、录放、合成及辨识提供了条件。 凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录放音。对于音乐合成MS01,该算法较繁琐,而且需要具备音乐理论、配器法及和声学知识,所以对于特别爱好者可以到我们的网站去了解相关内容,这里只给出它的API函数介绍及程序代码的范例,仅供参考。 对于语音辨识主要有以下两种: (1)特定发音人识别SD(Speaker Dependent):是指语音样板由单个人训练,也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。 (2)非特定发音人识别SI(Speaker Independent):是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。 3 硬件电路设计3.1 凌阳61板电路原理3.1.1 凌阳61板硬件框图及主要说明下图是61板系统的系统框图: 图3.1 凌阳61板结构图下表对系统各部分作简要的介绍: 表3.1 凌阳61板的框图说明POWER 5V或者3V供电电路PLL锁相环外部电路Power-电源指示灯Sleep-睡眠指示灯 RESET复位电路 K4复位按键 PROBE在线调试器串行5PIN接口 S5EZ-PROBE和PROBE切换开关J12,J3耳机插孔和两PIN喇叭插针J11下载线的5PIN接口 DAC一路音频输出电路,采用SPY0030集成音频放大器 MIC麦克风输入电路 OSC32768晶振电路 VRTA/D转换外部参考电压输入接口 R/C芯片其他外围电阻,电容电路 K1-K3扩展的按键:接IOA0-IOA2PORTA/B32个I/O口3.1.2 凌阳61板功能特点*具有DSP功能、语音特色的凌阳十六位单片机开发系统。*集开发板仿真器和编程器于一体。只需PC机即可进行产品开发,同时免费提供原版集成开发环境。*不需任何外围器件就可以完成语音录、放、识别等功能。*所有I/O全部引出,可以和用户外部电路直接搭配。*多种电源供电方式,使用户使用更加方便 。3.2 凌阳61板硬件电路组成3.2.1 电源 61板采用3节5号电池进行供电,由J10接入,如原理图所示。其中的前后两组电容用来去耦滤波,使其供给芯片的电源更加干净平滑。为了获得标准的3.3V电压,在板子上加入SPY0029三端稳压器。 两个二极管,是为防止误将电源接反造成不必要损失而设置的,在操作过程中千万不要将电源接反,因为反向电压超过一定的值,二极管将会被损坏,达不 到保护的目的。后面的零电阻及其电源、地分成不同的几路是为减少电磁干扰设 置的。 图3.2 电源部分原理图3.2.2 程序下载区 ICE 基本运作方式是通过控制clock 及通过ICE 喂入指令方式,来控制CPU 的运行及缓存器资料和内存资料的存取,因此必须透过控制缓存器值的设定来控制目前CPU 的动作.每个相连接的不同ICE模块都拥有自己独特的3-bit ID,当PC在传送control信号时都会先传送该3-bit ID,只有ICE本身的ID和control信号的ID 相同时才会执行该命令或回传资料。61板上的74HC244主要在我们选用下载线的时候起作用,主要起缓存的作用和完成SDA是作为数据回送还是数据下传的选择。 图3.3 下载区原理图3.2.3音频输入部分 如下图所示电路, MICP和MICN将随着MIC产生的波形变化,并在两个端口处形成两路反相的波形,再经过两级运放放大,把放大的语音信号交给ADC转换为数字量,这个时候我们就可以通过单片机编程对这些数据进行处理,比如说语音数据压缩、语音识别样本处理。图3.4 音频输入外围电路3.2.4 音频输出部分如下图,SPY0030是凌阳公司开发的专门用于语音信号放大的芯片,它的增益如下所示: 图3.5 SPY0030工作原理图3.2.5 按键部分 按键是通过通断控制来实现它的功能,61板上的按键在没按下时,它的1、3脚是断开的,当按下时这两个脚是连通的。若此时我们在1脚接一个高电平,把第三脚连到一个I/O口上,这就形成了一个人机操作界面,通过编程对I/O扫描,单片机就能识别到我们的按键命令。 图3.6 按键原理图3.3 凌阳61板接口说明3.3.1 输入/输出(I/O)接口61 板将SPCE061A 的32 个I/O 口全部引出:IOA0IOA15,IOB0IOB15,对应的SPCE061A 引脚为:A 口,4148、53、5460;B 口,51、8176、6864。而且该I/O 口是可编程的,即可以设置为输入或输出:设置为输入时,分为悬浮输入或非悬浮输入,非悬浮输入又可以设置为上拉输入或是下拉输入;在5V 情况下,上拉电阻为150K,下拉电阻为110K;设置为输出时,可以选择同向输出或者反相输出。 图3.7 61板接口说明图3.3.2 音频输入/输出接口正如我们在前面介绍的“61 板”具有强大的语音处理功能,X1 是语音的MIC 输入端,带自动增益(AGC)控制,J3 是语音输出接口,一个2pin 的插针外接喇叭,由DAC 输出引脚21 或22 经语音集成放大器SPY0030A放大,然后输出,SPY0030A 是凌阳的一款芯片,相当于LM386,但是比LM386音质好,它可以工作在2.46.0V 范围内,最大输出功率可达700mW(LM386 必须工作在4V 以上,而且功率只有100mW)。3.3.3 在线调试器 PROBE 和 EZ_PROBE 接口J4 为PROBE 的接口,该接口有5pin,其中上、下两个分别是(VSS)和3.3V 电源(VCC),我们就是通过它将PROBE 与PC 机连接起来进行调试、仿真和下载程序的。这样,就不需要再用仿真器和编程器了。J11 是EZ_PROBE 的接口,我们提供一根下载线用作程序的下载,一端连接PC 机的25pin 并口,另外一端接61 板的5pin EZ_PROBE 接口。3.3.4 电源接口J10 是电源接口,“61 板”的内核SPCE061A 电压要求为3.3V,而I/O 端口的电压可以选择3.3V 也可以选择5V。所以,在板子上具有两种工作电压:5V 和3.3V。对应的引脚中15、36 和7 必须为3.3V, 对于I/O 端口的电压51、52、75 可以为3.3V 也可以是5V,这两种电平的选择通过跳线J5 来选择。“61板”的供电电源系统采用用户多种选择方式:5V 供电:用户可以用3 节电池来供电,5V 直流电压直接通过SPY0029(相当于一般3.3V 稳压器)稳压到3.3V,为整个“61 板”提供了5V 和3.3V两种电平的电压。另外也可以直接外接5V 的直流稳压源供电,5V 电压再通过SPY0029 稳压到3.3V。3.3V 供电:用户可以提供直流3.3V 电压为实验板进行供电,此时整个板子只有3.3V 电压,I/O 端口电压此时只有一种选择。*需要注意的是由于SPY0029A 最大输出电流为50mA,所以如果需要外接一些模组时要先考虑负载能力。3.3.5 外部复位复位是对“61 板”内部的硬件初始化,“61 板”本身具有上电复位功能,即通电就自动复位,另外,还具有外部复位电路,即在引脚6 上外加一个低电平就可令其复位。3.4 存储器HM628128 BLP7工作原理3.4.1 HM628128 BLP7的引脚排列 图3.8 存储器HM628128 BLP7引脚排列3.4.2 HM628128 BLP7的特点 HM628128是一款高速度,低能耗的静态存储器。容量为128K*8 Bits,工作电压范围处于2.4V-5.5V之间。芯片采用先进的CMOS技术和电流技术,具有高速度低能耗的性能。主要特点为: (1) 较宽的工作电压范围:2.4V-2.5V。 (2) 非常低的能源消耗。 (3) 高的存储速度:55ns-70ns。 (4) 处于非工作状态时自动关闭电源。 (5) 通过引脚 CE2,/CE1 和 /OE 很容易实现扩展。3.4.3 引脚描述 以下是HM628128的各个引脚的名称和功能描述。 表3.2 HM628128引脚及其说明 名字 功能A0-A16地址输出这17根地址线输出选择RAM 128K个字节中的其中一个单元/CE1片选使能1输出CE2片选使能2输出/CE1低电平有效,CE2高电平有效。这两个引脚要同时有效才能对SRAM进行读数据和写数据的操作。如果其中一个无效,SRAM处于非选中的状态,DQ引脚处于高阻态。/WE写使能输出写使能输出引脚为低电平有效,控制读和写的操作。在SRAM被选中情况下,当/WE为高电平并且/OE为低电平,从DQ引脚读取数据;当/WE为低电平时,数据被写入选中的某个SRAM单元当中。/OE输出使能输入输出使能输入引脚为低电平有效。当存储器芯片被选中,并且写使能有效时,如果输出使能引脚被激活时,则数据被送到DQ引脚,否则,当/OE无效时,DQ引脚为高阻态。DQ0-DQ7数据输入/输出端口这些8个双向端口被用来从SRAM中读取数据,或者将数据写入到SRAM中。电压VCC电源供应。GND接地。3.4.4 真值表 下面是存储器HM628128的真值表,展示了利用芯片的控制引脚对SRAM进行各种操作的引脚状态。根据这个真值表我们可以对HM628128进行功能的分析,并对它进行扩展。/CE1和CE2是功能扩展接口,可以利用这两个接口用两片HM628128扩展到256KB的存储容量。表3.3 HM628128真值表工作模式 /WE/CE1CE2/OEI/O 端口状态非片选状态(Power Down) H 高阻态 L 输出无效 H L H H 高阻态 读SRAM H L H L 数据输出写SRAM L L H 数据输入3.5 录音系统的电路连接录音时,语音信号通过A/D转换器将语音信号转换成数字信号,编码后存入存储器中;放音时,将数据从存储器中取出并解码,然后经D/A转换变成语音信号输出。 3.5.1 原理分析 (1)录音 SPCE061A的A/D转换器有8个通道,其中有1个通道是MIC-IN输入,它专门用于对语音信号进行采样。语音信号经MIC转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,可使进入A/D的信号保持在最佳电平,又可使削波减至最小。A/D转换器对输入的音频信号进行8kHz采样,并按照凌阳音频编码格式进行编码,每秒将占用16kBits的存储器空间。系统扩展了一块容量为1Mbits的SRAM存储器HM628128A来存储语音数据。 (2)放音 通过单片机输出控制信号将HM628128A中存储的语音数据顺序取出,解码后送到D/A寄存器,以8kHz的速率进行D/A转换输出,经电容滤波后,恢复原始语音波形,通过三极管驱动扬声器放音。 3.5.2 硬件电路 凌阳的61板已经集成了录音电路,单片机系统,放音电路于一体,而单片机的内存太小不足以存储容量巨大的录音资料,因此还要扩展外围的存储器电路,以满足录音系统的存储需要。外围存储器采用H628128HM SRAM。HM628128与SPCE061A的连接电路见图3.9,由SPCE061A的IO口完成地址线、数据线和控制线扩展功能。其中IOB0-IOB15接存储器H628128的地址线A0-A15,IOA7接第十七根地址线A16;IOA8-IOA15接存储器H628128的数据线DQ0-DQ7;IOA4接存储器H628128的/WE引脚,控制读写的转换;IOA5接/OE,控制存储器H628128输出时数据端口是否为高阻态;IOA6接存储器H628128的/CE1引脚,控制存储器H628128是否处于被选中为工作的状态;IOA3接一个发光二极管,由单片机SPCE061A控制,指示录音系统正在进行的工作状态,为录音或者播放状态时指示灯亮,为停止录音或者停止播放状态时则指示灯熄灭;存储器H628128的剩余的VDD引脚和CE2引脚接高电平,GND引脚接地;录音系统扩展了三个按键,分别为REC(IOA0),STOP(IOA1),PLAY(IOA2),REC用于开始录音,PLAY用于放音,STOP用于停止录音或放音。 图3.9 凌阳61板与HM628128的电路连接4 录音系统的软件设计4.1 集成开发环境IDE简介4.1.1 综述 nSP 集成开发环境,它集程序的编辑、编译、链接、调试以及仿真等功能为一体。具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使人们的编程、调试工作更加方便且高效。此外,它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。使用nSP IDE 之前用户必须运行Windows98/Windows2000/WindowsXP ,注意Windows2000/WindowsXP上使用本工具用户必须拥有管理员权限,打印端口必须被设置为SPPStandard Parallel Port 模式,端口地址必须被设置为378H。IDE的开发界面如图4.1所示。主界面里通常有三个主要窗口:Workspace(工作区)窗口、Edit(编辑)窗口和Output(输出)窗口。进行窗口切换只需在各窗口处单击鼠标左键即可。此外,主界面里还提供下拉菜单、工具栏等。 图4.1 nSP IDE 桌面 在nSP IDE中,配备了硬件声明的头文件和常用函数模块,例如键盘扫描模块,语音音量调节模块等等。另外还配备各种库文件,包括标准C常用的库函数、凌阳音频库函数等。开发者只要了解这些库函数的使用后,就可以灵活运用于自己的设计开发中。IDE使用流程如下: (1)打开nSP IDE工具软件。 (2)建立一个新项目: 打开上面菜单filenewprojectfile键入文件名;并在location下选择存放路径。(3)在该项目的源文件夹(source files)下建立一个汇编语言文件或C语言文件:Filenewfile(选择asm或C文件)file文件名。 (4)在相应的文件内编程。 (5)选择硬件仿真方式(PCB板式的快捷键)。(6)编译程序:buildbuild 。(7)下载程序:buildStartDebugDownload(快捷键为F8)。此时,相当于程序已被程序存储器中,可脱机运行。(8)运行程序:buildstart degugdownloadgo(快捷键为F5) 4.1.2 项目的建立,编译和下载(1)建立项目新建项目的方法步骤: 用鼠标左键单击File 下拉菜单New 弹出New对话框,在该窗口中选中Project标签并在File的文本框中键入项目的名称。Location下的文本框中输入项目的存取路径或利用该文本框右端的浏览按钮制定项目的存储位置。 用鼠标左键单击New对话框里的OK按钮,则项目建立完成。新建项目的需求:在做一个应用程序前,首先要建项目。(2)在项目中新建C文件(.C) 新建C文件的方法:在新建项目下, 点击菜单File 下拉菜单New 弹出New对话框。点击nSP IDE C File, 在File 下的文本框内键入文件名称, OK。 新建C文件的需求:用C语言做程序时需要建立C文件类型。 (3)在项目中新建汇编文件(.asm) 新建汇编文件的方法:在新建项目下, 点击菜单File 下拉菜单New 弹出新建文件/项目的对话框。点击nSP IDE ASM File ,在File 下的编辑框内写入文件名称,OK。新建汇编文件需求: 用汇编语言做程序时需要建立汇编文件类型。 (4)在项目中新建头文件(.H) 新建头文件的方法:在新建项目下, 点击菜单File 下拉菜单New 弹出新建文件/项目的对话框。点击nSP IDE H File,在File 下的编辑框内写入文件名称,OK。 新建头文件需求: 多个文件共享的文件可以建成头文件。新建头文件后的Workspace 窗口结果: Head File 下多出一个head.h 文件。(5)在项目中添加/删除文件 在项目中添加文件的方法,第一种方法:通过Project菜单方法。 可通过菜单途径用鼠标左键单击Project菜单里Add to Project选项中的Files 或Resource子项,激活Add Files对话框;第二种方法:通过Workspace 窗口。在Workspace 窗口内,选中元组,单击右键弹出以下拉菜单。用鼠标左键单击Add Files To Folder 选项,可激活Add Files 对话框。在文本框中键入将添加的文件,单击“打开”按钮。即将添加的文件加到所选的元组中。删除文件步骤:在File 视窗或Resource视窗里选中元组中的某个文件。单击鼠标右键,再弹出的下拉菜单,选中Remove 选项,则该文件会从元组中被删除。(6)在项目中使用资源 当在项目里的资源元组中添加资源文件时,该资源文件的存储路径及名称会自动被记入项目中的.rc文件中,并以RES_*的缺省文件名格式被赋予一个新的文件名(此处*是指资源文件在其存储路径上的文件名);同时,添入的资源文件还会被安排一个文件标识符ID。 (7)项目选项的设置 项目选项的设置是针对不同目标而对开发环境的各个要素进行的设置。(8)项目的编译 当项目中的文件编写结束后,要对项目中的程序进行编译,并将编译出来的二进制代码与库中的各个模块连接成一个完整的、地址统一的可执行目标文件和符号表文件,供用户调试使用,在这里要使用编译器、汇编器、链接器等工具。 项目编译的基本操作包括: Compile:对编辑窗口中当前文件进行编译。 Build :编制当前的文件。 Rebuild All :重新编制当前项目目标,将处理当前项目中的所有文件。 Stop Build :终止当前项目目标编制。 (9)下载程序:buildStartDebugDownload。4.2 SPCE061A的程序设计规则在nSP单片机的汇编程序设计中,用户可以不用考虑程序代码在实际物理存储器中的存储地址,而是通过伪指令(如“.CODE”、“.TEXT”、“.RAM”等)来通知编译器把程序代码定位在什么类型的存储空间即可.至于具体的存储地址则由编译器管理。对于数据存储器的管理同样由IDE的编译器来完成。当用户想在数据存储区内定义一个变量时,只需通过伪指令(如“.RAM”、“.IRAM”等)来通知编译器在数据存储区内建立一个变量即可。nSP单片机的汇编指令针对C语言进行了优化,所以其汇编的指令格式很多地方直接类似于C语言。另外其开发仿真环境IDE也直接提供了C语言的开发环境,C函数和汇编函数可以方便地进行相互调用。4.2.1 项目的组织结构项目提供用户程序及资源文档的编辑和管理,并提供各项环境要素的设置途径。因此,用户从编程到调程之前实际上都是围绕着项目的操作。新建项目包括三类文件:源文件(Source files)、头文件(Head files)和用来存放文档或项目说明的文件(External Dependencies)。这种项目管理的方式,会把与项目相关的代码模块组织为一个有机的整体,便于开发人员对其代码以及相关文件文档的管理。在这里,不详细叙述如何对IDE进行全面的设置,相关内容可以参阅IDE章节。但是从编写调试代码的角度来看,需要反复提出的有如下一些重要的设置:(1)路径的设置:菜单toolsoptionDirectiories,可以进行路径的设置。当项目中的文件或函数库不与项目文件在同一个目录时,需要对此进行设置。 (2)链接库函数的加载:菜单ProjectSetting.Link,可以加载应用函数库。例如,在语音应用时,需要加载凌阳音频算法库SACM25.lib。 另外,尽管在项目中的Head File文件夹下面加入了所需要的头文件,但是在汇编文件和C文件中仍然需要用伪指令将其包含到自己的文件中。 nSP IDE开发系统提供了SPCE061A的寄存器定义的汇编头文件hardware.inc以及C语言的头文件hardware.h。当我们需要对芯片设置时,需要将这些头文件加入项目中。开发系统还提供了对芯片进行设置的一些子函数,这些子函数都放在汇编文件hardware.asm中,提供开发人员使用。在凌阳的语音算法函数库中所提供的API函数,也将用到hardware.asm中的函数。4.2.2 程序调用协议由于C编译器产生的所有标号都以下划线(_)为前缀,而C程序在调用汇编程序时要求汇编程序名也以下划线(_)为前缀。 模块代码间的调用,是遵循nSP体系的调用协议(Calling Convention)。所谓调用协议,是指用于标准子程序之间一个模块与另一模块的通讯约定;即使两个模块是以不同的语言编写而成,亦是如此。 调用协议是指这样一套法则:它使不同的子程序代码之间形成一种握手通讯接口,并完成由一个子程序到另一个子程序的参数传递与控制,以及定义出子程序调用与子程序返回值的常规规则。 调用协议包括以下一些相关要素: 1) 调用子程序间的参数传递; 2) 子程序返回值;3) 调用子程序过程中所用堆栈; 4) 用于暂存数据的中间寄存器。 nSP体系的调用协议的内容如下: (1)参数传递 参数以相反的顺序(从右到左)被压入栈中。必要时所有的参数都被转换成其在函数原型中被声明过的数据类型。但如果函数的调用发生在其声明之前,则传递在调用函数里的参数是不会被进行任何数据类型转换的。 (2)堆栈维护及排列 函数调用者应切记在程序返回时将调用程序压入栈中的参数弹出。各参数和局部变量在堆栈中的排列如图18所示。 (3)返回值 16位的返回值存放在寄存器R1中。32位的返回值存入寄存器对R1、R2中;其中低字在R1中,高字在R2中。若要返回结构则需在R1中存放一个指向结构的指针。 (4)寄存器数据暂存方式 编译器会产生prolog/epilog过程动

温馨提示

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

评论

0/150

提交评论