劉勇 董乾 袁娜
摘 要:本文描述了PCIExpress物理層鏈路訓練中一致性測試狀態(tài)的設計,主要通過設計有限狀態(tài)機實現一致性測試狀態(tài)的功能。完成了LTSSM(LinkTrainingandStatusStateMachine)中的polling.active到polling.compliance狀態(tài)的跳轉。仿真驗證結果表明設計的狀態(tài)機功能復合預期。
關鍵詞:PCIExpress;一致性測試;LTSSM;有限狀態(tài)機
中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9599 (2013) 06-0000-04
1 引言
隨著計算機技術的飛速發(fā)展,當前主流的PCI總線已經不能滿足傳輸上日益增長的數據量的需求,新標準總線,PCIE(PCIExpress),將全面取代現行的PCI和AGP(AccelerateGraphicalPort),最終實現總線標準的統一。它的主要優(yōu)勢就是數據傳輸速率高,目前最高可達到10GB/s以上,而且還有相當大的發(fā)展?jié)摿Α?/p>
PCIE也有多種規(guī)格,從PCIEx1(1個通道)到PCIEx16(16個通道),能滿足現在和將來一定時間內出現的低速設備和高速設備的需求[1]。
PCIE是高性能的通用I/O的連接技術,可被廣泛應用于未來計算機和通訊的各種平臺中。它是PCI的一個革命版本,保留了PCI的一些良好特性。有著更好擴展性的串行化總線技術取代了并行總線。PCIE采用了當前非常先進的點對點互聯技術;同時,PCIE提供了另外的一些非常高級的特性,如功耗管理、質量服務、熱插拔、數據完整性校驗、差錯處理等。在原來PCI的基礎上做了大幅度的改進,被稱為第三代總線技術[2]。
2 系統結構
2.1 PCIExpress架構
PCIExpress有三層結構,如圖1所示,從上到下依次為事務層、數據鏈路層和物理層(邏輯子層和電氣子層)。
事務層:請求/結束事務結構、TLP流量控制和消息傳送。數據鏈路層:負責保證鏈路上發(fā)送的數據正確,同時負責保證在鏈路上可靠地傳送分組。物理層:分成兩個子層,邏輯子層和電氣子層。其中,邏輯子層負責數據加擾、8b/10b編碼和分組分幀;電氣子層收發(fā)鏈路電氣信號。此外,所有鏈路訓練都在邏輯子層內部完成[3]。
圖1 PCIExpress三層結構
2.2 物理層結構
如圖2,物理層分為邏輯子層和電氣子層。邏輯子層包括MAC(MediaAccessLayer)和PCS(PhysicalCodingSublayer),MAC和PCS之間用PIPE接口連接。電氣層主要就是PMA(PhysicalMediaAttachmentLayer)部分。而鏈路訓練就是位于MAC中。
圖2 物理層結構
2.3 LTSSM結構
LTSSM(LinkTrainingandStatusStateMachine)主要負責鏈路訓練和初始化過程。LTSSM是配置和初始化設備物理層、端口和相關鏈路的物理層控制過程,使鏈路可以傳送正常的數據包流量。它主要負責以下內容:配置鏈路寬度、通路反排、極性顛倒、協商速率、位鎖定、符號鎖定以及通路間去偏差。
如圖3,LTSSM主要包括11個大狀態(tài):Detect、Polling、Configuration、Recovery、L0、L0s、L1、L2、HotReset、Loopback、Disabled,各個狀態(tài)又分別由子狀態(tài)機實現。
復位后進入初始狀態(tài)Detect狀態(tài),在此狀態(tài),設備檢測鏈路另一端是否有設備,Detect狀態(tài)也可以由其他狀態(tài)進入。在Polling狀態(tài)期間要實現位鎖定和符號鎖定;確認通路極性和通路數據速率;還要進行合格性測試。在Configuration狀態(tài)要進行鏈路寬度、鏈路號的協商;要執(zhí)行通路反排、極性顛倒以及去除通路間時差;接收器要向發(fā)送器通告它從L0s跳到L0狀態(tài)所需要的FTS有序集的數量。L0是正常的、鏈路全激活狀態(tài),在此期間事務層包TLP、數據鏈路層包DLLP以及物理層的有序集能夠被發(fā)送和接收。L0s是低功耗狀態(tài),如果鏈路上沒有包被發(fā)送并且計時時間到,設備發(fā)送器向對方的接收器發(fā)送幾個電氣閑有序集之后主動將鏈路從L0置入L0s狀態(tài)。L1是比L0s功耗更低的狀態(tài),由它退出到L0需要更長的時間。L2是比L1功耗更低的狀態(tài),退出等待時間比L1長。
鏈路重訓練Recovery狀態(tài),當處于L0狀態(tài)的鏈路由于發(fā)生了使鏈路不可操作的某個錯誤時,會從L0狀態(tài)進入Recovery狀態(tài),在此狀態(tài)期間,執(zhí)行鏈路訓練狀態(tài)Polling和Configuration狀態(tài)下類似的操作,而且在此狀態(tài)還可以進行改速率,以及進行均衡(確定信號發(fā)送的2階去加重水平)。Loopback狀態(tài)被用作測試和故障隔離狀態(tài),一旦進入Loopback狀態(tài),主設備就能夠遵循8b/10b編碼規(guī)則發(fā)送任何圖譜的符號,從設備回環(huán)收到的數據。Disabled狀態(tài)可以使一條已配置的鏈路被禁止。HotReset狀態(tài)是熱復位狀態(tài)[3]-[6]。
圖3 LTSSM鏈路訓練機狀態(tài)圖
2.4 一致性測試狀態(tài)
如圖4,一致性測試狀態(tài)polling.compliance是Polling輪詢狀態(tài)中的一個子狀態(tài),是一個非正常的狀態(tài),當設備出現故障時會進入該狀態(tài)進行測試。在polling.compliance期間, 阻抗的測試探針或者 的接地阻抗鉤到任一通路上的發(fā)送信號差分對,使得該設備進入polling.compliance狀態(tài)。在這個狀態(tài)下,要求該設備在鏈路上生成合格性測試位譜,該位譜會在相鄰通道間產生最壞情況的干擾,造成最壞情況的EMI,這樣就可以供鉤到該鏈路上的測試設備測試EMI噪聲、串話干擾、位錯誤率等等。
圖4 Polling狀態(tài)圖
3 設計
3.1 Polling.compliance狀態(tài)
進入該狀態(tài)是為了進行測試,會進行相應的設置。首先要確定發(fā)送端的速率和去加重水平de-emphasis,這些設置是為發(fā)送數據做準備;其次就是確定發(fā)送的compliancepattern測試圖譜。PCIExpress1.0速率為2.5GT/s,PCIExpress1.0速率為5.0GT/s,PCIExpress1.0速率為8.0GT/s。
確定速率和去加重水平都是由兩臺設備共同協商決定的:
(1)如果兩臺設備只支持2.5GT/s,兩端設備的速率就確定為2.5GT/s;de-emphasis為-3.5dB。
(2)如果由于在polling.active狀態(tài)中檢測到8個連續(xù)的TS1(TrainingSequence)而進入polling.complianc,兩端設備的速率為雙方所能支持的最高速率;de-emphasis就由TS1中所攜帶的信息協商決定。
(3)如果由于鏈路控制寄存器中的enter_compliance位置1而進入polling.complianc,兩端設備的數據速率就由鏈路控制寄存器中的target_link_speed決定;de-emphasis取決于速率,如果速率是5GT/s,de-emphasis為-3.5dB;如果速率是8GT/s,de-emphasis由鏈路控制寄存器中的CompliancePreset/De-emphasis決定。
(4)其它情況下,就由兩端設備所能支持的最大速率和進入到polling.compliance的次數決定。
確定發(fā)送的一致性圖案:根據不同的情況需要發(fā)送compliancepattern和modifiedcompliancepattern。
在雙方確定發(fā)送測試圖譜的速率之后,就要進入electricalidle電氣閑改速率
3.2 Polling.compliance狀態(tài)機實現
本設計主要是實現LTSSM中polling.active到polling.compliance狀態(tài)的跳轉,從而為設備提供測試的環(huán)境。
如圖5,是所設計的實現polling.compliance狀態(tài)的有限狀態(tài)機。Compliance_idle是初始狀態(tài),compliance.enter_tx_eidle發(fā)EIOS進入電氣閑,compliance.enter_enter_speed_change處于電氣閑,并把速率改到協商好的速率,compliance.tx_compliance發(fā)送測試圖譜compliancepattern或modifiedcompliancepattern,compliance.exit_tx_eidle再次發(fā)EIOS(ElectricIdleOrderSet)進入電氣閑,compliance.exit_speed_change處于電氣閑,把速率改到PCIExpress1.0的速率2.5GT/s,compliance.exit_in_eidle還是處于電氣閑,compliance.exit是退出狀態(tài),表明已經完成polling.compliance狀態(tài)。
圖5 polling.compliance狀態(tài)機實現
4 仿真結果
圖6 modelsim仿真波形圖
如上圖6所示,是在modelsim中進行仿真得到的結果。先利用verilog語言編寫設計模塊代碼,進而在modelsim軟件中進行功能仿真。從波形圖上可以看出,主狀態(tài)機(current_state)從000000→000001→000010→000011→000010,其中“000000”代表detect.quiet狀態(tài),“000001”代表detect.active狀態(tài),“000010”代表polling.active狀態(tài),“000011”代表polling.compliance狀態(tài)。Polling.compliance狀態(tài)機(current_compliance_state)從000→011→100→110→111→000跳轉,其中“000”代表compliance.idle狀態(tài),“011”代表compliance.tx_compliance狀態(tài),“100”代表compliance.exit_tx_eidle狀態(tài),“110”代表compliance.exit_in_eidle狀態(tài),“111”代表compliance.exit狀態(tài)。
從上圖可以看出,主狀態(tài)機成功從polling.active進入到polling.compliance狀態(tài)。compliance狀態(tài)機根據不同情況也可以成功的跳轉;當compliance狀態(tài)機跳轉到compliance.exit狀態(tài)時,表明設備此時在polling.compliance狀態(tài)可以成功退出,這時主狀態(tài)機又從polling.compliance跳轉到polling.active狀態(tài),回到正常狀態(tài)。
5 結論
本文介紹了PCIExpress協議的三層結構、物理層結構,詳細介紹了LTSSM的組成結構和一致性測試狀態(tài),完成了polling輪詢狀態(tài)中的polling.compliance一致性測試狀態(tài)的功能。能夠正確地從正常狀態(tài)跳轉到一致性測試狀態(tài),為外界測試提供必要的測試環(huán)境。
參考文獻:
[1]許軍,李玉山,賀占莊.PCI-Express總線技術研究[J].計算機工程與科學,2006,28(05):141-143.
[2]陳昊.PCIExpressEndpoint媒體接入層設計[D].杭州:浙江大學電路與系統,2006.
[3]馬鳴錦,朱劍冰,何紅旗.PCI、PCI-X和PCIExpress的原理及體系結構[M].北京:清華大學出版社,2007.
[4]PCI-SIG.PCIExpressBaseSpecificationRevision3.0,America:PCI-SIG,November10,2010.
[5]PCI-SIG.PCIExpressBaseSpecificationRevision2.0,America:PCI-SIG,December20,2006.
[6]PCI-SIG.PCIExpressBaseSpecificationRevision1.0,America:PCI-SIG,April15,2003.
[作者簡介]劉勇(1979-),男,江蘇沛縣人,工程師,碩士,研究方向:集成電路設計與制造;董乾(1982-),男,江蘇泰州人,工程師,碩士,研究方向:數字集成電路設計;袁娜(1989),女,東南大學集成電路學院碩士研究生,研究方向:VLSI設計。