精华内容
下载资源
问答
  • 以太网MAC协议

    2012-10-18 19:24:20
    详细介绍了以太网MAC层的数据格式、前导码、FCS等的值,以及串行发送顺序等底层知识,对用FPGA自己实现MII接口,了解传输过程非常有用
  • 以太网MAC协议--CSMA/CD协议

    千次阅读 2016-11-17 15:06:21
    以太网MAC协议–CSMA/CD协议@(计算机网络)为了通信的方便,以太网采用了两种重要的措施:CSMA/CD协议 采用无连接的工作方式:传输数据之前不用建立连接 对发送的帧不进行编号,也不要求接收方发回确认帧。这样做的...

    以太网MAC协议–CSMA/CD协议

    @(计算机网络)

    为了通信的方便,以太网采用了两种重要的措施:

    CSMA/CD协议

    • 采用无连接的工作方式:传输数据之前不用建立连接
    • 对发送的帧不进行编号,也不要求接收方发回确认帧。这样做的理由:局域网的信道质量非常好,因为信道质量产生的错误的概率非常小。区别于数据链路层协议。

    所以,以太网提供的是无连接不可靠的服务。尽最大努力交付即可。

    关于CSMA/CD协议,我只是单纯的学习了这些协议的特点,没有看到它们就是以太网的具体采用的协议。

    中文名称是:载波监听多路访问/冲突检测协议。

    所以有必要解释一下中文的含义:

    • 载波监听:站点发送数据前,先检查总线上是不是已经有数据在传输,如果有就暂缓发送,避免冲突。实质是:冲突发生前尽量避免。
    • 多路访问:即总线型网络。以太网就是总线型网路。
    • 冲突检测:边发送边对介质上电压信号进行检测,当电压摆动值超过一定门限时就认为发生了冲突。一旦发生冲突就停止发送数据,然后根据协议进行重传。

    退避算法总结:以太网采用截断二进制指数回退算法解决冲突后重发问题。核心思想是:发生冲突后的站点在停止发送数据后,不是立即重发而是推迟一个随机的时间。

    具体做法是:

    • 确定单位回退时间。通常取冲突窗口的值,即传输512bit数据用时,叫作时槽
    • 定义参数k,等于重传次数,不能超过10,即k = min(n,10)
    • r,0r<2k ,重传的时延就是r倍的单位回退时间。
    • 重传达到16次仍然不成功,表示当前同时发送数据的站点过多,连续发生冲突,丢弃该帧,向上层报告,任务完不成。。

    这里看出来,重传次数越多,等待时间越长。动态退避,利于系统稳定。

    展开全文
  • 以太网MAC协议

    万次阅读 2018-08-07 17:31:11
     MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过 主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY...

    MAC发送模块

      MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过 主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY提供的载波侦听和冲突检测信号,在信道空闲时通过MII接口将数据以4位的 宽度发送给PHY,最后由PHY将数据发送到网络上。
      发送模块由CRC生成模块(crc_gen)、随机数生成模块(random_gen)、发送计数模块(tx_cnt) 和发送状态机(tx_statem_模块等四个子模块组成。

    CRC生成模块(crc_gen)

      该模块用于计算发送数据的CRC值,并将CRC值添加到数据帧的帧校验序列字段(FCS)内。为了提高效率,并考虑到MAC与PHY的数据通道 为4位,设计时可采用4位并行CRC计算方法,算法中可使用一个次态函数,并通过循环迭代来模拟移位操作。这样,发送模块就可以在边发送数据到PHY的同 时,一边计算CRC,这样当数据发送完时,CRC值也计算完成了。

    随机数生成模块(random_gen)

      如在发送过程中检测到冲突,发送模块就先发送拥塞码(jam),随后停止发送。在下次重新发送之前,发送模块会先执行一个后退 (backoff)操作,即发送模块等待一个半随机(生成的随机数有范围限制)的时间之后再开始发送。该随机数就是由随机数生成模块产生的,它采用经典的 截断二元指数后退算法,后退的时间是一个与发生冲突次数有关的随机数,随着冲突的次数增多,用于生成该随机数的范同也将逐渐增大,以减少冲突的概率。

    发送计数模块(tx_cnt)

      发送计数模块由半字节计数器(nibcnt)、字节计数器和重试次数计数器(retrycnt)三个计数器组成。其中重试次数计数器 (retrycnt)可对发送某个帧时产生冲突次数进行计数。当计数器的值达到最大重试次数时,它将放弃重试,并丢弃发送缓冲器内的数据。同时,重试计数 器的值还被随机数生成模块用于计算下次重试之前需要后退(backoff)的时隙的个数。
      半字节计数器和字节计数器分别用于对发送过程中的半字节(bibble)和字节进行计数。
      信道忙时,发送模块会一直等待,半字节计算器一直计数。当计数到额定等待时间时(最大帧长度的两倍,即3036字节时间),系统会根据设置放弃 发送或是一直等待(可选功能)。一旦信道空闲再进入帧间间隙周期(≥96个比特时间),南半字节计数器从零开始计数。帧间间隙分为两个部分,在前2/3个 周期中,如果检测到信道忙信号,则半字节计数器复位,发送模块重新开始等待;在后l/3周期中,即使检测到信道忙信号,半字节计数器也不会复位,而是继续 计数,以保证每个站点公平的竞争信道。而当半字节计数器的值达到帧问间隙周期时,此时如果有数据等待发送,发送模块就开始发送数据。此外,半字节计算器还 用于前序码的生成和短帧的判断,在数据帧的长度小于最小帧时,发送模块必须根据系统设置进行填充或不填充。
      字节计算器还可用于滞后冲突(late collision)和超长帧的判断。当滞后冲突发生时,正在发送的数据将被丢弃。超长帧的判断则是从对帧内容(包括FCS)进行字节计数,如果字节计数 器的值大于最大有效帧的长度(1518个字节),发送模块就根据系统设置(是否支持超长帧)丢弃或发送。

    发送状态机模块(tx_statem)

      发送状态机模块是整个发送模块的核心,主要用于控制整个发送过程。发送状态机由I-die_State、Preamble_State、 Data0_State、 Da-tal_State、 PAD_State、 FCS_State、 IPG_State、Jam_State、BackOff_State、Defer_State等十个状态组成。
      系统复位后,发送模块即进入Defer_State状态,并一直检测载波侦听(CarrierSense)信号。当载波侦听信号变成无效(表示 信道空闲)时,状态机进人IPG_State状态。尔后,在等待一个帧间间隙之后,状态机则进入Idle_State状态。如果在帧间间隙的前2/3个周 期检测到信道忙信号,状态机将重新回到Defer_State状态。
      状态机进入Idle_State状态之后,发送模块将检测载波侦听信号和主机接口的发送请求。若主机模块请求发送,状态机将进入 Preamble_State状态,发送模块即通知PHY发送开始,同时开始发送前序码(7个0x5),然后发送帧起始定界符(SFD,0xd)。状态机 进入Data0_State后,发送模块将发送一个数据字节的低4位(LSB nibble),将当其进入Data1_State状态后,发送模块则发送数据字节的高4位(MSB nibble)。随后,状态机一直在data0和data1之间循环,直到数据发送完毕。当还剩一个字节时,主机模块将通过发送帧结束信号来通知发送模 块。如果数据帧的长度大于最小帧并且小于最大帧,状态机就进入FCS_State状态,此时发送模块则将CRC生成模块生成的CRC值添加到帧的FCS字 段中并发送给PHY。帧发送完之后,状态机进入Defer_State状态,之后是IPG_State和Idle_State状态。此后状态机又回到初始 状态,以重新等待新的发送请求。
      如果数据帧的长度小于最短帧,状态机就进入PAD_State状态,发送模块根据系统设置是否在数据之后来添加填充码。然后,状态机进入 FCS_State状态。如果数据帧的长度大于最大帧,而系统设置又支持发送超长帧,那么,状态机就进入FCS_State状态;如果不支持发送超长帧, 发送模块将放弃发送,状态机直接进入Defer状态,然后是IPG状态,最后回到Idle状态。
      在发送数据的过程中,发送模块会一直检查冲突检测信号(collision detected)。如果发现冲突且状态机正处于Preamble_State,状态机将在发送完前序码和SFD之后进入Jam_State,并发送拥塞 码,然后进入BackOff状态,以等待重试。之后,状态机经过Defer和IPG回到Idle状态。如果此时重试次数计数器的值没有达到额定值,发送模 块将重新开始发送刚才的帧,并将重试次数计数器的值加1;如果发现冲突且状态机处于data0、da-tal或FCS状态,而且没有超过冲突时间窗,那么 状态机将马上进入Jam状态发送拥塞码,之后经过BackOff、Defer、IPG、回到Idle,并根据重试计数器的值决定是否重新发送刚才的数据 帧;如果检测到发生冲突的时间超过了冲突时间窗,状态机将进入Defer状态,然后经过IPG到IDLE状态,并放弃重试。
      在全双工模式中发送帧时,不会进行延迟(defer),发送的过程中也不会产生冲突。此时,发送模块将忽略PHY的载波侦听和冲突检测信号。当 然,帧与帧之间仍然需遵守帧间间隙的规则。因此,全双工模式下的发送状态机没有Jam_State、。BackOff_State、 Defer_State三个状态。

    MAC接收模块

      MAC接收模块负责数据帧的接收。当外部PHY将通信信道的串行数据转换为半字节长的并行数据并发送给接收模块后,接收模块会将这些半字节数据 转换为字节数据,然后经过地址识别、CRC校验、长度判断等操作后,再通过主机接口写入外部存储器,并在主机接口模块的接收队列中记录帧的相关信息。此 外,接收模块还负责前序码和CRC的移除。
      接收模块由CRC校验模块、地址识别模块、接收计数器模块和接收状态机模块等四部分组成。
      接收模块中的CRC校验模块可通过检查输入帧的CRC值来验证帧的正确性。其算法与CRC生成模块相同。
      地址识别模块用于决定是否接收收到的帧,接收模块首先接收输入帧而不管目的地址,随后由地址识别模块检查帧中的目的地址。若MAC被设置为混杂模式(Promiscuous mode)且目的地址为广播地址,同时允许接收广播帧,帧则被接收。否则,帧被丢弃。
      接收计数器模块由字节计数器(Bytecnt)和帧间间隙计数器(IFGcnt)组成。字节计数器在接收帧过程中将对字节进行计数,以用于识别 帧中的各个字段(前序码、目的地址字段、数据、FCS等)以及判断超长帧。帧间间隙计数器则对两帧之间的间隔时间进行计数,以用于判断下一帧数据的开始。 IEEE 802.3规定,两帧之间的间隔至少必须为96个比特时间(10 Mbps中为9 600ns,100 Mbps中为960 ns)。如果两帧之间的间隔小于要求,帧将被丢弃。
      接收状态机为接收模块的核心,用于控制整个接收过程。接收状态机由Idle_State、Drop_State、Preamble_State、 SFD_State、 Da-ta0_State、Data1_State等六个状态组成。
      系统复位后,状态机处于Drop_State。如果此时MII的数据有效信号(MRxDV)无效,状态机马上进入Idle_State状态,并一直处于Idle等待接收输入帧。
      当接收模块检测到数据有效信号之后,状态机将进入Preamble_State,并开始接收前序码。此后再状态机进入SFD_State,接收 一个字节的帧起始定界符,之后,根据IFGcnt计数器的值进入不同的状态。如果,IFGcnt所确定的时间大于96个比特时间,状态机将进入Data0 状态以接收字节的低4位,然后是Data1状态,并接收字节的高4位,之后又回到Data0状态。状态机就一直在这两个状态之间循环,直到数据接收完毕 (PHY清除MRxDV信号)后进入Idle,以重新等待接收新的数据;如果接收到帧起始定界符时,IFGcnt计数器所确定的时间小于96个比特时间, 那么状态机将进入Drop_State状态,并一直维持该状态直到数据有效信号结束(PHY清除MRxDV信号)。之后,状态机再同到Idle等待接收新 的数据。
      如果在接收前序码、帧起始定界符和数据期间,数据有效信号被清除,那么,状态机将回到Idle。

    MII管理模块

      MII管理模块用于控制MAC与外部PHY之间的接口,以用于对PHY进行配置并读取其状态信息。该接口由时钟信号MDC和双向数据信号MDIO组成。MII管理模块则由时钟生成模块、移位寄存器模块和输出控制模块三部分组成。
      时钟生成模块可以根据系统时钟和系统设置中的分频系数来产生MII管理模块的时钟信号MDC(10 Mbps速率时为2.5 MHz,100 Mbps速率时为25 MHz)。
      移位寄存器模块既可用于对PHY的控制数据进行写入操作,也可用于对PHY的状态信息进行读出操作。写控制数据时,移位寄存器根据其他模块的控 制信号将并行控制数据转换为串行数据;而在读状态信息时,移位寄存器则将PHY的串行数据转换为并行数据,MAC中的其他模块可将该并行数据写入适当的寄 存器。
      由于MDIO是双向信号,因此,输出控制模块就用来决定MDIO是处于输入状态还是输出状态。当MDIO处于输出状态时,移位寄存器输出的串行控制数据在经过时钟同步后发送到PHY;当MDIO处于输入状态时,移位寄存器将数据线上的串行数据转换为并行数据。

    主机接口模块

      主机接口是运行以太网的上层协议(如TCP/IP协议)与MAC控制器的接口。通过该接口,上层协议可以设置MAC的工作模式并读取MAC的状态信息。该接口还可用于上层协议与MAC之间的数据交换。
      主机接口模块内有一组寄存器,可用于存储上层协议对MAC设置的参数以及MAC的状态信息。上层协议对MAC设置的参数包括接收超短帧的使能、 添加填充码使能、持发送超长帧的使能、添加CRC校验值使能、全双工模式或半双工模式、持超长延迟(Defer)使能、混杂模式 (Promiscuous)、接收广播帧使能、发送和接收使能、中断源和中断使能、帧间间隙的长度、最大帧和最小帧的长度、重试限制和冲突时间窗、MII 地址和MII控制命令、接收和发送队列的长度以及本机MAC地址等。
      上层协议通过MAC发送和接收数据的操作主要由主机接口模块内的两个队列来进行管理,这两个队列用于对等待发送的多个帧和接收到的多个帧进行排队。
      发送队列主要记录等待发送的帧的相关信息、发送该帧时对MAC的设置以及该帧发送完之后产生的状态信息。帧的相关信息包括帧的长度、帧在外部存 储器中的地址、该帧是否准备好发送以及队列中是否还有其它帧等待发送;对MAC的设置则包括中断使能、填充使能、CRC使能;产生的状态信息包括成功发送 之前的重试次数、由于达到重试限制而放弃发送、发送时产生的滞后冲突以及成功发送之前发生过的延迟。
      接收队列主要对接收到的数据帧进行排队并记录每个接收到的帧信息。这些信息包括帧的长度、是控制帧还是普通数据帧、帧中包含无效符号、接收到的 帧太长或太短、发生CRC错误、接收的过程中发生滞后冲突、帧是否接收完、队列中是否还有其它已接收到的帧以及帧存储在外部存储器中的地址等。该位同时队 列中还有针对每个帧的设置位,用来设置是否在接收到帧时产生中断。
      发送队列和接收队列的长度都可以在控制寄存器中进行设置。

    展开全文
  • 摘要: 本文介绍了基于现场可编程门阵列(FPGA) 的以太网MAC 子层协议的硬件实现方法. 硬件结构上由控制模 块、发送模块和接收模块3个部分组成,发送模块和接收模块采用状态机控制数据发送和接收的过程,完成数据的封装...
  • MAC地址和以太网协议

    2019-11-20 18:04:13
    MAC地址:每个物理设备唯一的地址:ipconfig /all查看 ----------------------------------------------------------------------------------------...以太网的格式如下: 目的地址和源地址就是上面的MAC地...

    MAC地址:每个物理设备唯一的地址:ipconfig /all查看

    ----------------------------------------------------------------------------------------------------------------------------

     

    以太网的格式如下:

    目的地址和源地址就是上面的MAC地址,CRC是循环冗余校验码

    -------------------------------------------------------------------------------------------------------------

    相邻设备数据传输的过程

    1.E知道地址的情况:

     

    2.E不知道地址的情况:E广播并记录地址后再传输帧数据

    展开全文
  • 以太网物理层(MAC)接口协议

    千次阅读 2020-03-14 21:09:30
    常见的以太网物理层接口协议项目总结常见的以太网物理层接口协议MII接口GMII接口RGMII接口总结 项目总结 ‘本次的以太网协议,我们将完成与前面DDR3相类似的实验内容,也就是FPGA开发板发送视频内容,在电脑的上位机...

    项目总结

    ‘本次的以太网协议,我们将完成与前面DDR3相类似的实验内容,也就是FPGA开发板发送视频内容,在电脑的上位机上显示。详细的实验内容,我们会在后面的文章中介绍,本次实验我们主要介绍以太网常见的物理层协议,物理层也是OSI七层传输协议的最底层,也是我们FPGA工程师所必须掌握的知识,因为我们主要就与最底层打交道。

    常见的以太网物理层接口协议

    常见的物理层接口协议主要包括:
    1、MII接口
    2、RMII接口
    3、GMII接口
    4、RGMII接口
    5、SGMII接口
    那么我们接下就对我们最常见的三种接口进行进一步的解释,也就是MII、GMII、RGMII接口。

    常见的网线主要有百兆网线、千兆网线,其中百兆网线用到四根线,千兆网线用到八根网线,这里我们可以自己检测一下自己的网线。常见的FPGA千兆网连接如下:
    在这里插入图片描述

    MII接口

    MII接口也就是媒体独立接口,常见的MII接口描述如下:
    在这里插入图片描述
    从上面我们可以看出MII接口的时钟时25M,数据线为4位,数据传输模式是SDR,可以计算一下正好时百兆。MII也是百兆以太网中最常见的协议,传输的时候先发低四位再发高四位。常见的时序如下:
    在这里插入图片描述

    GMII接口

    常见的GMII接口描述如下:
    在这里插入图片描述
    这里可以观察一下两种协议的不同,GMII接口时钟是125MHz,数据位是8位,数据模式主要是SDR传输模式。这里我们也可以计算一下125M*8=1000Mbps,所以GMII接口也就是我们常说的千兆网接口。我使用过黑金的开发板,它上面的千兆网就是GMII接口传输,接下来我们介绍最后一种常见的千兆网接口。

    RGMII接口

    常见的RGMII接口的描述如下:
    在这里插入图片描述
    这里RGMII接口的时钟是125MHz,数据位是4位,数据的传输模式是DDR传输,所以协议的传输速率是125M42=1000Mbps,所以我们的RGMII接口也是千兆网接口。这里传输的时候与GMII的不同就是我们需要使用相应的原语将SDR传输模式转换成DDR传输。

    总结

    创作不易,认为文章有帮助的同学们可以关注、点赞、转发支持。(工程也都在群中)对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:
    在这里插入图片描述

    展开全文
  • 文章提出一种基于AMBA 协议的双通道以太网MAC 架构,通过设计RGMII 接口单元,实现双通道以太网MAC 接口 的引脚复用,有效地降低了芯片管脚数目,同时通过设计PLB2AHB 协议转换单元,实现通信数据AHB 总线与PLB 总 ...
  • 以太网MAC协议研究与FPGA实现
  • 以太网MAC是什么?

    万次阅读 2015-09-12 21:43:16
    MAC即Media Access Control,即媒体访问控制子层协议.该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与...在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送
  • 以太网协议号字段定义

    千次阅读 2018-07-23 12:09:29
    当前使用的以太网协议一般指EthernetII...这两种标准都规定以太网MAC地址为6字节,但对以太网首部第13、14字节的定义却不同。在EthernetII中,对这两字节的定义为上层协议类型字段,而在802.3中,却将这两字节定义...
  • 介绍了基于FPGA的以太网MAC控制器的设计,主要实现了半双工模式下CSMA/CD协议、全双工模式下Pause帧的收发,以及对物理层芯片中寄存器的读写访问。设计采用Verilog硬件描述语,按照自顶向下的设计流程描述了以太网的...
  • 在设计MAC逻辑之前,要先清楚MAC与PHY之间的接口以及以太网协议细节,这样才能保证网络的兼容性。本文内容多来自Xilinx官方文档pg051 tri-mode-eth-mac. 1.GMII接口  此处使用较简单的GMII接口,接口列表及说明...
  • 基于FPGA 的以太网MAC 子层协议设计实现
  • 以太网IEEE802.3协议根据LAN的特点,把数据链路层分成LLC(逻辑链路控制)和MAC(介质访问控 制)两个子层.MAC层协议作为数据帧...介绍了基于FPGA的10M/100M以太网MAC控制器的设计,整个设计用 VErilog语言实现.
  • 以太网MAC帧格式

    万次阅读 2018-05-06 18:48:10
     常用的以太网MAC帧格式有两种标准 :DIX Ethernet II标准,IEEE 的 802.3 标准。 Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节为包类型,而后者定义的2字节...
  • 一、 以太网 ( Ethernet ) 概述、 二、 以太网 ( Ethernet ) 服务、 三、 以太网 ( Ethernet ) 发展、 四、 10BASE-T 以太网、 五、 适配器 与 MAC 地址、 六、 以太网 MAC 帧、 七、高速以太网
  • IEEE 802.3 通常指以太网。一种网络协议。描述物理层和数据链路层的MAC子层的实现方法,在多种物理媒体上以多种速率采用CSMA/CD访问方式,对于快速以太网该标准说明的实现方法有所扩展。
  • 以太网MAC和PHY关系

    2018-05-28 21:54:53
    详细描述了以太网mac层和PHY层的关系,适合新手上手了解协议分层
  • 以太网MAC

    千次阅读 2019-12-17 22:35:01
    MAC层的硬件地址 在局域网中,硬件地址又称为物理地址,或MAC地址; 地址字段6个字节中前三个字节(即高位24位),称为组织唯一标识符; 地址字段6个字节中后三个字节(即低位24)由厂家自行指派,称为扩展唯一标识符,...
  • MAC地址,ARP协议以太网

    千次阅读 2017-01-14 18:13:36
    mac地址: 那么有了IP地址为什么还要一个MAC...以太网是技术概念。  Ethernet物理地址长度为48位,通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进
  • IEEE 802.3-2015 以太网协议.zip
  • 地址解析协议(ARP),该协议为节点提供了将IP地址转换为链路层地址的机制。 动态主机配置协议(DHCP)。 MAC地址 并非节点具有链路层地址,而是节点的适配器(网络接口)具有链路层地址(MAC)。  MAC地址的作用...
  • IEEE 802.3是工作组和工作组制定的电气和电子工程师协会 (IEEE)标准的集合,该工作组定义了有线以太网的物理层和数据链路层的介质访问控制 (MAC)。 这通常是具有一些广域网 (WAN)应用的局域网(LAN)技术。 ...
  • 作者原创,转载注明出处
  • mac地址 和以太网地址If you are still new to the whole networking thing, then it can be a bit overwhelming when you first start learning about the different kinds of addresses involved and how they ...
  • 以太网MAC层 帧格式

    千次阅读 2019-05-20 22:25:00
    以太网中的MAC帧的格式与各字段的作用为:前导码(7字节):使接收器建立比特同步起始定界符SFD(1字节):指示一帧的开始目的地址DA(6字节):指出要接收该帧的工作站源地址SA(6字节):指示发送该帧的工作站地址...
  • 数据链路层:解决的是在...MAC地址是可以标识唯一一台主机的地址,因为MAC地址是根据网卡序号,网卡序号是唯一确定的(网卡出厂时固定)。 2.怎么分离MAC地址(报头与有效载荷)? 通过MAC帧我们可以知道MAC报头与有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,023
精华内容 21,209
关键字:

以太网mac协议