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