SRIO DRP动态速率配置说明(详细讲解)

目录

一、SRIO IP时钟结构

1、时钟内部结构

2、时钟直接的关系

3、时钟计算原理

​二、SRIO DRP介绍

​1、MMCM DRP配置(xapp888)

2、CPLL DRP配置(ug476)


关于CPLL DRP配置详细介绍:

GTX中CPLL、QPLL DRP动态配置方法(详解)-CSDN博客

关于MMCM DRP配置详细介绍:

MMCM DRP动态配置方法(超详细讲解)-CSDN博客

一、SRIO IP时钟结构

1、时钟内部结构

从下图可以看出IP的时钟结构主要分为3个部分:时钟分频模块、SRIO IP模块和GTX模块。其中主要由时钟分频模块产生时钟输出给SRIO IP模块和GTX模块。

2、时钟直接的关系

时钟分频模块主要产生4个时钟log_clk/cfg_clk 、 phy_clk 、gt_pcs_clk和gt_clk。在SRIO动态速率重配置(DRP)过程中需要log_clk/cfg_clk 、 phy_clk 、gt_pcs_clk和gt_clk和线速率line rate相匹配,时钟与线速率之间的关系如下:

在进行IP配置时,选择Shared Logic in Example Design ,将时钟分频模块放到外部模块,而不放在IP内部,这样方便我们进行时钟的更改。

3、时钟计算原理

从时钟结构中可以看出gt_pcs_clk和RXUSERCLK2/TXUSERCLK2相连,gt_clk和RXUSERCLK/TXUSERCLK相连,refclk与GTREFCLK0相连,refclk由外部时钟引脚经过IBUFDS(差分转单端)后产生,所以sys_clk_p/n需要连接到GTX专用参考时钟引脚上。

关于RXUSERCLK/TXUSERCLK的计算公式如下:

RXUSERCLK2/TXUSERCLK2和RXUSERCLK/TXUSERCLK关系如下:

影响RXUSERCLK/TXUSERCLK和RXUSERCLK2/TXUSERCLK2的几个参数分别为line rate、

Internal Data Width和RX_DATA_WIDTH。

使能8B10B编码时,RX_INT_DATAWIDTH =0Internal Data Width20bitRX_INT_DATAWIDTH =1Internal Data Width40bit

打开IP核里面的模块,可以看到最底层调用了 GTXE2_CHANNEL源语,使用了 GTXE2资源。

可以从模块代码中可以看到关于RX8B10BEN/TX8B10BEN、RX_DATA_WIDTH/TX_DATA_WIDTH、RX_INT_DATAWIDTH/TX_INT_DATAWIDTH的配置。

根据上面的公式和GTX配置的参数我们可以计算出RXUSERCLK/TXUSERCLK和RXUSERCLK2/TXUSERCLK2的值,以线速率1.25G为例:

RXUSERCLK=TXUSERCLK=1250M/20=62.5M;

RXUSERCLK2=TXUSERCLK2=62.5M/2=31.25M。

gt_clk和gt_pcs_clk的时钟分别等于RXUSERCLK/TXUSERCLK和RXUSERCLK2/TXUSERCLK2。下面分析log_clk和phy_clk的时钟计算原理。可以从顶层结构中看出,发送数据流动方向为LOG------>BUF-------->PHY------->GTX,接收数据流动方向为GTX------>PHY-------->BUF------->LOG。

LOG逻辑层主要和用户逻辑接口进行数据交换。逻辑层输入、输出数据位宽为64bit。

BUF缓冲层是对发送和接收的包进行缓冲,另一个作用是处理跨时钟域的问题。缓冲层输入、输出数据位宽也为64bit。

PHY物理层用来处理链路训练(Link Training), 初始化(Initialization) 和协议(Protocol),物理层接口与高速串行收发器相连。物理层和缓冲层数据交互数据位宽为64bit,物理层与高速串行收发器(GTX)数据交换位宽为32*LW(LW = link width)。

