当前位置: 首页 > article >正文

AD9371 官方例程HDL详解之JESD204B RX侧格式配置及各层主要功能

AD9371 系列快速入口

AD9371+ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发

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

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

Generic JESD204B block designs

文章目录

  • 一、JESD204B传输层给应用层数据的格式配置
  • 二、JESD204B链路数据配置
  • 三、RX Byte and Word Alignment(GTH)
  • 四、RX 8B/10B Decoder(GTH)
  • 五、JESD204b 各层主要功能


一、JESD204B传输层给应用层数据的格式配置

可知 AD9371 官方 demo 2T2R 中对于RX, M=4, L=2, IQ 采样率= LINK rate ,JESD204B 应用层 如何 接收传输层数据 ?
在这里插入图片描述

在物理层GTH收发器 配置为32bit模式,链路层每个LINK CLK 需要给物理层每个 LANE 32bit数据,对于RX和RX_OS 都是各自分配2个 lane ,即各自 64bit 数据

在这里插入图片描述

每个 LANE需要 32bit数据,下述约束必须满足
L × 32 = M × N P × S P C L \times 32=M \times N P \times S P C L×32=M×NP×SPC S P C = L ∗ 32 / ( M ∗ N P ) \mathrm{SPC}=\mathrm{L}^{*} 32 /(\mathrm{M} * \mathrm{NP}) SPC=L32/(MNP)2T2R demo 中 JESD RX参数配置为 L=2; M=4; S=1; F=4; NP=16; SPC=1

每个转换器提供 SPC=1个 16Bbit 采样数据, F=4 ,4* 8=32bit ,即每帧每个lane 32bit

1T1R demo 中 JESD RX参数配置为 L=2; M=2; S=1; F=2; NP=16; SPC=2类似 TX 2T2R

对于RX_OS , JESD 参数配置为 L=2; M=2; S=1; F=2; NP=16; SPC=2类似 TX 2T2R

每个转换器提供 SPC=2个 16Bbit 采样数据 Frame0 和 Frame1拼在一起 ,每帧 F=2 ,两帧凑成 2 * 2 * 8=32bit

在这里插入图片描述

MmSn 表示 第m个转换器的第n个采样数据,

RX 2T2R L=2; M=4; S=1; F=4; NP=16; SPC=1 ;

[ M3S0, M2S0, M1S0, M0S0]

RX 1T1R L=2; M=2; S=1; F=2; NP=16; SPC=2 ;

[ M1S1, M1S0, M0S1, M0S0]

RX_OS L=2; M=2; S=1; F=2; NP=16; SPC=2 ;

[ M1S1, M1S0, M0S1, M0S0]

RX 1T1R 和 RX_OS 和TX 2T2R类似,不过多描述。RX 2T2R 如下图
在这里插入图片描述

二、JESD204B链路数据配置

RX 2T2R ,M=4,L=2,F=4,S=1, IQ 采样率= LINK rate= line rate/40 ,SPC=1

AD9371 采样接收数据后, 按下图配置组帧,通过分配的2个lane,送给FPGA解帧

在这里插入图片描述
传输层送给应用层的64bit数据adc_data, 排布如下 [ M3S0, M2S0, M1S0, M0S0]

RX 1T1R 和 RX_OS ,M=2,L=2,F=2,S=2, IQ 采样率= 2* LINK rate= line rate/20 ,SPC=2

AD9371 采样接收数据后, 按下图配置组帧,通过分配的2个lane,送给FPGA解帧

在这里插入图片描述

传输层送给应用层的64bit数据adc_data, 排布如下 [ M1S1, M1S0, M0S1, M0S0]


注意
AD9371芯片 的 TX和RX lane rate 有速率限制(UG992),lane rate 都最低614.4MHz
2T2R 时,M=4, L=2, IQ采样率 最低为15.36MHz,lane rate = 15.36 x 40= 614.4 MHz
1T1R 时,M=2, L=2, IQ采样率 最低为30.72MHz,lane rate = 30.72x 20= 614.4 MHz

RX_OS 时,M=2, L=2, IQ采样率 最低为30.72MHz,lane rate = 30.72 x 20= 614.4 MHz

在这里插入图片描述


而 由于在FPGA的GTH中, CPLL的 VCO 对工作频率有要求,在当前官方例程中,RX 和 RX_OS都选择的CPLL,其频率为 2 G-6.25G ,求最低采样率?

在这里插入图片描述

在这里插入图片描述

当 CPLL VCO 锁定频率 2.4576G (尽可能小),CPLL输出过分频器D,D取最大 =8(CPLL不支持16)

