语音信号处理毕业设计论文

更新时间:2023-11-02 15:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本课题组提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。

本文提出了以SST89E554RC芯片为核心的单片机小系统,用它来实现整个数字化语音存储与回放系统的逻辑控制。单片机将通过模数转换器A/D转换的数字信号送入外部存储器中,在回放时,单片机再从存储器中读出,送到数模转换器D/A转换成模拟信号输出。系统采用了键盘选择压缩方式,在字符型显示器上显示,并可实现实时语音存储与回放,性能稳定,并且界面友好。多次的测试实验表明,本系统基本满足设计要求。

文中重点讨论了小系统的设计过程、硬件流程和软件的调试问题,研究了采用DPCM编码方式以解决因存储空间不够而引起的存储时间不够的问题。

关键字:单片机小系统;外部中断;A/D转换;D/A转换;IAP;DPCM

I

Abstract

Voice processing is an important branch of information science. The technology has improved a lot with the high development of the large scale integration technology and the computer science technology. As the rapid development of digital audio technology and multi-media technology, the traditional tape desk is facing challenge for it unclear replaying and inconvenient. Our design, digital voice storage and replay system, proposed the volume is exquisite, the power loss low. It can solve the limitation of the tradition voice system in electronic and information processing usage.

The article has presenting a single-chip system with SST89E554RC chip as it center processing .The MCU(microcontroller) system is used to control the logic of the digital voice storage and replay system. When the voice system is in it storage state, the MCU system will send the digital signal to the RAM from the ADC (Analog to Digital Converter). When in the state of replaying, the MCU system will read the signal from the RAM (Random Access Memory), and then, send the signals into DAC (Digital to Analog Converter). After this, the signals will change into analog signal. The system has designed the keyboard selecting compression method, LCD indicating. It can also realize the real-time storing and replaying, and the surface is very friendly. The local test indicates this system satisfied basically designing required.

The article emphasizes the designing process of the MCU system, the flow of the hardware and the debugging of software. Compression coding method, which is used to solve the limited room of the RAM, is also emphasized in it.

Keywords: MCU system; external interrupt; ADC; DAC; IAP; DPCM

II

目 录

摘 要 ................................................................ I Abstract ............................................................. II 绪 论 ................................................................ 1 第1章 理论基础及系统要求 ............................................ 2

1.1 引言 .......................................................... 2 1.2 语音系统构成 .................................................. 2

1.2.1 系统基本原理 ............................................ 2 1.2.2 系统组成和流程 .......................................... 2 1.2.3 语音系统的要求 .......................................... 3 1.3 控制系统任务 .................................................. 3 1.4 本章小结 ...................................................... 4 第2章 控制系统硬件设计 .............................................. 5

2.1 引言 .......................................................... 5 2.2 设计方案论证 .................................................. 5

2.2.1 采用可编程逻辑器件来实现控制 ............................ 5 2.2.2 采用DSK来实现控制 ...................................... 6 2.2.3 采用单片机系统来实现控制 ................................ 7 2.3 控制系统整体设计 .............................................. 7 2.4 本章小结 ...................................................... 8 第3章 控制系统硬件的实现 ............................................ 9

3.1 引言 .......................................................... 9 3.2 单片机芯片介绍 ................................................ 9 3.3 单片机外围电路 ............................................... 11

3.3.1 存储芯片RAM62256及译码芯片74LS138 ..................... 11 3.3.2 锁存器74HC573和收发器74HC245 .......................... 12 3.3.3 键盘中断电路 ........................................... 13 3.3.4 RS-232串口电路 ......................................... 13

III

3.4 控制系统与前后通道的连接 ..................................... 14

3.4.1 系统与前向通道的连接 ................................... 14 3.4.2 系统与后向通道的连接 ................................... 15 3.5 系统的时序 ................................................... 16 3.6 本章小结 ..................................................... 17 第4章 控制系统软件调试 ............................................. 18

4.1 引言 ......................................................... 18 4.2 调试软件的介绍 ............................................... 18

4.2.1 Keil软件简介 ........................................... 18 4.2.2 BSL软件简介 ............................................ 19 4.3 测试程序的调试及结果 ......................................... 20

4.3.1 控制系统的测试 ......................................... 20 4.3.2 测试程序的调试 ......................................... 20 4.4 语音系统软件的调试 ........................................... 21

4.4.1 控制系统软件流程 ....................................... 21 4.4.2 压缩编码方式 ........................................... 22 4.4.3 语音系统软件调试 ....................................... 23 4.5 本章小结 ..................................................... 23 第5章 语音系统联调 ................................................. 24

5.1 引言 ......................................................... 24 5.2 系统联调方法 ................................................. 24