线速率line_rate=1.25G条件下:

             链路位宽为X1模式:GTX接口数据位宽为32bit,log和phy数据位宽都为64bit,并且GTX接口数据是在RXUSERCLK2/TXUSERCLK2时钟下进行接收和发送。所以log_clk=phy_clk=TXUSERCLK2/2=15.625M。

             链路位宽为X2模式,最大物理层训练链路为X2:GTX接口最大数据位宽为64bit,log和phy数据位宽都为64bit,log_clk=TXUSERCLK2=31.25M。若实际物理层训练链路为x2,GTX接口数据位宽为64bit,phy_clk=TXUSERCLK2=31.25M;若实际物理层训练链路为x1,GTX接口数据位宽为32bit,phy_clk=TXUSERCLK2/2=15.625M。

             链路位宽为X4模式,最大物理层训练链路为X4:GTX接口最大数据位宽为128bit,log和phy数据位宽都为64bit,log_clk=TXUSERCLK2 * 2=62.5M。若实际物理层训练链路为x4,GTX接口数据位宽为128bit,phy_clk=TXUSERCLK2*2==62.5M;若实际物理层训练链路为x1,GTX接口数据位宽为32bit,phy_clk=TXUSERCLK2/2=15.625M。

             这里为什么逻辑层的时钟log_clk不根据链路位宽变化而变化,而物理层的时钟phy_clk却要根据实际训练链路的宽度而改变。

             从顶层结构中可以看出逻辑层LOG和物理层PHY直接有一个缓冲层BUF,而物理层到GTX之间没有缓冲。因为有了缓冲层BUF的原因,逻辑层就没有必要进行降速,可以按照最高速率进行数据传输,数据到了缓冲层BUF中由缓冲层BUF进行控制输出给物理层PHY的速率;物理层则需要根据GTX实际训练链路宽度来调整输出频率,否则会造成数据丢失。缓冲层BUF还具有跨时钟域处理作用,log_clk和phy_clk频率不同时就需要使用该功能。

二、SRIO DRP介绍

         SRIO IP进行DRP时,需要进行MMCM DRP和CPLL DRP。MMCM DRP主要配置log_clk/cfg_clk 、 phy_clk 、gt_pcs_clk和gt_clk,CPLL DRP配置线速率Line Rate。配置顺序为先进行MMCM DRP配置,然后进行CPLL DRP配置。在配置过程中需要进行复位,配置完成后取消复位。

        从手册提供的速率表中可以看出线速率Line Rate主要有5种:1.25Gb/s,2.5Gb/s,3.125Gb/s,5Gb/s,6.25Gb/s。不同线速率下gt_pcs_clk、gt_clk、phy_clk和log_clk也需要改变。输入参考时钟频率可以选择125M和156.25M。

1、MMCM DRP配置(xapp888)

相同线速率,不同链路位宽下gt_pcs_clk和gt_clk都相同。只有phy_clk和log_clk会根据链路位宽进行变化。使用MMCM输出3个时钟分别为clk_out0,clk_out1和clk_out2。

根据链路位宽不同gt_pcs_clk、gt_clk、phy_clk、log_clk和MMCM输出时钟对应关系如下:

生成IP时选择Shared Logic in Example Design,生成IP Example Design,双击打开srio_clk模块,将MMCMDRP端口引出进行控制。

关于MMCM DRP配置参考官方文档xapp888.主要使用以下寄存器:

             其中0x14,0x15,0x16用于配置VCO频率;0x08,0x09配置clk_out0输出频率;0x0A,0x0B配置clk_out1输出频率;0x0C,0x0D配置clk_out2输出频率。

             所需时钟都能由1250MHz整数分频得到,第一步将VCO倍频到1250M,再分频输出所需时钟,寄存器配置如下:

关于MMCM DRP详细介绍可以看这篇文章:

MMCM DRP动态配置方法(超详细讲解)-CSDN博客

2、CPLL DRP配置(ug476)

             IP配置时勾选Additional transceiver control and status ports功能,将DRP端口开放出来以便后续使用。

SRIO中默认使用CPLL时钟,CPLL DRP配置用于动态配置GTX线速率,计算公式为:

对应的寄存器如下:

线速率line rate和参数配置对应关系如下:

关于CPLL DRP详细介绍可以看这篇文章:

GTX中CPLL、QPLL DRP动态配置方法(详解)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923638.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划之背包问题

0/1背包问题 1.二维数组解法 题目描述:有一个容量为m的背包,还有n个物品,他们的重量分别为w1、w2、w3.....wn,他们的价值分别为v1、v2、v3......vn。每个物品只能使用一次,求可以放进背包物品的最大价值。 输入样例…

推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC

龙迅的HDMI2.0转LVDS芯片LT6211UX和LT6211UXC是两款高性能的转换器芯片,它们在功能和应用上有所差异,同时也存在一些共同点。以下是对这两款芯片的详细比较和分析: 一、LT6211UX 主要特性: HDMI2.0至LVDS和MIPI转换器。HDMI2.0输…

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里,循环神经网络(RNN)宛如一颗独特的明珠,专门用于剖析序列数据,如文本、语音、时间序列等。无论是预测股票走势,还是理解自然语言,RNN 都发挥着举足轻重的作用。…