line rate (尽可能小)=(2.4576G /8)*2(上升沿和下降沿采样)=614.4MHz

2T2R 时,M=4, L=2, line rate = (IQ采样率 最低为15.36MHz x 40) =614.4MHz,

1T1R 时,M=2, L=2, line rate = (IQ采样率 最低为30.72MHz x 20) =614.4MHz,

RX_OS 时,M=2, L=2, line rate = (IQ采样率 最低为30.72MHz x 20) =614.4MHz

对于官方demo,理论上 ,AD9371侧 和 FPGA ,2T2R时,对RX 信号都支持 15.36MHz

三、RX Byte and Word Alignment(GTH)

RX 在接收数据中搜索逗号(comma,K28.5 ,发射机发送的可识别的序列),当找到逗号时,将逗号移动到字节边界,使接收的并行字与发送的并行字匹配

在这里插入图片描述

CGS 阶段,发送方发送连续的 K码 (comma), 启用 RX Byte and Word Alignment ,检测到逗号时,对齐字节边界。

在这里插入图片描述
在这里插入图片描述

.RXMCOMMAALIGNEN (rx_calign),
.RXPCOMMAALIGNEN (rx_calign),

在这里插入图片描述

四、RX 8B/10B Decoder(GTH)

发送方 根据链路配置 会进行字符替换(链路层), /F/= /K28.7/ , /A/=/K28.3/ 替换场景 如下图

在这里插入图片描述

RX 8B/10B Decoder 包括用于控制功能的特殊字符(K字符如下)。

在这里插入图片描述

当RXDATA是K字符时,解码器将RXTRL0驱动为高电平,当前demo,解码后为32bit

在这里插入图片描述RXCTRL0[3] corresponds to RXDATA[31:24]
RXCTRL0[2] corresponds to RXDATA[23:16]
RXCTRL0[1] corresponds to RXDATA[15:8]
RXCTRL0[0] corresponds to RXDATA[7:0]

 .RXCTRL0 ({rx_charisk_open_s(未用到), rx_charisk})

在这里插入图片描述

根据rx_charisk 各个bit 标志,可以进一步判断是否 K28 字符 ,和是否为 K28.5(CGS),以在后续逻辑中应用

在这里插入图片描述

五、JESD204b 各层主要功能

TX

传输层 :主要负责 组帧, 把八字节分配到 Lane

链路层 :主要负责加扰,字符替换,链路同步 ,LMFC,状态机管控
在这里插入图片描述
物理层 :8B/10B Encoder, 跨时钟域 (TX Buffer)

RX

传输层 :主要负责 解帧, 把接收数据传给应用层

链路层 :主要负责解扰,align,elastic buffer(确定性延时),链路同步,LMFC,状态机管控
在这里插入图片描述
物理层 :RX Equalizer(均衡), CDR(时钟恢复,数据采样),眼图分析,逗号检测,8B/10B Decoder,跨时钟域(RX Elastic Buffer)


http://www.kler.cn/a/109202.html

相关文章:

  • Python教程笔记(1)
  • 游戏引擎学习第五天
  • 星期-时间范围选择器 滑动选择时间 最小粒度 vue3
  • vue2面试题6|[2024-11-11]
  • 自动驾驶为什么需要时间同步?高精度时间同步如何实现?
  • 信息网络安全——AES加密算法
  • 银河麒麟服务器版v4安装程序缺少依赖包,改为利用手机联网在线安装
  • Android 13.0 通过驱动实现禁用usb鼠标和usb键盘功能
  • 【数据结构】插入排序
  • C++标准模板(STL)- 类型支持 (类型特性,is_pointer,is_lvalue_reference,is_rvalue_reference)
  • pytest-yaml 测试平台-3.创建执行任务定时执行用例
  • RabbitMQ学习05
  • 网络滤波器/网络滤波器/脉冲变压器要怎样进行测试,一般要测试哪些参数?
  • 云计算概述笔记
  • 建筑能源管理(7)——建筑节能诊断内容
  • RabbitMQ基础
  • 华为OD机考算法题:寻找最大价值的矿堆
  • [毕设记录]@开题调研:一些产品
  • 分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测(自注意力机制)
  • [动态规划] (一) LeetCode 1137.第N个泰波那契数
  • 刀具磨损状态识别(Python代码,MSCNN_LSTM_Attention模型,初期磨损、正常磨损和急剧磨损分类,解压缩直接运行)
  • An Early Evaluation of GPT-4V(ision)
  • GORM GEN 生成代码如何自定义方法和表名
  • 学习gorm:彻底弄懂Find、Take、First和Last函数的区别
  • 02【Git分支的使用、Git回退、还原】
  • rust重载比较运算符