USB OTG的IP Core設計與FPGA驗證
本文引用地址:http://butianyuan.cn/article/158159.htm
3 USB OTG IP核的特性討論
3.1 連接狀態(tài)的檢測
當上電復位后進入空閑狀態(tài),開始USB會話。首先需要等待一段時間(最多50 ms),OTG控制器會檢測輸入ID線的電平,以確定自己是A設備還是B設備,高電平表示B設備,低電平表示A設備。對于A設備,IP核會等待電源線Vbus上的電平上升到符合USB會話的4.4 V最低電平要求,具體的操作就是通過UTMI+接口的DrvVbus信號控制PHY對Vbus電源線充電,以提供USB總線工作用的電源;對于B設備,則根據(jù)是否正在作SRP請求而實現(xiàn)SRP協(xié)議或者進入數(shù)據(jù)傳輸。當Vbus電源線上的電平滿足要求時,A設備等待B設備連入USB總線。作為主機的A設備的DpPulldown和Dm―Pulldown在開始會話后始終保持高電平狀態(tài),如果B設備沒有連上,則2條USB數(shù)據(jù)線DP和DM呈現(xiàn)SE0狀態(tài);而當B設備連上USB總線時,DP和DM會呈現(xiàn)J態(tài)或者K態(tài)。根據(jù)這一特點,A設備就可以判斷出是否有B設備連入USB總線。
3.2 SRP協(xié)議的實現(xiàn)
當設備進入SRP協(xié)議實現(xiàn)時,B設備等待SRP操作的初始條件,即通過UTMI+接口的DischrgVbus信號加速SRP條件的滿足。當初始條件都滿足后,B設備通過UTMI+接口的信號XcvrSelect、TermSelect、DpPulldown和DmPulldown實現(xiàn)對PHY的控制,使之向DP線上發(fā)出驅(qū)動脈沖。持續(xù)5~10 ms后,B設備又通過UTMI+接口的信號ChrgVbus控制PHY向Vbus上發(fā)出驅(qū)動脈沖,該驅(qū)動脈沖需要持續(xù)足夠長的時間以使Vbus電源線被充電到2.1 V。驅(qū)動完成后,回到空閑狀態(tài),進而等待A設備對SRP作出響應。如果A設備識別到了B設備的SRP,則會開始USB會話,否則本次SRP失敗。
3.3 HNP協(xié)議的實現(xiàn)
不妨假設A設備當前處于主機狀態(tài),而B設備處于從設備狀態(tài)。此時,B設備需要通過HNP取得USB主機地位,過程如下:A設備通過發(fā)出掛起命令使得USB總線準備進入掛起狀態(tài)。B設備首先由數(shù)據(jù)傳輸狀態(tài)準備進入掛起狀態(tài)。這時,B設備需要檢查是否有HNP請求,如果有則開始等待A設備連接,否則正常地進入掛起狀態(tài)。B設備在等待A設備配置時,A設備尚未完全進入掛起狀態(tài),當它進入掛起狀態(tài)的同時會檢查是否有B設備的斷開中斷。如果有,則說明B設備正在進行HNP操作,并且已經(jīng)進入了等待A設備配置狀態(tài),接著A設備進入設備工作狀態(tài),從而使自己變?yōu)閺脑O備。B設備檢測到A設備的連接后,對USB總線進行復位,同時開始對A設備進行復位操作。B設備進入主機模式工作,而A設備則進入從設備模式工作。在B設備作為主機完成了對USB總線的使用后,再一次通過HNP將USB主機地位還給A設備,操作過程類似。
4 系統(tǒng)功能仿真
本設計采用硬件描述語言Verilog HDL完成RTL(寄存器傳輸級)的描述。寄存器傳輸級是指在數(shù)字系統(tǒng)設計時,可以將數(shù)字系統(tǒng)簡單地看作是寄存器和寄存器之間的組合邏輯(cornbinational logic)。本設計使用Mentor公司的設計仿真軟件ModelSimSE進行功能仿真。應用Verilog HDL語言搭建測試平臺,通過仿真工具,設計者對各設計層次的設計模塊進行仿真,以確定這些設計模塊的功能和邏輯關系是否滿足設計要求。
在設計的驗證階段,將包含該設計的2個USB OTG IP核直連,并讓這2個IP核工作在不同的工作狀態(tài),即一個工作在A設備模式,另一個工作在B設備模式。這樣,A設備就可以作為B設備的激勵源,通過A設備發(fā)出一系列測試信號,比如向B設備發(fā)出復位信號以及SRP和HNP協(xié)議請求,發(fā)送SOF標志信號和配置信息等。然后觀察B設備是否對這些命令或者信號做出正確的響應。通過這樣的程序來驗證該IP核是否具有雙功能和對USB協(xié)議的支持情況。仿真的部分結(jié)果如圖2所示。
5 FPGA驗證
FPGA是一種可編程邏輯器件,可進行多次編程操作,使器件根據(jù)不同的需求實現(xiàn)不同的功能。隨著微電子技術的發(fā)展,FPGA的性能不斷提高,很多設計已經(jīng)完全可以由FPGA來完成。目前,在ASIC設計中一個重要的驗證手段就是通過FPGA進行硬件仿真,以保證設計的可靠性。FPGA芯片是整個驗證系統(tǒng)的核心,它包含了USB OTG IP核和相關的控制模塊。因為用Verilog語言來實現(xiàn)控制模塊的功能,所以將它和USB OTG IP核一起綜合然后下載到FPGA中進行測試。
FPGA選用AItera公司的Cyclone系列芯片,具體型號是EPlCl2Q240C8;物理層模擬部分選用Philips公司的產(chǎn)品ISPl301;存儲器SRAM選用ISSI公司的IS63LVl024―12J。復位電路用來產(chǎn)生上電復位信號,也可以在系統(tǒng)正常工作時,通過按鍵開關產(chǎn)生復位信號。此復位信號提供給USB IP核作為系統(tǒng)復位。系統(tǒng)的布局布線采用的是Altera公司的QHartusII 6.0。
驗證過程分成2個部分來分別驗證主機模式和設備模式。當USB 0TG IP核工作在主機模式時,直接用U盤與IP核進行連接,通過編寫的底層驅(qū)動可以識別出U盤。在完成對U盤的驅(qū)動后,成功地進行了數(shù)據(jù)傳輸,最后正確地斷開連接。當IP核工作在設備模式時,IP核作為USB從設備接入電腦主機的USB接口。通過安裝新的驅(qū)動,電腦主機可以識別出該USB設備,完成對該設備的驅(qū)動后,同樣可以正確地進行數(shù)據(jù)傳輸,并安全地移除該設備。驗證的結(jié)果表明,該USB 0TG IP核的主機和從設備功能均能正常工作,達到了預期的設計要求。
結(jié) 語
FPGA驗證的結(jié)果表明,USB OTG IP核在功能和時序上符合USB2.0標準和OTGl.Oa補充規(guī)范的協(xié)議要求,具備了主機功能和設備功能,達到了設計的預期目標。另外,完成的USB OTG IP核支持UTMI+接口,可以廣泛應用于包含USB功能的SoC開發(fā)。
評論