[STM32]从零开始的STM32 FreeRTOS移植教程

一、前言 如果能看到这个教程的话,说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗?是的,我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS,再到最…

《操作系统 - 清华大学》5 -4:虚拟技术

文章目录 0. 虚拟存储的定义1. 目标2.局部性原理3. 虚拟存储的思路与规则4. 虚拟存储的基本特征5. 虚拟页式存储管理5.1 页表表项5.2 示例 0. 虚拟存储的定义 1. 目标 虚拟内存管理技术,简称虚存技术。那为什么要虚存技术?在于前面覆盖和交换技术&#…

2024APMCM亚太杯数学建模C题【宠物行业】原创论文分享

大家好呀,从发布赛题一直到现在,总算完成了2024 年APMCM亚太地区大学生数学建模竞赛C题的成品论文。 给大家看一下目录吧: 目录 摘 要: 10 一、问题重述 14 二.问题分析 15 2.1问题一 15 2.2问题二 15 2.3问题三…

YOLOv8模型pytorch格式转为onnx格式

一、YOLOv8的Pytorch网络结构 model DetectionModel((model): Sequential((0): Conv((conv): Conv2d(3, 64, kernel_size(3, 3), stride(2, 2), padding(1, 1))(act): SiLU(inplaceTrue))(1): Conv((conv): Conv2d(64, 128, kernel_size(3, 3), stride(2, 2), padding(1, 1))(a…

零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu

1.为啥使用Linux做嵌入式开发 能广泛支持硬件 内核比较高效稳定 原码开放、软件丰富 能够完善网络通信与文件管理机制 优秀的开发工具 2.什么是Ubuntu 是一个以桌面应用为主的Linux的操作系统, 内核是Linux操作系统, 具有Ubuntu特色的可视…

VScode 连不上远程云服务器

今天下午写代码,打开 VScode 突然发现连不上云服务器了,一开始以为自己密码输错了,试了好多次,依然是这样的 经过查资料发现,应该是版本的自动升级导致的!解决方案如下: 1、删除 windows 端的 …

图像分割——区域增长

一 区域增长 图像灰度阈值分割技术都没有考虑到图像像素空间的连通性。区域增长法则正好相反,顾及像素的连接性. 方法:1)选择一个或一组种子; 2)选择特征及相似性判决准则; 3)从该种子开始向外生长&#x…

音视频相关的一些基本概念

音视频相关的一些基本概念 文章目录 音视频相关的一些基本概念RTTH264profile & levelI帧 vs IDRMP4 封装格式AAC封装格式TS封装格式Reference RTT TCP中的RTT指的是“往返时延”(Round-Trip Time),即从发送方发送数据开始,到…

春秋云境 CVE 复现

CVE-2022-4230 靶标介绍 WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用…

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

go语言逆向-基础basic

文章目录 go 编译命令 ldflags -w -s的作用和问题使用 file 命令查看文件类型 go 语言逆向参考go ID版本GOROOT和GOPATHGOROOTGOPATHGOROOT和GOPATH的关系示例 go build和 go modpclntab (Program Counter Line Table 程序计数器行数映射表)Moduledata程…

RAG架构类型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

PostgreSQL详细安装教程

#安装PostgreSQL的yum仓库 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm#安装PostgreSQL 15版本 sudo yum install -y postgresql15-server#初始化数据库(若要自定义数据库存储目录…

uniapp介入极光推送教程 超级详细

直接按照下面教程操作 一步一步来 很快就能 完成 下面的文章非常详细 ,我就不班门弄斧了 直接上原文链接 https://blog.csdn.net/weixin_52830464/article/details/143823231

公司金融期末考试题目

公司金融期末考试题 选择题 1.现金折扣和信用条件(教材P253) 题目类似: 下列不属于信用条件的是()。 现金折扣 数量折扣信用期限 折扣期限 给定的信用条件为"1/10,n/40",则其含义…

图论入门编程

卡码网刷题链接:98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m map(int,input().split()) graph [[0 for _ in range(n1)] for _ in range(n1)]for _ in range(m): …

visionpro实践项目(一)进阶

在visionpro实践项目(一)中,我们是使用标签工具,将测得的零件宽度信息显示在图片上,在这篇文章中,我们换一种方法,使用脚本工具来显示宽度信息。这就涉及到写代码了。 将Job中的标签工具删掉&am…