5.2.1 电路连接 ............................................... 24 5.2.2 整机调试 ............................................... 24 5.3 联调结果及分析 ............................................... 25 5.4 本章小结 ..................................................... 25 总 结 ............................................................... 26 致 谢 ............................................................... 27 参 考 文 献 .......................................................... 28

IV

附录(一)系统硬件图 ................................................. 29 附录(二)测试程序 ................................................... 30 附录(三)语音系统程序 ............................................... 35

V

器编程。

? Flash 擦写次数达1万次以上,程序保存是可达到100年;

? 由于Flash具有掉电保持的特性而系统内可变成(IAP)功能提供了像RAM一样的带电状态,可随时改写的特性,可用做数据存储器和在线软件升级功能; (3)可编程看门狗定时器(WDT); (4)宽电源范围+2.7—5V电源;

(5)具有三种节点模式,使功耗降至最低;

(6)与8052系列单片机兼容,片内有RAM 1 K字节; (7)3个16位定时计数器; (8)4个8位I/O端口;

(9)器件有多种加密方式,独立的块密码;

程序和数据外部存储器空间地址支持范围为64K字节; (10)全双工增强型UART:帧错误检测,自动地址识别; (11)八个中断源,四个优先级; (12)第二DPTR寄存器; (13)SPI串行接口;

(14)标准的12时钟每系统周期,该期间可通过配置设置成6时钟每系统周期; (15)TTL和CMOS兼容逻辑电平;

(16)有DIP-60,PLCC-44,TQFP-44三种封装形式等; (17)高可靠性,数据能保持100年;

(18)每个块都是小扇区操作,每个扇区是128Byte; (19)多达十万次的擦写次数,擦写时间快;

(20)低电压工作,5V或3V工作,无需外接12V高压; 利用SST单片机内部FLASH的特性,我们可以把现在广泛使用的

MCU+EEPROM/FLASH/FRAM方式改成单个MCU执行程序运行和数据/参数记录。

利用内部FLASH做数据存储有许多的优点: (1) 减少器件的数量,提高可靠性;

(2) 省下一个EEPROM等存储器,减低成本;

10

(3)提高数据的保密性。数据放在单片机内部,单片机加密后数据不能被读出来;

(4)省下I/O控制脚。省去EEPROM后,可以腾出两个I/O脚,做其它控制; (5)SST单片机IAP指令简单、直观; SST单片机较于现在通用的89S52的优势: (1)超大容量程序存储器Flash;

(2)同时提供ISP和IAP功能,而89S52只提供ISP;

(3)独有的联机调试功能,在Keil环境下使用,可基本代替仿真器;

(4)串口IAP下载用户程序(Easy IAP),速度比Atmel的并口下载软件更快; (5)SST单片机有两种使用状态,即ICE在电路仿真状态和IAP下载状态。这两种状态之间可通过Keil和Easy IAP转换;

(6)系统周期可以配置,可以设置为6时钟每周期。

3.3 单片机外围电路

3.3.1 存储芯片RAM62256及译码芯片74LS138

单片机可以扩展16位的地址线,可以构成64K的寻址空间,寻址范围是0000H~FFFFH。

单片机的P0口通过锁存器进行数据和地址总线的分离,分离后的低8位地址线接到

RAM62256的A0-A7引脚,P2口经74LS573(U5)与RAM62256的高8位地址线A8-A14相连【4】。P0口经74LS245出来的数据总线接到RAM62256的数据线D0-D7上。RAM62256的CS脚接A15作为片选

信号。

64KB的外部数据存储器空间的分配

图 3—2 存储器的连接 如下所示:

11

低32KB作为数据存储器,采用一片RAM62256(U9)来实现,高32KB的空间通过一片74LS138【5】来进行I/O接口扩展。具体的地址分配如下:

0000H—7FFFH 外部数据存储器 8000H—8FFFH 键盘的片选信号 9000H—9FFFH LCD的片选信号 C000H—CFFFH 用户接口OUTIO0

D000H—DFFFH 用户接口OUTIO1 图 3—3 138译码器 3.3.2 锁存器74HC573和收发器74HC245

控制系统中的8位数据总线通过一片74HC245(U8)来增加驱动能力,16位的地址线通过两片74HC573(U7、U5)来驱动,通过一片74HC573(U6)来判断。

74HC573具有8个单独输入端的锁存器,3态驱动总线输出。当允许端(G)为高电平是,锁存器输出将随数据(D)输入端变化;当允许端为低电平是,输出端将被锁存在已经建立起的数据电平上。选通输出控制端可使8个输出端与锁存器的Q端相同【5,7】。如图3-4所示

图3-4 74HC573管脚图 图3-5 74HC245管脚图

