AD9371 官方例程HDL详解之JESD204B RX侧时钟生成

2023-10-28 04:01

本文主要是介绍AD9371 官方例程HDL详解之JESD204B RX侧时钟生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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侧时钟生成 (二)

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

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

Generic JESD204B block designs

文章目录

  • 前言
  • 一、RXOUTCLK
  • 二、RX Serial Clock 和 PMA Parallel Clock
  • 三、RX 和 RX_OS 的 LaneRate
  • 四、AD9371官方例程 RXOUTCLK、 RXUSRCLK 和 RXUSRCLK2


前言

RX侧 RXUSRCLK、 RXUSRCLK2、25 MHz clock 和TX基本相同

一、RXOUTCLK

在这里插入图片描述
RXOUTCLK 经过 BUFG_GT后 驱动RXUSRCLK2和RXUSRCLK ,RXOUTCLK 可以根据 RXOUTCLKSEL 选择来源,根据下述程序 RXOUTCLK = 3’b011; 选择 RXPLLREFCLK_DIV1
在这里插入图片描述
sys_clk_sel = ADXCVR_SYS_CLK_CPLL=0;

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

二、RX Serial Clock 和 PMA Parallel Clock

在这里插入图片描述
RX Serial Clock 是利用 RX 相位插值 CDR, 从接收数据中恢复出的串行时钟
在这里插入图片描述
PMA Parallel Clock 是恢复出的高速时钟经过 串行 并行分频器后得到的, PMA Parallel Clock 和 后续的 RXUSRCLK、 RXUSRCLK2 时钟不在一个时钟域 ,需要 RX Elastic Buffer跨时钟域

在这里插入图片描述

三、RX 和 RX_OS 的 LaneRate

rx_lane_rate 和 采样率之间的关系

在这里插入图片描述
M是有几个转换器,每个采样数据是16 bit,经过8B/10B编码到 20bit , L是有几个LANE传数据

RX中,demo中 2T2R,M=4(1发 需要IQ 两路转换器), L=2(demo 分配2个LANE ) 的情况下 ,根据IQ rate(122.88M) 可以求得所需的RxLineRate(4915.2 MHz)
IQRate  = R x L i n e R a t e 40 \text {IQRate }=\frac{{RxLineRate} }{40} IQRate =40RxLineRate

对于 RX_OS, M=2(观察或者嗅探采样器), L=2(demo 分配2个LANE ) 的情况下 ,根据IQ rate(122.88M) 可以求得所需的RxOSLineRate(2457.6 MHz)
IQRate  = R x O S L i n e R a t e 20 \text {IQRate }=\frac{{RxOSLineRate} }{20} IQRate =20RxOSLineRate

四、AD9371官方例程 RXOUTCLK、 RXUSRCLK 和 RXUSRCLK2

例程中 RXUSRCLK 和 RXUSRCLK2时钟 由 RXOUTCLK 经过BUFG_GT后生成,RXOUTCLK 选择的 RXPLLREFCLK_DIV1 ,又选择的 CPLL 的参考时钟(QPLL0/1 和CPLL 同一个参考时钟),即ref_clk1

 BUFG_GT i_rx_bufg (.CE (1'b1),.CEMASK (1'b0),.CLR (1'b0),.CLRMASK (1'b0),.DIV (3'd0),.I (rx_out_clk_s),.O (rx_out_clk));

在这里插入图片描述

RXOUTCLK 经过BUFG_GT后连接到每个Channel 的 rx_out_clk_< N >,例程使用的rx_out_clk_0和 rx_out_clk_2,输入到axi_ad9371_rx_clkgen和 axi_ad9371_rx_os_clkgen,产生对应的RXUSRCLK、 RXUSRCLK2和Link rate(对于 RX,Channel 0和1的 RXUSRCLK、 RXUSRCLK2和Link rate 速率都是 LineRate/40=4915.2 MHz/40= 122.88;对于 RX_OS,Channel 2和3的 RXUSRCLK、 RXUSRCLK2和Link rate 速率都是 LineRate/40=2457.6 MHz/40= 61.44;)

在这里插入图片描述

rx_clk_0、rx_clk_1、rx_clk_2、rx_clk_3 接入每个对应Channel 的 RXUSRCLK 和 RXUSRCLK2

    .RXUSRCLK (rx_clk),.RXUSRCLK2 (rx_clk),

生成的 RX link clk 为 链路层 和 传输层 提供 122.88MHz 时钟
rx_jesd status:
Link is enabled
Measured Link Clock: 122.881 MHz
Reported Link Clock: 122.880 MHz
Lane rate: 4915.200 MHz
Lane rate / 40: 122.880 MHz
LMFC rate: 3.840 MHz
Link status: DATA
SYSREF captured: Yes
SYSREF alignment error: No
在这里插入图片描述
生成的 RX_OS link clk 为 链路层 和 传输层 提供 61.44MHz 时钟
rx_os_jesd status:
Link is enabled
Measured Link Clock: 61.441 MHz
Reported Link Clock: 61.440 MHz
Lane rate: 2457.600 MHz
Lane rate / 40: 61.440 MHz
LMFC rate: 3.840 MHz
Link status: DATA
SYSREF captured: Yes
SYSREF alignment error: No
在这里插入图片描述
rx_adc: Successfully initialized (122880554 Hz)
rx_obs_adc: Successfully initialized (122882080 Hz)

这篇关于AD9371 官方例程HDL详解之JESD204B RX侧时钟生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印