[⑦ADRV902x]: JESD204学习笔记

前言

JESD204B/C基于SERDES(SERialization/DESerialization)技术,也就是串化和解串,在发送端将多位并行的数据转换为1 bit的串行数据,在接收端将串行数据恢复成原始的并行数据。
在JESD204接口出现以前,数模转换器的数字接口绝大多数是差分LVDS的接口,这就造成了布板的困难,当PCB的密度很大的时候就需要增加板层从而造成印制板的成本上升。 而JESD204接口是串行接口,能有效减少数据输出的差分对,能最大限度的简化Layout。 因此JESD204是高密度板不可或缺的接口。但因其需要进行严格的同步和以及时延的测量, 接口的逻辑会比LVDS接口复杂很多。

ADRV902x系列射频芯片支持JESD204B/C,用来在transceiver和baseband processor(FPGA)之间传输ADC和DAC的samples数据,最高serial lane rate可达24.33 Gbps。

逻辑分层

JESD204是一种高速的串行接口协议,它规定了收发双方的同步机制,告警机制及其告警后处理机制。 任何 一种复杂的接口协议都将遵从逻辑架构分层来进行描述。 JESD204也是如此,遵从如下的逻辑分层:

  • Application Layer:通过应用层可以实现特殊用户配置,接收端和发送端必须以相同方式进行配置,以便正确传输和解读数据

  • Transport Layer:传输层的功能是将ADC/DAC采集到的samples数据映射到非扰码的8-bit数据
    映射模式:
    1 . a single converter to a single-lane link
    2 . multiple converters in the same device to a single-lane link
    3 . a single converter to a multi-lane link
    4 . multiple converters in the same device to a multi-lane link
    上述的四种模式是两个对象(converter,link)的几种组合,一个是数据转换器(converter)的个数,另外一个是对应的link的个数。 数据转换器就是对应的I/Q的数据组,例如无线系统中都是采用complex数据,有16-bit 的I和16-bit的Q,那么对应的转换器个数就是2,就类似I数据需要一个转换器来完成,Q数据需要另一个转换器来完成(注意这里的转换器的个数和我们通常所说的物理的ADC/DAC个数有区别,可以抽象为一个吞吐数据器件)。 通常情况下转换器的个数都是多个(多通道),这些转换器的数据可以一起来建链称之为single-lane link,也可以分组建链称之为multi-lane link。
    例:一个ADC可以映射到一个单通道链路,或者映射到一个多通道链路,采样速率决定是否使用多个通道,以便符合对通道速率的限制。

  • Scrambling Layer:按照实际的运用可以选择对8-bit数据数据加扰或者不加扰,加扰的主要目的是去除数据相关性。

  • Data Link Layer:链接层在再整个JESD204中占有及其重要核心的地位。 它包含了 8-bit/10-bit JESD204B的编码过程 (64-bit/66-bit JESD204C), Tx和 Rx link的建立,同步和维护。
    8B/10B编码的状态机和码表如下图所示。 编码的目的就是去除数据中的DC-unbalance(CML电平中会增加直流偏置,利用8B/10B编码,可以实现平均而言包含等量1和0的平衡序列),8-bit变为10-bit。 例如我们通常所说的 K28.5, 8-bit的时候为10111100,编码后变成 0011111010。
    在这里插入图片描述

  • Physical Layer:物理层包含了完成高速并/串转换的SDRDES模块, 时钟及时钟数据恢复模块(CDR) 。物理层也规定了接口的物理电器特性。

下图为ADRV902x中JESD204发射/接收逻辑分层框图:

下图显示了从发射器件(ADC)到接收器件(FPGA)的简化JESD204B链路,数据从一个ADC经由一个通道传输:

在这里插入图片描述

JESD204链路建立

JESD204链路建立包括三个阶段(CGS,ILAS和用户数据),下面简单介绍下:

  • 代码组同步(Code Group Synchronization)
    1 . 接收器通过拉低SYNC~引脚,发出一个同步请求。
    2 . 发送器发送未加扰的K28.5符号(标准中称为K字符)。
    3 . 当接收器收到至少4个无错误的连续K28.5符号时同步,然后将SYNC~引脚拉高,CGS阶段结束,ILAS阶段开始,否则同步将失败,链路留在CGS阶段。
    在这里插入图片描述
  • 初始通道对齐序列(Initial Lane Alignment Sequence):ILAS的主要作用是对齐链路的所有通道,验证链路参数,以及确定帧和多帧边界在接收器的输入数据流中的位置。ILAS由4个或更多多帧组成,无论启用加扰链路参数与否,ILAS始终是无加扰传输。

    Multi-frame 1:以R字符K28.0开始,以A字符K28.3结束。
    Multi-frame 2:以R字符K28.0开始,后接Q字符K28.4,然后是14个链路的配置参数,最后以A字符K28.3结束。
    Multi-frame 3:与Multi-frame 1相同。
    Multi-frame 4:与Multi-frame 1相同。
  • 用户数据:CGS和ILAS阶段完成后,发送器开始送出ADC数据。在这一阶段,用户数据根据链路参数的定义,以流形式从发送器传输到接收器。
    在这里插入图片描述