特别说明一下U7(573),利用它的锁存功能来实现P0口的地址/数据的复用。当其控制端LE是高电平时,输出端(Q0-Q7)和输入端(D0-D7)相连,因此,输出端的状态于输入端相同。

当控制端LE是低电平时,输出端与输入端断开连接,并保持原来的状态,或者

12

说,当控制端LE时低电平时,即便输出端的状态发生变化,输出端的状态也不会随之变化。

74HC245是三态反相的八总线收发器【5,8】,其结构如上面图 3-5所示: 当DIR端为低电平时,工作方式为B数据至A总线;当DIR端为高电平时,工作方式为A数据至B总线。

3.3.3 键盘中断电路

采用键盘中断方式:如图3-6所示。各个按键都是一端接地,另一端与一个二极管相连。二极管的正极接

【9】

单片机的中断口(INT1)。

当有任何一个按键按下时,都会使INT1口为低电平,从而引起单片机的中断,它的好处是不用在主程序中不断地循环查询,如果有键按下,单片机再去做相应的处理。键盘通过了一个上拉

电阻再与74HC573连接, 图3—6 键盘中断电路

这个上拉电阻主要是增加键盘的驱动能力。

3.3.4 RS-232串口电路

单片机的通信方式又两种:并行通信和串行通信。串行通信是指数据一位一位顺序发送或接收。单片机的串行接口是一个可编程的全双工串行通信接口,它可用作异步通信方式(UART),与串行传送信息的外部设备相连接。

串行通信接口标准以RS-232为主,RS-232是美国电子工业协会(EIA)制定的一种串行总线的物理接口标准,此标准规定了串行通信中,主控制模板和从属模板之间的物理连接线路的机械、电气、功能和过程特性,两端都必须遵守的共同约定[14]。RS-232标准总线为25根线,但实际应用中常用其简化了的9线接口。但本设计采用

13

3线传送。

RS-232接口通过一片MAX232芯片进行电平转换,MAX232芯片功耗低、集成度高,采用单一的+5V供电,具有接收和发送通道。通过RS-232接口既下载程序和仿真,又可以作为开发板的接口开发用,但此时不能进行仿真。

图3-7 RS-232串口电路

通过这个串口,可以直接将PC机内的程序下载到单片机中,而不需要用编程器

烧录。同时不需要外加监控芯片,只是通过串行口下载升级,便可以很容易的做到硬件的更新。

3.4 控制系统与前后通道的连接

3.4.1 系统与前向通道的连接

前向通道采用的模数转换器是最常用的8位A/D转换器ADC0809,ADC0809是CMOS工艺逐次比较型A/D转换器。ADC0809片内集成了8路模拟多路开关、地址锁存器与译码、8位A/D转换器以及8位三态输出锁存器四部分组成。

其主要性能及技术指标为【5,10】: ? 为逐次比较型; ? 为单电源供电;

? 无需外部进行0点和满度调整; ? 可锁存3态输出,输出与TTL兼容; ? 具有锁存控制的8路模拟开关; ? 分辨率为8位; ? 功耗为15mW;

? 转换时间(f=500kHz);128 s;

14

? 转换精度:0.4%。

图 3—8 ADC0809管脚及内部结构

ADC0809的最大采样频率位11KHz,符合系统8kHz采样的要求,其典型时钟为640kHz,其中最大时钟可达1.28MHz,可以从单片机的ALE端经过四分频后引入1MHz的时钟,这样就可以是ADC0809的采样频率达到8kHz。

数据输出端直接联到系统的数据总线上,单片机的写信号WR和138出来的片选信号OUTIO0经过或非后送ADC0809的START(A/D转换启动信号输入端口)和ALE(地址锁存允许信号输入端),单片机的读信号RD与转换器的片选信号OUTIO0经或非后送OE(数字量输出允许控制信号输入端口)用于控制转换数据的输出。EOC经线与接单片机的中断口INT0。

与单片机的接口电路请参见附录图(一) 3.4.2 系统与后向通道的连接

后向通道采用的数模转换器是DAC0832。DAC0832由8位输入锁存器、8位DAC寄存器、8位D/A转换电路所构成。使用两个寄存器的好处是能简化某些应用中的硬件接口电路设计。

其主要性能及技术指标为【5】: ? 分辨率为8位; ? 电流稳定时间为1 us;

15

? 可单缓冲、双缓冲或直接数字输入; ? 只需在满量程下调整其线性度; ? 单一电源供电; ? 低功耗,200mW。

图 3—9 DAC0832管脚和内部结构

单片机在连接后向通道时,只有一路输出,采用单缓冲方式。在这种方式下,将二级寄存器的控制信号并接即可。输入数据在控制信号的作用下,直接进入0832的控制寄存器。片选端CS直接接138译码起过来的OUTIO1。DAC0832为电流型输出,应用时要外接运算放大器使之成为电压型输出。

