基于FPGA的以太网开发
基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但是由于某些原因没能参与调试,成为了自己的遗憾,这次在Altera平台下开发百兆以太网,想通过博文的方式记录自己的调试例程
做网络开发,首先必须对以太网的层级结构有了解,否则,你很容易分不清每层的功能,而在自己到底要做什么上而找不到方向!这里,从802.3的协议上抓取一副图片说明问题:

图中采用的是GMII(Gigabit Media Independent
Interface)接口,可以看到PHY层,物理层基本不做逻辑上的处理,对于吉比特串行而言主要是是传输物理的数据信号编码(8B10B)和时钟信号回复(CDR)。FPGA提供的MAC
IP核,若器件带高速收发器(GTX),那么我们就不需要外接PHY芯片,否则就需要外接PHY芯片,完成PHY层的功能。
这里继续给出ISO协议提供的MAC帧格式:

其中开始的7个字节放固定的帧同步码;1个字节的帧开始符;6个字节的源物理地址;6个字节的目的物理地址;接下来就是长度和帧类型。实际开发中,我们使用的IPv4的报文,类型号:
理清楚这个概念以后,在实际使用中MAC内的净荷是如何存放的,还需要知道网络协议的层次结构,这里贴出一张ISO七层协议到TCP/IP四层协议的对应关系图,然后说明实际底层开发,FPGA做封包处理,到底要干嘛。

MAC帧封装的是MAC帧头+传输层的IP报文。
FPGA通过纯迎硬件的方式开发网络功能,IP数据帧中的数据包:对应的传输层有TCP和UDP两种协议。由于TCP协议涉及到三次握手建立连接和四次挥手释放连接,以纯硬件的方式来开发,难度较大,但是有第三方的IP可以实现该功能,这里我们选用面向无连接的UDP协议。
虽然选择了UDP协议,但是最后想FPGA发送的网络数据能够让上位机的应用软件接收到,我们需要给应用分配一个端口号。端口号就是为了区分上位机上不同的网络应用程序之间的数据的。比如,同时浏览网页和聊天,浏览器有个端口号接收自己的数据,聊天工具有个端口号接收自己的数据。
讲了这么多的目的,是建立网路报文和层之间对应的基本概念。因为通过FPGA开发网络应用,我们需要自己在最底层,一个字节一个字节的拼出一个IP报文,从端口号开始到MAC帧,FPGA开发者都必须掌握这些概念。不然,不知道自己到底用什么拼一个数据包出来给FPGA的MAC核。
其实FPGA的MAC核在我们看来完成了加前导码、帧定界符、FCS的功能。实际使用以太网给PC发送数据的时候,基本是用网络进行点对点通信,没涉及到CSMA/CD功能。如果真的涉及到PC机侧和多个外部设别通信,在组包的时候,需要注意MAC地址、IP地址、端口号,合理规范,避免冲突。
基于FPGA的以太网开发的更多相关文章
- 基于FPGA的图像开发平台 其他摄像头附件说明(OV5642 OV9655)
基于FPGA的图像开发平台 其他摄像头附件说明 FPGA_VIP_V101 编者 奇迹再现 个人博客 http://www.cnblogs.com/ccjt/ 联系邮箱 Shenyae86@163.c ...
- 【转】简谈基于FPGA的千兆以太网
原文地址: http://blog.chinaaet.com/luhui/p/5100052903 大家好,又到了学习时间了,学习使人快乐.今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较 ...
- 基于FPGA dspbuilder的DNLMS滤波器实现
自适应滤波器一直是信号处理领域的研究热点之一,经过多年的发展,已经被广泛应用于数字通信.回声消除.图像处理等领域.自适应滤波算法的研究始于20世纪50年代末,Widrow和Hoff等人最早 ...
- FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用
一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...
- 基于FPGA的红外遥控解码与PC串口通信
基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...
- 基于FPGA的OLED真彩色动态图像显示的实现
源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...
- 基于FPGA的均值滤波算法的实现
前面实现了基于FPGA的彩色图像转灰度处理,减小了图像的体积,但是其中还是存在许多噪声,会影响图像的边缘检测,所以这一篇就要消除这些噪声,基于灰度图像进行图像的滤波处理,为图像的边缘检测做好夯实基础. ...
- 基于FPGA的IIR滤波器
基于FPGA的IIR滤波器 by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 ...
- 基于FPGA的VGA显示静态图片
终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...
随机推荐
- (一)SQL -- 基础知识
SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言. 优点:功能强.效率高.简单易学易维护. 缺点:非过程化语言,大多数语言都是独立执行,与上下文无关,而大多数 应用都是一个完整的过程,显然 ...
- HBase调优案例(一)——建表长时间等待最后失败
现象: 1.在HBase Shell里执行建表操作会等很久,最终失败: 2.通过代码侧进行建表同样不能成功. 原因排查: 1.查询HMaster日志,发现有接收到建表(create)的RPC请求: ...
- Spring4配置文件模板
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- jQuery file upload cropper的 click .preview事件没有绑定成功
测试 修改https://github.com/tkvw/jQuery-File-Upload/blob/master/basic-plus.html var node = $('<p id=& ...
- webpack插件之htmlWebpackPlugin
webpack插件之htmlWebpackPlugin webpack插件 自动化 htmlWebpackPlugin 由于webpack已经帮我们处理好js之间的依赖关系,现在我们可以忽略js的加 ...
- pg和mysql对比
作者:方圆链接:https://www.zhihu.com/question/20010554/answer/15863274来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- cocos2dx基础篇(13) 编辑框之二CCEditBox
[3.x] (1)去掉"CC" (2)设置虚拟键盘的编辑类型 > EditBoxInputMode 变为强枚举 EditBox::EditBoxInputMode // SI ...
- 初学node.js-nodejs中实现用户登录路由
经过前面几次的学习,已经可以做下小功能,今天要实现的事用户登录路由. 一.users_model.js 功能:定义用户对象模型 var mongoose=require('mongoose'), S ...
- Dubbo 序列化协议 5 连问,你接得住不?
1)dubbo 支持哪些通信协议? 2)支持哪些序列化协议? 3)说一下 Hessian 的数据结构? 4)PB 知道吗? 5)为什么 PB 的效率是最高的? 面试官心理分析 上一个问题,说说 dub ...
- 目标检测(三) Fast R-CNN
引言 之前学习了 R-CNN 和 SPPNet,这里做一下回顾和补充. 问题 R-CNN 需要对输入进行resize变换,在对大量 ROI 进行特征提取时,需要进行卷积计算,而且由于 ROI 存在重复 ...