<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          基于FPGA的IPV6數(shù)字包的分離與封裝的實(shí)現(xiàn)

          作者: 時間:2012-05-23 來源:網(wǎng)絡(luò) 收藏
          下面討論數(shù)據(jù)包的包頭和數(shù)據(jù)部分的拆分過程。

          本文引用地址:http://www.ex-cimer.com/article/149011.htm

            首先判斷FIFO1輸入端數(shù)據(jù)的頭尾標(biāo)志DATA(65~64)與FIFO1的滿標(biāo)志FULL1,如果DATA(65~64)=“10”且FULL1=“0”,即判斷到一個完整數(shù)據(jù)包的開始且FIFO1未滿,則使FIFO1的寫使能WR_EN1有效,寫入數(shù)據(jù);如果DATA(65~64)=“01”,好判斷到一個完整數(shù)據(jù)包結(jié)束時,則使WR_EN1無效,這樣一個完整的數(shù)據(jù)包就緩存到了FIFO1時。

            當(dāng)判斷到FIFO1的空標(biāo)示EMPTY1=“0”,即FIFO1非空間,令FIFO1的讀使能信號RD_EN1有效,將FIFO1中的數(shù)據(jù)讀出,直到EMPTY1=“1”,即FIFO1空為止。對讀出的數(shù)據(jù)設(shè)定一計數(shù)器COUNTER1進(jìn)行計數(shù),當(dāng)DONT1不為0即FIFO1輸出端有信號時開始計數(shù)。當(dāng)05時,令WR_EN3無效,WR_EN2有效,將數(shù)據(jù)包的數(shù)據(jù)部分送FIFO2緩存,準(zhǔn)備送密碼芯片處理,直到頭尾標(biāo)志DOUT1(65~64)=“01”時,將COUNTER1清零,在判斷到COUNTER1為0后,將WR_EN2置為無效。注意:FIFO1的輸出端口是66位,F(xiàn)IFO2的輸入端口是64位的,故在FIFO1向FIFO2寫數(shù)據(jù)的過程中,應(yīng)將FIFO1的輸出端口信號DOUT(63~0)傳送給FIFO2的輸入端口DIN2(63~-)。當(dāng)判斷到FIFO2非空間,將其讀使能信號RD_EN2置為有效,即可向密碼芯片送出數(shù)據(jù)。

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

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

            用IPV6數(shù)據(jù)包的重新,同時是通過控制幾個FIFO的數(shù)據(jù)輸入輸出來的,同部的重新單元電路的物理連接如圖3所示,其FIFO4的作用是緩存密碼芯片送出的加解密處理后的數(shù)據(jù);FIFO5的作用是緩存重新封裝后的IPV6數(shù)據(jù);FIFO3與拆分單元共用,作用是緩用IPV6數(shù)據(jù)包頭。

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

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

            因此,在接收處理數(shù)據(jù)時,首先判斷是否有接收指令,如果有接收搦令,則其接收指令中的數(shù)據(jù)長度放寄存器中進(jìn)行寄存,并設(shè)定計數(shù)器COUNTER2開始計數(shù)。當(dāng)0

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

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

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


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();