Transceiver接收端

下面是ADRV902x transceiver接收端,SERDES framer(成帧器)的框图:

3个framer,最多4 lanes。

下面是JESD204的参数介绍,Desscription中参数的大小是针对ADRV902x的,意义具有通用性:

F:number of octets per frame

在ADRV902x中,为了让JESD204配置有效,lane rate(seial bit rate for one lane)必须在 3684.4 Mbps 到 16220.16 Mbps之间。lane rate的计算公式如下:

每个framer可以接收本地converter的samples数据然后将它们映射到high speed serial lanes. 映射关系取决于JESD204的配置,特别是lane的数量,converter的数量和samples per converter。
下面是AD给出的M = 2,L = 1,S =1的一个例子:

其中关于NG跟word的概念可以参考如下:
NGs (nibble groups):contain N’ bits
words:words padded with tail bits

在这里插入图片描述

Transceiver发射端

下面是ADRV902x transceiver发射端,SERDES deframer(解帧器)的框图:

2个deframer,最多4 lanes。
deframer接收来自deserializer的8B10B/64B66B encoded data,然后解码成converter的samples数据。下面是AD给出的M = 4,L = 2,S =1的一个例子:

ADRV902x JESD配置样例

下面是AD给出的JESD204B的配置样例,UseCase 13 for non-link sharing (non-link sharing的意思就是ORx和Rx的samples数据不在一个framer里)。其中使用了2个framer(framer0,framer1)和一个deframer(deframer0)。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/258820.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32串口编程实例-实现数据的收发功能

大家好,今天给大家介绍stm32串口编程实例,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 串口是USART(通用同步/异步收发器)的俗称。 实际上,串行总线并不…

git常用命令指南

目录 一、基本命令 1、创建分支 2、切换分支 3、合并分支 4、初始化空git仓库 二、文件操作 1、创建文件 2、添加多个文件 3、查看项目的当前状态 4、修改文件 5、删除文件 6、提交项目 三、实际操作 1、创建目录 2、进入新目录 3、初始化空git仓库 4、创建文…

C 语言 变量

变量初始值 全局变量:初始值是 0 局部变量:初始值是 随机的 类型限定符 通常不需要显式使用 register 关键字来优化变量的存储和访问。 关键字 _Complex和_Imaginary分别用于表示复数和虚数(二者皆是数学概念) 变量的声明和定义 c…

计算机方向的一些重要缩写和简介

参考: 深度学习四大类网络模型 干货|机器学习超全综述! 机器学习ML、卷积神经网络CNN、循环神经网络RNN、马尔可夫蒙特卡罗MCMC、生成对抗网络GAN、图神经网络GNN——人工智能经典算法 MLP(Multi Layer Perseption)用在神经网络中…

LeetCode Hot100 78.子集

题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 方法:灵神 选 or 不选 class Solution {private final List&…

c语言实例:计算并输出一个整数数组的平均值

大家好,今天给大家介绍一个c语言实例:计算并输出一个整数数组的平均值,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 以下是一个使用C语言实现的实例&am…

Altenergy电力系统控制软件 RCE漏洞复现(CVE-2023-28343)

0x01 产品简介 Altenergy Power System Control Software是Altenergy Power System推出的一款微型逆变器控制软件。 0x02 漏洞概述 Altenergy Power System Control Software C1.2.5版本存在安全漏洞,该系统/set_timezone存在操作系统命令注入漏洞,攻…

LeetCode Hot100 131.分割回文串

题目: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 方法:灵神-子集型回溯 假设每对相邻字符之间有个逗号,那么就看…

C++异常剖析

什么是异常? 在程序运行的过程中,我们不可能保证我们的程序百分百不出现异常和错误,那么出现异常时该怎么报错,让我们知道是哪个地方错误了呢? C中就提供了异常处理的机制。 一、异常处理的关键字 (1&#…

Matlab simulink PLL学习笔记

本文学习内容:【官方】2022小迈步之 MATLAB助力芯片设计系列(一):电路仿真与模数混合设计基础_哔哩哔哩_bilibili 时域模型 testbench搭建 菜单栏点击simulink 创建空白模型 点击库浏览器 在PLL里面选择一种架构拖拽到画布。 如…

Hibernate 框架 (2023年架构师下半年案例分析题)

Hibernate 是一种对象和关系之间映射的框架,是 Java 应用和关系数据库之间的桥梁。它可以将数据库资源映射为一个或者多个 POJO。将面向数据库资源的各种业务操作以 POLO 的属性和方法的形式实现,使人们摆脱烦琐的 JDBC 代码,将精力更多地集中…

P1035 [NOIP2002 普及组] 级数求和题解

题目 已知&#xff1a;.显然对于任意一个整数 k&#xff0c;当 n 足够大的时候,Sn​>k。 现给出一个整数k&#xff0c;要求计算出一个最小的n&#xff0c;使得Sn​>k。 输入输出样例 输入 1 输出 2 代码 #include<iostream> using namespace std; int mai…