嵌入式系统语音采集与播放程序设计.docx

上传人:b****6 文档编号:8612015 上传时间:2023-02-01 格式:DOCX 页数:30 大小:1.59MB
下载 相关 举报
嵌入式系统语音采集与播放程序设计.docx_第1页
第1页 / 共30页
嵌入式系统语音采集与播放程序设计.docx_第2页
第2页 / 共30页
嵌入式系统语音采集与播放程序设计.docx_第3页
第3页 / 共30页
嵌入式系统语音采集与播放程序设计.docx_第4页
第4页 / 共30页
嵌入式系统语音采集与播放程序设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

嵌入式系统语音采集与播放程序设计.docx

《嵌入式系统语音采集与播放程序设计.docx》由会员分享,可在线阅读,更多相关《嵌入式系统语音采集与播放程序设计.docx(30页珍藏版)》请在冰豆网上搜索。

嵌入式系统语音采集与播放程序设计.docx

嵌入式系统语音采集与播放程序设计

 

ARM9嵌入式系统课程设计

--嵌入式系统语音采集与播放程序设计

 

班级:

学号:

姓名:

指导老师:

课程设计时间:

2011.6.29---2011.7.8

江苏大学

第一章引言

1.1设计目的

分析Linux操作系统下音频设备驱动的结构,编写应用测试程序,实现UDA1341芯片的实时录音及放音功能,进一步熟悉vivi、Linux内核和根文件系统的编译和烧写至开发板的开发流程。

1.2设计任务与要求

在Samsung公司S3C2410处理器的edukit-Ⅲ开发板上,在嵌入式linux操作系统环境下,根据语音芯片UDA1341的驱动程序和语音数据的特点编写语音采集与播放的应用测试程序,实现语音数据的采集和实时播放功能。

1.要求本系统实时的采集与播放

2.

2.通过麦克风录制一段语音信息,对其进行播放

第二章课程设计平台构建与流程

2.1嵌入式系统平台构建

1)Linux或Windows98/2000/NT/XP

2)cygwin

cygwin是一个在windows平台上运行的unix/Linux模拟环境,是cygnussolutions公司开发

3)EmbestIDE

英蓓特提供的一个嵌入式开发的集成环境。

4)windows中的超级终端

5)EmbestonlineFlashProgrammerforARM

烧写相关文件到NorFlash中的工具。

6)建立linux的交叉编译环境,各项源代码的安装等

1)EduKit-II实验平台

2)S3C2410核心子板

3)PC机

2.2课程设计流程

图2.1设计流程

2.3课程设计硬件结构与工作原理

2.3.1硬件模块

(1)

图2.2典型的IIS总线上的设备

(2)IIS总线结构

IIS总线只处理声音数据,其他控制信号等则需单独提供。

IIS总线使用3根串行总线,分别是:

提供分时复用功能的SD线(Serialdata,串行数据),WS线(Wordselect,字段选择(声道选择))和SCK线(ContinuousSerialclock,连续的时钟信号)。

图2.3IIS总线接口内部结构

S3C2410AIIS总线接口各模块的功能描述如下:

●BRFC表示总线接口、寄存器区和状态机。

总线接口逻辑和FIFO访问由状态机控制。

●IPSR表示两个5位的前置分频器ISPR_A和ISPR_B,一个前置分频器作为IIS总线接口的主时钟发生器,另一个前置分频器作为外部音频编解码器CODEC的时钟发生器。

●TxFIFO和RxFIFO表示两个64字节的FIFO。

在发送数据时,数据写到TxFIFO,在接收数据时,数据从RxFIFO读取。

●SCLKG表示主IISCLK发生器。

在主设模式时,由主时钟产生串行位时钟。

●CHNC表示通道发生器和状态机。

通道状态机用于产生和控制IISCLK和IISLRCK。

●SFTR表示16位移位寄存器。

在发送模式时,并行数据移入SFTR并转换成串行数据输出;在接收模式时,串行数据移入SFTR并转换成并行数据输出。

具体的相关寄存器的位功能描述请参观相关资料。

2.3.2工作原理

常用的数字音频处理集成电路包括A/D、D/A、DSP、数字滤波器和数字音频I/O接口及设备(麦克风、话筒)等。

麦克风输入的模拟音频信号经A/D转换、音频编码器实现模拟音频信号到数字音频信号转换,编码后的数字音频信号通过控制器送入DSP或微处理器相应的处理。

