This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADC12J1600:JESD204B 内核捕获的数据不正确

Guru**** 2387060 points
Other Parts Discussed in Thread: ADC12J1600
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/881496/adc12j1600-incorrect-captured-data-by-jesd204b-core

器件型号:ADC12J1600

大家好、

我正在尝试在 FPGA 上开发一种算法、以处理 ADC 采样的数据。 我们使用 TI 的 ADC12J1600和 Xilinx 的 KC705、也使用 TI 的 TSW14J10来连接这两个板。

下面是 ADC 的配置:

抽取= 4;

LMFS = 4222;

K = 16;

参考时钟= 200MHz;

器件时钟= 100Mhz;

以下是输出数据格式:

Picture1.png

Picture2.png

我已根据 Xilinx 的 JESD204硬件演示和 JESD204示例设计创建了一个4通道 JESD204B RX 项目、原理图如下:

Picture3.png

RX 内核的配置与 ADC 的设置相匹配。 考虑到项目中只有一个 RX 内核、我选择将共享逻辑包含在内核中。

通过使用 VIO、我们可以正确执行寄存器读取/写入访问。 以下是 AXI 控制寄存器配置:

0  => x"8008",   --地址 x008             

1  => x"0000"、   --数据 x0000_0001       启用通道对齐

2  => x"0001"、    

3  => x"800C"、   --地址 x00C             

4  => x"0000"、   --数据 x0000_0001      [0]启用加扰

5  => x"0001"、

6  => x"8020",   --地址 x020             

7  => x"0000"、   --数据 x0000_0001        F (每帧八位位组)= 2.

8  => x"0001"、

9  => x"8024"、   --地址 x024             

10 => x"0000"、   --数据 x0000_000f        K (每多帧数)= 16

11 => x"000f"、

我使用 GPIO LED 来检查接口信号、结果如下:

LED[4]闪烁、显示 FPGA 可以接收参考时钟和全局时钟;

LED[3]打开、显示系统时钟已锁定、并为 AXI 控制器生成200MHz 时钟;

LED[2]打开、显示 JESD204B 接收器可以生成 RX_aresetn 信号、该信号用作数据解调块的复位信号;

LED[1]打开、显示 TX_RESync 有效、并发送到 ADC;

LED[0]打开、显示 Rx_resync 已生效、这是接收器生成的同步信号;

数据由 ILA 捕获、我们已将 ADC 设置为斜坡测试模式并正常、结果如下:

(1)斜坡测试模式--每条通道发送一个相同的八位位组流,该二进制八位位组流从0x00递增到0xFF 并重复。

Picture4.png

来自4个通道的数据完全相同、这是合理的、因为 ADC 正在向每个通道发送相同的八位位组流。 但是、现在捕获的数据的值不正确。

(2)正常模式–ADC 对函数发生器的正弦波进行采样。

Picture5.png

传输层映射后收集的数据不正确。 但是、信号 RX_START_FRAME、RX_END_FRAME、RX_START_OW_MULTIFRAME、RX_END_OL_MULTIFRAME 的结果符合 JESD204示例设计的仿真结果。

我认为 JESD204 IP 内核以正确的方式运行、所以我对错误原因的猜测是我没有正确映射 Rx_DATA[127:0]、这是我根据 ADC 的输出数据格式所做的:

//通道0
signal0_sampl1 <= rx_tdata[31:17];      lane0上每秒采样的//数据位
signal0_cntrl1 <= rx_tdata[16];         lane0上每秒采样的//控制位
signal0_sampl0 <= rx_tdata[15:1];       lane0上每个第一次采样的//数据位
signal0_cntrl0 <= rx_tdata[0];          lane0上每个第一个采样的//控制位
//通道1
signal1_sampl1 <= rx_tdata[63:49];     lane1上每秒采样的//数据位
signal1_cntrl1 <= rx_tdata[48];         lane1上每秒采样的//控制位
signal1_sampl0 <= rx_tdata[47:33];     lane1上每个第一个样本的//数据位
signal1_cntrl0 <= rx_tdata[32];         lane1上每个第一个采样的//控制位
//通道2
signal2_sampl1 <= rx_tdata[95:81];      lane2上每秒采样的//数据位
signal2_cntrl1 <= rx_tdata[80];         lane2上每秒采样的//控制位
signal2_sampl0 <= rx_tdata[79:65];      lane2上每个第一个采样的//数据位
signal2_cntrl0 <= rx_tdata[64];         lane2上每个第一个采样的//控制位
//通道3
signal3_sampl1 <= rx_tdata[127:113];   lane3上每秒采样的//数据位
signal3_cntrl1 <= rx_tdata[112];        lane3上每秒采样的//控制位
signal3_sampl0 <= rx_tdata[111:97];    lane3上每个第一个采样的//数据位
signal3_cntrl0 <= rx_tdata[96];         lane3上每个第一个采样的//控制位

