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

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

相关文章

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);

1_CString char* string之间的关系

CString转char*,string string转char*,CString char* 转CString,string 一、CString转char*,string //字串转换测试 CString CString1; std::string string1; CHAR* char1=NULL; //1string1=CString1.GetBuffer();CStri

【Linux文件系统】被打开的文件与文件系统的文件之间的关联刨析总结

操作系统管理物理内存以及与外设磁盘硬件进行数据的交换 操作系统如何管理物理内存呢? 其实操作系统内核先对内存先描述再组织的!操作系统管理内存的基本单位是4KB,操作系统会为每一个4KB大小的物理内存块创建一个描述该4KB内存块的struct page结构体,该结构体存储着这4KB内存块的属性信息,通过管理struct page来对内存进行管理,page结构体的大小比较小,OS通常将它们组成一个

laravel 多个项目共享SESSION

只讨论一个域下的项目。 eg: a.xxx.com 和 b.xxx.com 来共享session 如果多个laravel项目共享SESSION要满足以下条件: SESSION可以存放在一个地方,eg:共用一个reids用户表为连接同一个数据库的用户表需要在同一域下 操作步骤:以将session 存放到redis中为例: 1. 安装redis库composer require predis/

linux常用API接口

linux常用API接口 文章目录 linux常用API接口1.应用层内存映射mmap取消内存映射munmap终端打印可用方式1.puts 函数2.文件操作函数 fprintf3.字符输出函数 putchar4.fwrite 函数 2.内核层 1.应用层 内存映射mmap mmap 是一个用于内存映射的系统调用,它可以将一个文件或设备中的内容映射到进程的地址空间中,允许程