ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

011 FPGA千兆网TCP通信分析

2021-08-21 13:33:13  阅读:194  来源: 互联网

标签:协议 LwIP FPGA 千兆 TCP API 移植


一、LWIP

首先通过上面的简单分析,我们应该很清楚一件事:TCP协议很复杂,光握手过程就需要“三次握手、四次挥手”的复杂过程,不是特别适合FPGA的纯逻辑实现,因为用FPGA实现以太网通信的主要目的就是进行低延时的传输数据,而一旦设计规模达到一定量级,FPGA实现通信的优势便不复存在,转而体现出“性价比”低的劣势。

难道利用TCP协议进行通信就不可实现吗?答案当然是否。因为现在各大厂商都会在自己芯片内部增加软核和硬核,而利用软核和硬核来实现以太网通信也是目前使用比较广泛的方式,但是并不是所有的TCP协议都适合软核或者硬核实现,接下来就简单介绍比较简单的TCP/IP协议栈lwIP (A Lightweight TCP/IP stack)。

首先看下LwIP的网络模型,这样就会有个整体概念,如下图所示:

                           

图8‑16 LwIP模型

UDP/IP模型后面会详细介绍,这张图片也没有很特殊的东西,主要对LwIP有个整体的概念。

LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。LwIP 具有三种应用编程接口 (API):

Raw API:为原始的 LwIP API。它通过事件回调机制进行应用开发。该 API 提供了最好的性能和优化的代码长度,但增加了应用开发的复杂性。

Netconn API:为高层有序 API,需要实时操作系统 (RTOS)的支持 (提供进程间通讯的方法)。 Netconn API 支持多线程工作。

BSD Socket API:类似 Berkeley 的套接字 API (开发于 Netconn API 之上) 。

对于以上三种接口,前一种只需要裸机即可调用,后两种需要操作系统才能调用。所以据此LwIP存在两种移植方式:一是,只移植内核,此时应用程序的编写只能基于RAW/Callback API进行。二是,移植内核和上层API,此时应用程序编写可以使用3种API,即:RAW/Callback API、Sequential API和Socket API。

基本概念差不多就介绍这么多,过多的介绍就是关于协议的详细分析了,里面主要涉及到协议栈的东西,就不过多介绍了,大家可以去

https://www.oschina.net/p/lwip

https://savannah.nongnu.org/projects/lwip/

http://lwip.nongnu.org/

详细了解。

对于中低端FPGA移植LwIP主要使用无操作系统,针对MicroBlaze使用也很方便,对于一些高端FPGA(带高端ARM核)的可以进行有操作系统移植,Xilinx官方针对这两方面应用都有很详细的教程和源码可以参考,后面会结合代码进行介绍,但是不会涉及到协议的具体代码,因为我不会!

二、参考资料

1、https://mp.weixin.qq.com/s/BtCoriWyoBQndKm_JAjPcQ

标签:协议,LwIP,FPGA,千兆,TCP,API,移植
来源: https://www.cnblogs.com/linford/p/15129974.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有