金永明(中國電子科技集團公司第五十五研究所,南京 210000)
基于Hi3531的視頻存儲與回放電路的設計
金永明
(中國電子科技集團公司第五十五研究所,南京 210000)
本文描述了基于Hi3531處理器為核心的視頻存儲與回放電路的設計,介紹了電路中重要功能模塊設計,同時對與電路相關的驅動軟件進行了規劃。本電路實現方便,具有一定的使用價值。
Hi3531;視頻;存儲
隨著計算機應用領域地不斷擴展,現在人類在工作、學習、生活過程中越來越依靠計算機應用提供的便利,提高工作效率、改善生活質量、激發學習樂趣。因此,對計算機上應用及操作的監控也是一個重要的研究方向,通過對計算機上應用及操作的實時監控,可以完成計算機應用及操作的事后評估、檢索和取證,為檢查計算機操作人員的工作準確性和合理性提供視頻數據。
對計算機應用和操作進行視頻撲獲、存儲和回放,需要對計算機應用和操作的視頻監控。我們基于Hi3531芯片設計和實現了計算機視頻存儲和回放電路,可將計算機VGA視頻信號撲獲,存儲在固態電子盤中,利用USB通訊口對存儲視頻進行回放,電路設計穩定高效,軟件使用簡易,在視頻監控、視頻分析、視頻檢索等應用中具有一定的使用價值。
視頻存儲與回放電路中核心芯片為Hi3531,此芯片是華為公司針對多路高清 DVR、NVR產品應用開發的一款專業高端SOC 芯片。芯片中內置高性能雙核A9處理器、可完成高達 5 路1080P 視頻信號的實時多協議編譯碼以及專用TOE 網絡加速,能應對越來越復雜的高清視頻和高速網絡應用。芯片內部集成了優異的視頻引擎和編譯碼算法,結合芯片的多路高清顯示輸出能力,可以充分滿足高質量圖像體驗。同時芯片有豐富的外圍接口,滿足不同項目設計接口的差異化,圖1為視頻存儲與回放電路原理功能框圖。

圖1 視頻存儲與回放電路原理框圖
圖1中輸入視頻通過視頻環出處理模塊后,完成視頻信號1:2復制、增強和A/D轉換后,提供外部顯示終端視頻信號,同步提供后繼FPGA分辨率轉換模塊和視頻處理模塊的視頻源,在驅動軟件和應用軟件控制下,將數字視頻信號存儲在SSD盤中,供外部主機客戶端檢索、回放。
2.1VGA視頻環出電路模塊設計
目前計算機中使用最多的視頻接口為VGA視頻接口,其他DVI視頻接口、PAL視頻接口等可以通過商業化視頻轉換板變化成VGA視頻接口,因此本文中視頻存儲和回放電路的設計以VGA視頻接口為主。
在實際使用過程中,輸入的VGA視頻信號必須在顯示圖像的過程中,同步完成視頻存儲和回放處理。因此,VGA視頻環出電路是輸入VGA視頻信號處理的重要電路。
圖2為VGA視頻環出電路原理框圖。外部輸入的VGA視頻信號中數字部分VS、HS信號通過數字信號調理器,完成數字信號整形、緩沖等處理后,增加了數字信號的輸出功率和效率;VGA視頻信號中模擬部分紅綠藍視頻信號經過視頻放大器后,完成了視頻信號放大、復制、分配處理,同樣也增加了模擬信號的輸出功率和效率。輸入的VGA視頻信號完成上述視頻放大和調理后,按照1:2分配給后續的顯示終端和視頻A/D轉換器,可同步完成輸入視頻VGA信號實時顯示和視頻A/D轉換。

