摘 要:介紹基于USB 2.0技術(shù)的高清晰視頻存儲(chǔ)系統(tǒng)的軟件、硬件實(shí) 現(xiàn)。采用MPEG2視頻壓縮處理芯片MB86391和USB 2.0芯片CY7C68013,給出應(yīng)用實(shí) 例、固件編程框圖。
關(guān)鍵詞:MPEG;USB;WDM(Windows驅(qū)動(dòng)模型);MB86391;CY7C68013
1引言
在組建流媒體服務(wù)器時(shí),為了能容納更多的在線并發(fā)用戶,要求在前端的視頻流需經(jīng)過壓 縮 且傳輸?shù)絇C的接口速度不應(yīng)成為瓶頸。在家庭DVR(數(shù)字視頻存儲(chǔ))應(yīng)用中,家用電腦的普 及使人們希望通過簡(jiǎn)單的接口在PC上觀看電視節(jié)目,并存儲(chǔ)、回放精彩片斷。 對(duì)于擁有DV的人們,希望能把自拍的視頻存儲(chǔ)到PC中并加以剪輯。MPEG2壓縮技術(shù) 和USB接口正好滿足這樣的要求。
本文設(shè)計(jì)的系統(tǒng)相當(dāng)于一個(gè)視頻采集卡,帶有壓縮功能,并且采用USB接口。目前大 多數(shù)的采集卡是基于PCI接口,他的缺點(diǎn)是置于機(jī)箱內(nèi)部,容易受到干擾;而且PCI插槽數(shù)目 有限;雖然PCI的傳輸速度理論上達(dá)到133 MB/s,但是PCI插槽要分享此帶寬,F(xiàn) 在支持USB 2.0的主機(jī)板越來越多,他的傳輸速度理論上達(dá)到480 Mb/s,在實(shí)際測(cè)試中也可 達(dá)到200 Mb/s,完全滿足流媒體傳輸對(duì)帶寬的要求,再加上USB接口即插即用,置于PC外部 ,工作電流為500mA,因此把USB技術(shù)引入到采集系統(tǒng)是合適的。
2系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)的硬件框架如圖1所示,主要由2個(gè)主芯片構(gòu)成,一個(gè)是視頻壓縮部分的MB86391,他 完成MPEG的硬件壓縮;另一個(gè)是USB 2.0芯片,他完成數(shù)據(jù)的傳輸和USB協(xié)議的實(shí)現(xiàn),并且 利用集成的51內(nèi)核作為其他芯片的控制端。
模擬視頻信號(hào)先經(jīng)過SAA7113視頻A/D轉(zhuǎn)換形成8 b的YUV4∶2∶2數(shù)字信號(hào)輸入到MB86391 的 視頻輸入接口DVIDEO[70]。模擬音頻信號(hào)則通過PCM1800進(jìn)行A/D轉(zhuǎn)換,形成串行數(shù)字 信號(hào),輸入到GO7007SB的SDATA引腳。音頻A/D轉(zhuǎn)換需要PCM1723提供與壓縮芯片的時(shí)鐘相位 鎖 相的時(shí)鐘信號(hào)。音視頻數(shù)字信號(hào)經(jīng)MB86391的壓縮處理后,輸出符合MPEG 1/2標(biāo)準(zhǔn)的 混合影音碼流。該碼流通過8位并行接口與68013的FD[7..0]相連,USB芯片采用Sla ve FIFO方式接收數(shù)據(jù),一個(gè)FIFO寫滿后就向USB核心發(fā)中斷,核心收到中斷后把FIFO中的數(shù)據(jù) 發(fā)往PC,完成 一次的數(shù)據(jù)傳送,同時(shí)第二個(gè)FIFO區(qū)也在繼續(xù)接收MB86391的碼流,4個(gè)FIFO輪流接收。MB8 6391作為該電路的主芯片,由1個(gè)E2PROM進(jìn)行編程和初始化。另外,壓縮處理過程中需要 很大的緩存,所以外接1塊8 MB的SDRAM。
2.1視頻壓縮
視頻壓縮是當(dāng)今許多圖像、多媒體應(yīng)用中的尖端技術(shù),也是最重要的一部分。高清晰電視 圖像 數(shù)字化后一般都達(dá)到了1 Gb/s,以目前的傳輸網(wǎng)絡(luò)和存儲(chǔ)容量,一定要先進(jìn)行壓縮。本文采 用的是MB86391視頻壓縮芯片,208腳、HQFP封裝、0.18 μm工藝、工作頻率27/54 MHz。其 主要特性如下:
(1)編碼符合ISO/IEC138182(MPEG1 video)MP@ML或ISO/IEC111722(MPEG1 video)。
(2)25 Hz隔行掃描時(shí),最大的屏幕尺寸:720×576。
(3)D1格式和YUV輸入。
(4)8 b并行同步方式輸出。
(5)復(fù)合音頻視頻輸出,最大的碼流速率20 Mb/s。
86391外接1片4 Mb的FLASHROM,上電直接加ROM并且用串口進(jìn)行參數(shù)配置,所 以必須加 1塊RS 232電平轉(zhuǎn)換芯片MAX3222,通過串口向MB86391相應(yīng)的寄存器地址寫入數(shù)值,來控制 壓縮過程。
2.2數(shù)據(jù)傳輸
賽普拉斯公司提供的CY68013芯片是世界上第一款集成USB 2.0的微處理器,集成了USB 2.0 收發(fā)器、SIE(串行接口引擎)、增強(qiáng)的8051微控制器和可編程的外圍接口。GPIF(Genera l Programmable Interface)和主/從端點(diǎn)FIFO(8位或16位數(shù)據(jù)總線),為ATA,UTOPIA,E PP,PCMCIA和DSP等提供了簡(jiǎn)單和無縫連接接口。
68013片內(nèi)集成了4 kB的內(nèi)部FIFO,可以分成4個(gè)端點(diǎn)雙緩沖區(qū),即1個(gè)端點(diǎn)包括1個(gè) 輸入緩沖區(qū)和1個(gè)輸出緩沖區(qū),1個(gè)緩沖區(qū)的大小是512 B,4個(gè)緩沖區(qū)的選擇由FIFOADR [1:0]的4個(gè)狀態(tài)決定,例如初始化后FIFOADR[1:0]=00,此時(shí)選中ENPOINT2,當(dāng)MB 86391有 數(shù)據(jù)要傳輸時(shí),STEN出現(xiàn)高電平,CPLD把STDATA的8位數(shù)據(jù)送往FD總線,在IFCLK同步時(shí) 鐘的控制下,向端點(diǎn)2的輸入緩沖區(qū)FIFO寫入數(shù)據(jù),CPLD同時(shí)對(duì)時(shí)鐘進(jìn)行計(jì)數(shù),當(dāng)達(dá)到188時(shí) ,送出PKTEN,表示1幀的數(shù)據(jù)傳輸完畢,USB核心收到這個(gè)幀結(jié)束的標(biāo)志后讀端點(diǎn)2的 輸入FIFO,響應(yīng)IN請(qǐng)求把數(shù)據(jù)送出;CPLD除了設(shè)定N=188的計(jì)數(shù)器外,還設(shè)定了一個(gè)N =4的計(jì)數(shù)器,每當(dāng)一個(gè)幀滿后,以00,01,10,11的狀態(tài)翻轉(zhuǎn),并把這狀態(tài)當(dāng)作FIFOADR [1:0]的輸入,使得CPLD能持續(xù)接受數(shù)據(jù)并輪流向68013的4個(gè)輸入緩沖區(qū)寫入。FLAG 設(shè)置為Indexed Mode,并且FLAGB表示當(dāng)前FIFO滿狀態(tài),而FLAGC表示當(dāng)前FIFO空狀態(tài),CPLD 只有檢測(cè)到FLAGC的有效狀態(tài)時(shí),才會(huì)往MB86391發(fā)請(qǐng)求STREQ,告訴MB86391已準(zhǔn)備好接收。 E2USB FX2 Slave FIFO工作模式下數(shù)據(jù)接口如圖2所示。
3軟件結(jié)構(gòu)
開發(fā)USB接口的應(yīng)用系統(tǒng)最重要的就是USB驅(qū)動(dòng)程序和固件程序的編制。本文采 用賽普拉斯公司提供的CY7C68013芯片及其開發(fā)板,我們可以從復(fù)雜的USB驅(qū)動(dòng)程序中解 脫出來,而把主要精力放在芯片的固件程序的編寫上。軟件結(jié)構(gòu)如圖3所示。
3.1應(yīng)用程序
應(yīng)用程序把USB設(shè)備看成一個(gè)文件,對(duì)設(shè)備的操作相當(dāng)于讀寫文件一樣的簡(jiǎn)單,應(yīng) 用程序與驅(qū)動(dòng)程序的通信主要是通過以下幾個(gè)函數(shù)來實(shí)現(xiàn)的:
(1) 打開設(shè)備句柄函數(shù)
(3)寫設(shè)備函數(shù)
在實(shí)際編寫應(yīng)用程序時(shí)只需將上述3個(gè)函數(shù)加入到相應(yīng)的功能模塊中便可完成Win 32應(yīng)用 程序?qū)SB設(shè)備進(jìn)行打開、讀、寫操作,實(shí)現(xiàn)二者之間的通信。
3.2固件程序
固件程序的編譯采用Keil C,他具有C的編程風(fēng)格,可以方便的設(shè)置斷點(diǎn),查看各個(gè) 寄存器的值,編程效率高。Cypress公司提供固件框架,需要根據(jù)具體應(yīng)用,選擇相應(yīng)的 函數(shù)逐一填寫函數(shù)體。固件程序框架如圖4所示,圖4(a)所示是主程序, 完成USB的枚舉和初 始化,循環(huán)等待時(shí),當(dāng)SIE發(fā)現(xiàn)Setup Packet,就分析執(zhí)行設(shè)備請(qǐng)求,進(jìn)入到圖4( b)中的USB中斷處理程序。
USB中斷處理程序完成對(duì)設(shè)備請(qǐng)求的響應(yīng),包括接收/發(fā)送事件處理,狀態(tài)轉(zhuǎn)換處理和握 手事件處理。其中當(dāng)主機(jī)發(fā)出IN請(qǐng)求時(shí),就會(huì)觸發(fā)接收事件處理程序,主程序調(diào)用TD_Pol l函數(shù),完成一次的數(shù)據(jù)傳送。
4結(jié)語
USB 2.0在理論上滿負(fù)荷傳輸速率是480 Mb/s,在Bulk批量傳輸方式下,傳輸極限是53.248 Mb/s,即在1 ms時(shí)間片斷內(nèi)再細(xì)分為8個(gè)微幀,每個(gè)微幀可以插入13個(gè)512 B的數(shù)據(jù) 包,實(shí)踐證明,這種方式能提供穩(wěn)健的無錯(cuò)傳輸,適合傳輸高質(zhì)量的圖像。
MB86391輸出的平均碼流最大為20 Mb/s,所以在實(shí)際傳輸測(cè)試中,不會(huì)出現(xiàn)速度瓶頸,完全 滿足大容量高質(zhì)量圖像傳輸系統(tǒng)的要求。





