采用DS80C400建立網(wǎng)絡(luò)多媒體應(yīng)用
新型DS80C400是具有高性能結(jié)構(gòu)和多層網(wǎng)絡(luò)節(jié)點(diǎn)和I/O口及穩(wěn)定的ROM固件的網(wǎng)絡(luò)微控制器,它廣泛應(yīng)用于工業(yè)控制/自動(dòng)化、數(shù)據(jù)轉(zhuǎn)換器、遠(yuǎn)距離數(shù)據(jù)采集設(shè)備、環(huán)境監(jiān)測(cè)、家庭/辦公室自動(dòng)化、交易/支付終端及網(wǎng)絡(luò)傳感器等領(lǐng)域。本文對(duì)如何在音視頻范例網(wǎng)絡(luò)多媒體系統(tǒng)中應(yīng)用DS80C400網(wǎng)絡(luò)型微控制器進(jìn)行分析與討論。
網(wǎng)絡(luò)型有線擴(kuò)音(PA)系統(tǒng)的建立
1 常用或傳統(tǒng)的PA系統(tǒng)
PA系統(tǒng)是用于尋呼/內(nèi)部通信和擴(kuò)音的系統(tǒng),其擴(kuò)音系統(tǒng)有兩個(gè)主要部件,即放大器和揚(yáng)聲器,其組成見(jiàn)圖1示意框圖,一個(gè)放大器帶4個(gè)16Ω的揚(yáng)聲器,PBX(Private branch exchange) 用戶(hù)交換機(jī)是把外面的電話(huà)線接到某個(gè)建筑住宅或辦公室分機(jī)上,而PBX系統(tǒng)功能包括呼叫轉(zhuǎn)移、快速撥號(hào)、內(nèi)部/外部尋呼和呼叫詳細(xì)記錄等。
PA系統(tǒng)工作時(shí),接線員用廣播、尋呼形式對(duì)人員播發(fā)若干信息,如“所有工作人員請(qǐng)注意,正在測(cè)試火警系統(tǒng)”,或“主管人員請(qǐng)到化學(xué)品庫(kù)報(bào)到”,等等。對(duì)這類(lèi)系統(tǒng)人們常常采用傳統(tǒng)的獨(dú)立布線和基礎(chǔ)結(jié)構(gòu)的技術(shù)就可實(shí)現(xiàn)了。
2 網(wǎng)絡(luò)型有線擴(kuò)音(PA)系統(tǒng)
現(xiàn)在,如果將這個(gè)系統(tǒng)搬到網(wǎng)絡(luò)上則情況會(huì)有所不同,不僅可以省掉獨(dú)立的音頻布線,而且還可以使系統(tǒng)變得更加智能。這是由于尋呼系統(tǒng)已與各建筑物的訪問(wèn)控制系統(tǒng)或某個(gè)網(wǎng)絡(luò)服務(wù)器相連接,從而使接線員很方便知道某個(gè)人員所處的位置。而且,這種計(jì)算機(jī)化的網(wǎng)絡(luò)型PA系統(tǒng)還能夠自動(dòng)重復(fù)某個(gè)消息,從而使接線員能夠被解放出來(lái)去處理更多的呼叫。 更為新穎的是:系統(tǒng)亦可以接入公司范圍內(nèi)的郵件系統(tǒng),實(shí)現(xiàn)郵件到語(yǔ)音的轉(zhuǎn)換服務(wù);或者通過(guò)一個(gè)能夠輸入傳呼請(qǐng)求的網(wǎng)站發(fā)布消息,而無(wú)須人工干預(yù)。
那么怎樣才能建立這樣一種網(wǎng)絡(luò)型PA系統(tǒng)呢?首先,至少需要一臺(tái)運(yùn)行WEB界面和電子郵件網(wǎng)關(guān)并帶麥克風(fēng)的服務(wù)器,我們稱(chēng)這臺(tái)服務(wù)器為主控服務(wù)器(Master control server)。下一步,需要一些揚(yáng)聲器模塊,如DS80C400網(wǎng)絡(luò)型微控制器、具有能夠驅(qū)動(dòng)揚(yáng)聲器的數(shù)模轉(zhuǎn)換器(DAC)。這些揚(yáng)聲器單元的價(jià)格要求低廉,而且要求現(xiàn)場(chǎng)安裝相當(dāng)容易。圖2為DS80C400網(wǎng)絡(luò)型微控制器內(nèi)部結(jié)構(gòu)組成框圖。
圖3展示了網(wǎng)絡(luò)型音視頻PA系統(tǒng)架構(gòu)示意圖。該網(wǎng)絡(luò)型PA系統(tǒng)在兩座建筑物M與L之間實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)行,它包括7個(gè)揚(yáng)聲器單元和一個(gè)主控服務(wù)器;建筑物之間的網(wǎng)絡(luò)連接采用了一個(gè)路由器(Router),而不是網(wǎng)橋。在本網(wǎng)絡(luò)型PA系統(tǒng)中,DS80C400網(wǎng)絡(luò)微控制器驅(qū)動(dòng)揚(yáng)聲器單元。由于這類(lèi)網(wǎng)絡(luò)型PA系統(tǒng)無(wú)須很高的帶寬和處理能力,因而該DS80C400控制器所具備的PC系統(tǒng)的處理能力和存儲(chǔ)資源足以支撐系統(tǒng)運(yùn)行。為此,對(duì)采樣率在22.05kHz8位的非壓縮單聲道音頻帶寬要求, 足以在180Kbps以?xún)?nèi)提供優(yōu)異的話(huà)音質(zhì)量。而且也不用為硬件解壓縮支付成本, 從而大大提高了本網(wǎng)絡(luò)型PA系統(tǒng)的性能價(jià)格比。
圖4為該類(lèi)網(wǎng)絡(luò)型音頻系統(tǒng)的相對(duì)帶寬需求示意圖。圖4中所示的剖面線為網(wǎng)絡(luò)型音頻PA系統(tǒng)帶寬區(qū)域,說(shuō)明該類(lèi)網(wǎng)絡(luò)型音頻系統(tǒng)的音頻帶寬只需要0.25Mbps, 即使在早期的網(wǎng)絡(luò)(半雙工式)10Mbps上(見(jiàn)圖4坐標(biāo)縱軸),相對(duì)于本網(wǎng)絡(luò)型PA系統(tǒng)具備5Mbps有效帶寬的容量來(lái)說(shuō),那音頻帶寬(0.25Mbps)也僅使用了其中5%的容量。與當(dāng)今的大多數(shù)以太網(wǎng)帶寬需要100Mbps相比,顯得極低,大大節(jié)省了容量。
3 揚(yáng)聲器單元硬件的配置
除DS80C400外,揚(yáng)聲器單元還需要一些存儲(chǔ)器(512KB的SRAM就足夠了)、網(wǎng)絡(luò)PHY(開(kāi)放系統(tǒng)互連)、DAC、放大器和揚(yáng)聲器。為此,通過(guò)下列技術(shù)簡(jiǎn)化了安裝和代碼的分發(fā):
● 通過(guò)DS80C400網(wǎng)絡(luò)微控制器所配備的網(wǎng)絡(luò)引導(dǎo)方式“NetBoot”, 并由NetBoot采用DHCP(動(dòng)態(tài)主配置協(xié)定)和TFTP(普通文件傳送協(xié)定)網(wǎng)絡(luò)協(xié)議獲取IP地址和裝載程序數(shù)據(jù),降低了安裝和配置成本;
● 以太網(wǎng)供電(見(jiàn)圖3上下二橫圓形粗線所示,以太網(wǎng)電纜)簡(jiǎn)化了布線,降低了材料成本。
上電后,DS80C400 ROM通過(guò)DHCP(動(dòng)態(tài)主配置協(xié)定)獲取IP地址,接著查詢(xún)網(wǎng)絡(luò),以獲取最新版的應(yīng)用程序。應(yīng)用程序執(zhí)行后,系統(tǒng)就準(zhǔn)備接收音頻數(shù)據(jù)。在現(xiàn)場(chǎng)找一個(gè)未使用的網(wǎng)口,連上電纜,就完成了新?lián)P聲器模塊單元的安裝。
4 揚(yáng)聲器單元軟件
為簡(jiǎn)化硬件的安裝,軟件需要做一些額外的工作。由于兩座建筑之間存在路由器(見(jiàn)圖3中間),廣播、呼叫消息不能夠直接從一座建筑物到達(dá)另一座建筑物。所以,不能采用簡(jiǎn)單的消息廣播。一個(gè)新的揚(yáng)聲器必須發(fā)送組播消息,直到主控服務(wù)器確認(rèn)了該揚(yáng)聲器的位置和參數(shù)。一個(gè)新的揚(yáng)聲器系統(tǒng)事先無(wú)法知道主控服務(wù)器的位置,因而也需要發(fā)送組播消息來(lái)請(qǐng)求主控器確認(rèn)自己。如果考慮安全問(wèn)題,則交換信息可以采用數(shù)字簽名,以排除那些冒充服務(wù)器的系統(tǒng)。一旦采用傳統(tǒng)的單播消息配置后,該揚(yáng)聲器單元就加入一個(gè)組播群,等待音頻包,這些音頻包由主控器組播。使用組播是因?yàn)镈S80C400和TINI(Tiny interNet interface,微型因特網(wǎng)接口)運(yùn)行環(huán)境支持組播,它不同于從一個(gè)源發(fā)往一個(gè)目標(biāo)的單播數(shù)據(jù)包,允許多個(gè)目標(biāo)主機(jī)接收相同的數(shù)據(jù),從而消除了重復(fù)傳輸,節(jié)省了帶寬。在網(wǎng)絡(luò)中,組播包采用一類(lèi)特殊的目標(biāo)IP地址,稱(chēng)之組播群網(wǎng)絡(luò)。
PA系統(tǒng)的范例程序采用C語(yǔ)言編寫(xiě)。要說(shuō)明的是除join( )之外,這些編寫(xiě)步驟對(duì)于那些為T(mén)CP/IP網(wǎng)絡(luò)編寫(xiě)代碼的程序員來(lái)說(shuō),應(yīng)該是相當(dāng)熟悉的。
5 關(guān)于以太網(wǎng)供電
要將設(shè)備連接到網(wǎng)絡(luò)中需要給網(wǎng)絡(luò)添加額外的電纜,幸好,電源可以被整合到以太網(wǎng)電纜中空余的導(dǎo)線上。解決這個(gè)問(wèn)題有多種方法,最為常見(jiàn)的是IEEE 802.3af標(biāo)準(zhǔn),規(guī)定將48V電源連接至8引腳以太網(wǎng)連接器的7、8引腳(+)和4,5引腳(GND)。48V電源普遍應(yīng)用于電話(huà)系統(tǒng),因此配線柜中通常已帶了這個(gè)電源。為了能夠應(yīng)用于網(wǎng)絡(luò)型微控制器,電源必須降壓至某個(gè)合適的水平。
6 文本到語(yǔ)音
使用麥克風(fēng)記錄現(xiàn)場(chǎng)語(yǔ)音或播放存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器上的錄音,是應(yīng)用網(wǎng)絡(luò)型PA系統(tǒng)的方式之一。另外―種是利用接收自電子郵件、WEB頁(yè)或蜂窩電話(huà)短消息業(yè)務(wù)的文本廣播消息。
為系統(tǒng)添加語(yǔ)音合成非常容易,轉(zhuǎn)換可以直接在主控服務(wù)器上進(jìn)行,利用文本到語(yǔ)音轉(zhuǎn)換引擎從輸入文本產(chǎn)生音頻波形,然后就可以將這個(gè)波形如同其他音頻信號(hào)一樣發(fā)送至揚(yáng)聲器,揚(yáng)聲器模塊無(wú)須作任何改動(dòng)。文本到語(yǔ)音轉(zhuǎn)換引擎已廣泛應(yīng)用,并且已經(jīng)成為有些操作系統(tǒng)(例如Mac OSX)的組成部分。
7 娛樂(lè)級(jí)音頻
如果音頻采樣以非壓縮方式傳輸,則CD音頻就會(huì)遇到問(wèn)題。以44.1kHz 16位采樣、未經(jīng)處理的立體聲需要1.44Mbps的網(wǎng)絡(luò)帶寬(幾乎占了10Mbps網(wǎng)絡(luò)的30%),已經(jīng)超出了許多網(wǎng)絡(luò)可提供的帶寬。
MP3這樣的壓縮算法能夠降低數(shù)據(jù)速率,由此大大提高網(wǎng)絡(luò)負(fù)載能力,使系統(tǒng)切實(shí)可行。配合硬件解壓縮芯片,DS80C400能夠輕松完成任務(wù)。事實(shí)上,36MHz的時(shí)鐘速率足以連續(xù)播放192KB的MP3。
8 成像
將視頻信號(hào)連接至DS80C400,如安防照相機(jī),采用一個(gè)廉價(jià)的照相機(jī)每秒獲取一個(gè)快照,并傳送到網(wǎng)上用于顯示和存儲(chǔ)。服務(wù)器端的后處理可完成運(yùn)動(dòng)監(jiān)視并警示保安人員,比較好的照相機(jī)選擇是現(xiàn)代的蜂窩電話(huà)――它們不僅小巧、廉價(jià)而且隨處可得,大多采用一種串行協(xié)議進(jìn)行通信,但不同的制造商也可能采用不同的通信協(xié)議。
實(shí)驗(yàn)表明,無(wú)須任何硬件輔助的圖像壓縮,DS80C400便可每秒傳輸4幀原始的黑白圖像(240180),而且還留有一定的余量可用于處理話(huà)音級(jí)的音頻。對(duì)于那些熟悉Unix網(wǎng)絡(luò)編程的人來(lái)說(shuō),closesocket( )就是close( )。DS80C400版本的close( )函數(shù)由文件系統(tǒng)使用,與Windows系統(tǒng)一樣,DS80C400上的套接字句柄與文件句柄是不可互換的,必須使用獨(dú)立的套接字函數(shù)。
相機(jī)系統(tǒng)提供給DS80C400的時(shí)鐘頻率為73.7MHz,接近于75MHz的極限值。73.7MHz的頻率由基頻模式的18.432MHz晶體和集成在DS80C400上的PLL(Phase locked loop,鎖相環(huán)路)經(jīng)4倍頻后得到。這種設(shè)計(jì)降低了整個(gè)系統(tǒng)的成本,同時(shí)還允許工作在接近微控制器最高頻率的上限。此外,18.432MHz4對(duì)于異步串行通信來(lái)講還是一個(gè)很好的波特率發(fā)生器。
9 網(wǎng)絡(luò)門(mén)
將安防照相機(jī)與雙向音頻、按鈕和蜂鳴器等結(jié)合在一起是很容易做到的。這樣的系統(tǒng)允許我們建造一個(gè)網(wǎng)絡(luò)門(mén)(見(jiàn)圖5)。應(yīng)用是無(wú)止境的,尤其是與訪問(wèn)控制和安全登錄等結(jié)合在一起時(shí)。對(duì)于DS80C400來(lái)說(shuō),按鈕和蜂鳴器僅僅是外部設(shè)備,可以直接連接到普通I/O上。
在Keil C中,通過(guò)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和內(nèi)置于DS80C400的1-Wire主控制器接口,很容易在網(wǎng)絡(luò)門(mén)上添加安全認(rèn)證功能(某種程度上講,該接口的編程要復(fù)雜一些,因此Dallas Semiconductor提供了庫(kù)文件,以便簡(jiǎn)化任務(wù))。
注意:像網(wǎng)絡(luò)門(mén)這樣的系統(tǒng)可能需要完成多種處理(或任務(wù)),DS80C400 ROM包含了一個(gè)任務(wù)調(diào)度器。下面實(shí)例說(shuō)明了如何在C語(yǔ)言中使用它。還有,在工業(yè)級(jí)應(yīng)用中,應(yīng)該檢查返回代碼。
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);
樣例程序還包含了一些有用的函數(shù),如task_fork( ),通過(guò)復(fù)制當(dāng)前任務(wù),創(chuàng)建一個(gè)新的任務(wù)。Task_kill ( )取消一個(gè)任務(wù),以及task_suspend( )掛起一個(gè)任務(wù)。
總結(jié)
可以采用多種方法開(kāi)發(fā)DS80C400的應(yīng)用軟件。若想快速評(píng)估方案,可以考慮采用Java語(yǔ)言和TINI運(yùn)行環(huán)境。對(duì)于那些要求考慮每個(gè)指令周期的應(yīng)用,最好采用最優(yōu)化的匯編語(yǔ)言。
在本文中,我們采用了C語(yǔ)言。Keil C編譯器支持DS80C400連續(xù)的24位尋址模式,允許高達(dá)16MB的代碼/數(shù)據(jù)存儲(chǔ)空間。為了使用這種模式,要求采用擴(kuò)展版本的編譯器和連接器(CX51、LX51)。這些工具包含在專(zhuān)業(yè)開(kāi)發(fā)者工具中(PK51)。
Dallas Semiconductor公司提供接口至DS80C400內(nèi)部網(wǎng)絡(luò)棧的C庫(kù)文件。在Dallas Semiconductor的ftp網(wǎng)站:ftp://ftp.dalsemi.com/pub/tini/ds80c400/上,可以找到該庫(kù)文件,以及一份使用Keil開(kāi)發(fā)環(huán)境創(chuàng)建DS80C400項(xiàng)目的詳細(xì)操作指南。這些庫(kù)文件極大地簡(jiǎn)化了網(wǎng)絡(luò)編程.例如,創(chuàng)建兩個(gè)TCP連接已簡(jiǎn)化為全球皆知的socket( )和connect ( )順序調(diào)用。
評(píng)論