串行總線技術(shù)(一)-串行總線結(jié)構(gòu)(以PCIe為例)串行總線的出現(xiàn)在早期的計(jì)算機(jī)系統(tǒng)中,多數(shù)外圍設(shè)備使用并行總線結(jié)構(gòu)。這些總線包括PCI和PATA(并行ATA)。當(dāng)通信速率較低時(shí),并行總線結(jié)構(gòu)可以設(shè)計(jì)得非常簡單和有效,可以連接大量外圍設(shè)備。通過使用中央仲裁機(jī)制,可以方便地實(shí)現(xiàn)總線設(shè)備間的通信:然而,當(dāng)速率和帶寬不斷增加時(shí),并行結(jié)構(gòu)的潛力不斷被發(fā)掘并不再能夠滿足系統(tǒng)設(shè)計(jì)要求。
并行總線結(jié)構(gòu)的帶寬可以通過增加總線寬度或者提高總線的工作頻率來實(shí)現(xiàn),但這種增加帶寬的方式會(huì)逐漸變得困難。并行總線會(huì)占用很多引腳,而對(duì)現(xiàn)代數(shù)字芯片來說,單一芯片中集成了大量的功能,引腳本身就是一種非常緊張的資源,這為繼續(xù)增加總線寬度帶來了困難。
另外,總線頻率已經(jīng)進(jìn)行了多次增加(如PCI--》PCIX),繼續(xù)對(duì)大量信號(hào)線提高工作頻率也變得更加困難。除此之外,并行結(jié)構(gòu)還有一些固有不足,如沒有包的概念,沒有錯(cuò)誤檢驗(yàn)機(jī)制等。在并行總線中,傳輸?shù)氖菙?shù)據(jù)突發(fā)片段,不是完整的數(shù)據(jù)包,也沒有與所傳輸數(shù)裾相關(guān)的CRC校驗(yàn)結(jié)果以進(jìn)行差錯(cuò)控制。并行總線的不足促進(jìn)串行總線結(jié)構(gòu)的發(fā)展,這不僅克服了原有的缺陷,還帶來了其他好處。如圖所示為并行總線與串行總線示例。
現(xiàn)在的數(shù)字系統(tǒng)中有很多種串行總線。PCI Express(代替了并行PCI總線)、SATA(代替PATA)以及USB等就是一些常用的高速總線。這些總線的速率也從MHz達(dá)到了GHz。
串行總線的優(yōu)缺點(diǎn)優(yōu)點(diǎn)
占用引腳數(shù)量少
串行總線使用一對(duì)信號(hào)線發(fā)送數(shù)據(jù)(TX+ TX-),使用一對(duì)信號(hào)線接收數(shù)據(jù)(RX+ RX-)。而PCI和PCIX等并行總線會(huì)占用大量引腳。
差分信號(hào)
TX和RX信號(hào)線上采用的是差分信號(hào)傳輸方式,這種傳輸方式具有很高的抗噪聲能力。
強(qiáng)錯(cuò)誤檢測(cè)能力
串行協(xié)議使用基干包的數(shù)據(jù)傳輸方式,對(duì)數(shù)據(jù)包采用了CRC校驗(yàn)。相比于PCI中采用的奇偶校驗(yàn),CRC校驗(yàn)具有很強(qiáng)的檢錯(cuò)能力。
糾錯(cuò)與恢復(fù)
因?yàn)椴捎没诎膫鬏敺绞讲⑶規(guī)в蠧RC校驗(yàn),接收設(shè)備能夠檢測(cè)出接收數(shù)據(jù)包中的錯(cuò)誤并通知發(fā)送端出現(xiàn)了傳輸錯(cuò)誤,發(fā)送端可以重新發(fā)送出現(xiàn)錯(cuò)誤的數(shù)據(jù)包。
全雙工數(shù)據(jù)和控制流
數(shù)據(jù)包可以在TX信號(hào)線上傳輸,同時(shí)可以在RX信號(hào)線上接收控制信息。SATA使用類似HOLD的流控原語來實(shí)時(shí)阻止數(shù)據(jù)發(fā)送以避免數(shù)據(jù)溢出。
分割式數(shù)據(jù)傳輸
在分割式數(shù)據(jù)傳輸中,request和completion可以不出現(xiàn)在同一個(gè)數(shù)據(jù)傳輸操作中。這不是串行總線所特有的必要特征。所有的串行總線都使用包和分割式數(shù)據(jù)傳輸協(xié)議進(jìn)行數(shù)據(jù)傳輸。多數(shù)早期的并行總線(PCI、AHB)不支持分割式數(shù)據(jù)傳輸。最新的并行總線,如AXI開始支持這一協(xié)議。
缺點(diǎn)
串行總線也存在一些不利之處。
只支持點(diǎn)到點(diǎn)連接
通過串行總線只能連接兩個(gè)設(shè)備,而對(duì)于并行總線,可以在單一總線上連接多個(gè)設(shè)備,并目。很容易增減總線上的設(shè)備。對(duì)于串行總線,我們需要使用交換機(jī)和多個(gè)總線設(shè)備連接。
更大的延遲
由于串行及分層結(jié)構(gòu)特點(diǎn),串行結(jié)構(gòu)的總線延遲更大一些。
串行總線結(jié)構(gòu)串行總線結(jié)構(gòu)只允許點(diǎn)到點(diǎn)連接,一條串行總線只能連接兩個(gè)設(shè)備,而并行總線可以同吋連接多個(gè)設(shè)備。在串行總線結(jié)構(gòu)中,總線設(shè)備中需要包括兩個(gè)基本電路部件:MAC控制器(通常簡稱為控制器)和PHY(主要實(shí)現(xiàn)模擬收發(fā)功能)。MAC具有分層結(jié)構(gòu),通常包括三個(gè)層次。PHY包括兩個(gè)部分:PCS和PMA。PCS(Physical Coding Sublayer,物理編碼子層)主要實(shí)現(xiàn)編解碼等數(shù)字邏輯功能。PMA主要實(shí)現(xiàn)時(shí)鐘恢復(fù)、均衡和信號(hào)電平檢測(cè)等模擬功能。
下面我們將以PCIe和SATA為例,對(duì)串行總線結(jié)構(gòu)加以分析。
MAC控制器包括三個(gè)層次:PHY邏輯層 、 數(shù)據(jù)鏈路層和事務(wù)層。每一層都有自己特定的功能。
PHY邏輯層
兩個(gè)相互聯(lián)接設(shè)備的PHY邏輯層之間使用PHY層包進(jìn)行通信,稱為有序訓(xùn)練集合,如圖所示。PHY層包被用于建立鏈路和確定交互的操作速度,在訓(xùn)練階段結(jié)束時(shí),雙方進(jìn)入連接階段,此時(shí)它們已經(jīng)做好了傳輸數(shù)據(jù)鏈路層和事務(wù)層包的準(zhǔn)備。PHY層包產(chǎn)生于PHY層,終結(jié)于另一側(cè)的PHY邏輯層,不會(huì)上交給其他層次。
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層使用短的、固定長度(2個(gè)dword/8字節(jié))的包在兩個(gè)設(shè)備間交互鏈路信息,如圖所示。這些包也被稱為DLLP(Data Link Layer Packet,數(shù)據(jù)鏈路層包)。DLLP被用于交換信用信息、ACK、NAK和功率管理協(xié)議。DLLP在本層產(chǎn)生,終止于對(duì)端的同一層,不會(huì)進(jìn)一步向上提交。
事務(wù)層
本層在兩個(gè)設(shè)備間進(jìn)行實(shí)際的數(shù)據(jù)交互,如下圖所示。這些包被稱為TLP(Transaction Layer Packet,事務(wù)層包),TLP為變長包。TLP包括頭域、數(shù)據(jù)凈荷和CRC校驗(yàn)。一個(gè)TLP由start-of-packet符號(hào)開始,以END符號(hào)結(jié)束。
串行總線時(shí)鐘在PCIe中,平臺(tái)提供100MHz參考時(shí)鐘,通過PCIe插槽提供給總線設(shè)備。PCIe端點(diǎn)設(shè)備從PCIe連接器處獲取該參考時(shí)鐘并將其交給PHY PMA層。PMA內(nèi)部有一個(gè)PLL,它根據(jù)輸入的100MHz時(shí)鐘和輸入的RX數(shù)據(jù)流生成250MHz的時(shí)鐘PCLK。PHY將PCLK提供給MAC發(fā)送數(shù)據(jù)(從MAC到PHY)和接收數(shù)據(jù)(從PHY到MAC)都同步于PCLK。對(duì)于PCIe,MAC的接收和發(fā)送電路工作在同一個(gè)時(shí)鐘域。對(duì)于其他串行總線結(jié)構(gòu),如SATA收發(fā)電路時(shí)鐘可能不同。在SATA中,發(fā)送和接收時(shí)鐘是不同的,屬于異步時(shí)鐘。
發(fā)送路徑的微結(jié)構(gòu)MAC和PHY PCS之間的接口是標(biāo)準(zhǔn)的,雖然這不一定必要,但標(biāo)準(zhǔn)化有利于IP核的開發(fā),可提高不同芯片廠商IP核之間的互操作性。對(duì)于PCIe來說,該接口被稱為PIPE接口。
MAC提供的發(fā)送數(shù)據(jù)的位寬為8比特或16比特。PCLK的頻率與數(shù)據(jù)總線的位寬有直接關(guān)系,數(shù)據(jù)位寬為8比特時(shí),PCLK為250MHz數(shù)據(jù)位寬為16比特時(shí),PCLK為125MHz,如圖所示。
這兩個(gè)頻率是PCIe Genl所使用的,在Gen2中,二者都進(jìn)行了翻倍。位寬變換電路模塊可以將16比特的數(shù)據(jù)位寬轉(zhuǎn)換成8比特的位寬,接著將其送入8b/10b編碼器。編碼器將每個(gè)8比特的數(shù)據(jù)轉(zhuǎn)換成為10比特的編碼值并將其傳遞到PHY的PMA層。PMA層使用一個(gè)高速時(shí)鐘(Genl時(shí)為2.5GHz,Gen2時(shí)為5GHz)進(jìn)一步將10比特的編碼結(jié)果轉(zhuǎn)換為單比特串行數(shù)據(jù)并通過TX信號(hào)線發(fā)出。
接收路徑的微結(jié)構(gòu)PMA接收電路實(shí)現(xiàn)比特提取和串并變換功能,將單比特的串行接收數(shù)據(jù)變換成為10比特的并行數(shù)據(jù)。
10比特的數(shù)據(jù)流從PMA接收電路進(jìn)入PCS接收電路。此時(shí)的10比特?cái)?shù)據(jù)流并非是字符對(duì)準(zhǔn)的。在PCS內(nèi)部,10比特?cái)?shù)據(jù)流先后進(jìn)入字符對(duì)準(zhǔn)電路、彈性緩沖區(qū)、10b/8b解碼電路并最終進(jìn)入可選的8b/16b轉(zhuǎn)換電路。
字符對(duì)準(zhǔn)
PCIe接收的數(shù)據(jù)是以10比特的字符為組成單位的。PMA接收電路將接收數(shù)據(jù)組成10比特字符時(shí)沒有按照字符邊界進(jìn)行。字符對(duì)準(zhǔn)邏輯電路查找COMMA字符并以它為基礎(chǔ)進(jìn)行字符邊界對(duì)準(zhǔn)。對(duì)準(zhǔn)后的字符流被送入彈性緩沖區(qū),如圖所示。
彈性緩沖區(qū)
PCIe鏈路兩端所使用時(shí)鐘的標(biāo)稱值均為250MHz。它們可以使用平臺(tái)提供的同一個(gè)時(shí)鐘,或者選擇它們自帶的時(shí)鐘源來生成250MHz的工作時(shí)鐘。當(dāng)使用相互獨(dú)立的時(shí)鐘時(shí),它們之間會(huì)有微小的偏差(偏差可能非常微小,但不會(huì)為0),此時(shí),經(jīng)過一段時(shí)間之后,會(huì)造成數(shù)據(jù)的上溢或下溢??偩€一端的時(shí)鐘頻率可能比另一端略微高一些,頻率低的一端會(huì)出現(xiàn)數(shù)據(jù)緩沖區(qū)上溢,頻率高的一端會(huì)出現(xiàn)數(shù)據(jù)緩沖區(qū)下溢。串行總線中使用彈性緩沖區(qū)來處理時(shí)鐘頻率上的微小差別。我們將對(duì)PCIe和SATA中的彈性緩沖區(qū)加以介紹。
位寬為10比特的接收符號(hào)流被寫入一個(gè)FIFO。按照PCIe協(xié)議,在發(fā)送數(shù)據(jù)時(shí),會(huì)按照一定的間隔定期發(fā)送填充包(稱為SKIP集合)。這些填充包可以在不影響數(shù)據(jù)凈荷、編碼/解碼、擾碼/解擾碼的情況下快速插入和去除。寫入邏輯持續(xù)將10比特的字符寫入FIFO,讀岀邏輯持續(xù)將FIFO中的字符讀出。如果寫入速度比讀出速度快,F(xiàn)IFO中的數(shù)據(jù)深度將逐漸增加。
當(dāng)FIFO中的數(shù)據(jù)深度達(dá)到了預(yù)先設(shè)定的上限時(shí),寫入邏輯會(huì)丟棄1個(gè)或多個(gè)SKIP字符。類似地,當(dāng)寫入速度低于讀出速度時(shí),F(xiàn)IFO中的數(shù)據(jù)深度會(huì)逐漸降低,當(dāng)深度降至預(yù)先設(shè)定的下限時(shí),讀出邏輯不再從FIFO中讀出數(shù)據(jù),它會(huì)暫停讀出數(shù)據(jù),同時(shí)向數(shù)據(jù)通路中插入一個(gè)SKIP符號(hào)。這里的FIFO就是彈性緩沖區(qū),其內(nèi)部數(shù)據(jù)深度是變化的,可以用于調(diào)整讀寫時(shí)鐘頻率的微小偏差,如圖所示。
需要說明的是,這種工作機(jī)制可以用于處理微小的讀寫頻率偏差,不適合處理較大的頻率偏差(較大的時(shí)鐘偏差需要深度較大的彈性緩沖區(qū)并且會(huì)引入較大的延遲)。規(guī)范中對(duì)頻率偏差會(huì)提出限制,例如,PCIe中的頻率偏差應(yīng)小于300PPM。當(dāng)時(shí)鐘偏差被限定在一定PPM之內(nèi)時(shí),SKIP出現(xiàn)的間隔就可以計(jì)算得到。
SATA使用了類似的機(jī)制,它會(huì)在每256個(gè)雙字之間插入兩個(gè)ALIGH原語。ALIGN原語根據(jù)兩邊的頻率差可以快速地被丟棄或插入。
10b/8b解碼和8b/16b轉(zhuǎn)換
彈性緩沖區(qū)的輸出進(jìn)入解碼器電路,它會(huì)將10比特的字符轉(zhuǎn)換成為8比特的數(shù)據(jù)。如果PCS-MAC接口數(shù)據(jù)通道寬度為16比特,那么需要將兩個(gè)連續(xù)的8比特?cái)?shù)據(jù)拼接起來構(gòu)成16比特的數(shù)據(jù)并送給接收MAC如果數(shù)據(jù)通路寬度為8比特,那么不需要做任何處理,直接送給接收MAC。
責(zé)任編輯:haq
-
串行
+關(guān)注
關(guān)注
0文章
237瀏覽量
33980 -
總線
+關(guān)注
關(guān)注
10文章
2904瀏覽量
88421
原文標(biāo)題:串行總線技術(shù)(一)-串行總線結(jié)構(gòu)(以PCIe為例)
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
I2C總線的優(yōu)缺點(diǎn)分析
不同類型傳感器的優(yōu)缺點(diǎn) 常見傳感器類型及其應(yīng)用
不同類型adc的優(yōu)缺點(diǎn)分析
不同類型UPS電源的優(yōu)缺點(diǎn)
FPGA與ASIC的優(yōu)缺點(diǎn)比較
數(shù)碼印的優(yōu)缺點(diǎn)是什么
試比較單層繞組和雙層繞組的優(yōu)缺點(diǎn)及它們的應(yīng)用范圍
分析各種光開關(guān)的優(yōu)缺點(diǎn)和它們的應(yīng)用領(lǐng)域
遠(yuǎn)心鏡頭優(yōu)點(diǎn)和缺點(diǎn)對(duì)比
![遠(yuǎn)心鏡頭<b class='flag-5'>優(yōu)點(diǎn)</b>和<b class='flag-5'>缺點(diǎn)</b>對(duì)比](https://file1.elecfans.com/web2/M00/06/06/wKgaombWyqGAIz5yAAAwvu7B4o8581.png)
評(píng)論