JESD204B
jesd204b是一种基于高速SERDES的ADC/DAC数据传输接口。详细介绍可以参考:
JESD204B详细介绍
初学的时候有好多问题没理清楚,现在记录一下:
1、jesd204b分为几个子类,其中subclass 1 支持确定性时延,是最为常用的一个。
由于AD/DA一般有多个lane来传输数据,但是每条lane上的时延可能不一样,在subclass 1 模式下,在外部参考时钟sysref的作用下,可以缓存快的一路,在确定所有路径同步后,再进行数据传输。
2、jesd204b包括jesd204b core和jesd204b phy。在vivado 的jesd204 ip核中,如果选择了include share logic in core,则只需要输入tx_data,输出txp和txn;输出rx_data,输入rxp和rxn即可,中间的物理层不管。如果选择了include share logic in example ,则必须再添加一个jesd204b phy ip核。
3、jesd204b IP核接口较多,可以直接修改vivado自带的例程来适应自身项目。
4、jesd204b 的配置主要分为两个部分,一是AD/DA芯片的配置,一般通过SPI配置完成。二是jesd204b ip核接口的配置,包括L、M、F等,这个可以通过GUI直接配置,也可以通过s_axi修改物理层的寄存器值来设置,一般就用GUI设置。
参考博客:https://blog.csdn.net/qq_33675986/article/details/114443928

JESD时钟一般由外部的时钟芯片提供给ADC和FPGA1:
1、提供给ADC的时钟
提供给ADC的有两个时钟:采样时钟DCLK和参考时钟SYSREF。
采样时钟DCLK不管ADC的输出是不是JESD接口,都要用,是ADC的主时钟;参考时钟SYSREF是JESD接口特有的时钟,用于数据同步。
2、提供给FPGA的时钟
提供给FPGA的时钟有三个:GTBank的参考时钟、JESD的Device clock和JESD的参考时钟SYSREF。
a.GTBank的参考时钟是用于GTBank的数据恢复,JESD IP核的参考时钟;
b.JESD的Device clock是用于接收JESD链路数据的接收端设备时钟;
c.参考时钟SYSREF是JESD接口特有的时钟,用于数据同步。
这些时钟的关系,如下所示:
1.DCLK由ADC的采样率决定;
2.FPGA端Device clock由ADC输出JESD单lane的线速率lane_rate决定,Device clock=lane_rate/40
3.给FPGA和ADC的参考时钟SYSREF频率相同,要同源,频率由多帧时钟决定(见注释);
4.GTBank的参考时钟根据FPGA内IP核的设置决定,与其他几个时钟不相关。
注释:多帧时钟F_lmfc是JESD协议定义的时钟,不需要时钟芯片输出。多帧时钟F_lmfc的具体频率由ADC端的LMKFS等配置信息决定
首先根据ADC的工作模式、采样率、LMKFS等信息计算JESD单lane的线速率lane_rate。
假设ADC的采样率为250MSps,JESD的关键参数配置为:M=2, L=2, F=2, S=1, K=32.
则各个时钟计算入下图所示:

按照上述时钟进行配置,然后将FPGA内部JESD IP核输出的SYNC信号接到ADC端,即可完成JESD的链接。
jesd204B是一种高速串行接口,最高串行数据速率可达12.5Gbps。
其标准是一种分层规范,主要包括以下几层:
1、应用层
2、传输层
在这层完成链路参数的配置,并根据配置完成数据的组包和解包。
主要参数为LMFS。
| L | 数据传输的通道(lane)数量 |
|---|---|
| M | 每个器件的转换数(理解为每个AD或者DA的转换通道数) |
| F | 每一帧的字节数(octets) |
| K | 多帧情况下的帧数 |
| S | 每一帧所传输的采样数 |
3、数据链路层
主要完成链路建立和数据编码。
链路建立分为三个阶段:
①代码组同步(CGS):
检测到多个连续的K28.5字符,跳入下一阶段
②初始通道对齐序列(ILAS):
对齐链路的所有通道,验证链路参数,以及确定帧和多帧边界在接收器的输入数据流中的位置。
通过传输几个多帧来对齐,对齐字符包括A、 R 、Q。
③用户数据
传输数据
4、物理层
在物理层中,数据进行串行化,8B/10B编码数据以线路速率发送和接收,实际为serdes结构。
8B/10B编码:保证直流平衡、方便错误检查、有利于提取时钟
扰码:降低电磁噪声、有利于提取时钟、避免出现连0/1
同步详解:
subclass1的三个阶段
1) 代码组同步(CGS):
RX将SYNC~引脚拉低,发出一个同步请求。
TX从下一个符号开始,发送未加扰的/K28.5/符号(每个符号10位)。
当R X接收到至少4个无错误的连续/K28.5/符号时,R X同步,然后将SYNC~引脚拉高。
R X必须接收到至少4个无错误8B/10B字符,否则同步将失败,链路留在CGS阶段。
C G S阶段结束,I L A S阶段开始。
注意:
串行数据传输没有接口时钟,因此RX必须将其数位及字边界与 TX 串行输出对齐。RX 向 TX 发送 ~SYNC 请求信号,让其通过所有信道发送一个已知的重复比特序列K28.5。RX 将移动每个信道上的比特数据,直到找到 4 个连续的 K28.5 字符为止。此时,它不仅将知道比特及字边界,而且已经实现了 CGS。
RXSYNC的输出必须与RX的帧时钟同步,同时要求TX的帧时钟与SYNC同步(可通过~SYNC复位TX的帧时钟计数器来实现)。
不能使用交流耦合。(with the exception that SYNC~ should never be ACcoupled)。
2) 初始通道同步(ILAS):
1.在JESD204B中,发送模块捕捉到SYNC~信号的变换,在下一个本地多帧(LMFC)边界上启动ILAS。
2.ILAS主要对齐链路的所有通道,验证链路参数,以及确定帧和多帧边界在接收器的输入数据流中的位置。
3.ILAS由4个多帧组成。每个多帧最后一个字符是多帧对齐字符/A,第一,三,四个多帧以/R字符开始,以/A字符结束。接收器以各通道的最后一个字符/A对齐接收器内各通道内各多帧的末尾。
4.这些特定的控制字符只用于初始通路对齐序列中,而不用在数据传输的任何其他阶段。CGS和ILAS阶段不加扰。
5.RX模块中的FIFO吸收信道偏移。
3) 数据传输阶段:没有控制字符,获取链路全带宽。利用字符替换来监视数据同步,多帧计数器LMFC。
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk=Var(yt)Cov(yt,yt−k)其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是