HWB-DVR數(shù)字視頻錄像機(jī)設(shè)計(jì)
摘 要:本文介紹了HWB-DVR數(shù)字視頻錄像機(jī)的整體設(shè)計(jì)思想,描述了其軟硬件的構(gòu)成,對(duì)其中嵌入式CPU和編/解碼IC的工作原理做了詳細(xì)說(shuō)明。
關(guān)鍵詞:數(shù)字錄像機(jī)(DVR);MPEG-2;MPEG-4;PS;TS
概述
HWB-DVR數(shù)字視頻錄像機(jī)是基于MPEG-1、MPEG-2/DVB、MPEG-4標(biāo)準(zhǔn)的家庭應(yīng)用多媒體處理和存儲(chǔ)平臺(tái),可以對(duì)模擬和數(shù)字電視信號(hào)進(jìn)行MPEG-1、MPEG-2或MPEG-4格式的編碼錄像和回放,是集機(jī)頂盒與錄像機(jī)于一體的數(shù)字化家用電器。本文就硬件和軟件兩方面說(shuō)明其設(shè)計(jì)思路。
硬件設(shè)計(jì)
由圖1可以看出DVR系統(tǒng)主要由兩大功能部分組成:編/解碼部分和CPU部分。
編/解碼部分的功能是將輸入的模擬音/視頻信號(hào)轉(zhuǎn)換成MPEG-1、MPEG-2或MPEG-4格式的數(shù)據(jù)流,可以將數(shù)據(jù)流進(jìn)行存儲(chǔ),也可以再將其轉(zhuǎn)換成模擬音/視頻信號(hào)輸出。
編/解碼部分的核心芯片是HT2010。它是音/視頻系統(tǒng)數(shù)字信號(hào)編/解碼器,支持MPEG-1,MPEG-2和MPEG-4三種格式的編/解碼,并且可以在編/解碼的過(guò)程中進(jìn)行三種格式之間的轉(zhuǎn)換。HT2010具有編碼和解碼雙重功能,對(duì)數(shù)據(jù)流的編碼和解碼過(guò)程可以同時(shí)進(jìn)行。HT2010可以將數(shù)據(jù)流編/解碼成MPEG格式的TS流或PS流。
視頻信號(hào)的處理過(guò)程如圖2所示。
編/解碼部分的輸入視頻信號(hào)可以是以下兩種形式:
?復(fù)合電視信號(hào)(CVBS)
?分離電視信號(hào)(S-Video)
輸出為CVBS信號(hào),系統(tǒng)可以擴(kuò)展S-Video輸入/輸出。
輸入的模擬視頻信號(hào)通過(guò)視頻ADC,將模擬的視頻信號(hào)解碼成ITU-656格式的視頻數(shù)據(jù)流,該視頻數(shù)據(jù)流經(jīng)過(guò)HT2010芯片編碼后可以轉(zhuǎn)換成MPEG-1、MPEG-2或MPEG-4格式的數(shù)據(jù)流,將這種格式的數(shù)據(jù)流輸入到硬盤(pán)中存儲(chǔ)起來(lái),就完成了DVR的存儲(chǔ)功能。硬盤(pán)存儲(chǔ)的編碼后的MPEG數(shù)據(jù)流經(jīng)過(guò)HT2010解碼后,輸出ITU-656格式的視頻數(shù)據(jù)流到視頻DAC,經(jīng)轉(zhuǎn)換后輸出CVBS信號(hào)和S-Video信號(hào)。通過(guò)DVR的視頻輸出端子將電視信號(hào)連接到電視機(jī)上,就完成了DVR的播放功能。如果同時(shí)進(jìn)行以上兩個(gè)過(guò)程,就完成了DVR的同時(shí)錄播功能。
音頻信號(hào)的處理過(guò)程與視頻處理過(guò)程類似:輸入的音頻信號(hào)經(jīng)過(guò)音頻ADC轉(zhuǎn)換成數(shù)字的音頻信號(hào),再經(jīng)過(guò)HT2010編碼成MPEG格式。MPEG格式的音頻信號(hào)經(jīng)過(guò)音頻DAC轉(zhuǎn)換成模擬音頻輸出。DVR支持音/視頻同步采集、處理。
HT2010提供了標(biāo)準(zhǔn)PCI接口,可以通過(guò)PCI總線與 CPU進(jìn)行數(shù)據(jù)交換。主控制芯片采用嵌入式x86 CPU,它集成了32位PCI總線控制器、支持多種類型的外部存儲(chǔ)器接口、2個(gè)USB1.1控制器、10/100Mbps自適應(yīng)以太網(wǎng)控制器、串口通信控制器,以及直接訪問(wèn)存儲(chǔ)控制器、時(shí)鐘發(fā)生器、電源管理器、中斷控制器和通用I/O端口等大量外圍模塊。CPU通過(guò)I2C接口與系統(tǒng)的其它芯片進(jìn)行數(shù)據(jù)傳送,發(fā)送命令。
通過(guò)HT2010編/解碼后的數(shù)據(jù)流通過(guò)PCI總線與CPU進(jìn)行數(shù)據(jù)交換,可以將數(shù)據(jù)通過(guò)CPU送到硬盤(pán)中存儲(chǔ)起來(lái)。通過(guò)CPU提供的外圍接口,DVR可以與多種設(shè)備進(jìn)行連接,用戶可以通過(guò)USB接口、串行接口等外部接口來(lái)獲得硬盤(pán)中存儲(chǔ)的節(jié)目信息。用戶還可以通過(guò)外部接口與攝像機(jī)連接,這樣攝像機(jī)錄制的節(jié)目就通過(guò)DVR存儲(chǔ)起來(lái),也可以通過(guò)DVR進(jìn)行播放。用戶還可以通過(guò)通用I/O端口與計(jì)算機(jī)連接,還可以通過(guò)以太網(wǎng)接口與Internet網(wǎng)絡(luò)連接,實(shí)現(xiàn)遠(yuǎn)程控制。在本DVR系統(tǒng)中預(yù)留了這些接口用于將來(lái)系統(tǒng)擴(kuò)展。
系統(tǒng)軟件設(shè)計(jì)
軟件總體設(shè)計(jì)
DVR系統(tǒng)軟件依據(jù)模塊化、功能化、可擴(kuò)展性原則設(shè)計(jì),整體使用的4層體系結(jié)構(gòu)如圖3所示。各模塊和硬件的關(guān)系如圖4所示。
PCI驅(qū)動(dòng)程序
核心CPU和編/解碼IC之間使用PCI總線通信,PCI驅(qū)動(dòng)程序?qū)崿F(xiàn)編/解碼IC與操作系統(tǒng)內(nèi)核的數(shù)據(jù)通信及控制。PCI驅(qū)動(dòng)程序設(shè)計(jì)的優(yōu)化關(guān)系到系統(tǒng)運(yùn)行的可靠程度。PCI驅(qū)動(dòng)程序以模塊方式設(shè)計(jì),便于加載與調(diào)試。PCI驅(qū)動(dòng)程序的設(shè)計(jì)分為兩個(gè)過(guò)程:1. 模塊加載過(guò)程。操作系統(tǒng)通過(guò)運(yùn)行insmod命令加載驅(qū)動(dòng)程序,驅(qū)動(dòng)程序通過(guò)一系列過(guò)程完成對(duì)設(shè)備的初始化和系統(tǒng)資源分配。應(yīng)用程序調(diào)用分配的資源控制設(shè)備正常工作。2. 設(shè)備卸載過(guò)程。操作系統(tǒng)通過(guò)調(diào)用rmmod命令卸載驅(qū)動(dòng)程序。驅(qū)動(dòng)程序釋放系統(tǒng)資源,解除系統(tǒng)對(duì)硬件的控制。工作流程如圖5所示。
PCI驅(qū)動(dòng)程序中主要實(shí)現(xiàn)以下內(nèi)容:
static int card_open(struct inode *, struct file *);
static int card_close(struct inode *, struct file *);
static int card_ioctl(struct inode *, struct file *, u_int, u_long);
static void card_isr(int, void *, struct pt_regs *);
其中,card_open實(shí)現(xiàn)打開(kāi)PCI設(shè)備,增加訪問(wèn)計(jì)數(shù),為讀寫(xiě)設(shè)備做準(zhǔn)備工作。Card_close實(shí)現(xiàn)關(guān)閉設(shè)備的功能,釋放訪問(wèn)計(jì)數(shù),并將設(shè)備狀態(tài)標(biāo)志標(biāo)記為關(guān)閉狀態(tài)。Card_ioctl實(shí)現(xiàn)對(duì)PCI設(shè)備的基本控制,主要包括讀設(shè)備、寫(xiě)設(shè)備、設(shè)置設(shè)備工作參數(shù)等。Card_isr實(shí)現(xiàn)PCI設(shè)備的中斷處理,數(shù)據(jù)發(fā)送完成或數(shù)據(jù)接收就緒時(shí)都將引發(fā)中斷并調(diào)用該函數(shù)。因?yàn)橹袛嗟恼{(diào)用速度很快,該函數(shù)的調(diào)用效率要求很高。
數(shù)據(jù)在用戶空間與內(nèi)核空間中的傳遞采用iobuffer機(jī)制,使用map_user_kiobuf將用戶空間內(nèi)存映射到內(nèi)核空間,實(shí)現(xiàn)數(shù)據(jù)在用戶空間與內(nèi)核空間中的共享訪問(wèn),這一方法避免了數(shù)據(jù)在用戶空間與內(nèi)核空間中的復(fù)制,從而提高了系統(tǒng)運(yùn)行的速度。
結(jié)語(yǔ)
基于本方案設(shè)計(jì)的《數(shù)字視頻錄像機(jī)》項(xiàng)目已通過(guò)了國(guó)家廣播電影電視總局科技司組織的技術(shù)鑒定。
由于HWB-DVR數(shù)字視頻錄像機(jī)控制方便、存儲(chǔ)容量可以很大、工作穩(wěn)定可靠,因此數(shù)字錄像機(jī)的應(yīng)用相當(dāng)廣泛。
首先,數(shù)字錄像機(jī)可以全面替代傳統(tǒng)模擬錄像機(jī)的功能,在傳統(tǒng)的電視節(jié)目制作中,對(duì)模擬節(jié)目進(jìn)行錄制、存儲(chǔ),并可以方便快速地進(jìn)行節(jié)目搜索;另外還可以接收數(shù)字電視系統(tǒng)傳送的數(shù)字電視節(jié)目,根據(jù)需要進(jìn)行節(jié)目錄制,并且可以根據(jù)對(duì)節(jié)目質(zhì)量要求的不同采用不同的數(shù)字壓縮方式。數(shù)字錄像機(jī)既可用于廣播級(jí)電視前端,也可以為廣大消費(fèi)者所用。
在民用監(jiān)控項(xiàng)目,如閉路電視設(shè)備中,數(shù)字錄像機(jī)可以作為中心監(jiān)視設(shè)備,存儲(chǔ)各攝像頭傳來(lái)的圖象進(jìn)行編碼,并根據(jù)需要將信號(hào)傳送到遠(yuǎn)端控制中心。
另外,數(shù)字錄像機(jī)可以作為VCD、DVD的節(jié)目制作工具,數(shù)字錄像機(jī)帶上刻錄接口設(shè)備可以分別制作VCD、DVD光盤(pán)節(jié)目。■
參考文獻(xiàn)
1 王學(xué)龍 編著. 嵌入式Linux 系統(tǒng)設(shè)計(jì)與應(yīng)用. 清華大學(xué)出版社, 2001
2 Michbael Barr 著 于志宏 譯. C/C++嵌入式系統(tǒng)編程. 中國(guó)電力出版社, 2001
3 李朝青 編著. PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù). 北京航空航天大學(xué)出版社, 2000
4 MPEG專家組. ISO;IEC DIS 14496,1999
5 Alessandro Rubini,Jonathan Corbet著 魏永明等譯. Linux 設(shè)備驅(qū)動(dòng)程序設(shè)計(jì). 中國(guó)電力出版社, 2002
評(píng)論