《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 內嵌8051的USB 2.0設備控制器IP設計
內嵌8051的USB 2.0設備控制器IP設計
來源:微型機與應用2012年第17期
陳 亮,,袁志堅,,史大龍,,黃 魯
(中國科學技術大學 電子科學與技術系 集成電路實驗室,,安徽 合肥 230027)
摘要: 基于USB 2.0協(xié)議規(guī)范提出了一個USB 2.0設備控制器串行接口引擎SIE的IP核的設計,并內嵌8051軟核作為其微控制器進行SoC設計,。所設計的SIE核在FPGA開發(fā)板上經過驗證,。
Abstract:
Key words :

摘  要: 基于USB 2.0協(xié)議規(guī)范提出了一個USB 2.0設備控制器串行接口引擎SIE的IP核的設計,,并內嵌8051軟核作為其微控制器進行SoC設計,。所設計的SIE核在FPGA開發(fā)板上經過驗證,。
關鍵詞: 串行接口引擎;通用串行總線,;片上系統(tǒng),;微控制器

 憑借著每年超過20億新單元的安裝速度,通用串行總線USB(Universal Serial Bus)如今已成為最為流行的計算機接口,。只要與計算機打交道,,人們的日常生活已經離不開USB端口,通過它們人們可與鼠標、鍵盤,、掃描儀,、數(shù)碼相機、手機和平板電腦等人們想象的到的設備相連接,。USB憑借可靠,、高速、方便和省電的優(yōu)點,,已經廣泛得到主要的操作系統(tǒng)的支持。
 目前大多數(shù)的USB設計都是進行系統(tǒng)集成,,采用現(xiàn)成商用的USB芯片進行開發(fā),,并沒有涉及到對IP核的設計與開發(fā)。本文通過分析USB 2.0協(xié)議,,使用Verilog HDL 硬件描述語言設計實現(xiàn)了一個USB 2.0設備控制器串行接口引擎SIE(Serial Interface Engine)核,,選取MC8051軟核作為其微控制器,并通過Wishbone片上總線進行連接,。
1 USB 2.0設備控制器系統(tǒng)設計
1.1 系統(tǒng)設計

 根據(jù)USB 2.0設備控制器所要實現(xiàn)的功能,,本系統(tǒng)采用自頂向下(Top-to-Down)的設計結構,將設備控制器劃分為7個主要功能模塊:物理層收發(fā)器(USB PHY),、UTMI接口,、協(xié)議層PL(Protocol Layer)、RAM緩沖區(qū),、存儲器接口和仲裁器,、控制和狀態(tài)寄存器及功能總線接口。
 USB 2.0 IP核結構框圖如圖1所示,。SIE部分的SSRAM,、功能總線接口、PHY模塊為可更改的,,通過對相應模塊的更改可使本IP滿足不同應用的需求,。最下面接口用于連接微控制器)。

 由于USB 2.0串行總線上最高速率高達480 MHz,,遠高于Standard Cell電路的處理能力,,因此需要全定制的Transceiver來進行數(shù)據(jù)恢復。PHY的主要作用是將接收來的差分信號進行NAZI編碼和位填充[2],。
1.2 各模塊具體實現(xiàn)
 UTMI接口是與PHY相連接的接口模塊,,它并不對輸入和輸出的數(shù)據(jù)進行處理,主要用于控制總線掛起/恢復模式和全速/高速模式的切換,。
 協(xié)議層PL是USB設備控制器中最核心的模塊,,它負責所有的USB數(shù)據(jù)I/O和通信的控制,其中包括DMA和內存接口、協(xié)議引擎PE(Protocol Engine),、組包PA(Packet Assembly)和解包PD(packet Disassembly)幾個子模塊,。PL內部框架如圖2所示。

 PA和PD模塊分別是對USB包進行裝配和拆分,。DMA和內存接口是PE模塊到內存的接口,,它提供了直接的內存訪問(Direct Memory Access)和DMA塊傳輸。協(xié)議引擎PE是PL中的核心模塊,,PE處理所有標準USB協(xié)議握手和控制通信,,包括SOF標記、應答(ACK,、NACK和NYET)以及對PING標記的回答,。PE模塊將端點控制狀態(tài)寄存器(CSR)的值解碼成內部控制信號線,將端點緩沖區(qū)(Buffer)寄存器EP_BUF的值解碼成Buffer的大小和指針,。圖3描述了PE核心的基本操作,。USB設備總是等待一個來自USB總線主機的標記包,才開始執(zhí)行其他的操作,。一旦接收到標記包,,解包模塊將對其解碼,PE執(zhí)行合適的操作,。USB主循環(huán)根據(jù)標記包的不同將操作分為特殊包處理,、Setup循環(huán)、IN數(shù)據(jù)循環(huán)和OUT數(shù)據(jù)循環(huán),。
 存儲器接口和仲裁器實際上就是一個2選1的選擇器,,選擇SRAM與Wishbone總線(及連接微控制器)還是SRAM與PL層的DMA內存接口連接。

