精华内容
下载资源
问答
  • XILINX SGMII千兆以太网 (1)

    千次阅读 多人点赞 2019-08-30 17:29:45
    这篇文章将对以太网的学习过程进行简单记录和总结。 因为工程进度的原因,先采用xilinx自带的IP的形式进行开发,参考PG047。 The LogiCORE™ IP 1G/2.5G Ethernet PCS/PMA or Serial Gigabit Media ...

    这篇文章将对以太网的学习过程进行简单记录和总结。

     

    因为工程进度的原因,先采用xilinx自带的IP的形式进行开发,参考PG047。

     

    The LogiCORE™ IP 1G/2.5G Ethernet PCS/PMA or Serial Gigabit Media Independent Interface (SGMII) core provides a flexible solution for connection to an Ethernet Media Access Controller (MAC) or other custom logic.

    It supports two standards: the 1000BASE-X and 2500BASE-X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) operation, as defined in the IEEE 802.3-2008 standard and the Gigabit Media Independent Interface (GMII) to Serial-GMII (SGMII) bridge or SGMII to GMII bridge, as defined in the Serial-GMII Specification V1.7 (CISCO SYSTEMS,
    ENG-46158) [Ref 1].

    Dynamic switching between 1000BASE-X and SGMII standards is also supported
     

    1 首先扫盲

    以太网芯片MAC和PHY的关系

    https://www.cnblogs.com/pengdonglin137/p/3575691.html

    1.1 以太网MAC是什么?

    MAC即Media Access Control,即媒体访问控制子层协议。

    该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。

    在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层。

    在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。

     

    以太网数据链路层其实包含MAC(介质访问控制)子层LLC(逻辑链路控制)子层。一块以太网卡MAC芯片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面以实现和主机的数据交换。

    MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧。这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示)。最后还有一个DWORD(4Byte)的CRC 码。

     

    可是目标的MAC地址是哪里来的呢?

    这牵扯到一个ARP协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的IP地址的数据的时候,先会发出一个ARP包,其MAC的目标地址是广播地址,里面说到:”谁是xxx.xxx.xxx.xxx这个IP地址的主人?”因为是广播包,这个局域网的所有主机接收这个ARP请求。收到请求的主机将这个IP地址和自己的相比较,如果不相同就不予理会,如果相同就发出ARP响应包。这个IP地址的主机收到这个ARP请求包后回复的ARP响应里说到:”我是这个IP地址的主人”。这个包里面就包括了他的MAC地址。以后的给这个IP地址的帧的目标MAC 地址就被确定了。(其它的协议如IPX/SPX也有相应的协议完成这些操作)。

    IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由驱动程序和操作系统完成。

    在Microsoft的系统里面可以用arp- a的命令查看ARP表。收到数据帧的时候也是一样,做完CRC以后,如果没有CRC校验错误,就把帧头去掉,把数据包拿出来,通过标准的接口传递给驱动和上层的协议栈,最终正确的达到我们的应用程序。

    还有一些控制帧,例如流控帧也需要MAC直接识别并执行相应的行为。

    以太网MAC芯片的一端接计算机PCI总线,另外一端就接到PHY芯片上。它们之间是通过MII接口链接的。

     

    1.2 以太网PHY是什么?

    PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。

    包括MII/GMII(介质独立接口)子层,PCS(物理编码)子层,PMA(物理介质附加)子层,PMD(物理介质相关)子层,MDI子层。它符合IEEE-802.3k中用于10BaseT(第14条)和 100BaseTX(第24条和第25条)的规范。

    PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址、数据还是CRC。对于 100BaseTX因为使用4B/5B编码,每4bit就增加1bit的检错码),然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码。 再变为模拟信号把数据送出去。收数据时的流程反之。

     

    PHY还有个重要的功能就是实现CSMA/CD的部分功能

    它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。

    许多网友在接入Internt宽带时,喜欢使用”抢线”强的网卡,就是因为不同的PHY碰撞后计算随机时间的方法设计上不同,使得有些网卡比较”占便宜”。不过,抢线只是对广播域的网络而言的,对于交换网络和ADSL这样点到点连接到局端设备的接入方式,没什么意义。而且”抢线”也只是相对而言的,不会有质的变化。

    现在交换机的普及使得交换网络的普及,使得冲突域网络少了很多,极大地提高了网络的带宽。但是如果用HUB,或者共享带宽接入Internet的时候还是属于冲突域网络,有冲突碰撞的。交换机和HUB最大的区别就是:一个是构建点到点网络的局域网交换设备,一个是构建冲突域网络的局域网互连设备。

     

    除此之外PHY还提供了和对端设备连接的重要功能,并通过LED灯显示出自己目前的连接的状态和工作状态让我们知道

    当我们给网卡接入网线的时候,PHY不断发出的脉冲信号检测到对端有设备,它们通过标准的”语言”交流,互相协商并确定连接速度、双工模式、是否采用流控等。通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto Negotiation或者NWAY,它们是一个意思–自动协商。

    具体传输过程为:

    发送数据时,网卡首先侦听介质上是否有载波(载波由电压指示),如果有,则认为其他站点正在传送信息,继续侦听介质。一旦通信介质在一定时间段内(称为帧间缝隙IFG=9.6微秒)是安静的,即没有被其他站点占用,则开始进行帧数据发送,同时继续侦听通信介质,以检测冲突。在发送数据期间,如果检测到冲突,则立即停止该次发送,并向介质发送一个“阻塞”信号,告知其他站点已经发生冲突,从而丢弃那些可能一直在接收的受到损坏的帧数据,并等待一段随机时间(CSMA/CD确定等待时间的算法是二进制指数退避算法)。在等待一段随机时间后,再进行新的发送。如果重传多次后(大于16 次)仍发生冲突,就放弃发送。接收时,网卡浏览介质上传输的每个帧,如果其长度小于64字节,则认为是冲突碎片。如果接收到的帧不是冲突碎片且目的地址是本地地址,则对帧进行完整性校验,如果帧长度大于1518字节(称为超长帧,可能由错误的LAN驱动程序或干扰造成)或未能通过CRC校验,则认为该帧发生了畸变。通过校验的帧被认为是有效的,网卡将它接收下来进行本地处理。

     

    1.3 SerDes 是什么?

    SerDes,是SERializer(串行器)和DESerializer(解串器)的简称,是一种点对点的高速串行通信技术。

     

    我觉的SerDes就是一个超级串口收发器

    最大的特点就是点对点收发、没有随路时钟,它的速率是隐含在协议里的,双方必须按照约定好的波特率进行数据的发送和接受才能正确的完成通信。

    这里想说明的是:

    1、串口的单双工和数据位宽都是可以配置的,按照自己的需求去设置;

    2、串口协议也是有时钟的,只不过这个时钟是隐含在协议里,除了常见的9600、38400、115200,自己也可以去配置特殊模式的串口,关键是双方都要遵守相同的协议。

     

    那么SerDes呢?

    相同的,SerDes也是收发两条线,准确地说,是两组,因为它是差分形式,即tx_p、tx_n,rx_p、rx_n;在数据端也是可以配置成不同的数据位宽和单双工模式。

    不同的,就是在于SerDes的时钟是隐含在数据中!这就需要额外的电路去完成数据和时钟的“融合”与“解析”,而这正是PCS和PMA的作用,其内部采用的编码技术和信号补偿技术正是为了完美的将时钟“融合”进串行数据(发送端),再将时钟从串行数据中“解析出来”(接收端)!至于内部如8b/10b、去加重、预加重等技术细节可以自行搜索哈。

     

    Xilinx将这个SerDes硬核进行了封装,成为Gigabit Transceiver,即GT,而它在BANK里的位置和数量都是固定的,从这个角度来看这也算是它不灵活的不足所在吧。

     

    2 进阶

    2.1、MAC层功能

    MAC层功能用一个词概括就是“成帧解帧”,具体来讲:

    TX方向对用户侧发送来的MAC帧添加前导码帧尾校验和,对长度过短帧会在帧尾填充0直至最小帧长,此外流控模块可以根据需要发送pause帧

    RX方向过滤掉不符合规范的数据帧并移除填充域,只有目的MAC地址与自身相符且帧尾校验和正确的数据帧才为有效数据帧,去除前导码和校验域后即发送给用户侧。接收端也会根据可能收到的pause帧做出暂停发送处理

     

    2.2、以太网帧结构

    目前常见的是 Ethernet II 和 IEEE802.3 两种格式,总体可以归纳为:

    类型 目的MAC地址 源MAC地址 长度/类型 有效负荷(可能有填充) 帧校验
    长度 6byte 6byte  2byte 46~1500byte 4byte

    区别在于 Ethernet II 帧长度/类型域解释为上层协议类型,而 IEEE802.3 同样位置是长度字段。

    区分两者的标准是:

    • 当该字段值小于等于1500(十六进制的0x05DC)时,为IEEE802.3格式;
    • 当该字段值大于等于1536(十六进制的0x0600 )时,帧使用的是Ethernet II格式。

    其中Ethernet II最为常见。

     

    2.3 MII 接口

    MII --Medium Independent Interface
    接口连线很多,使能、时钟、标志信号的error、valid等等,共16根线。

     

    2.3.1、RMII 简介

    MII连线太多,怎么办,Reduce!

    R MII,注意这里不仅仅是连接线数量的减少,更重要的是数据时钟的变化,这里用的是外部参考源提供的CLK_REF参考时钟,在PHY侧数据接收是由外部晶振提供,和接收到的数据处于不同的时钟域,所以需要FIFO进行缓存。

     

    2.3.2、SMII 简介

    RMII连线依然太多怎么办?继续减少?串行!

    Serial MII,也衍生了SSMII Serial Sync(串行同步)SSSMII Source Sync Serial(源同步串行)。

     

    2.3.3、GMII简介

    MII的进化版,Gigabit MII 位宽增加一倍,时钟均为125MHz。

    值得注意的是,发送参考钟GTX_CLK的方向是由MAC发送给PHY。


    GMII --Gigabit Media Independent Interface
    GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。
    GMII接口数据结构符合IEEE以太网标准。该接口定义见IEEE 802.3-2000。

        发送器
        ◇ GTXCLK——吉比特TX..信号的时钟信号(125MHz)
        ◇ TXCLK——10/100M信号时钟
        ◇ TXD[7..0]——被发送数据
        ◇ TXEN——发送器使能信号
        ◇ TXER——发送器错误(用于破坏一个数据包)
        注:在千兆速率下,向PHY提供GTXCLK信号,TXD、TXEN、TXER信号与此时钟信号同步。否则,在10/100M速率下,向PHY提供 TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。


        接收器
        ◇ RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)
        ◇ RXD[7..0]——接收数据
        ◇ RXDV——接收数据有效指示
        ◇ RXER——接收数据出错指示
        ◇ COL——冲突检测(仅用于半双工状态)


        管理配置
        ◇ MDC——配置接口时钟
        ◇ MDIO——配置接口I/O
        管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。

     

    2.3.4、XGMII

    XGMII--10 Gigabit Media Independent Interface

    “10Gb独立于媒体的接口”,X对应罗马数字10

     

    2.3.5、SGMII

    终于到了SGMII,这个RX_CLK是可选的,去掉之后是不是很像串口,MII总线中的标志信号TX_EN、TX_ER、RX_DV、RX_ER都成为串行数据的一部分,这样,人们为了提高数据吞吐,从增加数据线到增加时钟频率,再到减少总线,最终回到了串行的形式,也是非常有趣。

    SGMII--Serial Gigabit Media Independent Interface

    SGMII为串行吉比特媒体独立接口,用在PHY与MAC之间,SGMII 提供了速率为 10/100/1000 Mbps 的全双工 BASE-T 功能在光传输里,应用在以太网板上。 类似于GMII和RGMII,只不过GMII和RGMII都是并行的,而且需要随路时钟,PCB布线相对麻烦,而且不适应背板应用。

    而SGMII是串行的,不需要提供另外的时钟,MAC和PHY都需要CDR去恢复时钟。

    另外SGMII是有8B/10b编码的,速率是1.25G。

     

     

     

     

     

     

     

    ///

    2.4、架构图

     

    SGMII 架构框图:

     

    器件的支持度:

     


     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • XILINX SGMII千兆以太网 (4) 之以太网

    千次阅读 2019-09-10 16:59:33
    1、 以太网帧格式 下图是以太网的帧格式 前导码(Preamble):8 字节,连续 7 个 8’h55 加 1 个 8’hd5,表示一个帧的开始,用于双方设备数据的同步。 目的 MAC 地址:6 字节,存放目的设备的物理地址,即 MAC...

    1、 以太网帧格式

    下图是以太网的帧格式

    前导码(Preamble):8 字节,连续 7 个 8’h55 加 1 个 8’hd5,表示一个帧的开始,用于双方设备数据的同步。

    目的 MAC  地址:6 字节,存放目的设备的物理地址,即 MAC 地址源

    源 MAC  地址:6 字节,存放发送端设备的物理地址

    类型:2 字节,用于指定协议类型,常用的有 0800 表示 IP 协议,0806 表示 ARP 协议,8035表示 RARP 协议

    数据:46 到 1500 字节,最少 46 字节,不足需要补全 46 字节,例如 IP 协议层就包含在数据部分,包括其 IP 头及数据。

    FCS:帧尾,4 字节,称为帧校验序列,采用 32 位 CRC 校验,对目的 MAC 地址字段到数据字段进行校验。

     

    进一步扩展,以 UDP 协议为例,可以看到其结构如下,除了以太网首部的 14 字节,数据部分包含 IP 首部,UDP 首部,应用数据共 46~1500 字节。

     

    2、 ARP 数据报格式

    ARP 地址解析协议,即 ARP(Address Resolution Protocol),根据 IP 地址获取物理地址。主机发送包含目的 IP 地址的 ARP 请求广播(MAC 地址为 48’hff_ff_ff_ff_ff_ff)到网络上的主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将 IP 地址和物理地址保存到缓存中,并保留一段时间,下次请求时直接查询 ARP 缓存以节约资源。下图为 ARP 数据报格式 。

    帧类型:ARP 帧类型为两字节 0806

    硬件类型:指链路层网络类型,1 为以太网

    协议类型:指要转换的地址类型,采用 0x0800 IP 类型,之后的硬件地址长度和协议地址长度分别对应 6 和 4

    OP 字段中 1 表示 ARP 请求,2 表示 ARP 应答

    例如:|ff ff ff ff ff ff | 00 0a 35 01 fe c0 | 08 06 | 00 01 | 08 00 | 06 | 04 | 00 01 | 00 0a 35 01 fe c0 | c0 a8 00 02 | ff ff ff ff ff ff | c0 a8 00 03|

              [ 以太网地址    以太网源地址     帧类型 ] [ 硬件   协议  硬长|协长  OP        以太网源地址         源IP地址     以太网地址  目的IP地址]                                 10.53.01.254.192

    表示向 192.168.0.3 地址发送 ARP 请求。

    |00 0a 35 01 fe c0 | 60 ab c1 a2 d5 15 |08 06|00 01|08 00|06|04|00 02| 60 ab c1 a2 d5 15|c0 a8 00 03|00 0a 35 01 fe c0|c0 a8 00 02|

    表示向 192.168.0.2 地址发送 ARP 应答。

     

    3、 IP  数据报格式

    因为 UDP 协议包只是 IP 包中的一种, 所以我们来介绍一下 IP 包的数据格式。下图为 IP 分组的报文头格式,报文头的前 20 个字节是固定的,后面的可变。

    版本:占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)

    首部长度:占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节

    区分服务:占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998 年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段

    总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU

    标识:占 16 位,它是一个计数器,用来产生数据报的标识
    标志(flag):占 3 位,目前只有前两位有意义
          MF   标志字段的最低位是 MF (More Fragment)
                   MF=1 表示后面“还有分片”。MF=0 表示最后一个分片

          DF   标志字段中间的一位是 DF (Don't Fragment)
                  只有当 DF=0 时才允许分片

    片偏移:占 12 位,指较长的分组在分片后,某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位

    生存时间:占 8 位,记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit 字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255

    协议:占 8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程, 1 表示为 ICMP 协议, 2 表示为 IGMP 协议, 6 表示为 TCP 协议, 17 表示为 UDP 协议 

    首部检验和:占 16 位,只检验数据报的首部不检验数据部分,采用二进制反码求和,即将 16 位数据相加后,再将进位与低 16 位相加,直到进位为 0,最后将 16 位取反。

    源地址和目的地址:都各占 4 字节,分别记录源地址和目的地址

     

    3、 UDP 协议

    UDP 是 User Datagram Protocol(用户数据报协议)的英文缩写。 UDP 只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。 UDP 协议经常用于图像传输、网络监控数据交换等数据传输速度要求比较高的场合。

    UDP 协议的报头格式:
    UDP 报头由 4 个域组成,其中每个域各占用 2 个字节,具体如下:
     

    ① UDP 源端口号
    ② 目标端口号
    ③ 数据报长度
    ④ 校验和

    UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。 数据发送一方将 UDP 数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。

    数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为 65535 字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到 8192 字节。

    UDP 协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此 UDP 协议可以检测是否出错。虽然 UDP 提供有错误检测,但检测到错误时,错误校正,只是简单地把损坏的
    消息段扔掉,或者给应用程序提供警告信息。
     

    4、 Ping 功能

    ICMP 是 TCP/IP 协议族的一个 IP 层子协议,包含在 IP 数据报里,用于 IP 主机、路由器之间传递控制消息。控制消息是指网络是否连通,主机是否可达等功能。其中 ping 功能采用回送请求和回答报文,回送请求报文类型为 8’h08,回答报文类型为 8’h00。
     

     

    5、 SMI(MDC/MDIO)总线接口

    串行管理接口(Serial Management Interface),也被称作 MII 管理接口(MII Management Interface),包括 MDC 和 MDIO 两条信号线。 MDIO 是一个 PHY 的管理接口,用来读/写 PHY 的寄存器,以控制 PHY 的行为或获取 PHY 的状态, MDC 为 MDIO 提供时钟,由 MAC 端提供,也就是 FPGA 端。 MDC 的周期最小为 400ns,也就是最大时钟为 2.5MHz。
     

    展开全文
  • XILINX SGMII千兆以太网 (2)

    千次阅读 2019-09-03 23:21:11
    The LogiCORE™ IP 1G/2.5G Ethernet PCS/PMA or Serial Gigabit Media Independent Interface (SGMII) core provides a flexible solution for connection to an Ethernet Media Access Controller (MAC)...

    参考PG047

    The LogiCORE™ IP 1G/2.5G Ethernet PCS/PMA or Serial Gigabit Media Independent Interface (SGMII) core provides a flexible solution for connection to an Ethernet Media Access Controller (MAC) or other custom logic.

    It supports two standards: the 1000BASE-X and 2500BASE-X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) operation, as defined in the IEEE 802.3-2008 standard and the Gigabit Media Independent Interface (GMII) to Serial-GMII (SGMII) bridge or SGMII to GMII bridge, as defined in the Serial-GMII Specification V1.7 (CISCO SYSTEMS,
    ENG-46158) [Ref 1].

    Dynamic switching between 1000BASE-X and SGMII standards is also supported

     

    速率和模式

    从IP核的名字可以看出,该核通过配置可以生成两种核,光口可以用以太网PCS/PMA mode电口具有PHY采用SGMII mode,这里速率采用1G,因为其内部有8b/10b转换,所以参考时钟则是125MHz,有效的数据传输速率就变成了125*10*8/10。

    备选项如果勾选,IP核就会把底层SerDes的一些寄存器接口引出来供用户配置,这里不需要。

     

    核配置

    1000BASEX 的核配置就简单的多了,因为必须要使用到PCS和PMA,因此物理接口必选 Device Specific TR,然后是GMII解析出来的时钟选择自协商功能勾选,MDIO是一种配置IP核的总线,有时钟、数据、标志信号和中断,我的感觉是提供给CPU用的,给上层提供一个方便的配置管理接口。

    对于FPGA来说,可以采用另一种途径,Configuration Register,通过寄存器的形式去完成配置,虽然FPGA也能利用MDIO总线,总归是麻烦了些,所以就只用默认的寄存器配置途径。

    SGMII 模式的物理接口除了可以用 TR ,还可以用 LVDS 接口。

    PHY 与 FPGA 跨时钟的 BUFFER 选项,这个看手册 Figure 3-11。

    还有工作模式选项,默认MAC mode,勾选PHY mode,这个对自协商功能来说非常重要,因为,只有PHY mode,自协商广播寄存器是可写的(Advertisement register is programmable)。

    按照我的理解就是,MAC 模式中的速率、双工、流控等信息只能从对端获取,PHY 模式则可以通知对端自己的配置信息。关于自协商的数据过程,SGMII mode 和 1000BASEX mode 比较类似,都是通过协议里的两个寄存器 Reg4、Reg5 交叉式的通知与获取,当然,并不是像图中那样还有专门的连线,自协商信息也是通过 SGMII 总线收发的,抓 status vector 的信号就可以看到协议里/C/码形式的,bit2 代表的自协商配置信息流(AN CONFIG Sequences),总之,前端选择默认模式就好,但后端一定要选择 PHY mode,因为它必须把自协商信息广播(advertise)给交换芯片的 reg5。

    接收 GMIl 时钟源:选择接收路径和 GMII RX 接口的时钟源。2.5G数据速率不支持 RxGmiClkSrc=RXOUTCLK。当选择 RXOUTCLK 时,由于 RX 数据路径与恢复时钟是同步的,所以不需要对 fabric elastic buffer 进行 required 。因此,SGMll 速度选择不需要 SGMIl capability选项卡。

     

     

     

    Shared Logic

    Xilinx很贴心,它把所需要的外围电路都设计好了,主要包括时钟管理和复位的一些逻辑。

    in Core 表示它会把这些逻辑封装进核里,成为一个新核,把处理后的接口引出来。

    in Example design 则是会像例子里的一样,外围电路以独立模块的形式呈现。

    举个例子,in Example design 模式里 MMCM 会将时钟锁定信息输入到核的 mmcm_locked,而在 in Core 模式,只能看到mmcm_locked_out,模块间的逻辑因为进一步封装而被隐藏了。

    因为,需要用它来加速工程开发,并不意味着不要要看它的代码和手册,这里面也有坑,比如,它的异步复位是高有效。

     

     

    收发器被配置为在 txoutclk 端口上输出该时钟的一个版本(1G为125 MHz, 2.5G为312.5 MHz)。然后 txoutclk 路由到 BUFG_GT。USERCLK:生成 userclk  (1G为62.5 MHz、125 MHz,2.5G为312.5 MHz、156.25 MHz)、userclk2 (1G为125MHz, 2.5G为312.5 MHz),并放置到全局时钟路由上。USRCLK:这些时钟被输入回用户接口时钟端口usrclk和usrclk2上的收发机。

    sgmii_clk_r、 sgmii_clk_f 

    这提供了 SGMII 时钟传递以正确的频率;当将 core 和 SGMII 自适应模块连接到内部逻辑时,可以忽略这些信号。

     

     

     

     

     

     

    选择默认的即可。

     

    include shared logic in core:

     

     

     

    IP 核的内部信号初始化配置以及常量定义

     

    DRP:Dynamic Reconfiguration Port

    status_vector

    output 端口,phy 层反馈的信号。

    bit 0 :连接状态。这个信号表示链路的状态。

    当高时,链路是有效的:链路的同步已经获得,自动协商(如果存在并启用)已经成功完成,收发机的重置顺序(如果存在)已经完成。

    当低时,没有建立有效的链接。链接同步失败或自动调整(如果存在并启用)失败。

    当启用自动协商时,此信号与状态寄存器第1.2位:链接状态相同。

    当禁用自动协商时,此信号与status_vector位[1]相同。在这种情况下,可以使用任何一位。

     

    speed_is_10_100

     

    默认设置为:speed_is_10_100 = 0;speed_is_100 = 0;

    configuration_vector

    默认设置为: configuration_vector = 5‘b00000

     

    an_adv_config_vector

     

    如果 MDIO 接口没有选择的话,core 可以被配置通过 configuration_vector。

    默认设置为(参考 example design): an_adv_config_vector = 15’b0_00_00_0_00_0_1_0000_1

     

    signal_detect

    连接出现问题,非 AN 模式下:

    查看是否连接:

       1. 读 register 1 的 bit 1.2。

       2. 查看 status_vector [0] 的 logic 是否是 1。

    如果没有连接成功需要进行一下操作:

       1. 确保在 core 和 link partner (连接到 core 的设备或测试设备)中禁用自动协商

       2. 监视 core 的 signal_detect 输入信号:

          2.1. 连接到光模块以检测光的存在。逻辑1表明光模块对光的检测是正确的;逻辑0表示错误。因此,要确保驱动的极性正确。

          2.2. signal_detect 信号逻辑置 1。

    默认设置为:signal_detect = 1。

     

    an_restart_config

    这个信号只有在AN存在时才有效。此信号的上升沿是重写 Bit 9 或 Register 0 的使能信号。为了触发一个 AN 的开始,这个信号应该被置0,然后重新置1。

    在 AN 模式下起作用。

    默认设置为:an_restart_detect = 0。

     

    reset

    异步复位,整个 core 的复位,reset 高电平有效。

     

    sgmii_clk_r、sgmii_clk_f

    sgmii_clk 输出到 MAC,这个时钟是 sgmii_clk_r、sgmii_clk_f 通过使用 ODDR 的原语得到。

    monitor clock for the GMII receiver

    在 example design 中

    assign mon_rx_clk = gmii_rx_clk;

     

     

    gmii interface

    gmii_rx_er

     

     

     

     

    展开全文
  • XILINX SGMII千兆以太网 (3)

    千次阅读 2019-09-05 15:06:03
    如果没有流控制,这个FIFO最终会填充和溢出,导致以太网帧的损坏或丢失。流量控制是这个问题的一个解决方案。   Fiqure 3-37显示了FIFO的占用情况。   下面的文本描述了本例中流控制操作的顺序。 ...

    The LogiCORE™ IP Tri-Mode Ethernet Media Access Controller (TEMAC) solution comprises the 10/100/1000 Mb/s Ethernet MAC, the 1 Gb/s Ethernet MAC, 2.5 Gb/s Ethernet MAC, and the 10/100 Mb/s Ethernet MAC IP core. All cores support half-duplex and full-duplex operation。

     

    rx_statistics_vector

    接收帧的统计信息包含在rx_statistics_vector输出中。

    提供有关接收的最后一帧的信息

    可以不使用。

     

    tx_ifg_delay

     

    Receive Interface AXI4-Stream Signal Pins

     

    rx_axis_mac_tuser

    rx_axis_mac_tuser 是数据包错误 的标识。

    正常情况下,rx_axis_mac_tuser 为0。 

     

    当不正确的帧数据,rx_axis_mac_tuser会在帧的最后一个数据置1。

     

    pause_req、pause_val

    流程控制实现示例此解释,旨在描述一个简单(但粗糙)的流控制实现示例,以引入该概念。参考Fiqure 3-33中所示的系统。

    总结一下这个例子,由于时钟误差,左侧的 MAC 无法匹配右侧 MAC 的完整行速率。随着时间的推移,所示的 FIFO 会填充和溢出。

    其目的是实现一种流量控制方法,在较长时间内,将右侧MAC的全线速度降低到左侧MAC较低的全线速度能力的平均值。

    方法1. 选择一个 FIFO 几乎全满的阈值(本描述中使用了 7/8 占有率)。当 FIFO 的占用率超过这个占用率,使用 OxFFFF 作为暂停量子持续时间,启动单个暂停控制帧(pause_val[15:0]=oxFFFF)。这是最大暂停时间。这将导致右侧 MAC 停止传输,而左侧 MAC 的 FIFO starts to empty。

    方法2. 选择第二个 FIFO 占用率阈值(本描述中使用了3/4)。当 FIFO 的占用率低于这个占用率时,启动第二个暂停控制帧,使用 0x0000 作为 pause_quantum 持续时间(pause_val[15: 0]=ox0000)。这表示暂停时间为零,当接收到这个暂停控制帧时,右边的 MAC 立即恢复传输(它不等待原始请求的暂停时间过期)。因此,这个暂停控制帧可以被认为是一个“暂停取消”命令。

    图3-33说明了1 Gb/s流量控制的需求。

    图右侧的 MAC 有一个参考时钟,略快于标准的 125MHz。图左侧的 MAC 有一个参考时钟,比标准的 125MHz 稍慢。这将导致左侧的MAC 无法匹配右侧 MAC 的完整行速率(由于时钟公差)。左边的 MAC 表示执行一个环回实现,这将导致 FIFO 随着时间的推移而被填满。如果没有流控制,这个FIFO最终会填充和溢出,导致以太网帧的损坏或丢失。流量控制是这个问题的一个解决方案。

     

    Fiqure 3-37显示了FIFO的占用情况。

     

    下面的文本描述了本例中流控制操作的顺序。

    1. 由于时钟的误差,左边 MAC 的平均 FIFO 占用率随着时间逐渐增加。在 A 点,占有率已达到 7/8 的门槛。这将触发最大持续时间暂停控制帧请求。

    2. 接收到暂停控制帧后,右边的 MAC 停止传输。

    3. 当右侧 MAC 停止传输后,连接到左侧 MAC 的 FIFO 占用空间迅速清空。占用率降至 B 点的第二个阈值 3/4,这将触发持续时间为零的暂停控制帧请求(暂停取消命令)。

    4. 接收到第二个暂停控制帧后,右边的 MAC 恢复传输。

    5. 随着时间的推移,FIFO 的占用率又逐渐增加。在C点,这个流量控制循环重复。

     

     

     

     

    展开全文
  • 1. MII/GMII(Gigabit Media Independent Interface) 1.1 MII/GMII signal 1.2 MAC <--> PHY 1) GMII: 2)... SGMII with Receive Reference Clock: SGMII without Receive Reference Clock: 4. RMII base on rtl8201
  • 100Base-T1 与SFP SGMII转换器; The 100BASE-T1 SFP Module is the optimum solution to convert between 100BASE-T1 and SGMII. It fits into a standard Small Form-factor Pluggable (SFP) and generates 100 M...
  • 最近在学习以太网,了解到各种各样的以太网媒体接口:MII、RMII、SMII、GMII等等,有点乱,于是抽空理一下
  • Medium Independent Interface 的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、...
  • SGMII协议解析

    2021-07-22 10:15:56
    什么是SGMII? 先说什么是GMII/MII。 MII是ethernet协议里面MAC层和PHY层之间的接口标准。MII是4bits的数据位宽,支持10/100M的数据传输。GMII前面G表示Gigabit,代表支持1000M的传输速率。需要说明的是MII是GMII的...
  • 网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是...
  • SGMII SERDES

    千次阅读 2013-10-21 11:01:06
    随着数据传输率的发展,链路已经从并行接口(MII、 GMII )发展到串行链路(GE、SGMII 、 XAUI等)GMII是8bit并行同步收发接口,采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10...
  • 大多数MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25...
  • 代码库_自协商SGMII

    2019-02-22 23:41:11
    代码库_自协商SGMII前言README自协商的目的自协商原理光口自协商强制模式的问题 前言 光口/网口调通后,补充了一些理论和说明; 以下内容查找于网络,已编辑 README 自协商的目的 最早的以太网都是10M半双工的,所以...
  • SGMII调试及丢包问题

    千次阅读 2020-06-11 18:00:45
    使用88E1514和FPGA连接做以太网通信,走的时LVDS接口 ip核使用:GMII转SGMII的桥,使用了同步SGMII模式,需要提供一路125MHz的同步时钟,并固定在1G模式。 --------------------------------------------...
  • MII+GMII+RGMII+SGMII 解密

    2018-12-22 14:32:53
    翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。...
  • SGMII光模块知识百科

    千次阅读 2019-05-09 15:35:30
    SGMII 是一个陌生而熟悉的通信行业术语,也许有人了解很多,也许有人一知半解,如果我们曾经遇到这方面产品的需求,那可以...它是以太网媒体访问控制器(MAC)和物理层器件(PHY)的连接总线。易天光通信有限公司就有一...
  • SGMII接口就是使用了SerDes技术的GMII接口,SerDes上跑的是10b信号; 发送端,PCS Transmit将GMII的8b信号编码为10b信号,经过Serializer串行化后在SerDes高速路上传输;接收端,PCS Receive模块,它将10b信号解码为...
  • MAC与PHY的接口GMII RGMII SGMII Serdes

    千次阅读 2019-08-27 15:29:07
    GMII,RGMII,SGMII,TBI,RTBI接口信号及时序介绍 GMII、SGMII和SerDes的区别和联系 PHY结构 以88e1111为例,Symbol encoder/decoder即PCS, MAC的结构 以zynqmp为例, GMII/RGMII GMII/RGMII不经过MAC的PCS,所以...
  • 以太网媒体接口有:MII、RMII、SMII、GMII。   所有的这些接口都从MII而来,MII是(Medium Independent Interface)的意思 ,是指不用考虑媒体是铜轴、光纤、电缆等,因为这些媒体处理的相关工作都有PHY或者叫做MAC...
  • 介绍了各以太网MII接口技术,包括MII、GMII、SMII、SGMII、RGMII等才传输方式
  • 自协商SGMII_板上调试篇

    千次阅读 2019-01-30 22:36:55
    自协商SGMII_板上调试篇 PC网口模式设置 q0mac mode q1phy mode q01g2100f q11g2100f q0100f2100h q1100f2100h pctxping1g q0pcping q1pcping cpuping q0 q1
  • GMII、RGMII、SGMII

    千次阅读 2014-02-19 11:31:56
    SGMII ) is a variant of MII, a standard interface used to connect an  Ethernet  MAC-block to a  PHY . It is used for  Gigabit Ethernet  but can also carry 10/100 MBit Ethernet. It uses ...
  • 以太网 MAC+SGMII->GMII接口转换 以FPGA V7为例,搭建一个千兆以太网接口。运行环境为Vivado2019.1。板卡的FPGA V7与千兆网口芯片采用SGMII互联,最终实现FPGA与上位机之间的千兆网卡通信,实际实现时,V7采用MAC...
  • 详细介绍千兆以太网MII接口GMII、RGMII、SGMII、TBI和RTBI 的接口信号定义及时序
  • 自协商SGMII_IP核例化篇

    千次阅读 热门讨论 2019-01-27 23:47:37
    自协商SGMII_IP核例化篇前言工程简介前端IP核例化速率和模式核配置Shared LogicQ0模块接口后端IP核例化核配置Q1模块接口顶层模块异步FIFO自协商总结 前言 本篇主要介绍该IP核的“使用”,和实际项目工程,为下一篇的...
  • GMII、SGMII和SerDes的区别和联系?GMII和SGMII区别,上一篇已经介绍了,这一篇重点介绍SGMII和SerDes区别。GMII和SGMIIGMII在MII接口基础上提升了...
  • SGMII 和 Serdes 的详细说明 Serdes : SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。它是一种时分多路复用(TDM)、点对点的通信技术,即在发送端多路低速并行信号被转换成高速串行信号,经过传输...
  • 以太网MII接口类型

    2019-07-23 17:49:21
    大多数MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494
精华内容 197
关键字:

以太网sgmii