音频输出时,数字音频信号(音频数据)经控制器给音频解码器,经D/A转换后由扬声器输出。

数字音频涉及概念很多,重要的是理解:

采样和量化。

采样就是每隔一定时间读一次声音信号的幅度,而量化则是将采样得到的声音信号幅度转换为数字值。

从本质上讲,采样是时间上的数字化,而量化则是幅度上的数字化。

根据奈奎斯特(Nyquist)采样理论采样频率应高于输入信号的最高频率两倍。

为了保证声音不失真,采样频率应该在40kHz左右。

常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,要达到DVD的音质需要采用更高的采样频率。

量化是对模拟音频信号的幅度数字化,量化位数决定模拟信号数字化以后的动态范围,常用的有8位、12位和16位。

量化位越高,信号的动态范围越大,数字化后的音频信号就越接近原始信号,但所需要的存储空间也越大。

声道有单声道、双声道和多声道。

双声道又称立体声,在硬件中有两条线路,音质和音色都优于单声道,但数字化后占据的存储空间的大小要比单声道多一倍。

多声道能提供更好的听觉感受,不过占用的存储空间也更大。

数字音频数据有PCM、MP3、WMA、WAV、OggVorbis、RA、AAC、ATRAC3等多种不同的文件格式。

1)IIS总线

IIS总线(IIS,Inter-ICSoundBus,数字音频集成电路通信总线)是Philip公司提出的音频总线协议,它是一种串行的数字音频总线协议,是音频数据编码或解码常用的串行音频数字接口。

(1)IIS总线的传输模式

数据的发送方和接收方需要采用相同的时钟信号来控制数据传输,数据传输方(主设)必须产生字段选择信号、时钟信号和需要传输的数据信号。

在一个复杂的数字音频系统中,可能会有多个发送方和接收方,通常采用系统主控制模式,主控制模块控制数字音频数据在不同集成电路(设备)间的传输,数据发送方就需要在主控制模块的协调下发送数据。

IIS总线的三种传输模式如图2、3、4所示,这些模式的配置一般需通过软件来实现。

图2.4发送器为主设时的传输模式

图2.5接收器为主设时的传输模式

图2.6控制器为主设时的传输模式

(2)IIS总线时序

串行数据(SD)

串行数据的传输由时钟信号同步控制,且串行数据线每次传输1字节的数据。

当音频数据被数字化成二进制流后,传输时先将数据分成字节(如8位、16位等),每个字节的数据传输从左边的二进制位MSB(MostSignificantBit)开始。

当接收方和发送方的数据字段宽度不一样时,发送方不考虑接收方的数据字段宽度。

如果发送方发送的数据字段宽度小于系统字段宽度,就在低位补0;如果发送方的数据字段宽度大于接收方的宽度,则超过LSB(LeastSignificantBit)的部分被截断。

字段选择(WS)

音频系统一般包含有左右两个声道,字段选择(WS)用来选择左声道或者右声道,WS=0表示选择左声道;WS=0表示选择左声道。

如果不在外部加以控制,WS会在MSB传输前的一个时钟周期发生变化,使数据接收方和发送方保持同步。

此外,WS能让接收设备存储前1字节,并且准备接收后1字节。

时钟信号(SCK)

在IIS总线中,任何一个能够产生时钟信号的电路都可以称为主设备,从设备从外部时钟输入得到时钟信号。

IIS的规范中制定了一系列关于时钟信号频率和延时的限制。

图2.7IIS总线时序

(3)IIS总线接口的工作方式

IIS总线接口是用来连接外部的标准编解码器(CODEC)的接口。

S3C2410A提供一个IIS总线接口,能用来连接一个外部8/16位立体声音频CODEC,支持IIS总线数据格式和MSB-justified数据格式。

该接口对FIFO的访问提供DMA传输模式,而不是采用中断模式。

它可以同时发送数据和接收数据,也可以只发送或只接收数据。

在只发送和只接收模式,S3C2410A的IIS总线接口有以下三种工作方式。

正常传输方式

在正常传输方式,对于发送和接收FIFO,IIS控制寄存器有一个FIFO就绪标志位。

当FIFO准备发送数据时,如果发送FIFO不空,则FIFO就绪标志位为“1”;如果发送FIFO为空,该标志为“0”。

