0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GMII、SGMII和SerDes的差异总结

454398 来源:OpenFPGA 作者:OpenFPGA 2020-10-09 11:31 次阅读

GMII、SGMII和SerDes的区别和联系?

GMII和SGMII区别,上一篇已经介绍了,这一篇重点介绍SGMII和SerDes区别。

GMII和SGMII


SGMII接口

SGMII和SerDes

终于到了今天的猪脚-SerDes,为什么拿SGMII和SerDes进行对比,主要原因是,SerDes是一个串行接口,和SGMII很像,和GMII几乎没有什么交集,所以两者对比就没有什么实际意义,所以只进行SGMII和SerDes进行对比。

由于SerDes在PCIe部分起着非常重要的作用,所以这部分详细内容会放到PCI-e部分详解,这里只是简单介绍一下:

SerDes,是SERializer(串行器)和DESerializer(解串器)的简称,是一种点对点的高速串行通信技术,串口协议跟IIC、SPI等总线协议还是有很大差别的,最大的特点就是点对点收发、没有随路时钟,它的速率是隐含在协议里的,双方必须按照约定好的波特率进行数据的发送和接受才能正确的完成通信,SPI则是主机向从机发送时钟,从机在这个时钟的上升沿采样数据、下降沿发送数据,最开始人们为了提高通信速率的思路有两条:提高随路时钟频率、增加数据通路位宽,这都很好理解,举个栗子就是四线SPI(Qspi),但逐渐地这种思路就遇到瓶颈!

第一、时钟频率的不断增加,时钟抖动和偏斜的因素变得更加明显,也增加了时钟质量的要求,为了充分利用时钟,工程师们还想到了利用下降沿,没错,就是DDR!第二、数据总线的增加意味着管脚数的增加,这会引起PCB布局布线的灾难。人们又开始把思路回到不用时钟线的串口协议上。先看看串口收发器的伪代码!

//串口收发器 SerialTransceiver
module serialTR(
input sys_clk,
input rst_n,
//可配置单双工,双工模式
input [1:0] I_rxtx_en, //收发使能,高有效
output [1:0] O_rxtx_done, //收发完成脉冲信号

input RX, //串口总线
output TX,
//数据位宽可配置
input [7:0] data2tx, //待发送数据
output [7:0] data2rx //待接收数据
);

//串口接收 ---> 串转并
always@()begin
if(!rst_n)
//寄存器复位
else if(I_rxtx_en[1])
//1、下降沿检测,获取起始位
//2、3、4、5、6、7、8、9波特率定时器,采样数据
//9、10接收校验位和结束位
//11、12、产生完成脉冲信号
end
//串口发送 ---> 并转串
always@(!rst_n)begin
if(!rst_n)
//复位
else if(I_rxtx_en[0])
//1、构建数据格式
//2~12 按位发送
//13、14产生完成脉冲信号
end

endmodule

这里想说明的是:

1、串口的单双工和数据位宽都是可以配置的,按照自己的需求去设置;2、串口协议也是有时钟的,只不过这个时钟是隐含在协议里,除了常见的9600、38400、115200,自己也可以去配置特殊模式的串口,关键是双方都要遵守相同的协议,那么SerDes呢?

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

不同的,就是在于SerDes的时钟是隐含在数据中!这就需要额外的电路去完成数据和时钟的“融合”与“解析”,而这正是PCS和PMA的作用,其内部采用的编码技术和信号补偿技术正是为了完美的将时钟“融合”进串行数据(发送端),再将时钟从串行数据中“解析出来”(接收端)。

SERDES主要由物理介质相关( PMD)子层、物理媒介附加(PMA)子层和物理编码子层( PCS )所组成。PMD是负责串行信号传输的电气块。PMA负责串化/解串化,PCS负责数据流的编码/解码。在PCS的上面是上层功能。针对FPGA 的SERDES ,PCS提供了ASIC块和FPGA之间的接口边界。

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

接下来就是SGMII和SerDes的区别

图1 SGMII的MAC侧和PHY侧

图1 SGMII的MAC侧和PHY侧

刚看到上图时,感觉很奇怪,PCS为什么还存在于MAC中?GMII规范中PCS只存在于PHY中,见下图。

