本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
摘 要: 针对当前语音网络传输系统中存在的环境噪声、回波、设备工作不稳定等问题,提出了一种新型的嵌入式语音网络传输系统设计方案。该系统以ARM9嵌入式处理器S3C2410为核心,ARM Linux为实时操作系统,CS8900为网络传输芯片,UDA1341为音频编解码芯片,使用了一种新型的芯片FM1182进行语音处理,能够很好地实现噪声抑制和回波抵消。给出了相关硬件的电路设计方案,同时介绍了软件实现流程,并详细介绍了语音缓冲区的算法。
关键词: 嵌入式系统; UDA1341; FM1182; 语音传输; 多线程
近年来,嵌入式音频系统广泛应用于手机、PDA、MP3、对讲系统等消费电子产品。如今对嵌入式音频系统的要求不仅仅只是完成通话功能,对语音传输的清晰性、实时性、抗干扰性以及系统的稳定性、安全性也提出了严格的要求[1]。
本设计应用Samsung公司的S3C2410微处理器,Philips公司的UDA1341音频编解码芯片以及Fortemedia公司的FM1182语音处理器,结合SDRAM、Flash存储电路、CS8900网络传输芯片等其他外围电路构成了一个嵌入式网络语音传输系统。该系统语音数据的采集、编解码、网络数据包传输、播放等过程均为Linux下的多线程操作,实现了网络实时传输功能。该系统还添加了一个加速度传感器的报警电路,防止系统设备被移动。该系统设计特别适用于公共场所的语音求助,如银行的ATM柜员机、火车站等。
1 系统总体设计和工作流程
本语音网络传输系统包括ARM9处理器S3C2410控制模块,网络传输模块(包括网络传输芯片CS8900、网卡变压器和网络接口等),音频编解码模块UDA1341,语音处理模块FM1182,存储器设备和其他外围设备(包括数据缓冲电路、报警电路、RS232串口电路、JTAG接口等),其结构框图如图1所示。
ARM9处理器为整个系统的核心,控制着其他模块的工作运行。系统通过网口与因特网连接,连入远端中心,通过网络进行语音数据包的传送和接收。语音处理模块FM1182负责麦克风录入声音和音箱设备播放语音,并且通过线输入线输出与语音编解码芯片UDA1341相连,进行语音数据模拟传输。语音编解码芯片通过IIS总线与ARM9处理相连,语音格式采用线性PCM编码。
整个系统的运行流程如下:FM1182的麦克风录音后,语音数据通过线输出送入UDA1341,线性PCM编码后通过IIS总线送入ARM9处理器,然后生成网络数据包,经过因特网向远端传送;从因特网接收到数据包后,经过IIS总线送入UDA1341进行解码,然后通过线输入将语音数据送入FM1182,最后通过音箱进行放音。
2 系统硬件设计
系统硬件主要分为控制模块、音频编解码模块、存储模块、网络传输模块和语音处理模块5个模块。
2.1 控制模块
采用Samsung公司的S3C2410微处理器。S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18 μm制造工艺的32 bit微控制器。该处理器拥有:独立的16 KB指令Cache和16 KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer,I/O口,RTC,8路10 bit ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203 MHz[2]。此外,为了调试系统,还增加RS232串口电路和JTAG调试接口。
2.2 音频编解码模块
采用Philips公司的UDA1341音频编解码芯片。UDA1341提供2组音频信号输入线、1组音频信号输出线、1组IIS总线接口信号线和1组L3总线。UDA1341通过IIS-BUS接口与S3C2410传输音频数据,控制数据通过L3接口传输。L3总线接口包括微处理器串行数据线L3DATA、微处理器接口模式选择线L3MODE和微处理器接口串行时钟线L3CLOCK。当UDA1341工作在微处理器输入模式时,微处理器通过L3总线对UDA1341中的音频处理参数和系统控制参数进行配置。S3C2410中没有L3总线专用接口,电路中使用I/O口连接L3总线。IIS总线接口信号线包括位时钟输入BCK、字选择输入WS、数据输入DATAI、数据输出DATA0和音频系统时钟SYSCLK信号线。IIS总线接口对FIFO存取提供DMA传输模式代替中断模式,它可以同时发送数据和接收数据,也可以只发或只收[3-4]。
2.3 存储模块
存储模块分为Nand Flash和SDRAM两部分,包括一片64 M×8 bit的Flash(K9F1208)和两片4 M×16 bit×4 Banks的SDRAM(K4S561632C)。S3C2410芯片本身提供了SDRAM接口,只须对存储器控制器相关的寄存器进行适当的配置。系统上电或复位后从Flash中运行Boot loader, 由Boot loader初始化硬件并将μCLinux 拷贝到SDRAM中运行。
2.4 网络传输模块
网络传输模块包括以太网接口芯片CS8900A、网络指示灯、网络变压器和RJ45接口等,用于实现本系统设计与局域网之间的数据交换。硬件电路使用的芯片除了处理器S3C2410和以太网芯片CS8900A,还有网卡变压器。CS8900A通过数据总线和地址总线S3C2410处理器相连接。为了保证数据传输的稳定性,在S3C2410和CS8900A之间增加了数据缓冲芯片SN74LVTH162245。
2.5 语音处理模块
FM1182语音处理器是富迪科技公司最新推出的低功耗,高性能的芯片。FM1182提升AEC性能-60 dB (声学回声消除), 增强噪声抑制能力。通过内建支持SAM(迷你阵列麦克风)技术, 采用两个几乎靠在一起的麦克风可以达到拾音束形成的效果[5]。
本设计中,FM1182通过其UART口连接到S3C2410,微处理器通过串口对FM1182进行功能配置。FM1182通过线路输出LINEOUT和线路输入LINEIN分别与UDA1341的VIN1和VOUT相连,由于传输的为模拟语音信号,因而电路设计中LINEOUT和LINEIN与UDA1341连接的线应尽量短,以免受到电磁干扰。FM1182的麦克风阵列电路使用一个全向麦克风,一个定向麦克风,形成麦克风拾音束。FM1182的SPEAK接口通过功放连接一个音箱进行语音播放。FM1182、UDA1341和S3C2410的连接图如图2所示。
3 系统软件设计
本系统采用的是开放源代码的Linux操作系统,允许任何人获取并修改Linux的源码。在配置Linux的应用程序时,可以选择加载然后根据用户的需要设计这些软件的配置文件从而实现系统的各项功能。嵌入式Linux操作系统主要由三个基本部分组成:引导程序、Linux内核(由内存管理、进程管理和中断处理等构成)和文件系统。系统软件设计部分主要包括操作系统的裁剪和编译、驱动程序的编写和主程序的设计。
3.1 软件体系结构
系统的软件设计架构从下而上分为硬件驱动层、操作系统层、网络协议层和应用程序层。硬件驱动层主要包括CS8900和UDA1341的驱动程序设计;操作系统层移植了ARM Linux的操作系统内核;网络协议层移植了TCP/IP的网络通信协议;应用程序层在嵌入式Linux操作系统上运行应用程序。
Linux下网络数据传输主要利用套接字socket接口进行。套接字socket是一种常用的进程间通信机制,通过它不仅能实现本地机器上的进程间通信,而且通过网络能够在不同的机器上的进程间进行通信。常用的套接字socket类型主要有两种:对应TCP服务的流式套接字socket和对应UDP服务的数据报式套接字socket[6]。传统的语音传输一般采用UDP通信协议,即不保证网络数据包是否在网络中丢失。针对此语音网络传输系统的应用背景,即主要应用于银行的ATM柜员机的对讲系统,要保证语音信号在传输过程中不丢失,所以对经过编码后的语音信号采用TCP/IP协议进行传输。本系统的基于TCP协议的通信流程图如图3所示。
|