Usb接口電路系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于電子測(cè)量技術(shù)領(lǐng)域,尤其涉及一種USB接口電路的設(shè)計(jì)系統(tǒng)。
【背景技術(shù)】
[0002] 隨著電子技術(shù)的發(fā)展,接口系統(tǒng)的設(shè)計(jì)正朝著復(fù)雜程度高、工作速度快、標(biāo)準(zhǔn)化的 方向發(fā)展,對(duì)測(cè)試儀器提出了更高的要求。USB(Universal Serial Bus)已成為一種標(biāo)準(zhǔn) 的連接接口,自1996年USB-IF(USB實(shí)施論壇)聯(lián)盟公布了 USB1. 1以來,USB接口已取得 了長(zhǎng)足的發(fā)展。最初的USB標(biāo)準(zhǔn)主要面向低速數(shù)據(jù)的傳輸應(yīng)用,USB1. 1支持1. 5Mbps (低 速)和12Mbps (全速)兩種速率,廣泛用于對(duì)傳輸速率要求不高的PC外設(shè),如鍵盤、鼠標(biāo)等, 2000年公布的USB2. 0標(biāo)準(zhǔn)的傳輸速度最高可以達(dá)到480Mbps (高速)。上述的標(biāo)準(zhǔn)USB設(shè) 備都必須以PC為主機(jī),USB OTG (USB On The Go)技術(shù)的推出,實(shí)現(xiàn)了設(shè)備到設(shè)備的數(shù)據(jù)傳 輸,拓展了 USB技術(shù)的使用范圍。其廣泛用于各種嵌入式系統(tǒng)中,如PDA,移動(dòng)電話、數(shù)碼相 機(jī)、測(cè)量?jī)x器、測(cè)試設(shè)備等。
[0003] 集成了 USB協(xié)議的微處理器,按功能可以分為USB主控制器芯片、USB集線器芯片 和USB設(shè)備芯片,本方法用到的是USB功能設(shè)備芯片。目前市面上主要有兩種USB設(shè)備芯 片,一種是USB接口芯片,其僅包含USB的串行接口引擎(SIE)、FIF0內(nèi)存、收發(fā)器以及電壓 調(diào)整器等部分的芯片,如 Philips 公司的 FOIUSBDI^JSPlSSLNational Semiconductor 公 司的USBN9602等,這種芯片需要一個(gè)外接的微控制器來控制,開發(fā)難度大,開發(fā)周期長(zhǎng)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的技術(shù)效果能夠克服上述缺陷,提供一種USB接口電路系統(tǒng),其通過USB接 口硬件設(shè)計(jì)及固件編程,實(shí)現(xiàn)了設(shè)備到設(shè)備的數(shù)據(jù)傳輸,支持USB2. 0標(biāo)準(zhǔn)并向下兼容。
[0005] 為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:其包括FPGA模塊、EZ-USB FX2模塊、 EEPR0M模塊、晶振,F(xiàn)PGA模塊、EEPR0M模塊、晶振分別與EZ-USB FX2模塊電連接。
[0006] EZ-USB FX2模塊采用CY7C68013型號(hào)。EZ-USB FX2模塊包括USB收發(fā)器、USB引 擎、RAM、增強(qiáng)8051、地址/數(shù)據(jù)總線、I2C主控器、通用1/0、GPIF、FIFO,把EZ-USB FX2看 成兩個(gè)數(shù)據(jù)域:一個(gè)是USB數(shù)據(jù)域,由USB內(nèi)核控制;另一個(gè)是接口數(shù)據(jù)域,由增強(qiáng)8051或 GPIF控制;兩個(gè)數(shù)據(jù)域由端點(diǎn)FIFO連接,EZ-USB FX2的端點(diǎn)FIFO采用了以USB數(shù)據(jù)包的 方式提交給FIFO。
[0007] EEPR0M模塊采用AT24LC64型號(hào)。晶振采用24M晶振。
[0008] 這個(gè)固件架構(gòu)流程圖是從USB數(shù)據(jù)傳輸?shù)慕嵌葋砜吹?,大量的特定功能在自定義 控制傳輸和塊傳輸中實(shí)現(xiàn)。
【附圖說明】
[0009] 圖1為EZ-USB FX2芯片結(jié)構(gòu)圖;
[0010] 圖2為本發(fā)明系統(tǒng)結(jié)構(gòu)模塊圖;
[0011] 圖3為固件主循環(huán)流程圖;
[0012] 圖4為GPIF波形設(shè)置。
【具體實(shí)施方式】
[0013] 本發(fā)明的USB接口電路系統(tǒng),包括FPGA模塊、EZ-USB FX2模塊、EEPR0M模塊、晶 振,F(xiàn)PGA模塊、EEPR0M模塊、晶振分別與EZ-USB FX2模塊電連接。
[0014] Cypress公司的EZ-USB FX2芯片是世界第一個(gè)集成USB2. 0協(xié)議的微處理器。片 內(nèi)集成了串行收發(fā)器、智能SIE、增強(qiáng)8051微控制器、一個(gè)可編程外設(shè)接口(GPIF),以及一 個(gè)主要用于程序下載的I 2C接口。FX2的智能SIE的硬件處理了大部分USB1. 1和USB2.0 協(xié)議,使得內(nèi)嵌的微控制器(增強(qiáng)型8051)有足夠的資源和能力去實(shí)現(xiàn)設(shè)備的特定功能,簡(jiǎn) 化了固件代碼的開發(fā),EZ-USB FX2支持12Mbps的全速傳輸和480Mbps的高速傳輸,可使用 4種USB傳輸方式:控制傳輸、中斷傳輸、批量傳輸和等時(shí)傳輸;完全適用于USB2. 0,并兼容 USB1. 1。芯片圖如圖1所示。
[0015] EZ-USB FX2內(nèi)部有8k字節(jié)的RAM存儲(chǔ)空間上電后可以用來存儲(chǔ)數(shù)據(jù)和程序代碼, 4k字節(jié)的端點(diǎn)FIFO可動(dòng)態(tài)的配置給EP2、EP4、EP6、EP8等四個(gè)端點(diǎn),和眾多的USB寄存器。 內(nèi)嵌的8051有128字節(jié)的片內(nèi)存儲(chǔ)器,EZ-USB FX2還有8根數(shù)據(jù)線和16根地址線,可以 用來擴(kuò)展程序或數(shù)據(jù)空間。需要注意的是EZ-USB FX2是在片內(nèi)RAM中運(yùn)行程序。
[0016] 可以把EZ-USB FX2看成兩個(gè)數(shù)據(jù)域(data domain): -個(gè)是USB數(shù)據(jù)域,由USB內(nèi) 核控制;另一個(gè)是接口數(shù)據(jù)域,由8051或GPIF控制。兩個(gè)數(shù)據(jù)域由端點(diǎn)FIFO連接,EZ-USB FX2的端點(diǎn)FIFO采用了 "量子FIFO"(Quantum FIFO)的概念,即數(shù)據(jù)是以USB數(shù)據(jù)包的方 式而不是以字的方式提交給FIFO。當(dāng)FIFO不空時(shí),說明FIFO里面至少已經(jīng)有一個(gè)USB數(shù) 據(jù)包大小的數(shù)據(jù)。最多可以給一個(gè)端點(diǎn)配置4個(gè)USB數(shù)據(jù)包大小的FIFO,用普通FIFO的觀 點(diǎn)去看,也就是FIFO可以配置的最大深度是4。
[0017] EZ-USB FX2內(nèi)嵌的增強(qiáng)型8051單片機(jī)比標(biāo)準(zhǔn)的8051的速度更快(可在12, 24或 48MHz下工作)、四個(gè)時(shí)鐘周期為一個(gè)指令周期,功能更強(qiáng),且指令集和標(biāo)準(zhǔn)的8051完全兼 容,并可使用C51編譯器。
[0018] 固件下載
[0019] EZ-USB FX2的固件可以保存在擴(kuò)展的片外程序存儲(chǔ)器中,并在片外程序存儲(chǔ)器 中運(yùn)行,這種方法顯然提高了成本,而且增加了電路板的面積,在固件不大的的情況下,一 般采用在SRAM中運(yùn)行的方法。RAM是調(diào)電就丟失數(shù)據(jù)的,所以需要有保存固件的地方。 CY7C68013-128提供了兩種方法來實(shí)現(xiàn)這個(gè)功能。
[0020] (一)固件保存在一個(gè)片外EEPR0M中,系統(tǒng)上電后,EZ-USB FX2的硬件自動(dòng)把固 件通過I2c總線下載到片內(nèi)RAM中運(yùn)行。
[0021] (二)把固件和USB設(shè)備驅(qū)動(dòng)程序一起編譯,上電后通過驅(qū)動(dòng)固件下載到片內(nèi)RAM 中運(yùn)行。
[0022] 系統(tǒng)上電后,USB內(nèi)核首先檢查I2C總線上是否有EEPR0M。如果有,并且其第一 個(gè)字節(jié)是0xC2,則USB內(nèi)核將EEPR0M中的內(nèi)容全部拷貝到內(nèi)部RAM中,然后8051處理設(shè) 備列舉時(shí)的各種設(shè)備請(qǐng)求,并開始執(zhí)行RAM中的固件。若有EEPR0M但第一個(gè)字節(jié)是0xC0, 則USB內(nèi)核PID/VID/DID(即產(chǎn)品標(biāo)識(shí)號(hào)、生產(chǎn)商標(biāo)識(shí)號(hào)和設(shè)備標(biāo)識(shí)號(hào))從EEPR0M中拷貝 到內(nèi)部RAM,然后USB內(nèi)核把這些信息加載傳給主機(jī),主機(jī)會(huì)把加載相應(yīng)的驅(qū)動(dòng)程序,下載 相應(yīng)的固件,然后FX2重新連接,完成重新設(shè)備列舉,并開始執(zhí)行RAM中的固件。如果第 一個(gè)字節(jié)既不是0xC2,也不是OxCO,或者沒有發(fā)現(xiàn)EEPROM,則主機(jī)從USB內(nèi)核中讀取PID/ VID/DID完成設(shè)備的重新設(shè)備列舉。
[0023] 本方法采用一片EEPR0M芯片AT24LC64來保存固件,其第一個(gè)字節(jié)0xC2,接著后面 的字節(jié)才是程序代碼和數(shù)據(jù)。
[0024] 接口電路設(shè)計(jì)
[0025] 在本設(shè)計(jì)中,EZ-USB FX2通過并行總線和GPIF兩種方式讀寫FPGA,通過控制傳輸 和塊傳輸兩種USB傳輸類型與主機(jī)通信。EZ-USB FX2的并行總線方式和普通8051微控制 器的P0 口作為總線端口時(shí)類似,只是EZ-USB FX2還有獨(dú)立的16根地址線,不需要端口復(fù) 用。EZ-USB FX2和FPGA的連接及外圍電路圖如圖2所示。
[0026] EZ-USB FX2外接時(shí)鐘24MHz,內(nèi)部PLL倍頻為48MHz,即增強(qiáng)型8051工作在48MHz 頻率下。CY7C68013復(fù)位腳RESET#是低電平有效,RESET#通過一個(gè)100kQ的電阻接上電 源VCC,通過一個(gè)luF的電容接上地GND,使得芯片能夠上電復(fù)位。CY7C68013的I 2C接口信 號(hào)線SCL和SDL都是漏極開路輸出和遲滯輸入,分別在這兩個(gè)管腳上連接2. 2k Ω的上拉電 阻,再分別和AT24LC64的SCL和SDL管腳連接。本方案中,AT24LC64用來存儲(chǔ)固件程序, 所以它的設(shè)備地址設(shè)為001,即A2A1接地,A0通過一個(gè)電阻接電源。16位的GPIF數(shù)據(jù)線 FD [15:0]和FPGA的16個(gè)作為數(shù)據(jù)輸出的管腳相連,2根CTL線作為GPIF的控制輸出連到 FPGA中,分別作為FIFO讀時(shí)信號(hào)和SRAM讀時(shí)鐘信號(hào)。8位的數(shù)據(jù)總線和16根地址總線中 的9根都連到FPGA的相應(yīng)管腳。
[0027] USB設(shè)備對(duì)電源要求比較高,EZ-USB FX2典型工作電壓是3. 3v,當(dāng)電壓低于3. Ον 時(shí),設(shè)備不能被識(shí)別。為了避免電路板上其它器件對(duì)它的影響,專門用了一片低壓差電源 管理器件It 1117-3. 3來給CY7C68013供電,It 1117-3. 3最大能提供800mA的電流,能夠給 CY7C68013提供穩(wěn)定的供電。
[0028] 固件程序設(shè)計(jì)
[0029] 固件程序控制整個(gè)接口硬件系統(tǒng)的運(yùn)行,負(fù)責(zé)處理主機(jī)發(fā)來的各種USB請(qǐng)求,以 完成它們之間的數(shù)據(jù)傳輸。并讀寫FPGA以實(shí)現(xiàn)特定的功能。設(shè)計(jì)中采用C51語言來編寫 USB固件程序,在德國Keil軟件公司的集成開發(fā)環(huán)境Keil uVison2下編譯鏈接。固件程序 由主循環(huán)、USB中斷服務(wù)例程(ISR)、標(biāo)準(zhǔn)設(shè)備請(qǐng)求、自定義請(qǐng)求、GPIF塊讀等部分組成。固 件主循環(huán)流程圖如圖3 :
[0030] 這個(gè)固件架構(gòu)流程圖是從USB數(shù)據(jù)傳輸?shù)慕嵌葋砜吹?,大量的特定功能在自定義 控制傳輸和塊傳輸中實(shí)現(xiàn)。固件的各個(gè)重要部分如下。
[0031] USB描述符表
[0032] USB描述符保存了設(shè)備的基本信息,描述符