在接收数据时,当接收FIFO是不满时,FIFO就绪标志位为“1”,指示可以接收数据;若接收FIFO满,则该标志为“0”。

通过FIFO就绪标志位,可以确定CPU读/写FIFO的时间。

DMA传输方式

在DMA传输方式,利用DMA控制器来控制发送和接收FIFO的数据存取,由FIFO就绪标志来自动请求DMA的服务。

发送和接收方式

在发送和接收方式,IIS总线接口可以同时发送和接收数据。

(4)S3C2410AIIS总线接口的音频串行接口格式

S3C2410A的IIS总线接口支持IIS总线数据格式和MSB-justified数据格式。

IIS总线格式

IIS总线有IISDI(串行数据输入)、IISDO(串行数据输出)、IISLRCK(左/右通道选择)和IISCLK(串行位时钟)4条线,产生IISLRCK和IISCLK信号的为主设备。

串行数据以2的补码发送,首先发送是MSB位。

首先发送MSB位可以使发送方和接收方具有不同的字长度,发送方不必知道接收方能处理的位数,同样接收方也不必知道发送方正发来多少位的数据。

当系统字长度大于发送器的字长度时,数据发送时,字被切断(最低数据位设置为0)发送。

接收器接收数据时,如果接收到的数据字长比接收器的字长更长时,则多的数据位被忽略。

另一方面,如果接收器收到的数据位数比它的字长短时,则缺少的位设置为0。

因此,MSB有固定的位置,而LSB的位置与字长度有关。

在IISLRCK发生改变的一个时钟周期,发送器发送下一个字的MSB位。

发送器发送的串行数据可以在时钟信号的上升沿或下降沿同步。

然而,串行数据必须在串行时钟信号的上升沿锁存到接收器,所以发送数据使用上升沿进行同步时会一些限制。

左右通道选择线指示当前正发送的通道。

IISLRCK可以在串行时钟的上升沿或者下降沿改变,不需要同步。

在从模式,这个信号在串行时钟的上升沿被锁存。

IISLRCK在MSB位发送的前一个时钟周期内发生改变,这样可以使从发送器同步发送串行数据。

另外,允许接收器存储前一个字,并清除输入以接收下一个字。

MSB-justified数据格式

MSB-justified总线格式在体系结构上与IIS总线格式相同。

与IIS总线格式唯一不同的是,只要IISLRCK有变化,MSB-justified格式要求发送器总是发送下一个字的最高位。

2)音频编解码芯片UDAl341TS

UDA1431TS可把通过麦克风音频输入通道输入的立体声模拟信号转化为IIS格式的数字信号,传送给S3C2410的IIS控制器,然后CPU使用DMA控制器把得到的数字信号存放的一块内存空间上;同样DMA控制器也能把已存的数字信号通过IIS格式发送给UDAl341TS芯片,由该芯片转换成模拟信号,通过耳机音频输出通道输出。

利用UDA1341TS内部的PGA(可编程增益放大器)、AGC(自动增益控制)功能对模拟信号进行处理。

对于数字信号,UDA1341TS提供DSP(数字音频处理)功能。

S3C2410A的IIS接口线分别与UDA1431TS的BCK、WS、DATAI、SYSCLK相连。

当UDA1431TS芯片工作在微控制器输入模式时,使用UDA1431TS的L3总线(L3DATA、L3MODE和L3CLOCK)。

L3DATA、L3MODE和L3CLOCK分别表示与微处理器接口的数据线(L3DATA)、模式控制线(L3MODE)和时钟线(L3CLOCK)。

微控制器通过对UDA1431TS中的数字音频处理参数进行配置。

S3C2410A没有与L3总线配套的专用接口,可以利用通用I/O口进行控制。

 

第三章Bootloader移植与下载

3.1Vivi源代码安装

进入cygwin,Vivi源代码的安装:

$>source/tmp/edukit-2410/set_env_linux.sh//Linux编译环境变量设置,第一次打开Cygwin必须设置。

$>cd$WORKDIR

$>tar-xvjf/tmp/edukit-2410/source/vivi/vivi-20030929.tar.bz2

$>ls

…vivi……为$WORKDIR目录下其他内容

正确解压后,可以看到多了一个vivi目录,即vivi源代码的安装目录,后面的vivi配置及编译都得进入vivi目录进行。

再为EduKit2410实验系统打入vivi源代码的补丁文件:

$>cdvivi

$>patch-p1

