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