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