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

热度89票  浏览1519次 【共0条评论】【我要评论 时间:2017年1月19日 22:41
来源: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) 
TAG: 通信 硬件
对本篇资讯内容的质量打分:
当前平均分:0.22 (45次打分)
【已经有44人表态】
13票
感动
3票
路过
4票
高兴
5票
难过
6票
搞笑
3票
愤怒
6票
无聊
4票
同情
上一篇 下一篇
查看全部回复【已有0位网友发表了看法】