《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于UTMI協(xié)議的USB2.0收發(fā)器邏輯電路設(shè)計(jì)
基于UTMI協(xié)議的USB2.0收發(fā)器邏輯電路設(shè)計(jì)
2014年微型機(jī)與應(yīng)用第10期
王 永1, 白雪飛1, 方 毅2
1. 中國科學(xué)技術(shù)大學(xué) 電子科學(xué)與技術(shù)系, 2. 中國科學(xué)技術(shù)大學(xué) 信息科學(xué)實(shí)驗(yàn)中心,安徽
摘要: 通用串行總線USB(Universal Serial Bus)以其簡單易用、連接靈活、高帶寬等特點(diǎn)已經(jīng)成為計(jì)算機(jī)連接外部設(shè)備最常用的一種方式[1]。如今,越來越多專用集成電路(ASIC)和嵌入式系統(tǒng)都內(nèi)置了USB接口。很多公司采用其他公司生產(chǎn)的收發(fā)器(USB2.0 transceiver)IP核,再配合其他自行設(shè)計(jì)的電路模塊來進(jìn)行相關(guān)產(chǎn)品的開發(fā)。本文在SMIC 0.13 ?滋m CMOS工藝下采用Verilog HDL描述電路,通過仿真、綜合、布局布線等流程完成收發(fā)器電路設(shè)計(jì)。
關(guān)鍵詞: USB2.0 收發(fā)器 UTMI 集成電路
Abstract:
Key words :

 摘  要UTMI定義了USB2.0底層信號的物理約束,為實(shí)現(xiàn)USB2.0高速(480 Mb/s)通信提供了可靠的保障。實(shí)現(xiàn)了協(xié)議中串/并轉(zhuǎn)換、位填充/剔除、非歸零編解碼等內(nèi)容,并在SMIC 0.13 ?滋m CMOS工藝庫下完成了收發(fā)器電路設(shè)計(jì)。仿真結(jié)果顯示,該收發(fā)器設(shè)計(jì)功能正確,滿足協(xié)議要求。 

關(guān)鍵詞: USB2.0; 收發(fā)器; UTMI

       通用串行總線USB(Universal Serial Bus)以其簡單易用、連接靈活、高帶寬等特點(diǎn)已經(jīng)成為計(jì)算機(jī)連接外部設(shè)備最常用的一種方式[1]。如今,越來越多專用集成電路(ASIC)和嵌入式系統(tǒng)都內(nèi)置了USB接口。很多公司采用其他公司生產(chǎn)的收發(fā)器(USB2.0 transceiver)IP核,再配合其他自行設(shè)計(jì)的電路模塊來進(jìn)行相關(guān)產(chǎn)品的開發(fā)。本文在SMIC 0.13 ?滋m CMOS工藝下采用Verilog HDL描述電路,通過仿真、綜合、布局布線等流程完成收發(fā)器電路設(shè)計(jì)。

       1 UTMI整體結(jié)構(gòu)

       USB收發(fā)器在USB總線中的位置處于各種USB設(shè)備與USB總線的接口處。它的作用是處理USB物理層的協(xié)議和信號,其中接收部分接收USB總線上的串行數(shù)據(jù),經(jīng)過NRZI(Not Return to Zero Inverse)編碼、“0”比特剔除,最后轉(zhuǎn)成并行數(shù)據(jù)后交給串行接口引擎SIE(Serial Interface Engine);發(fā)送部分完成相反的操作,接收SIE的并行數(shù)據(jù),經(jīng)過并/串轉(zhuǎn)換、“0”比特添加、NRZI編碼后發(fā)送給USB總線[2]。

