欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于fpga的多虛擬隊(duì)列數(shù)據(jù)存儲的方法

文檔序號:6754404閱讀:197來源:國知局
專利名稱:一種基于fpga的多虛擬隊(duì)列數(shù)據(jù)存儲的方法
技術(shù)領(lǐng)域
本發(fā)明設(shè)計基于FPGA中實(shí)現(xiàn)高速網(wǎng)卡數(shù)據(jù)讀寫技術(shù),特別是涉及一種多虛擬隊(duì)列的數(shù) 據(jù)存儲方法。
背景技術(shù)
虛擬化技術(shù)是當(dāng)前市場的一個熱點(diǎn),采用虛擬化技術(shù)可以節(jié)省了高達(dá)70%的硬件成本。 因?yàn)樘摂M化技術(shù)可以幫助用戶合并多種應(yīng)用工作負(fù)荷,在單個系統(tǒng)上運(yùn)行多種操作環(huán)境; 優(yōu)化應(yīng)用開發(fā),在單一系統(tǒng)上進(jìn)行測試和開發(fā);提高系統(tǒng)可用性,在系統(tǒng)之間遷移虛擬環(huán) 境。當(dāng)前設(shè)計主要是通過邏輯存儲和外部存儲,外部存儲主要是采用DDR2—SDRAM、 FLASH 等存儲。
邏輯存儲的情況下在FPGA中實(shí)現(xiàn)高速虛擬網(wǎng)卡設(shè)計就是采用的虛擬化技術(shù),在虛擬 網(wǎng)卡設(shè)計過程中需要用到大量的隊(duì)列,如2048個,每個隊(duì)列中又存在大量的32-bit的寄 存器,圖1是虛擬網(wǎng)卡芯片按照2048、 512、 128和64隊(duì)列設(shè)計的資源需求表。為節(jié)約設(shè) 計成本,F(xiàn)PGA采用Xilinx的XC5VLX50T芯片,該芯片的Slices大小為7200Clbs,經(jīng)過 計算總共是28Kb的FF。如果按照要求設(shè)計2048個虛擬隊(duì)列,某些寄存器與隊(duì)列一一對應(yīng) 的,需要2048個32-bit的寄存器,所占用的總資源大小為1047.6Kb,見圖1所示;邏輯 存儲適用于占用資源量不多的情況,很顯然,這些寄存器若完全使用邏輯單元進(jìn)行存儲, 將會占用全部的邏輯資源,最終會使設(shè)計無法實(shí)現(xiàn)。
在外部存儲的情況下如果采用DDR2_SDRAM對大量數(shù)據(jù)進(jìn)行存儲,時鐘333MHz ,對 DDR2存儲器進(jìn)行寫操作,命令字為O,地址維持兩個周期有效,寫使能維持一個周期有效, 數(shù)據(jù)在兩個周期內(nèi)給出(每個周期128bits),這樣實(shí)現(xiàn)了 burst length = 4的操作,4x 64bit = 2 x 128bit。地址是按照4的倍數(shù)給出,也就是說每個64bit—個地址, 一次寫 操作要使用4個地址。讀取命令字為l,地址維持l個周期有效,讀使能維持一個周期有 效,地址也是4的倍數(shù),在讀數(shù)據(jù)有效時,數(shù)據(jù)出現(xiàn)在讀數(shù)據(jù)輸出端口上,每128bit維 持l個周期;但是從發(fā)出讀取命令字到讀出數(shù)據(jù)則需要8個周期,并且DDR2—SDRAM控制器比較復(fù)雜,數(shù)據(jù)存儲周期長、數(shù)據(jù)存儲速度慢且不靈活。
因此,需要設(shè)計一種能夠提供數(shù)據(jù)存儲速度快、控制便捷靈活、可用于大量數(shù)據(jù)的存 儲的存儲機(jī)制,以解決上述現(xiàn)有技術(shù)的缺陷。