图2 GMII在OSI模型中的位置

图2 GMII在OSI模型中的位置

实际上SGMII对应的MAC和PHY的划分是将SGMII接口断开,一端归为MAC,一端归为PHY;同样,GMII对应的MAC和PHY的划分是将GMII接口断开,一端归为MAC,一端归为PHY。下图是将图1整理后的图。

图3 整理后的SGMII信号接收和发送流程

图3 整理后的SGMII信号接收和发送流程

上图可以看出,SGMII接口就是使用了SerDes技术的GMII接口,SerDes上跑的是10b信号,在接收端,PCS Transmit将GMII的8b信号编码为10b信号,经过Serializer串行化后在SerDes高速路上传输到PCS Receive模块,它将10b信号解码为8b信号送至MAC Receive Rate Adaptation模块。因此SGMII相对于GMII多了个S,这个S就是SerDes技术,它提供了一个高速传输通道。

在交换芯片中经常可以看到1个Port可以被配置为SGMII/SerDes模式,个人理解的是SGMII相对于SerDes多了一个速率协商(比如上图中的PHY Receive RateAdaptation模块),当使能了SGMII模式,就是使能了PHY Receive Rate Adaptation模块,当使能了SerDes模式,就是禁用了或者未使用PHY Receive RateAdaptation模块,这样猜测的原因是在光模块或者电模块选型时,发现SerDes接口的光模块或电模块总是仅支持1000Mbps速率;而SGMII接口的电模块总是能支持10/100/1000Mbps速率,但是没看到能支持这种猜测的文章。

下图是SerDes的发送和接收结构。

图4 SerDes的发送和接收结构

图4 SerDes的发送和接收结构

SerDes通道传输的10b信号,因此在SerDes发送端,需要上图的PCS实现8b/10b编码,之后是串行化以上高速跑道;

在SerDes接收端,需要上图的PCS实现10b/8b解码,之后是解串行化,以下高速跑道。

在进行电路设计时,当交换的1个Port配置为SerDes模式,它能接光模块和电模块,但是速率是不可协商的,当接光模块,光模块也仅是进行光电或电光的转换,以在光纤中传输,并不涉及到PCS等概念;当配置为SGMII模式,它只能接电模块,因为电模块内部是有PHY和变压器的,所以此时的设计模式就是MAC+PHY+变压器的常规模式。

总结一下:

其实,大多数MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),

SerDes直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25Gbps是因为插入了控制信息,而SerDes端口速率被提高是因为进行了8B/10B变换,本来8B/10B变换是PHY芯片的工作,在SerDes接口中,因为外面不接PHY芯片,此时8B/10B变换在MAC芯片中完成了。8B/10B变换的主要作用是扰码,让信号中不出现过长的连“0”和连“1”情况,影响时钟信息的提取

所以感觉是mac芯片用加2bit控制信息的功能模块去完成了8B/10B变换,这样SerDes信号就可以直接出去了。

SerDes通道和SerDes接口是两个概念,SGMII也是需要SerDes通道(SERDES lane)的。

而SGMII需要插入2bit控制信号变成10b是因为SGMII需要控制信来实现10/100/1000速率协商,而SerDes是固定速率(1000BASE-x)。

PHY收到mac sgmii的10b后,将控制信号去除后,将数据发送出去前还是会加扰码完成8B/10B变换。

编辑|:hfy
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1054

    浏览量

    50783
  • SerDes
    +关注

    关注

    6

    文章

    174

    浏览量

    34513
  • PCI-e总线
    +关注

    关注

    1

    文章

    2

    浏览量

    7065
