基于FPGA的USB接口IP核設(shè)計(jì)
USB總線上的數(shù)據(jù)首先通過UTM,進(jìn)行NRZI解碼和位剝離后,串并轉(zhuǎn)換為8位并行數(shù)據(jù),傳送給SIE中的UTMI或從UTMI接收8位并行數(shù)據(jù),經(jīng)過NRZI編碼和位填充后,發(fā)送到USB總線。由于USB系統(tǒng)采用NRZI編碼,對(duì)于一串0來說,它的數(shù)據(jù)線的電平狀態(tài)會(huì)按位跳變,對(duì)以一串l則不然,電平會(huì)長時(shí)間不變,可能導(dǎo)致數(shù)據(jù)接受方的時(shí)間同步漂移,為了避免漂移,每遇到6個(gè)1就在NRZI編碼之前加0,即位填充。
NRZI的vefilog實(shí)現(xiàn)代碼為: 本文引用地址:http://www.ex-cimer.com/article/202558.htm
2.2 串行接口引擎
串行接口引擎(Serial Interface Engine,SIE)主要由PL(Protocol Layer),MA(memory buffer arbiter),UTMI(UTM Interface)等組成。PD,PA,PE3個(gè)模塊組成了USB SIE的協(xié)議層(PL)。
UTMI(UTM Interface)是UTM和SIE的接口主要功能是檢測(cè)總線狀態(tài)以及識(shí)別總線速度。負(fù)責(zé)PL與UTM的數(shù)據(jù)交換。
PD將UTMI接收到的信息數(shù)據(jù)包進(jìn)行解析,解析出包標(biāo)識(shí)(PID)、端點(diǎn)地址和設(shè)備地址以及包含在包中的有效數(shù)據(jù)命令。在解碼時(shí),對(duì)PID進(jìn)行校驗(yàn),即PID[7:4]~PID[3:0],還要對(duì)必要的令牌包進(jìn)行CRC5校驗(yàn),對(duì)數(shù)據(jù)包進(jìn)行CRCl6校驗(yàn)。CRCl6,CRC5多項(xiàng)式為:x16+x15+x2+1和x5+x2+1。
設(shè)計(jì)中把命令解碼電路也設(shè)計(jì)在PD上,解碼電路的設(shè)計(jì)思路是:通過一個(gè)計(jì)數(shù)器將8 bit的命令數(shù)據(jù)分別存放在8個(gè):Register中,然后對(duì)Register進(jìn)行解碼,來判斷該條命令帶表的含義和執(zhí)行的操作。例如:Get Descriptor命令,主機(jī)發(fā)送的命令數(shù)據(jù)為8’ha0,8’h06,8’h00,8’h01,8’h00,8’h00,8’h4O,8’h00,然后解碼電路根據(jù)這8 bit來判斷命令的含義。如果主機(jī)發(fā)送命令有誤,或該設(shè)備不支持命令,則這條命令被忽略或返回NAK握手包。
PA根據(jù)PE(Protocol Engine)送來的PID組織相應(yīng)的信息包,把要發(fā)送的數(shù)據(jù)安排在相應(yīng)的數(shù)據(jù)包,或者令牌包。發(fā)送令牌包時(shí),不必產(chǎn)生CRC5校驗(yàn)位。在發(fā)送數(shù)據(jù)包寸,需要把有效數(shù)據(jù)的CRCl6校驗(yàn)位放在包末尾一起發(fā)送。
PE可以對(duì)IN,OUT以及Setup事務(wù)進(jìn)行單線程處理,且確定當(dāng)前傳輸事務(wù)要操作的端點(diǎn)地址,所有對(duì)MA和RF的當(dāng)前操作都基于這個(gè)端點(diǎn)地址。PE要根據(jù)當(dāng)前端點(diǎn)的配置或當(dāng)前狀態(tài)處理傳輸事務(wù),并在傳輸事務(wù)中實(shí)時(shí)更新控制/狀態(tài)寄存器CSR。SIE還能通過CSR中的中斷向量請(qǐng)求設(shè)備總線的控制支持。
3 系統(tǒng)仿真與實(shí)現(xiàn)
設(shè)計(jì)中包含了UTM,SIE,并根據(jù)協(xié)議寫出了含有設(shè)備描述符的ROM。這樣IP具有USB接口的功能,可以作為一個(gè)USB設(shè)備與主機(jī)進(jìn)行通信。根據(jù)USB協(xié)議,模擬主機(jī)動(dòng)作編寫Testbench,它主要由模擬主機(jī)數(shù)據(jù)包(Send Data),Stuffing檢測(cè),CRC校驗(yàn)檢錯(cuò)等來仿真。仿真波形,如圖5所示。
最后將電路用ASIC實(shí)現(xiàn)。采用0.35μm CMOS工藝實(shí)現(xiàn)后端設(shè)計(jì),數(shù)字電路采用單元庫自動(dòng)布線,模擬電路手工繪制版圖,并進(jìn)行DRC和LVS檢查,最終版圖預(yù)覽圖,如圖8所示,芯片面積為1.2 ms2;經(jīng)過后仿真得出:工作頻率為120 MHz,工作電流9 mA,靜態(tài)電流40μA。工作頻率可以實(shí)現(xiàn)高速USB協(xié)議的要求,功耗、電流等參數(shù)也符合設(shè)計(jì)要求。
本設(shè)計(jì)與國內(nèi)其他的研究結(jié)果進(jìn)行比餃,如表1所示。
從表1中對(duì)表可以看出,本設(shè)計(jì)在滿足頻率(FX8>480 MHz)的條件下,精簡(jiǎn)了多個(gè)單元,節(jié)省了資源,完全符合USB協(xié)議的要求。將IP下載到FPGA中與主機(jī)通信,主機(jī)能正確讀出設(shè)備描述符和正確完成其他操作,并在主機(jī)端顯示USB2.0 Device。進(jìn)一步證明了設(shè)計(jì)的正確性和實(shí)用性。
4 結(jié)束語
文中介紹了基于USB協(xié)議層模塊的設(shè)計(jì),最后在Modelsim6.0下仿真和ISE9.1進(jìn)行了綜合,采用Xilinx Spartan3E的XC3S1OOE進(jìn)行FPGA驗(yàn)證,并利用0.35μm CMOS工藝進(jìn)行系統(tǒng)的后端設(shè)計(jì)。實(shí)現(xiàn)了工作頻率120 MHz,功耗30 mW。
結(jié)果表明,設(shè)計(jì)的USB協(xié)議層模塊各功能達(dá)到了預(yù)期目標(biāo)、整體性能良好。此IP core可以廣泛應(yīng)用于各種USB設(shè)備接口、通信轉(zhuǎn)接器件,也可以集成在SOC中,作為系統(tǒng)芯片總線接口。文中設(shè)計(jì)的USB IP已成功地應(yīng)用于兩款USB設(shè)備端的接口控制芯片(USB轉(zhuǎn)PS/2接口IC和USB集線器IC),在實(shí)際應(yīng)用中性能可靠、速度穩(wěn)定,而且價(jià)格低廉。
評(píng)論