金永明(中國(guó)電子科技集團(tuán)公司第五十五研究所,南京 210000)
基于Hi3531的視頻存儲(chǔ)與回放電路的設(shè)計(jì)
金永明
(中國(guó)電子科技集團(tuán)公司第五十五研究所,南京 210000)
本文描述了基于Hi3531處理器為核心的視頻存儲(chǔ)與回放電路的設(shè)計(jì),介紹了電路中重要功能模塊設(shè)計(jì),同時(shí)對(duì)與電路相關(guān)的驅(qū)動(dòng)軟件進(jìn)行了規(guī)劃。本電路實(shí)現(xiàn)方便,具有一定的使用價(jià)值。
Hi3531;視頻;存儲(chǔ)
隨著計(jì)算機(jī)應(yīng)用領(lǐng)域地不斷擴(kuò)展,現(xiàn)在人類在工作、學(xué)習(xí)、生活過程中越來越依靠計(jì)算機(jī)應(yīng)用提供的便利,提高工作效率、改善生活質(zhì)量、激發(fā)學(xué)習(xí)樂趣。因此,對(duì)計(jì)算機(jī)上應(yīng)用及操作的監(jiān)控也是一個(gè)重要的研究方向,通過對(duì)計(jì)算機(jī)上應(yīng)用及操作的實(shí)時(shí)監(jiān)控,可以完成計(jì)算機(jī)應(yīng)用及操作的事后評(píng)估、檢索和取證,為檢查計(jì)算機(jī)操作人員的工作準(zhǔn)確性和合理性提供視頻數(shù)據(jù)。
對(duì)計(jì)算機(jī)應(yīng)用和操作進(jìn)行視頻撲獲、存儲(chǔ)和回放,需要對(duì)計(jì)算機(jī)應(yīng)用和操作的視頻監(jiān)控。我們基于Hi3531芯片設(shè)計(jì)和實(shí)現(xiàn)了計(jì)算機(jī)視頻存儲(chǔ)和回放電路,可將計(jì)算機(jī)VGA視頻信號(hào)撲獲,存儲(chǔ)在固態(tài)電子盤中,利用USB通訊口對(duì)存儲(chǔ)視頻進(jìn)行回放,電路設(shè)計(jì)穩(wěn)定高效,軟件使用簡(jiǎn)易,在視頻監(jiān)控、視頻分析、視頻檢索等應(yīng)用中具有一定的使用價(jià)值。
視頻存儲(chǔ)與回放電路中核心芯片為Hi3531,此芯片是華為公司針對(duì)多路高清 DVR、NVR產(chǎn)品應(yīng)用開發(fā)的一款專業(yè)高端SOC 芯片。芯片中內(nèi)置高性能雙核A9處理器、可完成高達(dá) 5 路1080P 視頻信號(hào)的實(shí)時(shí)多協(xié)議編譯碼以及專用TOE 網(wǎng)絡(luò)加速,能應(yīng)對(duì)越來越復(fù)雜的高清視頻和高速網(wǎng)絡(luò)應(yīng)用。芯片內(nèi)部集成了優(yōu)異的視頻引擎和編譯碼算法,結(jié)合芯片的多路高清顯示輸出能力,可以充分滿足高質(zhì)量圖像體驗(yàn)。同時(shí)芯片有豐富的外圍接口,滿足不同項(xiàng)目設(shè)計(jì)接口的差異化,圖1為視頻存儲(chǔ)與回放電路原理功能框圖。
圖1 視頻存儲(chǔ)與回放電路原理框圖
圖1中輸入視頻通過視頻環(huán)出處理模塊后,完成視頻信號(hào)1:2復(fù)制、增強(qiáng)和A/D轉(zhuǎn)換后,提供外部顯示終端視頻信號(hào),同步提供后繼FPGA分辨率轉(zhuǎn)換模塊和視頻處理模塊的視頻源,在驅(qū)動(dòng)軟件和應(yīng)用軟件控制下,將數(shù)字視頻信號(hào)存儲(chǔ)在SSD盤中,供外部主機(jī)客戶端檢索、回放。
2.1VGA視頻環(huán)出電路模塊設(shè)計(jì)
目前計(jì)算機(jī)中使用最多的視頻接口為VGA視頻接口,其他DVI視頻接口、PAL視頻接口等可以通過商業(yè)化視頻轉(zhuǎn)換板變化成VGA視頻接口,因此本文中視頻存儲(chǔ)和回放電路的設(shè)計(jì)以VGA視頻接口為主。
在實(shí)際使用過程中,輸入的VGA視頻信號(hào)必須在顯示圖像的過程中,同步完成視頻存儲(chǔ)和回放處理。因此,VGA視頻環(huán)出電路是輸入VGA視頻信號(hào)處理的重要電路。
圖2為VGA視頻環(huán)出電路原理框圖。外部輸入的VGA視頻信號(hào)中數(shù)字部分VS、HS信號(hào)通過數(shù)字信號(hào)調(diào)理器,完成數(shù)字信號(hào)整形、緩沖等處理后,增加了數(shù)字信號(hào)的輸出功率和效率;VGA視頻信號(hào)中模擬部分紅綠藍(lán)視頻信號(hào)經(jīng)過視頻放大器后,完成了視頻信號(hào)放大、復(fù)制、分配處理,同樣也增加了模擬信號(hào)的輸出功率和效率。輸入的VGA視頻信號(hào)完成上述視頻放大和調(diào)理后,按照1:2分配給后續(xù)的顯示終端和視頻A/D轉(zhuǎn)換器,可同步完成輸入視頻VGA信號(hào)實(shí)時(shí)顯示和視頻A/D轉(zhuǎn)換。
圖2 VGA視頻環(huán)出電路原理框圖
VGA視頻信號(hào)中VS、VS信號(hào)是低于1MHz以下的信號(hào),數(shù)字信號(hào)調(diào)理器采用74HC244等常用數(shù)字信號(hào)緩沖器,可以完成數(shù)字信號(hào)調(diào)理功能。
EL5364是600MHz高帶寬電流回饋放大器,是視頻信號(hào)處理應(yīng)用中理想的放大器。同時(shí),、電路芯片還可以完成VGA視頻信號(hào)中模擬紅綠藍(lán)信號(hào)的1:2分配,設(shè)計(jì)中選用EL5364作為VGA視頻信號(hào)放大器,完成VGA視頻信號(hào)的放大和備份處理。
考慮到后續(xù)VGA視頻信號(hào)存儲(chǔ)和回放電路芯片只能處理數(shù)字信號(hào),而且存儲(chǔ)視頻信號(hào)的物理空間為固態(tài)電子盤,也只能存儲(chǔ)數(shù)字視頻信號(hào),因此必須對(duì)VGA視頻信號(hào)A/D轉(zhuǎn)換,變換成數(shù)字視頻信號(hào)供后級(jí)電路處理。
ADV7842是一款高質(zhì)量、單芯片、2:1多任務(wù)HDMI?接收器和圖形數(shù)字化儀,并集成多格式視頻譯碼器。該器件內(nèi)置一個(gè)雙路輸入HDMI 1.4相容型接收器,支持最高達(dá)1080p 的所有高清電視格式,顯示分辨率最高可達(dá)UXGA(1600×1200,60 Hz)。
ADV7842支持圖形數(shù)字化,能夠?qū)GA至UXGA 速率的RGB 圖形信號(hào)進(jìn)行數(shù)字化處理,將其轉(zhuǎn)換為數(shù)字RGB 或YCbCr 像素輸出流。
設(shè)計(jì)中通過ADV7842將VGA視頻信號(hào)轉(zhuǎn)換為BT.1120數(shù)字信號(hào),傳輸給FPGA進(jìn)行分辨率轉(zhuǎn)換,轉(zhuǎn)換后視頻信號(hào)傳輸給主處理器進(jìn)行編碼壓縮和存儲(chǔ)。
ADV7842管腳中有INT中斷輸出,可以通過對(duì)芯片設(shè)置,使ADV7842特定的寄存器位變化及時(shí)反映到INT中斷輸出上,這樣做可以實(shí)現(xiàn)外部輸入信號(hào)分辨率變化時(shí),F(xiàn)PGA和主處理器能夠及時(shí)檢測(cè)到,并采取相應(yīng)處理。INT中斷信號(hào)可設(shè)置為高電平或低電平有效。
設(shè)計(jì)中考慮到實(shí)際應(yīng)用中,需要對(duì)多路VGA信號(hào)進(jìn)行視頻A/ D轉(zhuǎn)換、存儲(chǔ)和回放,需要多片ADV7842進(jìn)行視頻A/D轉(zhuǎn)換。ADV7842的I2C地址固定無法設(shè)置,因此可通過I2C擴(kuò)展芯片完成對(duì)多片相同地址ADV7842的配置工作,設(shè)計(jì)中采用主處理器I2C配置多片ADV7842,并行地對(duì)16路VGA視頻信號(hào)進(jìn)行了A/D裝換,設(shè)計(jì)結(jié)果符合使用要求。
2.2FPGA分辨率轉(zhuǎn)換電路模塊設(shè)計(jì)
對(duì)計(jì)算機(jī)輸入VGA視頻信號(hào)進(jìn)行存儲(chǔ)和回顧,須兼顧對(duì)計(jì)算機(jī)啟動(dòng)全過程的錄制。眾所周知,以Windows操作系統(tǒng)為例,計(jì)算機(jī)在開機(jī)啟動(dòng)時(shí)VGA視頻分辨率為640x480,操作系統(tǒng)啟動(dòng)完成后VGA視頻分辨率變?yōu)椴僮飨到y(tǒng)默認(rèn)分辨率,多數(shù)為高于640x480的視頻分辨率。后繼Hi3531芯片在視頻輸入接口的分辨率發(fā)生改變時(shí),需要重新配置VI視頻編碼才可以完成不同分辨率視頻信號(hào)的處理,但是相關(guān)程序模塊運(yùn)行所需時(shí)間較長(zhǎng)。因此設(shè)計(jì)過程中,考慮利用FPGA將輸入640x480分辨率的BT1120時(shí)序視頻信號(hào),通過硬件分辨率轉(zhuǎn)換電路處理成操作系統(tǒng)默認(rèn)分辨率的BT1120時(shí)序視頻信號(hào),再供給Hi3531進(jìn)行編碼存儲(chǔ),提高電路運(yùn)行效率。
此外,F(xiàn)PGA進(jìn)行分辨率轉(zhuǎn)換后,當(dāng)出現(xiàn)人員誤操作、系統(tǒng)藍(lán)屏等錯(cuò)誤信息或者操作系統(tǒng)進(jìn)入安全模式等引起分辨率變化時(shí),F(xiàn)PGA分辨率轉(zhuǎn)換電路可保證Hi3531視頻輸入接口的輸入分辨率保持不變,F(xiàn)PGA分辨率轉(zhuǎn)換電路實(shí)現(xiàn)方式:當(dāng)輸入視頻分辨率低于默認(rèn)分辨率時(shí),通過加黑邊的方式將其轉(zhuǎn)換為默認(rèn)分辨率。當(dāng)輸入分辨率高于默認(rèn)分辨率時(shí),F(xiàn)PGA轉(zhuǎn)換電路利用GPIO腳實(shí)時(shí)通知Hi3531處理芯片,F(xiàn)PGA轉(zhuǎn)換分辨率電路實(shí)時(shí)生成藍(lán)屏提示視頻代替異常分辨率視頻信號(hào),無縫連接地完成視頻存儲(chǔ)的連續(xù)性,同時(shí)還可從存儲(chǔ)視頻和GPIO兩個(gè)方面對(duì)異常視頻信號(hào)報(bào)警。
2.3視頻處理電路模塊設(shè)計(jì)
視頻處理電路主要完成A/D轉(zhuǎn)換后數(shù)字視頻編碼、存儲(chǔ)工作,也是電路設(shè)計(jì)中核心部分,選擇了Hi3531處理器進(jìn)行視頻處理。
Hi3531處理器是一個(gè)視頻編碼器,可支持H.264/ MPEG-4/JPEG的多協(xié)議編碼器,處理器中包含VEDU等部分。VEDU(Video Encode Unit)是一個(gè)硬件實(shí)現(xiàn)的支持多種視頻標(biāo)準(zhǔn)(包括H.264、MPEG-4等)的編碼器。VEDU 具有CPU 占用率低、總線帶寬占用小、低延時(shí)、低功耗等優(yōu)點(diǎn),最高可達(dá)16x960H/30fps+16x480x272/30fps 編碼。支持圖像分辨率可配置,最小圖像分辨率160x64,最大圖像分辨率7040x8176。
Hi3531處理器內(nèi)置視頻捕獲單元VICAP(Video capture),視頻撲獲單元可通過多路BT.656(mux)/1120(mux)/601 接口或者DC(Digital Camera)接口撲獲視頻數(shù)據(jù),存入指定的內(nèi)存區(qū)域。在此過程中,VICAP可以對(duì)視頻圖像數(shù)據(jù)進(jìn)行水平垂直縮?。ǜ鶕?jù)通道情況能簡(jiǎn)單地采樣或者是縮放)并輸出多個(gè)不同的視頻流。
VICAP 有以下特點(diǎn):
輸入最大分辨率為2560x1600
外部支持8 個(gè)BT656 接口,或 4 個(gè)BT1120界面
內(nèi)部支持8 個(gè)端口和16 路通道視頻處理,每個(gè)通道支持隔行和逐行輸入模式;其中有8 路支持小碼流輸出
支持BT.656(mux),BT.1120(mux) ,BT601 ,DC等時(shí)序
支持SMPTE293M/ITU-R BT.1358時(shí)序(480P/576P)
支持BT.601 時(shí)序
支持SMPTE 274M/BT 1120 時(shí)序(1080i/1080P)
支持SMPTE 296M(720P)
支持最大16 倍的水平和垂直縮小
各信道支持3 級(jí)總線優(yōu)先級(jí)可配
支持在一個(gè)指定窗口內(nèi)獲取數(shù)據(jù)
支持水平鏡像和垂直鏡像
輸出格式支持存儲(chǔ)模式:SPYCbCr 4:2:0 和SPYCbCr 4:2:2模式。
Hi351處理器的VDP(Video Display)模塊主動(dòng)從內(nèi)存相應(yīng)位置讀取視頻和圖形數(shù)據(jù),將視頻層和圖形層數(shù)據(jù)迭加后通過顯示信道送出,支持后繼視頻信號(hào)數(shù)字化存儲(chǔ),為視頻信號(hào)數(shù)字化存儲(chǔ)提供了硬件基礎(chǔ)。
圖3為基于Hi3531處理器的視頻處理電路原理圖。輸入VGA視頻信號(hào)通過視頻環(huán)出、視頻A/D變換、分辨率轉(zhuǎn)換等處理后,數(shù)字視頻信號(hào)進(jìn)入Hi3531處理器相應(yīng)部分,完成視頻處理的硬件搭配,結(jié)合處理器內(nèi)部程序可完成視頻撲獲、存儲(chǔ)等功能。
2.4SATA轉(zhuǎn)USB電路模塊設(shè)計(jì)
如圖3所示,視頻處理后的數(shù)字信號(hào)存儲(chǔ)在SSD固態(tài)電子盤中,可以提高數(shù)據(jù)訪問的便捷性和可靠性??紤]到USB通訊接口不僅使用方便,而且傳輸數(shù)率較高,因此設(shè)計(jì)中采用USB通訊口作為視頻數(shù)據(jù)對(duì)外傳輸接口。Hi3531處理器沒有USB從設(shè)備接口,為了滿足主機(jī)客戶端通過USB通訊口讀取固態(tài)硬盤視頻數(shù)據(jù)的需要,在固態(tài)電子盤SATA數(shù)據(jù)接口與主機(jī)USB通訊接口之間,設(shè)計(jì)了如圖4所示的SATA轉(zhuǎn)USB的接口電路,Hi3531處理器和主機(jī)都可通過USB接口訪問固態(tài)電子盤,USB切換開關(guān)實(shí)現(xiàn)了兩者對(duì)電子盤控制權(quán)的切換,USB轉(zhuǎn)SATA可實(shí)現(xiàn)通過USB接口訪問控制固態(tài)電子盤。
圖3 基于Hi3531處理器的視頻處理電路原理圖
圖4 SATA轉(zhuǎn)USB接口電路
圖4中SATA轉(zhuǎn)USB接口電路工作模式如下:正常撲獲、存儲(chǔ)視頻數(shù)據(jù)時(shí),固態(tài)電子盤SATA接口通過USB轉(zhuǎn)換電路后,接入Hi3531處理器的USB接口;當(dāng)主機(jī)要通過客戶端回放、導(dǎo)出固態(tài)電子盤中存儲(chǔ)的視頻數(shù)據(jù)時(shí),客戶端應(yīng)用軟件通過默認(rèn)控制命令,Hi3531處理器解析命令,通過USB切換開關(guān)電路將固態(tài)電子盤控制端切換到主機(jī)端,關(guān)閉上述視頻撲獲、存儲(chǔ)通道,此時(shí)主機(jī)端獲得了對(duì)固態(tài)電子盤的訪問權(quán),從而提供了客戶端軟件對(duì)視頻數(shù)據(jù)的回放、導(dǎo)出的硬件基礎(chǔ)。
在本電路設(shè)計(jì)中,不僅包括核心芯片Hi3531處理等硬件電路設(shè)計(jì),還包括Hi3531處理器內(nèi)部驅(qū)動(dòng)程序開發(fā),驅(qū)動(dòng)程序能夠控制、協(xié)調(diào)Hi3531處理器,按照設(shè)計(jì)要求對(duì)輸入視頻撲獲、存儲(chǔ)和回放。
Hi3531處理器作為ARM9體系的嵌入式高端芯片,驅(qū)動(dòng)程序開發(fā)環(huán)境采用Cmake項(xiàng)目源碼工程編譯管理工具和TortoiseGit項(xiàng)目源碼管理工具,程序編譯在Linux操作系統(tǒng)上采用公共交叉編譯。
圖5為根據(jù)視頻存儲(chǔ)和回放的設(shè)計(jì)要求,規(guī)劃的Hi3531處理器驅(qū)動(dòng)程序運(yùn)行次序圖。
圖5 Hi3531處理器驅(qū)動(dòng)程序運(yùn)行次序圖
根據(jù)圖5的Hi3531處理器驅(qū)動(dòng)程序運(yùn)行次序圖,Hi3531處理器軟件運(yùn)行順序如圖,分為以下6個(gè)步驟:
步驟1:?jiǎn)?dòng),執(zhí)行必要的啟動(dòng)腳本來初始化業(yè)務(wù)軟件的運(yùn)行環(huán)境,
步驟2:加載必要的設(shè)備驅(qū)動(dòng)程序(RTC、音視頻接口、USB、 SATA等)。
步驟3:?jiǎn)?dòng)主程序進(jìn)程,Web服務(wù)器進(jìn)程。主程序進(jìn)程開啟處理器視頻編碼模塊,此工作模式為視頻存儲(chǔ)模式。
步驟4:“信令通訊線程”接收到信令后,解析信令,依次執(zhí)行命令,如信令為開啟反演狀態(tài),則進(jìn)入步驟5.
步驟5:開啟處理器視頻解碼進(jìn)程,從SSD盤中獲取反演文件,解碼輸出,工作模式為存儲(chǔ)視頻回放模式。
步驟6:循環(huán)執(zhí)行步驟4。
按照軟件設(shè)計(jì)和實(shí)現(xiàn)功能,處理器軟件主要分為音視頻采集編碼模塊、音視頻解碼播放模塊、文件存儲(chǔ)管理模塊、文件信息索引模塊和視頻直播模塊,每個(gè)軟件模塊的功能劃分如下:
音視頻采集編碼模塊主要負(fù)責(zé)音視頻采集編碼工作,其中分為芯片驅(qū)動(dòng)層、輸入管理層、編碼層、輸出管理層、附屬信息層等幾個(gè)部分。芯片驅(qū)動(dòng)層負(fù)責(zé)驅(qū)動(dòng)音視頻采集芯片,使其能夠適配音視頻編碼芯片的輸入時(shí)序要求,音頻為I2S總線、視頻為BT.1120時(shí)序。輸入管理層負(fù)責(zé)調(diào)整音視頻編碼芯片Hi3531的音視頻輸入管理通道,使其工作在預(yù)先配置的工作模式。輸出管理層:負(fù)責(zé)音視頻輸出配置管理,及標(biāo)識(shí)管理等。編碼層主要是配置啟動(dòng)Hi3531 SDK中的視頻編碼模塊,音頻的編碼層部分負(fù)責(zé)把接收到的PCM裸流,進(jìn)行立體聲融合、聲道分離等數(shù)據(jù)預(yù)處理。音視頻編碼流,目前設(shè)計(jì)為直接通過數(shù)據(jù)流轉(zhuǎn)模塊,裸流存儲(chǔ),需要導(dǎo)出時(shí),調(diào)用封裝模塊進(jìn)行MP4等的封裝導(dǎo)出。附屬信息層包括采集時(shí)間戳管理、NTP時(shí)間戳管理。
視音頻解碼播放模塊接收主機(jī)端傳來的指令,解碼播放相應(yīng)通道、相應(yīng)時(shí)間的視音頻數(shù)據(jù)到視音頻輸出接口。此模塊還響應(yīng)主機(jī)端下發(fā)的錄制任務(wù)、文件列表查詢等功能。
文件存儲(chǔ)管理模塊的主要功能是管理存儲(chǔ)介質(zhì)內(nèi)的文件存儲(chǔ)、文件空間管理、文件導(dǎo)出管理、文件滿報(bào)警、文件自動(dòng)清理等功能。該模塊能夠?yàn)橐曇纛l采集編碼模塊提供分割、存儲(chǔ)等功能;能夠?yàn)橐曇纛l解碼播放模塊提供文件查詢,文件讀寫,文件導(dǎo)出、文件緩存等功能。文件的存儲(chǔ)文件類型為MKV。使用ffmpeg進(jìn)行MKV封裝。按照一定的編碼幀數(shù),定期更新mkv文件頭的信息。可保存記錄到斷電時(shí)刻之前的視頻。模塊監(jiān)控內(nèi)置的SSD盤存儲(chǔ)空間,在存儲(chǔ)空間寫滿后,存儲(chǔ)視頻數(shù)據(jù)進(jìn)行循環(huán)覆蓋,記錄最新的數(shù)據(jù)并刪除最早的數(shù)據(jù)。
文件信息索引管理模塊能夠自動(dòng)收集、掃描并管理文件存儲(chǔ)管理模塊的文件內(nèi)容信息,并保持索引信息與存儲(chǔ)文件的真實(shí)對(duì)應(yīng),同時(shí)該模塊還具有統(tǒng)計(jì)錄取文件及時(shí)長(zhǎng)、已錄取總時(shí)長(zhǎng)等功能。
視頻直播模塊通過內(nèi)嵌商業(yè)化成熟的音視頻播放軟件,如暴風(fēng)影音等,在主機(jī)客戶端對(duì)存儲(chǔ)在SSD盤內(nèi)的視頻信號(hào)進(jìn)行播放,對(duì)輸入視頻信號(hào)實(shí)時(shí)監(jiān)控。
根據(jù)上述處理器驅(qū)動(dòng)軟件規(guī)劃和設(shè)計(jì),可以進(jìn)行驅(qū)動(dòng)軟件詳細(xì)設(shè)計(jì),完成符合設(shè)計(jì)和使用要求的電路配套軟件。
基于Hi3531處理器的視頻存儲(chǔ)與回放電路設(shè)計(jì)和架構(gòu)較簡(jiǎn)潔,電路實(shí)現(xiàn)重點(diǎn)在Hi3531處理器驅(qū)動(dòng)軟件部分。圖6左半部分為本單位設(shè)計(jì)和實(shí)現(xiàn)的三路VGA輸入的視頻存儲(chǔ)與回放電路板,圖6右半部分為三路VGA輸入的視頻存儲(chǔ)與回放電路測(cè)試效果圖,從電路系統(tǒng)測(cè)試效果圖看,本電路在視頻監(jiān)控、檢索、回放等方面具有一定的使用價(jià)值。
圖6 基于Hi3531處理的視頻存儲(chǔ)與回放電路板(左)和測(cè)試效果圖(右)
[1]深圳海思半導(dǎo)體有限公司.Hi3511 H.264編解碼處理器用戶指南[Z].深圳:深圳海思半導(dǎo)體有限公司,2008.
10.16640/j.cnki.37-1222/t.2016.14.135
金永明(1972-),男,碩士,高級(jí)工程師,主要從事加固顯示器相關(guān)視頻電路和軟件開發(fā)和設(shè)計(jì)工作。