基于USB接口的同步視頻輸出系統(tǒng)設(shè)計(jì)
摘要:介紹了一種實(shí)用的基于USB 2.0協(xié)議的同步視頻輸出系統(tǒng)的設(shè)計(jì)。系統(tǒng)采用CYPRESS公司的FX2 USB控制器,采用GPIF模式,硬件設(shè)計(jì)簡(jiǎn)化,能依據(jù)PAL制電視標(biāo)準(zhǔn)與主機(jī)同步輸出視頻圖像。
關(guān)鍵詞:USB2.0協(xié)議 視頻圖像 PAL制 GPIF
在信息技術(shù)日新月異的今天,人們對(duì)視頻圖像傳輸?shù)男枨笤絹?lái)越迫切,要求越來(lái)越高,而整個(gè)圖像傳輸系統(tǒng)的瓶頸在于視頻圖像的信息量很大,而且傳輸?shù)倪^(guò)程中容易出現(xiàn)延時(shí)、抖動(dòng)、失真等現(xiàn)象,因此在選擇視頻圖像傳輸?shù)目偩€要求速度高,錯(cuò)誤率低的特點(diǎn)。目前視頻圖像實(shí)時(shí)傳輸采用的總線主要有PCI、1394以及USB。三者比較而言,USB 2.0高速傳輸協(xié)議,兼有快速、通用、可靠、省電、熱插拔等優(yōu)點(diǎn),比傳統(tǒng)基于PCI總線、1394總線的視頻輸出系統(tǒng),具有更強(qiáng)大的通用性和靈活性。特別是在需要利用筆記本電腦等便攜設(shè)備進(jìn)行視頻輸出的場(chǎng)合
本文介紹的同步視頻輸出系統(tǒng),由作為外設(shè)的視頻輸出接口卡和主機(jī)上的應(yīng)用軟件兩個(gè)部分組成,采用通用串行總線(USB)實(shí)現(xiàn)視頻圖像數(shù)據(jù)的傳輸,并依據(jù)PAL制電視標(biāo)準(zhǔn)與主機(jī)同步視頻顯示,畫(huà)面流暢清晰。
1.視頻輸出接口卡硬件結(jié)構(gòu)和工作原理
1.1 視頻輸出接口卡的硬件結(jié)構(gòu)
視頻輸出接口卡的結(jié)構(gòu)框圖如圖1所示,主要由內(nèi)置MCU的USB接口芯片、圖像存儲(chǔ)SRAM、以及D/A圖像輸出三個(gè)部分。各部分的主要功能為:USB接口芯片和主機(jī)通信,將主機(jī)的視頻圖像數(shù)據(jù)按照一定時(shí)序通過(guò)USB電纜寫(xiě)入SRAM保存;SRAM芯片負(fù)責(zé)數(shù)字視頻信號(hào)的存儲(chǔ);D/A圖像輸出部分將數(shù)字視頻信號(hào)轉(zhuǎn)換成模擬視頻信號(hào),按照PAL制式進(jìn)行輸出顯示。
1.2 視頻圖像傳輸和存儲(chǔ)顯示
本系統(tǒng)視頻圖像數(shù)據(jù)是通過(guò)USB電纜傳輸,USB電纜包含4根電線:Vbus,D+,D-和GND。數(shù)據(jù)以480M高速信號(hào)在D+和D-信號(hào)線上差分傳輸,而收發(fā)器在USB接口控制芯片上,不需要外部電路。
USB接口部分是本系統(tǒng)最為重要的通信部分。USB接口控制芯片采用的是CYPRESS公司的EZ USB FX2系列CY7C68013芯片。它內(nèi)部集成帶8KB片內(nèi)RAM的增強(qiáng)型51系列MCU、16位并行地址總線、8/16數(shù)據(jù)總線、IIC總線、4KB FIFO 存儲(chǔ)器以及通用可編程接口GPIF,串行接口引擎SIE和USB收發(fā)器,是USB 2.0的完整的解決方案。
串行接口引擎智能SIE通過(guò)包排序、信號(hào)產(chǎn)生/檢測(cè)、CRC產(chǎn)生/校驗(yàn)、NRZI數(shù)據(jù)編碼、位填充和包標(biāo)識(shí)產(chǎn)生/解碼來(lái)處理USB通信協(xié)議,并保證傳輸?shù)経SB電纜上的數(shù)據(jù)字節(jié)以LSB開(kāi)頭。它使MCU從繁瑣的USB協(xié)議中脫身,集中注意力放在控制數(shù)據(jù)的輸入和輸出。
FX2內(nèi)部集成的高速M(fèi)CU為增強(qiáng)型8051,功能較傳統(tǒng)的8051系列單片機(jī)強(qiáng)大,但在代碼的編寫(xiě)上兼容,使用方便,且速度是標(biāo)準(zhǔn)8051的3~5倍,工作頻率可以軟件設(shè)置,最高可為48Mhz,還帶有兩個(gè)串口,三個(gè)計(jì)數(shù)/定時(shí)器,八級(jí)中斷,雙數(shù)據(jù)指針?lè)奖銛?shù)據(jù)塊搬移。
外設(shè)接口有兩種接口方式:可編程接口GPIF和Slave FIFO。可編程邏輯接口GPIF是主控方式,可以由軟件設(shè)計(jì)讀寫(xiě)控制波形,不通過(guò)MCU,就可以實(shí)現(xiàn)主動(dòng)對(duì)任何8/16位接口的控制器、存儲(chǔ)器和總線進(jìn)行數(shù)據(jù)的讀寫(xiě)。而且讀寫(xiě)的最高速度可以達(dá)到96MB/s,高于USB2.0的傳輸速度。Slave FIFO是從控方式,外部控制器(如DSP 和單片機(jī)等)可以像對(duì)普通的FIFO一樣對(duì)FX2的多重緩沖讀寫(xiě),工作方式也可選擇同步或異步,工作時(shí)鐘可以選擇輸入和輸出。
另外,它是基于RAM的“軟”系統(tǒng)解決方案,不需要ROM或者其他的固化存儲(chǔ)器,可以使用片內(nèi)的程序/數(shù)據(jù)RAM。固件可以直接通過(guò)USB電纜下載,方便固件的修改和升級(jí)。
靜態(tài)存儲(chǔ)器SRAM采用IDT公司雙口異步靜態(tài)RAM芯片IDT70v09,8位數(shù)據(jù)線,17根地址線,64M容量。
視頻信號(hào)輸出轉(zhuǎn)換的芯片是DAC0800, 將數(shù)字圖像信號(hào)轉(zhuǎn)換為模擬信號(hào),依據(jù)PAL制輸出。PAL制視頻輸出標(biāo)準(zhǔn)為25幀/秒,一幀分奇偶兩場(chǎng),20ms一場(chǎng),其中場(chǎng)正程為17ms,逆程為3ms。系統(tǒng)中正是利用場(chǎng)同步信號(hào)作為同步標(biāo)準(zhǔn),使USB設(shè)備的圖像傳輸和顯示一致。
1.3 工作原理
當(dāng)USB設(shè)備第一次插入到USB接口時(shí),F(xiàn)X2通過(guò)USB電纜自動(dòng)枚舉,并下載固件程序和USB描述符表;接下來(lái),F(xiàn)X2二次枚舉,根據(jù)下載的信息定義重新定義USB設(shè)備。這兩個(gè)步驟稱(chēng)為再枚舉,設(shè)備插入時(shí)就立即執(zhí)行而沒(méi)有提示。二次枚舉以后主機(jī)可以通過(guò)控制管道和USB設(shè)備通訊,完成USB設(shè)備的端點(diǎn)配置等初始化工作,完畢,開(kāi)始查詢USB設(shè)備是否準(zhǔn)備好。USB設(shè)備端MCU檢測(cè)外部中斷INT0(場(chǎng)信號(hào)跳變沿),若外部中斷INT0發(fā)生,則轉(zhuǎn)入外部中斷服務(wù)子程序,應(yīng)答主機(jī),說(shuō)明USB設(shè)備已經(jīng)準(zhǔn)備好接受數(shù)據(jù),主機(jī)查詢到此應(yīng)答后,應(yīng)用程序發(fā)一場(chǎng)圖像數(shù)據(jù)到FX2,單片機(jī)檢測(cè)到數(shù)據(jù)到達(dá)后,啟動(dòng)GPIF,然后GPIF獨(dú)立于MCU將圖像數(shù)據(jù)導(dǎo)入SRAM,一場(chǎng)圖像傳輸完畢,結(jié)束GPIF,退出中斷服務(wù)子程序,直到下一輪中斷開(kāi)始。D/A部分電路在場(chǎng)正程部分讀取SRAM圖像數(shù)據(jù),并轉(zhuǎn)換為模擬信號(hào)輸出顯示,而在場(chǎng)逆程中禁止讀取SRAM。
2.固件(FIRMWARE)設(shè)計(jì)
固件是指固化在USB控制器中MCU的程序,它的主要功能是負(fù)責(zé)接收與處理主機(jī)發(fā)給設(shè)備的各種請(qǐng)求,并向主機(jī)返回設(shè)備的狀態(tài)信息。FX2 系列的固件代碼可以存儲(chǔ)到主機(jī)中,設(shè)備上電復(fù)位以后通過(guò)USB電纜手動(dòng)下載到FX2,這種方法易于升級(jí),在系統(tǒng)的開(kāi)發(fā)過(guò)程中很方便;固件代碼可以固化到片外存儲(chǔ)器EEPROM或者是ROM,設(shè)備上電以后,自動(dòng)下載固件到片內(nèi)RAM,這兩種方法可以將系統(tǒng)固件做成產(chǎn)品,無(wú)須每次手動(dòng)下載。
本系統(tǒng)中固件分兩個(gè)部分,一個(gè)是數(shù)據(jù)通道的控制,一個(gè)是主機(jī)控制命令的應(yīng)答。數(shù)據(jù)通道的控制主要是GPIF控制數(shù)據(jù)傳輸管道完成。而控制管道EP0則負(fù)責(zé)主機(jī)和USB設(shè)備端的去掉數(shù)據(jù)部分的通信:更改管道和端點(diǎn)配置信息,設(shè)置軟件中斷,更改GPIF視頻圖像傳輸?shù)拇笮?,獲取重要寄存器的狀態(tài)等等。
固件的程序框圖如上所示。其中設(shè)備請(qǐng)求部分即為控制管道信息,是由單片機(jī)負(fù)責(zé),而數(shù)據(jù)通道主要是通過(guò)GPIF操作,隔離了單片機(jī)的參與,提高數(shù)據(jù)傳輸速度。
固件代碼編寫(xiě)使用Keil uVision,GPIF編程應(yīng)用CYPRESS公司的GPIF工具(GPIFTOOL)。GPIF可以控制FX2端點(diǎn)FIFO,也可以產(chǎn)生六個(gè)控制輸出端(CTL0~CTL5)和九根地址線輸出,并且可以接收六個(gè)外部輸入信號(hào),并對(duì)這些信號(hào)進(jìn)行邏輯編程控制,從而控制FX2與外部接口的讀寫(xiě)時(shí)序。實(shí)際操作可以利用GPIFTOOL繪制波形描述符,轉(zhuǎn)為C文件,配置各個(gè)相關(guān)的寄存器,控制SRAM接口讀寫(xiě)邏輯。
SRAM硬件接口的時(shí)序圖如下:
依據(jù)上面的波形圖,我們只需要在S1結(jié)束的時(shí)候跳轉(zhuǎn)S0 狀態(tài)即可。將繪制的波形圖應(yīng)用GPIF TOOL轉(zhuǎn)換為gpif.c文件,加入Project中,連接編譯即可得到固件。
在固件編程中電源管理部分,由于FX2在首次枚舉電流大約是75mA,F(xiàn)X2設(shè)備的識(shí)別則至少需要100mA,小于500mA,因此在固件中要加進(jìn)電源檢測(cè),如果小于100mA,必須向主機(jī)申請(qǐng)更大的電流,直到主機(jī)正確識(shí)別FX2。
3.用戶應(yīng)用程序和USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)
USB設(shè)備驅(qū)動(dòng)程序是連接USB外設(shè)、操作系統(tǒng)以及用戶應(yīng)用程序的橋梁,是USB設(shè)備連接到計(jì)算機(jī)系統(tǒng)的軟件接口。
FX2 系列CYPRESS公司提供了一個(gè)通用的USB驅(qū)動(dòng)程序ezusb.sys,可以實(shí)現(xiàn)USB外設(shè)和應(yīng)用程序之間的一般的通信和控制功能,開(kāi)發(fā)者如果需要實(shí)現(xiàn)系統(tǒng)特有的通信和控制功能,必須在此基礎(chǔ)上加以修改,比如,通用USB驅(qū)動(dòng)程序每一次塊傳輸數(shù)據(jù)大小必須小于64KB,而一般一幅圖像數(shù)據(jù)的大小大于或者等于64KB,如果要求每次傳輸一幅圖像到USB外設(shè),則必須在通用USB驅(qū)動(dòng)程序上加以改動(dòng)。
此外還需要在驅(qū)動(dòng)程序中添加下載固件部分,在USB外設(shè)上電以后,可以自動(dòng)下載固件到FX2的RAM中,F(xiàn)X2二次枚舉,主機(jī)正確識(shí)別USB外設(shè)。
用戶的應(yīng)用程序是操作系統(tǒng)和用戶的接口,它以不同的參數(shù)調(diào)用驅(qū)動(dòng)程序的函
數(shù),控制USB外設(shè),實(shí)現(xiàn)用戶定義系統(tǒng)的各種功能:讀寫(xiě)視頻圖像,利用控制管道的用戶定義命令對(duì)FX2進(jìn)行監(jiān)控以及重新下載固件等等。
應(yīng)用程序的程序框圖如下:
4.結(jié)束語(yǔ)
針對(duì)視頻圖像同步輸出實(shí)際需要,本系統(tǒng)采用USB 2.0的高速協(xié)議,CYPRESS公司的FX2 USB 控制器,使USB設(shè)備接口硬件簡(jiǎn)化,引入視頻顯示部分的場(chǎng)同步信號(hào)觸發(fā)數(shù)據(jù)流,視頻圖像的顯示結(jié)果標(biāo)準(zhǔn)平滑。本系統(tǒng)視頻圖像的傳輸速度嚴(yán)格依據(jù)PAL制為50場(chǎng)/秒,GPIF的接口速度為24MB/s。此外本系統(tǒng)可擴(kuò)展性強(qiáng),方便實(shí)用,稍加改動(dòng),可以將任何數(shù)據(jù)從主機(jī)高速導(dǎo)入外設(shè),目前可以達(dá)到最大速度為23MB/s;如果加入視頻采集部分電路,就可成為一個(gè)實(shí)時(shí)采集視頻系統(tǒng)。
參考文獻(xiàn)
1.Cypress Semiconductor Corporation. EZ-USB FX2 Technical Reference Manual,2002;12
2.Compaq ,HP ,Philips etc. Universal Serial Bus Specification Revision 2.0 ,2000
評(píng)論