張斌
摘要:根據(jù)USB3.0協(xié)議,鏈路層控制器主要是對鏈路的初始化和配置,對主機和設(shè)備之間的數(shù)據(jù)交流建立鏈接和控制。該文詳細(xì)介紹鏈路層狀態(tài)控制器的基本原理以及利用 Verilog HDL 語言實現(xiàn)了狀態(tài)控制器的描述, 并通過了Modelsim 仿真。
關(guān)鍵詞:USB 3.0;狀態(tài)控制器;仿真驗證
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2014)02-0411-03
當(dāng)下,在我們的日常工作中需要傳遞的信息量在加大,人們對數(shù)字媒體的依賴也隨之加劇?,F(xiàn)在很多裝備連接器的信息傳遞速度已經(jīng)無法滿足人們的工作和生活學(xué)習(xí)所需。所以我們需要改進和發(fā)展互聯(lián)接口以此來滿足人們對龐大信息量的傳遞所需,減少人們在等待中耗費掉的時間,加快信息傳遞的速度。因此因特爾、惠普、NEC、NXP半導(dǎo)體以及德州儀器等經(jīng)濟組織在7年前就一起達成了USB3.0協(xié)定,并著手研發(fā)出USB3.0等商品,其使用范圍主要有個人PC、移動設(shè)備、大眾消費電子商品的快速,同步一體的信息傳遞。這項協(xié)定不但向下兼容USB2.0、USB1.0標(biāo)準(zhǔn)[3],同時它又具備早就存在的USB技術(shù)職能。因為這項技術(shù)使得電源管理工作得到了優(yōu)化,所以它能將能耗最大限度的降低,同時還可以提高傳遞速度。更令人振奮的是 USB 3.0 推廣團隊(USB 3.0 Promoter Group)在2013年8月2號正式以 USB 3.1 之名確定了新的規(guī)格標(biāo)準(zhǔn)。據(jù)悉新標(biāo)準(zhǔn)在接口方面沒有什麼改變,但它可以提供兩倍于 USB 3.0 的傳輸速度(即10Gbps),同時還能向下兼容 USB 2.0,與此同時令我們深感現(xiàn)代信息技術(shù)更新?lián)Q代之快, 本文以USB3.0數(shù)據(jù)鏈層狀態(tài)控制器為例在,在深入理解協(xié)議的基礎(chǔ)上利用Verilog語言實現(xiàn)狀態(tài)控制器的描述,并且進行Modelsim仿真。
1 鏈路層狀態(tài)控制器
數(shù)據(jù)鏈路層:鏈路鏈接從本質(zhì)上來看是信息發(fā)出口與接收口的邏輯連接與物理連接。目的是確保信息包的正常傳遞以及對鏈路進行有效的管理。全過程還包括對信息包的CRC添加與CRC冗余的核查,同時也有利用包含有信用信息的數(shù)據(jù)調(diào)控體系來對發(fā)送端以及接收端的信息儲備緩存進行調(diào)控。一旦發(fā)現(xiàn)有任何失誤或者是信息的損失,鏈路就可以自發(fā)地進行第二次發(fā)送以便及時糾錯。
鏈路層調(diào)節(jié)器處理的問題是鏈路初始化和裝配,以及對主機與裝備之間的信息交換進行連接和調(diào)控, 整個控制器對數(shù)據(jù)包的發(fā)出與傳遞以及其它后續(xù)工作都起著重要的管理與影響作用??刂破髦饕譃闋顟B(tài)控制模塊和錯誤處理模塊,本次主要研究狀態(tài)控制模塊。
USB3.0協(xié)議中應(yīng)用LTSSM狀態(tài)機可以用來對鏈路進行初始化設(shè)置和確定方向。鏈路系統(tǒng)由供電到開始正常運轉(zhuǎn)都是通過狀態(tài)機來進行的,狀態(tài)機保證了數(shù)據(jù)包的成功運輸。
LTSSM狀態(tài)機是由12種互相有別的形態(tài)構(gòu)成:Recovery、U0、U1、U2、U3、loop back、Rx.Detect 、Polling、Hot Reset、Compliance Mode、SS.Inactive以及SS.Disabled,每一個形式都有與之相對應(yīng)的子狀態(tài)[6]。
在USB3.0協(xié)議中規(guī)定了一種非常節(jié)省功耗的電源管理機制,電源管理是通過發(fā)送消息事務(wù)包和內(nèi)部控制信號來實現(xiàn)的,主機利用裝置要求將裝置調(diào)整到某一種形式下,不過對數(shù)據(jù)鏈層進行電源管理則是講協(xié)定層與物理層調(diào)整鏈路形式,以確保主機與其他裝置的流暢聯(lián)系。通過信息事務(wù)數(shù)據(jù)以及內(nèi)部調(diào)控信息的發(fā)出,電源的管理工作才能完成。協(xié)議明確提出了四個電源形式:U0、U1、U2、U3他們的形式變換如圖中所示
U0:正常的工作狀態(tài)、完全活動的狀態(tài)、鏈路上有數(shù)據(jù)包的發(fā)送和接收。
U1:處于能量消耗較少的情況下,鏈路上不存在數(shù)據(jù)包的傳送,不過鏈路始終保持著活躍,同時鏈路上全部的物理端口都會處在最小能耗的環(huán)境中。
U2:和U1進行對比你會發(fā)現(xiàn),這種狀態(tài)更能降低能耗,不過,U1的推出延遲時間相對比較久一些。
U3:是三個中電源最低的狀態(tài),鏈路上的裝置保持懸掛,同時保持著斷開的形式,鏈路不能正常運轉(zhuǎn),不過在進行熱復(fù)位以及供給電源后就可以正常投入工作。
在鏈路的實際運轉(zhuǎn)中,數(shù)據(jù)包接納口的工作比較繁重,而數(shù)據(jù)包傳出口的工作則相對清閑些,不過要返回對應(yīng)的回復(fù)信號,在這個時候數(shù)據(jù)包發(fā)出口就能夠進入低耗能狀態(tài)中。Polling、Rx.Detect 、Recovery、Hot Reset 為四個鏈路形式,
Rx.Detect (檢測)狀態(tài)表示當(dāng)鏈路上電后,主機和設(shè)備能夠互相識別到雙方的存在,當(dāng)識別成功后,雙方將開始進入初始化的訓(xùn)練程序:
Polling(輪詢)狀態(tài)表示主機和設(shè)備在初始化發(fā)送端和接收端以及進行同步,準(zhǔn)備進行數(shù)據(jù)包的發(fā)送。
Recovery(恢復(fù))主要是當(dāng)鏈路發(fā)現(xiàn)當(dāng)前系統(tǒng)要從低功耗狀態(tài)切換出來或者當(dāng)前沒有工作在U0狀態(tài)而需要重新進行訓(xùn)練和配置的時候進行鏈路恢復(fù)。
Hot Reset表示鏈路允許下行端口重新設(shè)置上行端口。
SS.Inactive為鏈路出現(xiàn)錯誤的狀態(tài)它包括兩個子狀態(tài)1、SS_Inactive_Disconnect 2、 SS_Inactive_Quiet 但為了簡單起見他們不考慮在設(shè)計。
SS.Disabled為鏈路工作在非超高速狀態(tài)或者鏈路工作在USB2.0狀態(tài)。
Loop 誤碼率測試。
Complace 一致性測試。
在USB3.0協(xié)定中,為了保證LTSSM可以正常參加工作,所以才對這些狀態(tài)進行了多種時間段的限制。已經(jīng)得到的時間數(shù)據(jù)也是不同形態(tài)直接跳轉(zhuǎn)的依據(jù)。全部的時間計數(shù)裝置都會在電源恢復(fù)正常后變成零。
從鏈路上電開始到正常工作(類似將USB3.0的U盤插到筆記本的USB3.0接口上到能夠正常開始讀取數(shù)據(jù))需要經(jīng)歷三個階段:Rx.Detect、Polling、U0,如圖2所示,其中Polling過程會對鏈路上的終端設(shè)備進行相關(guān)的初始化設(shè)置,從Rx.Detect到U0的過程需要經(jīng)歷的子過程步驟如下,在Rx.Detect狀態(tài),鏈路上的主機或者設(shè)備開始識別遠(yuǎn)端是否有端接,如果有端接,則鏈路上的終端均開始發(fā)送特定規(guī)格的Polling.LFPS碼(低頻周期突發(fā)信號,周期在20ns到100ns之間),LFPS信號是一個非常關(guān)鍵的信號,通過不同特征的LFPS信號可以實現(xiàn)host或者device在多種狀態(tài)之間進行切換,不同特征的LFPS信號主要表現(xiàn)為時序上的不同,如tBurst和tRepeat參數(shù)。
經(jīng)過特定時間的Polling.LFPS握手后,開始發(fā)送定制好的TS.EQ碼進行接收端的均衡器設(shè)置,然后再通過TS1/TS2(Training Sequence,訓(xùn)練碼)碼進行其它相關(guān)參數(shù)的設(shè)置,最后通過發(fā)送Idle碼進行握手,完成整個鏈路的初始化,進入U0正常工作狀態(tài)。
2 功能仿真過程及效果
在這里我們通過modelsim仿真軟件還有編碼測試代碼將所設(shè)計的項目進行功能性仿真,如圖3所示。
VBUS信號高電平有效,SS_disable情況出現(xiàn)時,即鏈路工作在非超高速狀態(tài)或者鏈路工作在USB2.0狀態(tài)時,即使VBUS信號請求數(shù)據(jù)時,端口也不能進行接受和發(fā)送LFPS信號和Superspeed信號。下行端口是通過VBUS信號進行Rx-Detect,在SS-Inactive狀態(tài)時下行端口和上行端口只能退出當(dāng)前狀態(tài),此時Warm-RST信號出現(xiàn)。loopback這種狀態(tài)用于測試和故障隔離。Hot_Rest信號有效時只有下行端口可以啟動熱復(fù)位,這將重置整個操作,此時端口可以轉(zhuǎn)換到其他狀態(tài)當(dāng)它得到適當(dāng)?shù)男盘枴T诮邮粘瑫r時,端口將從U2進入U3狀態(tài)在這種狀態(tài)下最大程度的節(jié)能進行了測量。U0是正常操作狀態(tài)發(fā)送和接收數(shù)據(jù)包。當(dāng)它接收到命令LG0_U1,LG0_U2和LG0_U3端口將會減少電力。LGO_U1,在申請進入U1的時候發(fā)出.LGO_U2,在申請進入U2的時候發(fā)出.LGO_U3,在申請從下行端口進入的時候,會批準(zhǔn)上一個請求。
參考文獻:
[1] Universal serial bus 3.0 specification[S].Revision 1.0, November,2008.
[2] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,2008.
[3] 孟會,劉雪峰.PCI Express 總線技術(shù)分析[J].計算機工程,2006,32(32).
[4] 劉瑞梅.PCI Express 總線PHY接口技術(shù)分析[J].河北建筑工程學(xué)院報,2010(1).
[5] 胡為東.USB3.0物理層測試中的一致性模式和環(huán)回模式介紹[J].力科電子測量應(yīng)用案例連載,2011,8(8).