基于FPGA的IPV6數(shù)字包的拆裝實(shí)現(xiàn)
筆者在參加國家“863”重大專題項(xiàng)目“高速密碼芯片及驗(yàn)證平臺(tái)系統(tǒng)”的過程中,遇到了將IPV6數(shù)據(jù)包的包頭和數(shù)據(jù)部分拆開,然后在數(shù)據(jù)部分送密碼芯片進(jìn)行加/解密處理,最后再將處理后的數(shù)據(jù)部分與包頭重新封裝為數(shù)據(jù)包的課題。以往對(duì)IP包進(jìn)行拆裝多利用軟件實(shí)現(xiàn),但本項(xiàng)目涉及到配合高速密碼芯片(處理速度在2Gbit/s以上)工作的問題,顯然利用軟件實(shí)現(xiàn)IP包的拆裝在速度上達(dá)不到要求。為此,筆者運(yùn)用FPGA(型號(hào)為Xilinx公司的XC2VP20-FF86CGB0345)來實(shí)現(xiàn)IPV6數(shù)據(jù)包的拆裝。該FPGA內(nèi)部邏輯框圖如圖1所示。
其工作流程為:2.5GHz的標(biāo)準(zhǔn)IPV6數(shù)據(jù)包串行差分信號(hào)通過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ù)進(jìn)行判斷,若是報(bào)頭則送入FIFO3緩存,若是數(shù)據(jù)部分則送入FIFO2緩存,最后將FIFO2數(shù)據(jù)送往密碼芯片進(jìn)行處理;經(jīng)密碼芯片處理的數(shù)據(jù)首先放入FIFO4進(jìn)行緩存,然后控制FIFO3和FIFO4將一個(gè)數(shù)據(jù)包的頭和數(shù)據(jù)寫入FIFO5中,重新封裝成一個(gè)完整的數(shù)據(jù)包;重新封裝的IPV6數(shù)據(jù)包經(jīng)過信號(hào)轉(zhuǎn)換模塊變?yōu)?6位125MHz的并行信號(hào),并通過ROCKETIO高速通道轉(zhuǎn)換為2.5GHz高速串行差分信號(hào)送出。
可以看出,經(jīng)過以上流程,實(shí)現(xiàn)了一個(gè)數(shù)據(jù)包的拆分和重新封裝。
1 IPV6數(shù)據(jù)包的拆分
用FPGAP實(shí)現(xiàn)IPV6數(shù)據(jù)包的拆分,主要是通過控制幾個(gè)FIFO的數(shù)據(jù)輸入輸出來實(shí)現(xiàn)的。FPGA內(nèi)部的拆分單元電路的物理連接如圖2所示,其中FIFO的作用是緩存IPV6數(shù)據(jù)包,F(xiàn)IFO2的作用是緩存IPV6數(shù)據(jù)包的數(shù)據(jù)部分,F(xiàn)IFO3的作用是緩存IPV6數(shù)據(jù)包的包頭。
相關(guān)推薦
-
-
-
-
-
sandman555 | 2005-02-05
-
-
sandman555 | 2005-02-05
-
sandman555 | 2005-02-05
-
-
herbertwj | 2004-08-15
-
-
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論