与单片机的接口电路请参见附录图(一)。

3.5 系统的时序

单片机的时序就是CPU在执行指令所需控制信号的时间顺序。在执行指令时,

CUP首先要到程序存储器中取出需要执行指令的指令码,然后对指令码译码,并由时序部件产生一系列控制信号去完成指令的执行。这些控制信号在时间上的相互关系就是CPU时序。

单片机系统采用5V的电源,24M的晶振。单片机的ALE(地址锁存允许)的输出频率为时钟振荡频率的1/6。单片机的ALE端的时钟信号经四个D触发器四分频,作为A/D转换的时钟(CLOCK)。ADC0809采样完成后,EOC(End of Convert)端将产生上跳脉冲。单片机通过INT0口检测到 EOC的上跳脉冲后,立即读取

16

ADC0809输出的8位数据,并一次存入外部存储器中。ADC0809工作的典型的时钟(CLOCK)频率为640kHz,其最大时钟可达1.28MHz。

图3-10 ADC0809时序图

3.6 本章小结

本章详细介绍了单片机小系统所采用的中央芯片SST89E554RC的结构和特点,仔细分析了外围器件的构成以及工作原理等。同时对连接前向通道的ADC转换器,连接后向通道的DAC转换器的构成及相连管脚做了详细介绍。再本章的最后,对单片机及ADC0809的工作时序作了详细的陈述。

17

第4章 控制系统软件调试

4.1 引言

单片机的开发中除必要的硬件以外,同样离不开软件,本系统的软件部分主要是为了实现人机控制、DPCM编码、A/D转换器量化数据的读入、D/A转换器模拟信号的输出等。C语言是一种通用的计算机程序设计语言,它既可以用来编写计算机的系统程序,也可用来编写一般的应用程序。采用汇编语言编写单片机应用程序的周期长,而且调试和排错也比较困难。本语音系统软件采用C语言来实现,同时采用相应的编译软件。

4.2 调试软件的介绍

4.2.1 Keil软件简介

Keil软件是目前最流行的开发单片机的软件,Keil Cx51是一种专为8051单片机设计的高效率的C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储空间也极小。

Keil Cx51已被完全集成到一个功能强大的全新集成开发环境中μVision2了。其中包括项目(project)管理器、Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器、RTX51实时操作系统、Simulator软件模拟器以及Monitor51硬件目标调试器,所有这些功能均可在μVision2提供的单一而灵活的开发环境中极为简便地进行操作。

μVision2提供了强大的项目管理功能,可以十分方便地进行结构化多模块程序设计。μVision2内部集成器件数据库存储了多种不同型号单片机的片上资源信息,通过它可以自动设置Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器及调试及调试器的默认选项,充分满足用户利用特定单片机上集成外围功能要求。

μVision2支持软件模拟仿真(Simulator)和用户目标板调试(Monitor51)两种

18

工作方式,在软件模拟仿真方式下不需要任何单片机硬件即可完成用户程序仿真调试,极大地提高了用户程序开发效率,在用户目标板调试方式下,利用硬件目标板中的监控程序可以直接调试目标硬件系统。

4.2.2 BSL软件简介

SST89E554最大的特点是内部有两块独立的FLASH存储器,具有应用中在线编程(IAP)功能。BSL(EasyIAP11F Boot-Strap Loader)软件【11】是SST公司为用户提供的IAP工具,用户通过它可以下载程序到单片机Flash中,或是将Flash中的程序代码读出来,同时还可实现芯片的状态从IAP转换到ICE。

ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。ISP技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结果即成成品,免去了调试时由于频繁的插入取出芯片对芯片和电路板带来的不便。

IAP(In-Application Programming)指MCU可以在系统中获取新代码,并对自己重新编程,即可用程序来改变程序。IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序是,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。

在实现IAP功能时,单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为存储区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果没有外部改写程序的条件满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。

SST公司的单片机,其最大的特点是其内部有两块独立的FLASH存储器,具有IAP(应用中在线编程)功能,对于8052系列的其他公司的单片机(ATMEL、WINBOND、ISSI)可以直接代替,软硬件无须任何改动。

IAP的实现一般需要很少的外部电路辅助实现,而且实现起来非常灵活,通常可以利用单片机的串行口接到计算机的RS-232口上,来下载系统程序或是在线仿真。

19

4.3 测试程序的调试及结果

4.3.1 控制系统的测试