圖2 VGA視頻環出電路原理框圖
VGA視頻信號中VS、VS信號是低于1MHz以下的信號,數字信號調理器采用74HC244等常用數字信號緩沖器,可以完成數字信號調理功能。
EL5364是600MHz高帶寬電流回饋放大器,是視頻信號處理應用中理想的放大器。同時,、電路芯片還可以完成VGA視頻信號中模擬紅綠藍信號的1:2分配,設計中選用EL5364作為VGA視頻信號放大器,完成VGA視頻信號的放大和備份處理。
考慮到后續VGA視頻信號存儲和回放電路芯片只能處理數字信號,而且存儲視頻信號的物理空間為固態電子盤,也只能存儲數字視頻信號,因此必須對VGA視頻信號A/D轉換,變換成數字視頻信號供后級電路處理。
ADV7842是一款高質量、單芯片、2:1多任務HDMI?接收器和圖形數字化儀,并集成多格式視頻譯碼器。該器件內置一個雙路輸入HDMI 1.4相容型接收器,支持最高達1080p 的所有高清電視格式,顯示分辨率最高可達UXGA(1600×1200,60 Hz)。
ADV7842支持圖形數字化,能夠對VGA至UXGA 速率的RGB 圖形信號進行數字化處理,將其轉換為數字RGB 或YCbCr 像素輸出流。
設計中通過ADV7842將VGA視頻信號轉換為BT.1120數字信號,傳輸給FPGA進行分辨率轉換,轉換后視頻信號傳輸給主處理器進行編碼壓縮和存儲。
ADV7842管腳中有INT中斷輸出,可以通過對芯片設置,使ADV7842特定的寄存器位變化及時反映到INT中斷輸出上,這樣做可以實現外部輸入信號分辨率變化時,FPGA和主處理器能夠及時檢測到,并采取相應處理。INT中斷信號可設置為高電平或低電平有效。
設計中考慮到實際應用中,需要對多路VGA信號進行視頻A/ D轉換、存儲和回放,需要多片ADV7842進行視頻A/D轉換。ADV7842的I2C地址固定無法設置,因此可通過I2C擴展芯片完成對多片相同地址ADV7842的配置工作,設計中采用主處理器I2C配置多片ADV7842,并行地對16路VGA視頻信號進行了A/D裝換,設計結果符合使用要求。
2.2FPGA分辨率轉換電路模塊設計
對計算機輸入VGA視頻信號進行存儲和回顧,須兼顧對計算機啟動全過程的錄制。眾所周知,以Windows操作系統為例,計算機在開機啟動時VGA視頻分辨率為640x480,操作系統啟動完成后VGA視頻分辨率變為操作系統默認分辨率,多數為高于640x480的視頻分辨率。后繼Hi3531芯片在視頻輸入接口的分辨率發生改變時,需要重新配置VI視頻編碼才可以完成不同分辨率視頻信號的處理,但是相關程序模塊運行所需時間較長。因此設計過程中,考慮利用FPGA將輸入640x480分辨率的BT1120時序視頻信號,通過硬件分辨率轉換電路處理成操作系統默認分辨率的BT1120時序視頻信號,再供給Hi3531進行編碼存儲,提高電路運行效率。
此外,FPGA進行分辨率轉換后,當出現人員誤操作、系統藍屏等錯誤信息或者操作系統進入安全模式等引起分辨率變化時,FPGA分辨率轉換電路可保證Hi3531視頻輸入接口的輸入分辨率保持不變,FPGA分辨率轉換電路實現方式:當輸入視頻分辨率低于默認分辨率時,通過加黑邊的方式將其轉換為默認分辨率。當輸入分辨率高于默認分辨率時,FPGA轉換電路利用GPIO腳實時通知Hi3531處理芯片,FPGA轉換分辨率電路實時生成藍屏提示視頻代替異常分辨率視頻信號,無縫連接地完成視頻存儲的連續性,同時還可從存儲視頻和GPIO兩個方面對異常視頻信號報警。
2.3視頻處理電路模塊設計
視頻處理電路主要完成A/D轉換后數字視頻編碼、存儲工作,也是電路設計中核心部分,選擇了Hi3531處理器進行視頻處理。
Hi3531處理器是一個視頻編碼器,可支持H.264/ MPEG-4/JPEG的多協議編碼器,處理器中包含VEDU等部分。VEDU(Video Encode Unit)是一個硬件實現的支持多種視頻標準(包括H.264、MPEG-4等)的編碼器。VEDU 具有CPU 占用率低、總線帶寬占用小、低延時、低功耗等優點,最高可達16x960H/30fps+16x480x272/30fps 編碼。支持圖像分辨率可配置,最小圖像分辨率160x64,最大圖像分辨率7040x8176。
Hi3531處理器內置視頻捕獲單元VICAP(Video capture),視頻撲獲單元可通過多路BT.656(mux)/1120(mux)/601 接口或者DC(Digital Camera)接口撲獲視頻數據,存入指定的內存區域。在此過程中,VICAP可以對視頻圖像數據進行水平垂直縮小(根據通道情況能簡單地采樣或者是縮放)并輸出多個不同的視頻流。
VICAP 有以下特點:
輸入最大分辨率為2560x1600
外部支持8 個BT656 接口,或 4 個BT1120界面
內部支持8 個端口和16 路通道視頻處理,每個通道支持隔行和逐行輸入模式;其中有8 路支持小碼流輸出
支持BT.656(mux),BT.1120(mux) ,BT601 ,DC等時序
支持SMPTE293M/ITU-R BT.1358時序(480P/576P)
支持BT.601 時序
支持SMPTE 274M/BT 1120 時序(1080i/1080P)
支持SMPTE 296M(720P)
支持最大16 倍的水平和垂直縮小
各信道支持3 級總線優先級可配
支持在一個指定窗口內獲取數據
支持水平鏡像和垂直鏡像
輸出格式支持存儲模式:SPYCbCr 4:2:0 和SPYCbCr 4:2:2模式。
Hi351處理器的VDP(Video Display)模塊主動從內存相應位置讀取視頻和圖形數據,將視頻層和圖形層數據迭加后通過顯示信道送出,支持后繼視頻信號數字化存儲,為視頻信號數字化存儲提供了硬件基礎。
圖3為基于Hi3531處理器的視頻處理電路原理圖。輸入VGA視頻信號通過視頻環出、視頻A/D變換、分辨率轉換等處理后,數字視頻信號進入Hi3531處理器相應部分,完成視頻處理的硬件搭配,結合處理器內部程序可完成視頻撲獲、存儲等功能。
2.4SATA轉USB電路模塊設計
如圖3所示,視頻處理后的數字信號存儲在SSD固態電子盤中,可以提高數據訪問的便捷性和可靠性。考慮到USB通訊接口不僅使用方便,而且傳輸數率較高,因此設計中采用USB通訊口作為視頻數據對外傳輸接口。Hi3531處理器沒有USB從設備接口,為了滿足主機客戶端通過USB通訊口讀取固態硬盤視頻數據的需要,在固態電子盤SATA數據接口與主機USB通訊接口之間,設計了如圖4所示的SATA轉USB的接口電路,Hi3531處理器和主機都可通過USB接口訪問固態電子盤,USB切換開關實現了兩者對電子盤控制權的切換,USB轉SATA可實現通過USB接口訪問控制固態電子盤。

