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

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

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

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

       1 UTMI整體結構

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

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

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

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

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

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

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

       從中可以看出,收發(fā)器是一塊具有一定復雜度的數/?;旌想娐?。設計時將數字電路和模擬電路分開,分成以下三部分:

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

       (2) 時鐘產生與數據恢復電路。其功能是產生本地高速時鐘,并從USB總線的串行數據流中恢復出時鐘和數據,以便于后級電路進行相應的操作。

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

       2 模塊設計

       2.1發(fā)送電路模塊

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

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

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

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

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

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

       2.2 接收電路模塊

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

WZI2VSSK`MGZBU(`[IWYXUV.jpg

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

      當檢測到錯誤時,進入Error態(tài),如果此時數據線DP和DM上已經沒有數據傳輸了,則進入Abort1態(tài),再直接跳轉到RX Wait態(tài);如果此時數據總線DP和DM上還有數據在傳輸,則跳轉到Abort2態(tài),直到數據總線上的數據傳輸完才跳到Terminate態(tài),再直接跳轉到RX Wait態(tài)。

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

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

       3 仿真及驗證

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

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

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

EAZ@G1HH_AY_U`W6@9FP5TT.jpg

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

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

參考文獻

[1] 黃菁,劉青春. 通過 USB 接口控制數/模轉換器的電路設計[J].微型機與應用, 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.


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