你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

用FPGA实现简单的UDP/IP通信(采用纯硬件语言,非软核)

发布者:jackzhang 时间:2017-01-19 22:41:16

来源:http://bbs.eetop.cn/thread-621105-1-1.html

作者:dogbear2245

转眼间,2016年就过完了。年底,公司也从忙碌和喧嚣中安静了下来,近几周都无所事事。每天随意的逛着各电子论坛,微博,刷着网页。某天发现有一个帖子写的用FPGA软核实现的UDP协议,突然想着,能不能用纯硬件语言做个UDP协议呢?      说点题外话,自从来到现在的小公司有个3年多了,公司小到不能再小(比大学时我呆的那个实验室的人数都少)。原来在大公司工作,只需要在自己研发的那个微小的方向上做好本职工作就可以,工作十分的纯粹。现在在这里,什么工作都做,研发,生产,技术支持,甚至偶尔还得跑跑市场,做合同等等。到上面我说有那个想法的时候,恐怕都好久没有写过代码调试过东西了。所以,闲着也是闲着,为了不让自己太生疏,决定自己来写点东西。纵然水平有限,那也是自己的,不是吗?
      说到做到,花了一周左右时间复习了下相关的网络协议(都还给大学老师了),再花了一周时间做系统设计,把代码敲完,然后就是仿真,调试。做的过程中,正好有位朋友需要用到这东西(很奇怪居然还有人需要这没有多大应用价值的玩意,这个后面再谈),就顺便把这块代码发给他去试用,来回修改调试了之后,他居然说用上了。。。。。。完了之后,想着这东西如果就这样躺在自己电脑硬盘里,是不是闷了点?共享出来让初学者交流学习,让高手批评指正,岂不更好?
      说正事:
            1)此模块就做了UDP,没玩TCP,那玩意控制流程很复杂。我看到有人说用纯硬件语言实现了TCP/IP协议栈,对此我表示怀疑。我怀疑的不是它的不可实现性,而是,在没有什么应用价值的前提下,是否有人愿意花费如此多的功夫去做这件事情。当然了,毕竟我才疏学浅,见识也少,所以我也仅仅只是怀疑。
            2)受限于手头的硬件板,只在10M/100M的网络上做了验证和调试,如果用在千兆网上,给模块适配一个支持千兆的MAC就可以了。
            3)在本例中若网络负荷过大,报文会直接丢弃,无论何种类型,UDP本身也不保证交付。
            4)我在上文很多地方都说过应用价值不大这个概念,为何?其实这个是从产品实现,项目交付的角度上来说的。在现有的技术条件下,如果需要使用UDP/TCP,市面上可以找到一千种自带以太网的ARM/CPU,从高端到低端,从系统设备到消费电子。。。。。。退一步说,如果真的有设计需要在FPGA跑UDP/TCP,FPGA现有自带的软核也可以很方便地完成这个工作,基于C语言的各种网络协议栈代码满世界都是。若不是要做ASIC,有必要花时间去自己写对于硬件描述语言来说繁很繁琐的UDP甚至是TCP么?
              5)有人要骂我了,你说这东西没价值,那你写这玩意装逼?这么说也可以,其实一开始我并不了解这东西有没有应用价值,我的初衷仅仅是找点东西写写,在写的过程中慢慢发现这东西其实没啥意义。巧了,想起前段时间和朋友聊天时说到这个,他说他们有一个已成型产品中需要增加功能,在不更改硬件的前提下需要UDP做数据传输,原有的处理器做网络协议回复消息速度不够,而且资源也有点捉襟见肘。一拍即合,直接就用上了。可是这是去救火,有人会在产品设计阶段就这样设计么? 另外,我说的没有价值,是指没有什么应用价值,用来交流学习,也是可以的。
             6)自己能力有限,设计中肯定会有或多或少的问题,模块的测试也不是那么的充分,搞不好在某些情况下可能会有bug。欢迎各位批评指正!


        附上设计的PDF,先看看大家有没有兴趣,有兴趣我把代码打包上来,没兴趣的话,说明这东西真没啥用。把帖子沉了吧~~~
        马上要春节了,提前祝各位新春快乐!


_XH[LZOV))HDHRF~LU6ULEP.jpg 

{SIZD~CAHM1WV(DIKZK%U0A.jpg 

CE@933$DYOBY2MXFW][`8TQ.jpg 

U`BR`@_]LX9C]RXG``4YWOH.jpg 
 udp_ip_stack.pdf (663.87 KB) 

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了