基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)_第1頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余3頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于fpga的ipv6數(shù)字包的拆裝實(shí)現(xiàn)筆者在參與國(guó)家“863”重大專題項(xiàng)目“高速密碼芯片及驗(yàn)證平臺(tái)系統(tǒng)”的過(guò)程中,碰到了將ipv6數(shù)據(jù)包的包頭和數(shù)據(jù)部分拆開(kāi),然后在數(shù)據(jù)部分送密碼芯片舉行加/解密處理,最后再將處理后的數(shù)據(jù)部分與包頭重新封裝為數(shù)據(jù)包的課題。以往對(duì)ip包舉行拆裝多利用軟件實(shí)現(xiàn),但本項(xiàng)目涉及到協(xié)作高速密碼芯片(處理速度在2gbit/s以上)工作的問(wèn)題,明顯利用軟件實(shí)現(xiàn)ip包的拆裝在速度上達(dá)不到要求。為此,筆者運(yùn)用(型號(hào)為公司的xc2vp20-ff86cgb0345)來(lái)實(shí)現(xiàn)ipv6數(shù)據(jù)包的拆裝。該fpga內(nèi)部規(guī)律框圖1所示。其工作流程為:2.5ghz的標(biāo)準(zhǔn)ipv6數(shù)據(jù)包串行差分信號(hào)通過(guò)

2、rocketio高速通道后轉(zhuǎn)換為16位125mhz并行信號(hào),再經(jīng)信號(hào)轉(zhuǎn)換模塊進(jìn)一步轉(zhuǎn)換為66位62.5mhz并行信號(hào)后進(jìn)入fifo1緩存,然后對(duì)其輸出數(shù)據(jù)舉行推斷,若是報(bào)頭則送入fifo3緩存,若是數(shù)據(jù)部分則送入fifo2緩存,最后將fifo2數(shù)據(jù)送往密碼芯片舉行處理;經(jīng)密碼芯片處理的數(shù)據(jù)首先放入fifo4舉行緩存,然后控制fifo3和fifo4將一個(gè)數(shù)據(jù)包的頭和數(shù)據(jù)寫入fifo5中,重新封裝成一個(gè)完整的數(shù)據(jù)包;重新封裝的ipv6數(shù)據(jù)包經(jīng)過(guò)信號(hào)轉(zhuǎn)換模塊變?yōu)?6位125mhz的并行信號(hào),并通過(guò)rocketio高速通道轉(zhuǎn)換為2.5ghz高速串行差分信號(hào)送出??梢钥闯?,經(jīng)過(guò)以上流程,實(shí)現(xiàn)了一個(gè)數(shù)據(jù)包

3、的拆分和重新封裝。1 ipv6數(shù)據(jù)包的拆分用fpgap實(shí)現(xiàn)ipv6數(shù)據(jù)包的拆分,主要是通過(guò)控制幾個(gè)fifo的數(shù)據(jù)輸入輸出來(lái)實(shí)現(xiàn)的。fpga內(nèi)部的拆分單元的物理銜接2所示,其中fifo的作用是緩存ipv6數(shù)據(jù)包,fifo2的作用是緩存ipv6數(shù)據(jù)包的數(shù)據(jù)部分,fifo3的作用是緩存ipv6數(shù)據(jù)包的包頭。圖中的三個(gè)fifo都是由xilinx公司的開(kāi)發(fā)工具ise6.1自帶的core ip生成的。其中fifo1和fifo3是同步fifo,工作時(shí)鐘為頻率62.5mhz,輸入輸出數(shù)據(jù)寬度都是66bit;fifo2是異步fifo,輸入時(shí)鐘頻率為62.5mhz,輸出時(shí)鐘頻率為50mhz(密碼芯片的工作時(shí)鐘頻率

4、為50mhz),輸入輸出數(shù)據(jù)寬度都是64bit。fifo1的輸入數(shù)據(jù)為ipv6數(shù)據(jù)包??梢钥闯觯摂?shù)據(jù)是以并行的66bit信號(hào)傳輸?shù)?,即每一時(shí)鐘周期并行傳送66bit數(shù)據(jù),其中每個(gè)周期的高兩位(即65位和64位)為數(shù)據(jù)包的頭尾標(biāo)記,這是ipv6路由器內(nèi)部按照實(shí)際處理需要加上的,“10”表示一個(gè)完整數(shù)據(jù)包的第一周期,“11”表示數(shù)據(jù)包的中間內(nèi)容,“01”表示一個(gè)完整數(shù)據(jù)包的最后一個(gè)周期。由于ipv6數(shù)據(jù)包的包頭是固定長(zhǎng)度的,為40字節(jié)(等于564bit),故數(shù)據(jù)的前五個(gè)周期為ipv6數(shù)據(jù)包的包頭,包頭后面跟的就是數(shù)據(jù)包的數(shù)據(jù)部分。下面研究ipv6數(shù)據(jù)包的包頭和數(shù)據(jù)部分的拆分過(guò)程。首先推斷fifo

