自协商SGMII_SerDes与SGMII篇

  • 前言
  • SerDes
  • SGMII
    • MII
    • RMII
    • SMII
    • GMII
    • SGMII
  • 总结

前言

最近调通了电口与交换之间的自协商,FPGA侧实现桥梁的作用,例化两个对称的SGMII IP核,完成phy<=>[sgmii<=>gmii<=>sgmii]<=>SW的数据通路,其实,这个IP CORE的使用并不难,Xilinx的用例和文档非常专业,提供了最大程度的支持,毕竟是行业第一,但在一些细节的地方,文档就理所当然似的忽略了,或者就是解释的很有限,这很容易让人产生理解上的偏差,造成的后果就是需要编译不同版本去试错,从而验证解读,这很耗费时间和精力,为什么不仿真?仿真确实能很好的了解功能时序,但对于自协商功能来说就能力有限了,设计激励模块和跑仿真更是个体力活,最好的策略就是读文档pg047!抓信号!这样即使设计有问题,也可以通过抓取的信号判断是哪里的问题了。

SerDes

SerDes,是SERializer(串行器)和DESerializer(解串器)的简称,是一种点对点的高速串行通信技术,好了,概念上记住这些就够了,网上资料很丰富,感兴趣的可以去百度一下,我主要分享下我的理解。
我觉的SerDes就是一个超级串口收发器!串口协议跟IIC、SPI等总线协议还是有很大差别的,最大的特点就是点对点收发、没有随路时钟,它的速率是隐含在协议里的,双方必须按照约定好的波特率进行数据的发送和接受才能正确的完成通信,SPI则是主机向从机发送时钟,从机在这个时钟的上升沿采样数据、下降沿发送数据,最开始人们为了提高通信速率的思路有两条:提高随路时钟频率、增加数据通路位宽,这都很好理解,举个栗子就是四线SPI(Qspi),但逐渐地这种思路就遇到瓶颈!第一、时钟频率的不断增加,时钟抖动和偏斜的因素变得更加明显,也增加了时钟质量的要求,为了充分利用时钟,工程师们还想到了利用下降沿,没错,就是DDR!第二、数据总线的增加意味着管脚数的增加,这会引起PCB布局布线的灾难。人们又开始把思路回到不用时钟线的串口协议上。先看看串口收发器的伪代码!

//串口收发器 Serial Transceiver
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@()beginif(!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)beginif(!rst_n)//复位else if(I_rxtx_en[0])//1、构建数据格式//2~12 按位发送//13、14产生完成脉冲信号
endendmodule

这里想说明的是1、串口的单双工和数据位宽都是可以配置的,按照自己的需求去设置,2、串口协议也是有时钟的,只不过这个时钟是隐含在协议里,除了常见的9600、38400、115200,自己也可以去配置特殊模式的串口,关键是双方都要遵守相同的协议,那么SerDes呢?
相同的,SerDes也是收发两条线,准确地说,是两组,因为它是差分形式,即tx_ptx_nrx_prx_n;在数据端也是可以配置成不同的数据位宽和单双工模式;
不同的,就是在于SerDes的时钟是隐含在数据中!这就需要额外的电路去完成数据和时钟的“融合”与“解析”,而这正是PCS和PMA的作用,其内部采用的编码技术和信号补偿技术正是为了完美的将时钟“融合”进串行数据(发送端),再将时钟从串行数据中“解析出来”(接收端)!至于内部如8b/10b、去加重、预加重等技术细节可以自行搜索哈。
Xilinx将这个SerDes硬核进行了封装,成为GigabitTransceiver,即GT,而它在BANK里的位置和数量都是固定的,从这个角度来看这也算是它不灵活的不足所在吧。

SGMII

这一部分我可能要做个搬运工了,因为这些都是常识性的东西了,百度文库有一篇非常全面的讲解所有MII接口,自行搜索看看就行了,为什么单独列出来?因为这些概念很重要,并且从MII发展到SGMII也正是反映了总线的变化历史,我挑几个代表性的分析分析,资料来源百度文库,侵删。

MII

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

RMII

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

SMII

RMII连线依然太多怎么办?继续减少?串行! Serial MII,也衍生了SSMII Serial Sync(串行同步)SSSMII Source Sync Serial(源同步串行)

GMII

MII的进化版,Giga Bit MII 位宽增加一倍,时钟均为125MHz,值得注意的是,发送参考钟GTX_CLK的方向是由MAC发送给PHY

SGMII

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

总结

这一篇主要是基础概念,看了就知道了,最怕觉得这个东西复杂、很难就不去看了,概念不掌握在后面设计的过程中会很痛苦,因为你会迷茫这个东西有什么用,为什么要这样用,按照我的理解,把SerDes看成超级串口,串口,这个总该不难了吧!下一篇就可以打开这个超级串口,看看这个IP核。

