新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的IPV6数字包的拆装实现

基于FPGA的IPV6数字包的拆装实现

作者: 时间:2008-11-28 来源:网络 收藏

基于FPGA的IPV6数字包的拆装实现

  2 数据包的重新封装

  用实现数据包的重新封装,同时是通过控制几个的数据输入输出来实现的,同部的重新封装单元电路的物理连接如图3所示,其4的作用是缓存密码芯片送出的加解密处理后的数据;5的作用是缓存重新封装后的数据;FIFO3与拆分单元共用,作用是缓用IPV6数据包头。

  图中的FIFO4和FIFO5也都是由Xilinx公司的开发工具ISE6.1自带的Core IP生成的,其中FIFO4是异步FIFO,输入时钟为50MHz,输出时钟为62.5MHz,输入输出数据宽度都是66bit;FIFO5是同步FIFO,工作时钟为62.5MHz,输入输出数据宽度都是66bit。

  密码芯片对数据进行加/解密处理完毕之后,在送出处理数据前,首先向外部系统发送一64bit长的连接指令,指明处理数据所用的加解密算法和数据长度。例如,在对数据进行2DES加密处理的情况下,接收指令格式(16位制)如图4所示,其中高56位为指令编码,低8位为将要输出的处理数据的长度。

基于FPGA的IPV6数字包的拆装实现

  因此,在接收处理数据时,首先判断是否有接收指令,如果有接收搦令,则其接收指令中的数据长度放寄存器中进行寄存,并设定计数器COUNTER2开始计数。当0COUNTER2=数据长度时,则令FIFO4的写使能WR_EN4有效;当COUNTER2为其它值时,WR_EN4无效。当0COUNTER2数据长度时,将“11”写入DIN4(65~64),将64bit处理数据写入DIN4(63~0);当COUNTER2=数据长度时,即接收到最后一周期的处理数据时,将“01”写入DIN4(65~64),将64bit处理数据写入DIN4(63~0),并将COUNTER2清零。这样,密码芯片处理后的数据就按格式要求缓存到FIFO4中了。

  这时,包头已经缓存到FIFO3中了,处理后的数据已经按格式要求缓存到FIFO4中了,最后要做的就是控制FIFO3和FIFO4,把一个完整的IPV6数据包写入FIFO5中。具体做法是:设定计数器COUNTER3,当FIFO3和FIFO4都非空时,COUNTER3开始计数。当COUNTER3>0时,将FIFO5的写使能信号WR_EN5置为有效;当COUNTER3=0时,WR_EN5置为无效。当0COUNTER36时,令FIFO3的读使能RD_EN3有效,FIFO3将输出数据DOUT3(65~0)写入FIFO5的输入端DIN5(65~0);当COUNTER3>l=6时,令RD_EN3无效,RD_EN4有效,将FIFO4的输出数据DOUT4(65~0)写入FIFO5的输入端DIN5(65~0),直到DOUT4(65~64)=“01”时,将COUNTER3清零,RD_EN4置为无效。这样,一个完整的IPV6数据包就重封装在FIFO5中了,当判断到FIFO5非空间,就可以令RD_EN5有效,向外输出处理后的完整的IPV6数据包了。

基于FPGA的IPV6数字包的拆装实现

  从上述讨论可以看出,本课题在中采用了五个FIFO,并设定了三个计数器控制这五个FIFO的输入输出来实现对IPV6数据包的拆分和重新封装。总的来看,整个FPGA设计思路巧妙,电路结构简单,达到了预期的处理速度。图5是整个测试系统在对1024字节的IPV6数据包进行拆包、送密码芯片加密。重装封装处理后测试仪控制软件界面上显示的收包数据统计。从该图可以看出,整个系统对IPV6数据包的处理速度达到了2.372Gbit/s,而这样的处理速度用软件是不可能达到的。


上一页 1 2 3 下一页

关键词: FPGA IPV6 FIFO

评论


相关推荐

技术专区

关闭