一種高速USB設(shè)備控制器IP核的設(shè)計(jì)與實(shí)現(xiàn)
1 引言
為了滿足各種不同設(shè)備類型需求,USB2.0 規(guī)范在USB1.1 全速(12Mbps)及低速(1.5Mbps)的基礎(chǔ)上增加了高速(480Mbps)傳輸速率,同時(shí)為了兼容USB1.x 規(guī)范,高速設(shè)備在全速信號(hào)環(huán)境中必須以全速正常工作,即能夠在高/全速兩種信號(hào)環(huán)境中正確地進(jìn)行速率切換,這也加大了高速設(shè)備控制器的設(shè)計(jì)難度。本文通過(guò)分析USB2.0 協(xié)議, 利用VerilogHDL 實(shí)現(xiàn)了符合該規(guī)范的高速設(shè)備控制器IP 核,同時(shí)對(duì)設(shè)計(jì)中的幾個(gè)問(wèn)題加以討論并提出相應(yīng)的解決方案。
2 USB2.0 協(xié)議
包(Packet)是USB 傳輸?shù)淖钚挝?。每個(gè)數(shù)據(jù)包的開(kāi)始都有同步頭(SYNC)以及相應(yīng)的包標(biāo)示符(PID),包的結(jié)尾處都有包結(jié)束符(EOP)。在全/低速信號(hào)環(huán)境中,SYNC 長(zhǎng)度為8 個(gè)時(shí)鐘周期(對(duì)應(yīng)一個(gè)字節(jié)01h),EOP 為2 個(gè)時(shí)鐘周期的單端0 (singleend,SE0)。而在高速信號(hào)環(huán)境中,除了新添加了幾個(gè)信息包PID,以及同步頭、EOP 分別增加到4 個(gè)字節(jié)長(zhǎng)度和1 個(gè)字節(jié)(有個(gè)例外, 就是SOF 后面的EOP 可以到4 字節(jié))長(zhǎng)度以外,為保證包中數(shù)據(jù)的正確性而進(jìn)行的PID 互補(bǔ)校驗(yàn)以及數(shù)據(jù)字段的CRC 校驗(yàn)都沒(méi)有變化。
USB 傳輸(Transfer)是通過(guò)一個(gè)或者多個(gè)包含一系列數(shù)據(jù)包的事務(wù)(transaction)完成的,事務(wù)的格式示意圖如圖1(a)所示。令牌數(shù)據(jù)包定義傳輸類型、目標(biāo)設(shè)備地址、端點(diǎn)號(hào)碼以及數(shù)據(jù)傳輸方向,如圖1(b);數(shù)據(jù)階段的數(shù)據(jù)包裝載長(zhǎng)度與傳輸類型相關(guān)的數(shù)據(jù),如圖1(c);握手應(yīng)答包(在同步傳輸中沒(méi)有)定義該次事務(wù)的結(jié)果, 視接收情況分為4 種:ACK、NAK、STALL、NYET,分別表示數(shù)據(jù)成功接受、設(shè)備忙、設(shè)備(端點(diǎn))不可用、還沒(méi)有足夠的緩存空間接受下一個(gè)數(shù)據(jù)包。
每一個(gè)USB 設(shè)備的端點(diǎn)都有其特定的屬性標(biāo)明如何訪問(wèn)它,每一種傳輸類型也都和具體的應(yīng)用要求相聯(lián)系。為了支持各種設(shè)備類型,USB 規(guī)范提供中斷(interrupt) 傳輸、塊(bulk) 傳輸和同步(isochronous) 傳輸以滿足不同的應(yīng)用要求??刂疲╟ontrol)傳輸基本用于主機(jī)(HOST)對(duì)設(shè)備進(jìn)行配置以及下達(dá)各種命令,且有專門(mén)的PID 標(biāo)示。因高速環(huán)境中總線帶寬大大的提升,所以包的數(shù)據(jù)字段的有效載荷都相應(yīng)的加大了。不過(guò)對(duì)于任何高速設(shè)備來(lái)說(shuō),首先都是以全速設(shè)備出現(xiàn),如果其復(fù)位時(shí)發(fā)出握手信號(hào)(線性調(diào)頻脈沖)主機(jī)端應(yīng)答成功,則斷開(kāi)上拉電阻而進(jìn)入高速模式。
3 設(shè)備控制器核的設(shè)計(jì)與實(shí)現(xiàn)
3.1 設(shè)計(jì)思想
目前USB 設(shè)備端控制器的實(shí)現(xiàn)主要有兩種方式:一是全集成芯片,如專用的微處理器(MCU)內(nèi)嵌符合USB 規(guī)范的SIE(Serial Interface Engine);二是部分集成芯片,如分立的通用微處理器+SIE。前者涉及到要開(kāi)發(fā)專用的MCU,開(kāi)發(fā)時(shí)間長(zhǎng)、風(fēng)險(xiǎn)大;后者集成度雖低,但不需專門(mén)設(shè)計(jì)MCU,極大地縮短了開(kāi)發(fā)時(shí)間和風(fēng)險(xiǎn)性,同時(shí)應(yīng)用時(shí)具有更大靈活性。考慮設(shè)計(jì)開(kāi)發(fā)時(shí)間、設(shè)計(jì)工作量及應(yīng)用測(cè)試等因素,本設(shè)計(jì)采用第二種方式(外置通用MCU),完成設(shè)備控制器整個(gè)數(shù)字部分IP 核的設(shè)計(jì)。
設(shè)計(jì)完成的IP 核實(shí)現(xiàn)了控制,中斷,批量,同步四種模式傳輸,同時(shí)根據(jù)總線信號(hào)環(huán)境自動(dòng)完成高/全速轉(zhuǎn)換。為了降低MCU 的開(kāi)發(fā)難度,精簡(jiǎn)內(nèi)部的中斷產(chǎn)生, 自動(dòng)實(shí)現(xiàn)數(shù)據(jù)重傳而不需要MCU 的任何干預(yù)。
3.2 模塊劃分及具體實(shí)現(xiàn)
該USB 設(shè)備控制器的邏輯功能框圖如圖2(a)所示。SIE(串行接口引擎)為該設(shè)計(jì)的核心。設(shè)備在接收數(shù)據(jù)時(shí), 對(duì)NRZI 數(shù)據(jù)流進(jìn)行解碼并提交數(shù)據(jù)及其接收情況;發(fā)送數(shù)據(jù)時(shí)生成相應(yīng)的數(shù)據(jù)PID 并進(jìn)行NRZI 編碼發(fā)送出去。為了更好地實(shí)現(xiàn)整個(gè)控制邏輯,把整個(gè)設(shè)備端控制器核劃成6 大塊:物理層PHY,收發(fā)器宏單元接口UTMI,協(xié)議層PL,存儲(chǔ)接口仲裁MIA , 內(nèi)部狀態(tài)控制寄存器CSR 以及端點(diǎn)存儲(chǔ)DPRAM,如圖2(b)所示。
3.2.1 PHY
由USB2.0 協(xié)議規(guī)范可知, 高速設(shè)備控制器必須能在高/全速信號(hào)環(huán)境之間正確切換, 因此PHY必須能夠根據(jù)工作模式確定其信號(hào)環(huán)境;其次必須進(jìn)行高速480M/全速12 MHz 的NRZI 數(shù)據(jù)流解碼、編碼工作及其相應(yīng)的串并、并串轉(zhuǎn)換。設(shè)計(jì)中PHY使用了Philips 的ISP1501, 因此該部分?jǐn)?shù)模混合設(shè)計(jì)不做介紹,ISP1501 的詳情請(qǐng)參考文獻(xiàn)。
3.2.2 UTMI
UTMI 控制suspend/resume 的產(chǎn)生以及生成全/高速之間切換的模式信號(hào), 由于ISP1501 的數(shù)據(jù)線寬度為16 bits,一次處理一個(gè)字(1 word=2 bytes),故還要起到PHY 與協(xié)議層(PL)之間數(shù)據(jù)交換的緩沖作用。內(nèi)部框架如圖3 所示。速度協(xié)商控制(SNC)為該模塊的核心。
評(píng)論