基于ARM的音频录放系统设计

时间:2022-07-22 03:42:30

基于ARM的音频录放系统设计

摘 要:本文给出了基于ARM体系结构的音频录放系统总体设计方案。搭建硬件平台、构建交叉开发环境,对Linux操作系统内核移植,根据Linux2.4内核UDA1380音频芯片结构,设计了符合系统要求的UDA1380音频驱动、矩阵键盘驱动,基于音频驱动系统调用函数,设计与开发用户应用层程序,实现了音频录放系统的设计要求。

关键词:Linux;S3C2410;UDA1380

中图分类号:TP391 文献识别码:A

0.引言

当今社会是一个数字化信息迅猛发展的社会,语音信息的数字化处理技术得到了全社会的普遍认可和广泛的应用。因此生产的语音信息处理器的性能也随着科学技术的快速发展而愈来愈好。数字语音录放系统是指利用数字技术对语音信号进行采集、处理,并且在一定的存储设备中进行存储,而且可在需要时进行输出。与模拟设备相比较,数字设备更趋向于集成化、微型化,且成本低、稳定性强、操作简单方便。使得数字语音录放系统广泛地渗透到仪器仪表、人工智能、电话的录放音、车辆的到站提示音、移动电话机以及其他便携式电子产品、监控环境中使用的语音采集系统、智能玩具等多种领域。

本文研究的意义在于它能用于实时监听、信息提示,会议记录,站名广播等,能够省去听众现场记录,节约笔墨纸张,可使听众专心听讲,可按设定时间功能自动播放提示预警信息等。

1.系统总体设计(图1)

1.1 硬件整体结构

本系统的硬件电路部分将由以下器件组成:微处理器S3C2410、内存、24bit编解码芯片UDA1380、时钟、电源、矩阵键盘等。内存包括16MB的NOR FLASH和32MB的SDRAM。S3C2410内置了一个IIC控制器,控制器通过IIC总线控制音频信号。FIFO(First In First Out)是先进先出电路,在系统中引导数据先进先出功能,作为一个临时存储数据的音频数据缓冲区,通过S3C2410内置IIS控制器共同工作实现音频数据传输。由于S3C2410有一个内置DMA控制器,系统可以应用DMA传输和缓存段来提高音频数据实时性处理性能,系统硬件结构如图2所示。

1.2 音频接口电路设计

UDA1380的L3总线接口用来作为混音器的控制接口,微处理器通过此接口来配置UDA1380中的数字音频参数和系统控制参数,以方便对输入输出音频信号的音量大小、高低音和静音等功能进行控制。L3总线包括微处理器接口模式线(L3MODE)、微处理器接口时钟线(L3CLOCK)以及微处理器接口数据线(L3DATA)三根接线。通过对L3模式的控制来选择使用哪种方式传输数据,当L3选取模式0时,选择IIC总线进行传输数据;当L3选取模式1时,选择L3进行传输数据。在系统设计时选用IIC总线进行传输数据和控制信号,因此把L3模式直接接地,即是使L3MODE=0。而关于L3的余下两根接线,L3CLOCK与IIC的本身时钟信号线链接,L3DATA与IIC的本身数据传输线链接。这里需要特别注意的是,为了保证电路可以安全使用,在连接UDA1380的两个引脚时都要加一个上拉电阻,并且外接+3.3V的电源。

在本次系统设计中,UDA1380的音频输入设备选取为麦克风,输出设备任选扬声器或者耳机。接线情况,麦克的左右声道分别连接UDA1380TT的VINL、VINR;输出设备的左右声道需要接到UDA1380TT的VOUTL、VOUTR。

在进行时钟信号连线以及选择字段时,其IIS总线的时钟信号IIS_SCLK的两端分别与UDA1380的BCK引脚和S3C2410的GPE1引脚相连接;而IIS_LRCK字段选择的两端分别与UDA1380的WSO/WSI引脚以及S3C2410的GPEO引脚相连接。S3C2410的GPE2引脚与UDA1380的SYSCLK相连激活系统时钟。

1.3 键盘接口电路设计