收藏 人收藏

    评论

    相关推荐

    请教关于C6678的serdes模块

    请教:C6678的PCIE SRIO Hyperlink和SGMII模块的配置中都涉及到对serdes模块的配置,故希望知道以下几个问题:1、这些模块的serdes是同一个,还是各自有各自
    发表于 08-06 06:17

    CHIPSCOPE无法在我们的定制板上工作

    ,我们使用的是SGMII协议,这里的chipcope工作正常,对于POWER PC,我们使用的是GMII协议,这里的chipcope工作正常但是对于DSP接口,我们在这里使用EMIF-B接口
    发表于 03-08 08:48

    以AR8031 为例解读sgmii的PHY芯片(实用版)

    在上一篇的文章中我们对sgmii的数据协议进行了解析,那么本篇我们说一下sgmii的PHY芯片的硬件电路,其电路图如下所示。上面电路图中的电路电源和地我们就不说了。现在结合数据芯片手册来说
    发表于 12-26 11:10

    SGMII模式下在接收路径和发送路径中使用此IP应该注意什么?

    嗨,我正在探索在设置中使用此IP的选项,其中我们向该IP提供GMII输入并从IP获得SGMII输出以连接到PHY(参见PG047仅限SGMII模式)。但是,我们有一个自定义实现,我们的GMII
    发表于 05-18 08:46

    飞凌嵌入式LS1046A&LS1028A平台的SerDes设计方案

    的:SerDes2只有PCIE、SATA、SGMII(1.25G)的功能,这三个功能都可以参考100MHz时钟,那么我们的核心板上硬件已经固定死100MHz,只需要软件去选择PLL即可。SerDes1有
    发表于 10-28 17:15

    飞凌嵌入式LS1046A&LS1028A核心板的SerDes设计方案

    是这样实现的:SerDes2只有PCIE、SATA、SGMII(1.25G)的功能,这三个功能都可以参考100MHz时钟,那么我们的核心板上硬件已经固定死100MHz,只需要软件去选择PLL即可
    发表于 11-01 20:21

    GMII和RGMII主要的接口

    一、前言  网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG。但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统。这类接口总线位
    发表于 07-29 06:39

    LS1046A:SerDes Lane重新配置后没有以太网是怎么回事?

    我仍在努力让 Broadcom“BCM84891L”10GbE PHY 启动并运行(相关线程是 同时,我能够在 1G 模式(使用带有 SerDes 协议 0x3333 的 SGMII)和 10G
    发表于 04-18 10:32

    如果SerDes_1 lan0和lan1工作在SGMII模式下,是否需要配合PFE_MAC0和PFE_MAC1工作?

    我正在使用 M7 内核上的 RTD、FreeRTOS 和 LWIP 将 S32G RDB2 SerDes_1 lan0 和 lan1 设置为 SGMII 模式。我有几个问题:1、如果SerDes
    发表于 04-19 07:40

    可以在运行时切换SerDes协议吗?

    我正在尝试在运行时重新配置 SerDes 通道协议,而且我几乎已经开始工作了。环回 (XGLP) 工作,即 MAC 看到我传输的数据包,但它不能通过 SGMII/XFI 线路将数据包发送到以太网 PHY。 是否可以在运行时更改 SerD
    发表于 04-28 08:28

    如何在Serdes_0 (s32g274a) 上使用sgmii模式?

    如何在Serdes_0 (s32g274a) 上使用sgmii模式?
    发表于 05-09 07:41

    TMS320C6474 SERDES实施指南

    这个文件包含执行指令(串行/ SERDES接口on the tms320c6474)基于DSP器件。包括串行RapidIO®(SRIO),天线,和串行千兆比特媒体独立接口(sgmii)接口。
    发表于 04-17 09:38 3次下载
    TMS320C6474 <b class='flag-5'>SERDES</b>实施指南

    Xilinx 7 系列FPGA中的Serdes总结

    本文档的主要内容详细介绍的是Xilinx 7 系列FPGA中的Serdes总结
    发表于 12-31 17:30 25次下载

    GMII to RGMII IP核的一些参数

    大家好!今天给大家介绍一下GMII to RGMII IP 核的一些参数的含义。其他IP核参数请看文档pg160。
    的头像 发表于 05-25 09:30 2543次阅读
    <b class='flag-5'>GMII</b> to RGMII IP核的一些参数

    什么是SerDesSerDes的应用场景又是什么呢?

    首先我们要了解什么是SerDesSerDes的应用场景又是什么呢?SerDes又有哪些常见的种类?
    的头像 发表于 06-06 17:03 4787次阅读
    什么是<b class='flag-5'>SerDes</b>?<b class='flag-5'>SerDes</b>的应用场景又是什么呢?