基于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层提供给用户的数据净荷大小是46-1500个字节(基本帧结构)。
  
理清楚这个概念以后,在实际使用中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的以太网开发的更多相关文章

  1. 基于FPGA的图像开发平台 其他摄像头附件说明(OV5642 OV9655)

    基于FPGA的图像开发平台 其他摄像头附件说明 FPGA_VIP_V101 编者 奇迹再现 个人博客 http://www.cnblogs.com/ccjt/ 联系邮箱 Shenyae86@163.c ...

  2. 【转】简谈基于FPGA的千兆以太网

    原文地址: http://blog.chinaaet.com/luhui/p/5100052903 大家好,又到了学习时间了,学习使人快乐.今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较 ...

  3. 基于FPGA dspbuilder的DNLMS滤波器实现

          自适应滤波器一直是信号处理领域的研究热点之一,经过多年的发展,已经被广泛应用于数字通信.回声消除.图像处理等领域.自适应滤波算法的研究始于20世纪50年代末,Widrow和Hoff等人最早 ...

  4. FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用

    一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...

  5. 基于FPGA的红外遥控解码与PC串口通信

    基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...

  6. 基于FPGA的OLED真彩色动态图像显示的实现

    源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...

  7. 基于FPGA的均值滤波算法的实现

    前面实现了基于FPGA的彩色图像转灰度处理,减小了图像的体积,但是其中还是存在许多噪声,会影响图像的边缘检测,所以这一篇就要消除这些噪声,基于灰度图像进行图像的滤波处理,为图像的边缘检测做好夯实基础. ...

  8. 基于FPGA的IIR滤波器

    基于FPGA的IIR滤波器                                                         by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 ...

  9. 基于FPGA的VGA显示静态图片

    终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...

随机推荐

  1. Firefox_64.0 中selenium ide_3.4.4的使用教程(实操)

     说明:旧版的selenium IDE有很多功能,在新版中都去除了,很多功能都做不了. 写于:2018.12.31 一.安装selenium IDE 下载和安装这里推荐参考文章:https://blo ...

  2. Java的LinkedList底层源码分析

    首先我们先说一下,源码里可以看出此类不仅仅用双向链表实现了队列数据结构的功能,还提供了链表数据结构的功能.

  3. 你是一直认为 count(1) 比 count(*) 效率高么?

    MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么? 有 Where 条件的 count, ...

  4. String 部分源码分析

    String 无参数构造函数 /** * 底层存储字符串的目标字节数组, * Jdk 8 之前都是字符数组 private final char[] value; */ @Stable private ...

  5. C#通用类库

    http://www.cnblogs.com/feiyangqingyun/archive/2010/12/20/1911630.html

  6. spring的组件工厂后置处理器——BeanFactoryPostProcessor

    作用和调用时机 spring有两种后置处理器: 1. 组件后置处理器——org.springframework.beans.factory.config.BeanPostProcessor: 2. 工 ...

  7. Jmeter之安装和配置

    一.Jmeter下载: 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 目前最新版本为5.0(未使用过),建议使用4.0 (存在两种格式的压缩包 ...

  8. linux系统查找大文件脚本

    每次遇到服务器磁盘满,都会很苦恼,但有了下面两种方法就可以轻松找到机器中的大文件了, 第一种:du -sh du -sh 当前目录下个文件或目录的大小: du -sh * 显示前10个占用空间最大的文 ...

  9. c++ 读取 utf-8 文件到 string

    #include <iostream> #include <assert.h> #include <fstream> #include <string> ...

  10. Golang基础(4):Go结构体

    当我们要表示同一种数据类型时候,可以用到数组,切片和字典. 当我们要表示不同的数据类型呢?这时候就要用到结构体了 一:定义struct 关键字 type 和 struct 来定义结构体 type st ...