5、1輸入端數(shù)據(jù)的頭尾標(biāo)記data(6564)與fifo1的滿標(biāo)記full1,假如data(6564)=“10”且full1=“0”,即推斷到一個(gè)完整數(shù)據(jù)包的開(kāi)頭且fifo1未滿,則使fifo1的寫使能wr_en1有效,寫入數(shù)據(jù);假如data(6564)=“01”,好推斷到一個(gè)完整數(shù)據(jù)包結(jié)束時(shí),則使wr_en1無(wú)效,這樣一個(gè)完整的數(shù)據(jù)包就緩存到了fifo1時(shí)。當(dāng)推斷到fifo1的空標(biāo)示empty1=“0”,即fifo1非空間,令fifo1的讀使能信號(hào)rd_en1有效,將fifo1中的數(shù)據(jù)讀出,直到empty1=“1”,即fifo1空為止。對(duì)讀出的數(shù)據(jù)設(shè)定一計(jì)數(shù)器counter1舉行計(jì)數(shù),當(dāng)dont

6、1不為0即fifo1輸出端有信號(hào)時(shí)開(kāi)頭計(jì)數(shù)。當(dāng)0counter1=5時(shí),令fifo3的寫使能信號(hào)wr_en3有效,將數(shù)據(jù)包的包頭寫fifo3緩存;當(dāng)counter15時(shí),令wr_en3無(wú)效,wr_en2有效,將ipv6數(shù)據(jù)包的數(shù)據(jù)部分送fifo2緩存,預(yù)備送密碼芯片處理,直到頭尾標(biāo)記dout1(6564)=“01”時(shí),將counter1清零,在推斷到counter1為0后,將wr_en2置為無(wú)效。注重:fifo1的輸出端口是66位,fifo2的輸入端口是64位的,故在fifo1向fifo2寫數(shù)據(jù)的過(guò)程中,應(yīng)將fifo1的輸出端口信號(hào)dout(630)傳送給fifo2的輸入端口din2(63-)

7、。當(dāng)推斷到fifo2非空間,將其讀使能信號(hào)rd_en2置為有效,即可向密碼芯片送出數(shù)據(jù)。2 ipv6數(shù)據(jù)包的重新封裝用fpga實(shí)現(xiàn)ipv6數(shù)據(jù)包的重新封裝,同時(shí)是通過(guò)控制幾個(gè)fifo的數(shù)據(jù)輸入輸出來(lái)實(shí)現(xiàn)的,fpga同部的重新封裝單元電路的物理銜接3所示,其fifo4的作用是緩存密碼芯片送出的加解密處理后的數(shù)據(jù);fifo5的作用是緩存重新封裝后的ipv6數(shù)據(jù);fifo3與拆分單元共用,作用是緩用ipv6數(shù)據(jù)包頭。圖中的fifo4和fifo5也都是由xilinx公司的開(kāi)發(fā)工具ise6.1自帶的core ip生成的,其中fifo4是異步fifo,輸入時(shí)鐘為50mhz,輸出時(shí)鐘為62.5mhz,輸入輸

