1. 概述
USB2.0 利用傳輸時序的縮短(微幀125us)以及相關的傳輸技術,將整個傳輸速度從原來的12Mbps提高到480Mbps,提高了40倍的頻寬,為開發高寬頻USB介面產品提供條件。USB2.0支援USB1.1的全速(Full Speed)和低速(Low Speed)工作環境,其電氣特性在其他文獻中有描述[6],這裡主要介紹USB2.0高速裝置的電氣特性以及相關的UTMI介面規範。UTMI全稱為 USB2.0 Transceiver Macrocell Interface,此協議是針對USB2.0的訊號特點進行定義的,分為8位或16位元據介面。目的是為了減少開發商的工作量,縮短產品的設計周期,降低風險。此介面模組主要是處理物理底層的USB協議及訊號,可與SIE整合設計成一專用ASIC晶片,也可獨立作為PHY的收發器晶片,下以8位介面為例介紹PHY的工作原理及設計特點。
2. UTMI主要功能及原理
首先,為保證相容性,PHY應該支援全速和高速工作模式。為此高速集線器(Root Hub或Hub)
需要能夠檢測裝置是高速連接埠還是全速連接埠,以作相應的速度模式進行工作。因此,訊號介面須實現以下功能:
l 不同速率介面之間的動態傳輸
l 高速裝置檢測(HighSpeed Detection Handshake)
l 高速裝置斷開檢測(HS_Disconnect)
l 能傳輸高速/全速差分訊號(要求阻抗匹配)
l 發送和檢測高速包開始訊號(SYNC)
l 發送和檢測高速包結束訊號(EOP)
l NRZI編碼和位填充(Bit Stuff / Bit Unstuff)
l 支援掛起和複位的操作
圖1 USB2.0 PHY 功能模組描述框圖
圖 1描述了UTMI各個功能模組,其工作原理如下:PHY從其他轉態(如上電、重啟或掛起)轉換成工作狀態後,首先進行高速裝置的連 接檢測(HS Detection Handshake)(後面再詳細敘述),檢測完畢後切換成相應的工作模式,然後等待主機和裝置進行傳輸資料流。當接收器在USB資料線D+和D-檢測到由主機發送到裝置的訊號時,首先對訊號進行時鐘恢複,得到正確同步訊號後再送進緩衝區,通過NRZI解碼及位反填充後,把串列訊號轉換成並行訊號,最後送到裝置SIE進行處理。反之,當裝置端的SIE需要發送資料包時,UTMI將按照相反的順序把已編譯好的NRZI串列資料流通過發送器傳輸給主機。為了降低功耗,UTMI支援掛起功能,其工作狀態2所示。
圖2 UTMI工作狀態轉換的流程圖
3. 各功能模組分析
3.1 Clock Multiplier
本模組產生UTM的本地內部時鐘,同時提供一個外部時鐘CLK輸出給SIE,協議要求時鐘頻率的誤差範圍小於10%(±6MHz),時鐘輸出CLK的精確度達到±500ppm(30.0KHz),並要求在1.4ms內達到穩定時鐘頻率。
對於8位元據介面,此時的外部時鐘CLK輸出為60MHz。在高速環境下,一個外部時鐘CLK周期即為高速裝置傳輸一個位元組資料所需 的時間,即( )ms/per Byte;而在全速環境下,5個外部時鐘CLK周期為全速環境下傳輸一位元據所需的時間,即( )ms/per Bit,因此,通常情況下,傳輸全速一個位元組資料的時間為40個外部CLK周期,如果存在位填充,則需要45個周期時間。
2.2 發送及接收器
本文重點介紹高速傳輸的特點。在高速環境下USB的傳輸速率為480Mbps,選用這個數值,一方面是可以使用現存的電纜和連接器,另一方面通過對半導體技術的廣泛研究與測試,這個速度不僅在生產工藝上沒有問題,也與USB 1.1的完全相容。為了減少雜訊和電源抖動對傳輸的影響,提高傳輸速度,選擇差分電流模驅動方式。
USB2.0的一個最大挑戰就是要設計出低的輸出阻抗的高效能收發器[7]。在480Mbps傳輸時,如果路徑沒有按照效能要求的阻抗結束,就會產生反射。為此,在傳輸高速訊號時,要給電纜匹配一個90Ω的電阻,以消除訊號反射,同時電流源在驅動這個低的輸出阻抗時也可增加抗雜訊效能。當高速磁碟機在工作的時候,匯流排處於空閑狀態,兩個資料線都處於低電平狀態,此時集線器的全速磁碟機和裝置的全速磁碟機在功能上等效成每個都是45Ω 電阻(3的圓圈所示),合成90Ω的差分電阻產生一個0係數的反射。協議規定全速磁碟機的輸出阻抗在45Ω±10%,以符合高速收發器的需要。
高速資料轉送和低速/全速資料轉送一樣,資料流以差分不歸零碼進行編碼,在電纜上成差分訊號進行傳輸。發送的高速訊號是由高速電流磁碟機完成的。磁碟機根據高速環境中相應的J或K訊號,向D+和D-資料線分別傳送電流大小為17.78mA電流,通過一個22.5Ω的負載(兩個45Ω的負載並聯結地),在 D+和D-訊號線產生一個近似於±400mv的電壓,達到高速差分傳輸的效果。
圖3 高速差分訊號收發器的基本組件
2.2 HS DLL和FS DLL
本模組包含延時鎖相環,可以是DLL,也可以是PLL。其主要功能是對高速或全速傳輸的資料流進行提取及時鐘恢複,達到同步和正確提取資料的目的。可以斷定,這個模組是UTMI中的核心模組,它的效能的好壞將決定了UTMI接收資料的正確性。需要進一步瞭解可以參考文獻[8]。
.3.3 MUX / DEMUX
選擇全速還是高速傳輸的資料流。
3.4 NRZI編碼/解碼
與 USB1.1原理相同,以提高訊號的抗雜訊能力。4所示,NRZI為差分不歸零制編碼,這種編碼與常規的不歸零制(NRZ)編 碼的區別在於每個 "0"碼處都有跳變、每個"1"碼處沒有跳變。在NRZI編碼中的,訊號通過相鄰碼元極性的跳變來解碼,而不是簡單的以絕對電平為準,由此可獲得更高的抗幹擾能力。
圖4 NRZI編碼方式
3.5 Bit Stuff / Bit Unstuff
對於NRZI編碼方式會遇到一個嚴重的問題,就是若一長串聯續的"1"將會導致無電平跳變,逐漸的累積,從而引起機收合最終丟失同步訊號,使得讀取的時序發生嚴重的錯誤。因此,在NRZI編碼之間,還需執行所謂的位填充(Bit-stuffing)的工作。在連續的傳輸6個"1"位,強制在NRZI編碼的資料流中加入跳變。這就確保接收器至少可以在每7個位的時間間隔,檢測到一次跳變,使接收器和傳送的資料保持同步。圖5說明了位填充的工作方式。
圖5 位填充的工作方式
位填充操作從同步資料區段(7 所示) 開始,始終貫穿於整個傳送過程並嚴格遵守位填充規則,後面還可以看到高速包的結束EOF也是利用位填充規則來提示資料包結束的。
3.6 串列/並行轉換
通過Rx Shift/Hold的寄存器或Tx Shift/Hold寄存器分別將接收的資料或要發送的資料進行相應的串列/並行轉換。
3.7 基本控制單元
基本控制單元是為了控制UTMI的工作狀態及檢測接收資料是否有效。這裡主要介紹發射包絡探測器(Squelch)。
在低電壓訊號環境下,為了避免探測電纜上引起的雜訊訊號作為要傳輸的訊號,就需要運用發射包絡探測器(Squelch)來檢測匯流排上的訊號是否有效。匯流排空閑時,高速差分接收器處於靜噪狀態,當檢測到包開始訊號後,高速差分接收器被啟用,此時當差分訊號電平小於100mV時,探測器指示匯流排上的訊號無效;只有當訊號電平大於150mV時,探測器才會指示接收的高速差分信有效。但這種方法也可能會帶來同步上的延時,即在檢測到包絡和啟動接收器之間最多可能會出現4位的延時,但這個延時並不帶來同步的問題[3]。
4. 其他功能分析
4.1高速裝置的串連檢測(HS Detection Handshake)
前面原理提到,裝置在串連、掛起恢複或複位後,都要進行高速裝置的串連檢測(HS Detection Handshake)。高速裝置的串連檢測剛開始是在全速訊號環境下進行的。通過高速裝置和高速集線器之間傳輸一個握手訊號來指示裝置是否為高速裝置。
如果握手訊號傳輸失敗,則預設為全速裝置。
裝置串連到集線器Hub或主機時,全速和高速裝置在D+線上有一個1.5KΩ的上拉電阻,由於下拉電阻為15KΩ,D+會加到近似 90%的直流電平,當集線器探測到D+的高電平,就認為串連到全速裝置。此時,軟體就會通過複位命令發送一個RESET訊號到集線器,讓集線器驅動一個 SE0訊號(D+和D-都為低電平)超過10ms。高速裝置檢測到RESET訊號後發送一個Chirp K訊號給集線器(1~7ms的時間)。集線器的高速接收器若在裝置發出Chirp K序列後2.5微秒內檢測到,則響應傳送一個交替的Chirp K和Chirp J訊號序列。裝置檢測到這6個線性調頻脈衝Chirp序列(3個交替的KJ訊號對),
集線器將串連連接埠置入高速啟用狀態,並從D+斷開上拉電阻,啟用高速裝置終端,設定高速裝置預設狀態。
若裝置在RESET之後沒有發出Chirp K訊號或者裝置沒有檢測到集線器響應的交替KJ訊號序列,則高速裝置就繼續以全速模式進行操作。圖6的事件時序圖說明高速裝置串連的過程。
圖6 HS_Detection_Handshake事件時序圖
其中T0時刻表示HS Handshake開始。在T1時刻,裝置發送Chirp K訊號並在T2時刻結束;下行連接埠在T3時刻發送KJ交替脈衝序列,若裝置在T6時刻接收到下行連接埠的Chirp訊號後,則裝置在T7時刻斷開D+的上拉電阻,並設定成HS終端及HS預設狀態,等待高速串連檢測結束。T8是指匯流排中止下行連接埠發送Chirp KJ訊號的時刻;T9時刻則表示最早結束匯流排高速串連檢測時刻,或者表示斷開D+上拉電阻後,設定HS終端進入HS的預設工作狀態最晚時間。
4.2 高速裝置斷開檢測(HS_Disconnect)
由於高速裝置的串連沒有上升電壓,所以集線器要用不同的方法來檢測裝置的移除。高速裝置在匯流排空閑時,D+和D-資料線保持低電平,當裝置斷開時,線上不會檢測到明顯的變化,但是此時裝置的差分終端電阻消失,而高速包還繼續從原來裝置串連的連接埠進行傳輸。當這個包到達沒有負載的路徑端點時,一個很大的反射會回到集線器介面,使得集線器串連連接埠的差分電壓加倍,當集線器檢測到這個雙倍電壓就可指示裝置已經被移除。協議定義,HS_Disconnect一般是在擴充高速資訊包結束符後(extended End of High-speed Packet, HSEOP)USB探測集線器的差分電平,若大於等於625mV則表示裝置已經解除串連。 4.3 高速包開始和同步序列(SYNC)
因為裝置與主機不是分享同一時鐘,接收裝置無法正確知道傳送裝置何時會傳送一個新的資訊包。為此,要讓傳送和接收同步,每一個資訊包都需要一個SYNC作為包開始,達到讓接收裝置的脈衝與傳送的資料同步的目的。在高速環境中,SYNC是32位:15個交替重複的KJ訊號對,最後是兩個 K訊號。圖7表示高速同步序列和包開始符。
圖7 高速模式的SYNC資訊包
4.4 高速包結束符(EOP)
高速包結束符檢測原理8所示,每個包都以EOP序列結束。除了高速幀開始資訊包中的高速資訊包結束符(extended End of High-speed Packet, HSEOP)是40位外,其他高速資訊包結束都是8位。這8位結束符是一個沒有位填充的01111111b NRZI的編碼。如果前一位是J,高速資訊包結束符是KKKKKKKK。反之,如果前一位是K,則高速資訊包結束符是JJJJJJJJ。不管那種情況,傳輸的7個位序列都會引起位填充錯誤,也就是接收器檢測到一個有意的填充錯誤序列,就知道包結束,即使這不是一個EOP,而是出現了一個真正的位填充錯誤也不例外。
8 高速傳輸的包結束符檢測
4.5 複位和掛起
裝置的複位和掛起訊號都是發送一個大於3ms的匯流排空閑訊號,同時在兩種狀態下高速裝置都轉換到全速訊號環境,因此高速裝置必須能夠區分這不同兩個的事件。當高速裝置斷開高速電阻並重新串連1.5K 的上拉電阻進入全速模式後,在100ms至875ms之內,匯流排探測D+和D-資料線的狀態來判定匯流排進入複位還是掛起狀態。如果D+和D-都是低電平,即Single-ended 0,則匯流排在進行複位;如果是D+為高(上拉)、D-為低(下拉),則匯流排在發送全速空閑訊號,指示裝置進入掛起狀態。
5.結論
本文分析了USB2.0介面高速傳輸的環境特點及在此模式下8位PHY的工作原理。為確保USB2.0在高速和全速環境下正常工作,對UTMI協議也進行了剖析。文章還對USB傳輸的差分NRZI編碼及如何增強抗雜訊能力和確保資料的正確性做了較詳盡的分析。本論文對UTMI及 USB2.0介面設計有較好的參考價值。