摘 要: 本文主要讨论如何在网络音视频PA系统中应用DS80C400网络型微控制器。
关键字: 网络型微控制器 ; PA系统 ; 网络多媒体音视频系统
前言
新型DS80C400是具有高性能结构和多层网络节点和I/O口及稳定的ROM固件的网络微控制器,它广泛应用于工业控制/自动化、数据转换器、远距离数据采集设备、环境监测、家庭/办公室自动化、交易/支付终端及网络传感器等领域.
随着电子信息技术日新月异的高速发展,令人振奋的多媒体应用,包括有线扩音系统(PA-Public address system)、网络门、MP3播放器以及安全摄像机等需求也是与日俱增。对此,特别在网络技术的发展的今天,可以采用一种低成本的网络型微处理器DS80C400建立与实现。其特点是无需任何硬件的图像压缩,便可每秒传输4帧原始的黑白图像,而分辨率可达240
180像元素。本文将对如何在音视频范例网络多媒体系统中应用DS80C400网络型微控制器进行分析与讨论。
网络型有线扩音(PA)系统的建立
传统的的PA系统
PA系统是用于寻呼/内部通信和扩音的系统,其扩音系统有二个主要部件,即放大器和扬器,其组成见图1示意框图。图1中所例:以一个放大器带4个16
的扬声器;而PBX(Private branch exchange) 用户交换机是把外面的电话线接到某个建筑住宅或办公室分机上,
而PBX系统功能是包括呼叫转移、快速拔号、内部/外部寻呼和呼叫详细记录等。
PA系统工作时,接线员是用广播、寻呼形式对人员播发若干信息,如"所有工作人员请注意,正在测试火警系统",或"主管人员,请到化学品库报到"
等等。对这类系统人们常常采用传统的独立布线和基础结构的技术就可实现了。
网络型PA系统
而今,如果将这个系统搬到网络上则情况又会怎样? 回答是不仅可以省掉独立的音频布线,而且还可以使系统变得更加智能。这是由于寻呼系统已与各建筑物的访问控制系统或某个网络服务器相连接,使接线员很方便知道某个人员所处的位置。而且,这种计算机化的网络型PA系统还能够自动重复某个消息,使接线员能够被解放出来去处理更多的呼叫。
更为新颖的是 :系统亦可以接人公司范围内的邮件系统,实现邮件至语音转换服务;或通过一个能够输入传呼请求的网站,发布消息,而无须人工干预。
图1 扩音(PA)系统示意图(略)
那么怎样才能建立这样一种网络型PA系统呢?首先,至少需要一台运行web界面和电子邮件网关并带麦克风的服务器,我们称这台服务器为主控服务器(Master
control server)。下一步,需要一些扬声器模块,这些模块是一些网络单元,即DS80C400网络型微控制器,具有能够驱动扬声器的数模转换器(DAC)。图2为DS80C400网络型微控制器内部结构组成框图
图2 DS80C400网络型微控器内部结构框图(略)
图3展示了网络型音视频PA系统架构示意图。该网络型PA系统在两座建筑物M与L之间的实现网络运行,它包括7个扬声器单元和一个主控服务器;建筑物之间的网络连接采用了一个路由器(Router),而不是网桥(这样做的主要好处在于软件的设计与程序的运行程序)。在本网络型PA系统中,DS80C400网络微控制器驱动扬声器单元。由于这类网络型PA系统无需很高的带宽和处理能力,因而该DS80C400控制器所具备的PC系统的处理能力和存储资源足以支撑系统运行。该网络型PA系统
对采样率在22.05kHz 8位的非压缩单声道音频带宽要求, 足以在180kbps以内提供优异的话音质量,而且也不用为硬件解压缩支付成本,
从而大大提高了本网络型PA系统的性能价格比。
图3 PA系统架构示意图(略)
图4为该类网络型音频系统的相对带宽需求示意图。图4所示剖面线为网络型音频PA系统带宽区域,说明该类网络型音频系统的音频带宽也只需要0.25Mbps,即使在早期的网络(半双工式)10Mbps上(见图4坐标纵轴),相对于本网络型PA系统具备5Mbps有效带宽的容量来说,音频带宽(0.25Mbps)也仅使用了其中4%的容量。与当今的大多数以太网所带宽需要100Mbps相比,显得极低,大大节省了容量。
图4 PA系统带宽图与以太网带宽(100Mbps)相比(略)
扬声器单元硬件配置
除DS80C400外,扬声器单元还需要一些储存器(512kB的SRAM就足够了)、网络PHY(开放系统互连)、DAC、放大器和扬声器。为此,通过下列技术简化了安装和代码的分发:
* 通过DS80C400网络微控制器所配备的网络引导方式“NetBoot”, 并由NetBoot采用DHCP(动态主配置协定)和TFTP(普通文件传送协定)网络协议获取IP地址和装载程序数据,降低了安装和配置成本;
* 以太网供电(见图3上下二横圆型粗线所示--以太网电缆)简化了布线,降低了材料成本。
上电后,DS80C400 ROM通过DHCP(动态主配置协定)获取IP地址,查询网络,以获取最新版的应用程序。应用程序执行后,系统就准备接收音频数据。在现场找一个未使用的网口,连上电缆,就完成了新扬声器模块单元的安装。
扬声器单元软件
为简化硬件的安装,软件需要做一些额外的工作。由于两座建筑之间存在路由器(见图3中间),广播、呼叫消息不能直接从一座建筑到达另一座建筑。所以,不能采用简单的消息广播。一个新的扬声器必须发送组播消息,直到主控器服务器确认了该扬声器的位置和参数。一个新的扬声器系统事先无法知道主控器服务器的位置,因而也需要发送组播消息来请求主控器确认。如果考虑安全问题,则交换信息可以采用数字签名,以排除冒充服务器的系统。一旦采用传统的单播消息配置后,该扬声器单元就加入一个组播群,等待音频包。这些音频包由主控器组播。为什么用组播?DS80C400和TINI(Tiny
interNet interface--微型因特网接口)运行环境支持组播,它不同于从一个源发往一个目标的单播数据包,允许多个目标主机接收相同的数据,从而消除了重复传输,节省了带宽。在网络中,组播包采用一类特殊的目标IP地址,称为组播群网络。
PA系统的范例程序采用C语言编写。要说明的是除join( )之外,这些编写步骤对于那些为TCP/IP(传输控制协定/国际互联协定)网络编写代码的程序员来说,应该是相当熟悉的。
以太网供电
连接设备到网络中有一个不利的方面---它要求给网络添加额外的电缆。电源可以被整合到以太网电缆中空余的导线上。解决这个问题有多种方法,最为常见的是IEEE802.3af标准,规定将48V电源连接至8引脚以太网连接器的7、8引脚(+)和4、5引脚(GND)。48V电源普遍应用于电话系统,因此配线柜中通常已带了这个电源。为了能够应用于网络型微控制器,电源必须降压至某个合适的水平。
文本到语音
使用麦克风记录现场语音,或播放存储在网络服务器上的录音,是应用网络型PA系统的方式之一。另外一种用法是利用接收自电子邮件,web页或蜂窝电话短消息业务的文本广播消息。
为系统添加语音合成非常容易,转换可以直接在主控服务器上进行,利用文本到语音转换引擎从输入文本产生音频波形。然后就可以将这个波形如同其它音频信号一样发送至扬声器,扬声器模块无须作任何改动。文本至语音转换引擎已广泛应用,并且已经成为有些操作系统(例如Mac
OSX)的组成部分。
娱乐级音频
如果音频采样以非压缩方式传输,则CD音频就会遇到问题。以44.1kHz 16位采样、未经处理的立体声需要1.44Mbs的网络带宽(几乎占了10Mb网络的30%),
已经超出了许多网络可提供的带宽。
象MP3这样的压缩算法能够降低数据速率,由此大大提高网络负载能力,使系统切实可行。配合硬件解压缩芯片,DS80C400能够轻松完成任务。事实上,36MHz的时钟速率足以连续播放192kb的MP3。
成像
也可以将视频信号连接至DS80C400。这样的系统将十分有用,如安全照相机,采用一个廉价的照相机每秒获取一个快照,并传送到网上用于显示和存储。服务器端的后处理可完成运动监视并警示保安人员,比较好的照相机选择是现代的蜂窝电话--它们不仅小巧、廉价而且随处可得,大多采用一种串行协议进行通信,但因制造商而异。在连接至某个特定相机之前,应确认已经得到了所有需要的技术信息。
实验表明,无须任何硬件辅助的图像压缩,DS80C400便可每秒传输4帧原始的黑白图像(240 180),而且还留有一定的余量可用于处理话音级的音频。对于那些熟悉Unix网络编程的人来说,closesocket(
)就是close( )。DS80C400版本的close( )函数由文件系统使用。与Windows系统一样,DS80C400上的套接字句柄与文件句柄是不可互换的,必须使用独立的套接字函数。
相机系统提供给DS80C400的时钟频率为73.7MHz,接近于75MHz的极限值。73.7MHz的频率由基频模式的18.432MHz晶体和集成在DS80C400上的PLL(Phase
locked loop--锁相环路)经4倍频后得到。这种设计降低了整个系统的成本,同时还允许工作在接近微控制器最高频率的上限。
网络门
将安防照相机与双向音频、按钮和蜂呜器等结合在一起是很容易做到的。这样的系统允许我们建造一个网络门(图5)。对于DS80C400来说,按钮和蜂鸣器仅仅是外部设备,可以直接连接到普通I/O上。在Keil
C中,通过sfr和shit,很容易定义I/O端口:
/* Define pOrt 1 */
Sfr pl = 0x90;
/* Define P1.7 (port 1 is bit addressable) */
sbit pl_7 = pl^7;
/* Toggle Pl.7 */
p_7 = !pl一7;
采用归ibutton和内置于DS80C400的1-Wire主控制器接口,很容易在网络门上添加安全认证功能(某种程度上讲,该接口的编程更要复杂一些,因此Dallas
Semiconductor提供了库文件,以便简化任务)。
最后提示:象网络门这样的系统可能需要完成多种处理,DS80C400 ROM包含了一个任务调度器。下面实例说明了如何在C语言中使用它。还有,在工业级应用中,应该检查返回代码。
unsigned Char pri, task;
/* Get the current task */
task = task_getcurrent( );
/* The current task'S priority */
pri = task_getpriority(0);
/* Decrease the priority */
task_Setpriority(0, pri-1);
/* Sleep */
task_Sleep(0, 0, 500);
样例程序还包含了一些有用的函数,如task_fork( ),通过复制当前任务,创建一个新的任务。Task_kill ( )取消一个任务,以及task_suspend(
)挂起一个任务。
开发DS80C400
可以采用多种方法开发DS80C400的应用软件。若想快速评估方案,可以考虑采用Java语言和TINI运行环境。对于那些要求考虑每个指令周期的应用,最好采用最优化的汇编语言.
在本文中,我们采用了C语言。Keil C编译器支持DS80C400连续的24位寻址模式,允许高达16MB的代码/数据存储空间。为了使用这种模式,要求采用扩展版本的编译器和连接器(CX51、LX51)。这些工具包含在专业开发者工具中(PK51)。
Dallas Semiconductor公司提供接口至DS80C400内部网络栈的C库文件。在Dallas Semiconductor的ftp网站:ftp://ftp.dalsemi.com/pub/tini/ds80c400/上,可以找到该库文件,以及一份使用Keil开发环境创建DS80C400项目的详细操作指南。
|