新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)

基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)

作者: 時(shí)間:2008-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)

  2 數(shù)據(jù)包的重新封裝

  用實(shí)現(xiàn)數(shù)據(jù)包的重新封裝,同時(shí)是通過(guò)控制幾個(gè)的數(shù)據(jù)輸入輸出來(lái)實(shí)現(xiàn)的,同部的重新封裝單元電路的物理連接如圖3所示,其4的作用是緩存密碼芯片送出的加解密處理后的數(shù)據(jù);5的作用是緩存重新封裝后的數(shù)據(jù);FIFO3與拆分單元共用,作用是緩用IPV6數(shù)據(jù)包頭。

  圖中的FIFO4和FIFO5也都是由Xilinx公司的開(kāi)發(fā)工具ISE6.1自帶的Core IP生成的,其中FIFO4是異步FIFO,輸入時(shí)鐘為50MHz,輸出時(shí)鐘為62.5MHz,輸入輸出數(shù)據(jù)寬度都是66bit;FIFO5是同步FIFO,工作時(shí)鐘為62.5MHz,輸入輸出數(shù)據(jù)寬度都是66bit。

  密碼芯片對(duì)數(shù)據(jù)進(jìn)行加/解密處理完畢之后,在送出處理數(shù)據(jù)前,首先向外部系統(tǒng)發(fā)送一64bit長(zhǎng)的連接指令,指明處理數(shù)據(jù)所用的加解密算法和數(shù)據(jù)長(zhǎng)度。例如,在對(duì)數(shù)據(jù)進(jìn)行2DES加密處理的情況下,接收指令格式(16位制)如圖4所示,其中高56位為指令編碼,低8位為將要輸出的處理數(shù)據(jù)的長(zhǎng)度。

基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)

  因此,在接收處理數(shù)據(jù)時(shí),首先判斷是否有接收指令,如果有接收搦令,則其接收指令中的數(shù)據(jù)長(zhǎng)度放寄存器中進(jìn)行寄存,并設(shè)定計(jì)數(shù)器COUNTER2開(kāi)始計(jì)數(shù)。當(dāng)0COUNTER2=數(shù)據(jù)長(zhǎng)度時(shí),則令FIFO4的寫使能WR_EN4有效;當(dāng)COUNTER2為其它值時(shí),WR_EN4無(wú)效。當(dāng)0COUNTER2數(shù)據(jù)長(zhǎng)度時(shí),將“11”寫入DIN4(65~64),將64bit處理數(shù)據(jù)寫入DIN4(63~0);當(dāng)COUNTER2=數(shù)據(jù)長(zhǎng)度時(shí),即接收到最后一周期的處理數(shù)據(jù)時(shí),將“01”寫入DIN4(65~64),將64bit處理數(shù)據(jù)寫入DIN4(63~0),并將COUNTER2清零。這樣,密碼芯片處理后的數(shù)據(jù)就按格式要求緩存到FIFO4中了。

  這時(shí),包頭已經(jīng)緩存到FIFO3中了,處理后的數(shù)據(jù)已經(jīng)按格式要求緩存到FIFO4中了,最后要做的就是控制FIFO3和FIFO4,把一個(gè)完整的IPV6數(shù)據(jù)包寫入FIFO5中。具體做法是:設(shè)定計(jì)數(shù)器COUNTER3,當(dāng)FIFO3和FIFO4都非空時(shí),COUNTER3開(kāi)始計(jì)數(shù)。當(dāng)COUNTER3>0時(shí),將FIFO5的寫使能信號(hào)WR_EN5置為有效;當(dāng)COUNTER3=0時(shí),WR_EN5置為無(wú)效。當(dāng)0COUNTER36時(shí),令FIFO3的讀使能RD_EN3有效,F(xiàn)IFO3將輸出數(shù)據(jù)DOUT3(65~0)寫入FIFO5的輸入端DIN5(65~0);當(dāng)COUNTER3>l=6時(shí),令RD_EN3無(wú)效,RD_EN4有效,將FIFO4的輸出數(shù)據(jù)DOUT4(65~0)寫入FIFO5的輸入端DIN5(65~0),直到DOUT4(65~64)=“01”時(shí),將COUNTER3清零,RD_EN4置為無(wú)效。這樣,一個(gè)完整的IPV6數(shù)據(jù)包就重封裝在FIFO5中了,當(dāng)判斷到FIFO5非空間,就可以令RD_EN5有效,向外輸出處理后的完整的IPV6數(shù)據(jù)包了。

基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)

  從上述討論可以看出,本課題在中采用了五個(gè)FIFO,并設(shè)定了三個(gè)計(jì)數(shù)器控制這五個(gè)FIFO的輸入輸出來(lái)實(shí)現(xiàn)對(duì)IPV6數(shù)據(jù)包的拆分和重新封裝??偟膩?lái)看,整個(gè)FPGA設(shè)計(jì)思路巧妙,電路結(jié)構(gòu)簡(jiǎn)單,達(dá)到了預(yù)期的處理速度。圖5是整個(gè)測(cè)試系統(tǒng)在對(duì)1024字節(jié)的IPV6數(shù)據(jù)包進(jìn)行拆包、送密碼芯片加密。重裝封裝處理后測(cè)試儀控制軟件界面上顯示的收包數(shù)據(jù)統(tǒng)計(jì)。從該圖可以看出,整個(gè)系統(tǒng)對(duì)IPV6數(shù)據(jù)包的處理速度達(dá)到了2.372Gbit/s,而這樣的處理速度用軟件是不可能達(dá)到的。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: FPGA IPV6 FIFO

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