patchingfileMakefile

patchingfilearch/config.in

3.2Vivi源代码分析与移植

vivi的代码包括arch,init,lib,drivers和include等几个目录,共200多条文件。

Vivi主要包括下面几个目录:

arch:

此目录包括了所有vivi支持的目标板的子目录,例如s3c2410目录。

drivers:

其中包括了引导内核需要的设备的驱动程序(MTD和串口)。

MTD目录下分map、nand和nor三个目录。

init:

这个目录只有main.c和version.c两个文件。

和普通的C程序一样,vivi将从main函数开始执行。

lib:

一些平台公共的接口代码,比如time.c里的udelay()和mdelay()。

include:

头文件的公共目录,其中的s3c2410.h定义了这块处理器的一些寄存器。

Platform/smdk2410.h定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。

3.3Vivi编译与下载

1)Vivi源代码的编译

然后执行以下命令进行编译:

$>source/tmp/edukit-2410/set_env_linux.shLinux编译环境变量设置

$>cd$WORKDIR/vivi

$>makeclean

图3.1vivi编译

$>makemenuconfig输入配置smdk2410:

Nandboot或smdk2410-amd:

NorFlashboot

图3.2图形界面下配置内核文件

其中,运行makemenuconfig后,选择LoadanAlternateConfigurationfile,配置文件名称如下:

smdk2410:

编译vivi在NandFlash(K9S5608)中运行;

smdk2410-amd:

编译vivi在NorFlash(AM29LV160DB)中运行。

这两个配置文件在\usr\local\src\edukit-2410\vivi\arch\def-configs\中,须复制

到\usr\local\src\edukit-2410\vivi\中;或者可以在menuconfig中输入全部路径。

配置好后,输入:

$>make

图3.3vivi映像文件生成

如果编过程中没有出现错误,则编译后的执行文件存放于vivi目录下。

2)下载:

在下载模式下,vivi为用户提供一个命令行人机接口,通过人机接口可使用vivi提供的一些命令。

如嵌入式系统没有键盘和显示,可以利用vivi中的串口,将其和宿主机连接起来,利用宿主机中的串口软件(如Windows中的超级终端或Linux中的minicom)来控制。

第四章Linux内核移植与下载

4.1Linux内核源代码安装

linux源代码安装

运行cygwin,执行以下命令完成cygwin环境下的Linux源代码的安装:

$>source/tmp/edukit-2410/set_env_linux.shLinux编译环境变量设置

$>cd$WORKDIR

$>tar–xvjf/tmp/edukit-2410/linux-2.4.18-rmk7-pxa1-mz5-i2c.tar.bz2

$>ls

…kernel……为$WORKDIR目录下其他内容

图4.1linux内核安装

正确解压后,相比之前可以看到多了一个kernel目录,即kernel源代码的安装目录,后面的Linux配置及编译都得在kernel目录进行。

实验中提供的linux内核已经包含了Linux源代码的补丁文件、I2C和网络驱动模块

4.2Linux内核源代码分析与移植

4.2.1Linux源代码分析

Linux内核由5个主要的子系统组成。

这5个子系统分别是进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VirtualFileSystem,VFS)、网络接口(NET)和进程间通信(IPC)。

进程调度控制着进程对CPU的访问。

当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。

可运行进程实际是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。

Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。

内存管理允许多个进程安全地共享主内存区域。

Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操作系统只将当前使用的程序块保留在内存中,其余的程序块则保留在磁盘上。

必要时,操作系统负责在磁盘和内存之间交换程序块。

内存管理从逻辑上可以分为硬件无关的部分和硬件相关的部分。

硬件无关的部分提供了进程的映射和虚拟内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。

虚拟文件系统隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,虚拟文件系统还支持多达数十种不同的文件系统,这也是Linux较有特色的部分。

虚拟文件系统可分为逻辑文件系统和设备驱动程序。

逻辑文件系统指Linux所支持的文件系统,如ext2、fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

网络接口提供了对各种网络标准的存取和各种网络硬件的支持。

网络接口可分为网络协议和网络驱动程序两部分。

网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有相应的设备驱动程序

4.2.2Linux内核及硬件模块驱动移植

内核和文件系统、图形用户系统(GUI窗口系统)可以分开,它们的开发、移植、下载甚至运行都是可以分开的。

内核移植是一个比较复杂的任务,也是嵌入式系统开发中非常重要的一个过程。

