当前位置: 首页 > news >正文

AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (二)

AD9371 系列快速入口

AD9371+ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发

ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射

AD9371 官方例程 时钟间的关系与生成 : AD9371 官方例程HDL详解之JESD204B TX侧时钟生成(一)

梳理 AD9371 时钟,理解采样率和各个时钟之间的关系 : AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (三)

参考资料:
UltraScale Architecture GTH Transceivers User Guide UG576

文章目录

  • 前言
  • 一、TXUSRCLK 和 TXUSRCLK2
  • 二、TX Serial Clock 和 PMA Parallel Clock
  • 三、TXOUTCLK
  • 四、25 MHz clock


前言

AD9371 官方例程HDL详解之JESD204B TX_CLK生成 (一)


一、TXUSRCLK 和 TXUSRCLK2

TXUSRCLK2 主要负责 写数据到 TXDATA 端口,TXUSRCLK主要提供TX PCS 部分逻辑时钟。PCS中还有一个时钟域: PMA parallel clock domain (XCLK)。 TX Serial Clock是高速串行时钟。下面重点介绍TXUSRCLK和TXUSRCLK2
在这里插入图片描述
TXUSRCLK 和 TXUSRCLK2 之间的关系和 TX_DATA_WIDTH 、 TX_INT_DATAWIDTH 等参数有关,本例程中,TX8B10BEN=1; TX_DATA_WIDTH =40; TX_INT_DATAWIDTH =1; Internal Data Width =40;

在这里插入图片描述
得到
TXUSRCLK Rate = Line Rate / 40= link rate;

在这里插入图片描述
TXUSRCLK2 = TXUSRCLK= Line Rate / 40= link rate;

在这里插入图片描述

下图中TXOUTCLK 选择的 TXOUTCLKPMA , 本例中 TXOUTCLKPMA =Line Rate / (2(上升沿和下降沿都有效) x 4 x 5)=Line Rate / 40=TXUSRCLK2 = TXUSRCLK (详见下一节TX Serial Clock 和 PMA Parallel Clock),所以TXOUTCLK可以经过BUFG_GT后直接驱动TXUSRCLK2和TXUSRCLK 。

在这里插入图片描述

二、TX Serial Clock 和 PMA Parallel Clock

在这里插入图片描述
PISO模块,将并行数据转化为高速串行数据输出,PISO高速串行时钟由QPLL0/1 或CPLL 输出的信号经过D分频后生成:
f P L L C l k o u t D \frac{f_{P L L C l k o u t} }{D} DfPLLClkout
由于上升沿和下降沿都有效,
f LineRate  = f P L L C l k o u t × 2 D f_{\text {LineRate }}=\frac{f_{P L L C l k o u t} \times 2}{D} fLineRate =DfPLLClkout×2
对于后续的 2或4 分频,TX_INT_DATAWIDTH = 0 为2分频;TX_INT_DATAWIDTH = 1 是4分频。

对于后续的 4或 5 分频,TX_DATA_WIDTH = 16 或 32 或 64 为4 分频;TX_DATA_WIDTH = 20 或 40 或 80 为5 分频;

本例程中TX_INT_DATAWIDTH = 1;TX_DATA_WIDTH = 40; 依次选择 4分频 和 5分频。

PISO并行时钟由TXOUTCLKPMA提供:

T X O U T C L K P M A = f P L L C l k o u t D ∗ 4 ∗ 5 TXOUTCLKPMA=\frac{f_{P L L C l k o u t} }{D*4*5} TXOUTCLKPMA=D45fPLLClkout

可知在例程中 TXOUTCLKPMA 与 LineRate 差40倍
T X O U T C L K P M A = f LineRate  40 = T X U S R C L K = T X U S R C L K 2 TXOUTCLKPMA=\frac{f_{\text {LineRate }} }{40}=TXUSRCLK =TXUSRCLK2 TXOUTCLKPMA=40fLineRate =TXUSRCLK=TXUSRCLK2

三、TXOUTCLK

在这里插入图片描述
TXOUTCLK 经过 BUFG_GT后 驱动TXUSRCLK2和TXUSRCLK ,TXOUTCLK 可以根据 TXOUTCLKSEL 选择来源,根据下述程序 TXOUTCLK = 3’b011; 选择 TXPLLREFCLK_DIV1

