一种基于FPGA实现网络数据接收及读取控制方法与流程

文档序号:14519038阅读:497来源:国知局
一种基于FPGA实现网络数据接收及读取控制方法与流程

本发明涉及网络数据接收技术领域,具体涉及一种基于fpga实现网络接收控制方法。



背景技术:

目前越来越多应用通过fpga实现与网络进行通信,可以完成更高的传输速度,但是fpga在接收网路数据常常会遇到丢失网络数据包情况,导致网络在进行tcp或者udp数据传输时,出现不稳定情况,或者在传输tcp数据时,传输速度不满足实际要求,在实际测试过程中发现由于网络存在长短包的情况,fpga在接收网络数据包存在丢数据包的情况,导致网络稳定传输速度降低。



技术实现要素:

本发明旨在针对上述问题,提出一种基于fpga解决在接收网络数据长短包时数据丢失的问题。

本发明的技术方案在于:

一种基于fpga实现网络数据接收控制方法,包括如下步骤:

步骤1:接收网络数据时,通过数据接收模块判断是否为网络帧头;是则执行步骤2正常进行接收数据操作,错误则执行步骤6;

步骤2:网络帧头判断正确后,则数据接收模块将接收到的数据写入到bram_ip缓冲区中,同时由数据接收模块对接收到的数据进行计数;并判断是否为异常数据,若为正常数据则执行步骤3,若为异常数据,则执行步骤6;

步骤3:将bram_ip缓冲区起始地址跳转到下一字节;

步骤4:进行crc校验:对接收的有效数据做crc计算,计算完成后和接收数据的crc进行比较,比较相同则确认本网络包数据正确,执行步骤5,否则丢弃该网络数据,执行步骤6:

步骤5:该网络数据包接收正常,产生数据结束标志,将接收网络数据长度写入到fifo_ip缓冲区,指示一包网络数据的接收过程完成;

步骤6:结束数据包接收,若已经产生写长度有效信号,则产生数据结束标志,同时产生数据包错误标志,将本次写入bram_ip缓冲区时起始地址跳转到上次写结束位置,以使下次接收网络数据可以重新写入到该bram_ip缓冲区;

步骤7:通过步骤1-步骤6连续接收数据,直到bram_ip缓冲区存储空间不足一包最大网络数据,停止网络数据接收操作。

所述的异常数据为网络超长包或者网络超短包,所述网络超长包字节数大于1518byte,网络超短包字节数小于48byte。

一种基于fpga实现网络数据读取控制方法,使用如上所述的网络数据接收控制方法后,进行数据读取时包括如下步骤:

步骤1:在读取数据信息时,根据fifo_ip缓冲区的状态判断bram_ip缓冲区中是否为有效的网络状态,若为空状态,则明确该空状态对应的数据为异常数据,停止数据读取;

步骤2:若fifo_ip缓冲区不为空,则根据该fifo_ip缓冲区中记录的数据长度来读取bram_ip缓冲区中该长度的数据,完成网络数据包的读操作。

本发明的技术效果在于:

本发明在数据接收时,将数据信息存储至bram_ip缓冲区,当数据为正常信息时,将数据信息的数据长度存储至fifo_ip缓冲区,在接收到异常数据时,fifo_ip缓冲区为空状态;因此,在读取信息时,根据存入fifo_ip缓冲区的数据长度先进行判断,而不是直接读取bram_ip缓冲区中的数据信息,且在bram_ip缓冲区中的数据信息没有足够空间存储下一包最大网络数据时不进行网络数据接收操作,避免网络数据丢包问题。

附图说明

图1为本发明网络数据接收处理流程图。

图2为本发明接收有效数据处理流程图。

图3为本发明接收异常数据处理流程图。

具体实施方式

一种基于fpga实现网络数据接收控制方法,在接收有效数据时,如图2所示,包括如下步骤:

步骤1:接收网络数据时,通过数据接收模块判断是否为网络帧头;是则执行步骤2正常进行接收数据操作;

步骤2:如图2所示,网络帧头判断正确后,则数据接收模块将接收到的数据写入到bram_ip缓冲区中,开始接收数据时写地址位于当前数据起始位置,假定写入数据为8个字节,将该字节存入bram_ip缓冲区,同时由数据接收模块对接收到的数据进行计数;

步骤3:如图2所示,将bram_ip缓冲区起始地址跳转到下一字节;

步骤4:进行crc校验:对接收的有效数据做crc计算,计算完成后和接收数据的crc进行比较,比较相同则确认本网络包数据正确;

步骤5:该网络数据包接收正常,产生数据结束标志,将接收网络数据长度写入到fifo_ip缓冲区,指示一包网络数据的接收过程完成,同时,fifo_ip缓冲区起始地址跳转到下一字节;

步骤6:通过步骤1-步骤5连续接收数据,直到bram_ip缓冲区存储空间不足一包最大网络数据,停止网络数据接收操作。

在接收错误数据时,如图3所示,在数据接收模块将接收到的数据写入到bram_ip缓冲区中时,数据接收模块对接收到的数据进行计数并判断为异常数据,则产生数据结束标志,同时产生数据包错误标志,将本次写入bram_ip缓冲区时起始地址跳转到上次写结束位置,以使下次接收网络数据可以重新写入到该bram_ip缓冲区;fifo_ip缓冲区写起始位置不变。

其中,所述的异常数据为网络超长包或者网络超短包,所述网络超长包字节数大于1518byte,网络超短包字节数小于48byte。

一种基于fpga实现网络数据读取控制方法,进行数据读取时包括如下步骤:

步骤1:在读取数据信息时,根据fifo_ip缓冲区的状态判断bram_ip缓冲区中是否为有效的网络状态,若为空状态,则明确该空状态对应的数据为异常数据,停止数据读取;

步骤2:若fifo_ip缓冲区不为空,则根据该fifo_ip缓冲区中记录的数据长度来读取bram_ip缓冲区中该长度的数据,完成网络数据包的读操作。



技术特征:

技术总结
本发明涉及网络数据接收技术领域,具体涉及一种基于FPGA实现网络接收控制方法。一种基于FPGA实现网络数据接收控制方法,包括如下步骤:步骤1:判断是否为网络帧头;步骤2:将数据写入到BRAM_IP缓冲区中,同时由数据接收模块对接收到的数据进行计数;步骤3:将BRAM_IP缓冲区起始地址跳转到下一字节;步骤4:进行CRC校验;步骤5:将接收网络数据长度写入到FIFO_IP缓冲区,指示一包网络数据的接收过程完成。在读取信息时,根据存入FIFO_IP缓冲区的数据长度先进行判断,而不是直接读取BRAM_IP缓冲区中的数据信息,且在BRAM_IP缓冲区中的数据信息没有足够空间存储下一包最大网络数据时不进行网络数据接收操作,避免网络数据丢包问题。

技术研发人员:刘升;张伟;汪艳婷
受保护的技术使用者:西安奇维科技有限公司
技术研发日:2017.12.27
技术公布日:2018.05.25
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1