8、出數(shù)據(jù)寬度都是66bit;fifo5是同步fifo,工作時(shí)鐘為62.5mhz,輸入輸出數(shù)據(jù)寬度都是66bit。密碼芯片對(duì)數(shù)據(jù)舉行加/解密處理完畢之后,在送出處理數(shù)據(jù)前,首先向外部系統(tǒng)發(fā)送一64bit長(zhǎng)的銜接命令,指明處理數(shù)據(jù)所用的加解密算法和數(shù)據(jù)長(zhǎng)度。例如,在對(duì)數(shù)據(jù)舉行2des加密處理的狀況下,接收命令格式(16位制)4所示,其中高56位為命令編碼,低8位為將要輸出的處理數(shù)據(jù)的長(zhǎng)度。因此,在接收處理數(shù)據(jù)時(shí),首先推斷是否有接收命令,假如有接收搦令,則其接收命令中的數(shù)據(jù)長(zhǎng)度放寄存器中舉行寄存,并設(shè)定計(jì)數(shù)器counter2開(kāi)頭計(jì)數(shù)。當(dāng)0counter2=數(shù)據(jù)長(zhǎng)度時(shí),則令fifo4的寫使能wr_en4

9、有效;當(dāng)counter2為其它值時(shí),wr_en4無(wú)效。當(dāng)0counter2數(shù)據(jù)長(zhǎng)度時(shí),將“11”寫入din4(6564),將64bit處理數(shù)據(jù)寫入din4(630);當(dāng)counter2=數(shù)據(jù)長(zhǎng)度時(shí),即接收到最后一周期的處理數(shù)據(jù)時(shí),將“01”寫入din4(6564),將64bit處理數(shù)據(jù)寫入din4(630),并將counter2清零。這樣,密碼芯片處理后的數(shù)據(jù)就按格式要求緩存到fifo4中了。這時(shí),包頭已經(jīng)緩存到fifo3中了,處理后的數(shù)據(jù)已經(jīng)按格式要求緩存到fifo4中了,最后要做的就是控制fifo3和fifo4,把一個(gè)完整的ipv6數(shù)據(jù)包寫入fifo5中。詳細(xì)做法是:設(shè)定計(jì)數(shù)器counte

10、r3,當(dāng)fifo3和fifo4都非空時(shí),counter3開(kāi)頭計(jì)數(shù)。當(dāng)counter30時(shí),將fifo5的寫使能信號(hào)wr_en5置為有效;當(dāng)counter3=0時(shí),wr_en5置為無(wú)效。當(dāng)0counter36時(shí),令fifo3的讀使能rd_en3有效,fifo3將輸出數(shù)據(jù)dout3(650)寫入fifo5的輸入端din5(650);當(dāng)counter3l=6時(shí),令rd_en3無(wú)效,rd_en4有效,將fifo4的輸出數(shù)據(jù)dout4(650)寫入fifo5的輸入端din5(650),直到dout4(6564)=“01”時(shí),將counter3清零,rd_en4置為無(wú)效。這樣,一個(gè)完整的ipv6數(shù)據(jù)包就重封裝在fifo5中了,當(dāng)推斷到fifo5非空間,就可以令rd_en5有效,向外輸出處理后的完整的ipv6數(shù)據(jù)包了。從上述研究可以看出,本課題在fpga中采納了五個(gè)fifo,并設(shè)定了三個(gè)計(jì)數(shù)器控制這五個(gè)fifo的輸入輸出來(lái)實(shí)現(xiàn)對(duì)ipv6數(shù)據(jù)包的拆分和重新封裝??偟膩?lái)看,囫

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論