摘要:詳細(xì)介紹了USB2.0接口的新特點(diǎn),選擇CY7C68013作為USB2.0控制芯片實(shí)現(xiàn)了USB2.0接口M-JPEG解碼回放板的設(shè)計(jì)。
關(guān)鍵詞:USB2.0;M-JPEG解碼;PID協(xié)議;PING協(xié)議;視頻編碼
引言
USB(Universal Serial Bus)通用串行總線能在電腦外設(shè)接口中得到廣泛應(yīng)用得益于它的實(shí)用性和便捷性。該接口技術(shù)從1996年由幾家大公司制定USB1.0標(biāo)準(zhǔn)以來,得到越來越多的廠商支持,繼而出現(xiàn)了USB1.1標(biāo)準(zhǔn),USB2.0標(biāo)準(zhǔn)。USB2.0標(biāo)準(zhǔn)支持的高速傳輸模式使傳輸速率達(dá)到了480Mbps,使更多的高速外設(shè)和網(wǎng)絡(luò)(如高清晰數(shù)字會(huì)議視頻設(shè)備、高速刻錄機(jī)、寬帶XDSL和數(shù)字廣播等)都可以通過USB接口與控制主機(jī)相連接。
本文介紹了USB2.0標(biāo)準(zhǔn)相對(duì)于USB1.1增加部分的特性,突出USB2.0標(biāo)準(zhǔn)的新特點(diǎn),最后結(jié)合實(shí)際,開發(fā)了一個(gè)USB2.0技術(shù)應(yīng)用實(shí)例。
1 USB2.0電氣規(guī)格的擴(kuò)展
1.1 增加了高速傳輸模式所需的收發(fā)器線路
包括以下四部分:高速電流驅(qū)動(dòng)器,高速差動(dòng)數(shù)據(jù)接收器,傳輸振幅檢測(cè)器,分離振幅檢測(cè)器。
高速電流驅(qū)動(dòng)器是在D+、D-數(shù)據(jù)線上使用一定的電流值進(jìn)行驅(qū)動(dòng),生成“J狀態(tài)”、“K狀態(tài)”,讓接口規(guī)范化。
增加高速差動(dòng)數(shù)據(jù)接收器是為了檢測(cè)出快速模式下的J/K信號(hào)。
傳輸振幅檢測(cè)器的作用是檢測(cè)數(shù)據(jù)線所處的狀態(tài):閑置或數(shù)據(jù)傳送進(jìn)行中。閑置狀態(tài)時(shí),D+、D-數(shù)據(jù)線的電壓均為O伏;數(shù)據(jù)傳送進(jìn)行中,即處于J/K狀態(tài)。
分離振幅檢測(cè)器用于檢測(cè)下游端裝置是否被抽離而斷開。
1.2 Reset時(shí)的信號(hào)交換流程
這是認(rèn)識(shí)USB2.0相當(dāng)重要的一環(huán),因?yàn)檫@是USB2.0擴(kuò)展的高速傳輸模式的工作流程。
一個(gè)裝置連接到HUB時(shí),必須確認(rèn)下游端所連接裝置是低速、全速還是高速傳輸模式。其工作流程如下:Reset發(fā)出閑置狀態(tài)信號(hào),數(shù)據(jù)線信號(hào)處于SE0狀態(tài);SE0狀態(tài)持續(xù)3ms以上后,連接上高速裝置的拉高電阻,先以全速裝置工作,USB接口此時(shí)仍然處于閑置狀態(tài);這之后高速裝置會(huì)進(jìn)行一個(gè)“Device Chirp”過程,告訴HUB本裝置有能力進(jìn)行高速傳送;HUB接收到這個(gè)通知并加以確認(rèn),表示本身也可以支持快速的傳輸,完成握手處理過程,就可以以快速傳送方式進(jìn)行通信了。如果握手過程不成功,就以低速或全速的傳送方式通信。這也是USB2.0為了與USB1.1規(guī)范兼容而進(jìn)行的一個(gè)信號(hào)交換過程。
1.3 增加的測(cè)試模式
高速收發(fā)器的電氣特性比過去復(fù)雜得多,借助于“Set_Feature”命令,可以進(jìn)行以下五個(gè)種類的測(cè)試:
(1)SEO NAK測(cè)試:當(dāng)接到“IN令牌”打包時(shí),必須回返NAK信號(hào)。其他情況下,由終端阻抗來驅(qū)動(dòng)SEO的狀態(tài)。
(2)HS J測(cè)試:高速電流驅(qū)動(dòng)器僅有一個(gè)驅(qū)動(dòng)“D+”數(shù)據(jù)線時(shí),依據(jù)“D+”數(shù)據(jù)線的輸出電壓可以檢測(cè)出高電位的狀態(tài)。
(3)HS K測(cè)試:同上,高速電流驅(qū)動(dòng)器僅有一個(gè)驅(qū)動(dòng)“D-”數(shù)據(jù)線時(shí),依據(jù)“D-”數(shù)據(jù)線的輸出電壓可以檢測(cè)出高電位的狀態(tài)。
(4)打包傳送測(cè)試:測(cè)試特定打包持續(xù)傳送過程中的特性參數(shù),如信號(hào)上升時(shí)間、信號(hào)下降時(shí)間以及信號(hào)抖動(dòng)的測(cè)量等。
(5)強(qiáng)迫使能測(cè)試:這個(gè)測(cè)試是針對(duì)高速的HUB裝置的,用來強(qiáng)迫使能HUB裝置的下游端。
2 USB2.0傳輸協(xié)議的增加
2.1 打包大小的變更
①控制傳輸模式下低速,全速,高速打包的大小
低速:0~8個(gè)字節(jié),全速:0~64個(gè)字節(jié),高速:0~64個(gè)字節(jié)
②批傳輸模式下打包的大小
全速:0~64個(gè)字節(jié),高速:0~512個(gè)字節(jié)
③中斷傳輸模式下打包的大小
低速:0~8個(gè)字節(jié),全速:0~64個(gè)字節(jié),高速:0~1024個(gè)字節(jié)
④等時(shí)傳輸模式下打包的大小
全速:0~1023個(gè)字節(jié),高速:0~1024個(gè)字節(jié)
由此可知,高速傳輸打包的字節(jié)增大了,同時(shí)USB2.0也從原來的1ms周期的數(shù)據(jù)幀變成周期為125s的微幀結(jié)構(gòu)。對(duì)于中斷傳輸與等時(shí)傳輸模式,每一個(gè)微幀之內(nèi)實(shí)行3次的數(shù)據(jù)交易。這些方法使傳輸?shù)乃俣却蟠蠹涌炝恕?/p>
2.2 新規(guī)制的PID(包標(biāo)識(shí))
通過PID,可以識(shí)別打包的類別。PID的形式有以下四種:
第一種:Token打包,如:SOF、IN、OUT等。
第二種:數(shù)據(jù)打包,如DATA0、DATAl等。高速USB2.0另外增加了兩個(gè):DATA2以及MDATA,用于等時(shí)傳輸。
第三種:握手打包,如:ACK、NAK、STALL等。NYET是新增加的打包,表示還沒有備妥,是為了應(yīng)用于高速模式下的“Ping協(xié)議”,防止傳送了一些數(shù)據(jù)之后,對(duì)方返回NAK的否定確認(rèn)信號(hào),要求重傳情況的發(fā)生。
第四種:特殊用途的打包。除了原來的PRE打包,USB2.0增加了:ERR、SPLIT、PING等打包,PING用于“Ping協(xié)議”中,ERR與SPLIT用于怏速的分割式數(shù)據(jù)交易的場(chǎng)合。
2.3 PING協(xié)議
如前面提到的,為了防止傳送了大量數(shù)據(jù)之后,對(duì)方卻返回NAK的否定確認(rèn)信號(hào),要求重傳的情況,USB2.0引入了“Ping協(xié)議”。批傳輸與控制傳輸適用于“Ping協(xié)議”:在傳送數(shù)據(jù)之前,先從主機(jī)端送出“PING打包”,如得到的是NAK則表示裝置端沒有接受空間,再度發(fā)送“PING打包”,重復(fù)確認(rèn),直到收到ACK后,發(fā)送數(shù)據(jù)給裝置端,完成傳輸數(shù)據(jù)。

