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