專利名稱:基于fpga的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本 發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種基于FPGA實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存 的系統(tǒng)及方法。
背景技術(shù):
在通信技術(shù)領(lǐng)域中,經(jīng)常需要對多路具有突發(fā)、變長、非定時(shí)等特性的通信數(shù)據(jù)業(yè) 務(wù)進(jìn)行緩存處理,以便后級模塊固定速率的處理;特別對于不同速率的協(xié)議轉(zhuǎn)換,更需要對 多路突發(fā)數(shù)據(jù)業(yè)務(wù)進(jìn)行緩存處理;在現(xiàn)有的技術(shù)中,對多路突發(fā)數(shù)據(jù)業(yè)務(wù)的緩存,有多種緩 存方法,其實(shí)現(xiàn)方法分別為。(1)采用專用的ASIC芯片以堆疊的方式來實(shí)現(xiàn);但專用的ASIC芯片提供的 通道數(shù)有限,每片ASIC芯片需要獨(dú)立外掛存儲器芯片;在實(shí)現(xiàn)更多路(N>2)突發(fā)數(shù)據(jù)業(yè)務(wù) 時(shí),就需要更多的ASIC芯片與存儲器芯片,造成硬件成本高,單板布線難度大。(2)采用FPGA片內(nèi)RAM來實(shí)現(xiàn);目前的FPGA內(nèi)部一般都提供一定數(shù)目,固定 容量大小的RAM,利用這些RAM資源的組合,每路獨(dú)立采用數(shù)據(jù)隊(duì)列的方式,來實(shí)現(xiàn)多路數(shù) 據(jù)業(yè)務(wù)的緩存(見圖1);但FPGA提供的片內(nèi)RAM資源十分有限,一方面造成分配給多路數(shù) 據(jù)的數(shù)據(jù)隊(duì)列深度有限,無法應(yīng)對像視頻數(shù)據(jù)一樣的突發(fā)數(shù)據(jù);另一方面如果要滿足數(shù)據(jù) 隊(duì)列的一定深度,緩存多路數(shù)據(jù)的通道數(shù)量就變得有限,無法實(shí)現(xiàn)通道數(shù)更多的情況。(3)采用FPGA片內(nèi)RAM配合片外RAM芯片來實(shí)現(xiàn);如圖2所采用的方式,多 路突發(fā)數(shù)據(jù)業(yè)務(wù)由FPGA內(nèi)部邏輯實(shí)現(xiàn)的仲裁器以固定優(yōu)先級方式緩存到片外RAM芯片中, 每路突發(fā)數(shù)據(jù)的每個(gè)數(shù)據(jù)包長度信息存儲于由FPGA片內(nèi)RAM組成的數(shù)據(jù)包長度RAM中;該 方式相比方法(1)、(2)要靈活,但仍存在缺陷一,由FPGA片內(nèi)RAM實(shí)現(xiàn)的數(shù)據(jù)包長度RAM, 其深度決定了緩存到片外RAM芯片的數(shù)據(jù)包個(gè)數(shù),由于FPGA片內(nèi)RAM資源有限,一方面限 制了數(shù)據(jù)包長度RAM的深度,即限制了緩存到片外RAM數(shù)據(jù)包的個(gè)數(shù);另一方面在滿足數(shù)據(jù) 包長度RAM深度要求時(shí),又限制了通道數(shù)個(gè)數(shù);二,多路突發(fā)數(shù)據(jù)采用固定優(yōu)先級方式緩存 到片外RAM時(shí),優(yōu)先級高的通道在數(shù)據(jù)業(yè)務(wù)量大的情況下,會造成優(yōu)先級低的通道的數(shù)據(jù) 業(yè)務(wù)得不到及時(shí)處理,容易出現(xiàn)“饑飽”現(xiàn)象。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述方法所存在的缺點(diǎn),提供一種基于FPGA實(shí)現(xiàn)多路突 發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng)及方法。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的一種基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系 統(tǒng),包括用于緩存多路突發(fā)數(shù)據(jù)的片外緩存器和提供RAM資源的FPGA芯片;所述FPGA芯片 包括片外緩存控制器,多路突發(fā)數(shù)據(jù)緩存管理電路,以及與數(shù)據(jù)通道數(shù)一致的數(shù)據(jù)包接收 及緩沖電路、數(shù)據(jù)包寫控制電路、數(shù)據(jù)包緩沖及發(fā)送電路、數(shù)據(jù)包讀控制電路;其中,
所述數(shù)據(jù)包接收及緩沖電路,其輸入端接收外界的突發(fā)數(shù)據(jù)輸入、輸出端與數(shù)據(jù)包寫 控制電路連接,包括數(shù)據(jù)包接收控制電路以及接收緩沖區(qū),用于在接收緩沖區(qū)為空時(shí)接收外界輸入的突發(fā)數(shù)據(jù)并將其寫入接收緩沖區(qū)中,且在寫入完整的數(shù)據(jù)包時(shí)置位整包標(biāo)志位;
所述數(shù)據(jù)包寫控制電路,其輸入端與數(shù)據(jù)包接收及緩沖電路連接、輸出端與多路突發(fā) 數(shù)據(jù)緩存管理電路連接,用于在所述整包標(biāo)志位被置位且片外存儲器中對應(yīng)通道的緩存區(qū) 為非滿狀態(tài)時(shí),在向多路突發(fā)數(shù)據(jù)包緩沖管理電路申請并得到授權(quán)的情況下,讀取接收緩 沖區(qū)中完整的數(shù)據(jù)包并將其與其長度信息組合成新的數(shù)據(jù)流緩存到片外存儲器中對應(yīng)通 道的緩存區(qū)中,同時(shí)生成下一個(gè)寫操作的行地址信息;
所述數(shù)據(jù)包緩沖及發(fā)送電路,其輸入端與數(shù)據(jù)包讀控制電路連接、輸出端與外界端口 連接,包括發(fā)送緩沖區(qū)以及數(shù)據(jù)包發(fā)送控制電路,用于緩沖完整的數(shù)據(jù)包并將其發(fā)送至外 界端口 ;
所述數(shù)據(jù)包讀控制電路,其輸入端與多路突發(fā)數(shù)據(jù)緩存管理電路連接、輸出端與數(shù)據(jù) 包緩沖及發(fā)送電路連接,用于發(fā)送緩沖區(qū)為空且片外存儲器中對應(yīng)通道的緩存區(qū)為非空狀 態(tài)時(shí),在向多路突發(fā)數(shù)據(jù)包緩沖管理電路申請并得到授權(quán)的情況下從片外存儲器中對應(yīng)通 道的緩存區(qū)中讀取完整的數(shù)據(jù)包后寫入發(fā)送緩沖區(qū)中,同時(shí)生成下一個(gè)讀操作的行地址信 息;
所述多路突發(fā)數(shù)據(jù)包緩存管理電路,分別連接至多路數(shù)據(jù)包寫控制電路及數(shù)據(jù)包讀 控制電路,并與片外緩存控制器連接,用于在接收到多路突發(fā)數(shù)據(jù)的讀包申請/寫包申請 時(shí)對發(fā)送申請的突發(fā)數(shù)據(jù)通道進(jìn)行仲裁及授權(quán)、再對授權(quán)的通道授權(quán)具體的讀操作/寫操 作,生成當(dāng)前讀/寫操作的列地址信息,將數(shù)據(jù)包寫入片外緩存器或?qū)?shù)據(jù)包從片外緩存 器中讀取出來;
所述片外緩存控制器,與多路突發(fā)數(shù)據(jù)包緩存管理電路和片外緩存器分別連接,用于 對片外緩存器進(jìn)行控制。其中,所述多路突發(fā)數(shù)據(jù)緩存管理電路包括多路突發(fā)數(shù)據(jù)組合仲裁器、讀寫仲裁 電路、突發(fā)管理電路、緩存用戶接口、緩存區(qū)狀態(tài)管理電路、寫端數(shù)據(jù)與地址選擇器、讀端數(shù) 據(jù)與地址選擇器、讀授權(quán)控制電路、寫授權(quán)控制電路。其中,所述多路突發(fā)數(shù)據(jù)組合仲裁器,用于在當(dāng)前僅有單個(gè)通道請求采用固定優(yōu) 先級的方式或者在當(dāng)前通道請求的數(shù)量大于1時(shí)采用循環(huán)優(yōu)先級的方式對各突發(fā)數(shù)據(jù)通 道進(jìn)行仲裁及授權(quán),并將授權(quán)的突發(fā)數(shù)據(jù)通道信息提供給讀寫仲裁電路,由其授權(quán)具體的 讀操作或者寫操作。所述突發(fā)管理電路,用于在讀操作或者寫操作過程中,生成當(dāng)前操作的片外緩存 器的列地址,同時(shí)由緩存用戶接口據(jù)此完成片外緩存器地址的轉(zhuǎn)化并生成片外緩存控制器 的接口信號。所述緩存區(qū)狀態(tài)管理電路,包含與突發(fā)數(shù)據(jù)通道數(shù)一致的N個(gè)包計(jì)數(shù)器,用于對 片外緩存器中對應(yīng)于各路突發(fā)數(shù)據(jù)通道的緩存區(qū)中的數(shù)據(jù)包的個(gè)數(shù)分別進(jìn)行實(shí)時(shí)統(tǒng)計(jì),在 每路對應(yīng)的包計(jì)數(shù)器值大于最大閾值/小于最小閾值時(shí)通知對應(yīng)的寫授權(quán)控制電路/讀授 權(quán)控制電路及數(shù)據(jù)包寫控制電路/數(shù)據(jù)包讀控制電路其相應(yīng)的緩存區(qū)為滿狀態(tài)/空狀態(tài), 多路突發(fā)數(shù)據(jù)組合仲裁器將據(jù)此狀態(tài)中止響應(yīng)對應(yīng)通道的數(shù)據(jù)包寫控制電路/數(shù)據(jù)包讀 控制電路的寫包/讀包申請,同時(shí)對應(yīng)通道的數(shù)據(jù)包寫控制電路/數(shù)據(jù)包讀控制電路將據(jù) 此滿狀態(tài)/空狀態(tài)中止發(fā)送寫包/讀包申請。
所述寫端數(shù)據(jù)與地址選擇器/讀端數(shù)據(jù)與地址選擇器用于在寫操作/讀操作時(shí)根 據(jù)多路突發(fā)數(shù)據(jù)組合仲裁器的仲裁結(jié)果選擇所授權(quán)通道的對應(yīng)的數(shù)據(jù)包與行地址。 其中,所述接收緩沖區(qū)由2個(gè)雙端口的以乒乓方式工作的片內(nèi)RAM存儲器組成;所 述發(fā)送緩沖區(qū)由1個(gè)雙端口的片內(nèi)RAM存儲器組成。其中,所述組成接收緩沖區(qū)的片內(nèi)RAM存儲器的寫端口的地址線有11根、輸入數(shù) 據(jù)寬度為8位,讀端口的地址線有8根、輸出數(shù)據(jù)寬度為64位。所述組成發(fā)送緩沖區(qū)的片內(nèi)RAM存儲器的寫端口的地址線有8根、寫數(shù)據(jù)寬度為 64位,讀端口的地址線有11根、讀數(shù)據(jù)寬度為8位。其中,所述片外緩存器由2片16位的片外存儲器組成。其中,所述片外存儲器劃分為多個(gè)相同容量大小的存儲塊,且其中連續(xù)的多個(gè)存 儲塊組成緩存區(qū)并分配給各路突發(fā)數(shù)據(jù)通道。其中,所述片外存儲器劃分為多個(gè)2048字節(jié)大小的存儲塊。一種如上所述系統(tǒng)的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的方法,包括接收數(shù)據(jù)處理的 步驟、寫數(shù)據(jù)申請的步驟、多路突發(fā)數(shù)據(jù)仲裁管理的步驟、讀數(shù)據(jù)申請的步驟以及發(fā)送數(shù)據(jù) 處理的步驟;其中,
所述接收數(shù)據(jù)處理的步驟包括在外界有突發(fā)數(shù)據(jù)輸入時(shí),判斷接收緩沖區(qū)是否為空 且片外緩存器中對應(yīng)通道的緩存區(qū)是否非滿,若否,則丟棄當(dāng)前輸入的數(shù)據(jù)包;若是,則將 該數(shù)據(jù)包按字節(jié)寫入接收緩沖區(qū)中,同時(shí)統(tǒng)計(jì)該數(shù)據(jù)包的字節(jié)數(shù),且在接收完一個(gè)完整的 數(shù)據(jù)包時(shí)置位整包標(biāo)志位;
所述寫數(shù)據(jù)申請的步驟包括實(shí)時(shí)查詢接收緩沖區(qū)中的整包標(biāo)志位,當(dāng)檢測到置位時(shí) 向多路突發(fā)數(shù)據(jù)包緩存管理電路發(fā)起寫包申請,并在通過申請并得到授權(quán)時(shí),讀取接收緩 沖區(qū)中完整的數(shù)據(jù)包內(nèi)容并將其與該數(shù)據(jù)包的長度信息組合成新的數(shù)據(jù)流緩存到片外存 儲器中對應(yīng)于該突發(fā)數(shù)據(jù)通道的緩存區(qū)中;
所述多路突發(fā)數(shù)據(jù)仲裁管理的步驟包括實(shí)時(shí)查詢各路通道的讀/寫請求,先進(jìn)行對 請求的仲裁與通道的授權(quán),再對授權(quán)的通道進(jìn)行讀寫仲裁,生成讀操作授權(quán)或者寫操作授 權(quán);
所述讀數(shù)據(jù)申請的步驟包括檢測發(fā)送緩沖區(qū)是否為空且片外緩存器中對應(yīng)通道的緩 存區(qū)是否非空,若是,則向多路突發(fā)數(shù)據(jù)包緩存管理電路發(fā)起讀包申請,并在通過申請并得 到授權(quán)時(shí),從片外緩存器中對應(yīng)通道的緩存區(qū)中讀取完整的數(shù)據(jù)包并從其中分離出數(shù)據(jù)包 內(nèi)容與數(shù)據(jù)長度信息,記錄數(shù)據(jù)長度信息,將數(shù)據(jù)包內(nèi)容寫入發(fā)送緩沖區(qū)中;
所述發(fā)送數(shù)據(jù)處理的步驟包括檢測發(fā)送緩沖區(qū)中是否有完整的數(shù)據(jù)包,然后從發(fā)送 緩沖區(qū)中讀取數(shù)據(jù)包并將其發(fā)送至外界的輸出端。其中,所述多路突發(fā)數(shù)據(jù)仲裁管理的步驟中,根據(jù)當(dāng)前通道請求的數(shù)量,采用循環(huán) 優(yōu)先級或者固定優(yōu)先級的方式來實(shí)現(xiàn)對請求的仲裁與通道的授權(quán)。其中,若當(dāng)前僅有單個(gè)通道請求,則采用固定優(yōu)先級的方式來實(shí)現(xiàn)對請求的仲裁 與通道的授權(quán);若當(dāng)前通道請求的數(shù)量大于1,則采用循環(huán)優(yōu)先級的方式來實(shí)現(xiàn)對請求的 仲裁與通道的授權(quán)。其中,所述方法還包括系統(tǒng)初始化的步驟,該步驟進(jìn)一步包括
上電復(fù)位后,系統(tǒng)立即進(jìn)行初始化過程,將FPGA芯片內(nèi)的各個(gè)通道的行、列地址清零,緩存區(qū)狀態(tài)管理中的包計(jì)數(shù)器、長度計(jì)數(shù)器清零,RAM讀寫地址、通道讀寫請求全部清零,各緩沖區(qū)、緩存區(qū)設(shè)為空狀態(tài),設(shè)置各路緩存區(qū)水線深度,將內(nèi)部各控制邏輯設(shè)于空閑狀態(tài)。本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比,有益效果在于
1)本發(fā)明采用FPGA實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)的緩存,尤其適合于數(shù)據(jù)通信設(shè)備中的多 路通信數(shù)據(jù)的緩存處理,可實(shí)現(xiàn)多路(N > 2)突發(fā)數(shù)據(jù)業(yè)務(wù)的緩存,實(shí)現(xiàn)相對靈活,可根據(jù) 要求配置更多的通道。2)本發(fā)明采用循環(huán)優(yōu)先級與固定優(yōu)先級相結(jié)合的方式來實(shí)現(xiàn)對多路突發(fā)數(shù)據(jù)的 操作仲裁,使各路的突發(fā)數(shù)據(jù)業(yè)務(wù)能得到相對均衡的緩存。3)本發(fā)明將數(shù)據(jù)長度信息與數(shù)據(jù)內(nèi)容組合成新的數(shù)據(jù)流,存放在片外的存儲器 中,避免了數(shù)據(jù)長度記錄表造成FPGA片內(nèi)RAM資源短缺的瓶頸。4) 本發(fā)明采用獨(dú)特的系統(tǒng)架構(gòu),根據(jù)需求及FPGA資源情況,可以以模塊化的 方式,簡單的增加或者減少通道個(gè)數(shù),以適合不同的應(yīng)用情況。5) 本發(fā)明對片外存儲器的訪問采用簡單的地址生成機(jī)制,不需要采用復(fù)雜的 鏈表,使得片外存儲器的BANK、行、列地址能獨(dú)立產(chǎn)生,且列地址的生成不受通道個(gè)數(shù)的影 響。
圖1是采用FPGA片內(nèi)RAM實(shí)現(xiàn)數(shù)據(jù)隊(duì)列的多通道數(shù)據(jù)緩存的系統(tǒng)框圖。圖2是采用FPGA片內(nèi)RAM與片外RAM相結(jié)合實(shí)現(xiàn)多通道數(shù)據(jù)緩存的系統(tǒng)框圖。圖3是本發(fā)明實(shí)施例提供的采用FPGA實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng)框圖。圖4是本發(fā)明實(shí)施例提供的存儲塊及多路突發(fā)數(shù)據(jù)緩存區(qū)的劃分示意圖。圖5是本發(fā)明實(shí)施例提供的循環(huán)優(yōu)先級分配方法示意圖 圖6是本發(fā)明實(shí)施例提供的單路突發(fā)數(shù)據(jù)接收處理流程圖。圖7是本發(fā)明實(shí)施例提供的單路突發(fā)數(shù)據(jù)寫控制處理流程圖。圖8是本發(fā)明實(shí)施例提供的多路突發(fā)數(shù)據(jù)緩存管理流程圖。圖9是本發(fā)明實(shí)施例提供的單路突發(fā)數(shù)據(jù)讀控制處理流程圖。圖10是本發(fā)明實(shí)施例提供的單路突發(fā)數(shù)據(jù)發(fā)送控制流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。(一)、如圖3所示,本實(shí)施例中采用FPGA實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng)包括 提供塊RAM資源的FPGA芯片1和片外緩存器2。其中的FPGA芯片進(jìn)一步包括與數(shù)據(jù)通道數(shù)一致的數(shù)據(jù)包接收及緩沖電路11、數(shù) 據(jù)包寫控制電路12、數(shù)據(jù)包讀控制電路13、數(shù)據(jù)包緩沖及發(fā)送電路14,多路突發(fā)數(shù)據(jù)緩存 管理電路15,片外緩存控制器16。上述各個(gè)組成部分的連接關(guān)系及工作原理分別如下所述。(1)數(shù)據(jù)包接收及緩沖電路11,它的輸入來自外界的突發(fā)數(shù)據(jù)輸入,輸出連接到數(shù)據(jù)包寫控制電路12,用于負(fù)責(zé) 接收輸入端的數(shù)據(jù)并將數(shù)據(jù)緩沖起來,并將接收緩沖區(qū) 中的空滿狀態(tài)及是否有整包的標(biāo)志反饋給數(shù)據(jù)包寫控制電路12。它內(nèi)含2個(gè)雙端口 RAM組 成的以乒乓方式工作的乒乓緩沖區(qū),緩沖從外界輸入的突發(fā)數(shù)據(jù),同時(shí)產(chǎn)生緩沖區(qū)空滿狀 態(tài)信號。組成乒乓緩沖區(qū)的2個(gè)雙端口 RAM讀寫端口的地址線、數(shù)據(jù)線寬度不同,寫端口的 地址線為11位、數(shù)據(jù)寬度為8位,而讀端口的地址線為8位、數(shù)據(jù)寬度為64位。(2)數(shù)據(jù)包寫控制電路12,輸入來自前級的突發(fā)數(shù)據(jù)業(yè)務(wù)接收及緩沖電路1, 輸出連接到多路突發(fā)數(shù)據(jù)緩存管理電路15,每個(gè)通道的緩存區(qū)狀態(tài)管理中的滿狀態(tài)信號也 做為輸入提供給數(shù)據(jù)包寫控制電路12。它用于負(fù)責(zé)在通過申請并得到授權(quán)的情況下,將一 個(gè)完整的數(shù)據(jù)包緩存到片外存儲器對應(yīng)的緩存區(qū)中。(3 )數(shù)據(jù)包讀控制電路13,它的輸入來自多路突發(fā)數(shù)據(jù)緩存管理電路15,輸 出連接到數(shù)據(jù)包緩存及發(fā)送電路14。它負(fù)責(zé)數(shù)據(jù)包讀取,在通過申請并授權(quán)情況下,從片外 存儲器對應(yīng)的緩存區(qū)中讀取一個(gè)完整的數(shù)據(jù)包寫入到發(fā)送緩沖區(qū)中。(4)數(shù)據(jù)包發(fā)送及緩沖電路14,其輸入來自數(shù)據(jù)包讀控制電路13,輸出連接 到外界端口。它負(fù)責(zé)緩沖讀取的整個(gè)數(shù)據(jù)包,然后發(fā)送到外界。它內(nèi)含由1個(gè)雙端口 RAM 組成的發(fā)送數(shù)據(jù)緩沖區(qū),雙端口 RAM的讀寫端口的地址線、數(shù)據(jù)線寬度不同,寫端口的地址 線為8根、數(shù)據(jù)線寬度為64位,而讀端口的地址線為11根、數(shù)據(jù)線寬度為8位。(5)多路突發(fā)數(shù)據(jù)緩存管理電路15,它的輸入輸出與每路的數(shù)據(jù)包寫控制電 路12、數(shù)據(jù)包讀控制電路13及片外緩存控制器16相連。它負(fù)責(zé)多路突發(fā)數(shù)據(jù)的請求、仲裁 及通道授權(quán),選擇已授權(quán)通道的數(shù)據(jù)、地址、狀態(tài)信息,統(tǒng)計(jì)緩存區(qū)的狀態(tài),生成列地址,將 數(shù)據(jù)包寫入到片外存儲器或?qū)?shù)據(jù)包從片外存儲器中讀取出來。它包括有緩存區(qū)狀態(tài)管理 電路151、多路突發(fā)數(shù)據(jù)組合仲裁器152、讀寫仲裁電路153、突發(fā)管理電路154、緩存用戶接 口 155、寫端數(shù)據(jù)與地址選擇器156、讀端數(shù)據(jù)與地址選擇器157、寫授權(quán)控制電路158以及 讀授權(quán)控制電路等功能模塊。其中多路突發(fā)數(shù)據(jù)組合仲裁器152,是采用固定優(yōu)先級與循環(huán)優(yōu)先級相結(jié)合的 方式,實(shí)現(xiàn)對多路突發(fā)數(shù)據(jù)的請求、仲裁、授權(quán)。讀端數(shù)據(jù)與地址選擇器156/寫端數(shù)據(jù)與地址選擇器157均是N選1的X位 多路選擇器,N的大小跟設(shè)計(jì)的突發(fā)數(shù)據(jù)通道數(shù)對應(yīng),對于數(shù)據(jù)選擇器,X為片外存儲器2的 總數(shù)據(jù)位寬度的2倍;對于地址選擇器,X的位數(shù)跟片外存儲器2的行、列地址位長度及數(shù) 據(jù)位寬度有關(guān)。緩存區(qū)狀態(tài)管理電路151,含有N個(gè)K位的包計(jì)數(shù)器,N的大小跟突發(fā)數(shù)據(jù)通 道數(shù)對應(yīng),而K的大小跟對應(yīng)通道的緩存區(qū)的深度有關(guān);在某路對應(yīng)緩存區(qū)寫入一個(gè)包時(shí), 相應(yīng)的包計(jì)數(shù)器加1,當(dāng)取走一個(gè)包時(shí),相應(yīng)的包計(jì)數(shù)器減1 ;當(dāng)包計(jì)數(shù)器值超過最大閾值 時(shí),相應(yīng)通道的緩存區(qū)判為空狀態(tài),此時(shí)讀端將不再發(fā)出讀申請;當(dāng)包計(jì)數(shù)器值超過最小閾 值時(shí),相應(yīng)通道的緩存區(qū)判為滿狀態(tài),此時(shí)寫端將不再發(fā)出寫申請;同時(shí),在緩存區(qū)空或滿 的情況下,多路突發(fā)數(shù)據(jù)組合仲裁器152將不再響應(yīng)讀或?qū)懻埱蟆?6)片外緩存控制器16,它的輸入端、輸出端分別與片外緩存器2及多路突發(fā)數(shù)據(jù) 緩存管理電路15相連接;片外緩存控制器16采用FPGA芯片廠商提供的IP軟核實(shí)現(xiàn)。(7)片外緩存器2,它的輸入端、輸出端與片外緩存控制器16相連,它是獨(dú)立 于FPGA的片外存儲器。
片外緩存器2由片外的存儲器芯片組成,根據(jù)存儲芯片內(nèi)部的存儲結(jié)構(gòu),可 將存儲區(qū)劃分為多個(gè)2048字節(jié)大小的存儲塊,每個(gè)存儲塊的存儲單元地址是連續(xù)的。連續(xù) 的多個(gè)存儲塊組成緩存區(qū),再分配給各路突發(fā)數(shù)據(jù)通道;存儲塊可以根據(jù)存儲芯片的行、列 地址、數(shù)據(jù)位寬度來劃分,假如列地址寬度為10位,數(shù)據(jù)位寬度為16位,則正好一行劃分為 一個(gè)存儲塊,對應(yīng)每個(gè)存儲塊存儲一個(gè)完整的數(shù)據(jù)包。而各路緩存區(qū)的大小如果都分配相 同,則可以根據(jù)存儲芯片的BANK地址及行的高位地址來劃分。假如多路突發(fā)數(shù)據(jù)通道為32 個(gè),而存儲芯片BANK地址寬度為3,則緩存區(qū)可按8個(gè)BANK,每個(gè)BANK分成四個(gè)區(qū)來劃分, 即行的高2位地址用來做一個(gè)BANK內(nèi)四個(gè)緩存區(qū)的劃分,劃分方式可參考附圖4。因此每 路的地址產(chǎn)生,就變得十分簡單,列的地址由多路突發(fā)數(shù)據(jù)緩存管理電路中的突發(fā)管理模 塊生成,每次突發(fā)操作后,列地址自動(dòng)按突發(fā)長度增加;而行的地址由每路的數(shù)據(jù)包寫/讀 控制電路生產(chǎn),即每次往緩存區(qū)寫入一個(gè)完整的數(shù)據(jù)包,行低(N-2)位地址(高2位地址用 于緩存區(qū)區(qū)域的劃分,分配后不變)自動(dòng)加1,每次從緩存區(qū)讀取一個(gè)完整的數(shù)據(jù)包,行低位 地址自動(dòng)減1。另外,數(shù)據(jù)包接收及緩存電路11含有數(shù)據(jù)接收控制電路和數(shù)據(jù)包緩沖區(qū),其中 的數(shù)據(jù)接收控制電路用于負(fù)責(zé)控制外界輸入數(shù)據(jù)到數(shù)據(jù)包緩沖區(qū)的寫入過程,產(chǎn)生寫地 址(Wr_ram_adr)及相關(guān)的寫使能(Wr_ram_en)信號,含有2個(gè)數(shù)據(jù)包長度寄存器(pkt_ length_reg),2個(gè)整包標(biāo)志位(full_pkt_flag),其中數(shù)據(jù)包長度寄存器(pkt_length_ reg)用于當(dāng)一個(gè)完整的數(shù)據(jù)包寫入到包緩沖區(qū)時(shí),鎖存當(dāng)前寫地址(wr_ram_adr)值,記錄 當(dāng)前數(shù)據(jù)包的長度信息及數(shù)據(jù)包寫入緩存區(qū)時(shí)按一定突發(fā)長度所需的突發(fā)次數(shù)信息;整包 標(biāo)志位(full_pkt_flag)標(biāo)示緩沖區(qū)是否有完整的數(shù)據(jù)包。數(shù)據(jù)包寫控制電路12由內(nèi)部邏輯實(shí)現(xiàn),檢測到整包標(biāo)志(full_pkt_flag) 置位時(shí),向多路突發(fā)數(shù)據(jù)緩存管理電路15發(fā)起寫請求(ch_wr_req),等待寫授權(quán)(ch_wr_ gnt),然后查詢數(shù)據(jù)包接收及緩存電路11提供的乒乓緩沖區(qū)的空狀態(tài)信號,判斷哪個(gè)緩沖 區(qū)有整包,并在寫數(shù)據(jù)請求(Ch_Wdata_req)有效的情況下,讀取緩沖區(qū)的數(shù)據(jù)并將其與數(shù) 據(jù)包長度信息組合成新的數(shù)據(jù)流輸出給多路突發(fā)數(shù)據(jù)緩存管理電路15 ;且每向緩存區(qū)寫 入一個(gè)完整數(shù)據(jù)包后,行地址(ch_wr_row_adr)自動(dòng)加1,指向下一個(gè)數(shù)據(jù)包要緩存的行位 置。多路突發(fā)數(shù)據(jù)緩存管理電路15,由內(nèi)部邏輯實(shí)現(xiàn),將多個(gè)通道的仲裁授權(quán)與 通道的讀寫仲裁授權(quán)從功能上分開。內(nèi)含的多路突發(fā)數(shù)據(jù)組合仲裁器152實(shí)時(shí)檢測是否有 通道請求,并根據(jù)多個(gè)請求或單個(gè)請求采用循環(huán)優(yōu)先級或固定優(yōu)先級的方式來仲裁授權(quán)哪 個(gè)通道,并將授權(quán)的通道提供給讀寫仲裁電路153,讀寫仲裁電路153將授權(quán)通道的具體的 讀或者寫操作。在讀或者寫操作過程中,突發(fā)管理電路154生成當(dāng)前操作的列地址(col_ adr),且每次突發(fā)操作后列地址(C0l_adr)按突發(fā)長度增加,以指向下一次要突發(fā)的位置; 同時(shí)緩存用戶接口 155完成片外緩存器地址的轉(zhuǎn)化,并生成片外緩存控制器16的接口信 號。循環(huán)優(yōu)先級的優(yōu)先級分配方法如圖5所示,當(dāng)前優(yōu)先級最高的突發(fā)數(shù)據(jù)通道在下一次 分配中優(yōu)先級最低。數(shù)據(jù)包讀控制電路13,由內(nèi)部邏輯控制實(shí)現(xiàn),當(dāng)檢測到發(fā)送緩沖區(qū)空,而片 外的緩存區(qū)有數(shù)據(jù)包時(shí),向多路突發(fā)數(shù)據(jù)緩存管理電路15發(fā)起讀請求(Ch_rd_req),并等 待讀授權(quán)(ch_rd_gnt),當(dāng)讀數(shù)據(jù)有效信號(ch_rdata_val id)有效時(shí),將讀取的數(shù)據(jù)寫入到發(fā)送緩沖區(qū)中,同時(shí)鎖存讀 取的數(shù)據(jù)包長度信息(pkt_length_inf0),數(shù)據(jù)包長度信息 (pkt_length_inf0)提供當(dāng)前讀取數(shù)據(jù)包按一定突發(fā)長度所需的突發(fā)次數(shù)。數(shù)據(jù)包發(fā)送及緩存電路14,含有數(shù)據(jù)讀控制電路和發(fā)送緩沖區(qū),數(shù)據(jù)讀控制 電路在發(fā)送緩存區(qū)有完整數(shù)據(jù)包時(shí),生成讀控制信號,控制發(fā)送緩沖區(qū)的數(shù)據(jù)讀取。(二)、上述系統(tǒng)的工作過程為 (1)初始化過程。上電復(fù)位后,系統(tǒng)立即進(jìn)行初始化過程,F(xiàn)PGA片內(nèi)的各個(gè)通道的行地址、長度 計(jì)數(shù)器、RAM讀/寫地址、通道讀/寫請求等全部清零,列地址,緩存區(qū)狀態(tài)管理中的包計(jì)數(shù) 器、各緩存區(qū)狀態(tài)為空,設(shè)置各路緩存區(qū)水線深度,各內(nèi)部控制邏輯處于空閑狀態(tài)。(2)接收數(shù)據(jù)處理。參考附圖6,該過程中的具體處理流程為如果有外界數(shù)據(jù)輸入,檢查乒乓緩 沖區(qū)是否為空,檢查對應(yīng)的片外緩存區(qū)狀態(tài)是否非滿,如果條件不成立,則丟棄當(dāng)前輸入的 數(shù)據(jù)包;如果條件成立,則將輸入數(shù)據(jù)按字節(jié)寫入到乒乓緩沖區(qū)中,同時(shí)計(jì)數(shù)輸入數(shù)據(jù)的字 節(jié)數(shù),收到一個(gè)完整的數(shù)據(jù)包后,鎖存乒乓緩沖的寫地址(wr_ram_adr)到數(shù)據(jù)包長度寄存 器(pkt_length_reg)中,同時(shí)置位相應(yīng)的整包標(biāo)志(full_pkt_flag)。(3)寫數(shù)據(jù)申請。參考附圖7,該過程中的具體處理流程為數(shù)據(jù)包寫控制電路在時(shí)鐘周期下 查詢整包標(biāo)志(full_pkt_flag),當(dāng)檢測到整包標(biāo)志置位時(shí),已知乒乓緩沖區(qū)有一個(gè)完整 包,立即向多路突發(fā)數(shù)據(jù)緩存管理電路發(fā)起寫包申請(ch_wr_req),并等待多路突發(fā)數(shù)據(jù)組 合仲裁器的寫授權(quán)(ch_Wr_gnt),當(dāng)寫數(shù)據(jù)請求有效信號(Ch_Wdata_req)到來,數(shù)據(jù)包寫 控制電路讀取乒乓緩沖區(qū)的完整數(shù)據(jù)包內(nèi)容,并將其與該數(shù)據(jù)包的長度信息(pkt_length_ reg)中的值組合成新的數(shù)據(jù)流緩存到片外緩存器中對應(yīng)的緩存區(qū)中;寫操作下的行地 址(ch_wr_c0l_adr)在一個(gè)完整數(shù)據(jù)包寫入片外緩存器中其對應(yīng)的緩存區(qū)后,自動(dòng)加1, 指向下一個(gè)數(shù)據(jù)包將要寫入的位置;數(shù)據(jù)包的寫中止信號(ch_wr_term)為由多路突發(fā)數(shù) 據(jù)緩存管理電路中的突發(fā)管理電路通過比較當(dāng)前的列地址(c0l_adr)與整包長度(pkt_ length_reg)中的突發(fā)次數(shù)來產(chǎn)生。(4)多路突發(fā)數(shù)據(jù)仲裁管理。參考附圖8,該過程中的具體處理流程為多路突發(fā)數(shù)據(jù)組合仲裁器在時(shí)鐘周期 下實(shí)時(shí)檢測是否有通道(讀或?qū)?請求(chx_req),并根據(jù)當(dāng)前通道請求的數(shù)量,決定采用循 環(huán)優(yōu)先級(通道請求數(shù)大于1)或者固定優(yōu)先級(只有單個(gè)請求)方式來實(shí)現(xiàn)請求的輪詢與通 道的授權(quán)(chX_gnt),授權(quán)的通道再通過讀寫仲裁,生成讀操作授權(quán)(chX_rd_gnt)或者寫 操作授權(quán)(chX_Wr_gnt)。同時(shí)根據(jù)仲裁的結(jié)果來選擇所授權(quán)通道對應(yīng)的數(shù)據(jù)、行地址、突發(fā) 次數(shù)、控制信號,授權(quán)通道的數(shù)據(jù)、行地址、突發(fā)次數(shù)、控制信號的選擇由讀端/ 寫端地址與數(shù)據(jù)選擇器完成;當(dāng)向相對應(yīng)通道的緩存區(qū)寫入一個(gè)完整數(shù)據(jù)包時(shí),緩存區(qū)狀 態(tài)管理電路中相應(yīng)的包計(jì)數(shù)器自動(dòng)加1,當(dāng)從相對應(yīng)通道的緩存區(qū)讀取一個(gè)完整數(shù)據(jù)包時(shí), 緩存區(qū)狀態(tài)管理電路中相應(yīng)的包計(jì)數(shù)器自動(dòng)減1 ;當(dāng)包計(jì)數(shù)器值超過最大閾值或者最小閾 值時(shí),將產(chǎn)生相應(yīng)通道的緩存區(qū)滿或者空狀態(tài)信號。(5)讀數(shù)據(jù)申請。參考附圖9,該過程中的具體處理流程為數(shù)據(jù)讀控制電路檢測發(fā)送緩沖區(qū)是否為空,再檢測對應(yīng)的片外緩存區(qū)是否非空,然后則向多路突發(fā)數(shù)據(jù)緩存管理電路發(fā)出讀包申請(Ch_rd_req),并等待多路突發(fā)數(shù)據(jù)組合仲裁器的讀授權(quán)(ch_rd_gnt),在讀取數(shù)據(jù) 有效信號(ch_rdata_valid)有效時(shí),分離出數(shù)據(jù)包內(nèi)容與數(shù)據(jù)長度信息,將數(shù)據(jù)長度記錄 到長度信息寄存器(pkt_length_inf0)中,數(shù)據(jù)內(nèi)容按時(shí)序?qū)懭氲桨l(fā)送緩沖區(qū)中。當(dāng)一個(gè) 完整數(shù)據(jù)包被讀取后,讀操作下的行地址(ch_rd_C0l_adr)自動(dòng)加1,指向下一個(gè)將要讀取 的數(shù)據(jù)包位置。數(shù)據(jù)包的讀中止信號(ch_rd_term)由長度信息寄存器(pkt_length_inf0) 中突發(fā)次數(shù)與當(dāng)前列地址(col_adr)比較產(chǎn)生。具體處理流程可見附圖9。(6)發(fā)送數(shù)據(jù)處理。參考附圖10,該過程中的具體處理流程為數(shù)據(jù)包緩沖及發(fā)送電路檢測發(fā)送 緩沖區(qū)是否有完整的數(shù)據(jù)包,然后以字節(jié)形式從發(fā)送緩沖區(qū)中讀取數(shù)據(jù)后發(fā)送到外界的 輸出端。發(fā)送過程中,將記錄發(fā)送的字節(jié)數(shù)(tx_byteS),并與當(dāng)前數(shù)據(jù)包長度信息(pkt_ lengthjnfo)進(jìn)行比較,確定數(shù)據(jù)包是否發(fā)送完,發(fā)送完成后,發(fā)送字節(jié)數(shù)與當(dāng)前的數(shù)據(jù)包 長度信息都被清零,等待下一個(gè)數(shù)據(jù)包的讀取與發(fā)送。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在于,該系統(tǒng)包括用于 緩存多路突發(fā)數(shù)據(jù)的片外緩存器和提供RAM資源的FPGA芯片;所述FPGA芯片包括片外緩 存控制器,多路突發(fā)數(shù)據(jù)緩存管理電路,以及與數(shù)據(jù)通道數(shù)一致的數(shù)據(jù)包接收及緩沖電路、 數(shù)據(jù)包寫控制電路、數(shù)據(jù)包緩沖及發(fā)送電路、數(shù)據(jù)包讀控制電路;其中,所述數(shù)據(jù)包接收及緩沖電路,其輸入端接收外界的突發(fā)數(shù)據(jù)輸入、輸出端與數(shù)據(jù)包寫 控制電路連接,包括數(shù)據(jù)包接收控制電路以及接收緩沖區(qū),用于在接收緩沖區(qū)為空時(shí)接收 外界輸入的突發(fā)數(shù)據(jù)并將其寫入接收緩沖區(qū)中,且在寫入完整的數(shù)據(jù)包時(shí)置位整包標(biāo)志 位;所述數(shù)據(jù)包寫控制電路,其輸入端與數(shù)據(jù)包接收及緩沖電路連接、輸出端與多路突發(fā) 數(shù)據(jù)緩存管理電路連接,用于在所述整包標(biāo)志位被置位且片外存儲器中對應(yīng)通道的緩存區(qū) 為非滿狀態(tài)時(shí),在向多路突發(fā)數(shù)據(jù)包緩沖管理電路申請并得到授權(quán)的情況下,讀取接收緩 沖區(qū)中完整的數(shù)據(jù)包并將其與其長度信息組合成新的數(shù)據(jù)流緩存到片外存儲器中對應(yīng)通 道的緩存區(qū)中,同時(shí)生成下一個(gè)寫操作的行地址信息;所述數(shù)據(jù)包緩沖及發(fā)送電路,其輸入端與數(shù)據(jù)包讀控制電路連接、輸出端與外界端口 連接,包括發(fā)送緩沖區(qū)以及數(shù)據(jù)包發(fā)送控制電路,用于緩沖完整的數(shù)據(jù)包并將其發(fā)送至外 界端口 ;所述數(shù)據(jù)包讀控制電路,其輸入端與多路突發(fā)數(shù)據(jù)緩存管理電路連接、輸出端與數(shù)據(jù) 包緩沖及發(fā)送電路連接,用于發(fā)送緩沖區(qū)為空且片外存儲器中對應(yīng)通道的緩存區(qū)為非空狀 態(tài)時(shí),在向多路突發(fā)數(shù)據(jù)包緩沖管理電路申請并得到授權(quán)的情況下從片外存儲器中對應(yīng)通 道的緩存區(qū)中讀取完整的數(shù)據(jù)包后寫入發(fā)送緩沖區(qū)中,同時(shí)生成下一個(gè)讀操作的行地址信 息;所述多路突發(fā)數(shù)據(jù)包緩存管理電路,分別連接至多路數(shù)據(jù)包寫控制電路及數(shù)據(jù)包讀 控制電路,并與片外緩存控制器連接,用于在接收到多路突發(fā)數(shù)據(jù)的讀包申請/寫包申請 時(shí)對發(fā)送申請的突發(fā)數(shù)據(jù)通道進(jìn)行仲裁及授權(quán)、再對授權(quán)的通道授權(quán)具體的讀操作/寫操 作,生成當(dāng)前讀/寫操作的列地址信息,將數(shù)據(jù)包寫入片外緩存器或?qū)?shù)據(jù)包從片外緩存 器中讀取出來;所述片外緩存控制器連接于多路突發(fā)數(shù)據(jù)包緩存管理電路和片外緩存器之間,用于對 片外緩存器進(jìn)行控制。
2.如權(quán)利要求1所述的基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在于, 所述多路突發(fā)數(shù)據(jù)緩存管理電路包括多路突發(fā)數(shù)據(jù)組合仲裁器、讀寫仲裁電路、突發(fā)管理 電路、緩存用戶接口、緩存區(qū)狀態(tài)管理電路、寫端數(shù)據(jù)與地址選擇器、讀端數(shù)據(jù)與地址選擇 器、讀授權(quán)控制電路、寫授權(quán)控制電路;其中,所述多路突發(fā)數(shù)據(jù)組合仲裁器,用于在當(dāng)前僅有單個(gè)通道請求采用固定優(yōu)先級的方式 或者在當(dāng)前通道請求的數(shù)量大于1時(shí)采用循環(huán)優(yōu)先級的方式對各突發(fā)數(shù)據(jù)通道進(jìn)行仲裁 及授權(quán),并將授權(quán)的突發(fā)數(shù)據(jù)通道信息提供給讀寫仲裁電路,由其授權(quán)具體的讀操作或者 寫操作;所述突發(fā)管理電路,用于在讀操作或者寫操作過程中,生成當(dāng)前操作的片外緩存器的 列地址,同時(shí)由緩存用戶接口據(jù)此完成片外緩存器地址的轉(zhuǎn)化并生成片外緩存控制器的接 口信號;所述緩存區(qū)狀態(tài)管理電路,包含與突發(fā)數(shù)據(jù)通道數(shù)一致的N個(gè)包計(jì)數(shù)器,用于對片外 緩存器中對應(yīng)于各路突發(fā)數(shù)據(jù)通道的緩存區(qū)中的數(shù)據(jù)包的個(gè)數(shù)分別進(jìn)行實(shí)時(shí)統(tǒng)計(jì),在每路 對應(yīng)的包計(jì)數(shù)器值大于最大閾值/小于最小閾值時(shí)通知對應(yīng)的寫授權(quán)控制電路/讀授權(quán)控 制電路及數(shù)據(jù)包寫控制電路/數(shù)據(jù)包讀控制電路其相應(yīng)的緩存區(qū)為滿狀態(tài)/空狀態(tài),多路 突發(fā)數(shù)據(jù)組合仲裁器將據(jù)此狀態(tài)中止響應(yīng)對應(yīng)通道的數(shù)據(jù)包寫控制電路/數(shù)據(jù)包讀控制 電路的寫包/讀包申請,同時(shí)對應(yīng)通道的數(shù)據(jù)包寫控制電路/數(shù)據(jù)包讀控制電路將據(jù)此滿 狀態(tài)/空狀態(tài)中止發(fā)送寫包/讀包申請。所述寫端數(shù)據(jù)與地址選擇器/讀端數(shù)據(jù)與地址選擇器用于在寫操作/讀操作時(shí)根據(jù)多 路突發(fā)數(shù)據(jù)組合仲裁器的仲裁結(jié)果選擇所授權(quán)通道的對應(yīng)的數(shù)據(jù)包與行地址。
3.如權(quán)利要求1或2所述的基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在 于,所述接收緩沖區(qū)由2個(gè)雙端口的以乒乓方式工作的片內(nèi)RAM存儲器組成;所述發(fā)送緩沖 區(qū)由1個(gè)雙端口的片內(nèi)RAM存儲器組成。
4.如權(quán)利要求3所述的基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在于,所述組成接收緩沖區(qū)的片內(nèi)RAM存儲器的寫端口的地址線有11根、輸入數(shù)據(jù)寬度為8位,讀端口的地址線有8根、輸出數(shù)據(jù)寬度為64位;所述組成發(fā)送緩沖區(qū)的片內(nèi)RAM存儲器的寫端口的地址線有8根、寫數(shù)據(jù)寬度為64 位,讀端口的地址線有11根、讀數(shù)據(jù)寬度為8位。
5.如權(quán)利要求1所述的基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在于, 所述片外緩存器由2片16位的片外存儲器組成。
6.如權(quán)利要求1或5所述的基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在 于,所述片外存儲器劃分為多個(gè)相同容量大小的存儲塊,且其中連續(xù)的多個(gè)存儲塊組成緩 存區(qū)并分配給各路突發(fā)數(shù)據(jù)通道。
7.如權(quán)利要求6所述的基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng),其特征在于, 所述片外存儲器劃分為多個(gè)2048字節(jié)大小的存儲塊。
8.—種如權(quán)利要求1所述系統(tǒng)的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的方法,其特征在于,該 方法包括接收數(shù)據(jù)處理的步驟、寫數(shù)據(jù)申請的步驟、多路突發(fā)數(shù)據(jù)仲裁管理的步驟、讀數(shù) 據(jù)申請的步驟以及發(fā)送數(shù)據(jù)處理的步驟;其中,所述接收數(shù)據(jù)處理的步驟包括在外界有突發(fā)數(shù)據(jù)輸入時(shí),判斷接收緩沖區(qū)是否為空 且片外緩存器中對應(yīng)通道的緩存區(qū)是否非滿,若否,則丟棄當(dāng)前輸入的數(shù)據(jù)包;若是,則將 該數(shù)據(jù)包按字節(jié)寫入接收緩沖區(qū)中,同時(shí)統(tǒng)計(jì)該數(shù)據(jù)包的字節(jié)數(shù),且在接收完一個(gè)完整的 數(shù)據(jù)包時(shí)置位整包標(biāo)志位;所述寫數(shù)據(jù)申請的步驟包括實(shí)時(shí)查詢接收緩沖區(qū)中的整包標(biāo)志位,當(dāng)檢測到置位時(shí) 向多路突發(fā)數(shù)據(jù)包緩存管理電路發(fā)起寫包申請,并在通過申請并得到授權(quán)時(shí),讀取接收緩 沖區(qū)中完整的數(shù)據(jù)包內(nèi)容并將其與該數(shù)據(jù)包的長度信息組合成新的數(shù)據(jù)流緩存到片外存 儲器中對應(yīng)于該突發(fā)數(shù)據(jù)通道的緩存區(qū)中;所述多路突發(fā)數(shù)據(jù)仲裁管理的步驟包括實(shí)時(shí)查詢各路通道的讀/寫請求,先進(jìn)行對 請求的仲裁與通道的授權(quán),再對授權(quán)的通道進(jìn)行讀寫仲裁,生成讀操作授權(quán)或者寫操作授 權(quán);所述讀數(shù)據(jù)申請的步驟包括檢測發(fā)送緩沖區(qū)是否為空且片外緩存器中對應(yīng)通道的緩存區(qū)是否非空,若是,則向多路突發(fā)數(shù)據(jù)包緩存管理電路發(fā)起讀包申請,并在通過申請并得 到授權(quán)時(shí),從片外緩存器中對應(yīng)通道的緩存區(qū)中讀取完整的數(shù)據(jù)包并從其中分離出數(shù)據(jù)包 內(nèi)容與數(shù)據(jù)長度信息,記錄數(shù)據(jù)長度信息,將數(shù)據(jù)包內(nèi)容寫入發(fā)送緩沖區(qū)中;所述發(fā)送數(shù)據(jù)處理的步驟包括檢測發(fā)送緩沖區(qū)中是否有完整的數(shù)據(jù)包,然后從發(fā)送 緩沖區(qū)中讀取數(shù)據(jù)包并將其發(fā)送至外界的輸出端。
9.如權(quán)利要求8所述的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的方法,其特征在于,所述多路突 發(fā)數(shù)據(jù)仲裁管理的步驟中,根據(jù)當(dāng)前通道請求的數(shù)量,采用循環(huán)優(yōu)先級或者固定優(yōu)先級的 方式來實(shí)現(xiàn)對請求的仲裁與通道的授權(quán)。
10.如權(quán)利要求9所述的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的方法,其特征在于,若當(dāng)前僅有單個(gè)通道請求,則采用固定優(yōu)先級的方式來實(shí)現(xiàn)對請求的仲裁與通道的授權(quán);若當(dāng)前通道請求的數(shù)量大于1,則采用循環(huán)優(yōu)先級的方式來實(shí)現(xiàn)對請求的仲裁與通道 的授權(quán)。
11.如權(quán)利要求8至10任一權(quán)利要求所述的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的方法,其特 征在于,該方法還包括系統(tǒng)初始化的步驟,該步驟進(jìn)一步包括上電復(fù)位后,系統(tǒng)立即進(jìn)行初始化過程,將FPGA芯片內(nèi)的各個(gè)通道的行、列地址清零, 緩存區(qū)狀態(tài)管理中的包計(jì)數(shù)器、長度計(jì)數(shù)器清零,RAM讀寫地址、通道讀寫請求全部清零,各 緩沖區(qū)、緩存區(qū)設(shè)為空狀態(tài),設(shè)置各路緩存區(qū)水線深度,將內(nèi)部各控制邏輯設(shè)于空閑狀態(tài)。
全文摘要
本發(fā)明公開了一種基于FPGA的實(shí)現(xiàn)多路突發(fā)數(shù)據(jù)業(yè)務(wù)緩存的系統(tǒng)及方法,其中的系統(tǒng)包括用于緩存多路突發(fā)數(shù)據(jù)的片外緩存器和提供RAM資源的FPGA芯片;所述FPGA芯片又包括片外緩存控制器,用于處理多路突發(fā)數(shù)據(jù)的請求仲裁及通道授權(quán)、生成當(dāng)前讀/寫操作的列地址信息、將數(shù)據(jù)包寫入片外緩存器或?qū)?shù)據(jù)包從片外緩存器中讀取出來的多路突發(fā)數(shù)據(jù)緩存管理電路,以及與數(shù)據(jù)通道數(shù)一致的數(shù)據(jù)包接收及緩沖電路、數(shù)據(jù)包寫控制電路、數(shù)據(jù)包讀控制電路、數(shù)據(jù)包緩沖及發(fā)送電路。采用本發(fā)明,可簡單的增加或者減少通道個(gè)數(shù),各路的突發(fā)數(shù)據(jù)業(yè)務(wù)能得到相對均衡的緩存,避免了FPGA片內(nèi)RAM資源短缺造成的瓶頸。
文檔編號G06F13/18GK102096648SQ20101058075
公開日2011年6月15日 申請日期2010年12月9日 優(yōu)先權(quán)日2010年12月9日
發(fā)明者周學(xué)兵, 宋海波, 林彬, 鄭楠, 黃良靜 申請人:深圳中興力維技術(shù)有限公司