新型DS80C400网络微控制器是具有高性能结构和多层网络节点和I/O口及稳定的ROM固件,它广泛应用于工业控制/自动化、数据转换器、远距离数据采集设备、环境监测、家庭/办公室自动化、交易/支付终端及网络传感器等领域.值此介绍采用DS80C400建立网络多媒体应用。
众所周知,令人振奋的多媒体应用——包括有线广播(PA)系统、网络门、MP3播放器以及安全摄像机等,在当今可以采用一种低成本的网络型微处理器建立。需要指出的是,无需任何硬件的图像压缩,DS80C400便可每秒传输4帧原始的黑白图像(240*180),为此本文将进一步作分析与讨论如何在音视频范例系统中应用DS80C400网络型微控制器。
建立网络型PA系统
网络型PA系统可以连接至建筑物的访问控制系统或某个网络服务器,它们知道某个雇员所处的位置,可自动重发一条消息,或者通过一个能够输入传呼清请求的网站发布消息,而无须人工干预。
可以这样描述一个PA系统(也称为“头顶传呼系统”),接线员在上面广播一些诸如此类的消息“所有工作人员请注意,正在测试火警系统”,或“主管人员,请到化学品库报到”。这个装置采用独立的布线和基础结构,并常常使用一些在晶体管出现之前就已有的技术。试想一下,如果将这个系统搬到网络上情况会怎样。不仅可以省掉独立的音频布线,而且还可以使系统变得更加智能。例如,可以将传呼系统连接至建筑物的访问控制系统或某个网络服务器,它们更有可能知道某个雇员所处的位置。这种计算机化的 PA系统还能够自动重复某个消息,使接线员能够解放出来去处理更多的呼叫。 另外,系统也可以接人公司范围内的邮件系统,实现邮件至语音转换服务,或通过一个能够输入传呼请求的网站,发布消息,而无须人工干预。
应该说网络型PA系统可以连接至建筑物的访问控制系统或某个网络服务器,它们知道某个雇员所处的位置,可自动重发一条消息,或者通过一个能够输入传呼清请求的网站发布消息,而无须人工干预.
怎样才能建立这样一种网络型PA系统呢?首先,至少需要一台运行web界面、电子邮件网关并带麦克风或相似设备的服务器。我们称这台服务器为“主控”。下一步,需要一些扬声器模块。这些模块是一些网络单元,具有能够驱动扬声器的数模转换器(DAC)。这些扬声器单元的价格要求低廉,而且要求现场安装相当容易。
图1展示了两座建筑之内的网络草图,包括7个扬声器单元和一个主控服务器。建筑物之间的网络连接采用了一个路由器,而不是网桥(这样做的主要好处在于软件方面).在本例中,DS80C400网络微控制器驱动扬声器单元。虽然微控制器不具备最新PC系统的处理能力和存储资源,不过,这类PA系统也没有很高的带宽和处理能力需求。采样率在22.05kHz * 8位的非压缩单声道音频带宽需求在180kbps以内,足以提供优异的话音质量。而且也不用为硬件解压缩支付成本。
图2说明了网络音频系统的相对带宽需求。即使在早期的(半双工)10Mb网络上,相对于5Mbps的有效带宽,音频应用也仅使用了4%的容量。如今的大多数以太网至少为100Mbps.
扬声器硬件
除DS80C400外,扬声器单元还需要一些储存器(512kB的SRAM就足够了)、网络PHY(开放系统互连)、DAC、放大器和扬声器。上电后, DS80C400 ROM通过DHCP(动态主配置协定)获取IP地址,接着查询网络,以获取最新版的应用程序。应用程序执行后,系统就准备接收音频数据。在现场找一个未使用的网口,连上电缆,就完成了新扬声器模块的安装。
扬声器软件
为简化硬件的安装,软件需要做一些额外的工作。由于两座建筑之间存在路由器(图1),广播消息不能够直接从一座建筑到达另一座建筑。所以,不能采用简单的消息广播。一个新的扬声器必须发送组播消息,直到主控确认了该扬声器的位置和参数。一个新的扬声器系统事先无法知道主控的位置,因而也需要发送组播消息来请求主控确认自己。如果考虑安全问题,则交换信息可以采用数字签名,以排除那些冒充服务器的系统。一旦采用传统的单播消息配置后,该扬声器就加入一个组播群,等待音频包。这些音频包由主控组播。网络 PA系统的范例程序采用C语言编写。要说明的是除join( )之外,这些编写步骤对于那些为TCP/IP网络编写代码的程序员来说,应该是相当熟悉的。
关于以太网供电
连接设备到网络中有一个不利的方面——它要求给网络添加额外的电缆。幸好,电源可
以被整合到以太网电缆中空余的导线上。解决这个问题有多种方法,最为常见的是IEEE802.3af标准,规定将48V电源连接至8引脚以太网连接器的7,8引脚(+)和4,5引脚(GND)。48V电源普遍应用于电话系统,因此配线柜中通常已带了这个电源。
为了能够应用于微控制器,电源必须降压至某个合适的水平。参见www.maxim-k.com/appnoteindex,相关应用笔记描述了如何用MAX5910和MAX5014构建一个高效的IEEE802.3af兼容电路。·
文本到语音
使用麦克风记录现场语音,或播放存储在网络服务器上的录音,是应用PA系统的方式之一。另外—种用法是利用接收自电子邮件,web页或蜂窝电话短消息业务的文本广播消息。
为系统添力口语音合成非常容易。转换可以直接在主控服务器上进行,利用文本到语音转换引擎从输入文本产生音频波形。然后就可以将这个波形如同其它音频信号一样发送至扬声器,扬声器模块无须作任何改动。文本至语音转换引擎已广泛应用,并且已经成为有些操作系统(例如MacOSX)的组成部分。
在freetts.sourceforget.net/上也可以找到一个免费的Java语音引擎。商用方案听起来更自然一些, 在www.nuance.com上可尝试一下“Vocalizer”演示版,带有美国、英国或澳大利亚口音。
娱乐级音频
如果音频采样以非压缩方式传输,则CD音频就会遇到问题。以44.1kHz *16位采样、未经处理的立体声需要1.44Mbs的网络带宽(几乎占了10Mb网络的30%), 已经超出了许多网络可提供的带宽。
象MP3这样的压缩算法能够降低数据速率,由此大大提高网络负载能力,使系统切实可行。配合硬件解压缩芯片,DS80C400能够轻松完成任务。事实上,36MHz的时钟速率足以连续播放192kb的MP3。
成像
也可以将视频信号连接至DS80C400。这样的系统将十分有用,如安全照相机,采用一个廉价的照相机每秒获取一个快照,并传送到网上用于显示和存储。服务器端的后处理可完成运动监视并警示保安人员,比较好的照相机选择是现代的蜂窝电话——它们不仅小巧、廉价而且随处可得。大多采用一种串行协议进行通信,但因制造商而异。在连接至某个特定相机之前,确认你已经得到了所有需要的技术信息。
实验表明,无须任何硬件辅助的图像压缩, DS80C400便可每秒传输4帧原始的黑白图像(240x180),而且还留有一定的余量可用于处理话音级的音频。对于那些熟悉Unix网络编程的人来说,closesocket( )就是close( )。DS80C400版本的close( )函数由文件系统使用。与Windows系统一样,DS80C400上的套接字句柄与文件句柄是不可互换的,必须使用独立的套接字函数。
相机系统提供给DS80C400的时钟频率为73.7MHz,接近于75MHz的极限值。73.7MHz的频率由基频模式的18.432MHz晶体和集成在DS80C400上的PLL经4倍频后得到。这种设计降低了整个系统的成本,同时还允许工作在接近微控制器最高频率的上限。此外,18.432MHz * 4对于异步串行通信来讲还是一个很好的波特率发生器。
网络门
将安防照相机与双向音频、按钮和蜂呜器等结合在一起是很容易做到的。这样的系统允许我们建造一个网络门(图3)。应用是无止境的,尤其是与访问控制和安全登录等结合在一起时。对于DS80C400 来说,按钮和蜂鸣器仅仅是外部设备,可以直接连接到普通I/O上。在Keil C中,通过sfr和shit,很容易定义UO端口:
/* 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编译器(www.keil.com)支持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 ( )顺序调用。
小巧、价廉的网络微控制器可以作为诸多有趣实用的多媒体应用的强大内核。值此我们可逐步大胆使用DS80C400,应用或改进本文所描述的设计思想。