JESD204B协议基础知识

article/2025/10/17 21:33:24

 

目录

 

1.JESD204B优势

2. 关键变量

3.IP核应用

4.同步

4.1 代码组同步 

4.2 初始化多帧序列

4.3 数据传输


1.JESD204B优势

    JESD204是基于SERDES的串行接口标准,主要用于数模转换器和逻辑器件之间的数据传输,最早版本的是JESD204A,现在是JESD204B subclass0,subclass1,subclass2。区别主要在于对齐同步和链路间固定时差的测量。目前市场上比较多的数模转换器接口是JESD204B  subclass1。其最大传输速率可达12.5Gbps,支持多链路和多器件的同步以及固定时差的测量。

2. 关键变量

M converters/device , 转换器(AD/DA)数量

Llanes/device(link) 通道数量

Foctets/frame (per lane) 每帧的8位字节数

K:frames/multiframe 每个多帧的帧数

Nconverter resolution 转换器分辨率

N'total bits/sample 4的倍数,如果不够4的倍数,用控制和伪数据位来填充 N‘= N+控制和伪数据位。

Ssample/converter/frame cycle 每个转换器每帧发送的样本数。当S=1时,帧时钟=采样时钟

CScontrol bits / sample

CF:control words /frame cycle /device  

其中  F = (M x S x N’)/(8 x L) 

         K 的范围是 1-32,具体设置的值,根据对端AD芯片同等设计

          serial line rate = core clock * 40

3.IP核应用

1)

1: 标识是发送模块还是接受模块

2:LMFC buffer  size ,最小值为F * K。

3: 每条链路的通道个数

4:AXI4的时钟,这里的AXI 4 用来重配 内部参数。我看平时操作的时候也不用,平时也就界面上配置的东西就够用了,不用重配置或者额外配置其他参数

5:该选项可以选择sysref信号被core clk的上升沿或下降沿采样,用于jesd204b子类1的确定性延迟功能。一般来说,外界提供的core clock和sysref是同源且上升沿对齐信号,因此在FPGA端最好选择在时钟下降沿采样sysref比较精确,

6:用户决定IP核的core clk是否由glbclk(p/n)管脚输入。当refclk(p/n)频率不等于core clk时,必须外部输入core clk。这个例子中,由外部时钟芯片产生122.88MHZ的时钟给core clock,所以,这里不勾选

2) 共享逻辑选择

 

3) 

1:该选项用来配置LMFC计数器是否在每个SYSREF脉冲到来时都复位,或者只在SYSREF的第一个有效脉冲到来时复位,忽略以后的SYSREF信号。这里选择OFF即可。SYSREF 基本上都和device  clock同源,但是频率比device  clock低很多,这样才能保证被正常采样到。比如在我的设计中,device  clock = 122.88MHZ ,SYSREF CLOCK  = 0.6144mhz.

2:扰码,根据AD那边的配置来,有利有弊,需要权衡

3: 每帧包含的8bit个数,根据AD配置来。

4:一个多帧包含的帧个数,范围1-32。根据AD配置来。

5:该选项用来选择每次链路重新同步时是否需要sysref信号,我们最好关闭它,默认链路同步时不需要该信号,只在SYNC拉高后的下一个LMFC上升沿同步就可以了,这样就方便许多。

4)

1:这里根据芯片型号来,不用管

2:速度,线速度 = core clock * 40

3: 参考时钟 就等于core  clock ,也等于device clock 。

4: 这里根据设计要求,是用CPLL时钟还是QPLL时钟。

5:DRP clock  对于七系列器件,DRP clk和AXI4-Lite clock为同一时钟,这里也只能是122.88MHZ

4.同步

4.1 代码组同步 

CGS:代码组同步(code group sync)当发送端检测到SYNC 信号为低电平时启动发送8B10B中的K28.5码,本数据段不进行扰码和字节替换操作,接收端检测到最少4个K28.5后可释放SYNC信号。

注意:

1)  串行数据传输没有接口时钟,因此RX必须将其数位及字边界与TX串行输出对齐。RX向TX发送SYNC请求信号,让其通道发送一个已知的重复比特序列K28.5。RX将移动每个通道上的比特数据,直到找到4个连续的K28.5字符为止。此时,不仅将知道比特及字边界,而且实现了CGS。

2) RX 的SYNC输出必须与RX的帧时钟同步,同时要求TX的帧时钟与SYNC同步。

扩展:特殊字符 16 进制表示。K28.5 = 16'hBC

4.2 初始化多帧序列

ILA:初始化多帧序列(initial lane alignment)该阶段发送连续的4个初始化多帧(多帧是由K个帧组成,字节数为K*F),本段不进行扰码和字节替换。

1) 在JESD204B中,发送模块捕捉到SYNC信号的变换,在下一个本地多帧LMFC边界上启动ILAS。