内核移植一般包括内核配置、内核编译和内核下载3大步骤。

4.3Linux内核编译与下载

4.3.1Linux内核源代码安装

运行cygwin,执行以下命令完成cygwin环境下的Linux内核源代码的安装:

$>source/tmp/edukit-2410/set_env_linux.sh//Linux编译环境变量设置

$>cd$WORKDIR

$>tar–xvjf/tmp/edukit-2410/linux-2.4.18-rmk7-pxa1-mz5-i2c.tar.bz2

$>ls

…kernel…//…为$WORKDIR目录下其他内容

正确解压后,可以看到多了一个kernel目录,即kernel内核源代码的安装目录,后面的Linux内核配置及编译都得进入kernel目录进行。

实验中提供的linux内核已经包含了Linux源代码的补丁文件、IIC和网络驱动模块。

4.3.2Linux内核的编译

$>cdkernel

图4.2

$>makemrproper清除所有的旧的配置和旧的编译目标文件等

$>makexconfig在图形界面下对内核进行配置(配置方法之一)

执行makexconfig后,弹出如图4.3的内核定制界面:

图4.3内核定制界面

选择按钮”LoadConfigurationfromFile”,如图4.4输入smdk2410:

图4.4内核配置文件

选择配置sound,设置Soundsupport为y:

设置BT878audiodma为y:

设置SMDK-2410audiosupport为y:

设置OSSsoundmodules为y:

根据提示加载配置文件后,点击按钮”StoreConfigurationtoFile”,如图4.5输入audio1:

图4.5存储配置文件

保存,SaveandExit。

如图4.6

图4.6

$>makedep//搜索Linux编译输出与源代码之间的依赖关系并生成依赖文件。

图4.7

$>makeclean//清除构造内核时生成的目标文件、模块文件和临时文件。

$>makezImage//生成压缩的内核映像文件。

图4.8

编译通过后,在/usr/local/src/edukit-2410/kernel/arch/arm/boot/目录下生成内核的压缩映像文件为“zImage”,此文件是最后要烧写到开发板的内核映像文件。

4.3.1Linux内核下载

内核下载:

1)启动超级终端(波特率为115200),连好串口线,在开机瞬间快速按空格键,进入vivi控制台命令行下;

打开S3C2410&NandFlash_vivi.cfg,在FlashProgrammer的Progarm页中选择:

vivi.bon&load.bin文件进行烧写。

如图4.9

图4.9烧写界面

点击按钮Progarm开始烧写,直到烧写成功;连接串口到PC机COM1,运行成功;连接串口线到PC机COM1,运行光盘中提供的Windows超级终端HyperTerminal.ht;开发板重新加电,程序运行后,在超级终端上可以看到串口输出类似以下信息:

图4.10超级终端界面

看到以上信息后,表示正在等待用户从超级终端下载文件。

这时,请点击超级终端菜单"传送"选择Xmodem方式下载vivi.nand文件,点击OK后等待下载烧写结束即可。

图4.11添加传送文件

图4.12下载vivinada

2)在vivi启动等待中,敲入空格键进入vivi界面环境,并输入以下命令:

vivi>loadflashkernelx<回车>烧写更新内核约4分钟即可烧写完毕,如图4.13

图4.13等待下载

3)立即选择要发送的文件,比如zImage文件,这里Linux环境下源代码arch/arm/boot目录下的zImage内核映像文件已转移到windows某目录下。

要选择合适的xmodem协议。

以上操作完成后,单击“发送,几分钟后即可发送完毕。

图4.14发送zImage

图4.15下载成功

第五章课程设计功能模块程序设计与交叉编译

5.1课程设计模块功能

5.1.1三个模块:

I2S音频总线接口电路;音频编解码器芯片udal41;DMA控制器;

5.1.2工作过程:

麦克风输入的模拟音频信号在音频编解码器中经过A/D转换和编码将模拟信号转换成数字信号,将这些数字信号先传给I2S音频总线接口电路中的FIFO,再由DMA控制器送入DSP中做相应的处理,这是录音的过程;DMA控制器将DSP中存储的信号传送给I2S音频总线接口电路中的FIFO,再发送给音频编解码芯片进行D/A转换,通过耳机输出模拟信号。

5.2功能模块驱动程序设计

5.2.1关于驱动结构体

由于目前许多硬件厂商在出售各种产品时,一般都不带Lin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1