USB OTG的IP Core設(shè)計(jì)與FPGA驗(yàn)證
繼USB協(xié)議公布后,USB憑借其占用系統(tǒng)資源少、廉價(jià)、通用、可熱插拔等優(yōu)點(diǎn),成為通用的串行接口總線。當(dāng)前,絕大部分計(jì)算機(jī)外圍設(shè)備(如打印機(jī)、MP3、移動(dòng)硬盤(pán)等)均采用USB接口。但隨著USB接口應(yīng)用的普及,基于USBl.x和USB2.O規(guī)范的USB接口逐漸暴露其缺點(diǎn)。由于USB總線是主從式結(jié)構(gòu),且設(shè)備的主從特性在設(shè)備設(shè)計(jì)時(shí)就已經(jīng)固定,這樣就很不利于設(shè)備間點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸。這種以計(jì)算機(jī)為核心的數(shù)據(jù)傳輸結(jié)構(gòu),非常不利于USB總線在嵌入式行業(yè)的應(yīng)用,因?yàn)檫@些設(shè)備一般都要求具有與計(jì)算機(jī)通信的USB設(shè)備功能,同時(shí)也要求具有連接其他USB設(shè)備的主機(jī)功能。為了解決這一問(wèn)題,USB OTG規(guī)范作為USB2.O規(guī)范的補(bǔ)充出臺(tái)了。本文介紹一款USB OTG IP核的設(shè)計(jì)與實(shí)現(xiàn),該設(shè)備控制器可作為IP核用于SoC系統(tǒng)中,完成與主機(jī)控制器的通信,并能與普通的USB從設(shè)備進(jìn)行通信。
1 USB OTG的工作原理
OTGl.Oa補(bǔ)充規(guī)范對(duì)USB2.O進(jìn)行的最重要擴(kuò)展是其更具節(jié)能性、電源管理,并允許設(shè)備以主機(jī)和外設(shè)2種形式工作。OTG有兩種設(shè)備類(lèi)型:兩用OTG設(shè)備(dual―role 0TG device)和外設(shè)式OTG設(shè)備(peripher一al_only 0TG device)。兩用0TG設(shè)備完全符合USB2.O規(guī)范,同時(shí)提供有限的主機(jī)能力和一個(gè)Mini―AB插座,支持主機(jī)流通協(xié)議(IIost Negotiation Protocol,HNP)”。,且同外設(shè)式OTG設(shè)備一樣支持事務(wù)請(qǐng)求協(xié)議(SessionRequest Protocol,SRP)。當(dāng)作為主機(jī)工作時(shí),兩用0TG設(shè)備可在總線上提供8 mA的電流,而以往標(biāo)準(zhǔn)主機(jī)則需要提供100~500 mA的電流。2個(gè)兩用OTG設(shè)備連接在一起時(shí)可交替以主機(jī)和從機(jī)的方式工作,這個(gè)特點(diǎn)兼容了現(xiàn)有USB規(guī)范主機(jī)/外設(shè)的結(jié)構(gòu)模型。OTG主機(jī)負(fù)責(zé)初始化數(shù)據(jù)通信,比如總線復(fù)位、獲取各種USB描述符和配置設(shè)備。這些配置完成后,2個(gè)OTG設(shè)備便可分別以主機(jī)和從機(jī)方式傳輸信息,2個(gè)設(shè)備主從角色交換的過(guò)程由主機(jī)流通協(xié)議定義。
2 IP設(shè)計(jì)原理和IP模塊設(shè)計(jì)
USB 0TG控制器芯片按結(jié)構(gòu)分類(lèi),通常分為以下2種:
①專(zhuān)為USB OTG設(shè)計(jì)的芯片。這類(lèi)芯片集成了微控制器,是完全按照協(xié)議設(shè)計(jì)的,而不是在舊的結(jié)構(gòu)上增加功能。其結(jié)構(gòu)不同于其他常用控制芯片,開(kāi)發(fā)者需要較長(zhǎng)的學(xué)習(xí)時(shí)間,但是它能夠達(dá)到最優(yōu)化。
②需要外部微處理器的接口芯片。有些USB控制器只處理USB通信,而且必須由外部微處理器來(lái)控制。這種實(shí)現(xiàn)接口的標(biāo)準(zhǔn)組件使得使用者可以在各種不同類(lèi)型的微控制器中選擇一種最適合的微控制器,通過(guò)使用已有的結(jié)構(gòu)和減少固件上的投資來(lái)縮短開(kāi)發(fā)時(shí)間,減少開(kāi)發(fā)風(fēng)險(xiǎn)和費(fèi)用。但由于外接一個(gè)處理器,增加了電路的復(fù)雜性。
本文設(shè)計(jì)的USB OTG IP核采用第2種方式,所采用的處理器是Nios。根據(jù)對(duì)USB OTG規(guī)范的理解,USB0TG控制器應(yīng)該具有以下的功能:HNP和SRP協(xié)議的實(shí)現(xiàn),主機(jī)工作模式和設(shè)備工作模式。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
UTMI+接口需要外接一個(gè)符合USB 2.0 UTMI+協(xié)議的收發(fā)器。該芯片用作USB2.O接口的模擬前端,處理由USB2.O接口發(fā)出的高速和模擬信號(hào),對(duì)其發(fā)出的用NRZI方式編碼的數(shù)據(jù)進(jìn)行解碼、位填充等,并將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù);反之,該芯片對(duì)由本控制器發(fā)出的并行數(shù)據(jù)通過(guò)其內(nèi)部的差分驅(qū)動(dòng)電路進(jìn)行串行化、位填充和NRZI編碼,并輸出到USB電纜上。該接口模塊主要用于緩存發(fā)送和接收的數(shù)據(jù),確保與外圍收發(fā)芯片的無(wú)縫結(jié)合,以及掛起、恢復(fù)和復(fù)位的檢測(cè)。
OTG控制器實(shí)現(xiàn)USB OTG補(bǔ)充協(xié)議的功能。該模塊主要負(fù)責(zé)HNP、SRP的硬件實(shí)現(xiàn),以及連接狀態(tài)的檢測(cè)。
主機(jī)控制器實(shí)現(xiàn)IP核工作在主機(jī)模式的功能。該模塊主要產(chǎn)生掛起、恢復(fù)、復(fù)位信號(hào),主動(dòng)發(fā)送get_descip―tor、set_address、set_configuration等標(biāo)準(zhǔn)請(qǐng)求,并把請(qǐng)求變成對(duì)應(yīng)的USB數(shù)據(jù)包格式(比如TOKEN包加入PID、地址、端點(diǎn)和5位的CRC校驗(yàn)碼等);隔固定的時(shí)間向從設(shè)備發(fā)送SOF標(biāo)志,并根據(jù)配置的結(jié)果產(chǎn)生對(duì)應(yīng)的主機(jī)中斷。
設(shè)備控制器實(shí)現(xiàn)IP核工作在設(shè)備模式的功能。該模塊主要負(fù)責(zé)接收標(biāo)準(zhǔn)的USB請(qǐng)求,比如接收SOF標(biāo)志、IN標(biāo)志、OUT標(biāo)志等,并根據(jù)這些請(qǐng)求作出正確的響應(yīng)以及檢測(cè)復(fù)位、掛起信號(hào)。
控制狀態(tài)寄存器完成對(duì)IP核控制器內(nèi)部狀態(tài)的設(shè)置。它分成2種類(lèi)型:一種是基本的控制狀態(tài)寄存器,比如控制狀態(tài)寄存器(指定USB的速率模式、掛起模式、連接狀態(tài)、主從模式),設(shè)備地址寄存器(存放主機(jī)分配給USB設(shè)備的地址),中斷屏蔽寄存器(使能對(duì)應(yīng)中斷)和中斷源寄存器(Nios控制器通過(guò)讀此寄存器來(lái)判斷中斷類(lèi)型);另一種是端點(diǎn)寄存器控制狀態(tài)寄存器,如中斷源寄存器、中斷屏蔽寄存器、緩沖區(qū)的指針寄存器和大小寄存器,模塊中實(shí)現(xiàn)時(shí)根據(jù)輸入的地址和讀寫(xiě)信號(hào)來(lái)對(duì)某一個(gè)寄存器進(jìn)行相應(yīng)的讀寫(xiě)操作。
存儲(chǔ)器接口實(shí)現(xiàn)IP核內(nèi)部數(shù)據(jù)與Nios控制器數(shù)據(jù)的之間的仲裁。當(dāng)Nios控制器和IP核內(nèi)部同時(shí)對(duì)外部存儲(chǔ)器SRAM進(jìn)行讀寫(xiě)訪問(wèn)時(shí),必須對(duì)它們進(jìn)行數(shù)據(jù)的仲裁。默認(rèn)的優(yōu)先級(jí)為IP核內(nèi)部數(shù)據(jù)優(yōu)先級(jí)高于Nios控制器的數(shù)據(jù)優(yōu)先級(jí)。
Nios控制器接口實(shí)現(xiàn)USB IP核與外部微控制器(Nios)的數(shù)據(jù)通信。該接口符合Avalon總線規(guī)范,通過(guò)輸入地址的最高位來(lái)判斷Nios是對(duì)內(nèi)部寄存器進(jìn)行訪問(wèn)還是對(duì)SRAM存儲(chǔ)器進(jìn)行訪問(wèn),并完成地址、數(shù)據(jù)和相關(guān)信號(hào)的處理。
評(píng)論