TCP/IP协议栈设计—TCP设计实现小结

TCP/IP协议栈设计—TCP设计实现小结

设计目的:在FPGA上采用纯Verilog描述的方式,实现可定制裁剪的TCPIP硬件协议栈,并加入超时重传、滑动窗口等优化算法,最终希望实现传输速率能超过200MHz的千兆以太网。

去年3月份,就开始了设计之旅,期间参考了众多论文,网上也查了许多资料。经过一步步设计,现在终于实现了初步的TCPIP传输。现将实现的工程进行简单介绍和总结。

开发环境:ISE14.7 ,win7 X64 台式机,采用具备phy接口芯片的黑金开发板AX516,高速网线一根。

测试工具:网络调试助手NetAssist.exe 、TCP&UDP测试工具 、WireShark软件

设计过程:设计中,先是参考开发板例程,自己全新实现了一遍UDP硬件协议栈。具体细节见我前期的相关文章,其代码已上传资源。

问题小结:在充分了解了以太网,特别是MAC层接口工作原理后,开始设计TCPIP协议栈。但发现困难重重,一直前进不了。不断在网上查阅资料,参考了UDPIP协议栈设计,然后实现了ARP、ICMP。并给出完整的UDPIP协议栈设计代码。但在调试TCP传输时,遇到一些问题,始终未能解决。

直到最近,在找工作期间,为了应付IC设计中的笔试题,特别学习了IC设计相关的书,对其中的时序分析,有了很多认识,特别是保持时间、建立时间、关键路径等等。最近再回过头来,设计、调试TCP时,发现,在系统时钟到125MHz后,存在时序约束不满足的情况。具体问题见前面相关博文。他们主要是:①CRC保持时间不够,该下降沿发送,增加保持时间;②checksum组合路劲延迟太大,换更快速的方法;③TCP建立连接,第一个帧必须待选项。④全局使用同一时钟rx_clk,导致删除和时钟偏斜skew太大,改用PLL分频,作为发送时钟。很多问题,只有在做的时候,才会发现。真的需要对TCPIP协议足够地熟悉,才能把它设计出来。

工程介绍:RTL顶层如下。该工程,包含ARP、ICMP、UDP、TCP、IP和MAC全过程的传输。其综合原理图见tcpip_stack_top_sch_v1.1.pdf 。设计过程的仿真文件也如下图。

测试结果:前面已进行过许多测试,参见前面的博文。这里再用netassist助手测试一下。如下,先测试了整个过程,并断开TCP。

 

再次连接,并截取发送过程的结果,如下图。

 

上述便是对该TCPIP协议栈的测试情况。如果有朋友感兴趣,可以一起分享探讨一下。也可以下载我分享的该源码,进行参考。

 

欢迎交流、源码分享见CSDN资源,笔者扣扣:1021100382 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章