在这里插入图片描述在这里插入图片描述
TXPLLREFCLK_DIV1 根据 TXSYSCLKSEL选择时钟源

上述结构体中 sys_clk_sel = ADXCVR_SYS_CLK_QPLL0=3;

channel 原语赋值时:

TXSYSCLKSEL: assign tx_sys_clk_sel_s = (up_tx_sys_clk_sel[1] == 0) ? 2'b00 : {1'b1,~up_tx_sys_clk_sel[0]};

所以2’b11最低位取反,TXSYSCLKSEL = 2’b10 ;TXOUTCLK 来自于 QPLL0 的参考时钟

由上节可知 QPLL0、 QPLL1、 CPLL的参考时钟 都是 MGTREFCLK 通过 IBUFDS_GTE4后提供到channel 的 GTREFCLK0,即 ref_clk1,AD9528 的 OUT1TXOUTCLK 来源于AD9528 的 OUT1

在这里插入图片描述

TXOUTCLKPCS 和 TXOUTCLKFABRIC 是冗余输出

TXOUTCLK 通过 BUFG_GT后 可以用作互联逻辑时钟

四、25 MHz clock

对于同步和定时,需要一个 尽可能接近25MHz的时钟 ,对于SATA OOB,必须是25MHz

在这里插入图片描述

25MHz 时钟由 TXPLLREFCLK_DIV1 分频产生 ,TXPLLREFCLK_DIV1 是QPLL0/1,或CPLL的参考时钟,本例程中都源于 AD9528 输出的OUT1 ,是122.88MHz, 大于100MHz ,小于 125MHz , 所以 TX_CLK25_DIV = 5 ;同理 RX_CLK25_DIV = 5 。

在这里插入图片描述
TX CLK25 DIV 和 RX CLK25 DIV 在 util_ad9371_xcvr ip 中 设置为5

在这里插入图片描述


相关文章:

AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (二)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…...

实用新型和发明的区别

实用新型专利:是指对产品的形状、构造或者其结合所提出的适于实用的新的技术方案,指对有具体产品结构提出的改进或创造。与发明相比,实用新型专利申请对于技术的要求更低一点,在审查的时候不会进行详细的检索和对比,授…...

Oracle通过透明网关查询SQL Server 报错ORA-00904

Oracle通过透明网关查询SQL Server 报错ORA-00904 问题描述: 只有全表扫描SELECT * 时SQL语句可以正常执行 添加WHERE条件或指定列名查询,查询语句就报错 问题原因: 字段大小写和SQLSERVER中定义的不一致导致查询异常 解决办法: 给…...

MySQL表操作—存储