将单片机接到PC机上,首先进行芯片自检,先通过串口检测板上的SST系列芯片,从菜单Select Chip/RS-232,选择Detect Target MCU for Firmware1.1F and RS232 Config,然后根据当前的SST芯片选择芯片型号,Memory mode 选默认即可,按下OK进入下一步;下一步进行串口设置,选择和单片机通信的计算机串口,波特率可以选择为38400bps,晶震频率是24M,按Detect MCU进行芯片检测。(在按下Detect MCU后要马上把单片机进行复位一次,否则,因单片机正在执行程序而无法被探测到,出现timeout的错误)。

当芯片被检测到后,在窗口的右半部的Chip Information菜单功能区会显示芯片信息:芯片型号:SST89E554RC、闪存:8K、波特率:38400bps、晶振频率为:24M。

用户程序下载IAP在Easy IAP软件的右下角一个IAP Functions菜单功能区,点中Download即进入用户程序下载,可以忽略密码设置,然后直接进入文件选择,按OK即可。

IAP到Soft ICE 的状态转换,如果想从当前的IAP状态转换到硬件在线仿真状态,需要下载Soft ICE程序到单片机中。即,从软件的菜单栏中选择Soft ICE,然后选择Download Soft ICE,点击下载。

Soft ICE 到IAP状态的转换,在Keil software 软件调试环境下敲入命令include e:/ SST/Convert -to-BSLx554.txt,退出在线调试,打开EasyIAP11F Boot-Strap Loader软件即可实现状态转变【11】。

4.3.2 测试程序的调试

通过以上的系统测试,在IAP状态下,将通过Keil编译无错的测试程序载入到单片机中。(测试程序详见附录(二))此时单片机处于Soft ICE状态下。将状态转换成IAP后再次检测系统,当按下RESET时,系统显示“testing the LCD”“repeat”上下两个字符串,当按下按键JP7时,系统显示“1”,当按下按键JP6时,系统显示

20

“2”,??当按下按键JP3时,系统显示“5”。在Keil的环境下进行硬件仿真,在Debug中设置好硬件仿真驱动,对编译程序设置断点,运行后可以观察到变量的寄存器地址的变化。

4.4 语音系统软件的调试

4.4.1 控制系统软件流程

单片机系统的控制分为三个状态:待机状态、录音状态、回放状态。下面详细介绍单片机系统在这三个状态时的硬件流程。

(1) 待机状态

当系统处于待机状态时,系统既不录音也不放音,处于加电后状态。按复位键(RESET),语音系统进入此状态。在此状态中时,单片机的外围电路均处于无效状态。此时程序还没有开始执行,系统处于等待状态。LCD显示器一直显示“please enter”。

(2) 录音状态

当按下JP7时,系统进入普通录音状态,当按下JP6时,系统进入DPCM录音状态。

当按下JP7(普通录音)键或者JP6(DPCM录音)键时,单片机的INT1口从键盘电路接收中断信号,收到信号后跳出等待。同时从地址线A12,A13,A14输出信号,利用74LS138从Y0(KEY)发出信号片选键盘电路的74HC573,单片机通过P0口接收从DB0~DB7传输过来的键盘信号,通过该信号调用中断程序,同时,通过74LS138译码器选通LCD,并将按键对应的功能提示(“recording”或”common record ”)送LCD显示。

与此同时,单片机的WR和经138译码的ADC0809的片选信号(OUTIO0)经过或非门送ADC0809的ALE和START端启动模数转换器,进行模数转换。当ADC每转换完一次后,EOC送一个中断信号给单片机,单片机的RD端口和模数转换器的片选信号经或非门之后,送ADC0809的输出控制端口。将转换后的数字信号经数据总线,送入外部存储器RAM62256进行存储。

21

(3) 回放状态

当按下JP5时,系统进入普通回放状态,当按下JP4时,系统进入DPCM回放状态。

当按下JP5(普通回放)键或者JP4(DPCM回放)时,INT1从键盘电路收到中断信号,收到信号后跳出等待。同时从地址线A12,A13,A14输出信号,利用74LS138从Y0(KEY)发出信号片选键盘电路的74HC573,单片机通过数据端口检测到从数据总线传输过来的键盘信号。再利用高位地址线经74LS138选通DAC0832的片选信号,同时经译码从Y1(LCD)发出信号片选LCD,通过数据总线接收从单片机的P0口传输过来的信号,此时ZLCD显示“replaying”或“dpcm replay”。

单片机通过高位地址线A15选通外部数据存储器,通过P2口选定地址,通过外部数据存储器的数据总线的端口传输到数模转换器。经转换后,通过DAC0832转换的模拟信号经运算放大后通过OUT端输出[16]。

4.4.2 压缩编码方式

本系统软件设计的基本思路是:利用定时产生中断,在中断服务程序中,对输入的音频信号进行采样,把得到的结果送存外扩存储器之后,把数字信号从RAM中读出,利用D/A转换使之恢复为模拟的音频信号,从而实现从模拟到数字,再有数字到模拟的过程。