配置方面的任何帮助和/或我必须如何使用来自 Rx_data 的 IQ 样本来获取斜坡或 Sinewave 的原始数据都将是很好的。

提前感谢。

最棒的

迟浩田

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对该帖子的补充是我将 NCO 频率设置为0。 因为我没有这样做、而是在 HSDC Pro 上得到信号衰减。 我将正弦波的频率从函数发生器设置为2MHz。 由于我将 ADC 设置为抽取值4、因此采样频率为400MHz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请勿将 NCO 频率设置为0。 这是无效设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    感谢您的回复。 我认为、由于有对原始数据进行调制以生成 I/Q 数据、因此我假设 FPGA 上的解调块是获取采样数据所必需的。 您对此有什么经验或建议吗?

    提前感谢、

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    我对此没有太多经验、但听起来是正确的。

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jim、

    感谢您的回复。 您能否与我分享一条有关如何设置 ADC12J1600在旁路模式下工作的说明? 我仍然想在斜坡测试模式下测试 JESD。 我想我们可以设置 FS = 1GSPS。 由于没有抽取、DDC 块将无法工作、因此我不需要考虑 NCO 频率、对吧?

    我们使用的是 KC705、我知道 KC705上只有4个通道、旁路模式的串行链路配置为 LMF = 888。 但是、由于在斜坡测试模式下、ADC 会向每个通道发送相同的数据、因此我想我仍然可以测试 FPGA 上的 JESD-Rx 内核是否可以在不考虑 I/Q 调制的情况下捕获这4个通道的原始数据。 您认为这样一个想法是否可行?

    非常感谢您对我的帮助、我非常感激。

    最棒的

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    在 ADC GUI 的框3中、选择"Bypass Mode、DDR"。

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jim、

    我对抽取模式下的输出数据格式感到有点困惑。  DDC 输出数据由15位复杂数据加上两个超范围阈值检测控制位组成、该单 个超范围阈值检测控制位如何影响数据值的解释?

    另一个问题是、正如您从两个图片中看到的、这里的通道1和通道2分别表示 I 数据和 Q 数据吗?

    最棒的

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、我想问一下斜坡测试模式。 在 ADC12J1600的数据表中、有人提到"传输层被禁用、格式器的输入被忽略。 在 ILA 序列之后、每个通道传输一个相同的八位位组流、该八位位组流从0x00递增到0xFF 并重复"。 这是否意味着、无论我将 ADC 设置为抽取模式还是旁路模式、 它在输出数据格式方面都没有什么不同?  

    请看我在该主题中的第一个帖子。 在斜坡测试模式下、我们可以从每个通道接收相同的位流、但值不正确。  

    我认为通过斜坡测试模式是验证 FPGA 上 JESD-RX 内核功能的非常重要的一步。

    此项目的截止日期非常紧迫、您能否就我的问题提供一些建议、或者是否可以为我提供其他 TI 专家的参考?

    吉姆,我不能说我多么感谢你。 我知道您的日程安排一定很忙、但我感谢您的任何帮助。

    最棒的

    迟浩田。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    斜升模式在旁路模式下不工作。 请参阅随附文件的最后一张幻灯片、了解预期结果。

    此致、

    Jim

    e2e.ti.com/.../6888.ADC12J1600_5F00_DEC_5F00_4_5F00_KC705_5F00_test_5F00_pattern_5F00_mode.pptx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Jim

    我仍在使用斜坡测试模式测试 JESD、我开始获取有意义的数据:

    这是我目前能获得的最佳结果。 我通过在 ADC 中禁用 TX 扰频器和在 FPGA 中禁用 RX 来实现这一点。 奇怪的是、数据不是从 LSB 增加到 MSB、而是在减少、您还可以在图中看到噪声。

    我的问题是、首先、在斜坡测试模式下是否禁用了 DDC 块? 或者、我是否应该说、如果发送器直接向通道发送数据?

    其次、SYSREF 信号是否由 ADC 提供? 我认为 SYSREF 信号与 ADC 的器件时钟耦合、但我现在不确定。

    仅供您参考、我看到通过检查 GPIO LED 发出 SYNC 信号。

    最棒的

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    供参考、

    抽取模式斜坡看起来正常而不是旁路模式的原因是它与斜坡模式的输出以及它与预期数据字宽度的对齐方式有关。 斜坡模式始终是八位位组斜坡。 它不是 JMODE 所选输出数据字宽度上的斜坡。 在每个通道内、八位位组增加:

    0、1、2、3、4、 5、…μ..、254、255、0、 1、2、3、4等

     

    由于 DDC 模式具有16位字宽、因此八位位组斜坡在该字宽内对齐、并在解码为16位字时提供看起来合理的斜坡波形。

     

    旁路模式具有12位字宽度。 因此、八位位组斜坡值在解码为12位字时会执行非常奇怪的操作。

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    我理解您所说的、为什么斜坡测试由于数据宽度不匹配而不适合旁路模式。 因此、我仍然将 ADC 设置为抽取4、并从 FPGA 获取该结果。

    在我看来、在过渡期间、数据会定期损坏。 此外、串行数据似乎以某种方式被反转。 您能看到这些错误的原因是什么、我应该如何解决它吗?

    另一个问题是、我想尝试在子类0中设置 JESD204B。 我知道如何从我的项目中配置 FPGA 上的 RX 内核、您能告诉我应该如何在 ADC 中配置 TX 吗?

    最棒的

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    此器件仅支持子类1模式。 我们使用固件对进入 KC705的所有串行通道进行反相、因为 P/N 从 ADC 板上交换。  

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    感谢您发送有关反向串行器/解串器通道的通知。 这不会是一个大问题、我可以解决这个问题。

    您对我应该如何处理噪声或数据损坏有什么想法吗?

    最棒的

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    使用 Chipscope 和斜坡测试模式、我认为这应该是一项比较容易理解的任务。 如果没有、请咨询 Xilinx。 问题不在于 ADC。

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    我刚刚尝试了

    长传输测试模式:

    我的结果如下:

    我在这里没有视差误差、但"gt_rxcharisk"的值正在变化、我不明白这 意味着什么。
    对于数据、rx_tdata[31:0]表示通道0的数据、rx_tdata[63:32]表示通道1的数据、等等。 在我看来、在转换期间、每个帧中的下八位位组和上八位位组交换了、 这是正确的吗?
    我得到的另一个错误是、我不是在通道0中接收03、而是在通道1中接收05、而是在1c 和1a 中接收到。  
    我认为这两个问题共同导致了我的斜坡测试误差。
    您能对我上面提到的问题有什么看法吗?
    很抱歉再次询问您、我觉得我已经接近成功了、但我被一些我无法想到的细节所困住了。
    感谢您在过去几个月中的持续帮助。  
    最棒的
    迟浩田。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    通道2和3在您的捕获中看起来正确。 数据从右向左读取、最高有效位作为 LSB、 而不是从左向右读取。 请参阅随附的文档。 数据表中可能会出现您未看到的3和5错误。 我将对此进行研究。 否则、我认为一切都正常。  

    Jim  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    关于 Charisk 问题:

    "当 帧或多帧中的最后一个八位位组与前一个多帧相同时、由于对齐监视字符被插入到数据中、您将看到 Charisk Get Set。 请参阅 JESD204B-01规范的第5.3.3.4节。 行为略有不同、具体取决于扰频是打开还是关闭。   尝试开启链路两端的扰频功能、以查看它们看到的内容是否发生变化。

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    感谢您的回复。

    我尝试打开 TX 和 RX 端的扰频器、捕获的数据完全混乱、结果如下:

    下面是我捕获的斜坡数据的详细介绍:

    从第一个标记下的数据开始、我认为正确的值应为8f8e8d8c、因此我错误地得到了3个八位位组。 同样、下一个数据的正确值应为93929190、仍然存在3个错误、等等  

    另一个明显的错误是、通过检查第二个标记下的数据。 八位位组应增加到 a3a2a1a0、但不知怎么、我捕获的数据会跳转到5c424140。

    这些问题对我来说非常奇怪、因为我没有出现视差误差、并且 SYNC 被置为有效。 在编码/解码过程中、似乎有问题。

    我们非常感谢您的任何帮助或建议。

    期待您的回复。

    最棒的

    迟浩田。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    我们现在没有带宽来支持您的这项工作。 我建议您 开始使用其 网站上的 Xilinx 帮助论坛、或阅读 Xilinx 提供的 JESD IP 核心文档(请参阅随附的)。

    此致、

    Jim

     e2e.ti.com/.../pg066_2D00_jesd204_5F00_v7.1.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迟浩田

    关于您的问题、最后一件事是:

    通道反相。 当反转通道时,8B/10b 编码几乎可以正常工作,但某些代码无法正确映射。 这就是导致001A 和001C 值发生的原因。  例如、03变为1C、因为它们的10位表示法彼此反相。  当数据被反转(02、04、00、80等)时、许多其它代码映射正确。  当您查看所有代码的完整8b/10b 映射表时、这一点变得显而易见。

     

    我不认为八位位组顺序被意外交换。 将首先收到的八位位组放在每个32位字的最右边位置可能只是此 IP/FPGA 的惯例。  因此、您必须从右向左读取四个八位位组值。  例如、 按照从左到右的时间顺序、01_80_00_80在通道上传输:80_00_80_01。  

    此致、

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    我的设计现已开始使用!!!

    问题是 RXPolarity、一旦我将其设置为1'B1、错误就消失了。

    我要向你表示最深切的感谢,感谢你在过去3个月中的持续帮助。 感谢您指出我的设计中最关键的问题、尽管它不在您的带宽中。

    我祝你今后一切顺利。 (您肯定已经对我不停地提出的愚蠢的问题感到非常恼火...)

    此致、

    迟浩田。