建表: mysql> create table sch( -> id int primary key, -> name varchar(50) not null, -> glass varchar(50) not null -> ); Query OK, 0 rows affected (0.01 sec) 插入数据: mysql> insert into sch (id,name,…...

Android Studio Gradle中没有Task任务,没有Assemble任务,不能方便导出aar包

Gradle中,没有Assemble任务 1. 在编译aar包或者编译module的时候,没有release包,我们一般都是通过assemble进行编译。 如果在Gradle中找不到task。 可以通过设置File->setting -->Experimental→取消勾选“Do not build Gradle task …...

重复性管理--从泛值到泛型以及泛函(中)--泛函是什么及为什么

在前面, 我们探讨了泛型范式在解决重复性问题上的应用, 在这里, 将继续探讨泛函范式在解决重复性问题上的作用. 注: 关于"泛函(functional)“这一名称, 前面说了, 泛型的本质是"参数化类型”, 那么, 按照这一思路, 泛函的意思也可以理解为"函数的参数化"或…...

Arm推出Total Design生态系统,优化基于Neoverse CSS的SoC开发流程

目录 构建生态系统 将Arm架构小芯片带给大众 关于Arm Total Design的结语 我们最近报道了Arm的Neoverse CSS Genesis N2平台的发布,这是一个近乎现成的计算子系统设计,旨在加快尖端基础设施中定制加速器的上市时间。我们当时评论说,我们可…...

30天精通Nodejs--目录与说明

说明 本系列博客主要针对nodejs零基础的小伙伴,涵盖了Node.js从基础到高级的各个方面。 前置条件,有js的基础,了解css和html。 nodejs版本20.8.1。 目录 基础知识 第1天:基础介绍 第2天:模块系统与npm 第3天&#…...

如何创建前端绘图和图表?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

Python基础入门例程3-NP3 读入字符串

描述 小白正在学习Python,从变量输出开始。请使用input函数读入一个字符串,然后将其输出。 输入描述: 输入一行字符串。 输出描述: 将读入的变量输出。 示例1 输入: Nowcoder 复制输出: Nowcoder…...

每日一练 | 网络工程师软考真题Day44

1、在IEEE 802.11标准中使用了扩频通信技术,下面选项中有关扩频通信技术说法正确的选项是 。 A.扩频技术是一种带宽很宽的红外通信技术 B.扩频技术就是用伪随机序列对代表数据的模拟信号进行调制 C.扩频通信系统的带宽随着数据…...

Python11-正则表达式

Python11-正则表达式 1.正则表达式简介2.正则表达式常见用法和符号3.正则查找4.re.Match对象与group5.re.compile6.正则表达式修饰符7.正则匹配规则8.正则表达式匹配练习9.正则替换10.贪婪模式和非贪婪模式 1.正则表达式简介 正则表达式(Regular Expression&#x…...

【机器学习】XGBoost

1.什么是XGBoost XGBoost(eXtreme Gradient Boosting)极度梯度提升树,属于集成学习中的boosting框架算法。对于提升树,简单说就是一个模型表现不好,继续按照原来模型表现不好的那部分训练第二个模型,依次类推。本质思想与GBDT一致…...

如何复制禁止复制的内容

今天找到一段代码,但是复制时页面提示“这个是VIP会员才有的权限”。我该怎么复制呢。 现在的平台大都是用钱说话,以便响应知识付费的主张。对错我就不说了,我认为既然我有权利看到代码,当然也有权把他复制下来。这并不涉及侵权。…...

多通道图片的卷积过程

多通道(channels)图片的卷积 如果输入图片是三维的(三个channel),例如(8,8,3),那么每一个filter的维度就是(3,3,3&#x…...

uniapp canvas 无法获取 webgl context 的问题解决

uniapp canvas 无法获取 webgl context 的问题解决 一、问题描述 在 uniapp 中做一个查看监控视频的页面,用到的是 JSMpeg 这个库,原理就是前后台通过 websocket 不断推送新画面内容到前端,前端通过这个 JSMpeg 渲染到前端页面中指定的 can…...

Spring底层原理(二)

Spring底层原理(二) BeanFactory的实现 //创建BeanFactory对象 DefaultListableBeanFactory factory new DefaultListableBeanFactory(); //注册Bean定义对象 AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(SpringConfig.class).set…...

springboot188基于spring boot的校园商铺管理系统

项目名称:springboot188基于spring boot的校园商铺管理系统 点击这里进入源码目录 声明: 适用范围: 本文档适用于广泛的学术和教育用途,包括但不限于个人学习、毕业设计和课程设计。免责声明: 特此声明,本…...

【计网 DNS】计算机网络 DNS协议详解:中科大郑烇老师笔记 (六)

目录 0 引言1 DNS概述1.1 定义1.2 DNS域名结构1.2 域名解析步骤 🙋‍♂️ 作者:海码007📜 专栏:计算机四大基础专栏📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网…...

vue 生命周期钩子函数 mounted()实例

在挂载后操作dom获取焦点。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"w…...

DeepSeek-OCR-2效果展示:识别结果支持复制、搜索、跳转原文档位置

DeepSeek-OCR-2效果展示&#xff1a;识别结果支持复制、搜索、跳转原文档位置 DeepSeek-OCR-2 是一款先进的文档识别模型&#xff0c;它不仅能准确识别文档中的文字内容&#xff0c;还提供了丰富的交互功能&#xff0c;让文档处理变得更加高效便捷。通过创新的 DeepEncoder V2…...

3步搞定OpenClaw镜像体验:Kimi-VL-A3B-Thinking云端沙盒部署

3步搞定OpenClaw镜像体验&#xff1a;Kimi-VL-A3B-Thinking云端沙盒部署 1. 为什么选择云端沙盒体验OpenClaw 作为一个长期在本地折腾各种AI工具的技术爱好者&#xff0c;我深刻理解配置环境的痛苦。记得第一次尝试在MacBook上部署OpenClaw时&#xff0c;光是解决Node.js版本…...

不止于裁剪:聊聊Vue3项目中头像处理的那些事儿(vue-cropper实战与优化思考)

Vue3头像裁剪进阶实战&#xff1a;从功能实现到工程化思维 开篇&#xff1a;为什么我们需要重新思考头像处理 在大多数Web应用中&#xff0c;用户头像处理似乎是个"简单"需求——上传图片、裁剪、保存。但当你深入细节时会发现&#xff0c;这个看似基础的功能背后隐…...

OpenAI Assistants API 深度测评与开发指南

OpenAI Assistants API 深度测评与开发指南 第1章 核心概念与问题溯源:从“一次性对话API”到“智能助手构建引擎” 1.1 核心概念:什么是OpenAI Assistants API? 1.1.1 官方定义拆解 OpenAI Assistants API(以下简称“Assistants API”)是OpenAI在2023年11月发布的DevD…...

程序员十年职场经验:技术成长与生存法则

1. 程序员十年成长的血泪经验谈作为一个在代码堆里摸爬滚打十多年的老程序员&#xff0c;今天想和各位同行特别是刚入行的年轻开发者们聊聊那些只有时间才能教会你的事。这十年来我换过5家公司&#xff0c;辗转3个城市&#xff0c;从月薪3000到年薪百万&#xff0c;从单身汉到两…...

PyTorch 3.0静态图分布式训练落地实录:从模型编译失败到千卡吞吐提升3.8倍,我踩过的11个致命坑

第一章&#xff1a;PyTorch 3.0静态图分布式训练落地实录&#xff1a;从模型编译失败到千卡吞吐提升3.8倍在 PyTorch 3.0 正式引入 torch.compile() 与 torch.distributed._composable 协同优化的静态图分布式训练范式后&#xff0c;我们于千卡规模集群&#xff08;A100-80GB …...

避坑指南:Ubuntu20.04下用Python3.8搞定Carla 0.9.13预编译版与ROS Bridge(解决卡死问题)

Ubuntu 20.04下Python 3.8与Carla 0.9.13的完美联姻&#xff1a;ROS Bridge避坑全指南 当自动驾驶仿真遇上机器人操作系统&#xff0c;Carla与ROS的集成堪称绝配。但这对黄金搭档的联姻之路却布满荆棘——Python版本冲突、依赖库不兼容、环境变量混乱&#xff0c;每一个坑都可能…...

iOS / SwiftUI 输入法(键盘)布局处理总结(AI版)

文章目录&#x1f4d8; iOS / SwiftUI 输入法&#xff08;键盘&#xff09;处理总结一、问题背景二、输入框切换闪烁问题❌ 错误原因解决办法键盘动画&#xff08;类似 Android Insets&#xff09;uikitswiftUI&#x1f4d8; iOS / SwiftUI 输入法&#xff08;键盘&#xff09;…...

MaskGIT Revolution: How Bidirectional Transformers Redefine Image Synthesis

1. MaskGIT如何颠覆传统图像生成模式 想象一下你正在拼一幅巨型拼图。传统方法要求你从左上角开始&#xff0c;严格按照从左到右、从上到下的顺序一块块拼接。这就是当前主流图像生成Transformer的工作方式——自回归解码。而MaskGIT带来的革命性变化&#xff0c;就像允许你同时…...

Go语言GORM如何做事务_Go语言GORM事务操作教程【秒懂】

绝大多数业务写操作必须用 Transaction 而非 Begin&#xff0c;因其自动提交/回滚、panic 安全&#xff1b;Begin 仅适用于跨函数传事务或手动管理 savepoint 的底层场景。什么时候必须用 Transaction 而不是 Begin绝大多数业务写操作——比如「创建订单 扣减库存 记录日志」…...