基于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边缘检测,之前一直在学习图像处理,但是因为 ...
随机推荐
- NOIP2018复赛游记
Day -oo (这里是负无穷啦qwq) 为了NOIP2018,我已经准备了好久 暑假的封闭式训练,国庆后停掉了晚自习,距NOIP一周时更是停掉了全天的课...... 我像是一个圆,在近乎无限的空间里 ...
- [BZOJ2111]:[ZJOI2010]Perm 排列计数(组合数学)
题目传送门 题目描述 称一个1,2,...,N的排列${P}_{1}$,${P}_{2}$,...,${P}_{N}$是Magic的,当且仅当2≤i≤N时,${P}_{i}$>${P}_{\fr ...
- Java中参数的引用传递和值传递
1.一些定义 值传递:把实际传入参数的值,在内存中赋值一份 引用传递:传入的是实际参数的地址 2.传递基本类型的参数 因为Java是值传递,那就不难理解下面的代码不交换任何值 swap(Type ar ...
- bootstrap基础讲解
Bootstrap基础简介 网站链接: http://www.bootcss.com/ bootstrap优点: 下载: bootstrap的引入: <meta name="view ...
- ffmpeg保持原视频画面比例 自动添加黑边
ffmpeg保持原视频画面比例 自动添加黑边 例如源是1280*528要转成640*480要保持画面比例实际上应该640*264 所以需要在上下都加黑边 ffmpeg -i d:/Media/e.f4 ...
- db4o这个对象数据库有很多优点,但为什么不是很火? 大家有没有用过db4o的?
没有主键的概念(因为对象的内存地址,或者引用就能标志一个对象了).因而外界想指向一个具体的对象就比较困难(比如本页的url里的1079505). 激活/保存层次的问题.获取一个对象,它的字段引用了其它 ...
- Spring MVC集成Swagger2.0
在集成Swagger之前,得先说说什么是Swagger,它是用来做什么的,然后再讲讲怎么集成,怎么使用,当然,在这之前,需要了解一下OpenAPI. OpenAPI OpenAPI 3.0规范定义了一 ...
- 6.k8s.存储Volume.PV.PVC
#Volume Volume 解决数据持久化和容器间共享数据 Kubernetes支持几十种类型的后端存储卷 #hostPath挂载实例,挂载Node节点/tmp/test-volume目录到容器/t ...
- ES6标准入门 第五章:函数的扩展
1.函数参数的默认值 (1)基本用法 ES5 中, 不能直接为函数的参数指定默认值.只能采用变通的方法. function log(x, y) { y = y || 'World'; console. ...
- RabbitMQ使用(上)
1. 说明 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方, ...