2 微控制器模塊
2.1 MC8051主要特性

 在USB的通信過程中,,微控制器主要用來處理各種中斷,,識別主機發(fā)送的是何種請求,返回相應的數(shù)據(jù),,從而完成設備的枚舉和之后的數(shù)據(jù)傳輸,。本設計采用了MC8051的IP軟核,該IP滿足USB對微控制器功能的要求,。通過修改MC8051中的固件(Firmware)來對SIE的寄存器進行配置,,以實現(xiàn)USB 2.0設備控制器不同的功能。
2.2 8051與USB 2.0 IP核的連接
 由于SIE與MC8051使用不同的時鐘域(SIE使用PHY提供的60 MHz時鐘,,而MC8051使用自身的時鐘),,并且MC8051是個通用的IP核,其接口并沒有采用本USB 2.0 IP核的Wishbone兼容接口,,而且MC8051是個8 bit的通用MCU(處理數(shù)據(jù)寬度是8 bit),,因此MC8051和本USB 2.0 IP核不能直接相連,。
 本文設計了一個與Wishbone總線兼容的接口轉換模塊,以使MC8051能正確地連接在Wishbone總線上,,完成與SIE的數(shù)據(jù)傳輸,。轉換模塊主要實現(xiàn)了跨時鐘域的數(shù)據(jù)傳輸、數(shù)據(jù)位數(shù)轉換(8 bit到32 bit和32 bit到8 bit)以及Wishbone總線兼容信號的加入,。實際上完成了一個異步FIFO的功能,,但比FIFO使用起來更加靈活,因為8051執(zhí)行每條指令會有一定的指令延時,,如果使用FIFO,,很難保證SIE可以正確的接收到數(shù)據(jù)??鐣r鐘域的數(shù)據(jù)傳輸主要體現(xiàn)在SIE和微控制器之間,,SIE主要使用PHY提供的60 MHz的時鐘,而微控制器MC8051的工作頻率不超過40 MHz,。為了防止跨時鐘域的數(shù)據(jù)傳輸容易產生的亞穩(wěn)態(tài),在接口轉換模塊里采用了“超前送數(shù)”的策略,,即MCU讀寫命令在有效信號到達之前把數(shù)據(jù)放入三態(tài)數(shù)據(jù)端口寄存,,讀寫信號到達之后進行數(shù)據(jù)傳輸。
 微控制器與SIE之間的數(shù)據(jù)交換可以分為寫入地址與數(shù)據(jù)和寫地址并讀數(shù)據(jù)兩種方式,,分別對應著USB固件中兩種最基本的命令函數(shù),。連接轉換模塊通過狀態(tài)機來進行控制,接收到數(shù)據(jù)后隨即進行數(shù)據(jù)和地址的轉換,,并將轉換好的數(shù)據(jù)和地址存入寄存器中,。轉換完成后進入WE狀態(tài),進行判斷,。如進行寫入地址與數(shù)據(jù)則進入到WE_AD狀態(tài),,該狀態(tài)會將Wishbone總線的控制位CYC、STB和WE置高同時輸出轉換好的地址與數(shù)據(jù),;寫地址并讀數(shù)據(jù)則進入WE_A,,該狀態(tài)將控制位CYC與STB置高,WE為低表示讀過程,,同時輸入要讀數(shù)據(jù)的地址,,WE_A過后就進入RE_DATA讀取數(shù)據(jù)并輸出。
 數(shù)據(jù)位數(shù)轉換的原理實際上很簡單,,采用標志位對其進行區(qū)分,,如圖4所示。其中,,WE是寫入信號,,低電平有效,;flag為2 bit的標志位;done是轉換完成信號,;datain和dataout分別是8 bit輸入信號和轉換好的32 bit輸出信號,。8 bit轉32 bit的過程為:在flag為00、01,、10,、11每段分別向datain中寫入1個8 bit數(shù)據(jù),最先寫入的為低8 bit,,然后是次8 bit,,依次寫完。等到done信號置高后,,再按照Wishbone總線數(shù)據(jù)的操作方式進行傳輸,。32 bit數(shù)據(jù)轉8 bit與該過程相反。

 該連接模塊已成功通過FPGA驗證,,能夠正確轉換與傳輸數(shù)據(jù),。
