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

評論