>
首页 » 业界动态 » 基于ARM的网络音频终端的设计与实现

基于ARM的网络音频终端的设计与实现

作者:沈颖,沈建华  时间:2006-08-10 21:38  来源:
摘 要:介绍了一种基于ARM7的网络音频终端的设计与实现。对网络音频终端的系统需求、硬件结构、软件系统框架设计作了详细的分析和描述。通过优化设计,取得了很好的实际效果。

关键词:ARM;S3C44B0X;音频终端;网络协议

1 引 言

随着网络技术在嵌入式系统中的发展应用,基于网络音频技术的诸如数字化语音教室、同声翻译、音频点播系统等应用需求越来越大。本文介绍了一种基于ARM处理器的网络音频终端的设计与实现,采用以ARM7TDM I为核的SOC芯片,所有数据传输都遵循标准网络协议,音频信号以UDP协议的方式传递,控制信号和文本信号则以TCP / IP方式传送。

2 系统需求与硬件结构

网络音频终端对于不同的应用,其高层功能各不相同,但其底层提供的功能支持是基本一致的。它所要完成的主要任务是:

(1) 将从网络收到的音频数据流通过D /A转换进行实时播放;

(2) 收到的文本、状态信息通过LCD显示;

(3) 话筒信号经A /D转换成标准的16位PCM流,以UDP包的形式发给指定的目标地址;

(4) 接受用户键盘命令,以TCP包发给Server。

图1 网络音频终端硬件框架

要完成这些功能,需要有一定性能的CPU,网络控制器和音频编解码器。另外系统需要对大量的音频数据流进行存储和处理,需要有比较大容量的存储器。经过多种系统硬件设计方案的对比,考虑到系统成本,优化设计的系统硬件结构见图1。

SAMSUNG公司的S3C44B0X是基于ARM7TDM I核的16 /32位精简指令微处理器,具有低功耗,高性能的特点,丰富的片上资源更使得它被广泛用于各种应用。与本系统相关的特性有:

· 8个MEMORY BANK和可选择的内部SDRAM控制器,用于管理外部存储器,最大存储容量达到256M;

· LCD控制器,支持灰度和单色的LCD模块;

·四路DMA控制器,其中两路称为ZDMA (通用DMA)被连到SSB ( Samsung System Bus)总线上,另外两路称为BDMA(桥DMA)是SSB 和SPB ( Samsung Peripheral Bus)之间的接口层,相当于一个桥,因此称为桥DMA。ZDMA和BDMA都可以由指令启动,也可以由内部外设和外部请求引脚来请求启动。ZDMA用来在存储器地址空间的I/O设备和外部存储器之间传输数据,包括存储器到存储器、存储器到I/O设备(固定地址) 、I/O设备到存储器之间的传输数据,如数据传输的一端可以是固定地址的网卡寄存器,另一端可以是外部存储器如SDRAM。BDMA控制器只能在连到SPB上的IO装置与存储器之间传输数据,在这种情况下,连到SPB上的IO装置有UART、IIS、SIO。如数据传输的一端是IIS控制器的F IFO,另一端是外部存储器SDRAM。

·一路IIS总线接口可以实现与外部CODEC的连接,可以同时接收和发送音频数据,并且支持DMA数据传输。

·内置PLL锁相环,可以设置系统的工作频率,最高可达到73MHZ。

· S3C44B0X的32位地址可以分段映射,各段可以各自独立设置成8bit/16bit/32bit,这样使得数据传输的效率比较高,也便于连接各种存储器和接口芯片。

CRYSTAL的CS8900A是一种NE2000完全兼容的网络控制器,它的总线接口是ISA标准, ISA总线支持16位数据总线宽度, 3V接口电压,可以和S3C44B0X直接相连。TLV320A IC23是TI的一款高性能的立体声音频Codec芯片,具有IIS音频接口,内置耳机输出放大器,支持M IC和L INE IN两种输入方式(二选一) ,且对输入和输出都具有可编程增益调节,还具有很低的能耗。FlashMemory(512Kx16)中存放系统引导程序、执行程序和中文字库。SDRAM (4Mx16)提供系统工作存储器,包括运行程序、音频数据缓冲、网络数据包等。

3 软件结构设计

网络音频终端系统不仅要实现网络协议,还要管理外围设备和接口,完成具体的应用功能。因此,设计一个好的软件框架对于方便程序设计,实现程序以及以后功能的扩充是具有很大意义的。本系统中的网络协议比较复杂,希望划分为多个任务来实现,而且音频数据量较大,如果一次任务调度完成大量的音频数据流处理会过长时间的占用CPU资源,要合理选择单次任务调度时处理的音频数据量,此外系统还要管理硬件设备和接口(包括对键盘的响应,LCD屏的显示缓冲的刷新) 。所以整个程序采用多任务调度的设计方法,这种方式把整个程序划分为几个互相协作的任务来完成,每个任务都有自己的处理流程,任务和任务之间可以互相交换数据,在任一时刻CPU只能分配给其中的一个任务。

基于这样的多任务调度的软件设计方法,要对网络音频终端整个系统进行合理的任务划分,将整个程序划分为多个任务来调度。整个程序由一个主循环和多个任务组成,当系统初始化后就进入主循环,主循环依次调用几个任务来完成所需要的操作。然而每个任务调度并不是抢占式的,并且也不象一般的操作系统那样在各个任务之间分配时间片。这样做的好处是简化任务管理的设计,避免在任务切换时所需要的保护工作。并且要合理设计和安排各个任务,避免某个任务长时间占用CPU而其它任务没有运行的机会。整个系统软件框图如图2所示。