圖3 基于Hi3531處理器的視頻處理電路原理圖

圖4 SATA轉USB接口電路
圖4中SATA轉USB接口電路工作模式如下:正常撲獲、存儲視頻數據時,固態電子盤SATA接口通過USB轉換電路后,接入Hi3531處理器的USB接口;當主機要通過客戶端回放、導出固態電子盤中存儲的視頻數據時,客戶端應用軟件通過默認控制命令,Hi3531處理器解析命令,通過USB切換開關電路將固態電子盤控制端切換到主機端,關閉上述視頻撲獲、存儲通道,此時主機端獲得了對固態電子盤的訪問權,從而提供了客戶端軟件對視頻數據的回放、導出的硬件基礎。
在本電路設計中,不僅包括核心芯片Hi3531處理等硬件電路設計,還包括Hi3531處理器內部驅動程序開發,驅動程序能夠控制、協調Hi3531處理器,按照設計要求對輸入視頻撲獲、存儲和回放。
Hi3531處理器作為ARM9體系的嵌入式高端芯片,驅動程序開發環境采用Cmake項目源碼工程編譯管理工具和TortoiseGit項目源碼管理工具,程序編譯在Linux操作系統上采用公共交叉編譯。
圖5為根據視頻存儲和回放的設計要求,規劃的Hi3531處理器驅動程序運行次序圖。

