1 引 言 繼USB協(xié)議公布后,USB憑借其占用系統資源少、廉價(jià)、通用、可熱插拔等優(yōu)點(diǎn),成為通用的串行接口總線(xiàn)。當前,絕大部分計算機外圍設備(如打印機、MP3、移動(dòng)硬盤(pán)等)均采用USB接口。但隨著(zhù)USB接口應用的普及,基于USBl.x和USB2.O規范的USB接口逐漸暴露其缺點(diǎn)。由于USB總線(xiàn)是主從式結構,且設備的主從特性在設備設計時(shí)就已經(jīng)固定,這樣就很不利于設備間點(diǎn)對點(diǎn)的數據傳輸。這種以計算機為核心的數據傳輸結構,非常不利于USB總線(xiàn)在嵌入式行業(yè)的應用,因為這些設備一般都要求具有與計算機通信的USB設備功能,同時(shí)也要求具有連接其他USB設備的主機功能。為了解決這一問(wèn)題,USB OTG規范作為USB2.O規范的補充出臺了。本文介紹一款USB OTG IP核的設計與實(shí)現,該設備控制器可作為IP核用于SoC系統中,完成與主機控制器的通信,并能與普通的USB從設備進(jìn)行通信。 2 USB OTG的工作原理 OTGl.Oa補充規范對USB2.O進(jìn)行的最重要擴展是其更具節能性、電源管理,并允許設備以主機和外設2種形式工作。OTG有兩種設備類(lèi)型:兩用OTG設備(dual—role 0TG device)和外設式OTG設備(peripher一al_only 0TG device)。兩用0TG設備完全符合USB2.O規范,同時(shí)提供有限的主機能力和一個(gè)Mini—AB插座,支持主機流通協(xié)議(IIost Negotiation Protocol,HNP)”。,且同外設式OTG設備一樣支持事務(wù)請求協(xié)議(SessionRequest Protocol,SRP)。當作為主機工作時(shí),兩用0TG設備可在總線(xiàn)上提供8 mA的電流,而以往標準主機則需要提供100~500 mA的電流。2個(gè)兩用OTG設備連接在一起時(shí)可交替以主機和從機的方式工作,這個(gè)特點(diǎn)兼容了現有USB規范主機/外設的結構模型。OTG主機負責初始化數據通信,比如總線(xiàn)復位、獲取各種USB描述符和配置設備。這些配置完成后,2個(gè)OTG設備便可分別以主機和從機方式傳輸信息,2個(gè)設備主從角色交換的過(guò)程由主機流通協(xié)議定義。 3 IP設計原理和IP模塊設計 USB 0TG控制器芯片按結構分類(lèi),通常分為以下2種: ①專(zhuān)為USB OTG設計的芯片。這類(lèi)芯片集成了微控制器,是完全按照協(xié)議設計的,而不是在舊的結構上增加功能。其結構不同于其他常用控制芯片,開(kāi)發(fā)者需要較長(cháng)的學(xué)習時(shí)間,但是它能夠達到最優(yōu)化。 ②需要外部微處理器的接口芯片。有些USB控制器只處理USB通信,而且必須由外部微處理器來(lái)控制。這種實(shí)現接口的標準組件使得使用者可以在各種不同類(lèi)型的微控制器中選擇一種最適合的微控制器,通過(guò)使用已有的結構和減少固件上的投資來(lái)縮短開(kāi)發(fā)時(shí)間,減少開(kāi)發(fā)風(fēng)險和費用。但由于外接一個(gè)處理器,增加了電路的復雜性。 本文設計的USB OTG IP核采用第2種方式,所采用的處理器是Nios。根據對USB OTG規范的理解,USB0TG控制器應該具有以下的功能:HNP和SRP協(xié)議的實(shí)現,主機工作模式和設備工作模式。系統結構框圖如圖1所示。 UTMI+接口需要外接一個(gè)符合USB 2.0 UTMI+協(xié)議的收發(fā)器。該芯片用作USB2.O接口的模擬前端,處理由USB2.O接口發(fā)出的高速和模擬信號,對其發(fā)出的用NRZI方式編碼的數據進(jìn)行解碼、位填充等,并將串行數據轉換成并行數據;反之,該芯片對由本控制器發(fā)出的并行數據通過(guò)其內部的差分驅動(dòng)電路進(jìn)行串行化、位填充和NRZI編碼,并輸出到USB電纜上。該接口模塊主要用于緩存發(fā)送和接收的數據,確保與外圍收發(fā)芯片的無(wú)縫結合,以及掛起、恢復和復位的檢測。 OTG控制器實(shí)現USB OTG補充協(xié)議的功能。該模塊主要負責HNP、SRP的硬件實(shí)現,以及連接狀態(tài)的檢測。 主機控制器實(shí)現IP核工作在主機模式的功能。該模塊主要產(chǎn)生掛起、恢復、復位信號,主動(dòng)發(fā)送get_descip—tor、set_address、set_configuration等標準請求,并把請求變成對應的USB數據包格式(比如TOKEN包加入PID、地址、端點(diǎn)和5位的CRC校驗碼等);隔固定的時(shí)間向從設備發(fā)送SOF標志,并根據配置的結果產(chǎn)生對應的主機中斷。 設備控制器實(shí)現IP核工作在設備模式的功能。該模塊主要負責接收標準的USB請求,比如接收SOF標志、IN標志、OUT標志等,并根據這些請求作出正確的響應以及檢測復位、掛起信號。 控制狀態(tài)寄存器完成對IP核控制器內部狀態(tài)的設置。它分成2種類(lèi)型:一種是基本的控制狀態(tài)寄存器,比如控制狀態(tài)寄存器(指定USB的速率模式、掛起模式、連接狀態(tài)、主從模式),設備地址寄存器(存放主機分配給USB設備的地址),中斷屏蔽寄存器(使能對應中斷)和中斷源寄存器(Nios控制器通過(guò)讀此寄存器來(lái)判斷中斷類(lèi)型);另一種是端點(diǎn)寄存器控制狀態(tài)寄存器,如中斷源寄存器、中斷屏蔽寄存器、緩沖區的指針寄存器和大小寄存器,模塊中實(shí)現時(shí)根據輸入的地址和讀寫(xiě)信號來(lái)對某一個(gè)寄存器進(jìn)行相應的讀寫(xiě)操作。 存儲器接口實(shí)現IP核內部數據與Nios控制器數據的之間的仲裁。當Nios控制器和IP核內部同時(shí)對外部存儲器SRAM進(jìn)行讀寫(xiě)訪(fǎng)問(wèn)時(shí),必須對它們進(jìn)行數據的仲裁。默認的優(yōu)先級為IP核內部數據優(yōu)先級高于Nios控制器的數據優(yōu)先級。 Nios控制器接口實(shí)現USB IP核與外部微控制器(Nios)的數據通信。該接口符合Avalon總線(xiàn)規范,通過(guò)輸入地址的最高位來(lái)判斷Nios是對內部寄存器進(jìn)行訪(fǎng)問(wèn)還是對SRAM存儲器進(jìn)行訪(fǎng)問(wèn),并完成地址、數據和相關(guān)信號的處理。 4 USB OTG IP核的特性討論 4.1 連接狀態(tài)的檢測 當上電復位后進(jìn)入空閑狀態(tài),開(kāi)始USB會(huì )話(huà)。首先需要等待一段時(shí)間(最多50 ms),OTG控制器會(huì )檢測輸入ID線(xiàn)的電平,以確定自己是A設備還是B設備,高電平表示B設備,低電平表示A設備。對于A(yíng)設備,IP核會(huì )等待電源線(xiàn)Vbus上的電平上升到符合USB會(huì )話(huà)的4.4 V最低電平要求,具體的操作就是通過(guò)UTMI+接口的DrvVbus信號控制PHY對Vbus電源線(xiàn)充電,以提供USB總線(xiàn)工作用的電源;對于B設備,則根據是否正在作SRP請求而實(shí)現SRP協(xié)議或者進(jìn)入數據傳輸。當Vbus電源線(xiàn)上的電平滿(mǎn)足要求時(shí),A設備等待B設備連入USB總線(xiàn)。作為主機的A設備的DpPulldown和Dm—Pulldown在開(kāi)始會(huì )話(huà)后始終保持高電平狀態(tài),如果B設備沒(méi)有連上,則2條USB數據線(xiàn)DP和DM呈現SE0狀態(tài);而當B設備連上USB總線(xiàn)時(shí),DP和DM會(huì )呈現J態(tài)或者K態(tài)。根據這一特點(diǎn),A設備就可以判斷出是否有B設備連入USB總線(xiàn)。 4.2 SRP協(xié)議的實(shí)現 當設備進(jìn)入SRP協(xié)議實(shí)現時(shí),B設備等待SRP操作的初始條件,即通過(guò)UTMI+接口的DischrgVbus信號加速SRP條件的滿(mǎn)足。當初始條件都滿(mǎn)足后,B設備通過(guò)UTMI+接口的信號XcvrSelect、TermSelect、DpPulldown和DmPulldown實(shí)現對PHY的控制,使之向DP線(xiàn)上發(fā)出驅動(dòng)脈沖。持續5~10 ms后,B設備又通過(guò)UTMI+接口的信號ChrgVbus控制PHY向Vbus上發(fā)出驅動(dòng)脈沖,該驅動(dòng)脈沖需要持續足夠長(cháng)的時(shí)間以使Vbus電源線(xiàn)被充電到2.1 V。驅動(dòng)完成后,回到空閑狀態(tài),進(jìn)而等待A設備對SRP作出響應。如果A設備識別到了B設備的SRP,則會(huì )開(kāi)始USB會(huì )話(huà),否則本次SRP失敗。 4.3 HNP協(xié)議的實(shí)現 不妨假設A設備當前處于主機狀態(tài),而B(niǎo)設備處于從設備狀態(tài)。此時(shí),B設備需要通過(guò)HNP取得USB主機地位,過(guò)程如下:A設備通過(guò)發(fā)出掛起命令使得USB總線(xiàn)準備進(jìn)入掛起狀態(tài)。B設備首先由數據傳輸狀態(tài)準備進(jìn)入掛起狀態(tài)。這時(shí),B設備需要檢查是否有HNP請求,如果有則開(kāi)始等待A設備連接,否則正常地進(jìn)入掛起狀態(tài)。B設備在等待A設備配置時(shí),A設備尚未完全進(jìn)入掛起狀態(tài),當它進(jìn)入掛起狀態(tài)的同時(shí)會(huì )檢查是否有B設備的斷開(kāi)中斷。如果有,則說(shuō)明B設備正在進(jìn)行HNP操作,并且已經(jīng)進(jìn)入了等待A設備配置狀態(tài),接著(zhù)A設備進(jìn)入設備工作狀態(tài),從而使自己變?yōu)閺脑O備。B設備檢測到A設備的連接后,對USB總線(xiàn)進(jìn)行復位,同時(shí)開(kāi)始對A設備進(jìn)行復位操作。B設備進(jìn)入主機模式工作,而A設備則進(jìn)入從設備模式工作。在B設備作為主機完成了對USB總線(xiàn)的使用后,再一次通過(guò)HNP將USB主機地位還給A設備,操作過(guò)程類(lèi)似。 5 系統功能仿真 本設計采用硬件描述語(yǔ)言Verilog HDL完成RTL(寄存器傳輸級)的描述。寄存器傳輸級是指在數字系統設計時(shí),可以將數字系統簡(jiǎn)單地看作是寄存器和寄存器之間的組合邏輯(cornbinational logic)。本設計使用Mentor公司的設計仿真軟件ModelSimSE進(jìn)行功能仿真。應用Verilog HDL語(yǔ)言搭建測試平臺,通過(guò)仿真工具,設計者對各設計層次的設計模塊進(jìn)行仿真,以確定這些設計模塊的功能和邏輯關(guān)系是否滿(mǎn)足設計要求。 在設計的驗證階段,將包含該設計的2個(gè)USB OTG IP核直連,并讓這2個(gè)IP核工作在不同的工作狀態(tài),即一個(gè)工作在A(yíng)設備模式,另一個(gè)工作在B設備模式。這樣,A設備就可以作為B設備的激勵源,通過(guò)A設備發(fā)出一系列測試信號,比如向B設備發(fā)出復位信號以及SRP和HNP協(xié)議請求,發(fā)送SOF標志信號和配置信息等。然后觀(guān)察B設備是否對這些命令或者信號做出正確的響應。通過(guò)這樣的程序來(lái)驗證該IP核是否具有雙功能和對USB協(xié)議的支持情況。仿真的部分結果如圖2所示。 6 FPGA驗證 FPGA是一種可編程邏輯器件,可進(jìn)行多次編程操作,使器件根據不同的需求實(shí)現不同的功能。隨著(zhù)微電子技術(shù)的發(fā)展,FPGA的性能不斷提高,很多設計已經(jīng)完全可以由FPGA來(lái)完成。目前,在A(yíng)SIC設計中一個(gè)重要的驗證手段就是通過(guò)FPGA進(jìn)行硬件仿真,以保證設計的可靠性。FPGA芯片是整個(gè)驗證系統的核心,它包含了USB OTG IP核和相關(guān)的控制模塊。因為用Verilog語(yǔ)言來(lái)實(shí)現控制模塊的功能,所以將它和USB OTG IP核一起綜合然后下載到FPGA中進(jìn)行測試。 FPGA選用AItera公司的Cyclone系列芯片,具體型號是EPlCl2Q240C8;物理層模擬部分選用Philips公司的產(chǎn)品ISPl301;存儲器SRAM選用ISSI公司的IS63LVl024—12J。復位電路用來(lái)產(chǎn)生上電復位信號,也可以在系統正常工作時(shí),通過(guò)按鍵開(kāi)關(guān)產(chǎn)生復位信號。此復位信號提供給USB IP核作為系統復位。系統的布局布線(xiàn)采用的是Altera公司的QHartusII 6.0。 驗證過(guò)程分成2個(gè)部分來(lái)分別驗證主機模式和設備模式。當USB 0TG IP核工作在主機模式時(shí),直接用U盤(pán)與IP核進(jìn)行連接,通過(guò)編寫(xiě)的底層驅動(dòng)可以識別出U盤(pán)。在完成對U盤(pán)的驅動(dòng)后,成功地進(jìn)行了數據傳輸,最后正確地斷開(kāi)連接。當IP核工作在設備模式時(shí),IP核作為USB從設備接入電腦主機的USB接口。通過(guò)安裝新的驅動(dòng),電腦主機可以識別出該USB設備,完成對該設備的驅動(dòng)后,同樣可以正確地進(jìn)行數據傳輸,并安全地移除該設備。驗證的結果表明,該USB 0TG IP核的主機和從設備功能均能正常工作,達到了預期的設計要求。 7 結 語(yǔ) FPGA驗證的結果表明,USB OTG IP核在功能和時(shí)序上符合USB2.0標準和OTGl.Oa補充規范的協(xié)議要求,具備了主機功能和設備功能,達到了設計的預期目標。另外,完成的USB OTG IP核支持UTMI+接口,可以廣泛應用于包含USB功能的SoC開(kāi)發(fā)。 |