控制端采用4×4矩阵键盘,将直接与处理器的I/O口互连,矩阵键盘4行分别连接GPC7、GPC8、GPC9、GPC104个引脚,其四列连接的则分别是GPD0、GPD1、GPD8、GPD9引脚。系统工作时将会采用轮循方式,这样在满足系统的实时性要求的同时,还能实现键盘的去抖动功能。

2.系统软件设计

2.1 建立交叉编译环境

在对Linux系统进行移植之前,先要在PC机上建立一个交叉编译环境,目的是使在PC机平台(即宿主机)上编译的目标文件能够在ARM9平台(即目标机器)上顺利执行。大体流程如下:

(1)交叉译工具网络下载:cross-2.95.3.tar.bz2;

(2)根目录的建立,在宿主机上任意盘符下建立/usr/local/arm目录,并将解压后的交叉编译工具置于此目录下;

(3)设置环境变量,实现命令路径寻找;

(4)为使环境变量能够每次在登录时自动生效,需在/etc/bashrc中添加相关路径:PATH=$PATH:/usr/local/arm/2.95.3/bin。

2.2 内核移植、编译及烧写

(1)在宿主机的终端下,输入make menuconfig命令进行内核配置,除了一些基本功能模块以外,将内核中其余不必要的功能模块全部去除。

(2)对于网络配置、文件系统的配置、块设备和可加载模块等相关模块的配置,由于与多数嵌入式开发相同,在此不再累述。

(3)在宿主机终端的my_project/kernel目录下执行:

[my_project//kernel]#make dep

[my_project/lkernel]#make zImage

运行生成的映像文件zImage,自动保存在my_project/kernel/arch/arm/boot当中。

(4)根据前文中的内存地址空间分配,通过网口进行新内核的烧写。0x1040000为内核烧写到FLASH的地址;0x30008000为内核下载到内存SDRAM中的地址,其烧写空间大小为0x100000,内核文件的大小不能超过烧写空间大小。

2.3 初始化底层程序

DSP程序初始化过程主要有:设定工作频率、配置存储区域、McBSP的初始化、设定IIC控制器相关参数、通用IO口设定以及设置定时中断等,使系统能够在正常状态运行;

音频编解码初始化过程主要有:设定音频采样频率、位数以及工作模式等,完成音频录放和编辑界面程序;

SD卡初始化过程主要有:GPIO模拟SPI控制器,用户字节、块读写的基本程序设计,提供后续读写接口。

2.4 音频录制

(1)设定录音参数,用户在录音之前将录音参数设定好。

(2)在上一步录音参数设置好后,执行打开音频设备命令,取得访问音频芯片权利。在录音过程中,文件标识符将会通过返回的一个正整数产生。在后续录音操作中,此文件标识符将会在相关系统调用函数中使用。

(3)录制音频文件过程,缓冲区中输入从设备文件中读取的录音数据。

2.5 DSP音频设备驱动

(1)DSP设备驱动,在file_operations数据结构中,选取实现驱动所需系统调用函数:open,write,ioctl,poll,release等。

(2)由数据结构中函数指针,设计相应入口点函数。如:open函数,音频芯片访问权通过系统调用它来实现,并可检查设备特定的错误;read函数接收音频芯片数据,进行录音操作;write函数向音频芯片发送数据,进行放音操作。

2.6 放音程序设计

初始化中断和串口,申请与音频数据相同长度字节的内存空间,并把flash存储器中存放数据拷贝到相应存储空间中,最后直接播放存储的音频数据。

结语

本文研究了基于嵌入式平_的音频录放系统。该系统是一种高实时性音频处理系统,它主要由S3C2410微处理器和UDA1380编解码芯片构成。系统设计包含硬件设计与软件设计两大块。系统可用于人工智能、通信工具、语音识别系统、电子产品、监控环境中等,具有重要的理论与现实意义。

参考文献

[1]葛超,王嘉伟,陈磊. ARM体系结构与编程[M].北京:清华大学出版社,2007:101-132.

[2]潘巨龙,等. ARM9嵌入式Linux系统构建与应用[M].北京:航空航天出版社,2006:42-77.

上一篇:机床防护门防夹装置结构 下一篇:解构主义对服饰图案设计的影响