基于DM642的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計(jì)
——
[關(guān)鍵詞]DSP; 網(wǎng)絡(luò) ;視頻服務(wù)器
引言
目前的安防監(jiān)控領(lǐng)域的主流產(chǎn)品是DVR(數(shù)字硬盤錄像機(jī)),它的主要特點(diǎn)是適合監(jiān)控點(diǎn)集中的局域監(jiān)控應(yīng)用。但是,隨著對于遠(yuǎn)程分布式監(jiān)控需求的增長,嵌入式網(wǎng)絡(luò)視頻服務(wù)器以其可靠性高,組網(wǎng)方便等優(yōu)點(diǎn)越來越受到安防領(lǐng)域廠商和客戶的重視。視頻服務(wù)器的解決方案有多種選擇,但是市場產(chǎn)品的主流一般選擇兩種方案:(1)CPU+ASIC。該方案選擇以ARM為核的CPU和專用媒體處理芯片搭建。優(yōu)點(diǎn)是開發(fā)時(shí)間相對較短,但由于采用ASIC,靈活性較差,產(chǎn)品一旦定型,很難更改。(2)采用面向媒體處理的專用DSP。其開發(fā)時(shí)間不長,優(yōu)點(diǎn)是由于算法是軟件代碼,所以可以不斷對產(chǎn)品性能進(jìn)行升級,重復(fù)開發(fā)成本較低?;谝陨蠋c(diǎn),本系統(tǒng)采用第二種方案設(shè)計(jì)。
一.系統(tǒng)的硬件設(shè)計(jì)。
視頻服務(wù)器最主要的功能是完成圖像和聲音的采集、壓縮及傳輸?shù)墓δ?。視頻服務(wù)器用到的核心技術(shù)一般包括視頻壓縮算法,音頻壓縮算法,網(wǎng)絡(luò)傳輸協(xié)議。目前市場上的主流技術(shù)主要是MPEG4或H26x視頻壓縮算法、AAC音頻壓縮算法、G.72x語音壓縮算法(或AAC音頻壓縮算法),TCP/IP協(xié)議等。DM642是TI公司推出的一款針對多媒體處理領(lǐng)域應(yīng)用的DSP,它是在C64x的基礎(chǔ)上,增加了很多外圍設(shè)備和接口。該DSP為548腳BGA封裝,高度集成化。主要外圍設(shè)備包括:三個(gè)可配置的視頻接口,可以和視頻輸入,輸出或傳輸流輸入無縫連接。VCXO內(nèi)插控制端口(VIC)10/100Mbps以太網(wǎng)口(EMAC)。數(shù)據(jù)管理輸入輸出模塊(MDI0)。多通道音頻串行端口(McASP)。I2C總線模塊。兩個(gè)多通道有緩存的串口(McBSPs)。三個(gè)32-bit通用定時(shí)器。用戶可配置的16-bit或32-bit的主端口接口(HPI16/HPI32)。6Mhz32-bit的PCI接口。通用I/0端口((GPIO)。64-bit的外部存儲單元接口,支持和同步或異步存儲單元的連接。
系統(tǒng)硬件框圖如下:
本系統(tǒng)設(shè)計(jì)3路視頻端口,2路板上解碼器和1路板上編碼器,32Mbytes同步DRAM 通過FPGA的OSD 4Mbytes Flash memory ,10/100以太網(wǎng)端口通過FPGA內(nèi)寄存器執(zhí)行的板卡軟件配置導(dǎo)入加載選項(xiàng)配置。DSP芯片通過64bit的EMIF接口或8/16bit的3路視頻接口連接板上外圍設(shè)備。SDRAM、Flash、FPGA和UART每一個(gè)設(shè)備占用其中的一個(gè)接口。EMIF接口也連接擴(kuò)展背板接口,擴(kuò)展背板接口用來連接背板。 板上的視頻解碼器和編碼器連接到視頻端口和擴(kuò)展連接器上。母板上的2個(gè)編碼器和1個(gè)解碼器都符合標(biāo)準(zhǔn)規(guī)范。McASP可以通過軟件重新設(shè)定成為一個(gè)擴(kuò)展接口??删幊踢壿嬮T陣列又被稱為FPGA,用來執(zhí)行板上組合在一起的邏輯程序。FPGA有基于軟件用戶端口的寄存器,用戶可以通過讀寫這個(gè)寄存器來配置板卡。
系統(tǒng)的硬件設(shè)計(jì)主要有以下幾個(gè)部分。(1)存儲器映射。C64xx系列DSP有大量的字節(jié)可設(shè)定的地址空間。程序代碼和數(shù)據(jù)可被存儲在統(tǒng)一標(biāo)準(zhǔn)的32bit地址空間的任何位置。 默認(rèn)狀態(tài)下,內(nèi)部的寄存器從0x00000000地址空間開始存儲。一小部分存儲器可由軟件重新映射為L2高速緩存,而不是固定的RAM。 EMIF(外部寄存器端口)有4個(gè)獨(dú)立的可設(shè)定地址的區(qū)域,稱為芯片使能空間(CE0-CE3)。當(dāng)Flash、UART和FPGA映射到CE1時(shí),SDRAM占據(jù)CE0。背板使用CE2和CE3。CE3的一部分被配置給OSD功能的同步操作和擴(kuò)展的FPGA中的其他同步寄存器操作。(2)EMIF端口。本系統(tǒng)設(shè)計(jì)一個(gè)64bit長的外部存儲器端口。將地址空間分割成了四個(gè)芯片使能區(qū),允許對地址空間進(jìn)行8bit、16bit、32bit和64bit的同步或不同步的存取。DM642板使用芯片使能區(qū)CE0、CE1和CE3。CE0被發(fā)送給64bit的SDRAM總線。CE1被8bit的Flash、UART和FPGA功能使用。CE3被設(shè)置成同步功能。CE2和CE3都被發(fā)送給背板接口連接器。 (3)SDRAM寄存器端口。本系統(tǒng)設(shè)計(jì)在CE0空間連接了64bit的SDRAM總線。這32兆的SDRAM空間用來存儲程序、數(shù)據(jù)和視頻信息??偩€由外部PLL驅(qū)動設(shè)備控制,運(yùn)行在133MHz的最佳運(yùn)行狀態(tài)。SDRAM的刷新由DM642自動控制。 EMIF使用的PLL被稱為ICS512,PLL的輸入時(shí)鐘是25MHz。DM642可以配置EMIF時(shí)鐘的原始值。ECLKIN針腳一般為默認(rèn)值,但其也可通過分頻CPU時(shí)鐘,來控制EMIF的時(shí)鐘頻率。在復(fù)位時(shí),通過對ECLKINSEL0和ECLKINSEL1針腳的操作進(jìn)行設(shè)置,其與EA19和EA20針腳共同分享EMIF的地址空間。 (4) Flash寄存器接口 本系統(tǒng)設(shè)計(jì)4M的Flash,映射在CE1空間的低位。Flash寄存器主要被用來導(dǎo)入裝載和存儲FPGA的配置信息。DM642評估板的CE1空間被配置成8bit,F(xiàn)lash寄存器也是8bit。由于CE1的可利用地址空間小于Flash的空間,所以利用FPGA來產(chǎn)生3個(gè)擴(kuò)展頁。這些擴(kuò)展的線形地址通過FPGA的Flash的基礎(chǔ)寄存器進(jìn)行定義地址,復(fù)位后默認(rèn)是000。(5)UATR接口。 雙重的UART寄存器被映射在DM642的CE1空間的高位,隨同F(xiàn)PGA異步寄存器一起。每一個(gè)UART,A和B產(chǎn)生8位的地址。本系統(tǒng)設(shè)計(jì)將CE1空間配置成8位存取。(6)FPGA異步寄存器端口 。FPGA有10個(gè)定位在CE1空間高位的異步存儲寄存器。這些寄存器實(shí)現(xiàn)的各種功能由于篇幅所限不再詳敘。FPGA同步寄存器端口 FPGA在CE3地址空間開設(shè)同步寄存器。這些寄存器主要實(shí)現(xiàn)OSD功能和一些評估板連接(7)EMIF緩沖器/解碼器控制 。EMIF緩沖器和解碼器的功能通過GAL16LV8D普通邏輯數(shù)組驅(qū)動器實(shí)現(xiàn),U15。驅(qū)動器可以對Flash進(jìn)行簡單的解碼處理,UART與緩沖器共同控制CE1、CE2和CE3。(8) 視頻端口/McASP端口 。本系統(tǒng)設(shè)計(jì)有3個(gè)板上視頻端口,這些端口可以根據(jù)可選擇性功能,進(jìn)行再分類,例如端口0和端口1的McASP和SPDIF功能。DM642使用所有的三個(gè)視頻端口,視頻端口0和視頻端口1被用作輸入端口,視頻端口2用作顯示端口。在標(biāo)準(zhǔn)配置中,視頻端口0和視頻端口1根據(jù)使用在McASP功能下進(jìn)行再分類,連接到TLV320AIC23立體聲編解碼器或連接到SPDIF輸出接口J9。 (9)視頻解碼器端口 。本系統(tǒng)設(shè)計(jì)可再分的視頻端口0和視頻端口1被用作捕獲輸入端口,命名為捕獲端口1和捕獲端口2。這些端口連接到SAA7115H解碼器。視頻端口貫穿CBT開關(guān),所以他們?yōu)榱吮嘲宓氖褂每梢员贿x擇性的禁止。另一半的端口被連接到板上的McASP端口。捕獲端口1通過一個(gè)RCA類型的視頻插座J15和一個(gè)4針的低噪聲S-Video接口J16,連接到視頻源。輸入的必須是合成的視頻源,例如DVD Player或視頻相機(jī)。SAA7115H是可通過DM642的I2C總線進(jìn)行編程的,并且可以連接所有的主要合成視頻標(biāo)準(zhǔn),例如NTSC,PAL和SECAM,這些都可以通過解碼器的內(nèi)部寄存器進(jìn)行適當(dāng)?shù)木幊獭?10) 視頻編碼器端口 。本系統(tǒng)設(shè)計(jì)視頻端口2被用來驅(qū)動視頻編碼器。它通過FPGA U8發(fā)送,以實(shí)現(xiàn)高級功能,例如OSD。但它在默認(rèn)方式下是直接通過視頻,連接到SAA7105視頻編碼器。這個(gè)編碼器可以進(jìn)行RGB、HD合成視頻,NTSC/PAL復(fù)合視頻的編碼,也可對依靠SAA7105內(nèi)部寄存器進(jìn)行編程的S-Video進(jìn)行編碼。SAA7105的內(nèi)部編程寄存器通過DM642的I2C總線進(jìn)行配置。 編碼器連接到合成的或RGB顯示單元。通過標(biāo)準(zhǔn)的RCA插座J2、J3和J4提供RGB圖像。J3的綠色輸出也可以被用于接口到合成顯示單元。4針的低噪聲S-VideoJ1也可用。15針的高密度DB接口允許系統(tǒng)驅(qū)動VGA種類的監(jiān)視器。本系統(tǒng)設(shè)計(jì)高清晰TV輸出,但要求更換一些支持HDTV的特殊過濾器。(11)FPGA視頻功能 。本系統(tǒng)設(shè)計(jì)使用Xilinx XC2S300E系列FPGA來實(shí)現(xiàn)增強(qiáng)視頻功能和其他的一些連帶功能。默認(rèn)模式下,F(xiàn)PGA通過DM642的視頻端口2輸出視頻到Phillips SAA7105視頻編碼器。對于HDTV,F(xiàn)PGA提供增強(qiáng)的時(shí)鐘;對于OSD功能,F(xiàn)PGA提供了FIFOs,將視頻端口2的數(shù)據(jù)與FIFOs端口的數(shù)據(jù)進(jìn)行混合。FPGA的FIFOs在通過CE3空間的同步模式下,通過DM642的EMIF進(jìn)行存取。(12)以太網(wǎng)端口。在獨(dú)立的模式下,DM642的以太網(wǎng)MAC被自動選擇,并通過CBT發(fā)送給PHY。本系統(tǒng)設(shè)計(jì)使用的是Intel LXT971 PHY。10/100Mbit的端口被隔離,輸出至RJ-45標(biāo)準(zhǔn)的以太網(wǎng)接口,J8。PHY直接連接到DM642。在制作過程中,以太網(wǎng)的地址存儲在I2C的連續(xù)ROM中。 RJ-45接口具有2個(gè)指示燈,使它成為一個(gè)完整的端口。2個(gè)指示燈分別是綠燈和黃燈,用來指示以太網(wǎng)的連接狀態(tài)。綠燈亮,指示已連接,綠燈一閃一閃,指示連接正在活動;黃燈亮,指示滿雙方模式。
二.系統(tǒng)的軟件設(shè)計(jì)。
1.數(shù)據(jù)流程。(1)輸入設(shè)備提供的一幀圖象被采集到輸入緩存,由YUV 4:2:2 格式進(jìn)行重抽樣變?yōu)閅UV 4:2:0 格式。(2)圖象數(shù)據(jù)由輸入任務(wù)模塊通過一個(gè)SCOM序列提供給處理模塊。
(3)提供圖象數(shù)據(jù)給JPEG 編碼庫程序,動態(tài)檢測即與以前圖象作比較,動態(tài)部分被壓縮成JPEG 圖象并通過SCOM 消息發(fā)送到網(wǎng)絡(luò)任務(wù)模塊。(4)網(wǎng)絡(luò)任務(wù)模塊建立JPEG 副本,當(dāng)網(wǎng)上有一個(gè)對等端點(diǎn)連接到網(wǎng)絡(luò)并申請“記錄”,網(wǎng)絡(luò)任務(wù)模塊發(fā)送這些圖象到對等端點(diǎn)。(5)如果網(wǎng)上有一個(gè)對等端點(diǎn)請求“回放”連接,網(wǎng)絡(luò)任務(wù)模塊將從那個(gè)對等端點(diǎn)接收新的JPEG 圖象,并發(fā)送原始和更新的圖象到處理任務(wù)模塊,消息通過SCOM 序列發(fā)送。解碼產(chǎn)生的YUV 4:2:0 格式的圖象被重新采樣成YUV 4:2:2 格式的圖象。(6)JPEG 圖象被作為解碼器的輸入,解碼的圖象通過SCOM 序列進(jìn)行傳輸?shù)捷敵鋈蝿?wù)模塊。(7)輸出任務(wù)模塊轉(zhuǎn)換YUV 4:2:0 格式的解碼圖象成YUV 4:2:2 格式圖象并送交顯示。顯示設(shè)備顯示輸出的圖象。2.數(shù)據(jù)流圖。
3.程序流程。
(1)實(shí)驗(yàn)程序采用RF-5來整合JPEG 的編碼、解碼庫。程序使用了6 個(gè)任務(wù)模塊結(jié)構(gòu)。其中4 個(gè)任務(wù)上圖中已描述。第5 個(gè)任務(wù)是一個(gè)控制任務(wù),它使用一個(gè)郵箱發(fā)送消息給處理任務(wù)模塊。處理任務(wù)模塊從郵箱接收消息,并根據(jù)消息中指定的圖象質(zhì)量調(diào)節(jié)圖象幀率。第6 個(gè)任務(wù)模塊是網(wǎng)絡(luò)初始化模塊,它由CDB 文件定義處理網(wǎng)絡(luò)環(huán)境的初始化。當(dāng)網(wǎng)絡(luò)準(zhǔn)備好后,上圖中的網(wǎng)絡(luò)任務(wù)模塊就被建立。在進(jìn)入DSP/BIOS 的調(diào)度程序之前,程序初始化了多個(gè)要使用的模塊。包括:
①處理器和系統(tǒng)板的初始化:初始化BIOS 環(huán)境和CSL,設(shè)置使用128K 的二級高速緩存,設(shè)置二級高速緩存可映射到EMIF 的CE0 和CE1 空間,設(shè)置DMA 優(yōu)先級序列長度取最大值,設(shè)置二級高速緩存的請求優(yōu)先級最高,DMA 管理器用內(nèi)部的和擴(kuò)展堆初始化。
②RF-5 模塊的初始化:系統(tǒng)初始化RF-5 的通道模塊,系統(tǒng)初始化RF-5 框架中用于內(nèi)部單元通訊和傳遞消息的ICC 和SCOM 模塊,各通道建立在內(nèi)部的和擴(kuò)展的堆上。
③建立攝入和顯示通道:建立和啟動一個(gè)攝入通道的實(shí)例。
(2)在完成初始化工作之后,系統(tǒng)進(jìn)入DSP/BIOS 調(diào)度程序管理下的6 個(gè)任務(wù)系統(tǒng)。6 個(gè)任務(wù)通過RF-5 的SCOM 模塊互相發(fā)送消息。以下是這6 個(gè)任務(wù):(A)輸入任務(wù)。輸入任務(wù)從輸入設(shè)備驅(qū)動程序獲得視頻圖象。它使用驅(qū)動程序提供的FVID_exchange調(diào)用從輸入設(shè)備獲得一幀最新視頻圖象。獲得的圖象是YUV 4:2:2 格式的,它被重采樣成YUV 4:2:0。輸入任務(wù)接著發(fā)送消息到處理任務(wù),消息中包含圖象數(shù)據(jù)指針。接著等待處理任務(wù)發(fā)送來的消息以繼續(xù)處理。(B)處理任務(wù)。處理任務(wù)包含兩個(gè)單元。第一個(gè)單元是一個(gè)JPEG 編碼單元,它接受YUV 4:2:0 格式的圖象,產(chǎn)生用戶定制壓縮質(zhì)量的JPEG 圖象。第二個(gè)單元是一個(gè)JPEG 解碼單元,它接收J(rèn)PEG 壓縮圖象并生成解壓縮圖象。解碼的圖象格式是YUV 4:2:0 的。首先,如果激活標(biāo)注,則處理任務(wù)模塊在輸入的圖象上加注時(shí)間碼。然后圖象被傳輸給編碼算法單元。當(dāng)JPEG 圖象生成后,原始圖象將進(jìn)行動態(tài)檢測,方法是在固定網(wǎng)格點(diǎn)上進(jìn)行象素比較。JPEG 圖象同動態(tài)檢測結(jié)果都傳輸給網(wǎng)絡(luò)任務(wù)模塊供后續(xù)處理。當(dāng)網(wǎng)絡(luò)任務(wù)模塊完成處理后,它將返回一個(gè)JPEG 圖象給處理任務(wù)模塊供解碼顯示。此圖可以是剛才傳輸給網(wǎng)絡(luò)任務(wù)模塊的圖象或是剛從網(wǎng)絡(luò)上得到的圖象。解碼完成后,如果設(shè)置標(biāo)注網(wǎng)格,處理任務(wù)模塊在圖象上標(biāo)注網(wǎng)格。通過發(fā)送一個(gè)SCOM 消息,輸出的圖象接著發(fā)送給輸出任務(wù)。(C)輸出任務(wù)。輸出任務(wù)將圖象顯示在顯示設(shè)備上。它使用輸出驅(qū)動程序提供的FVID_exchange 調(diào)用實(shí)現(xiàn)圖象的顯示。它得到的圖象的格式是YUV 4:2:0 的,需要重新采樣成YUV 4:2:2 格式。然后等待處理任務(wù)發(fā)來的消息以繼續(xù)運(yùn)行。(D)控制任務(wù)??刂迫蝿?wù)管理可選參數(shù),可以控制JPEG 圖象幀率和壓縮質(zhì)量??刂迫蝿?wù)檢測參數(shù)的改變,這些參數(shù)定義在一個(gè)全局結(jié)構(gòu)“External Control”,同時(shí)將更新的參數(shù)復(fù)制到任務(wù)自定義的結(jié)構(gòu)“External Control_prev”中,并向處理任務(wù)模塊的郵箱中發(fā)送消息。處理任務(wù)模塊定時(shí)檢測這些消息并調(diào)用相應(yīng)單元的控制函數(shù)。(E)網(wǎng)絡(luò)初始化任務(wù)。網(wǎng)絡(luò)初始化任務(wù)啟動網(wǎng)絡(luò)環(huán)境。當(dāng)網(wǎng)絡(luò)準(zhǔn)備好后,建立網(wǎng)絡(luò)任務(wù)。(F)網(wǎng)絡(luò)任務(wù)網(wǎng)絡(luò)任務(wù)用于支持系統(tǒng)中的網(wǎng)絡(luò)功能調(diào)用。當(dāng)它初始化完成后,它開始監(jiān)聽兩個(gè)端口(3001 和3002)。3001 端口用于“回放”連接,當(dāng)客戶端希望發(fā)送視頻流給DSP。端口3002 用于“記錄”連接,當(dāng)客戶端希望從DSP 接收視頻流。網(wǎng)絡(luò)任務(wù)模塊接著等待一個(gè)從處理模塊發(fā)來的SCOM 消息,其中應(yīng)包含可供使用的新的JPEG 圖象。首先,網(wǎng)絡(luò)模塊用發(fā)來的JPEG 圖象在RAM 中建立一個(gè)可由HTTP 服務(wù)器識別和可發(fā)送到HTTP 客戶端的圖象文件(IMAGE1.JPG)當(dāng)一個(gè)“記錄”連接激活時(shí),網(wǎng)絡(luò)模塊首先檢測是否客戶端發(fā)送過來一些命令。命令包含設(shè)置日期和時(shí)間、是否顯示日期和時(shí)間、是否顯示網(wǎng)格在輸出圖象上。然后,接收的JPEG 圖象要進(jìn)行活動檢測。如果圖象有改變,則發(fā)送圖象到“記錄”連接上。否則發(fā)送空文件指示以使客戶端的圖象保持同步。下一步,如果一個(gè)“播放”連接被激活,從連接中得到一個(gè)新的JPEG 圖象。這個(gè)新的圖象就替代處理模塊發(fā)來的圖象。網(wǎng)絡(luò)模塊回傳JPEG 圖象給處理模塊,通過發(fā)送一個(gè)SCOM 消息。
三.調(diào)試與結(jié)論。
本系統(tǒng)在美國TI公司提供的集成開發(fā)環(huán)境CCS2.2版本下調(diào)試通過,它對于安防監(jiān)控領(lǐng)域有著廣闊的應(yīng)用前景。
本文創(chuàng)新點(diǎn):采用面向媒體處理的專用DSP來開發(fā)網(wǎng)絡(luò)視頻服務(wù)器,其開發(fā)時(shí)間不長,優(yōu)點(diǎn)是由于算法是軟件代碼,所以可以不斷對產(chǎn)品性能進(jìn)行升級,重復(fù)開發(fā)成本較低。TI的CCS編譯器已進(jìn)行了充分的優(yōu)化,再加上DSP本身的強(qiáng)大處理能力,對于一般的處理算法,只要用標(biāo)準(zhǔn)C語言編寫就可以達(dá)到應(yīng)用的需求。但是對于視頻服務(wù)器,一般有多路圖像的輸入,這時(shí)編碼速度越快,就意味著可以處理更多路的輸入圖像,也就意味著更高的產(chǎn)品性價(jià)比,因此充分發(fā)揮DM642的最高性能是本文的另一創(chuàng)新點(diǎn)。
參 考 文 獻(xiàn):
1.TMS320DM642 Video/Imaging Fixed-Point Digital Signal processor Data Manual (SPRS200)
2.TMS320C64x DSP Video Port/VCXO Interpolated Control (VIC) Port Reference Guide (SPRU629)
3. 丁媛媛,石中鎖.基于MPEG-4的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)技. 微計(jì)算機(jī)信息.2004.12 :61-63
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論