基于PEX8648交換芯片的數(shù)據(jù)處理模塊設(shè)計
0 引言
本文引用地址:http://butianyuan.cn/article/261848.htmPCI Express是第三代高性能IO總線,在總線結(jié)構(gòu)上采取了根本性的變革,主要體現(xiàn)在兩個方面:一是由并行總線轉(zhuǎn)變?yōu)榇锌偩€;二是采用點到點的互連。將原并行總線結(jié)構(gòu)中橋下面掛連設(shè)備的一條總線變成一條鏈路,一條鏈路可包含一條或多條通路,每條通路由兩對差分信號線組成雙單工的串行傳輸通道,沒有專用的數(shù)據(jù)、地址、控制和時鐘線,總線上各種事務(wù)組成信息包來傳送。點到點的互連方式使得每個設(shè)備由獨立的鏈路連接,獨享帶寬,這是提高傳輸速率的有效解決方案。
隨著數(shù)量不斷增長的PCIe處理單元和外設(shè)芯片,PCIE交換和橋接器提供協(xié)議轉(zhuǎn)換能力,為這些系統(tǒng)的互連帶來了便捷的解決方案,同時豐富了整個應用環(huán)境。PLX8648是PLX公司開發(fā)的PCIE交換芯片,符合PCIE2.0標準。支持12 port,48 lane,并且端口可以靈活配置、支持多播、低延遲、低功耗。支持熱插拔功能,含有三個并行控制器和一個IIC串行擴展模塊,配合使用IO端口控制器,可以在每個下游端口實現(xiàn)熱插拔控制功能。本文采用PEX8648設(shè)計實現(xiàn)了一種可連接多種PCIE設(shè)備的數(shù)據(jù)處理模塊。
1 PCIE交換開關(guān)
交換開關(guān)是一個具有2~n端口的設(shè)備,每個端口連一條PCIE鏈路,在系統(tǒng)中用于多設(shè)備的互聯(lián)。交換開關(guān)可以將事務(wù)從任一個端口路由到另一個端口,交換開關(guān)內(nèi)部可以抽象為圖1的邏輯結(jié)構(gòu),基于一條虛擬PCI總線,該總線與上游端口及各下游端口間均為一虛擬PCI橋,各橋都采用PCI類型01配置空間頭標,配置和枚舉軟件在系統(tǒng)引導時檢測并初始化頭標寄存器。
PLX公司的PEX8648最多支持48通路,12端口的PCI Express Gen 2交換芯片,可選擇配置每個端口的通路數(shù)為X4,X8或X16,也支持X1和x2的通路數(shù),合計480GT/s的帶寬。PEX8648交換開關(guān)具有靈活的體系結(jié)構(gòu),48條通路被平均分配在3個控制端口中,稱之為Station,每個station包含16條通路,這3個控制端口通過內(nèi)部互連到中樞RAM中。每個station中的16條通路可以組合,配置成1到4個PCIE端口。如果上游端口在其他station中,則當前station中的端口將使能為下游端口。其端口配置表如表1所示,表中方括號內(nèi)為通道號。
所有的端口序號都與下游端口內(nèi)部虛擬PCI總線的PCI-PCI橋分派的PCI設(shè)備號相關(guān)聯(lián),例如端口6是一個下游端口,則內(nèi)部PCI-PCI橋分給這個端口設(shè)備的Device Number就是6。PEX8648的任何一個端口都可配置成上游端口,但推薦將端口0配置成上游端口,PCI-PCI橋?qū)ι嫌味丝诓辉O(shè)定設(shè)備號,該端口的設(shè)備號由上游連接的設(shè)備分配。
2 模塊設(shè)計
2.1 功能框圖
本文設(shè)計的數(shù)據(jù)處理模塊采用PowerPC8640處理器,該處理器配置了兩種靈活的高性能IO接口。一種是×1、×2、×4、×8 PCI Expre ss接口,采用PCI-E總線實現(xiàn)板級高性能設(shè)備的串行點對點互連。另一種是1×、4×線串行RapidIO接口,本設(shè)計中均配置為PCIE接口。處理器對外通過PCIE交換開關(guān)互連顯示處理芯片和存儲控制單元,對外提供4路PCIE鏈路,可以連接更多的PCIE設(shè)備,其功能結(jié)構(gòu)如圖2所示。
2.2 PEX8648端口分配
處理器總共連接6種PCIE設(shè)備,將處理器第二路PCIE接口上接PEX8648交換芯片,將PEX8648的port0設(shè)置成上游端口,配置為×8的PCI Express接口,交換開關(guān)下連接PCIE接口的顯示處理器,2路對外×4的PCIE接口和2路×1的PCIE接口,5種設(shè)備連接的端口號分別現(xiàn)配置如圖2所示,Port0為上游端口8640 PCIE1,×8通路;Port4和Port5為×4通路;Port6和port7為×1通路,Port8連接顯示處理器,配置×8通路。
2.3 中斷號映射
PEX8648支持PCI INTx信號中斷機制,它可以向系統(tǒng)中斷控制器發(fā)送中斷信號。這種機制和現(xiàn)存的PCI軟件兼容。PEX8648只用INTA#生成內(nèi)部中斷消息,因為他是一個單功能設(shè)備,但從下游端點引入的消息可以是INTA#、INTB#、INTC#、INTD#,下游端口內(nèi)部生成的INTA#中斷消息將依照下游端口的設(shè)備號在上游端口重新映射。這種重新映射表如表2所示。
根據(jù)表2,PEX8648下掛接的5路PCIE接口連接的設(shè)備均發(fā)送INTA#中斷,因此,按照它們連接的端口號分配如下:Port4對應INTA,Port5對應INTB,Port6對應INTC,Port7對應INTD,Port8對應INTA。
處理器PowerPC8640兩路PCIE接口在根復合節(jié)點模式下接收INTx虛擬中斷信號,并將INTx中斷信號與中斷請求信號IRQn邏輯上進行組合,其映射關(guān)系如下
由上表可以得出在系統(tǒng)中斷分配時,Port4對應IRQ0,Port5對應IRQ1,Port6對應IRQ2,Port7對應IRQ3,Port8對應IRQ0。
3 PCIE接口軟件初始化
PowerPC8640的PCIE控制器上電后需要對配置寄存器以及EP設(shè)備進行初始化。首先初始化PowerPC8640的基地址和空間大小。處理器8640在內(nèi)部定義了多個局部存取窗口,按照優(yōu)先級選取一個窗口作為PCIE的配置窗口,可設(shè)置窗口的基地址和窗口大小。然后掃描PCIE鏈路上的PCIE設(shè)備,這時能掃描到PowerPC8640的PCIE設(shè)備,通過看ID號可判定掃描到PowerPC8640的PCIE設(shè)備后進行PCIE鏈路訓練,訓練通過后進行PowerPC8640的PCIE設(shè)備寄存器設(shè)置,需要把PowerPC8640的PCIE設(shè)備配置為主設(shè)備,設(shè)置PowerPC8640 的PCIE設(shè)備為BUS0,點對點連接的設(shè)備為BUS1。
配置完P(guān)owerPC8640的PCIE設(shè)備后再次掃描PCIE鏈路,查找鏈路上的PCIE交換開關(guān)PEX8648,PEX8648的總線號是BUS1,找到后再按照類型1配置交換開關(guān)頭標區(qū),配置原級總線號,次級總線號寄存器和分配給交換開關(guān)及所有下游設(shè)備的PCI空間基址和大小進行配置,然后對交換開關(guān)連有設(shè)備的端口的原級總線號,次級總線號寄存器和PCI空間基址和大小進行配置。
配置完P(guān)EX8648交換開關(guān)后再次掃描PCIE鏈路,查找鏈路上的PCIE端節(jié)點設(shè)備,可以獲得BUS4、BUS5、BUS6、BUS7、BUS8上連接有PCIE
設(shè)備的ID號,然后各個設(shè)備再配置各自的PCI配置空間即可完成PCIE初始化。整個流程圖如圖3所示。
4 總結(jié)
本文通過PCIE交換開關(guān)PEX8648實現(xiàn)了多PCIE設(shè)備互連的系統(tǒng),并對PEX8648端口特性、互連方式及軟件初始化方法進行了詳細介紹。結(jié)果表明,基于PCIE交換的處理模塊具有靈活的系統(tǒng)拓撲結(jié)構(gòu),降低了系統(tǒng)硬件復雜度和軟件開發(fā)過程,可為同行設(shè)計提供參考。
評論