专栏首页OpenFPGAFPGA千兆网TCP通信分析

FPGA千兆网TCP通信分析

首先通过上面的简单分析,我们应该很清楚一件事: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官方针对这两方面应用都有很详细的教程和源码可以参考,后面会结合代码进行介绍,但是不会涉及到协议的具体代码,因为我不会!

本文分享自微信公众号 - OpenFPGA(OpenFPGA),作者:碎碎思

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于FPGA的网口通信实例设计

    通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信;

    碎碎思
  • FPGA实现网口通信的几种方式

    从硬件上来说,一般PHY芯片为模数混合电路,负责接收电、光这类模拟信号,经过解调和A/D转换后通过MII接口将信号交给MAC芯片进行处理。一般MAC芯片为纯数字...

    碎碎思
  • CORDIC算法详解(二)-CORDIC 算法之圆周系统之向量模式

    网上有很多类似的介绍,但是本文会结合实例进行介绍,尽量以最简单的语言进行解析。   CORDIC ( Coordinate Rotation Digital C...

    碎碎思
  • 微服务:API网关在API安全中的作用

    当从单体应用程序切换到微服务时,来自客户端的行为不能与以前一样,单体架构客户端只有一个入口点到应用程序。

    程序你好
  • 十个书写Node.js REST API的最佳实践(下)

    我们会通过本文介绍下书写Node.js REST API的最佳实践,包括各个主题,像是命名路由、认证、黑盒测试以及对相关资源使用合适的缓存头。

    张徐辰
  • 云开发API连接器的最佳练习

    Amazon Web Services,Microsoft Azure,Google Compute Engine等云服务提供商以及OpenStack,vClo...

    踏_无痕
  • API代理,连接器和附加组件

    我正在通过API服务提供商的一些100K的视图的研究,试图完善我对API下一步是什么?的看法。

    大魔王呀
  • 为云开发API接口的最佳方案

    一些云服务提供商及其OpenStack,vCloud,OnApp等服务提供平台正越来越多地通过API或Web服务进行编程。要使用这些API / Web服务,我们...

    Techeek
  • 别再设计易碎的Web API

    原文作者Mathieu Fenniak在博文中大呼:不要再设计易碎的Web API 了,否则你的合作伙伴或第三方开发者会因此恨你,而离你远去的。他认为,想设计出...

    张善友
  • 人人都是 API 设计者:我对 RESTful API、GraphQL、RPC API 的思考

    有一段时间没怎么写文章了,今天提笔写一篇自己对 API 设计的思考。首先,为什么写这个话题呢?其一,我阅读了《阿里研究员谷朴:API 设计最佳实践的思考》一文后...

    用户2781897

扫码关注云+社区

领取腾讯云代金券