`WQY2$9W$}USBGFFRA[M}W1.jpg

       圖1所示為USB2.0收發(fā)器的功能框圖,主要完成的功能為:

       (1) 支持480 Mb/s高速、12 Mb/s全速兩種不同的數(shù)據(jù)傳輸速率。

       (2) 同步字包頭SYNC(Synchronization)/包尾EOP(end of Packe)產(chǎn)生和檢測、比特填充/去填充、比特填充錯(cuò)誤檢測、非歸零編碼等。

       (3) 能夠在高速和全速終端/信號之間切換,支持USB2.0測試模式。

       (4) 支持USB協(xié)議中喚醒、掛起檢測、恢復(fù)邏輯等檢測。

       從中可以看出,收發(fā)器是一塊具有一定復(fù)雜度的數(shù)/模混合電路。設(shè)計(jì)時(shí)將數(shù)字電路和模擬電路分開,分成以下三部分:

       (1) 數(shù)字邏輯部分。該部分完成串/并、并/串轉(zhuǎn)換,比特填充/去填充以及相應(yīng)的發(fā)送與接收狀態(tài)機(jī)等協(xié)議的邏輯功能,這也是本文所要闡述的電路設(shè)計(jì)內(nèi)容。

       (2) 時(shí)鐘產(chǎn)生與數(shù)據(jù)恢復(fù)電路。其功能是產(chǎn)生本地高速時(shí)鐘,并從USB總線的串行數(shù)據(jù)流中恢復(fù)出時(shí)鐘和數(shù)據(jù),以便于后級電路進(jìn)行相應(yīng)的操作。

       (3) 發(fā)送與接收接口部分電路。USB總線有比較嚴(yán)格的電氣特性要求,比如USB高速信號是±400 mV的差分信號,對地電阻為45 ?贅,還有電纜斷連檢測、squelch檢測等,這些電氣特性要求均由模擬接口電路實(shí)現(xiàn)[3]。

       2 模塊設(shè)計(jì)

       2.1發(fā)送電路模塊

      根據(jù)UTMI規(guī)范的功能要求,USB收發(fā)器的發(fā)送部分應(yīng)該包括并/串轉(zhuǎn)換、比特“0”填充、非歸零編碼以及發(fā)送控制狀態(tài)機(jī)四部分。四部分的關(guān)系如圖1中發(fā)送部分(Tx)所示。

      比特“0”填充規(guī)則為:對發(fā)送的串行數(shù)據(jù)進(jìn)行“111111”序列檢測,每檢測到6個(gè)連續(xù)的“1”序列后,在該序列后插入一個(gè)比特“0”。NRZI編碼規(guī)則為:邏輯“1”用電平的不變來表示,邏輯“0”用電平的翻轉(zhuǎn)來表示。比特“0” 插入與NRZI編碼配合使用,可以有效防止傳輸?shù)臄?shù)據(jù)中出現(xiàn)連續(xù)的沒有電平變化的序列,避免導(dǎo)致接收部分PLL(Phase Locking Loop)時(shí)鐘失鎖的情況出現(xiàn)。

      串行數(shù)據(jù)中插入填充比特,會(huì)使發(fā)送的數(shù)據(jù)多于要發(fā)送的數(shù)據(jù)。為了平衡比特插入前后的數(shù)據(jù)個(gè)數(shù)偏差,設(shè)計(jì)時(shí)在串行數(shù)據(jù)中每插入8個(gè)“0”后,使發(fā)送狀態(tài)機(jī)輸出TXready為低電平,讓SIE等待一個(gè)時(shí)鐘周期,即8 bit串行數(shù)據(jù)的時(shí)間(因?yàn)镾IE的時(shí)鐘為60 MHz,串行數(shù)據(jù)速率為480 MHz。8 bit串行數(shù)據(jù)的傳輸時(shí)間正好等于一個(gè)并行數(shù)據(jù)的傳輸時(shí)間)。在本文的電路設(shè)計(jì)中,比特“0”插入操作使用了兩個(gè)計(jì)數(shù)器,其中一個(gè)對串行數(shù)據(jù)中連續(xù)“l(fā)”進(jìn)行計(jì)數(shù),用來檢測“111111”序列;另一個(gè)對已經(jīng)插入到串行數(shù)據(jù)的“0”進(jìn)行計(jì)數(shù),這兩個(gè)計(jì)數(shù)器都采用移位計(jì)數(shù)器來實(shí)現(xiàn)。發(fā)送電路比特填充和數(shù)據(jù)平衡的實(shí)現(xiàn)如圖2所示[4]。

4{I~}98)~D2TXMCM8G(9L{U.jpg

XJ}~_CG[~F{D[DZ8]RH@D82.jpg

       發(fā)送部分的狀態(tài)轉(zhuǎn)移圖如圖3所示。復(fù)位進(jìn)入Reset態(tài),復(fù)位結(jié)束后進(jìn)入TX Wait態(tài)等待TXValid信號的到來,當(dāng)收發(fā)器接收到SIE發(fā)送數(shù)據(jù)的指令時(shí)(即TXValid信號為高電平),進(jìn)入Send SYNC態(tài),發(fā)送電路開始發(fā)送傳輸數(shù)據(jù)包的包頭,即同步字SYNC。全速數(shù)據(jù)包的SYNC字為8 bit的“KJKJKJKK”序列,高速數(shù)據(jù)包的SYNC字為32 bit的“KJKJKJK…JKJKJKK”序列,序列中的“K”對應(yīng)于USB差分信號“DP邏輯低電平,DM邏輯高電平”的總線狀態(tài),序列中的“J”對應(yīng)于 “DP邏輯高電平,DM邏輯低電平”的總線狀態(tài)。同步字發(fā)送完成之后,進(jìn)入Data Load態(tài)且置TXready為高電平,收發(fā)器開始從SIE讀取8 bit的并行數(shù)據(jù)到Hold Reg中,當(dāng)Hold Reg中的數(shù)據(jù)沒有被shift reg讀取時(shí),狀態(tài)機(jī)將會(huì)跳轉(zhuǎn)到Data Wait態(tài);當(dāng)shift reg中的數(shù)據(jù)做完并/串轉(zhuǎn)換, Hold Reg中的數(shù)據(jù)會(huì)被shift reg讀取,此時(shí)狀態(tài)跳轉(zhuǎn)到Data Load態(tài)。當(dāng)收發(fā)器檢測到SIE停止發(fā)送數(shù)據(jù)的指令(TXValid信號為低電平),狀態(tài)機(jī)進(jìn)入Send EOP態(tài),開始發(fā)送EOP數(shù)據(jù)且置TXready為低電平, 全速數(shù)據(jù)包的EOP為總線上2 bit的“SE0” (“SE0”對應(yīng)于USB差分信號“DP和DM均為邏輯低電平”的總線狀態(tài))狀態(tài)以及其后1 bit的“J”狀態(tài),高速數(shù)據(jù)包的EOP為8 bit的“01111111”數(shù)據(jù)序列,這個(gè)數(shù)據(jù)序列沒有像正常發(fā)送過程的數(shù)據(jù)一樣進(jìn)行比特“0”插入操作,以便區(qū)別于一般的數(shù)據(jù)。當(dāng)EOP發(fā)送完,狀態(tài)機(jī)進(jìn)入TX Wait態(tài),否則停留在Send EOP態(tài)繼續(xù)發(fā)送EOP數(shù)據(jù)。      

       2.2 接收電路模塊

      收發(fā)器的接收電路與發(fā)送電路相反,將數(shù)據(jù)從總線上的差分信號中提取出來,交給USB SIE進(jìn)行后續(xù)的協(xié)議處理。這部分電路包括NRZI解碼、比特“0”去除、串/并轉(zhuǎn)換以及一個(gè)接收狀態(tài)機(jī)。這部分的相互關(guān)系如圖1中接收部分(Rx)所示。接收部分的狀態(tài)轉(zhuǎn)移圖如圖4所示。

WZI2VSSK`MGZBU(`[IWYXUV.jpg

       復(fù)位進(jìn)入Reset態(tài),復(fù)位結(jié)束后進(jìn)入RX Wait態(tài),開始同步字SYNC檢測,若未檢測到同步字,則在原狀態(tài)循環(huán);當(dāng)檢測到同步字后進(jìn)入Strip SYNC態(tài),同時(shí)使 RXactive 有效,由于高速SYNC有32 bit,所以在Strip SYNC態(tài)會(huì)維持?jǐn)?shù)個(gè)時(shí)鐘周期。當(dāng)SYNC檢測完畢并抓到第一個(gè)字節(jié)后,跳轉(zhuǎn)到RX Data態(tài)。由于去比特填充造成數(shù)據(jù)速率的下降,使得狀態(tài)在RX Data和RX Data Wait之間跳轉(zhuǎn),每次去掉8個(gè)填充位后,狀態(tài)機(jī)跳到RX Data Wait態(tài),同時(shí)拉低RXvalid信號。

      當(dāng)檢測到錯(cuò)誤時(shí),進(jìn)入Error態(tài),如果此時(shí)數(shù)據(jù)線DP和DM上已經(jīng)沒有數(shù)據(jù)傳輸了,則進(jìn)入Abort1態(tài),再直接跳轉(zhuǎn)到RX Wait態(tài);如果此時(shí)數(shù)據(jù)總線DP和DM上還有數(shù)據(jù)在傳輸,則跳轉(zhuǎn)到Abort2態(tài),直到數(shù)據(jù)總線上的數(shù)據(jù)傳輸完才跳到Terminate態(tài),再直接跳轉(zhuǎn)到RX Wait態(tài)。

      去比特“0”填充的過程就是將發(fā)送過程中插入到數(shù)據(jù)包的“0”比特從數(shù)據(jù)包中去除,也就是將數(shù)據(jù)包中“1111110”序列中的“0”去除,以恢復(fù)出正確的數(shù)據(jù)。這里同樣需要進(jìn)行數(shù)據(jù)平衡,通過RXValid信號來實(shí)現(xiàn)。接收電路去比特的實(shí)現(xiàn)如圖5所示。

O@U3SX~G[5R]M3T20IPKZCD.jpg

       3 仿真及驗(yàn)證

       發(fā)送數(shù)據(jù)時(shí),UTMI置drive_enable為低電平,以使驅(qū)動(dòng)器處于發(fā)送狀態(tài)。當(dāng)TXValid為高電平時(shí),表明并行數(shù)據(jù)線上有數(shù)據(jù)等待發(fā)送。UTMI首先發(fā)送同步字SYNC,然后讀取并行數(shù)據(jù)線上的數(shù)據(jù)到Hold Reg中,完成串/并轉(zhuǎn)換后依次進(jìn)行位填充和NRZI編碼,再把數(shù)據(jù)發(fā)送到數(shù)據(jù)總線上(即DP和DM)。完成1 B的發(fā)送后,UTMI應(yīng)該置TXReady為高電平,表明 UTMI可以繼續(xù)發(fā)送下一個(gè)字節(jié)。數(shù)據(jù)發(fā)送完成后,UTMI應(yīng)該繼續(xù)發(fā)送EOP信號, 表明1個(gè)數(shù)據(jù)包發(fā)送完畢。高速模式下的部分發(fā)送波形如圖6所示。

G}1B`E2A@}]D%MGNFD9%])A.jpg

       接收數(shù)據(jù)時(shí),UTMI首先匹配SYNC字段。匹配完成后,系統(tǒng)進(jìn)入接收數(shù)據(jù)狀態(tài),此時(shí)RXActive為高。UTMI對接收到的串行數(shù)據(jù)進(jìn)行NRZI解碼,剔除填充位(此時(shí)drop_bit為高),送到轉(zhuǎn)移寄存器和保持寄存器,滿8位后輸出到并行數(shù)據(jù)線(此時(shí)RXValid為高)。UTMI檢測到EOP以后,拉低RXActive,表明接收完一個(gè)數(shù)據(jù)包。高速模式下的部分接收波形如圖7所示。