發(fā)明內(nèi)容
為了解決上述邏輯資源不足、存儲速度慢、存儲周期長等問題,本設(shè)計采用一種巧妙 的設(shè)計方法對所有大量的(如2048個)隊(duì)列中的寄存器使用FPGA中的塊RAM進(jìn)行存儲和處 理,實(shí)現(xiàn)對同一隊(duì)列的相關(guān)寄存器進(jìn)行同時讀寫。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,包括 網(wǎng)卡、FPGA,所述FPGA包括塊狀存儲器(塊ram)、 MAC控制器模塊、DMA控制器、PCIe 控制器模塊,其特殊之處在于
所述FPGA中設(shè)有接收引擎模塊(Rxengine)、發(fā)送引擎模塊(Tx engine)、讀寫模塊 (Reg一Rd—Wr),接收引擎模塊(Rx engine)通過讀寫模塊(Reg—Rd—Wr)與發(fā)送引擎模塊 (Tx engine)連接,接收引擎模塊(Rx engine)實(shí)現(xiàn)從主機(jī)發(fā)送過來的數(shù)據(jù)包進(jìn)行處理 分類,發(fā)送引擎模塊(Tx engine)實(shí)現(xiàn)將用戶發(fā)往主機(jī)的數(shù)據(jù)打包,按照相應(yīng)的時序發(fā) 送給核接口,讀寫模塊(Reg—Rd_Wr)實(shí)現(xiàn)數(shù)據(jù)的存儲與提??;
所述接收引擎模塊(Rx engine)包括接收有限狀態(tài)機(jī)模塊(Rx FSM)、接收Posted 包模塊(Rx posted)、接收NonPosted包模塊(Rx No叩osted)、接收Completion包模塊 (Rx Completion);
所述發(fā)送引擎模塊(Tx engine)包括發(fā)送有限狀態(tài)機(jī)模塊(TxFSM)、發(fā)送Completion 包模塊(Tx Completion);
所述塊狀存儲器(塊ram)內(nèi)虛擬設(shè)有已編址的多個寄存器組,多個寄存器組包括發(fā) 送端寄存器組(TX reg),接收端寄存器組(RX reg),中斷頻率控制寄存器組,每個寄存 器虛擬設(shè)有多個隊(duì)列;
一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法步驟如下
a、 主機(jī)將數(shù)據(jù)包發(fā)送到PCIe模塊,由PCIe模塊傳遞到接收引擎模塊(Rx engine), 由接收引擎模塊(Rx engine)進(jìn)行處理,執(zhí)行b操作;
b、 接收至ll的數(shù)據(jù)包有三禾中posted request, non—posted request, rx completion,由發(fā)送有限狀態(tài)機(jī)模塊(RxFSM)對三種數(shù)據(jù)包進(jìn)行處理分類,發(fā)送有限狀態(tài)機(jī)模塊(Rx FSM)對posted request執(zhí)行c操作,發(fā)送有限狀態(tài)機(jī)模塊(Rx FSM)對non-posted request 執(zhí)行d操作,
c、 posted request由接收Posted包模塊(Rx posted)通過讀寫模塊(Reg—Rd_Wr) 分配給寄存器進(jìn)行寫操作,執(zhí)行cl操作,
cl、接收Posted包模塊(Rx posted)根據(jù)數(shù)據(jù)包中的地址判斷是進(jìn)行邏輯存儲 還是塊狀存儲器(塊ram)存儲,如果是塊狀存儲器(塊ram)存儲,執(zhí)行c2操作,
c2、接收Posted包模塊(Rx posted)根據(jù)數(shù)據(jù)包中的地址判斷是對發(fā)送端寄存 器(TX reg)還是接收端寄存器(RX reg)操作,如果是接收端寄存器(RX reg)操作, 執(zhí)行c3操作,
c3、接收Posted包模塊(Rx posted)根據(jù)數(shù)據(jù)包中的地址判斷確定對接收端寄 存器的具體塊狀存儲器(塊ram)寫操作,再根據(jù)地址判斷具體要向該塊狀存儲器(塊ram) 的哪一個隊(duì)列進(jìn)行寫操作,執(zhí)行c4操作;
c4、由讀寫模塊(Reg—Rd—Wr)將數(shù)據(jù)寫入塊狀存儲器的隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)的寫 操作,寫操作完畢;
d、 non_posted request由接收NonPosted包模塊(Rx No叩osted)通過讀寫模塊 (Reg—Rd_Wr)分配給寄存器進(jìn)行讀操作,執(zhí)行dl操作,
dl、接收NonPosted包模塊(Rx Nonposted)根據(jù)數(shù)據(jù)包中的地址判斷是進(jìn)行邏 輯存儲還是塊狀存儲器(塊ram)存儲,如果是塊狀存儲器(塊ram)存儲,執(zhí)行d2操作,
d2、接收NonPosted包模塊(Rx Nonposted)根據(jù)數(shù)據(jù)包中的地址判斷是對發(fā)送 端寄存器還是接收端寄存器操作,如果是接收端寄存器操作,執(zhí)行d3操作,
d3、接收NonPosted包模塊(Rx Nonposted)根據(jù)數(shù)據(jù)包中的地址判確定對接收 端寄存器的具體塊狀存儲器(塊ram)讀操作,再根據(jù)數(shù)據(jù)包中的地址判斷具體要向該塊 狀存儲器(塊ram)的哪一個隊(duì)列進(jìn)行讀操作,執(zhí)行d4操作,
d4、由讀寫模塊(Reg_Rd—Wr)將數(shù)據(jù)從塊狀存儲器的隊(duì)列中讀出,以實(shí)現(xiàn)數(shù)據(jù)的 讀操作,讀操作完畢,執(zhí)行d5操作;所述塊狀存儲器設(shè)有讀寫模式狀態(tài)轉(zhuǎn)換模塊,讀寫模式狀態(tài)轉(zhuǎn)換模塊分為讀模式狀態(tài) 的轉(zhuǎn)換和寫模式狀態(tài)的轉(zhuǎn)換,讀模式狀態(tài)分為初始狀態(tài)(idle),主機(jī)讀使能狀態(tài) (host—rd—en ),讀狀態(tài)(read),讀結(jié)束狀態(tài)(read_end ),讀結(jié)束延時狀態(tài) (read—end_dly),寫模式狀態(tài)分為初始狀態(tài)(idle),主機(jī)寫使能狀態(tài)(host_wr—en), 寫狀態(tài)(write),寫結(jié)束狀態(tài)(write—end), I、執(zhí)行c4步驟的寫操作具體為;
c4-l、讀寫模式狀態(tài)轉(zhuǎn)換模塊初始狀態(tài)為idle狀態(tài)時,
c4-2、讀寫模式狀態(tài)轉(zhuǎn)換模塊檢測到主機(jī)發(fā)送的命令host一wr—en時,處于主機(jī)寫 使能狀態(tài),
c4-3、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入寫狀態(tài)(write),
c4-4、由讀寫模塊(Reg一Rd一Wr)將數(shù)據(jù)寫入塊狀存儲器的隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)的
寫操作,
c4-5、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入寫結(jié)束狀態(tài)(write—end),關(guān)閉寫命令, c4-6、讀寫模式狀態(tài)轉(zhuǎn)換模塊回到初始狀態(tài)idle狀態(tài),等待下一次寫操作,寫操
作完畢;
II 、執(zhí)行d4步驟的讀操作具體為
d4-l、讀寫模式狀態(tài)轉(zhuǎn)換模塊初始狀態(tài)為idle狀態(tài)時,
d4-2、讀寫模式狀態(tài)轉(zhuǎn)換模塊檢測到主機(jī)發(fā)送的命令host—rd—en時,處于主機(jī)讀 使能狀態(tài),
d4-3、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀狀態(tài)(read),
d4-4、由讀寫模塊(Reg_Rd—Wr)將數(shù)據(jù)從塊狀存儲器的隊(duì)列中讀出,以實(shí)現(xiàn)數(shù)據(jù) 的讀操作,
d4-5、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀結(jié)束狀態(tài)(read一end),關(guān)閉讀命令, d4-6、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀結(jié)束延時狀態(tài)(read—end—dly),將讀取的數(shù) 據(jù)備份至鎖存器中進(jìn)行數(shù)據(jù)鎖存,
d4-7、讀寫模式狀態(tài)轉(zhuǎn)換模塊回到初始狀態(tài)idle狀態(tài),等待下一次讀操作,讀操
作完畢;
所述每個寄存器虛擬設(shè)有多個隊(duì)列的深度為16或32或64或128或256或2048等。每個寄存器虛擬設(shè)有多個隊(duì)列的深度為2048,寄存器組為15個,發(fā)送端寄存器組(TX reg)為7個,接收端寄存器組(RX reg)為7個,中斷頻率控制寄存器組為1個。
所述中斷頻率控制寄存器組可以是深度為4096的MSIX寄存器或深度為2176的 Receive VLAN Filter Table Array接收VLAN過濾表(RVFTA寄存器)或深度為128的 Receive Multicast Table Array Register接收組播寄存器(RMTA寄存器)或深度為256 的Flexible TCO Filter Table Register靈活TCO過濾寄存器(FTFT寄存器)。
所述FPGA采用Xilinx的XC5VLX50T芯片,
所述塊狀存儲器(塊ram)可以采用單端口、雙端口、數(shù)據(jù)寬度的轉(zhuǎn)換等傳輸方式,
在對同一隊(duì)列同時進(jìn)行讀寫操作的狀態(tài)下,所述塊狀存儲器(塊ram)和讀寫模式狀 態(tài)轉(zhuǎn)換模塊均支持三種操作模式寫優(yōu)先模式、讀優(yōu)先模式、輸出不變模式。
寫優(yōu)先模式狀態(tài)下讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同;讀優(yōu)先模式狀態(tài)下先將該地址 所指定緩沖器的數(shù)據(jù)讀出,再寫入數(shù)據(jù),在寫操作時不影響該數(shù);輸出不變模式狀態(tài)下 數(shù)據(jù)僅寫入相應(yīng)的緩沖器,而不影響輸出,輸出緩沖器保持上一次讀操作時的數(shù)據(jù)。
所述數(shù)據(jù)包為傳輸層數(shù)據(jù)包。
與現(xiàn)有的技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)及有益效果
1、 本發(fā)明采用接收引擎模塊對三種數(shù)據(jù)包進(jìn)行處理分類,處理邏輯存儲和塊狀存儲 器存儲,實(shí)現(xiàn)對發(fā)送端寄存器還是接收端寄存器操作,使得數(shù)據(jù)控制、處理靈活高效。
2、 讀寫模塊主機(jī)可以對塊RAM存儲的數(shù)據(jù)進(jìn)行靈活的讀寫。
3、 塊狀存儲器的多個寄存器組,每個寄存器組都屬于其中的一個隊(duì)列支持大量數(shù)據(jù) 的存儲,寄存器組中的數(shù)據(jù)同屬于一個隊(duì)列,接收控制器或發(fā)送發(fā)送控制器需要讀寫相關(guān) 寄存器時,可以同時將相關(guān)寄存器讀寫,主要是方便數(shù)據(jù)的讀取、縮短數(shù)據(jù)存儲的周期。
4、 塊狀存儲器設(shè)有讀寫模式狀態(tài)轉(zhuǎn)換模塊完成讀寫操作后立刻返回初始狀態(tài),等待 下一次的命令,再進(jìn)行下一次的讀寫操作,主要是方便控制,提高操作效率,提高讀寫效 率,縮短數(shù)據(jù)存儲的周期。
5、 塊狀存儲器和讀寫模式狀態(tài)轉(zhuǎn)換模塊均支持三種操作模式寫優(yōu)先模式、讀優(yōu)先模 式、輸出不變模式,通過界面控制三種操作模式的選擇、切換,主要是方便控制,提高操 作效率,提高讀寫效率,縮短數(shù)據(jù)存儲的周期。
因此,本發(fā)明提供了一種數(shù)據(jù)存儲速度快、控制便捷靈活、可用于大量數(shù)據(jù)的存儲的存儲方法。


