摘要: 重點(diǎn)闡述了USB接口IP核關(guān)鍵模塊的設(shè)計(jì)和驗(yàn)證,用VerilogHDL對USBIP核協(xié)議RTL級(jí)代碼編寫,對USB協(xié)議的數(shù)據(jù)流、傳輸?shù)冗M(jìn)行了深入的分析,在Xilinx ISE軟件平臺(tái)上進(jìn)行了FPGA綜合,并在Xilinx FPGA開發(fā)板上調(diào)試成功。通過在ModelSim6.0上仿真、ISE9.1上綜合并在FPGA開發(fā)板上驗(yàn)證,最后采用0.35μm CMOS工藝實(shí)現(xiàn)版圖設(shè)計(jì),工作頻率120 MHz,3.3 V電壓時(shí)工作電流9mA,靜態(tài)電流40μA。結(jié)果表明文中USB接口IP設(shè)計(jì)是可行的。
關(guān)鍵詞: IP;通用串行總線;VerilogHDL;協(xié)議層;SIE
USB(通用串行總線)作為一種外設(shè)連接技術(shù),是計(jì)算機(jī)外設(shè)連接技術(shù)的重大變革,USB具有速度快、通用性好、擴(kuò)展性強(qiáng)、功耗低、穩(wěn)定、易開發(fā)等眾多優(yōu)點(diǎn),在實(shí)踐中獲得了廣泛的應(yīng)用,逐步成為PC機(jī)的一種標(biāo)準(zhǔn)接口。USB接口控制芯片是實(shí)現(xiàn)USB設(shè)備與主機(jī)建立通信所必須的芯片,目前國內(nèi)的USB開發(fā)者所采用的芯片都是由國外的芯片商所提供,如Cypress、NEC、Motorola等大的IC設(shè)計(jì)公司,價(jià)格較貴。由于USB的廣泛應(yīng)用,國內(nèi)外眾多科研機(jī)構(gòu)和集成電路設(shè)計(jì)公司都把目光投向USB這項(xiàng)具有廣闊市場前景的技術(shù)。USB內(nèi)核(USB Core)是USB接口控制芯片的關(guān)鍵模塊,設(shè)計(jì)一個(gè)穩(wěn)定、高速的USB內(nèi)核更是芯片成功推向市場的前提。
1 USB通信原理
USB通信邏輯上分成了3層:信號(hào)層、協(xié)議層和數(shù)據(jù)層。信號(hào)層用來實(shí)現(xiàn)在USB設(shè)備和主機(jī)的物理連接之間傳輸位信息流的信息。邏輯層用來實(shí)現(xiàn)在USB設(shè)備和USB主機(jī)端的協(xié)議軟件之間傳輸包字節(jié)流的信息,它們在信號(hào)層被編碼成NRZI位信息后傳送出去。數(shù)據(jù)傳輸層用來實(shí)現(xiàn)在USB主機(jī)端的客戶端驅(qū)動(dòng)程序和設(shè)備端的功能接口之間傳輸有一定意義的信息,這些信息在協(xié)議層被打包成包格式。
1.1 傳輸?shù)幕締卧?/p>
包(Packet)是USB系統(tǒng)中信息傳輸?shù)幕締卧。結(jié)構(gòu),如圖1所示,根據(jù)USB規(guī)范,包的類型有:令牌包、數(shù)據(jù)包、握手包和專用包。
USB總線操作(通訊過程)都可以歸結(jié)為3種包的傳輸:令牌包、數(shù)據(jù)包和應(yīng)答包。任何操作都是從主機(jī)開始的,主機(jī)以預(yù)先排好的時(shí)序,發(fā)出一個(gè)描述操作類型、方向、外設(shè)地址以及端點(diǎn)號(hào),稱之為令牌包Foken Packet。然后由在令牌中指定的數(shù)據(jù)發(fā)送者發(fā)出一個(gè)數(shù)據(jù)包Data Packet或者報(bào)告它沒有數(shù)據(jù)可以傳輸。而數(shù)據(jù)的目的地一般要以一個(gè)應(yīng)答包Handshake Packet做出響應(yīng)表明傳輸是否成功。
1.2 事務(wù)處理
事務(wù)處理(Transaction)是指USB總線上數(shù)據(jù)信息的一次接收或發(fā)送的處理過程。事務(wù)處理的類型包括輸入事務(wù)、輸出事務(wù)、設(shè)置(Setup)事務(wù),幀開始(SOF),幀結(jié)束(EOF)等類型,下面以輸入事務(wù)處理為例加以介紹。
如圖2顯示了輸入事務(wù)處理中無差錯(cuò)事務(wù)情況,首先由主機(jī)向總線發(fā)出輸入令牌包通知某個(gè)設(shè)備向主機(jī)發(fā)送數(shù)據(jù);當(dāng)所指定的設(shè)備接收到此令牌包并檢驗(yàn)身份后,將準(zhǔn)備好的數(shù)據(jù)組裝成數(shù)據(jù)包向主機(jī)傳送出去;接著當(dāng)主機(jī)接收到的數(shù)據(jù)經(jīng)校驗(yàn)無差錯(cuò)后,創(chuàng)建一個(gè)ACK的握手包返回給設(shè)備通知主機(jī)已正確接收到數(shù)據(jù),然后進(jìn)行新的事務(wù)處理過程。若主機(jī)接收數(shù)據(jù)包錯(cuò)誤,則不發(fā)送ACK握手包,表示處理過程沒有成功;若設(shè)備未準(zhǔn)備好數(shù)據(jù),設(shè)備會(huì)向主機(jī)發(fā)送NAK握手包,提醒主機(jī)暫時(shí)不能發(fā)送數(shù)據(jù);若設(shè)備出錯(cuò),則返回主機(jī)STALL握手包通知設(shè)備出錯(cuò)。
1.3 總線傳輸
為了滿足不同外設(shè)和用戶的要求,USB提供了4種傳輸方式:控制傳輸、實(shí)時(shí)傳輸、中斷傳輸、批量傳輸。它們在數(shù)據(jù)格式傳輸方向數(shù)據(jù)包容量限制和總線訪問限制等方面有著各自不同的特征。
控制傳輸用來對設(shè)備進(jìn)行初始化和配置管理,所有USB設(shè)備必須直接控制傳輸,是總線傳輸中最復(fù)雜的傳輸方式;實(shí)時(shí)傳輸用來傳送音頻或視頻的數(shù)據(jù);中斷傳輸用來傳輸類似PCI或ISA總線上中斷信號(hào)的數(shù)據(jù);批量傳輸用于打印機(jī)或掃描儀等傳輸大塊數(shù)據(jù)的設(shè)備。
控制傳輸一般包括2或3個(gè)事務(wù)處理階段,即設(shè)置階段,數(shù)據(jù)階段(可選)和狀態(tài)階段。圖3給出了設(shè)置階段的細(xì)節(jié)。如果數(shù)據(jù)沒有正確接收設(shè)備就會(huì)忽略它,而且不返回應(yīng)答包。
作者:姚成宇,唐寧,汪洋 來源:電子技術(shù)