??? 摘? 要: 討論了基于USB(Universal Serial Bus)接口的數(shù)字?jǐn)z像系統(tǒng)的實(shí)現(xiàn)。該系統(tǒng)使用CYPRESS公司的EZ_USB系列芯片,并利用其開發(fā)板來實(shí)現(xiàn)數(shù)字?jǐn)z像系統(tǒng)。該系統(tǒng)完全符合USB1.1協(xié)議,是一個(gè)新型的多媒體設(shè)備。?
??? 關(guān)鍵詞: USB 攝像系統(tǒng) I2C總線 固件
?
??? USB作為一種新的擴(kuò)展接口,主要致力于計(jì)算機(jī)-電話一體化和應(yīng)用類消費(fèi)產(chǎn)品。它的數(shù)據(jù)傳輸率比標(biāo)準(zhǔn)串/并口高。USB總線具有時(shí)分復(fù)用的特點(diǎn),多個(gè)不同速度的USB外設(shè)可以通過集線器同時(shí)連接到同一臺(tái)計(jì)算機(jī)的同一個(gè)USB口上,在USB總線帶寬允許的情況下,多個(gè)外設(shè)可以同時(shí)工作而不相互影響。USB傳輸速率適用于中、低速外設(shè)。高速模式下,USB支持實(shí)時(shí)的視頻、音頻和壓縮的視頻數(shù)據(jù)傳輸。?
??? 在視頻會(huì)議和可視電話等多媒體應(yīng)用中,具有數(shù)字接口的攝像系統(tǒng)(CAMERA)是其關(guān)鍵的部件。它完成視頻圖像的采集、處理,并通過數(shù)字接口把信號(hào)送進(jìn)計(jì)算機(jī)顯示,作進(jìn)一步處理。?
1 USB數(shù)字?jǐn)z像系統(tǒng)原理?
1.1 USB簡(jiǎn)介?
??? 通用串行總線(Universal Serial Bus)適用于USB外圍設(shè)備連接到主機(jī)上,通過PCI總線與PC內(nèi)部的系統(tǒng)總線連接,實(shí)現(xiàn)數(shù)據(jù)的傳送。同時(shí)USB又是一種通信協(xié)議,支持主系統(tǒng)與其外設(shè)之間的數(shù)據(jù)傳送。在USB的網(wǎng)絡(luò)協(xié)議中,每個(gè)USB的系統(tǒng)只能有一個(gè)主機(jī)。?
??? USB是一種層狀的星形拓?fù)?其根部是主機(jī)控制器,USB器件與根部接口連接實(shí)現(xiàn)其功能。若多個(gè)器件同時(shí)行使其功能,就要通過集線器來擴(kuò)展,但擴(kuò)展層不能超過5層。USB器件支持熱拔插,而且可以即插即用。USB一般支持兩種傳輸速度,即低速1.5Mbit/s和全速12Mbit/s,在USB2.0版本中其速度提高到480Mbit/s。?
??? USB有幾種用于不同類型的數(shù)據(jù)傳輸方式??刂苽鬏?主要用于設(shè)置、命令和狀態(tài)信息;中斷傳輸,與一般的中斷概念不同,主要用于打印機(jī)、掃描儀等大量數(shù)據(jù)傳輸;同步傳輸,用于視頻、聲音等實(shí)時(shí)傳輸。?
??? 考慮到USB傳輸速率較高,如果利用只實(shí)現(xiàn)ENGINE功能的芯片,外加一個(gè)普通微控制器(如8051),其處理速度就會(huì)很慢而達(dá)不到USB傳輸要求。USB外設(shè)作為消費(fèi)類產(chǎn)品的目的之一在于降低產(chǎn)品成本,如果采用高速微處理器(如DSP),滿足了USB的傳輸速率,但成本較高。經(jīng)多方面比較選擇了CYPRESS公司的內(nèi)置微控制器芯片EZ-USB 2131Q,開發(fā)了具有USB接口的數(shù)字?jǐn)z像系統(tǒng)。?
1.2 系統(tǒng)的原理圖?
??? 系統(tǒng)的原理圖如圖1所示。?
?
?
??? 整個(gè)系統(tǒng)以EZ_USB為核心,通過I2C總線控制電路對(duì)數(shù)字CAMERA 芯片的工作狀態(tài)進(jìn)行控制,數(shù)字圖像數(shù)據(jù)通過數(shù)據(jù)轉(zhuǎn)換電路送入數(shù)據(jù)緩沖區(qū),USB總線控制器從數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)。與計(jì)算機(jī)的通訊則通過USB接口實(shí)現(xiàn)。?
2 USB數(shù)字?jǐn)z像系統(tǒng)硬件?
2.1 EZ_USB 2131Q芯片介紹?
??? EZ_USB 2131Q內(nèi)部框圖如圖2所示。它是Cypress公司的內(nèi)嵌微控制器的80pin的USB接口控制芯片,包含3個(gè)8位多功能端口、8位數(shù)據(jù)端口、16位地址端口、2個(gè)USB數(shù)據(jù)端口和其它輸入輸出端口。?
?
?
??? EZ_USB 2131Q芯片采用了一種基于內(nèi)部RAM的解決方案,允許客戶隨時(shí)不斷地設(shè)置和升級(jí),不受端口數(shù)、緩沖大小、傳輸速度及傳輸方式的限制。?
??? 片內(nèi)嵌有一個(gè)增強(qiáng)型的8051微控制器,與標(biāo)準(zhǔn)的8051相比,其速度快3倍。它通過內(nèi)部RAM編程和數(shù)據(jù)存儲(chǔ),這樣使得芯片具有軟特性。USB主機(jī)通過USB總線下載8051程序代碼和設(shè)備特征到RAM中,然后EZ_USB芯片作為一個(gè)由代碼定義的外圍設(shè)備重新連接到主機(jī)上。?
??? EZ_USB 2131Q有兩種同步傳輸方式:即普通讀寫方式和快速讀寫方式。在普通讀寫方式下,芯片從外部讀取或向外部寫入數(shù)據(jù)的速率不會(huì)超過1000字節(jié)/毫秒,而且數(shù)據(jù)傳輸指令只能一一列出,共要寫出1000行相同的指令。中間不能用循環(huán)來傳輸數(shù)據(jù),而且也沒有時(shí)間來加入其它指令。這種方式對(duì)于要求同步傳輸、每幀傳輸1023字節(jié)的設(shè)備是不可取的。在快速讀寫方式下,芯片可以在0.5毫秒內(nèi)從外部讀取或向外部寫入1023字節(jié)的數(shù)據(jù),并且還留有足夠的時(shí)間可以加入其它指令。?
??? 如圖2所示,USB收發(fā)器連接到USB總線的D+和D-管腳;串行接口引擎(SIE)編碼和解碼串行數(shù)據(jù)并且進(jìn)行錯(cuò)誤校驗(yàn)、位填充和執(zhí)行USB所需的其他信號(hào),最后完成數(shù)據(jù)從USB接口的傳輸。?
??? EZ_USB-2131Q使用了一個(gè)增強(qiáng)型SIE/USB接口(USB核),它本身完成了許多的USB協(xié)議,這樣就簡(jiǎn)化了8051代碼。?
2.2 EZ_USB系列USB總線仿真板?
??? CYPRESS公司的EZ_USB開發(fā)板為USB設(shè)備的開發(fā)提供了一個(gè)良好的工具。開發(fā)板使用的是80管腳的AN2131Q芯片,而且包含5個(gè)用于擴(kuò)展接口的引出端。板上所有的電路均為3.3V,開發(fā)板可以由USB連接器供電,也可以由外部供電。?
??? EZ_USB開發(fā)板包括以下幾個(gè)部分:?
??? · 2131 EZ_USB集成電路,它包括一個(gè)高性能的8051核;?
??? · 64K擴(kuò)展RAM(由兩個(gè)32K RAM組成);?
??? · 兩個(gè)8051 UART口;?
??? · DIP開關(guān)控制來選擇RAM內(nèi)存映射地址和EEPROM地址;?
??? · 兩個(gè)I2C總線的8位I/O擴(kuò)展芯片,一個(gè)用于驅(qū)動(dòng)七段LED,另一個(gè)用于讀8位開關(guān)狀態(tài);?
??? · 一個(gè)3.3V調(diào)節(jié)器,它可以把5V轉(zhuǎn)換成3.3V;?
??? · 電源和中斷/監(jiān)控指示燈;?
??? 該仿真板基于EZ_USB系列USB總線控制器,它包含標(biāo)準(zhǔn)的MCS51外設(shè)模塊和USB模塊。USB模塊集成了USB的收發(fā)器、串行總線接口機(jī)制、功能接口單元和收/發(fā)緩沖區(qū)。通過內(nèi)存配置開關(guān)可靈活地改變RAM的地址空間,并方便地進(jìn)行內(nèi)存擴(kuò)充。?
??? 利用該板上的I/O擴(kuò)展連接口提供的控制線和數(shù)據(jù)線對(duì)CAMERA芯片進(jìn)行控制,并完成圖像數(shù)據(jù)的輸入。圖像數(shù)據(jù)則通過USB端口送入計(jì)算機(jī),可以進(jìn)行異步傳輸和等時(shí)傳輸。?
??? 監(jiān)控程序駐留在板上的EPROM內(nèi),可與PC機(jī)進(jìn)行通訊,控制程序通過外部UART送入仿真板,可以進(jìn)行實(shí)時(shí)仿真。這個(gè)仿真板和控制器都完全滿足《USB協(xié)議》。采用該仿真板來完成產(chǎn)品的開發(fā),并在此基礎(chǔ)上完成產(chǎn)品,可提高產(chǎn)品的開發(fā)周期。?
2.3 數(shù)字CAMERA芯片?
??? 采集卡的CODEC是OmniVision Inc.的OV6620,該芯片將CMOS光感應(yīng)核與外圍支持電路集成在一起,具有可編程控制與視頻模/數(shù)混合輸出等功能,其輸出的視頻為彩色圖像,與CCIR標(biāo)準(zhǔn)兼容。OV6620內(nèi)部嵌入了兩個(gè)8位的A/D,因而可以同步地輸出8位或16位的數(shù)字視頻流。在輸出數(shù)字視頻流的同時(shí),還提供象素時(shí)鐘PCLK、水平參考信號(hào)HREF、垂直同步信號(hào)VSYNC,便于外部電路讀取圖像。?
2.4 I2C總線控制電路?
??? I2C總線是一種雙向串行總線,它只有兩根信號(hào)線,可用于不同的IC或硬件模塊間的通訊。兩條線分別是串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL),當(dāng)與設(shè)備相連時(shí),每條線都必須通過上拉電阻接到電源上。I2C總線上可連接多個(gè)主從設(shè)備。I2C總線具有控制簡(jiǎn)單、穩(wěn)定可靠的特點(diǎn)。I2C總線的數(shù)據(jù)量是可編程的,其最大的數(shù)據(jù)量是100K。圖3給出了一個(gè)完整的I2C總線上的數(shù)據(jù)傳輸。?
?
?
2.5 數(shù)據(jù)轉(zhuǎn)換及數(shù)據(jù)緩沖電路?
??? CAMERA芯片的數(shù)據(jù)輸出率較高,并且輸出的圖像數(shù)據(jù)格式不能直接用于通過USB總線傳送,因而需要進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換。CAMERA芯片的數(shù)據(jù)輸出格式由工作模式?jīng)Q定,通過I2C總線控制。為了簡(jiǎn)化電路,并保持系統(tǒng)一定的靈活性,采用了ALTERA公司的CPLD可編程邏輯陣列芯片來實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)緩沖采用NEC公司的256K×8位靜態(tài)RAM芯片。電路圖如圖4所示。?
?
?
??? CAMERA芯片的主要輸出信號(hào)有:CLKOUT(時(shí)鐘輸出,作為CPLD芯片的全局工作時(shí)鐘)、Y和UV(視頻數(shù)據(jù)輸出線均為8位,作為CPLD芯片的數(shù)據(jù)線)、VSYNC(垂直同步信號(hào),用作幀同步信號(hào))、CHSYNC(水平同步信號(hào),用作行同步信號(hào))。?
??? 數(shù)據(jù)轉(zhuǎn)換電路通過可編程邏輯完成下列功能:根據(jù)同步信號(hào),針對(duì)QCIF格式,過濾一行中的冗余數(shù)據(jù)和一幀中的同步行數(shù)據(jù),產(chǎn)生數(shù)據(jù)緩沖芯片的寫時(shí)鐘信號(hào)、寫復(fù)位信號(hào)和寫使能信號(hào)。數(shù)據(jù)的過濾是通過控制寫使能信號(hào)實(shí)現(xiàn)的,該芯片在使能信號(hào)為低時(shí),可以寫入緩沖區(qū),而在信號(hào)為高時(shí),則不能夠?qū)?shù)據(jù)寫入緩沖區(qū)。?
??? 數(shù)據(jù)緩沖芯片的數(shù)據(jù)輸入與數(shù)據(jù)輸出分別由不同的信號(hào)控制,兩者互不干擾。寫數(shù)據(jù)控制信號(hào)有:WRCLK(寫時(shí)鐘信號(hào))、WRST(寫復(fù)位信號(hào))和WREN(寫使能信號(hào))。寫操作過程是:首先,控制產(chǎn)生一個(gè)內(nèi)部復(fù)位信號(hào)WRST,使寫緩沖區(qū)的寫地址指針指向零,在復(fù)位周期后,進(jìn)行寫操作;在寫時(shí)鐘信號(hào)的上升沿,如果寫使能信號(hào)為低,一個(gè)時(shí)鐘周期后,數(shù)據(jù)就寫入SRAM中,同時(shí)SRAM的寫地址指針自動(dòng)增加。?
??? 讀操作信號(hào)有:RDCLK(讀時(shí)鐘信號(hào))、RE(讀允許信號(hào))、OE(輸出允許信號(hào))和RDST(讀復(fù)位信號(hào))。讀操作的過程為:控制產(chǎn)生一個(gè)讀復(fù)位信號(hào)RDST,使讀緩沖區(qū)的地址指針指向零,在下一時(shí)鐘周期進(jìn)行讀操作;在讀時(shí)鐘的上升沿,如果RE和OE信號(hào)同時(shí)為低,SRAM中的數(shù)據(jù)就會(huì)出現(xiàn)在輸出數(shù)據(jù)總線上,同時(shí)SRAM的讀地址指針自動(dòng)增加。?
????讀寫操作過程互不干擾,各自有自己的地址指針。把CAMERA芯片輸出的圖像數(shù)據(jù)依約定的要求按幀存放在緩沖區(qū),并加上相應(yīng)的幀間隔標(biāo)志,USB控制器則從緩沖區(qū)中讀取數(shù)據(jù),并通過接口送往主機(jī),完成數(shù)據(jù)圖像的傳輸。?
3 USB數(shù)字?jǐn)z像系統(tǒng)軟件?
??? 開發(fā)一個(gè)USB設(shè)備,軟件設(shè)計(jì)是必不可少的。USB應(yīng)用系統(tǒng)軟件設(shè)計(jì)分為三部分:USB外設(shè)端的固件(Firmware)、主機(jī)操作系統(tǒng)上的客戶驅(qū)動(dòng)程序以及操作界面程序。界面程序通過客戶驅(qū)動(dòng)程序與系統(tǒng)USBI(USB Device Interface)進(jìn)行通信,由系統(tǒng)產(chǎn)生USB數(shù)據(jù)的傳送動(dòng)作,固件則響應(yīng)各種來自系統(tǒng)的USB標(biāo)準(zhǔn)請(qǐng)求,完成各種數(shù)據(jù)的交換工作和事件處理。?
??? 由于圖像數(shù)據(jù)自身的格式和USB同步傳輸適合傳輸時(shí)間敏感的大量數(shù)據(jù),采用了同步傳輸模式。但是同步傳輸設(shè)備和進(jìn)程的同步設(shè)計(jì)有較大的難度,且它不提供錯(cuò)誤檢查機(jī)制。固件利用中斷來響應(yīng)主機(jī)的I/O請(qǐng)求。因此8051核的IRQE是關(guān)鍵。需要注意的還有USB設(shè)備的初始化和配置。初始化時(shí),要按嚴(yán)格的順序?qū)N2131的各寄存器進(jìn)行操作。主機(jī)操作界面程序是用VC++6.0編寫的,主要實(shí)現(xiàn)圖像顯示以及圖像處理等多種功能。?
??? 該系統(tǒng)是為了開發(fā)USB接口的數(shù)字化攝像設(shè)備而設(shè)計(jì)的,系統(tǒng)的一個(gè)性能是幀傳輸率,CAREMA芯片的數(shù)據(jù)傳輸率最高可達(dá)到30幀/秒。目前筆者所實(shí)現(xiàn)的USB接口,在等時(shí)傳輸方式下,可達(dá)到8幀/秒。由于目前采用仿真模式,系統(tǒng)的性能在最后的定型中,可得到進(jìn)一步的提高。?
??? 下一步將繼續(xù)進(jìn)行系統(tǒng)的集成和優(yōu)化,并最終實(shí)現(xiàn)產(chǎn)品化。由于目前的系統(tǒng)是基于系統(tǒng)仿真板的,所以必須進(jìn)行集成,以最小系統(tǒng)實(shí)現(xiàn)。此外,還要進(jìn)一步開發(fā)設(shè)備的驅(qū)動(dòng)程序。由于EZ_USB包括很多的功能,而這里只用到它的等時(shí)傳輸,浪費(fèi)了很多的資源,加大了成本。所以在后繼研究中,還會(huì)開發(fā)USB控制器,這樣才能真正地降低成本,提高性能。?
參考文獻(xiàn)?
1 Compaq,Intel,Microsoft,NEC. Universal Serial Bus Specification, Revision 1.1.Sep 23, 1998?
2 USB Device Working Group. USB Still Image Capture??Device Definition Revision 1.0. July 11, 2000?
3 Cypress.EZ-USB Technical Reference Manual Version 1.9.May 2000?
4 李伯成,侯伯亨,裘雪紅. IBM PC微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).西安:西安電子科技大學(xué),1999?
5 Malter Oney. Programming the Windows Driver Model.Microsoft Press,1999