不同高速协议接口之间共享时钟

2024-06-17 01:44

本文主要是介绍不同高速协议接口之间共享时钟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 1、万兆网给8B10B PHY共享
  • 2、8B10B PHY给万兆网共享
  • 3、综合实现
  • 4、总结
    • 4.1、上板验证
      • 4.1.1、第一路数据:万兆网
      • 4.1.2、第二路数据:8B10B PHY

前言

一个GT BANK有四个GT channel,他们之间是可以共享同一个QPLL输出参考时钟,之前的实验当中,我都是同样的工程例化多个channel进行时钟共享,这次在做一个BANK上同时存在万兆王、8B10B、64B66B的时候出现了问题。

本次设计当中在同一个BANK当中输入了俩路高速接口数据,一路是之前自己设计的万兆以太网接口数据,一路是之前的8B10B PHY数据,俩者各自在拓展自己多路输入输出的时候,都直接共享时钟即可,但是按照一样的办法,会出现以下问题:

1、万兆网给8B10B PHY共享

我用万兆网的ten_gig_eth_pcs_pma_0_gt_common模块去给8B10B PHY共享的时候,ten_gig_eth_pcs_pma_0_gt_common模块是没有QPLLREFCLKLOST_OUT信号输出的,进入到common原语内部去将该信号引出来后发现这个信号一直为高,导致8B10B PHY这路是没有时钟信号的,而万兆网这一路数据是一切正常的,万兆网多channel共享逻辑的时候不需要QPLLREFCLKLOST_OUT信号。

2、8B10B PHY给万兆网共享

使用8B10B PHY的gtwizard_0_common模块给万兆网进行GT参考时钟共享的时候,万兆以太网倒是有时钟信号,并且8B10B PHY这路数据一切正常,至于万兆网尽管有数据,但CRC全部出错了,观察波形发现是接收端数据是乱的。。。。
观察俩者共享逻辑代码,发现俩者的QPLL_FBDIV_TOP参数不一样
万兆网ten_gig_eth_pcs_pma_0_gt_common

localparam QPLL_FBDIV_TOP =  66;

8B10B PHY的gtwizard_0_common模块:

localparam QPLL_FBDIV_TOP =  64;

这个信号会影响QPLL的分频系数:
在这里插入图片描述
但是俩路IP核设置参考时钟是完全一样的,唯一区别就是编码方式了,万兆网是64b66b,在example当中,万兆网这个参数是66,对照上图可以理解,但不知道为啥8b10b是64,因为我参考时钟给的依旧是156.25Mhz。

通过测试进一步发现,对于万兆网而言,这个参数必须是66,否则数据是错的,对于8b10b而言,俩个倒是都可以,至少都有时钟产生,但是参数改为66之后,gtwizard_0_common模块的复位输入,必须是8b10b当中IP和的o_qpllreset信号,否则也不行,具体原因尚未查明。。。

3、综合实现

综合实现的时候
gtwizard_0_common模块的参考时钟必须只能输入一个,仿真的时候倒是无所谓,但是实现的时候如果GTREFCLK0_INGTREFCLK1_IN都有信号输入,哪怕你QPLLREFCLKSEL_IN只选择了其中之一,布局布线还是会失败。所以不需要的哪路一定要直接接0。如下:

gtwizard_0_common #
(.WRAPPER_SIM_GTRESET_SPEEDUP(),.SIM_QPLLREFCLK_SEL         (3'b010)
)
common0_i
(.QPLLREFCLKSEL_IN           (3'b010             ),//1:参考时钟0;2:参考时钟1 3:北时钟 4:南时钟.GTREFCLK0_IN               (0                  ),.GTREFCLK1_IN               (  w_gt_refclk       ),.QPLLLOCK_OUT               (w_qplllock         ),.QPLLLOCKDETCLK_IN          (w_sys_clk           ),.QPLLOUTCLK_OUT             (w_qplloutclk       ),.QPLLOUTREFCLK_OUT          (w_qplloutrefclk    ),.QPLLREFCLKLOST_OUT         (w_qpllrefclklost   ),    .QPLLRESET_IN               (w_qpllreset_gt_phy        ) 
);

4、总结

最终完整可用的方法就是:
共享逻辑代码当中:
参数QPLL_FBDIV_TOP为66,保证万兆网数据正确:

localparam QPLL_FBDIV_TOP =  66;

QPLLRESET_IN :QPLL复位信号要接8B10B模块输出的复位,以保证8B10B这路数据正常工作

4.1、上板验证

4.1.1、第一路数据:万兆网

在这里插入图片描述

4.1.2、第二路数据:8B10B PHY

在这里插入图片描述

这篇关于不同高速协议接口之间共享时钟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068143

相关文章

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语