JESD204B SUBCLASS1确定性延时参数的计算
目录
1. 时序参数
1.1 ADC
1.2 FPGA
2. 延时计算
2.1 计算延时所需的LMFC周期数
2.2 根据N值计算实际延时
2.3 延时参数优化
前几天又重新复习了以下通过JESD204B SUBCLASS1实现确定性延时的过程。以前对部分参数的计算过程不甚理解,这次算是搞清楚了。
学习JESD204B的时候阅读的是“Serial Interface for Data Converters” JESD204B的JULY 2011版本。该文档毕竟是一个标准文件,实现过程写的比较粗略,而且是指导性的,在实际工程实现过程中作用有限。当时关于确定性延时这部分就一直留有疑惑,比如不同设备间的LMFC不同步如何处理。我目前已经多次成功应用了JESD204B,但都使用的是SUBCLASS0。由于用的是Xilinx的FPGA,所以重点阅读了pg066:JESD204 v6.2,LogiCORE IP Product Guide。pg066有章节详细介绍了subclass1的实现过程,其参数计算过程也能帮助我更好的理解JESD204标准中关于该部分的描述。
以下以ADC与FPGA的接口为例,步骤和计算过程均取自pg066,解释部分是我添加的。
1. 时序参数
实现确定性延时首先要计算ADC与FPGA之间的端对端延时,第一步则要明确关键的时序参数。
1.1 ADC
ADC侧关键时序参数有:
(1)从SYSREF到LMFC的延时,记为TTXLMFC,该延时为确定的。
(2)从模拟信号输入到LMFC的延时,记为TTXIN,该延时为确定的。
(3)从LMFC到数据从串行链路输出的延时,记为TTXOUT。该延时可以是变化的,其不确定性可以通过FPGA端的处理来补偿。
1.2 FPGA
FPGA侧关键时序参数有:
(1)从SYSREF到LMFC的延时,记为TRXLMFC,该延时为确定的。
(2)从JESD204链路输入到LMFC的延时,记为TRXIN,该延时为可变的。
(3)从LMFC到本地AXI接口的数据输出,记为TRXOUT,该延时为确定的。
ADC侧和FPGA侧各有一个参数为可变的,其他均为确定的。既然可变,那么就可以通过调整他们的取值来实现确定性延时。为了计算方便,将TRXOUT记为0,其延时全部归入TRXIN。本文主要描述调整FPGA侧延时的流程。
2. 延时计算
上图清晰画出了各部分延时,其中TWIRE表示串行链路布线延时。在高速ADC应用中,十几厘米的布线长度已经很大了,但也就贡献1ns左右的延时,所以TWIRE在计算中可以按0对待。上图中的T是指从ADC端的LMFC到FPGA端LMFC的延时。需要指出的是T并不是指ADC和FPGA之间相邻的LMFC,而是指从ADC端检测到SYSREF后的第一个LMFC(此时ADC开始发送ILA或者数据)开始,到数据或ILA到达FPGA侧为止的最小延时。在理想状态下,如果两个设备的LMFC严格对齐,那么T会是LMFC的整数倍,即N*LMFC。但实际上不同设备的LMFC之间一定有偏差,所以T的表达式如下。
T = N*LMFC - TTXLMFC + TRXLMFC
T是指最小延时,那么必然存在一个最大延时。JESD204B接口是通过弹性缓冲区(elastic buffer)实现接收数据同步输出的,其纠正偏斜的范围是一个LMFC(具体可参考我之前的博文),所以该延时就存在一个最大值,即T + LMFC。
关于上图还有一个地方需要说明。上图画出了多个SYSREF脉冲,而实际应用中可以只发送一个SYSREF脉冲。两者并不矛盾,上图画出多个脉冲的主要目的是为了说明时序关系,实际上后续SYSREF脉冲即使不存在,JESD204接口也可以正常工作。比如,ADC侧在SYSREF之后的第一个LMFC后,如果发现FPGA侧释放了SYNC~,就会开始发送ILA。ILA被FPGA检测到后,如果在下一个LMFC时每一个弹性缓冲区都存在有效数据,那么就开始输出采样数据。可以说上述流程在SYSREF之后就是数据内容驱动的了,不需要后续的SYSREF脉冲。
2.1 计算延时所需的LMFC周期数
本例中只调整FPGA侧的参数。
上一节给出了传输延时的取值范围,传输延时可以用TTXOUT+TWIRE+TRXIN表示,所以有以下不等式。
min( TTXOUT+TWIRE+TRXIN ) > T
max( TTXOUT+TWIRE+TRXIN ) < T + LMFC
上述不等式等同于以下不等式。
max (TTXOUT + TWIRE + TRXIN) < ((N+1)*LMFC - TTXLMFC + TRXLMFC) 式(1)
min (TTXOUT + TWIRE + TRXIN) > (N*LMFC - TTXLMFC + TRXLMFC) 式(2)
通过上述不等式可以找出合适的N值。如果找不到合适的N,或者有满足要求的N,但是时序裕量太小,则可以通过改变TTXLMFC或者TRXLMFC进行调整。
2.2 根据N值计算实际延时
N计算公式中的TWIRE可以认为是0,在本例中还将TTXOUT看作一个固定值(但是可以存在不确定度)。下图是pg066给出的示例中ADC和FPGA的部分参数,这些参数在使用不同的ADC和FPGA时都可能发生变化。
下面是找N值的过程。
最终N值为2,而从模拟信号输入到FPGA侧数据输出的延时可以通过下式表示。
不知道大家注意没有,pg066中给出的参数值没有说明单位。这应该是官方的疏忽,在后面描述transmitter的章节给出了其单位是BYTE Clock的周期。之所以强调这个,是因为后面优化时序的时候会用到。
2.3 延时参数优化
上一节计算出的最小延时的边界裕量只有1个BYTE Clock周期。我们在计算延时参数的时候是忽略了一些影响小的因素的,比如TWIRE,比如PVT等。当我们接口的裕量非常小时,比如上例中的1个BYTE,那么由于诸多其他因素的影响导致边界发生小的变化时,实际延时就可能超出允许范围。所以我们需要对上例进行优化。Xilinx FPGA提供了对TTXLMFC延时的功能,可以对边界进行优化。
pg066给的例子中通过配置SYSREF Handling寄存器,将TTXLMFC延时了5,以下是计算过程。
可以看到,边界裕量变得很大,接口的稳定性大大增强。上述过程需要注意的关键是:SYSREF Handling寄存器延时了5,但是在计算的时候使用的值是5*4。这是因为SYSREF Handling寄存器延时的单位是core clock周期。core clock时钟的频率是lane rate的1/40,而整个延时参数计算过程所使用的是基于BYTE clock的时钟周期。BYTE clock的频率是lane rate的1/10,所以当TTXLMFC延时配置为1的时候,计算时都应该乘以4。
以上就是我再次阅读pg066的总结,有待下次使用JESD204B SUBCLASS1时进行验证。
JESD204B SUBCLASS1确定性延时参数的计算相关推荐
- vlc播放网络流延时参数设置
vlc-android播放网络视频流时网络延时参数设置: options.add(":file-caching=1500"); options.add(":network ...
- Lesson 16.1016.1116.1216.13 卷积层的参数量计算,1x1卷积核分组卷积与深度可分离卷积全连接层 nn.Sequential全局平均池化,NiN网络复现
二 架构对参数量/计算量的影响 在自建架构的时候,除了模型效果之外,我们还需要关注模型整体的计算效率.深度学习模型天生就需要大量数据进行训练,因此每次训练中的参数量和计算量就格外关键,因此在设计卷积网 ...
- matlab求第二类曲面积分,第二型曲面积分的参数形式计算
给出"第二型曲面积分"的一种计算方法,即在曲面的参数形式下直接将曲面积分转化成参数区域上的一个二重积分,由此可使"第二型曲面积分"的计算问题得到简化.此法是对菲 ...
- 坐标转换程序:(1)四参数和七参数的计算
个人想分享一些在大学中编写的一些程序,在进行坐标转换的时候,我们经常涉及到四参数与七参数的计算,在文章中,采用C#语言来进行编程,方便计算. (1)四参数的计算: 在转换范围较小内不同的平面坐标转换通 ...
- S.M.A.R.T. 参数(smartctl)计算硬盘精确健康值
参考:Acronis Drive Monitor: Disk Health Calculation 文章目录 1.背景 2.smartctl -a /dev/sda 3.计算健康值 3.1 关键参数 ...
- 请编写一个函数,接收两颗星星赤经和赤纬的角度作为参数,计算并返回这两颗星星所对弧的角度。
[问题描述] 给定两颗星星的赤经和赤纬的角度 (a1, d1)和(a2, d2) 它们所对弧的角度计算公式为: 赤经a1和a2是 -180o~ 180o 之间的角,a=a2-a1 赤纬d1和d2是 - ...
- KU040 slice内 路径分布 和 延时参数
每个slice中,lut 的出口 O6 以最短路径可以连接到同一个slice其他的 lut 的 I0-l5 入口的情况, 以下为 lut O5 的相邻情况 下面是 8个reg (AFF-HFF)通过最 ...
- 期权二叉树定价参数的计算
期权二叉树定价参数的计算 参考资料: <期权.期货及其他衍生产品>,John C. Hull 著,王勇.索吾林译 .
- 网络计划--时间参数的计算和优化
根据网络图的基本概念和原则绘制出网络图之后,我们可以计算网络图中有关的时间参数,主要目的是找出关键路线,为网络计划的优化.调整和执行提供明确的时间概念.如下图中从始点①到终点⑧共有4条路线,可以分别计 ...
最新文章
- js面向对象程序设置——创建对象
- linux关闭dns迭代查询,DNS查询和响应过程递归和迭代的使用
- wxWidgets:wxHTML 概述
- mysql书写规则_每天10分钟带你学会MySQL(二)SQL语句的基本书写规则
- CentOS 7操作系统之Docker安装
- db2存储过程手动执行没有问题_轻松解决DB2创建存储过程时遇到的错误
- 从没见过干净图片,英伟达AI就学会了去噪大法 | ICML论文
- c语言程序 数字时钟的设计,数字时钟C语言设计
- java mysql查询试题_2016年Java认证考试题
- vector容器中是否应该放指针?解决方法
- android开发之局域网内屏幕共享+提取文字01:截屏
- python串口调试助手_python 串口调试工具源码
- CocosCreator3D之相机跟随与旋转
- Qt QLineEdit自带右键菜单的翻译
- android-第一行代码-第六章数据储存——持久化技术 含MMKV和Room新知识点(温故而知新)学习记录
- python数据分析模型建立_一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码)...
- 使用css动画实现loding效果
- 1+6t刷个lineage OS 20(Android13)
- javaweb商城实现在线支付
- mysql 按月 季度 统计数据
热门文章
- Could not extract response: no suitable HttpMessageConverter found for response type [class com.exam
- 【Trailing spaces not allowed no-trailing-spaces】报错
- element el-input设置只能输入数字 而且限制最大值
- Android Tel 拨打电话及来电流程分析
- errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.
- 阿里云进入Iot Studio
- 招银网络java面经
- 图像处理评价指标之模糊度(更新中)
- 操作系统简述复习笔记
- python名片管理系统2.0_python名片管理系统代码