自协商SGMII_SerDers与SGMII篇相关推荐

  1. 自协商SGMII_IP核例化篇

    自协商SGMII_IP核例化篇 前言 工程简介 前端IP核例化 速率和模式 核配置 Shared Logic Q0模块接口 后端IP核例化 核配置 Q1模块接口 顶层模块 异步FIFO 自协商 总结 ...

  2. linux ethtool_glink 获取无线网卡状态,ethtool 读到的状态与 dpdk 读到的网卡状态不一致...

    ethtool 读到的链接状态 使用 ethtool 读取网卡链接状态的一个示例如下: longyu@longyu-pc:~$ sudo /sbin/ethtool ens37 [sudo] pass ...

  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第30篇]大致简述密钥协商中的BR安全定义

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 在两方之间建密钥共享是一件密码 ...

  4. (20)FPGA面试技能提升篇(SGMII、LOCALBUS)

    1.1 FPGA面试技能提升篇20(SGMII.LOCALBUS) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇20(SGMII.LOCALBU ...

  5. 代码库_自协商SGMII

    代码库_自协商SGMII 前言 README 自协商的目的 自协商原理 光口自协商 强制模式的问题 前言 光口/网口调通后,补充了一些理论和说明: 以下内容查找于网络,已编辑 README 自协商的目 ...

  6. 自协商SGMII_板上调试篇

    自协商SGMII_板上调试篇 前言 环境搭建 千兆分析 Q0 Q1 千兆转百兆全双工 Q0 Q1 百兆全转百兆半 Q0 Q1 PING包 PCping Q0 Q1 BoardPing Q0 Q1 总结 ...

  7. RK3588平台开发系列讲解(以太网篇)SGMII和RGMII接口特性

    文章目录 一.MAC 与 PHY的连接 二.MAC 与 PHY 在OSI 中位置 2.1.网络层 2.2.数据链路层 2.3.物理层 三.RGMII 四.SGMII 沉淀.分享.成长,让自己和他人都能 ...

  8. c语言实现dh密钥协商算法,SM2算法第十三篇:SM2密钥协商协议的C语言实现

    记录每一点小小的进展,今天终于把"SM2的C语言实现"的程序成功的运行起来了,下面记录了我的操作流程. 资源下载: 1.sm2源程序(C语言实现) 下载链接 2.静态库和动态库(l ...

  9. spi iic和串口的区别_GMII、SGMII和SerDes的区别和联系

    GMII.SGMII和SerDes的区别和联系? GMII和SGMII区别,上一篇已经介绍了,这一篇重点介绍SGMII和SerDes区别. GMII和SGMII GMII 在MII接口基础上提升了数据 ...

最新文章

  1. linux内核网络协议栈--linux网络设备理解(十四)
  2. Android之用sharedUserId来实现不同应用(APK)数据共享
  3. sql 对groupby 后的数据limit_SQL(三)——汇总分析
  4. 开机启动inittab详解
  5. 转载:公司招聘中不能说的秘密
  6. 强化学习算法在京东广告序列推荐场景的应用实践
  7. Kubernetes Node Controller源码分析之配置篇
  8. 64位Win7下安装Oracle11gr2以及PL/sql(32位)安装
  9. c语言编程怎样进行反函数计算器,反函数计算器
  10. layui form表单提php验证,layui表单验证介绍
  11. 线性代数 第四章 线性方程组 知识点总结(Jeff自我感悟)
  12. spss入门——简单的数据预处理到时间序列分析系列(六)
  13. 配置8266连接中移物联网OneNet平台
  14. 下载安装Tomcat8.5.30
  15. kdd19 Investment Behaviors can tell what inside:Exploring Stock Intrinsic Properties for Stock Trend
  16. 解决VMware的虚拟网络编辑器中没有VMnet0的情况
  17. Away3D学习笔记1 - 戏说Flash 三维引擎
  18. 全国全媒体广告投放广告信息流广告精准投放形式 短视频广告投放流程
  19. 对 Viper RGB 驱动多个缓冲区溢出漏洞的分析
  20. Python 鸢尾花的可视化

热门文章

  1. 【Python】如何用 python 计算矩阵相乘 - numpy.dot()
  2. win10 telnet开启方法
  3. C++桌面透明数字时钟开发,简单编程实例,一看就会!
  4. ChatGPT 被居心不良的人拿去搞黄色了...
  5. 苹果开发者账号持有者转移流程
  6. Unity中的音频资料总结-基本使用+音频可视化+音效管理
  7. 【CentOS7】宝塔面板的安装与使用
  8. 联想thinkpad s230u twist 如何使用u盘装系统
  9. vue3+ts+pinia大气政府门户pc端
  10. 今日头条与自媒体江湖