2) ILAS主要对齐链路的所有通道,验证链路参数,以及确定帧和多帧边界在接收器的输入数据中的位置。

3) ILAS由4个多帧组成。其中,/K/=/K28.5/字符用于代码组同步;/R/=/K28.0/标志着初始化多帧的开始;/A/=/K28.3/字符标志着初始化多帧的结束;/Q/=/K28.4/字符用于指示接收端用户所配置的信息即将开始。

     每个多帧最后一个字符是多帧对齐字符/A,第一,三,四个多帧以/R字符开始,以/A字符结束。接收器以个通道的最后一个字符/A对齐接收器内各通道内各多帧的末尾。ILA 初始化多帧以K28.0开始以K28.3结束,其中第二个多帧的第二字节是K28.4关键字用来指示当前多帧在紧跟着K28.4的后续14个字节是参数配置信息。

4) 这些特定的控制字符只用于初始化通路对齐序列中,而不会在数据传输的任何其他阶段出现。CGS和ILAS阶段不加扰。

5) RX模块中的FIFIO吸收信道偏移。

 

4.3 数据传输

DATA:数据传输阶段(data transmission),该阶段进行数据传输,规范中要求该阶段的数据需要进行字节替换(扰码和不扰码的字节替换规则不同),用户可以根据需求确定是否需要对数据进行扰码操作。没有控制字符,获取链路全带宽。利用字符替换来监视数据同步,多帧计数器LMFC.

字节替换规则:

1)没有使能扰码情况下的字节替换规则

2)使能扰码情况下的字节替换规则

JESD204B规定的扰码、解扰码生成多项式

5. 时钟要求

下图是典型的JESD204B系统的系统连接,device clock 是器件工作的主时钟,一般在数模转换器里为其采样时钟或整数倍频的时钟,其协议本身的帧和多帧时钟也是基于Device clock。SYSREF是用于指示不同转换器或者逻辑device clock 的沿,如下图所示,device clock和SYSREF必须满足的时序关系。SYSREF的第一个上升沿要非常容易的被device clock 捕捉到。

SYSREF可以是周期信号,或者脉冲的周期信号,也可以是单脉冲信号。只有在器件请求同步时,才产生SYSREF信号,高电平有效。一般是通过DEVICE  CLOCK 的上升沿抓取,单也可以通过下降沿抓取。对于周期的SYSREF来说,其频率必须是LMFC的整数倍

SYSREF = LMFC *n(n为整数)。单脉冲模式,可以不按照LMFC整数倍计算

6. 完整的框架

 

从IP 核 的界面来看, 接收 jesd204 b的输入是GTX模块的输出,而不是AD芯片直接输出的差分对,所以,在204B接口前面,还需要添加GTX模块。GTX 模块的参数配置,和204b AD 芯片配套,相同配置即可。

接收 jesd204 b的输出是64bit的数据,这里是经过多bit组合的,具体差分方式 IP核中有说明,也可以直接参照AD 芯片的数据组合方式差分成最终数据


http://chatgpt.dhexx.cn/article/Ultck2Lv.shtml

相关文章

JESD204B 协议解析和参数理解

目录 1. 概述 2. 时钟 3. 同步协议 4. 参数理解 1. 概述 在JESD204接口出现以前,数模转换器的数字接口绝大多数是差分LVDS的接口,这就造成了布板的困难,当PCB的密度很大的时候就需要增加板层从而造成制版的成本。但是JESD204需要…

JESD204B简介(一)-------理论概述篇

JESD204B是一种新型的基于高速SERDES的ADC/DAC数据传输接口。JESD204和JESD204B修订版数据转换器串行接口标准由JEDEC委员会制定,旨在标准化并减少高速数据转换器与FPGA(现场可编程门阵列)等其它器件之间的数据输入/输出数目。更少的互连可简…

JESD204B简介

1、SERDES技术 了解JESD204B之前需要先了解SERDES(SERialization/DESerialization)技术,也就是串化和解串,在发送端将多位并行的数据转换为1bit的串行数据,在接收端将串行数据恢复成原始的并行数据。如下图为基于FPGA的…

高速接口----JESD 204B(1)

前言 最近两周在做一些关于高速ADC的东西,也算是接触到了一些新的东西,做技术的,就是要不断地学习新的东西才可以啊。调试的平台是zcu102daq3。daq3是ADI推出的一个高速AD和DA的评估板。上面主要的芯片是ADC芯片AD9680,DAC芯片AD…

gzip chunked

gzip chunked --比天空间-- - mod_gzip和chunked http://www.httpwatch.com/httpgallery/chunked/ When an HTTP client is reading a response message from a server it needs to know when it has reached the end of the message. This is particularly important with per…

http协议里的chunked编码与测试