EAZ@G1HH_AY_U`W6@9FP5TT.jpg

       將此設(shè)計(jì)在SMIC 130 nm CMOS工藝下進(jìn)行綜合,布局布線,可滿足UTMI協(xié)議中480 Mb/s的數(shù)據(jù)率要求。經(jīng)仿真驗(yàn)證分析,該設(shè)計(jì)符合UTMI接口協(xié)議,正確實(shí)現(xiàn)了收發(fā)器邏輯電路的功能。     

       本文結(jié)合UTMI協(xié)議,對USB2.0收發(fā)器整個(gè)體系結(jié)構(gòu)和工作原理進(jìn)行了分析。完成了USB收發(fā)器邏輯電路的設(shè)計(jì),滿足協(xié)議要求。仿真結(jié)果表明,所設(shè)計(jì)的收發(fā)器功能正確,適用于USB系統(tǒng)開發(fā)?! ?/p>

參考文獻(xiàn)

[1] 黃菁,劉青春. 通過 USB 接口控制數(shù)/模轉(zhuǎn)換器的電路設(shè)計(jì)[J].微型機(jī)與應(yīng)用, 201231(14):27-30.

[2] Intel Corporation.USB2.0 Transceiver MacrocellInterface(UTMI)specification[S].Version 1.05,March 29,2001.

[3] Compaq, Hewlett-Packard. Universal serial bus specifica-tion[S]. Revision 2.0, April 27, 2000.

[4] Huang Kai. A multiprocessor prototype and its SoC designmethodology[J]. DianziXuebao (Acta Electronica Sinica), 2009(2):305-311.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。