【技术实现步骤摘要】
一种基于FPGA的TCPIP协议栈的实现方法
[0001]本专利技术属于网络通信
,具体涉及一种基于FPGA的TCPIP协议栈的实现方法。
技术介绍
[0002]当FPGA与外围网络设备通过网络接口连接时,由于FPGA与自带网络协议栈的操作系统不同,不能提供稳定的网络数据收发,出现丢包、比特翻转、拥塞等错误时也不能发现,从而导致双方的通信异常。
技术实现思路
[0003](一)要解决的技术问题
[0004]本专利技术要解决的技术问题是:如何在FPGA内部实现TCP/IP协议栈,与外围网络设备建立TCP连接,保证数据收发的稳定性。
[0005](二)技术方案
[0006]为了解决上述技术问题,本专利技术提供了一种基于FPGA的TCPIP协议栈的实现方法,TCP/IP协议栈在FPGA内部实现,由4个模块组成,这4个模块包括网络包类型检测模块、ARP包处理模块、ICMP包处理模块、TCP包处理模块;
[0007]FPGA内部还包括网络接口模块、数据接收模块、数据发送模块、内存管 ...
【技术保护点】
【技术特征摘要】
1.一种基于FPGA的TCPIP协议栈的实现方法,其特征在于,TCP/IP协议栈在FPGA内部实现,由4个模块组成,这4个模块包括网络包类型检测模块、ARP包处理模块、ICMP包处理模块、TCP包处理模块;FPGA内部还包括网络接口模块、数据接收模块、数据发送模块、内存管理模块、应用程序;网络接口模块完成网络数据与网络接口电信号的相互转换;数据接收模块负责将网络接口模块接收的网络数据存储至内存空间;数据发送模块负责将内存空间的网络数据发送至网络接口模块;内存管理模块包括内存申请模块和内存释放模块,分别负责内存空间的申请与释放;应用程序负责处理通过TCP/IP协议栈交互的外围网络设备上的应用数据;数据接收模块向内存空间中存入网络包数据后将数据的存储信息以队列的形式通知网络包类型检测模块;网络包类型检测模块首先初始化内部寄存器,在检测到数据接收模块的通知后,启动DMA从内存空间中读取网络包头中的类型、协议信息,依次判断是否为ARP包、IGMP包、TCP数据包,如果判断为其中之一,则通知相应的包处理模块,即ARP包处理模块、ICMP包处理模块、TCP包处理模块进行相应的处理,如果都不能满足相应的包类型,则通知内存释放模块释放相应的内存空间。2.如权利要求1所述的方法,其特征在于,ARP包处理模块的处理流程如下:在初始化内部寄存器,并检测到网络包类型检测模块的通知后,启动DMA从内存空间中读取ARP包,判断是否为ARP请求包,如果是符合条件的ARP请求包,则生成对应的ARP回复包和ARP表,然后启动DMA将ARP回复包写入内存空间中所述ARP请求包的位置,最后将存储信息发送给数据发送模块,等待数据发送模块发送ARP回复包;如果不是符合条件的ARP请求包,则通知内存释放模块释放存储ARP包的内存空间。3.如权利要求2所述的方法,其特征在于,IGMP包处理模块的处理流程如下:在初始化内部寄存器,并检测到网络包类型检测模块的通知后,启动DMA从内存空间中读取IGMP包,判断是否为IGMP请求包,如果是IGMP请求包,则生成对应的IGMP回复包,并向内存申请模块申请可用的内存空间用来存储IGMP回复包,然后启动DMA将IGMP回复包写入申请的内存空间中,最后将IGMP回复包的存储信息发送给数据发送模块,等待数据发送模块发送IGMP回复包;如果不是IGMP请求包,则通知内存释放模块释放存储IGMP包的内存空间。4.如权利要求3所述的方法,其特征在于,TCP包处理模块的接收处理流程如下:在初始化内部接收寄存器,并检测到网络包类型检测模块通知创建一个新的TCP连接后,判断是否已建立对应的TCP连接,一条TCP连接由唯一一个四元组标识,所述四元组的组成要素包括外围网络设备的IP地址、外围网络设备上应用程序的端口号、FPGA的IP地址和FPGA应用程序的端口号,如果已建立连接,则等待TC...
【专利技术属性】
技术研发人员:侯运通,王吕大,沈月峰,张红磊,龚清生,贾振华,龚志力,马贵阳,聂煜桐,李一石,
申请(专利权)人:北京计算机技术及应用研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。