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