本發(fā)明涉及一種的pcie總線與srio總線之間的橋接技術(shù),特別設(shè)計(jì)一種基于現(xiàn)場(chǎng)可編程門陣列fpga的pcie與srio總線橋接系統(tǒng)。
背景技術(shù):
pcie總線是目前在各類計(jì)算機(jī)中大規(guī)模應(yīng)用的一種高速串行局部總線。作為連接cache和主存儲(chǔ)器的系統(tǒng)總線的延伸,其主要功能是連接外部設(shè)備。作為傳統(tǒng)pci總線的升級(jí),pcie在兼容pci總線的同時(shí),大大提升了數(shù)據(jù)傳輸速率與效率,更能有效地保證傳輸?shù)目煽啃浴rio是一種面向嵌入式系統(tǒng)的高速串行互聯(lián)總線,總線系統(tǒng)架構(gòu)靈活,不局限于傳統(tǒng)pc的樹型架構(gòu),各處理單元之間能夠?qū)Φ韧ㄐ?。?shù)據(jù)傳輸速度快,帶寬利用效率高,系統(tǒng)的拓補(bǔ)結(jié)構(gòu)更靈活。
在現(xiàn)有計(jì)算機(jī)系統(tǒng)中,可以通過橋接芯片,在其局部總線上掛接srio控制器,擴(kuò)展出srio總線接口?,F(xiàn)有的srio橋接芯片,ti公司的tsi721pcie-srio橋接芯片,價(jià)格昂貴,只能實(shí)現(xiàn)pcie與srio的橋接,想擴(kuò)展pc中其他接口功能還需要使用其他的芯片與板卡,這無疑增加了成本。
fpga是一種可編程器件,接口極為靈活,通過編程可以在芯片上實(shí)現(xiàn)pcie總線接口及srio總線接口與外界通信。相比于專用的協(xié)議芯片,其功能可以按照需求進(jìn)行裁剪或擴(kuò)展??梢杂糜趯?shí)現(xiàn)兩種總線之間的橋接功能,在滿足性能要求的前提下,能夠提高系統(tǒng)集成度,控制成本。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于fpga實(shí)現(xiàn)的pcie總線與srio總線之間的橋接系統(tǒng),以解決上述現(xiàn)有技術(shù)的問題。
本發(fā)明一種基于fpga的pcie與srio總線橋接系統(tǒng),其中,包括:pcie總線ip核、srio總線ip核、microblaze處理器模塊、srio主模式dma傳輸控制器模塊、srio從模式dma傳輸控制器模塊、數(shù)據(jù)緩存模塊以及bar空間寄存器;該pcieip核用于與上游設(shè)備數(shù)據(jù)交互,將上游設(shè)備發(fā)來的數(shù)據(jù)包轉(zhuǎn)換為axi4總線事務(wù),將內(nèi)部的axi4總線事務(wù)轉(zhuǎn)換為pcie數(shù)據(jù)包,發(fā)送給上游設(shè)備;srioip核,用于與對(duì)端srio設(shè)備通信;srio主模式dma傳輸控制器模塊用于主動(dòng)發(fā)起數(shù)據(jù)請(qǐng)求;srio從模式dma傳輸控制器模塊用于響應(yīng)對(duì)端設(shè)備的數(shù)據(jù)請(qǐng)求;microblaze處理器用于執(zhí)行系統(tǒng)初始化配置以及數(shù)據(jù)傳輸?shù)恼{(diào)度工作;數(shù)據(jù)緩存模塊用于pcie與srio總線進(jìn)行數(shù)據(jù)交互過程中,對(duì)中間過程數(shù)據(jù)進(jìn)行暫存;與對(duì)端srio設(shè)備進(jìn)行數(shù)據(jù)交互時(shí),pcie總線ip核通過向bar空間寄存器寫入配置信息,通知microblaze處理器模塊用配置信息初始化srio主模式dma傳輸控制器模塊和srio從模式dma傳輸控制器模塊的參數(shù),并啟動(dòng)與對(duì)端設(shè)備進(jìn)行數(shù)據(jù)交互;與pcie上游設(shè)備數(shù)據(jù)交互時(shí),srio主模式dma傳輸控制器模塊和srio從模式dma傳輸控制器模塊對(duì)pcieip核發(fā)起axi4總線dma傳輸事務(wù),pcieip核將axi4總線事務(wù)轉(zhuǎn)換為pcie報(bào)文,與上游設(shè)備通信。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,srio主模式傳輸控制模塊包括:第一axi4dma寫入控制器模塊以及第一axi4dma讀取控制器模塊;第一axi4dma寫入控制器模塊,用于向?qū)Χ嗽O(shè)備寫數(shù)據(jù)時(shí),從對(duì)端讀取數(shù)據(jù)時(shí),接收到對(duì)端設(shè)備返回的數(shù)據(jù),解析數(shù)據(jù)包提取數(shù)據(jù)后,向pcieip核發(fā)起dma寫入傳輸,將數(shù)據(jù)通過pcieip核寫入內(nèi)存;第一axi4dma讀取控制器模塊,用于需要向?qū)Χ税l(fā)起寫數(shù)據(jù)操作時(shí),向pcieip核發(fā)起axi4dma讀操作,通過pcie從內(nèi)存中讀取寫向?qū)Χ说臄?shù)據(jù),再組裝成srio數(shù)據(jù)包,送入srioip核發(fā)向?qū)Χ嗽O(shè)備。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,srio從模式傳輸控制模塊包括:第二axi4dma寫入控制器模塊以及第二axi4dma讀取控制器模塊;第二axi4dma寫入控制器模塊,用于響應(yīng)對(duì)端設(shè)備數(shù)據(jù)寫入請(qǐng)求時(shí),解析對(duì)端設(shè)備發(fā)來的寫請(qǐng)求數(shù)據(jù)包,獲取對(duì)端設(shè)備發(fā)來的數(shù)據(jù),向pcieip核發(fā)起axi4dma寫傳輸請(qǐng)求,將數(shù)據(jù)通過pcie寫入上游設(shè)備內(nèi)存;第二axi4dma讀取控制器模塊,用于響應(yīng)對(duì)端設(shè)備讀取數(shù)據(jù)請(qǐng)求時(shí),接收到數(shù)據(jù)請(qǐng)求后,向pcieip核發(fā)起axi4dma讀取傳輸,通過pcie從內(nèi)存中讀取數(shù)據(jù),再拼裝成srio數(shù)據(jù)包,返回給對(duì)端設(shè)備。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,microblaze處理器使用bar空間寄存器中的配置信息初始化,srio傳輸控制器設(shè)置好pcie上游設(shè)備內(nèi)存中用于數(shù)據(jù)交互的緩存信息后,開始響應(yīng)對(duì)端設(shè)備的讀寫請(qǐng)求,捕捉到對(duì)端設(shè)備的寫數(shù)據(jù)請(qǐng)求時(shí),解析出其中的數(shù)據(jù),發(fā)起axi4dma寫操作,通過pcie總線將數(shù)據(jù)寫入內(nèi)存;接收到對(duì)端設(shè)備的讀請(qǐng)求時(shí),發(fā)起axi4dma讀取操作,從pcie上游設(shè)備內(nèi)存中指定位置讀取數(shù)據(jù),打包送回。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,pcie上游設(shè)備通過pcie總線向bar空間寄存器寫入初始化信息,microblaze處理器讀取初始化信息對(duì)系統(tǒng)內(nèi)部各個(gè)模塊進(jìn)行設(shè)置,響應(yīng)pcie上游設(shè)備或srio對(duì)端設(shè)備的請(qǐng)求,發(fā)起主模式或從模式的srio傳輸。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,microblaze處理器包括:microblaze中斷控制器,用于收集系統(tǒng)內(nèi)各個(gè)模塊產(chǎn)生的中斷事件,報(bào)送給microblaze處理器進(jìn)行相應(yīng)的處理;輔助microblaze處理器,用于對(duì)系統(tǒng)工作進(jìn)行調(diào)度;microblaze斷點(diǎn)調(diào)試模塊,用于與用戶進(jìn)行交互,對(duì)系統(tǒng)進(jìn)行監(jiān)測(cè)與調(diào)試。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,還包括:axi4互聯(lián)模塊,用于對(duì)傳輸過程中的axi4總線事務(wù)進(jìn)行路由轉(zhuǎn)發(fā),進(jìn)行系統(tǒng)內(nèi)模塊之間的通信。
根據(jù)本發(fā)明的基于fpga的pcie與srio總線橋接系統(tǒng)的一實(shí)施例,其中,還包括:pciedma傳輸控制器模塊,用于系統(tǒng)擴(kuò)展。
本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng),采用fpga廠家提供的pcie總線與srio總線ip核來實(shí)現(xiàn)對(duì)外數(shù)據(jù)收發(fā),自主設(shè)計(jì)邏輯來實(shí)現(xiàn)兩種總線之間的橋接。能夠提高系統(tǒng)設(shè)計(jì)的靈活性并降低產(chǎn)品的成本。
附圖說明
圖1是本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)的示意圖;
圖2所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備的控制下通過srio向?qū)Χ嗽O(shè)備寫入數(shù)據(jù)的流程圖;
圖3所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備的控制下通過srio從對(duì)端設(shè)備內(nèi)存中讀取數(shù)據(jù)的流程圖;
圖4所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備通過srio總線接收對(duì)端設(shè)備向本地內(nèi)存寫入數(shù)據(jù)的工作流程圖;
圖5所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備通過srio總線響應(yīng)對(duì)端設(shè)備讀取數(shù)據(jù)的工作流程圖。
附圖標(biāo)記
pcieendpoint端口ip核1;srio端口ip核2;
pciedma控制器3;microblaze嵌入式處理器4;
srio主模式傳輸控制5;srio從模式傳輸控制6;
pciebar空間寄存器7;microblaze中斷控制器8;
內(nèi)部數(shù)據(jù)緩存9;串口10;
microblaze斷點(diǎn)調(diào)試控制模塊11;axi寫入dma控制器12;
axi讀取dma控制器13;srio傳輸啟動(dòng)控制與主模式傳輸配置14;
axi寫入dma控制器15;axi讀取dma控制器16;
srio請(qǐng)求捕捉與從模式傳輸配置17;axi4總線互聯(lián)模塊18;
axi4總線互聯(lián)模塊19。
具體實(shí)施方式
為使本發(fā)明的目的、內(nèi)容、和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。
圖1是本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)的示意圖,如圖1所示,基于fpga的pcie與srio總線橋接系統(tǒng)主要包括:pcie總線ip核1、srio總線ip核2、microblaze處理器模塊4、pciedma傳輸控制器模塊3、srio主模式dma傳輸控制器模塊5、srio從模式dma傳輸控制器模塊6、數(shù)據(jù)緩存模塊9、microblaze斷點(diǎn)調(diào)試模塊11、傳輸啟動(dòng)與配置模塊14,請(qǐng)求捕捉與從模式傳輸配置17、axi4總線互聯(lián)模塊18以及axi4總線互聯(lián)模塊19。
如圖1所示,pcieip核1配置成endpoint模式,負(fù)責(zé)與上游設(shè)備數(shù)據(jù)交互,將上游設(shè)備發(fā)來的數(shù)據(jù)包轉(zhuǎn)換為axi4總線事務(wù),同時(shí)將系統(tǒng)內(nèi)部其他模塊發(fā)起的axi4總線事務(wù)轉(zhuǎn)換為pcie數(shù)據(jù)包,發(fā)送給上游設(shè)備。srioip核2負(fù)責(zé)系統(tǒng)與對(duì)端srio設(shè)備通信,srioip核2既可以通過srio主模式dma傳輸控制器模塊5主動(dòng)發(fā)起數(shù)據(jù)請(qǐng)求(主模式),也可以通過srio從模式dma傳輸控制器模塊6響應(yīng)對(duì)端設(shè)備的數(shù)據(jù)請(qǐng)求(從模式)。pciedma傳輸控制器模塊3可用于系統(tǒng)擴(kuò)展,用來根據(jù)應(yīng)用需求擴(kuò)展其他數(shù)據(jù)吞吐量較大的模塊,使其可以通過pcie總線向上游設(shè)備發(fā)起dma傳輸。系統(tǒng)內(nèi)部基于axi4總線搭建。axi4總線上的器件靠axi4總線互聯(lián)模塊18和19連接起來,實(shí)現(xiàn)數(shù)據(jù)傳輸從發(fā)起傳輸?shù)闹髟O(shè)備到指定的從設(shè)備之間的路由。axi4總線互聯(lián)模塊18用于對(duì)和pcieip核1與srio總線ip核2相關(guān)的axi4總線數(shù)據(jù)傳輸進(jìn)行路由;axi4總線互聯(lián)模塊19用于為microblaze處理器模塊4對(duì)其他模塊的訪問進(jìn)行路由控制。傳輸啟動(dòng)與配置模塊14以及請(qǐng)求捕捉與從模式傳輸配置17,包含了主\從模式srio傳輸控制器中的配置寄存器,由microblaze處理器模塊4使用bar空間的信息進(jìn)行設(shè)置,進(jìn)而控制srio主/從模式傳輸控制器5和6的行為(包括啟動(dòng)傳輸,設(shè)置傳輸?shù)刂放c數(shù)據(jù)塊長度等參數(shù)等功能)以及實(shí)施狀態(tài)監(jiān)控。
如圖1所示,本系統(tǒng)與pcie上游設(shè)備和srio對(duì)端設(shè)備之間的通信由srio主模式dma傳輸控制器模塊5和srio從模式dma傳輸控制器模塊6來管理:與對(duì)端srio設(shè)備進(jìn)行數(shù)據(jù)交互時(shí),pcie總線ip核1通過向bar空間寄存器寫入配置信息,通知microblaze處理器模塊4用配置信息初始化srio主模式dma傳輸控制器模塊5和srio從模式dma傳輸控制器模塊6的參數(shù),并啟動(dòng)與對(duì)端設(shè)備進(jìn)行數(shù)據(jù)交互;與pcie上游設(shè)備數(shù)據(jù)交互時(shí),srio主模式dma傳輸控制器模塊5和srio從模式dma傳輸控制器模塊6對(duì)pcieip核1發(fā)起axi4總線dma傳輸事務(wù),pcieip核1將axi4總線事務(wù)轉(zhuǎn)換為pcie報(bào)文,與上游設(shè)備通信。
如圖1所示,srio主模式傳輸控制模塊5中axi4dma寫入控制器模塊12以及axi4dma讀取控制器模塊13分別負(fù)責(zé):向?qū)Χ嗽O(shè)備寫數(shù)據(jù)時(shí),按照初始化時(shí)設(shè)置的數(shù)據(jù)緩存信息,發(fā)起axi4dma讀取,通過pcie總線從上游設(shè)備內(nèi)存中獲取數(shù)據(jù)并按照srioip核2的要求進(jìn)行打包,通過與srioip核2之間的axistream總線送入srioip核2,進(jìn)而發(fā)送給對(duì)端設(shè)備;從對(duì)端設(shè)備讀取數(shù)據(jù)時(shí),發(fā)起讀請(qǐng)求以及接受srioip核2通過axistream總線傳來的響應(yīng)數(shù)據(jù)包,解析出其中的數(shù)據(jù),并發(fā)起axi4dma寫操作,通過pcie總線寫入到上游設(shè)備的內(nèi)存中。
如圖1所示,srio從模式傳輸控制模塊6的架構(gòu)與srio主模式傳輸控制模塊5類似。microblaze處理器4使用pciebar空間中的配置信息對(duì)其初始化,設(shè)置好pcie上游設(shè)備內(nèi)存中用于數(shù)據(jù)交互的緩存信息后就可以開始響應(yīng)對(duì)端設(shè)備的讀寫請(qǐng)求。捕捉到對(duì)端設(shè)備的寫數(shù)據(jù)請(qǐng)求時(shí),解析出其中的數(shù)據(jù),發(fā)起axi4dma寫操作,通過pcie總線將數(shù)據(jù)寫入內(nèi)存;接收到對(duì)端設(shè)備的讀請(qǐng)求時(shí),發(fā)起axi4dma讀取操作,從pcie上游設(shè)備內(nèi)存中指定位置讀取數(shù)據(jù),打包送回。
srio從模式dma寫入控制器模塊16用于接收到對(duì)端設(shè)備寫入的數(shù)據(jù)時(shí),接收srio總線ip核2通過axistream總線傳來的寫入數(shù)據(jù)包,解析出其中的數(shù)據(jù),按照初始化時(shí)設(shè)置的數(shù)據(jù)緩存信息,發(fā)起axi4dma寫操作,通過pcie總線向上游設(shè)備內(nèi)存中寫入數(shù)據(jù);srio從模式axi4dma讀取控制器模塊15用于接收到對(duì)端的讀取請(qǐng)求時(shí),發(fā)起axi4dma讀取,通過pcie總線從上游設(shè)備內(nèi)存中獲取數(shù)據(jù)并打包組成srio響應(yīng)數(shù)據(jù)包,送入srio總線ip核2,返回給對(duì)端設(shè)備。
如圖1所示,microblaze處理器4負(fù)責(zé)系統(tǒng)初始化配置的執(zhí)行以及數(shù)據(jù)傳輸?shù)恼{(diào)度工作。系統(tǒng)工作時(shí),pcie上游設(shè)備要通過pcie總線向bar空間寄存器寫入初始化信息,microblaze處理器4讀取這些初始化信息對(duì)系統(tǒng)內(nèi)部各個(gè)模塊進(jìn)行設(shè)置。之后,響應(yīng)pcie上游設(shè)備或srio對(duì)端設(shè)備的請(qǐng)求,發(fā)起主模式或從模式的srio傳輸。microblaze處理器4有三個(gè)附屬模塊:microblaze中斷控制器8負(fù)責(zé)收集系統(tǒng)內(nèi)各個(gè)模塊產(chǎn)生的中斷事件,報(bào)送給microblaze處理器4進(jìn)行相應(yīng)的處理,輔助microblaze處理器4對(duì)系統(tǒng)工作進(jìn)行調(diào)度;串口10與microblaze斷點(diǎn)調(diào)試模塊11負(fù)責(zé)與用戶進(jìn)行交互,對(duì)系統(tǒng)進(jìn)行監(jiān)測(cè)與調(diào)試。數(shù)據(jù)緩存模塊9則用于pcie與srio總線進(jìn)行數(shù)據(jù)交互過程中,對(duì)中間過程數(shù)據(jù)進(jìn)行暫存,以便于工作流程的協(xié)調(diào)。
如圖1所示,兩個(gè)axi4互聯(lián)模塊18和19負(fù)責(zé)對(duì)傳輸過程中的axi4總線事務(wù)進(jìn)行路由轉(zhuǎn)發(fā),實(shí)現(xiàn)系統(tǒng)中各模塊之間的通信。
如圖1所示,本系統(tǒng)作為請(qǐng)求發(fā)起者,向?qū)Χ嗽O(shè)備發(fā)出數(shù)據(jù)讀寫請(qǐng)求時(shí),srio工作于主模式。向?qū)Χ嗽O(shè)備寫數(shù)據(jù)時(shí),數(shù)據(jù)隨著請(qǐng)求包發(fā)送至對(duì)端設(shè)備,對(duì)端設(shè)備返回一個(gè)響應(yīng)包,表示請(qǐng)求包成功被對(duì)端設(shè)備接收;從對(duì)端設(shè)備讀取數(shù)據(jù)時(shí),發(fā)送不帶數(shù)據(jù)的請(qǐng)求包到對(duì)端設(shè)備,對(duì)端設(shè)備將數(shù)據(jù)放在響應(yīng)包中返回,請(qǐng)求發(fā)起者提取響應(yīng)包中的數(shù)據(jù)并送入內(nèi)存,請(qǐng)求完成。
如圖1所示,考慮到srio協(xié)議中對(duì)每個(gè)數(shù)據(jù)包攜帶的最大數(shù)據(jù)負(fù)載字節(jié)數(shù)的限制以及傳輸?shù)刂穼?duì)齊等限制,應(yīng)用中一個(gè)待傳輸?shù)臄?shù)據(jù)塊通常會(huì)被拆分成多個(gè)srio包進(jìn)行傳送。將一個(gè)待傳輸數(shù)據(jù)塊拆分成多個(gè)請(qǐng)求的工作由microblaze處理器4進(jìn)行控制。srio主模式dma傳輸控制器模塊5和srio從模式dma傳輸控制器模塊6所面對(duì)的僅僅是每一次請(qǐng)求的傳輸參數(shù),如緩存區(qū)地址、傳輸長度等。
如圖1所示,一個(gè)數(shù)據(jù)塊對(duì)應(yīng)的所有請(qǐng)求完成后,由microblaze處理器4控制向?qū)Χ税l(fā)送一個(gè)srio門鈴包,并接受驗(yàn)證對(duì)端返回的門鈴包,實(shí)現(xiàn)雙方握手,確保通信可靠完成。最后向pcie上游設(shè)備發(fā)送pcie中斷,通知上游設(shè)備數(shù)據(jù)塊傳輸完成。
如圖1所示,向?qū)Χ嗽O(shè)備寫入數(shù)據(jù)前,首先要獲取對(duì)端設(shè)備緩存區(qū)地址。這里事先要與對(duì)端設(shè)備進(jìn)行約定,讓對(duì)端設(shè)備準(zhǔn)備好地址與長度固定的緩存區(qū),或者讓對(duì)端設(shè)備準(zhǔn)備好固定地址的寄存器存儲(chǔ)在內(nèi)存中動(dòng)態(tài)開辟的緩存區(qū)的信息。該寄存器位于設(shè)備指定的地址處,訪問該寄存器不涉及鏈路兩端設(shè)備內(nèi)存數(shù)據(jù)交互,在本系統(tǒng)中亦不涉及到pcie總線讀寫操作。
圖2所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備的控制下通過srio向?qū)Χ嗽O(shè)備寫入數(shù)據(jù)的流程圖,如圖1以及圖2所示,srio主模式傳輸控制器模塊5中,axi4dma讀取控制器發(fā)起axi4dma傳輸,通過pcie總線從上游設(shè)備內(nèi)存中讀取待發(fā)送的數(shù)據(jù),在srio主模式傳輸控制器模塊5中組裝成規(guī)定格式的數(shù)據(jù)包,再通過axistream端口送給srioip核2發(fā)送出去。接收到對(duì)端處理單元的響應(yīng)包后,一次srio寫請(qǐng)求操作完成。microblaze處理器4檢測(cè)到所有請(qǐng)求操作均完成后,進(jìn)行門鈴握手操作,發(fā)送pcie中斷,結(jié)束傳輸。
圖3所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備的控制下通過srio從對(duì)端設(shè)備內(nèi)存中讀取數(shù)據(jù)的流程圖,如圖3所示,與寫入數(shù)據(jù)的工作過程類似,對(duì)端設(shè)備應(yīng)通過事先約定,準(zhǔn)備好一個(gè)固定地址的緩存區(qū)或者動(dòng)態(tài)分配數(shù)據(jù)緩存區(qū)然后將緩存區(qū)信息寫入固定地址的寄存器,供請(qǐng)求方讀取,此過程同樣僅涉及操作srio從固定地址請(qǐng)求數(shù)據(jù),不涉及pcie及內(nèi)存的數(shù)據(jù)交互。系統(tǒng)收到上游設(shè)備欲從srio對(duì)端設(shè)備讀取數(shù)據(jù)的請(qǐng)求后,本系統(tǒng)中的srio主模式傳輸控制器模塊5通過srioip核2向?qū)Χ嗽O(shè)備發(fā)送讀請(qǐng)求,接收到對(duì)端設(shè)備的響應(yīng)包后,解析響應(yīng)包,axi4dma寫入控制器12發(fā)起axi4dma傳輸,按照包頭所指示的信息將解析出的數(shù)據(jù)通過pcie總線寫入到上游設(shè)備的內(nèi)存中,完成一次srio請(qǐng)求。所有請(qǐng)求均完成后,進(jìn)行門鈴握手操作并發(fā)送pcie中斷,結(jié)束傳輸。
如圖1所示,本系統(tǒng)響應(yīng)對(duì)端設(shè)備讀寫請(qǐng)求時(shí),srio工作于從模式。接收對(duì)端設(shè)備寫入的數(shù)據(jù)時(shí),數(shù)據(jù)隨請(qǐng)求包一起通過srio傳送至系統(tǒng)中的srioip核2,srio從模式傳輸控制器模塊6隨后對(duì)數(shù)據(jù)包進(jìn)行解析,將數(shù)據(jù)送入pcie上游設(shè)備內(nèi)存,并根據(jù)請(qǐng)求類型返回響應(yīng)包;對(duì)端設(shè)備讀取數(shù)據(jù)時(shí),先發(fā)送請(qǐng)求包,srioip核2接收并由srio從模式傳輸控制器模塊6解析請(qǐng)求包后,根據(jù)請(qǐng)求包的要求從pcie上游設(shè)備內(nèi)存中讀取數(shù)據(jù),加上包頭合成響應(yīng)包返回對(duì)端設(shè)備,完成請(qǐng)求。
如圖1所示,工作于從模式時(shí),srio數(shù)據(jù)包的拆分由對(duì)端請(qǐng)求發(fā)起者控制。此時(shí),本系統(tǒng)所做的工作僅僅是解析每一次請(qǐng)求,然后傳輸處理請(qǐng)求響應(yīng)的數(shù)據(jù)。請(qǐng)求完成后,等待設(shè)備發(fā)起者發(fā)來的srio門鈴包,返回一個(gè)門鈴包作為握手應(yīng)答,并向上游設(shè)備發(fā)送pcie中斷,完成傳輸。
圖4所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備通過srio總線接收對(duì)端設(shè)備向本地內(nèi)存寫入數(shù)據(jù)的工作流程圖,如圖1以及圖4所示,對(duì)端設(shè)備寫入數(shù)據(jù)前,要先獲取可供寫入的目標(biāo)地址。這個(gè)地址應(yīng)為事先約定好的固定地址或由pcie上游設(shè)備動(dòng)態(tài)開辟的地址,但存放于一個(gè)地址固定的寄存器中。寄存器位于指定的地址處,對(duì)端設(shè)備通過寄存器獲取緩存區(qū)信息的過程不涉及對(duì)pcie傳輸及內(nèi)存的訪問。
如圖1以及圖4所示,srio從模式傳輸控制器模塊6接收到srioip核2捕捉到的對(duì)端設(shè)備發(fā)來的寫入請(qǐng)求包后,解析出數(shù)據(jù),axi4dma寫入控制器16發(fā)起axi4dma傳輸,通過pcie總線將數(shù)據(jù)寫入上游設(shè)備的內(nèi)存中。傳輸結(jié)束,系統(tǒng)會(huì)收到對(duì)端設(shè)備發(fā)來的srio門鈴包通知傳輸結(jié)束。返回一個(gè)門鈴包進(jìn)行握手確認(rèn)后,再向上游設(shè)備發(fā)送pcie中斷,結(jié)束傳輸。
圖5所示為本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng)在pcie上游設(shè)備通過srio總線響應(yīng)對(duì)端設(shè)備讀取數(shù)據(jù)的工作流程圖,如圖1以及圖5所示,與響應(yīng)對(duì)端設(shè)備數(shù)據(jù)寫入請(qǐng)求的過程類似,對(duì)端設(shè)備發(fā)起讀請(qǐng)求之前,首先要讀取在srio主模式dma傳輸控制器模塊5和srio從模式dma傳輸控制器模塊6中實(shí)現(xiàn)約定好的固定地址寄存器,獲取pcie上游設(shè)備內(nèi)存中數(shù)據(jù)緩存的位置、長度以及是否就緒等信息,然后根據(jù)緩存區(qū)的信息發(fā)送請(qǐng)求包。
如圖5所示,srio從模式傳輸控制器模塊6通過srioip核2接收到對(duì)端設(shè)備的讀請(qǐng)求后,axi4dma讀取傳輸控制器模塊發(fā)起axi4dma傳輸,通過pcie總線從上游設(shè)備的數(shù)據(jù)緩存中讀取數(shù)據(jù),加上包頭組裝成數(shù)據(jù)包,返回給對(duì)端設(shè)備。dma傳輸由microblaze處理器4通過設(shè)置srio從模式傳輸控制器模塊6中的寄存器進(jìn)行參數(shù)配置和控制。所有請(qǐng)求完成后,以門鈴握手和pcie中斷結(jié)束傳輸。
本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng),采用xilinx提供的pcie總線ip核與srio總線ip核實(shí)現(xiàn)對(duì)外的數(shù)據(jù)交互,內(nèi)部架構(gòu)中的核心部分為srio主(從)模式傳輸控制器模塊。srio傳輸控制器的一端與srioip核通過axistream總線進(jìn)行數(shù)據(jù)包的傳遞,包括向?qū)Χ税l(fā)送讀或?qū)懻?qǐng)求包,與從對(duì)端接收讀寫請(qǐng)求包;另一端為axi4總線,用于對(duì)pcieip核發(fā)起dma傳輸,并經(jīng)pcieip核轉(zhuǎn)換為pcie數(shù)據(jù)包,實(shí)現(xiàn)對(duì)pcie上游設(shè)備內(nèi)存的讀寫。srio傳輸控制器按照srioip核通信格式的要求,進(jìn)行數(shù)據(jù)包的解析及拼裝,實(shí)現(xiàn)對(duì)其兩端axi4總線與axistream總線的橋接,進(jìn)而實(shí)現(xiàn)pcie總線與srio總線的橋接。
在一個(gè)計(jì)算機(jī)系統(tǒng)中,其對(duì)外接口通常除了srio之外還存在多種總線接口,如以太網(wǎng)、視頻、數(shù)據(jù)加解密等??梢栽趂pga中按照需求靈活配置pcie與srio的通信帶寬,并集成所需的功能模塊。若采用專用芯片進(jìn)行橋接的方案,通過srio收發(fā)的數(shù)據(jù)必須經(jīng)過cpu內(nèi)存后才能被計(jì)算機(jī)系統(tǒng)中其他功能模塊所使用的。而采用本方案,可以將axi總線上掛接的存儲(chǔ)器memorybuffer模塊映射為srio的數(shù)據(jù)緩存,這樣通過srio收發(fā)的數(shù)據(jù)即可通過pcie與cpu內(nèi)存進(jìn)行交互、也可以供集成于fpga內(nèi)部的其他功能模塊通過axi總線訪問,比如對(duì)數(shù)據(jù)進(jìn)行硬件加解密,進(jìn)行安全驗(yàn)證,或者實(shí)現(xiàn)與其他通信接口進(jìn)行橋接等功能,增加了系統(tǒng)設(shè)計(jì)的靈活性。
本發(fā)明基于fpga的pcie與srio總線橋接系統(tǒng),相比于采用專用芯片進(jìn)行橋接并搭建系統(tǒng)的方案,采用fpga進(jìn)行橋接無疑省去了專用芯片的開銷,提高了系統(tǒng)集成度,減小了電路板面積、電路板數(shù)量和元器件數(shù)目,節(jié)約了產(chǎn)品的成本。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。