圖l:本發(fā)明框架圖2:讀寫模塊實(shí)現(xiàn)寄存器的邏輯存儲和塊RAM存儲的結(jié)構(gòu)框圖; 圖3:發(fā)送寄存器在塊RAM中的存儲示意圖; 圖4:接收寄存器在塊RAM中的存儲示意圖; 圖5:單端口塊R層模型示意圖6: write—first(寫優(yōu)先)模式下數(shù)據(jù)讀寫示意圖; 圖7: read-first (讀優(yōu)先)模式下數(shù)據(jù)讀寫示意圖; 圖8: no—change(輸出不變)模式下數(shù)據(jù)讀寫示意圖; 圖9:塊RAM中的讀寫模式狀態(tài)轉(zhuǎn)換模塊示意圖10:現(xiàn)有技術(shù)中虛擬網(wǎng)卡芯片按照2048、 512、 128和64隊(duì)列設(shè)計的資源需求表。 相關(guān)技術(shù)技術(shù)術(shù)語
1. Rx Engine:接收引擎模塊;
2. Rx FSM:接收有限狀態(tài)機(jī)模塊Receive Finite State Machine;
3. Rx Posted:接收到的Posted包;Posted request: Posted包請求;
4. Rx Non-Posted:接收至!j的NonPosted包;Non-Posted request: Non_Posted包請求;
5. Rx Completion:接收到的Completion包;
6. TU3: 傳輸層數(shù)據(jù)包Transaction Layer Packets;
7. Reg—Rd—Wr: 讀寫模塊register—read—write;
8. Tx Engine: 發(fā)送弓l擎模塊transmit Engine;
9. Tx FSM:發(fā)送有限狀態(tài)機(jī)Receive Finite State Machine;
10. Tx Completion: 發(fā)送的Completion包 ;
11. TX Reg:發(fā)送端寄存器組;
12. RX Reg:接收端寄存器;
13. Idle:初始狀態(tài)(一般用Idle表示初始狀態(tài),沒有什么特殊含義);
14. host—wr_en:主機(jī)寫使能,主機(jī)發(fā)出的要寫寄存器的命令;15. host—rd—en:主機(jī)讀使能,主機(jī)發(fā)出的要讀寄存器的命令;
16. write:寫狀態(tài),在此狀態(tài)下要發(fā)出寫的命令并且準(zhǔn)備好要寫入的地址和數(shù)據(jù);
17. write—end:寫結(jié)束狀態(tài),在此態(tài)下要設(shè)置寫命令無效;
18. read:讀狀態(tài),在此狀態(tài)下發(fā)出讀的命令和要讀取的地址;
19. reacLend:讀結(jié)束狀態(tài),在此態(tài)下已將要讀的地址內(nèi)的數(shù)據(jù)讀出;
20. read—end_dly:讀結(jié)束延時態(tài),在此態(tài)下將讀出的數(shù)據(jù)進(jìn)行鎖存;
21. Block ram:塊狀存儲器、塊ram;
22. 中斷頻率控制寄存器組;
23. MSIX寄存器MSI-X中斷寄存器(MSI-X是公知的, 一種中斷方式);
24. RVFTA寄存器Receive VLAN Filter Table Array接收VLAN過濾表;
25. RMTA寄存器Receive Multicast Table Array Register接收組播寄存器;
26. FTFT寄存器:Flexible TCO Filter Table Register靈活TC0過濾寄存器。
具體實(shí)施方式
下面結(jié)合附圖,對本發(fā)明作進(jìn)一步說明。
本發(fā)明提供了一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,包括網(wǎng)卡、FPGA,所述 FPGA包括塊狀存儲器(塊ram)、 MAC控制器模塊、DMA控制器、PCIe控制器模塊,其特殊 之處在于
所述FPGA中設(shè)有接收引擎模塊(Rxengine)、發(fā)送引擎模塊(Tx engine)、讀寫模塊 (Reg_Rd_Wr),接收引擎模塊(Rx engine)通過讀寫模塊(Reg_Rd—Wr)與發(fā)送引擎模塊 (Tx engine)連接,接收引擎模塊(Rx engine)實(shí)現(xiàn)從主機(jī)發(fā)送過來的數(shù)據(jù)包進(jìn)行處理 分類,發(fā)送引擎模塊(Tx engine)實(shí)現(xiàn)將用戶發(fā)往主機(jī)的數(shù)據(jù)打包,按照相應(yīng)的時序發(fā) 送給核接口,讀寫模塊(Reg_Rd—Wr)實(shí)現(xiàn)數(shù)據(jù)的存儲與提??;
所述接收引擎模塊(Rx engine)包括接收有限狀態(tài)機(jī)模塊(Rx FSM)、接收Posted 包模塊(Rx posted)、接收NonPosted包模塊(Rx No叩osted)、接收Completion包模塊 (Rx Completion);
所述發(fā)送引擎模塊(Tx engine)包括發(fā)送有限狀態(tài)機(jī)模塊(TxFSM)、發(fā)送Completion 包模塊(Tx Completion);所述塊狀存儲器(塊ram)內(nèi)虛擬設(shè)有已編址的多個寄存器組,多個寄存器組包括發(fā) 送端寄存器組(TX reg),接收端寄存器組(RX reg),中斷頻率控制寄存器組,每個寄存 器虛擬設(shè)有多個隊(duì)列;
一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法步驟如下
a、 主機(jī)將數(shù)據(jù)包發(fā)送到PCIe模塊,由PCIe模塊傳遞到接收引擎模塊(Rx engine), 由接收引擎模塊(Rx engine)進(jìn)行處理,執(zhí)行b操作;
b、 接收到的數(shù)據(jù)包有三禾中posted request, non—posted request, rx completion, 由發(fā)送有限狀態(tài)機(jī)模塊(RxFSM)對三種數(shù)據(jù)包進(jìn)行處理分類,發(fā)送有限狀態(tài)機(jī)模塊(Rx FSM)對posted request執(zhí)行c操作,發(fā)送有限狀態(tài)機(jī)模塊(Rx FSM)對non-posted request 執(zhí)行d操作,
c、 posted request由接收Posted包模塊(Rx posted)通過讀寫模塊(Reg—Rd一Wr) 分配給寄存器進(jìn)行寫操作,執(zhí)行cl操作,
cl、接收Posted包模塊(Rx posted)根據(jù)數(shù)據(jù)包中的地址判斷是進(jìn)行邏輯存儲 還是塊狀存儲器(塊ram)存儲,如果是塊狀存儲器(塊ram)存儲,執(zhí)行c2操作,
C2、接收Posted包模塊(Rx posted)根據(jù)數(shù)據(jù)包中的地址判斷是對發(fā)送端寄存 器(TX reg)還是接收端寄存器(RX reg)操作,如果是接收端寄存器(RX reg)操作, 執(zhí)行c3操作,
c3、接收Posted包模塊(Rx posted)根據(jù)數(shù)據(jù)包中的地址判斷確定對接收端寄 存器的具體塊狀存儲器(塊ram)寫操作,再根據(jù)地址判斷具體要向該塊狀存儲器(塊ram) 的哪一個隊(duì)列進(jìn)行寫操作,執(zhí)行c4操作;
C4、由讀寫模塊(Reg_Rd—Wr)將數(shù)據(jù)寫入塊狀存儲器的隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)的寫 操作,寫操作完畢;
d、 non-posted request由接收NonPosted包模塊(Rx Nonposted)通過讀寫模塊 (Reg—Rd一Wr)分配給寄存器進(jìn)行讀操作,執(zhí)行dl操作,
dl、接收NonPosted包模塊(Rx Nonposted)根據(jù)數(shù)據(jù)包中的地址判斷是進(jìn)行邏 輯存儲還是塊狀存儲器(塊ram)存儲,如果是塊狀存儲器(塊ram)存儲,執(zhí)行d2操作,
d2、接收NonPosted包模塊(Rx No叩osted)根據(jù)數(shù)據(jù)包中的地址判斷是對發(fā)送 端寄存器還是接收端寄存器操作,如果是接收端寄存器操作,執(zhí)行d3操作,d3、接收NonPosted包模塊(Rx No叩osted)根據(jù)數(shù)據(jù)包中的地址判確定對接收 端寄存器的具體塊狀存儲器(塊ram)讀操作,再根據(jù)數(shù)據(jù)包中的地址判斷具體要向該塊 狀存儲器(塊ram)的哪一個隊(duì)列進(jìn)行讀操作,執(zhí)行d4操作,
d 4、由讀寫模塊(Reg—Rd—Wr)將數(shù)據(jù)從塊狀存儲器的隊(duì)列中讀出,以實(shí)現(xiàn)數(shù)據(jù) 的讀操作,讀操作完畢,執(zhí)行d5操作;
d5、讀寫模塊(Reg_Rd_Wr)將具體塊狀存儲器(塊ram)的具體隊(duì)列中讀取到的 數(shù)據(jù)通過發(fā)送Completion包模塊(Tx Completion)返回給主機(jī)。
所述塊狀存儲器設(shè)有讀寫模式狀態(tài)轉(zhuǎn)換模塊,讀寫模式狀態(tài)轉(zhuǎn)換模塊分為讀模式狀態(tài) 的轉(zhuǎn)換和寫模式狀態(tài)的轉(zhuǎn)換,讀模式狀態(tài)分為初始狀態(tài)(idle),主機(jī)讀使能狀態(tài) (host_rd—en ),讀狀態(tài)(read),讀結(jié)束狀態(tài)(read_end ),讀結(jié)束延時狀態(tài) (read—end_dly),寫模式狀態(tài)分為初始狀態(tài)(idle),主機(jī)寫使能狀態(tài)(host—wr—en), 寫狀態(tài)(write),寫結(jié)束狀態(tài)(write_end),
I 、執(zhí)行c4步驟的寫操作具體為;
c4-l、讀寫模式狀態(tài)轉(zhuǎn)換模塊初始狀態(tài)為idle狀態(tài)時,
c4-2、讀寫模式狀態(tài)轉(zhuǎn)換模塊檢測到主機(jī)發(fā)送的命令host—wr一en時,處于主機(jī)寫 使能狀態(tài),
c4-3、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入寫狀態(tài)(write),
c4-4、由讀寫模塊(Reg_Rd—Wr)將數(shù)據(jù)寫入塊狀存儲器的隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)的
寫操作,
C4-5、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入寫結(jié)束狀態(tài)(write—end),關(guān)閉寫命令, c4-6、讀寫模式狀態(tài)轉(zhuǎn)換模塊回到初始狀態(tài)idle狀態(tài),等待下一次寫操作,寫操
作完畢;
II 、執(zhí)行d4步驟的讀操作具體為
d4-1、讀寫模式狀態(tài)轉(zhuǎn)換模塊初始狀態(tài)為idle狀態(tài)時,
d4-2、讀寫模式狀態(tài)轉(zhuǎn)換模塊檢測到主機(jī)發(fā)送的命令host—rd—en時,處于主機(jī)讀 使能狀態(tài),
d4-3、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀狀態(tài)(read),
d4-4、由讀寫模塊(Reg—Rd—Wr)將數(shù)據(jù)從塊狀存儲器的隊(duì)列中讀出,以實(shí)現(xiàn)數(shù)據(jù)
14的讀操作,
d4-5、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀結(jié)束狀態(tài)(read—end),關(guān)閉讀命令, d4-6、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀結(jié)束延時狀態(tài)(reacLend—dly),將讀取的數(shù) 據(jù)備份至鎖存器中進(jìn)行數(shù)據(jù)鎖存,
d4-7、讀寫模式狀態(tài)轉(zhuǎn)換模塊回到初始狀態(tài)idle狀態(tài),等待下一次讀操作,讀操
作完畢;
所述每個寄存器虛擬設(shè)有多個隊(duì)列的深度為16或32或64或128或256或2048等。 例如每個寄存器虛擬設(shè)有多個隊(duì)列的深度為2048,寄存器組為15個,發(fā)送端寄存器組
(TX reg)為7個,接收端寄存器組(RX reg)為7個,中斷頻率控制寄存器組為1個。 所述中斷頻率控制寄存器組可以是深度為4096的MSIX寄存器或深度為2176的 Receive VLAN Filter Table Array接收VLAN過濾表(RVFTA寄存器)或深度為128的 Receive Multicast Table Array Register接收組播寄存器(RMTA寄存器)或深度為256 的Flexible TCO Filter Table Register靈活TC0過濾寄存器(FTFT寄存器)。
所述FPGA采用Xilinx的XC5VLX50T芯片,所述數(shù)據(jù)包為傳輸層數(shù)據(jù)包(TLP),所述 塊狀存儲器(塊ram)可以采用單端口、雙端口、數(shù)據(jù)寬度的轉(zhuǎn)換等傳輸方式。
在對同一隊(duì)列同時進(jìn)行讀寫操作的狀態(tài)下,所述塊狀存儲器(塊ram)和讀寫模式狀 態(tài)轉(zhuǎn)換模塊均支持三種操作模式寫優(yōu)先模式、讀優(yōu)先模式、輸出不變模式。寫優(yōu)先模式 狀態(tài)下讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同;讀優(yōu)先模式狀態(tài)下先將該地址所指定緩沖器的 數(shù)據(jù)讀出,再寫入數(shù)據(jù),在寫操作時不影響該數(shù);輸出不變模式狀態(tài)下數(shù)據(jù)僅寫入相應(yīng) 的緩沖器,而不影響輸出,輸出緩沖器保持上一次讀操作時的數(shù)據(jù)。
如圖1所示從主機(jī)中傳出的數(shù)據(jù)只能通過PCIe到Rx engine,由外部向主機(jī)傳輸數(shù) 據(jù)是有Rx engine通過PCIe傳遞到主機(jī),Rx Engine模塊實(shí)現(xiàn)將從主機(jī)發(fā)送過來的數(shù)據(jù) 包進(jìn)行處理分類。接收到的包有三種
(1) Posted request:不需要返回Completion,如寫寄存器。
(2) Non-Posted request:需要返回Completion,如讀寄存器。
(3) Rx Completion:網(wǎng)卡向主機(jī)請求讀數(shù)據(jù)或者描述符,通過Rx Completion包將 所請求的對象發(fā)送至網(wǎng)卡。
根據(jù)接收到的TLP類型,Rx Engine模塊可以分成Rx FSM、 RxPosted、 RxNonPosted和Rx Completion模塊,Rx FSM根據(jù)不同類型的TLP,將數(shù)據(jù)分配給不同的模塊。其中, Posted和Non-Posted的數(shù)據(jù)包將分配給寄存器讀寫模塊,Non-Posted的數(shù)據(jù)包需要返 回數(shù)據(jù),由Reg_Rd—Wr模塊返回數(shù)據(jù)通過Tx Co卿letion傳遞回主機(jī)。
如圖2所示模塊Reg一Rd一Wr主要實(shí)現(xiàn)寄存器的存儲和讀寫模塊,存儲類型是邏輯存 儲和塊RAM存儲。
首先主機(jī)通過PCIe Core接收的數(shù)據(jù)經(jīng)過Rx FSM模塊,Rx FSM根據(jù)不同類型的TLP, 將數(shù)據(jù)分配給不同的模塊,若為RxPosted模塊,則進(jìn)行寄存器的寫操作,根據(jù)地址判斷 是進(jìn)行邏輯存儲還是塊RAM存儲;若為RxNonPosted模塊,則進(jìn)行寄存器的讀操作,也要 根據(jù)地址判斷是進(jìn)行邏輯存儲還是塊RAM存儲;邏輯存儲主要是針對單個32bit的寄存器 存儲,其中邏輯存儲比較簡單,在此不再贅述,主要講述利用塊RAM存儲深度大的寄存器。
如圖3、圖4所示在進(jìn)行此設(shè)計中,首先對深度為2048的寄存器進(jìn)行編址,每個寄 存器的深度不一定都為2048,要根據(jù)資源大小而定,要是資源不夠可以設(shè)計深度為256、 128、 64等,在此以深度2048為例。
通過分析深度為2048的有15個寄存器組,分別是TX Reg和RX Reg各7個,外加一 個中斷頻率控制寄存器組ITRC;中斷頻率控制寄存器組ITRC可以為深度為4096的MSIX 寄存器或者深度為2176的RVFTA寄存器或者深度為128的RMTA寄存器或者深度為6272 的寄存器(RMHTA+RMATA)或者深度為256的寄存器FTFT。
以發(fā)送寄存器TX為例,將TDBAL寄存器地址設(shè)置為0x10—0000+nX 0x20 (n=0~2047), 寄存器TDBAH地址設(shè)置為0x10—0004+nX 0x20 (n=(T2047),其他寄存器依此類推;接收寄 存器以寄存器RDBAL為例,將其寄存器地址設(shè)置為0x40—0000+nX 0x20 (n=(T2047),寄存 器RDBAH地址設(shè)置為0x40_0004+nX0x20(n=(T2047),其他寄存器依此類推。圖3、圖4 分別為發(fā)送寄存器和接收寄存器在塊RAM中的存儲情況。
假設(shè)主機(jī)要讀或?qū)憯?shù)據(jù)的地址是address, address[23:16]決定是對發(fā)送寄存器還是 接收寄存器操作。n表示的是塊RAM的編號,n=address[4:0];如果『5' h0,表示是要 向塊RAM0中讀或?qū)懀籲=5' h4,表示是要向塊RAM1中讀或?qū)懀籲=5' h8,表示是要向塊RAM2 中讀或?qū)?;n=5' hc,表示是要向塊RAM3中讀或?qū)?;n=5' hlO,表示是要向塊RAM4中讀 或?qū)?;n=5, h14,表示是要向塊RAM5中讀或?qū)?;n=5, h18,表示是要向塊RAM6中讀或?qū)憽?br> 在確定某一塊RAM讀或?qū)懞?,就要決定具體要向該塊RAM的哪一個地址中讀寫,該地址為address [15:5]。
如圖5所示根據(jù)實(shí)際的需要,本文采用的單端口塊RAM是使用的Xilinx的IP核設(shè) 計,IP核的生成在此不再闡述;單端口塊RAM模型。 Block RAM的各個信號定義如下。
CLKA: block ram的a 口時鐘控制信號。
ENA: block ram使能信號,當(dāng)該控制腳為低時,寫入和讀出操作無效; WEA: block ram讀/寫控制信號,當(dāng)ENA控制為高時,WEA=1表示對目標(biāo)地址執(zhí)行寫 操作;WEA=0表示對目標(biāo)地址執(zhí)行讀操作。
SSRA: block ram的置位控制信號,當(dāng)ENA控制為高時,該信號有效。
ADDRA: block ram地址輸入信號。
DINA: block ram的數(shù)據(jù)輸入。
DOUTA: block ram的數(shù)據(jù)輸出。
REGCEA: block ram的最后寄存器使能輸出。
塊存儲器除了實(shí)現(xiàn)單/雙端口的存儲器以外,還可支持?jǐn)?shù)據(jù)寬度的轉(zhuǎn)換(包括奇偶校驗(yàn) 位),可以用多個block ram組成更大深度和寬度的存儲單元。
如圖6、圖7、圖8所示塊RAM支持三種操作模式,這些模式在下面進(jìn)行詳述。
write—first (寫優(yōu)先)模式在write—frist模式下同時讀/寫block ram的同一地址 時,讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同,如圖6所示。這種傳輸模式在向同一端口進(jìn)行寫操作 時,使得數(shù)據(jù)輸出總線變得很靈活。
read-first(讀優(yōu)先)模式在該模式下,同時讀/寫blok ram的同一地址時,首先將 該地址所指定緩沖器的數(shù)據(jù)讀出。在寫操作時不影響該數(shù)據(jù),如圖7所示。
no—change(輸出不變)模式在該模式下,同時讀/寫block ram的同一地址時,數(shù)據(jù) 僅寫入相應(yīng)的緩沖器,而不影響輸出。輸出緩沖器保持上一次讀操作時的數(shù)據(jù),如圖8所 示。
根據(jù)塊RAM的三種模式,結(jié)合項(xiàng)目的實(shí)際需要,選擇write—first(寫優(yōu)先)模式還是 read-first (讀優(yōu)先)模式還是no—change (輸出不變)模式。
如圖9所示塊RAM讀寫模式狀態(tài)轉(zhuǎn)換模塊示意圖,該狀態(tài)轉(zhuǎn)換主要分為讀寫兩個 操作,當(dāng)初時態(tài)處于idle時,若檢測到主機(jī)發(fā)送的命令host—wr—en時,此時要寫的地址和數(shù)據(jù)己經(jīng)準(zhǔn)備完畢,則進(jìn)入寫操作;檢測到主機(jī)發(fā)送的host—rd—en命令時,此時要讀 取的地址已經(jīng)準(zhǔn)備完畢,則執(zhí)行讀操作。根據(jù)將要寫入或讀取數(shù)據(jù)的地址address,解析 出數(shù)據(jù)要寫入的哪一個塊RAM,以及該塊RAM的哪一個位置空間。
在進(jìn)行寫操作時,首先進(jìn)入write狀態(tài)。在該狀態(tài)下將數(shù)據(jù)寫入地址中,下一周期進(jìn) 入write—end狀態(tài),在該狀態(tài)下,將信號wea和ena均置為0,關(guān)閉寫命令,完成此數(shù)據(jù) 的寫操作。在進(jìn)行寫操作時,write狀態(tài)將數(shù)據(jù)寫入塊RAM地址中,寫入數(shù)據(jù)操作完畢后 由write_end狀態(tài)關(guān)閉寫命令。
在進(jìn)行讀操作時,首先進(jìn)入read狀態(tài),在該狀態(tài)下將讀取地址中數(shù)據(jù),下一周期進(jìn)入 read—end狀態(tài),在該狀態(tài)下,將信號wea和ena均置為0,關(guān)閉讀命令,完成此數(shù)據(jù)的讀 操作,此時數(shù)據(jù)已經(jīng)由douta輸出。為了保持?jǐn)?shù)據(jù)的穩(wěn)定性,避免亞穩(wěn)態(tài)出現(xiàn),在 read—end—dly狀態(tài)下,用一鎖存器對結(jié)果進(jìn)行鎖存。在進(jìn)行讀操作時,read狀態(tài)讀取塊 RAM地址中的數(shù)據(jù),并將數(shù)據(jù)發(fā)送至指定的寄存器,讀取數(shù)據(jù)操作完畢后由read—end狀態(tài) 關(guān)閉讀命令。完成讀操作后在read—end—dly執(zhí)行鎖存器對結(jié)果進(jìn)行鎖存。
最后應(yīng)當(dāng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制,盡管參照 上述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對 本發(fā)明的具體實(shí)施方式
進(jìn)行修改或者等同替換,而未脫離本發(fā)明精神和范圍的任何修改或 者等同替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
18
權(quán)利要求
1、一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,包括網(wǎng)卡、FPGA,所述FPGA包括塊狀存儲器、MAC控制器模塊、DMA控制器、PCIe控制器模塊,其特征在于所述FPGA中設(shè)有接收引擎模塊、發(fā)送引擎模塊、讀寫模塊,接收引擎模塊通過讀寫模塊與發(fā)送引擎模塊連接,接收引擎模塊實(shí)現(xiàn)從主機(jī)發(fā)送過來的數(shù)據(jù)包進(jìn)行處理分類,發(fā)送引擎模塊實(shí)現(xiàn)將用戶發(fā)往主機(jī)的數(shù)據(jù)打包,按照相應(yīng)的時序發(fā)送給核接口,讀寫模塊實(shí)現(xiàn)數(shù)據(jù)的存儲與提??;所述接收引擎模塊包括接收有限狀態(tài)機(jī)模塊、接收Posted包模塊、接收NonPosted包模塊、接收Completion包模塊;所述發(fā)送引擎模塊包括發(fā)送有限狀態(tài)機(jī)模塊、發(fā)送Completion包模塊;所述塊狀存儲器內(nèi)虛擬設(shè)有已編址的多個寄存器組,多個寄存器組包括發(fā)送端寄存器組,接收端寄存器組,中斷頻率控制寄存器組,每個寄存器虛擬設(shè)有多個隊(duì)列;一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法步驟如下a、主機(jī)將數(shù)據(jù)包發(fā)送到PCIe模塊,由PCIe模塊傳遞到接收引擎模塊,由接收引擎模塊進(jìn)行處理,執(zhí)行b操作;b、接收到的數(shù)據(jù)包有三種posted request,non-posted request,rx completion,由發(fā)送有限狀態(tài)機(jī)模塊對三種數(shù)據(jù)包進(jìn)行處理分類,發(fā)送有限狀態(tài)機(jī)模塊對posted request執(zhí)行c操作,發(fā)送有限狀態(tài)機(jī)模塊對non-posted request執(zhí)行d操作,c、posted request由接收Posted包模塊通過讀寫模塊分配給寄存器進(jìn)行寫操作,執(zhí)行c1操作,c1、接收Posted包模塊根據(jù)數(shù)據(jù)包中的地址判斷是進(jìn)行邏輯存儲還是塊狀存儲器存儲,如果是塊狀存儲器存儲,執(zhí)行c2操作,c2、接收Posted包模塊根據(jù)數(shù)據(jù)包中的地址判斷是對發(fā)送端寄存器還是接收端寄存器操作,如果是接收端寄存器操作,執(zhí)行c3操作,c3、接收Posted包模塊根據(jù)數(shù)據(jù)包中的地址判斷確定對接收端寄存器的具體塊狀存儲器寫操作,再根據(jù)地址判斷具體要向該塊狀存儲器的哪一個隊(duì)列進(jìn)行寫操作,執(zhí)行c4操作;c4、由讀寫模塊將數(shù)據(jù)寫入塊狀存儲器的隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)的寫操作,寫操作完畢;d、non-posted request由接收NonPosted包模塊通過讀寫模塊分配給寄存器進(jìn)行讀操作,執(zhí)行d1操作,d1、接收NonPosted包模塊根據(jù)數(shù)據(jù)包中的地址判斷是進(jìn)行邏輯存儲還是塊狀存儲器存儲,如果是塊狀存儲器存儲,執(zhí)行d2操作,d2、接收NonPosted包模塊根據(jù)數(shù)據(jù)包中的地址判斷是對發(fā)送端寄存器還是接收端寄存器操作,如果是接收端寄存器操作,執(zhí)行d3操作,d3、接收NonPosted包模塊根據(jù)數(shù)據(jù)包中的地址判確定對接收端寄存器的具體塊狀存儲器讀操作,再根據(jù)數(shù)據(jù)包中的地址判斷具體要向該塊狀存儲器的哪一個隊(duì)列進(jìn)行讀操作,執(zhí)行d4操作,d4、由讀寫模塊將數(shù)據(jù)從塊狀存儲器的隊(duì)列中讀出,以實(shí)現(xiàn)數(shù)據(jù)的讀操作,讀操作完畢,執(zhí)行d5操作;d5、讀寫模塊將具體塊狀存儲器的具體隊(duì)列中讀取到的數(shù)據(jù)通過發(fā)送Completion包模塊返回給主機(jī)。
2、根據(jù)權(quán)利要求1所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在于 所述塊狀存儲器設(shè)有讀寫模式狀態(tài)轉(zhuǎn)換模塊,讀寫模式狀態(tài)轉(zhuǎn)換模塊分為讀模式狀態(tài)的轉(zhuǎn)換 和寫模式狀態(tài)的轉(zhuǎn)換,讀模式狀態(tài)分為初始狀態(tài),主機(jī)讀使能狀態(tài),讀狀態(tài),讀結(jié)束狀態(tài),讀結(jié)束延時狀態(tài),寫模式狀態(tài)分為初始狀態(tài),主機(jī)寫使能狀態(tài),寫狀態(tài),寫結(jié)束狀態(tài), I、執(zhí)行C4步驟的寫操作具體為;c4-l、讀寫模式狀態(tài)轉(zhuǎn)換模塊初始狀態(tài)為idle狀態(tài)時,c4-2、讀寫模式狀態(tài)轉(zhuǎn)換模塊檢測到主機(jī)發(fā)送的命令hostjr—en時,處于主機(jī)寫使能狀態(tài),c4-3、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入寫狀態(tài),c4-4、由讀寫模塊將數(shù)據(jù)寫入塊狀存儲器的隊(duì)列中,以實(shí)現(xiàn)數(shù)據(jù)的寫操作, c4-5、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入寫結(jié)束狀態(tài),關(guān)閉寫命令,c4-6、讀寫模式狀態(tài)轉(zhuǎn)換模塊回到初始狀態(tài)idle狀態(tài),等待下一次寫操作,寫操作完畢;II、執(zhí)行d4步驟的讀操作具體為d4-l、讀寫模式狀態(tài)轉(zhuǎn)換模塊初始狀態(tài)為idle狀態(tài)時,d4-2、讀寫模式狀態(tài)轉(zhuǎn)換模塊檢測到主機(jī)發(fā)送的命令host—rcLen時,處于主機(jī)讀使能狀態(tài),d4-3、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀狀態(tài),d4-4、由讀寫模塊將數(shù)據(jù)從塊狀存儲器的隊(duì)列中讀出,以實(shí)現(xiàn)數(shù)據(jù)的讀操作, d4-5、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀結(jié)束狀態(tài),關(guān)閉讀命令,d4-6、讀寫模式狀態(tài)轉(zhuǎn)換模塊進(jìn)入讀結(jié)束延時狀態(tài),將讀取的數(shù)據(jù)備份至鎖存器中 進(jìn)行數(shù)據(jù)鎖存,d4-7、讀寫模式狀態(tài)轉(zhuǎn)換模塊回到初始狀態(tài)idle狀態(tài),等待下一次讀操作,讀操作完畢;
3、 根據(jù)權(quán)利要求1或2所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在 于所述每個寄存器虛擬設(shè)有多個隊(duì)列的深度為16或32或64或128或256或2048等。
4、 根據(jù)權(quán)利要求3所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在于 所述每個寄存器虛擬設(shè)有多個隊(duì)列的深度為2048,寄存器組為15個,發(fā)送端寄存器組為7 個,接收端寄存器組為7個,中斷頻率控制寄存器組為l個。
5、 根據(jù)權(quán)利要求4所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在于 所述中斷頻率控制寄存器組可以是深度為4096的MSIX寄存器或深度為2176的Receive VLAN Filter Table Array接收V副過濾表或深度為128的Receive Multicast Table Array Register接收組播寄存器或深度為256的Flexible TCO Filter Table Register靈活TCO 過濾寄存器。
6、 根據(jù)權(quán)利要求1或2所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在 于所述FPGA采用Xilinx的XC5VLX50T芯片,
7、 根據(jù)權(quán)利要求1或2所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在 于所述塊狀存儲器可以采用單端口、雙端口、數(shù)據(jù)寬度的轉(zhuǎn)換等傳輸方式,
8、 根據(jù)權(quán)利要求1或2所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在 于在對同一隊(duì)列同時進(jìn)行讀寫操作的狀態(tài)下,所述塊狀存儲器和讀寫模式狀態(tài)轉(zhuǎn)換模塊均支持三種操作模式寫優(yōu)先模式、讀優(yōu)先模式、輸出不變模式。
9、 根據(jù)權(quán)利要求8所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在于 寫優(yōu)先模式狀態(tài)下讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同;讀優(yōu)先模式狀態(tài)下先將該地址所指定 緩沖器的數(shù)據(jù)讀出,再寫入數(shù)據(jù),在寫操作時不影響該數(shù);輸出不變模式狀態(tài)下數(shù)據(jù)僅寫 入相應(yīng)的緩沖器,而不影響輸出,輸出緩沖器保持上一次讀操作時的數(shù)據(jù)。
10、 根據(jù)權(quán)利要求1或2所述的一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,其特征在 于所述數(shù)據(jù)包為傳輸層數(shù)據(jù)包。
全文摘要
一種基于FPGA的多虛擬隊(duì)列數(shù)據(jù)存儲的方法,本發(fā)明設(shè)計基于FPGA中實(shí)現(xiàn)高速網(wǎng)卡數(shù)據(jù)讀寫技術(shù),特別是涉及一種多虛擬隊(duì)列的數(shù)據(jù)存儲方法,本設(shè)計采用接收引擎模塊、讀寫模塊、塊狀存儲器的多個寄存器組,每個寄存器組都屬于其中的一個隊(duì)列、塊狀存儲器設(shè)有讀寫模式狀態(tài)轉(zhuǎn)換模塊、塊狀存儲器和讀寫模式狀態(tài)轉(zhuǎn)換模塊均支持三種操作模式,對所有大量的(如2048個)隊(duì)列中的寄存器使用FPGA中的塊RAM進(jìn)行存儲和處理,實(shí)現(xiàn)對同一隊(duì)列的相關(guān)寄存器進(jìn)行同時讀寫。解決了現(xiàn)有技術(shù)中邏輯存儲和外部存儲的邏輯資源不足、存儲速度慢、存儲周期長等問題。
文檔編號G11C11/401GK101599294SQ20091008389
公開日2009年12月9日 申請日期2009年5月11日 優(yōu)先權(quán)日2009年5月11日
發(fā)明者方信我, 宇 曾, 白宗元, 鄭臣明 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
洮南市| 纳雍县| 克东县| 翼城县| 和政县| 惠水县| 台中市| 台前县| 舟曲县| 武平县| 平谷区| 柳江县| 涞源县| 河津市| 台前县| 东兰县| 波密县| 旺苍县| 松原市| 孙吴县| 武义县| 营山县| 襄樊市| 峨山| 建德市| 利辛县| 广宗县| 隆林| 连南| 申扎县| 吉安市| 巨鹿县| 木兰县| 昌都县| 抚宁县| 乌拉特前旗| 苗栗市| 始兴县| 博客| 岳池县| 四平市|