圖5 Hi3531處理器驅動程序運行次序圖
根據圖5的Hi3531處理器驅動程序運行次序圖,Hi3531處理器軟件運行順序如圖,分為以下6個步驟:
步驟1:啟動,執行必要的啟動腳本來初始化業務軟件的運行環境,
步驟2:加載必要的設備驅動程序(RTC、音視頻接口、USB、 SATA等)。
步驟3:啟動主程序進程,Web服務器進程。主程序進程開啟處理器視頻編碼模塊,此工作模式為視頻存儲模式。
步驟4:“信令通訊線程”接收到信令后,解析信令,依次執行命令,如信令為開啟反演狀態,則進入步驟5.
步驟5:開啟處理器視頻解碼進程,從SSD盤中獲取反演文件,解碼輸出,工作模式為存儲視頻回放模式。
步驟6:循環執行步驟4。
按照軟件設計和實現功能,處理器軟件主要分為音視頻采集編碼模塊、音視頻解碼播放模塊、文件存儲管理模塊、文件信息索引模塊和視頻直播模塊,每個軟件模塊的功能劃分如下:
音視頻采集編碼模塊主要負責音視頻采集編碼工作,其中分為芯片驅動層、輸入管理層、編碼層、輸出管理層、附屬信息層等幾個部分。芯片驅動層負責驅動音視頻采集芯片,使其能夠適配音視頻編碼芯片的輸入時序要求,音頻為I2S總線、視頻為BT.1120時序。輸入管理層負責調整音視頻編碼芯片Hi3531的音視頻輸入管理通道,使其工作在預先配置的工作模式。輸出管理層:負責音視頻輸出配置管理,及標識管理等。編碼層主要是配置啟動Hi3531 SDK中的視頻編碼模塊,音頻的編碼層部分負責把接收到的PCM裸流,進行立體聲融合、聲道分離等數據預處理。音視頻編碼流,目前設計為直接通過數據流轉模塊,裸流存儲,需要導出時,調用封裝模塊進行MP4等的封裝導出。附屬信息層包括采集時間戳管理、NTP時間戳管理。
視音頻解碼播放模塊接收主機端傳來的指令,解碼播放相應通道、相應時間的視音頻數據到視音頻輸出接口。此模塊還響應主機端下發的錄制任務、文件列表查詢等功能。
文件存儲管理模塊的主要功能是管理存儲介質內的文件存儲、文件空間管理、文件導出管理、文件滿報警、文件自動清理等功能。該模塊能夠為視音頻采集編碼模塊提供分割、存儲等功能;能夠為視音頻解碼播放模塊提供文件查詢,文件讀寫,文件導出、文件緩存等功能。文件的存儲文件類型為MKV。使用ffmpeg進行MKV封裝。按照一定的編碼幀數,定期更新mkv文件頭的信息。可保存記錄到斷電時刻之前的視頻。模塊監控內置的SSD盤存儲空間,在存儲空間寫滿后,存儲視頻數據進行循環覆蓋,記錄最新的數據并刪除最早的數據。
文件信息索引管理模塊能夠自動收集、掃描并管理文件存儲管理模塊的文件內容信息,并保持索引信息與存儲文件的真實對應,同時該模塊還具有統計錄取文件及時長、已錄取總時長等功能。
視頻直播模塊通過內嵌商業化成熟的音視頻播放軟件,如暴風影音等,在主機客戶端對存儲在SSD盤內的視頻信號進行播放,對輸入視頻信號實時監控。
根據上述處理器驅動軟件規劃和設計,可以進行驅動軟件詳細設計,完成符合設計和使用要求的電路配套軟件。
基于Hi3531處理器的視頻存儲與回放電路設計和架構較簡潔,電路實現重點在Hi3531處理器驅動軟件部分。圖6左半部分為本單位設計和實現的三路VGA輸入的視頻存儲與回放電路板,圖6右半部分為三路VGA輸入的視頻存儲與回放電路測試效果圖,從電路系統測試效果圖看,本電路在視頻監控、檢索、回放等方面具有一定的使用價值。

圖6 基于Hi3531處理的視頻存儲與回放電路板(左)和測試效果圖(右)
[1]深圳海思半導體有限公司.Hi3511 H.264編解碼處理器用戶指南[Z].深圳:深圳海思半導體有限公司,2008.
10.16640/j.cnki.37-1222/t.2016.14.135
金永明(1972-),男,碩士,高級工程師,主要從事加固顯示器相關視頻電路和軟件開發和設計工作。