PCI-Express簡稱PCI-E于2001年春季由Intel公司提出。隨后在2001年底,包括Intel、AMD、DELL、IBM在內(nèi)的20多家業(yè)界主導(dǎo)公司開始起草新技術(shù)的規(guī)范,并在2002年底完成,對其正式命名為PCIExress。
PCI-Express的接口根據(jù)總線帶寬不同而有所差異,包括X1、X4、X8以及X16(X2)模式用于內(nèi)部接口而非插槽模式。較短的PCI-Express卡可以插入較長的PCI-Express插槽中使用。
PCI-E1X的網(wǎng)卡
PCI-E4X的雙端口網(wǎng)卡
PCI-E16X的顯卡
PCI-Express接口連接器
PCIe電源有+12V、+3.3Vcc和+3.3Vaux。其中+12V主要給PCIe設(shè)備(如顯卡)提供更大的供電能力(PCIe3.0的插槽最大有150w)
PCIe設(shè)備使用兩種電源信號供電,分別是Vcc與Vaux,其額定電壓為3.3V。其中Vcc為主電源,PCIe設(shè)備使用的主要邏輯模塊均使用Vcc供電,而一些與電源管理相關(guān)的邏輯使用Vaux供電。在PCIe設(shè)備中,一些特殊的寄存器通常使用Vaux供電,如StickyRegister,此時即使PCIe設(shè)備的Vcc被移除,這些與電源管理相關(guān)的邏輯狀態(tài)和這些特殊寄存器的內(nèi)容也不會發(fā)生改變。
在PCIe總線中,使用Vaux的主要原因是為了降低功耗和縮短系統(tǒng)恢復(fù)時間。因?yàn)閂aux在多數(shù)情況下并不會被移除,因此當(dāng)PCIe設(shè)備的Vcc恢復(fù)后,該設(shè)備不用重新恢復(fù)使用Vaux供電的邏輯,從而設(shè)備可以很快地恢復(fù)到正常工作狀狀態(tài)。
PCIe鏈路的最大寬度為×32,但是在實(shí)際應(yīng)用中,×32的鏈路寬度極少使用。在一個處理器系統(tǒng)中,一般提供×16的PCIe插槽,并使用PETp0~15、PETn0~15和PERp0~15、PERn0~15共64根信號線組成32對差分信號,其中16對PETxx信號用于發(fā)送鏈路,另外16對PERxx信號用于接收鏈路。除此之外PCIe總線還使用了下列輔助信號。
1PERST#信號
該信號為全局復(fù)位信號,由處理器系統(tǒng)提供,處理器系統(tǒng)需要為PCIe插槽和PCIe設(shè)備提供該復(fù)位信號。PCIe設(shè)備使用該信號復(fù)位內(nèi)部邏輯。當(dāng)該信號有效時,PCIe設(shè)備將進(jìn)行復(fù)位操作。
2REFCLK+和REFCLK-信號
在一個處理器系統(tǒng)中,可能含有許多PCIe設(shè)備,這些設(shè)備可以作為Add-In卡與PCIe插槽連接,也可以作為內(nèi)置模塊,與處理器系統(tǒng)提供的PCIe鏈路直接相連,而不需要經(jīng)過PCIe插槽。PCIe設(shè)備與PCIe插槽都具有REFCLK+和REFCLK-信號,其中PCIe插槽使用這組信號與處理器系統(tǒng)同步。
在一個處理器系統(tǒng)中,通常采用專用邏輯向PCIe插槽提供REFCLK+和REFCLK-信號,如下圖所示。其中100Mhz的時鐘源由晶振提供,并經(jīng)過一個“一推多”的差分時鐘驅(qū)動器生成多個同相位的時鐘源,與PCIe插槽一一對應(yīng)連接。
參考時鐘與PCIE插槽的連接
PCIe插槽需要使用參考時鐘,其頻率范圍為100MHz±300ppm。處理器系統(tǒng)需要為每一個PCIe插槽、MCH、ICH和Switch提供參考時鐘。而且要求在一個處理器系統(tǒng)中,時鐘驅(qū)動器產(chǎn)生的參考時鐘信號到每一個PCIe插槽(MCH、ICH和Swith)的距離差在15英寸之內(nèi)。通常信號的傳播速度接近光速,約為6inch/ns,由此可見,不同PCIe插槽間REFCLK+和REFCLK-信號的傳送延時差約為2.5ns。
當(dāng)PCIe設(shè)備作為Add-In卡連接在PCIe插槽時,可以直接使用PCIe插槽提供的REFCLK+和REFCLK-信號,也可以使用獨(dú)立的參考時鐘,只要這個參考時鐘在100MHz±300ppm范圍內(nèi)即可。內(nèi)置的PCIe設(shè)備與Add-In卡在處理REFCLK+和REFCLK-信號時使用的方法類似,但是PCIe設(shè)備可以使用獨(dú)立的參考時鐘,而不使用REFCLK+和REFCLK-信號。
在PCIe設(shè)備配置空間的LinkControlRegister中,含有一個“CommonClockConfiguration”位。當(dāng)該位為1時,表示該設(shè)備與PCIe鏈路的對端設(shè)備使用“同相位”的參考時鐘;如果為0,表示該設(shè)備與PCIe鏈路的對端設(shè)備使用的參考時鐘是異步的。
在PCIe設(shè)備中,“CommonClockConfiguration”位的缺省值為0,此時PCIe設(shè)備使用的參考時鐘與對端設(shè)備沒有任何聯(lián)系,PCIe鏈路兩端設(shè)備使用的參考時鐘可以異步設(shè)置。這個異步時鐘設(shè)置方法對于使用PCIe鏈路進(jìn)行遠(yuǎn)程連接時尤為重要。
在一個處理器系統(tǒng)中,如果使用PCIe鏈路進(jìn)行機(jī)箱到機(jī)箱間的互連,因?yàn)閰⒖紩r鐘可以異步設(shè)置,機(jī)箱到機(jī)箱之間進(jìn)行數(shù)據(jù)傳送時僅需要差分信號線即可,而不需要參考時鐘,從而極大降低了連接難度。
3WAKE#信號
當(dāng)PCIe設(shè)備進(jìn)入休眠狀態(tài),主電源已經(jīng)停止供電時,PCIe設(shè)備使用該信號向處理器系統(tǒng)提交喚醒請求,使處理器系統(tǒng)重新為該P(yáng)CIe設(shè)備提供主電源Vcc。在PCIe總線中,WAKE#信號是可選的,因此使用WAKE#信號喚醒PCIe設(shè)備的機(jī)制也是可選的。值得注意的是產(chǎn)生該信號的硬件邏輯必須使用輔助電源Vaux供電。
WAKE#是一個OpenDrain信號,一個處理器的所有PCIe設(shè)備可以將WAKE#信號進(jìn)行線與后,統(tǒng)一發(fā)送給處理器系統(tǒng)的電源控制器。當(dāng)某個PCIe設(shè)備需要被喚醒時,該設(shè)備首先置WAKE#信號有效,然后在經(jīng)過一段延時之后,處理器系統(tǒng)開始為該設(shè)備提供主電源Vcc,并使用PERST#信號對該設(shè)備進(jìn)行復(fù)位操作。此時WAKE#信號需要始終保持為低,當(dāng)主電源Vcc上電完成之后,PERST#信號也將置為無效并結(jié)束復(fù)位,WAKE#信號也將隨之置為無效,結(jié)束整個喚醒過程。
PCIe設(shè)備除了可以使用WAKE#信號實(shí)現(xiàn)喚醒功能外,還可以使用Beacon信號實(shí)現(xiàn)喚醒功能。與WAKE#信號實(shí)現(xiàn)喚醒功能不同,Beacon使用In-band信號,即差分信號D+和D-實(shí)現(xiàn)喚醒功能。Beacon信號DC平衡,由一組通過D+和D-信號生成的脈沖信號組成。這些脈沖信號寬度的最小值為2ns,最大值為16us。當(dāng)PCIe設(shè)備準(zhǔn)備退出L2狀態(tài)(該狀態(tài)為PCIe設(shè)備使用的一種低功耗狀態(tài))時,可以使用Beacon信號,提交喚醒請求。
4SMCLK和SMDAT信號
SMCLK和SMDAT信號與x86處理器的SMBus(SystemMangementBus)相關(guān)。SMBus于1995年由Intel提出,SMBus由SMCLK和SMDAT信號組成。SMBus源于I2C總線,但是與I2C總線存在一些差異。
SMBus的最高總線頻率為100KHz,而I2C總線可以支持400KHz和2MHz的總線頻率。此外SMBus上的從設(shè)備具有超時功能,當(dāng)從設(shè)備發(fā)現(xiàn)主設(shè)備發(fā)出的時鐘信號保持低電平超過35ms時,將引發(fā)從設(shè)備的超時復(fù)位。在正常情況下,SMBus的主設(shè)備使用的總線頻率最低為10KHz,以避免從設(shè)備在正常使用過程中出現(xiàn)超時。
在SMbus中,如果主設(shè)備需要復(fù)位從設(shè)備時,可以使用這種超時機(jī)制。而I2C總線只能使用硬件信號才能實(shí)現(xiàn)這種復(fù)位操作,在I2C總線中,如果從設(shè)備出現(xiàn)錯誤時,單純通過主設(shè)備是無法復(fù)位從設(shè)備的。
SMBus在x86處理器系統(tǒng)中得到了大規(guī)模普及,其主要作用是管理處理器系統(tǒng)的外部設(shè)備,并收集外設(shè)的運(yùn)行信息,特別是一些與智能電源管理相關(guān)的信息。PCI和PCIe插槽也為SMBus預(yù)留了接口,以便于PCI/PCIe設(shè)備與處理器系統(tǒng)進(jìn)行交互。
5JTAG信號
JTAG(JointTestActionGroup)是一種國際標(biāo)準(zhǔn)測試協(xié)議,與IEEE1149.1兼容,主要用于芯片內(nèi)部測試。目前絕大多數(shù)器件都支持JTAG測試標(biāo)準(zhǔn)。JTAG信號由TRST#、TCK、TDI、TDO和TMS信號組成。其中TRST#為復(fù)位信號;TCK為時鐘信號;TDI和TDO分別與數(shù)據(jù)輸入和數(shù)據(jù)輸出對應(yīng);而TMS信號為模式選擇。
JTAG允許多個器件通過JTAG接口串聯(lián)在一起,并形成一個JTAG鏈。目前FPGA和EPLD可以借用JTAG接口實(shí)現(xiàn)在線編程ISP(In-SystemProgramming)功能。處理器也可以使用JTAG接口進(jìn)行系統(tǒng)級調(diào)試工作,如設(shè)置斷點(diǎn)、讀取內(nèi)部寄存器和存儲器等一系列操作。除此之外JTAG接口也可用作“逆向工程”,分析一個產(chǎn)品的實(shí)現(xiàn)細(xì)節(jié),因此在正式產(chǎn)品中,一般不保留JTAG接口。
6PRSNT1#和PRSNT2#信號
PRSNT1#和PRSNT2#信號與PCIe設(shè)備的熱插拔相關(guān)。在基于PCIe總線的Add-in卡中,PRSNT1#和PRSNT2#信號直接相連,而在處理器主板中,PRSNT1#信號接地,而PRSNT2#信號通過上拉電阻接為高。PCIe設(shè)備的熱插拔結(jié)構(gòu)如下圖所示。
PCIE設(shè)備的熱插拔
如上圖所示,當(dāng)Add-In卡沒有插入時,處理器主板的PRSNT2#信號由上拉電阻接為高,而當(dāng)Add-In卡插入時主板的PRSNT2#信號將與PRSNT1#信號通過Add-In卡連通,此時PRSNT2#信號為低。處理器主板的熱插拔控制邏輯將捕獲這個“低電平”,得知Add-In卡已經(jīng)插入,從而觸發(fā)系統(tǒng)軟件進(jìn)行相應(yīng)地處理。
Add-In卡拔出的工作機(jī)制與插入類似。當(dāng)Add-in卡連接在處理器主板時,處理器主板的PRSNT2#信號為低,當(dāng)Add-In卡拔出后,處理器主板的PRSNT2#信號為高。處理器主板的熱插拔控制邏輯將捕獲這個“高電平”,得知Add-In卡已經(jīng)被拔出,從而觸發(fā)系統(tǒng)軟件進(jìn)行相應(yīng)地處理。
不同的處理器系統(tǒng)處理PCIe設(shè)備熱拔插的過程并不相同,在一個實(shí)際的處理器系統(tǒng)中,熱拔插設(shè)備的實(shí)現(xiàn)也遠(yuǎn)比圖43中的示例復(fù)雜得多。值得注意的是,在實(shí)現(xiàn)熱拔插功能時,Add-inCard需要使用“長短針”結(jié)構(gòu)。
如上圖所示,PRSNT1#和PRSNT2#信號使用的金手指長度是其他信號的一半。因此當(dāng)PCIe設(shè)備插入插槽時,PRSNT1#和PRSNT2#信號在其他金手指與PCIe插槽完全接觸,并經(jīng)過一段延時后,才能與插槽完全接觸;當(dāng)PCIe設(shè)備從PCIe插槽中拔出時,這兩個信號首先與PCIe插槽斷連,再經(jīng)過一段延時后,其他信號才能與插槽斷連。系統(tǒng)軟件可以使用這段延時,進(jìn)行一些熱拔插處理。
以上信號中,REFCLK-/REFCLK+差分信號;PERST復(fù)位信號;WAKE#信號;PRSNT1#和PRSNT2#信號;這些信號是必須存在的。
SMCLK;SMDAT;JTAG(TRST#、TCK、TDI、TDO、TMS);這些是擴(kuò)展功能,可有可無。
下圖為PCIE插槽的管腳信號排布。
PCIE管腳信號排布
-
連接器
+關(guān)注
關(guān)注
98文章
14238瀏覽量
135965 -
總線
+關(guān)注
關(guān)注
10文章
2861瀏覽量
87923 -
PCIe
+關(guān)注
關(guān)注
15文章
1211瀏覽量
82371
原文標(biāo)題:PCIE總線,你不得不知道的信號分布及使用情況
文章出處:【微信號:PCBTech,微信公眾號:EDA設(shè)計(jì)智匯館】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論