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