语音系统要求实现数字语音存储与回放,以8kHz采样频率对语音信号进行采样,采样信号存于存储器中,考虑到单片机小系统的存储器容量的限制,因此采用数据压缩编码。又由于系统的扩展要求在不增加存储容量的前提下,提高语音的存储时间,因此,也必须进行数据压缩。

数字存储的关键技术是数据的压缩编码与物理存储空间的扩展。本设计利用单片机最小系统上固定的32K RAM数据存储空间。常用的语音压缩编码方式有PCM(脉冲编码调制)和DPCM(差分脉冲编码调制)两种[1,17]。

PCM模式的语音速率为64kbit/s,将ADC采样量化值不经过压缩编码处理,直接存储在数据存储器中;回放时,经过简单的处理DAC回放。这种模式的特点是:采样速率较高,回放失真度小,容易实现;但是由于没有对采样数据进行压缩处理,

22

存储时间短,而且对小信号来说,其量化噪声干扰太大。

DPCM编码方式是对信号抽样值与信号预测值的差值进行量化、编码,是增量调制的一种改进。它适当的降低了增量调制的数据压缩比,可以压缩码率,可以把数码率由64kbit/s压缩到32kbit/s,提高了存储空间利用律。DPCM能压缩比特率的实质是由于信号相邻值之间存在明显的相关性,减少了信号间的冗余信息,所以其抗噪的能力不如PCM编码,可能造成较大的累计噪声输出【1,17】。

4.4.3 语音系统软件调试

按照前面所述的方法,将小组负责软件的同学提供的软件经调试无误后下载到芯片中。之后同测试程序一样,在Keil环境下进行硬件仿真。观察变量地址的变化和内存的变化。(系统程序详见附录(三))系统当在IAP状态下测试时,当按下RESET时,系统显示字符串“please enter”,当按下按键JP7时,系统显示“recording”,当按下按键JP6时,系统显示“dpcm record”,当按下按键JP5时,系统显示“common replay”,当按下按键JP4时,系统显示“dpcm replay”。

4.5 本章小结

系统采用的是SST89E554RC芯片,结合SST单片机独特的内部结构和在线仿真功能,通过配套的软件来对系统进行调试,可以检测系统设计的好坏,也可以进一步认识系统的流程和单片机的功用。本章重点阐述基于硬件系统的软件设计流程,以及压缩编码的方式。最后,对整个语音系统的调试结果做了详细的说明。

23

第5章 语音系统联调

5.1 引言

系统的调试分为纯硬件调试、硬软件联合调试、系统软件调试三个阶段。电路模块调试时主要是纯硬件调试,涉及软件的则需要软硬件联合调试,如单片机小系统,A/D、D/A转换电路等。接着进行系统级联调试,软硬件必须结合,主要排除逻辑故障。硬件调试完成以后,结合软件进行调试。系统软件的主要任务有人机控制,DPCM编解码的实现、A/D转换器量化数据的读入、D/A转换器模拟信号的输出等。

5.2 系统联调方法

5.2.1 电路连接

连接电路时,从单片机出发,分前向通道和后向通道两个方向逐一安装。 单片机在连接前向通道时,ADC0809的数据输出端用40芯排线直接联到单片机系统的数据总线上,单片机的写信号WR和138译码器出来的片选信号OUTIO0经过或非后送ADC0809的START(A/D转换启动信号输入端口)和ALE(地址锁存允许信号输入端),单片机的读信号RD与转换器的片选信号OUTIO0经或非后送OE(数字量输出允许控制信号输入端口)用于控制转换数据的输出。EOC经反相后接单片机的中断口INT0。

单片机在连接后向通道时,只有一路输出,采用单缓冲方式。在这种方式下,将二级寄存器的控制信号并接即可。模拟信号在控制信号的作用下,也经40芯的排线直接进入DAC0832的控制寄存器。片选端CS直接接138译码器过来的OUTIO1。

5.2.2 整机调试

先将单片机小系统复位,将语音信号从麦克风输入,按下录音键,待存储器存满后,按放音键回放语音信号并调整放大器增益,使语音信号不失真的输出,实现

24

系统功能。输出信号可以接到示波器上,通过观察输出的波形来进行判断。

5.3 联调结果及分析

初步完成的系统在放音过程中夹杂着明显的噪声,实验观察和分析表明:这些噪声源于数字系统的干扰和外界窜入的音频电信号干扰。据此采取以下降噪措施[15]:

·模拟地和数字地分开,在电源处一点接地;

·正负电源与地之间采用10uF和103电容做高频退藕; ·单片机小系统的电源接入端接0.01uF电容;

