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