图2 网络音频终端软件系统框图

3. 1 完成初始化工作

初始化工作包括两部分来完成:首先是系统CPU初始化,包括禁止所有中断、初始化存储器(包括SDRAM) 、初始化堆栈、设置中断等等,并合理安排它们的次序。由于这类代码直接面对处理器内核和硬件控制器编程,一般都使用汇编语言;其次是对各个芯片的初始化,由于以太网络控制器必须分配一个合适的MAC地址,才能把它和接收到的数据帧中的目的地址进行比对,所以只有进行了适当的配置之后,网络芯片才能正常的工作。而且此工作必须在任何网络操作之前被完成。其它的诸如IIS控制器,LCD控制器, CODEC等也必须在对其进行任何操作之前完成初始化工作,最后要对整个系统中的全局变量进行初始化。

3. 2 进入主循环,依次反复调用各个任务

划分好各个任务是整个程序框架设计最重要的工作,而且必须保证一次任务轮询时间不会过长。整个系统的主要工作是TCP / IP网络协议栈的工作和对音频数据流的处理。因此重点是对这两部分的任务作出正确合理的划分。

3. 2. 1 音频部分 
将放音和录音工作划分为两个任务来调度,由于S3C44B0X的IIS控制器支持一路音频数据的DMA传输,就将其中的录音工作(从话筒采集的数据)直接交给DMA来完成,即端口每发送或接收到一个单元的音频数据,都会自动触发DMA将其搬送到一个内部的缓存区,减少对CPU资源的占用。放音工作也可以借用DMA的中断服务程序_irq void Bd-ma0_done ( void) ,在DMA完成一次把从话筒采集进来的一定量数据搬到内存里面的同时,完成了同等数据量的放音工作,这样在放音和录音的时刻就不会出现迟缓的现象。

3. 2. 2 网络协议部分 
网络部分主要完成的工作包括:发送报文(输出)和接收报文(输入) 。先简单的将网络部分的工作划分为两个任务来调度。发送报文利用一个功能函数Send Packet ( ) ,它是实际控制网络控制器发送数据包的唯一入口,SendPacket ( )的关键操作是启动一个TCP有限状态自动机,正是这个自动机完成了发送TCP报文的工作,在SendPacket ( )函数中再区分各种报文的类型,打成各种包将其发送出去。而整个TCP / IP协议栈输入的来源可以利用一个函数ReceivePacket( )来实现,它将启动DMA直接读取网络控制器中的寄存器信息,以判断是否有新的数据包到达。如果有则把它从网络控制器中读取回来,放入接收缓冲区并交由协议栈进一步处理。该函数必须被反复地调用,而且调用的频度越高整个协议栈的吞吐率就越大。使用不同的网络控制器,这个函数应该有不同的实现。函数CheckNewPacket必须管理在片的一个环形接收队列,并处理各种异常指示。输入的报文有不同的类型,还要完成一个输入分组的工作,就是将输入部分再仔细划分两部分,当一个输入分组到达时,网络接口层检查分组中的类型字段,以确定使用何种协议来处理此分组。可以利用一个过程对分组进行分路。分组携带ARP信息或IP数据报时,它将被传递给适当的协议程度,否则释放缓冲区,分组将被丢弃。

3. 2. 3 其它部分 
LCD显示缓冲区填充,键盘扫描,键盘处理各自单独作为一个任务来调度。首先,键盘扫描任务需要实时响应,将键盘扫描工作放在定时器中断中完成。整个键盘扫描任务和键盘处理任务的接口,只有一个全局变量uiKeyBoard,从而使得键盘扫描和处理工作独立而统一。

其次LCD显示缓冲区填充任务,考虑到如果一次任务调度填充整个显示缓冲区的话,整个过程数据量比较大(所用的LCD屏为320*240) ,这样在刷新过程中会较长时间的占用CPU,使得其它任务来不及及时响应,而且过多的占用CPU资源,更会对放音录音工作造成一定的冲击,也不符合多任务调度最初的思想,因此,选择了每次任务调度即一次填充显示缓冲区只完成对整块屏幕十五分之一(正好一行字符)的更新工作。这样,保证了整个程序各个任务轮询的时间不会太长。

4 结束语

通过软、硬件的优化设计,本文介绍的基于SAMSUNG公司的S3C44B0X芯片的网络音频终端已经测试并正常运行,具有良好的稳定性和很高的性价比,已成功应用于数字化语音教室。如果能够对音频数据采用实时高效率的压缩技术(比如实时MP3编码技术) ,网络传输效率就可以大大提高,但对于CPU有更高的要求,也会增加系统成本,有待于以后进一步的研究。

相关推荐

ARM收购Geomerics 强化行动装置游戏视觉

ARM  游戏视觉  2013-12-18

ARM:2013年Mail芯片出货量将超三亿片

ARM  芯片  2013-12-06

ARM控制智能机及平板芯片市场趋势将持续

ARM  控制智能机  2013-11-28

推动连网与行动创新 ARM聚焦物联网商机

ARM  物联网  2013-11-26

全球75%企业高管关注物联网新机遇

ARM  物联网  2013-11-08

英特尔将代工ARM芯片 或引发芯片价格下跌

英特尔  ARM  2013-10-31
在线研讨会
焦点