基于W90N740的MEPG-2數(shù)字視頻編碼機
摘要:目前MPEG-2 over IP產(chǎn)品因其圖像質量高,并采用以太網(wǎng)傳輸技術而在軌道交通、高速公路監(jiān)控領域中得到廣泛的應用。本文介紹了一種基于W90N740微處理器的MPEG-2編碼機,并從硬件和軟件兩個方面闡述了如何實現(xiàn)視頻圖像的傳輸和控制。
關鍵詞:MPEG-2 W90N740 FPGA uClinux
隨著微電子技術和以太網(wǎng)技術的發(fā)展,MPEG-2產(chǎn)品正逐步從傳統(tǒng)的模擬傳輸,向采用IP/ATM傳輸發(fā)展。MPEG-2 over IP是采用以太網(wǎng)傳輸技術,將MPEG-2視頻傳輸流(TS流)通過以太網(wǎng)進行傳輸?shù)漠a(chǎn)品。
如何更好將MPEG-2和以太網(wǎng)傳輸控制實現(xiàn)有機地結合起來,是研究實現(xiàn)MPEG-2 over IP的重點。本文圍繞著這個重點而展開。
1.系統(tǒng)工作原理
典型的MPEG-2 over IP結構如下圖1所示。MPEG-2 over IP主要包括MPEG-2編碼模塊和通信控制模塊。MPEG-2編碼模塊實現(xiàn)對模擬視音頻的PMEG-2壓縮編碼;通信控制模塊實現(xiàn)對MPEG-2編碼模塊的控制、MPEG-2 TS流的采集和在以太網(wǎng)上的傳輸。
2.編碼機系統(tǒng)的實現(xiàn)
根據(jù)典型的MPEG-2 over IP產(chǎn)品結構,將編碼機硬件體系設計分為MPEG-2編碼模塊和通信控制模塊兩個部分。
2.1.MPEG-2編碼模塊
2.1.1.MPEG-2編碼模塊的構成
MPEG-2編碼模塊采用日本富士通公司的MPEG-2編碼處理芯片MB86391、SAA7114視頻處理芯片、SC5340音頻處理芯片和Atmel公司的AVR 8位微處理器Atmega16等構成。其原理圖如下圖2所示。
2.1.2.MB86391介紹
MB86391的內(nèi)部框圖如圖3所示。它是在單一芯片中集合了音頻/視頻編碼。編碼使用富士通開發(fā)的高性能MPEG-2壓縮運算法則。集合了內(nèi)部DPSRClite CPU處理的硬件和軟件。
支持ISO/IEC 11172(MPEG-1)、ISO/IEC 13818(MPEG-2) 標準和MPEG-1音頻層-1/2編碼功能( ISO/IEC11172-3)。
支持NTSC和PAL制式的視頻格式。視頻編碼最大輸出碼率可達20Mbps。視頻輸入接口采用8位并行接口,音頻采用串行接口。支持并行或者串行的主機接口。在串行主機接口模式下,其配置和執(zhí)行MPEG-2算法的firmware(固件)可通過串行主機接口下載。
2.1.3.MPEG-2編碼模塊的工作原理
模擬視頻和音頻通過SAA7114視頻處理芯片、SC5340音頻處理芯片進行模數(shù)轉換和處理,輸出給MPEG-2編碼芯片MB86391,MB86391芯片按MPEG-2視頻格式將數(shù)字視音頻作壓縮編碼處理,最后從MB86391的流輸出接口輸出。
ATMEL公司的AVR 8位處理器ATmega16為編碼模塊的CPU,它通過串行總線來控制MB86391和為其下載firmware(MB86391的微碼,用于執(zhí)行編碼算法等);ATmega16通過I2C總線與SAA7114和SC5340相連接,完成對前端視音頻的控制調(diào)節(jié)。
同時ATmega16也肩負著MPEG-2編碼模塊與通信控制模塊的通信控制任務,它通過SPI總線與通信控制模塊連接。
ATmega16在編碼模塊中主要為通信控制模塊和MB86391、SAA7114以及SC5340提供通信控制的橋梁。
2.2.通信控制模塊
通信控制模塊是MPEG-2編碼機功能的核心。它主要實現(xiàn)對MPEG-2編碼模塊的控制和傳輸MPEG-2視頻數(shù)據(jù)流到以太網(wǎng)上的功能。通信控制模塊由Winbond公司的32位ARMTDMI核的微處理器W90N740、Lattice公司的FPGA LFXP3C-5T組成。其原理圖如圖4所示。
圖4:通信控制模塊框圖
2.2.1.W90N740的特點
W90N740是臺灣華邦電子公司的一款基于ARM7TDMI核的32位微處理器,內(nèi)部功能框圖如圖5所示。
該處理主要針對路由器網(wǎng)絡產(chǎn)品而設計,采用ARM7TDMI核,最高工作頻率可達80MHz。提供2個10/100M的以太MAC(媒體訪問控制器)、EBI(外部總線接口)總線、4個獨立可編程的外部中斷源、2個24位的定時計數(shù)器和一個24位的看門狗定時器,以及21個可編程通用I/O和一個UART接口。
內(nèi)置的兩個以太網(wǎng)MAC控制器,每個MAC都有支持IEEE802.3以太網(wǎng)協(xié)以引擎和含有DMA控制器和收/發(fā)FIFO,支持媒質獨立接口MII(Media Inde-pendent Interface)精簡媒質獨立接口RMII(Reduced MII)。以太網(wǎng)MAC也支持長幀(長度大于1518字節(jié))和短幀(長度小于64字節(jié))兩種幀結構。
EBI控制器支持訪問片外SDRAM、RAM/SRAM、ROM/FLASH和I/O設備。提供支持達32M字節(jié)的ROM空間、2個最大為32M字節(jié)的SDRAM和4個32M的I/O設備空間。
4個可編程的外部中斷源,可獨立配置電平觸發(fā)或者邊沿觸發(fā)方式。
W90N740的特點非常適合于在MPEG-2 over IP產(chǎn)品中擔當通信控制模塊的處理器。
2.2.2.MPEG-2編碼模塊的通信/控制
MPEG-2編碼模塊和通信控制模塊的通信/控制設計為SPI接口。MPEG-2編碼模塊為從SPI,通信控制模塊為主SPI。W90N740本身沒有SPI總線接口。設計時,采用W90N740的通用I/O來模擬一個SPI的主控制器。
同時,為了保證MPEG-2編碼模塊和通信控制模塊的同步,通行控制模塊為編碼模塊提供一個由W90N740的通用I/O控制的復位引腳,在通信控制模塊復位的情況下,讓編碼模塊也能復位。
2.2.3.TS流的采集
在編碼機系統(tǒng)中,TS流的采集是一個重點。設計時使用FPGA設計異步FIFO將MB86391的輸出數(shù)據(jù)流和W90N740的EBI總線連接起來,實現(xiàn)TS流的采集。
其FPGA中的TS流采集部分如圖6所示。
圖6的左端是異步FIOF的輸入控制部分。它與MPEG-2編碼模塊的MB86391的圖像數(shù)據(jù)流接口相連。MB86391工作在27M同步并行模式。其輸出壓縮編碼數(shù)據(jù)流的時序如圖7所示:BCLK為同步數(shù)據(jù)時鐘,頻率是圖像數(shù)據(jù)流的碼率的1/8;STEN是圖像數(shù)據(jù)流數(shù)據(jù)有效指示;TSPSSUNC是圖像數(shù)據(jù)流同步指示,當一個TS流包(188字節(jié))的第一個字節(jié)是0x47時,它為高電平;STDATA是圖像數(shù)據(jù)流的數(shù)據(jù)。它們分別與圖6的TS clk、TS vaild、TS sync、TS D[7..0]相連,8位并行的TS流進過“8bit to 32bit”部分轉換輸入到32位寬度的異步FIFO進行緩存。
圖6的右端是通信控制模塊獲取TS流的部分,它占用W90N740的EBI I/O設備接口bank0資源。EBI I/O設備接口bank0配置在32位寬度,以提高W90N740的采集數(shù)據(jù)的能力。當FIFO中的數(shù)據(jù)緩存到設定的臨界值后,F(xiàn)IFO的flag信號將變?yōu)楦唠娖?。通過FIFO的flag信號產(chǎn)生送給W90N740的中斷申請nIRQ0,通知W90N740圖像數(shù)據(jù)準備好了。
W90N740的EBI I/O總線時序如圖8所示。利用W90N740的系統(tǒng)時鐘MCLK作為異步FIFO的讀時鐘rd clk;通過片選信號nECS0和讀選通信號nOE來產(chǎn)生異步FIFO的讀允許rd en。
同時,圖6中“控制部分”除了根據(jù)W90N740的EBI I/O設備時序產(chǎn)生FIFO的讀時序外,它還用W90N740的EBI I/O設備接口和TS vaild信號來產(chǎn)生FIFO的復位,reset信號。
采用異步FIFO采集MPEG-2 TS流的設計,降低了圖像數(shù)據(jù)采集占用CPU的時間。為提高整個編碼機的性新能起到非常大的作用。
2.3.編碼機的軟件結構
2.3.1.存儲器分配
大多數(shù)的嵌入式系統(tǒng),采用Flash或者ROM等存儲器來存儲系統(tǒng)的軟件,為了提高系統(tǒng)的運行速度,一般將程序軟件放入SDRAM、SRAM或者RAM等快速存儲器中運行。
在我們設計編碼機的也采用上面的方式來存儲和運行程序代碼。為了降低對ROM存儲器的容量要求,將程序代碼采用壓縮方式都放置在16Mbit的FLAS中。其分配使用如表1所示。
2.3.2.軟件設計
Linux操作系統(tǒng)是源代碼開放的多任務操作系統(tǒng),它具有完善的TCP/IP協(xié)議棧,支持多任務,成為軟件設計的主選對象。
uClinux是針對沒有MMU(內(nèi)存管理單元)的微處理器而設計的Linux操作系統(tǒng)。它繼承了Linux的絕大多功能,支持進程、線程,TCP/IP協(xié)議棧功能強大。因此,軟件設計選用uClinux操作系統(tǒng)。
在uClinux操作系統(tǒng)下,將軟件分為驅動和上層應用兩個部分來設計。驅動負責提供上層應用程序訪問底層硬件的接口。應用軟件完成編碼機的功能。
在uClinux中進程和線程都是并行運行的,設計時軟件按功能劃分為模塊,設計為進城或者線程??紤]到進程占用內(nèi)存資源漸多,而線程占用內(nèi)存資源少,因此、系統(tǒng)軟件結構如圖9所示應用軟件采用進程和線程來設計。應用軟件功能模塊如圖9所示。
圖9:編碼機軟件結構
劃分進程和線程是軟件設計的一個關鍵。分析Linux進程和線程的特點,結合編碼機需要用軟件實現(xiàn)的功能,將初始化工作(如MPEG-2編碼模塊的初始化、以太網(wǎng)參數(shù)初始化)、條件工作功能(如編碼機參數(shù)配置、遠程升級)設計為輔助進程,這些進程的運行的時間短,只有在系統(tǒng)復位初始化或者條件控制下才運行,并且會退出運行。
主進程將是一個永遠運行的進程,在這個進程中將實現(xiàn)編碼的主要功能,如圖像數(shù)據(jù)流在網(wǎng)絡的傳輸、遠程控制、用于與其它設備通信的RS-485/RS-232低速數(shù)據(jù)傳輸、編碼機的狀態(tài)監(jiān)測等。這些功能之間相互有著聯(lián)系,如遠程控制可以查詢編碼機的狀態(tài),而編碼機的狀態(tài)隨時由編碼機的監(jiān)測更新。因此,將這些功能用線程來實現(xiàn),在主進程中用全局變量來實現(xiàn)各個功能之間的聯(lián)系。
編碼機的核心功能——TS流傳輸線程和遠程控制命令處理線程的流程如下圖10所示。
圖10:部分線程流程
結 語
通過實際設計表明,在MPEG-2 over IP編碼機設計中,采用W90N740作為CPU和uClinux操作系統(tǒng),使得設計簡單,靈活,已于維護。實際效果明顯,能實時傳輸10路4M碼率的MPEG-2圖像給不同的目的IP。
參考文獻
1. Winbond electronics Corp. W90N740CD/W90N740CDG data sheet.
2. 日本富士通. MPEG2 1chip Audio/Video Encoder MB86391 Product Specification.
3. 馬忠梅、徐英慧. ARM嵌入式處理器結構與應用基礎(第2版). 北京航空航天大學出版社.
4. 余兆明、李曉飛. MPEG標準及其應用. 北京郵電大學出版社.
5. 張輝. GNU/Linux編程指南(第二版). 清華大學出版社.
6. 詹俊鵠、于衛(wèi)譯. 實戰(zhàn)Linux Socket 編程. 西安電子科技大學出版社