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