3 系統(tǒng)驗證
3.1 FPGA驗證環(huán)境搭建

 本文選用Xilinx公司的Virtex-II Pro FPGA開發(fā)板作為驗證USB 2.0 SIE核的平臺。選用Cypress公司的CY7C68000芯片作為前端的收發(fā)器(PHY),,將USB總線上480 MHz的串行數(shù)據(jù)流轉換成8 bit 60 MHz的并行數(shù)據(jù),。系統(tǒng)測試平臺架構如圖5所示。

 

 

 CY7C68000與FPGA開發(fā)板之間采用100腳Hirose FX2擴展插槽相連接,,該接口有LVCMOS25的HS_CLKIN高速時鐘輸入的接口來作為收發(fā)器PHY_CLK 60 MHz時鐘的引入,。緩沖區(qū)使用ISE軟件自帶的RAM IP核。本設計使用ISE 10.1.03對USB SIE模塊綜合后的FPGA資源使用情況為:Slices數(shù)為1 718個,,Slice Flip Flops數(shù)為1 801個,,4輸入LUT數(shù)為2 885,最大時鐘頻率為127.583 MHz,,滿足了USB 2.0設備控制器工作所需的60 MHz時鐘要求,。
3.2 結果和分析
 將程序下載到FPGA實驗板上后,將收發(fā)器CY7C68000連到主機,,主機馬上會出現(xiàn)一個“檢測到新硬件”的消息,。這表示設備枚舉過程的完成,枚舉就是從設備讀取一些信息,,了解是什么樣的設備,,如何進行通信,這樣主機就可以根據(jù)這些信息來加載合適的驅動程序,。枚舉過程屬于控制傳輸,,一般分為3個階段,具體過程如下,。
?。?)建立階段,。建立階段如圖6所示,USB主機首先發(fā)送來一個SETUP令牌包,,PID為0x2d,,設備地址為0x00,端點0x10(控制端點),。后面緊跟一個數(shù)據(jù)包,,PID為0xc3是DATA0的數(shù)據(jù)包,后面的數(shù)據(jù)0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00表示這是一個Get_Descriptor標準設備請求的數(shù)據(jù)包,。USB設備收到并檢測無誤之后會返回一個ACK(PID為0xd2)握手包告訴主機已收到數(shù)據(jù),。
 (2)數(shù)據(jù)階段,。主機會發(fā)出一個IN包,,如圖7所示,PID為0x69,,設備收到IN包后用數(shù)據(jù)包DATA1(PID為0x4b)返回它自己的設備描述符,,描述符里有該設備自身特性的信息。主機收到數(shù)據(jù)包后會返回一個ACK握手包(PID為0xd2),,表示數(shù)據(jù)接收正確,。

 (3)狀態(tài)階段,。主機會發(fā)出OUT包,,但與數(shù)據(jù)階段不同,,狀態(tài)階段所發(fā)數(shù)據(jù)包內容為空,。設備收到數(shù)據(jù)包后返回一下ACK握手包表示枚舉過程的結束。
 本文提出的USB 2.0設備控制器IP的架構具有強的實用性和復用性,。它既可以作為單獨的設備芯片使用,,也可與其他IP一起進行SoC設計,只需在片上總線上添加相應的模塊,。單獨設計的接口轉換模塊成功完成內嵌8051微控制器核的設計,,也可以利用該模塊外接一個51系列微控制器,具有很強的靈活性,。在操作系統(tǒng)上添加相應的驅動程序即可進行數(shù)據(jù)傳輸?shù)膶嶒灐?br /> 參考文獻
[1] Universal serial bus specification(Rev 2.0)[S]. www.usb.org,, 2002.4.
[2] USB 2.0 transceriver macrocell interface(UTMI) Specification (Version 1.05)[S].2001.3.
[3] 周立功.USB 2.0與OTG規(guī)范及開發(fā)指南[M].北京:北京航空航天大學出版社,2004.
[4] AXELSON J.USB開發(fā)大全[M].北京:人民郵電出版社,,2011.

此內容為AET網(wǎng)站原創(chuàng),,未經授權禁止轉載。