以上措施提高回放语音的清晰度和可懂度,使回放噪声较小[16]。 系统在各种工作模式下回放试听效果如下:

·直通方式:声音清晰,没有听到噪声,录音时间少于3秒, ·DPCM模式:声音清晰,有轻度噪声,录音时间为10~11秒。

5.4 本章小结

前面的设计和调试,都是为了整个数字化语音存储与回放系统的功能的实现。通过整机联调,检验到单片机小系统能成功的实现前面所描述的控制功能,并且整个电路能够实现设计所要求的性能指标。通过实践,实现了对采样值的DPCM压缩编码,提高了存储空间的利用率。这对于今后在有限存储空间内存储较多数据是有参考意义的。本章对整个小组的设计成果做了详细的说明。

25

总 结

本论文对于单片机小系统的设计和实现过程主要集中在以下几点:

在系统设计过程中考虑了多种实现方案,通过比较,论证了采用单片机是合理、而又易于实现的;在系统实现阶段,详细论述了整个控制系统的流程;在系统调试阶段,详细介绍了与单片机配套的调试软件;在整机联调阶段,参数匹配方面发现了很多问题。

在整个设计期间,我接触了各种不同的问题,并提出了各种解决方案,获得了很多有价值的心得体会:要想成功的实现一个系统,必须在设计之前,对相关理论和工具要有充分的认识,还要有详细周到的设计,尽量完善全面的考虑问题;开发调试过程中,一定要严格按照调试规范操作。

系统的一些特色与创新:

系统芯片选用了具有超大容量程序存储器Flash的SST芯片,在开发中,不需要编程器就可以做单片机烧录,程序通过串口下载到单片机,这给系统软件的调试带来了极大的方便。

键盘采用了选择性压缩方式,可以自由选择压缩编码的方式,因此可以很清楚的对比两种编码方式的录音效果以及各自的优缺点。

系统需要的改进:

在存储容量上可以进一步扩展,增加存储器的块数,可以采用分页寻址的方式,由此增加存储的时间。

同时,可以根据语音系统提出的扩展思路来进一步改进电路。

26

致 谢

首先,我要感谢我的导师赵云娣老师在毕业设计中对我给予的悉心指导和严格要求,感谢孙义明老师在毕业设计其间对我的耐心帮助和实验器材的支持。同时感谢通信实验室得程老师,惠老师在毕业设计期间所给予我得帮助。在我毕业论文写作期间,各位老师给我提供了种种专业知识上的指导和日常生活上的关怀,没有您们这样的帮助和关怀,我不会这么顺利的完成毕业设计,借此机会,向您们表示由衷的感激。同时还要感谢系实验室在毕业设计期间提供给我们优越的实验条件。

接着,我要感谢课题组的各位同学,傅佳莉、李澄、余军和海洋。在毕业设计的短短3个月里,你们给我提出很多宝贵的意见,给了我不少帮助还有工作上的支持,在此也真诚的谢谢你们。

同时,我还要感谢我的寝室同学和身边的朋友,正是在这样一个团结友爱,相互促进的环境中,在和他们的相互帮助和启发中,才有我今天的小小收获。

最后我要深深地感谢我的家人,正是他们含辛茹苦地把我养育成人,在生活和学习上给予我无尽的爱、理解和支持,才使我时刻充满信心和勇气,克服成长路上的种种困难,顺利的完成大学学习。

还有许许多多给予我学业上鼓励和帮助的师长、朋友,在此无法一一列举,在此也一并表示忠心地感谢!

27

参 考 文 献

[1] 樊昌信,徐炳祥,吴成柯 通信原理,第五版,国防科技大学出版社,2003:206--217

[2] 王金明,杨吉斌 数字系统设计与Verilog HDL,电子工业出版社,2002:47—50 [3] 王军宁,吴成柯,数字信号处理器技术原理与开发应用,高等教育出版社,2003:207-253

[4] 第四届全国大学生设计竞赛获奖作品选编,北京理工大学出版社,2001 [5] 李朝青,单片机与DSP外围数字IC技术手册,北京航空航天大学出版社,2003 [6] SST89E554RC Date Sheet , www.sst.com, 2004 [7] 74HC573 User’s Guide,www.icbase.com, 2003 [8] 74HC245 User’s Guide,www.icbase.com, 2003

[9] 余锡存,曹国华,单片机原理及接口技术,西安电子科技大学出版社,2001年 [10] 梁延贵,积分式A/D转换器其他专用集成电路分册,科学技术文献出版社,2002

[11] BSL User’s Guide,www.sst.com, 2004

[12] Keil Software Cx51 User’s Guide,www.mcustudy.com, 2003

[13] 徐爱均,彭秀华,Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践,电子工业出版社,2004;6-15