3 一個(gè)基于USB2.0接口的應(yīng)用設(shè)計(jì)
實(shí)現(xiàn)USB2.0接口的控制芯片控制器一般分為兩類:一種是MCU集成在芯片里面,如CYPRESS的EZ-USB系列,Inter的8X930AX,S1EMENS的C541U等公司的產(chǎn)品。一種是純粹的USB接口芯片,僅處理USB通信,如PHILIPS的PDIUSBDll系列,National Semiconductor的USBN9602系列等產(chǎn)品。前一種開發(fā)由于需要單獨(dú)的開發(fā)系統(tǒng),開發(fā)成本較高,但實(shí)現(xiàn)起來較為容易,開發(fā)周期短;后一種只是一個(gè)芯片與MCU接口實(shí)現(xiàn)USB通信功能,因此成本較低。
我們的設(shè)計(jì)是通過M-JPEG流的解碼,輸出相應(yīng)制式的模擬彩色電視信號(hào)(見圖1)。USB控制芯片CY7C68013一方面完成USB2.0協(xié)議的處理以及建立數(shù)據(jù)傳輸通道,480Mb/s高速模式數(shù)據(jù)傳輸速率,保證了M-JPEG碼流的高速實(shí)時(shí)傳輸。另一方面充分利用68013片內(nèi)集成的增強(qiáng)型8051單片機(jī)和GPW接口,實(shí)現(xiàn)對(duì)專用芯片的設(shè)置和控制應(yīng)答。ZR36060將輸入的M-JPEG數(shù)據(jù)流解壓縮,向SAA7185直接輸出符合ITU-R 656標(biāo)準(zhǔn)的YUV數(shù)據(jù)和D/A變換所需的行場(chǎng)同步信號(hào);SAA7185對(duì)輸入的YUV信號(hào)進(jìn)行編碼,輸出CVBS或S-VIDEO電視信號(hào)。
3.1 USB控制芯片CY7C68013的設(shè)計(jì)應(yīng)用
CYPRESS公司提供了EZ-USB FX2芯片的固件程序框架,大大簡(jiǎn)化和加速了USB固件的開發(fā)流程,片內(nèi)集成的智能串行接口引擎(SIE)執(zhí)行基本的USB通信功能。本設(shè)計(jì)中把嵌入CY7C68013內(nèi)的8051單片機(jī)解放出來用于產(chǎn)生ZR36060的復(fù)位和地址選擇信號(hào),同時(shí)利用并行I/O口實(shí)現(xiàn)指示燈的控制。
本設(shè)計(jì)中選用GPIF接口控制EZ-USB FX2中的“量子FIFO”到解壓縮芯片ZR36060的數(shù)據(jù)傳輸。GPIF是一個(gè)靈活的8或16位并行接口,支持用戶使用波形描述符進(jìn)行編程設(shè)置。將傳輸端點(diǎn)2設(shè)置成1024字節(jié)大小的四重FIFO。這種多緩有結(jié)構(gòu)設(shè)計(jì)在讀寫雙方速度相似時(shí)能顯著地改善帶寬,平滑帶寬抖動(dòng),減少雙方的互相等待時(shí)間。同時(shí)利用GPIF接口對(duì)解碼芯片的控制應(yīng)答,GPW接口使用外部時(shí)鐘,將ZR36060的VSYNC信號(hào)接至GPW接口的IFCLK引腳,實(shí)現(xiàn)GPIF接口和ZR36060的同步。沒有使用GPW接口的地址輸出線,從而節(jié)省了9條I/O線,為進(jìn)一步擴(kuò)展系統(tǒng)的功能留下了余地。
3.2 解壓縮芯片ZR36060
JPEG編解碼芯片ZR36060實(shí)現(xiàn)對(duì)視頻信號(hào)的實(shí)時(shí)壓縮解壓縮。在解壓縮時(shí)它接收J(rèn)PEG-BASELINE碼流,將其解碼為YUV4:2:2數(shù)字視頻信號(hào)。ZR36060的接口可分為視頻接口、主機(jī)接口和代碼接口三部分。視頻接口配置成主模式。視頻總線設(shè)置為8位寬度,亮度和色差信號(hào)都通過Y7:0傳輸,視頻信號(hào)由視頻接口輸入/輸出。主機(jī)接口配置在16位代碼從模式下,通過主機(jī)接口完成對(duì)ZR36060內(nèi)部寄存器的讀寫。對(duì)芯片的控制字通過主機(jī)接口讀,寫,代碼數(shù)據(jù)的低8位由主機(jī)接口的8位雙向數(shù)據(jù)總線DATA7:0傳輸,數(shù)據(jù)的高8位是通過CODE7:0傳輸?shù)摹?zhí)行解壓縮之前,主機(jī)必須先把適當(dāng)?shù)膮?shù)和數(shù)據(jù)表載入ZR36060。參數(shù)設(shè)置將影響到芯片的工作方式、視頻接口、以及代碼接口的操作。所有的參數(shù)和數(shù)據(jù)表都必須在空閑態(tài)下被載入。用ZRSpaceSelect0函數(shù)配置51單片機(jī)的I/O口實(shí)現(xiàn)地址的選擇,設(shè)計(jì)了寄存器多地址連續(xù)讀寫函數(shù),實(shí)現(xiàn)了芯片參數(shù)和量化表及霍夫曼表的配置。
3.3 SAA7185視頻編碼芯片應(yīng)用
芯片SAA7185支持PAL/NTSC/SECAM制式,其主要功能模塊包括一個(gè)同步時(shí)鐘產(chǎn)生器和片內(nèi)D/A轉(zhuǎn)換器。系統(tǒng)中。工作在同步從模式下的SAA7185芯片接收ZR36060解碼器輸出的每行720有效像素的4:2:2YUV數(shù)據(jù),ZR36060產(chǎn)生的視頻同步信號(hào)驅(qū)動(dòng)SAA7185RCV口的場(chǎng)同步Y(jié)S、行同步HS管腳,作為輸入數(shù)據(jù)的相位參考,編碼輸出CVBS或S-VIDEO電視信號(hào)。在設(shè)計(jì)中我們調(diào)用Ezusb.1ib庫中的標(biāo)準(zhǔn)12C總線讀寫函數(shù)訪問SAA7185內(nèi)部寄存器,實(shí)現(xiàn)芯片的功能選擇,參數(shù)配置和輸出控制。
3.4 驅(qū)動(dòng)程序設(shè)計(jì)
USB系統(tǒng)驅(qū)動(dòng)程序采用分層結(jié)構(gòu)模型,分別為較高級(jí)的USB設(shè)備驅(qū)動(dòng)程序和較低級(jí)的USB函數(shù)層。其中USB函數(shù)層由兩部分組成:較高級(jí)的通用串行總線驅(qū)動(dòng)程序模塊(USBD)和較低級(jí)的主控制器驅(qū)動(dòng)程序模塊(HCD)。
本系統(tǒng)中的固件代碼存儲(chǔ)在EEPROM中,當(dāng)設(shè)備上電時(shí),EEPROM中的代碼被自動(dòng)下載到FX2芯片的RAM中,由8051執(zhí)行。實(shí)現(xiàn)這個(gè)過程需要兩個(gè)驅(qū)動(dòng)程序,即通用驅(qū)程ezusb.sys和下載固件的驅(qū)程loader.sys。在Windows的設(shè)備驅(qū)動(dòng)工具包(DDK)的支持下,對(duì)FX2軟件開發(fā)包提供的EZ-Loader驅(qū)動(dòng)程序作相應(yīng)的修改,就可以實(shí)現(xiàn)下載固件驅(qū)程load.sys的定制。
3.5 主機(jī)端應(yīng)用程序設(shè)計(jì)
USB主機(jī)端應(yīng)用程序是計(jì)算機(jī)中完成特定功能的程序。該系統(tǒng)中,主機(jī)端應(yīng)用程序主要完成向M-JPEG解碼系統(tǒng)發(fā)送M-JPEG格式的碼流,處理系統(tǒng)請(qǐng)求和特定的命令等功能。在Windows 2000下,我們所使用的應(yīng)用程序開發(fā)工具是VC++6.0。
4 結(jié)束語
該系統(tǒng)還可進(jìn)行擴(kuò)展,利用多塊解碼板我們可以很容易地實(shí)現(xiàn)多路M-JPEG碼流信號(hào)的同時(shí)回放。本系統(tǒng)在數(shù)字視頻監(jiān)控領(lǐng)域有著良好的應(yīng)用前景和很大的實(shí)用價(jià)值。