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