[14] 求是科技,单片机典型模块设计实例导航,人民邮电出版社,2004:65-67 [15] 谢自美,电子线路设计实验测试,第二版,华中科技大学出版社,2002 [16] 沙占友,单片机外围电路设计,电子工业出版社,2003:105-187 [17] 姚天任,江太辉,数字信号处理第二版,华中科技大学出版社,2000 [18] 朱定华,戴汝平,单片微机原理与应用,清华大学出版社,2003:85-90 [19] 张伟,王力,赵晶,Protel DXP 入门与提高,人民邮电出版社,2003 [20] 赵亮,单片机C语言编程与时例,人民邮电出版社,2004

28

附录(一)系统硬件图

29

附录(二)测试程序

#include \#include \#include \

#define uchar unsigned char #define uint unsigned int sbit Beep = P3^4;

#define LCDNO XBYTE[0x9338] #define LLCD1R XBYTE[0x9378] #define LLCD1W XBYTE[0x9358] #define LLCD0R XBYTE[0x9368] #define LLCD0W XBYTE[0x9348] #define RLCD1R XBYTE[0x93b8] #define RLCD1W XBYTE[0x9398] #define RLCD0R XBYTE[0x93a8] #define RLCD0W XBYTE[0x9388] #define LCD1R XBYTE[0x9308] #define LCD1W XBYTE[0x9108] #define LCD0R XBYTE[0x9208] #define LCD0W XBYTE[0x9008] #define KEY XBYTE[0x8008] data uchar column; //定义列变量 bdata uchar read_dat,page; sbit busy = read_dat^7; sbit page_4 = page^4;

char code lcd_data0[16] = \char code lcd_data1[16] = \ repeat \

uint count,value = 0; uchar ref = 0; uchar keyvalue;

void clear();

void DLCDInit();

void hanzi_disp(); void BeepOn(void); void BeepOff(void);

30

void Cls(void);

void LCDInit(void);

void LCDDisp(char, char); void delay(void);

/************************延时子程序********************/ void delay (void) {

unsigned char i;

for(i = 2000 ; i > 0; i --); }

void BeepOn(void) {

Beep = 0; }

void BeepOff(void) {

Beep = 1; }

/********************字符LCD 驱动**********************/ void Cls(void) {

uint i;

LCD0W = 0x01;

for (i = 0; i < 500; i++); }

void LCDInit(void) {

int i;

LCD0W = 0x3C; for (i = 0;i < 40; i++); LCD0W = 0x06; for (i = 0;i < 40; i++); LCD0W = 0x0F; for (i = 0;i < 40; i++); LCD0W = 0x01;

for (i = 0;i < 500; i++); }

void LCDDisp(char position, char c) {

int i;

if ((position > 0) & (position < 33))

31

{ if (position > 16) {

position += (0x40 - 17); } else {

position--; }

LCD0W = (position | 0x80); for (i = 0;i < 40; i++); LCD1W = c;

for (i = 0;i < 40; i++); } }

/*********************键盘驱动***********************/ void int1() interrupt 2 { uint i;

uchar key_value; key_value = KEY; P1 = key_value; switch(key_value) {

case 0xfe: key_value = 1; break; case 0xfd: key_value = 2; break; case 0xfb: key_value = 3; break; case 0xf7: key_value = 4; break; case 0xef: key_value = 5; break; default:

key_value = 0; }

32

key_value = 0x30 + key_value; Cls();

LCDDisp(1,key_value); for(i = 0;i < 60000;i ++); }

void InitSys(void) {

EA = 1; EX1 = 1; IT1 = 1; EX0 = 1; IT0 = 1; ET0 = 1;

TMOD = 0x11; TR1 = 0; TH1 = 0; TL1 = 0; }

void main(void) {

uint i,j; j = 0; value = 0;

InitSys();

/* DLCDInit(); clear();

hanzi_disp();*/

LCDInit();

for(i = 0;i < 16;i ++) {

LCDDisp(i+1,lcd_data0[i]); }

for(i = 0;i < 16;i ++) {

LCDDisp(i+17,lcd_data1[i]); }

for(i = 0;i < 60000;i ++);

33

for(i = 0;i < 60000;i ++); for(i = 0;i < 60000;i ++);

Cls();

while(1); {

inquire_busy_left(); send_dat_left(0xc0+j); inquire_busy_right(); send_dat_right(0xc0+j); j ++;

if(j == 64) j = 0; Cls();

LCDDisp(1,lcd_data0[1]); P1 = 0x55;

for(i = 0;i < 30000;i ++); P1 = 0xaa;

for(i = 0;i < 30000;i ++); } }

//起始行设置 34

本文来源:https://www.bwwdw.com/article/1y52.html

Top