如果有写过http下载的人,或多或少了解一点chunked编码的传输方式。例如笔者最初不知道这个http传输方式,以前能行的代码有一天就突然不行了,抓包才发现数据异样。 chunked编码 分块传输编码(Chunked transfer encoding&#xff09…

c客户端http post chunked协议上传到服务器demo源码

下面例子中 :c 客户端采用 chunked协议上传到服务器,java 服务器返回的不是chunked 协议 chunked 编码协议格式参考 https://blog.csdn.net/wy5761/article/details/17568851 c 客户端 chunked 完整内容是 Hello, world,how are you 。分了2块上传 Hel…

HTTP CHUNKED

服务端给浏览器发送报文时,必须告诉浏览器报文的大小,这样浏览器可以根据报文大小来判断报文的完整性以及在长连接中确定报文的截尾。但是很多服务器的报文是动态创建的,在发送之前是无法确定其大小的。服务器只有等待内容全部创建后&#xf…

chunked java_HTTP协议的chunked编码

一般情况HTTP的Header包含Content-Length域来指明报文体的长度。如: 有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或者后台需要复杂的逻辑才能全部处理页面的请求,这时用需要实时生成消息长度,服务器…

HTML中chunked解码和gzip解压

chunked编码 chunked编码的的好处 当访问的时动态页面时,服务器则无法预知内容的大小,因此需要一遍产生数据,一边发送数据,将数据分块发送(服务器通过响应头’Transfer-Encoding: chunked’告诉浏览器它将使用chunked编码传输)。…

Android:rxjava简单实现原理(map/flatmap操作符)

rxjava 装饰者模式1、背景2、定义3、特征4、装饰者模式demo rxjava装饰者模式1、rxjava中转换操作符map的简单实现2、rxjava中转换操作符flatmap的简单实现 装饰者模式 1、背景 假设奶茶店有两种茶,果茶(fruit tea)和奶茶(milky tea)&#…

java dataset flatmap_Spark中map和flatMap的區別詳解

本文介紹了Spark中map(func)和flatMap(func)這兩個函數的區別及具體使用。 函數原型 1.map(func) 將原數據的每個元素傳給函數func進行格式化,返回一個新的分佈式數據集。(原文:Return a new distributed dataset formed by passing each element of the…

Spark中flatMap的操作

Test 1: package test.wyh.wordcountimport org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}object TestFlatMap {def main(args: Array[String]): Unit {//建立Spark连接val sparkConf new SparkConf().setMaster("local&quo…

flatMap底层实现

上篇:Transformation的map使用 第一种方式重写flatMap方法实现 实现需求:根据字符串在nc -lk 8888的窗口命令下输入的数据,在控制台打印输出发现:在同一行数据输入的单词字符串自动换行,按每个单词独立换行并且若输入…

java7 flatmap_flink学习之七-map、fliter、flatmap

看完了Flink的datasource、sink,也就把一头一尾给看完了,从数据流入到数据流出,缺少了中间的处理环节。 而flink的大头恰恰是只在这个中间环节,如下图: source-transform-sink-update.png 中间的处理环节比较复杂&…

Stream之flatMap

一、flatMap简介 flatMap:将小Stream转换为大Stream 二、示例转换要求 目标:将如下对象中的分类category提取出来,去重。其中如"哲学,爱情",需要解析为两个分类,["哲学","爱情"] [{"age":33,"…

flatmap使用

使用场景 适用于嵌套list数据结构&#xff0c;想把内部的list数据合并成一个list.。 举例如下&#xff1a; public class Test {public static void main(String[] args) {List<List<String>> list new ArrayList<>();List<String> list1 new Arr…

Java8中map与flatMap用法

目录 1 概述 2 map与flatMap 3 常用写法 1 概述 Java8中一些新特性在平时工作中经常会用到&#xff0c;但有时候总感觉不是很熟练&#xff0c;今天特意将这个Java8中的映射记录一下。 2 map与flatMap map---对集合中的元素逐个进行函数操作映射成另外一个 flatMap---接收一…

如何使用flatMap

1. 什么情况下用到flatMap 当使用map&#xff08;&#xff09;操作时&#xff0c;不是返回一个值&#xff0c;而是返回一个集合或者一个数组的时候&#xff0c;这时候就可以使用flatMap解决这个问题。举个例子&#xff0c;你有一个列表 [21,23,42]&#xff0c;然后你调用getPr…

【JavaScript中数组的flatMap方法的详细介绍】

在我们平时对数组进行操作的时候&#xff0c;通常map、forEach和filter方法比较常用。而flatMap方法用得相对少一些。当你掌握了flatMap方法的使用之后&#xff0c;我相信你一定会喜欢上它的&#xff01; 下面我们会通过以下三个问题展开对flatMap方法的讲解&#xff1a; 1. f…