TI中文支持网
TI专业的中文技术问题搜集分享网站

ADC12DJ3200: 在Jmode1模式中,接收到乱码,与输入信号无关

Part Number:ADC12DJ3200

ADC设置为JMODE1模式,lane_rate=6.4G ,K=4 , jesd204B_core lck=160MHz, sysref都是20MHz, 采用3.2GHz的采样频率,
在非测试模式下可以观察到FPGA的SYNC信号拉高,FPGA的out_valid拉高,但是输出信号与输入信号无关,读ADC的寄存器结果如下:
0208:00
02C1:1f
表明链路未建立,且有警报,用示波器观察ADC的SYSREF差分时钟,有20MHz的时钟,
使用测试模式时,K28.5 test mode ,D21.5 test mode, repeated ILA test mode,均正常,但是在使用Ramp test mode 时,在gt_rxdata[31:0]无法看到递增的数据, 如图:
似乎是ADC卡在了ILAS阶段,请问可能是什么问题?
以下是我的ADC配置序列,按顺序配置:
0:dout<=24'h0000B0; ///***///进行软复位
1: dout<=24'h020000; ///***///清除 JESD_EN (始终在 CAL_EN 之前)
2: dout<=24'h006100; ///***///清除 CAL_EN (始终位于 JESD_EN 之后)
3:dout<=24'h000200;
4:dout<=24'h001000;
5:dout<=24'h002300;
6:dout<=24'h002970;
7:dout<=24'h002A00;
8:dout<=24'h0030C4;
9:dout<=24'h0031A4;
10:dout<=24'h0032C4;
11:dout<=24'h0033A4;
12:dout<=24'h003800;
13:dout<=24'h003B00;
14:dout<=24'h004803; ////// 将串行器预加重设置为3
15:dout<=24'h006001;
//14:dout<=24'h006101;
16:dout<=24'h006201;
17:dout<=24'h006400;
18:dout<=24'h006B00;
//18:dout<=24'h006C01;
19:dout<=24'h007000;
20:dout<=24'h007100;
21:dout<=24'h007980;
22:dout<=24'h007A00;
23:dout<=24'h007B00;
24:dout<=24'h007C00;
25:dout<=24'h008000;
26:dout<=24'h008100;
27:dout<=24'h008200;
28:dout<=24'h008300;
29:dout<=24'h008400;
30:dout<=24'h008500;
31:dout<=24'h008600;
32:dout<=24'h008700;
33:dout<=24'h008800;
34:dout<=24'h008900;
35:dout<=24'h008AFF;
36:dout<=24'h008B07;
37:dout<=24'h008CFF;
38:dout<=24'h008D07;
39:dout<=24'h008EFF;
40:dout<=24'h008F07;
41:dout<=24'h0090FF;
42:dout<=24'h009107;
43:dout<=24'h0092FF;
44:dout<=24'h009307;
45:dout<=24'h0094FF;
46:dout<=24'h009507;
47:dout<=24'h010280;
48:dout<=24'h010380;
49:dout<=24'h011280;
50:dout<=24'h011380;
51:dout<=24'h012280;
52:dout<=24'h012380;
53:dout<=24'h013280;
54:dout<=24'h013380;
55:dout<=24'h014280;
56:dout<=24'h014380;
57:dout<=24'h015280;
58:dout<=24'h015380;
59:dout<=24'h016000;
//60:dout<=24'h020001; //Clear JESD_EN (always before CAL_EN) Set JESD_EN (always after CAL_EN)
61:dout<=24'h020101; //Set JMODE1 ////// 设置 JMODE1
62:dout<=24'h020203; //0x202 0x03:Set KM1=3 so K=4 //////设置 KM1=3、因此 K=4
63:dout<=24'h020301;64:dout<=24'h020401; //Use SYNCSE input, offset binary data, scrambler enabled 输出数据的格式: ////// 使用 SYNCSE 输入、偏移二进制数据、启用扰频器
65:dout<=24'h020504; //
66:dout<=24'h020600;
67:dout<=24'h020700;
68:dout<=24'h020800;
69:dout<=24'h020900;
70:dout<=24'h020C00;
71:dout<=24'h020D00;
72:dout<=24'h021000;
73:dout<=24'h0211F2;
74:dout<=24'h0212AB;
75:dout<=24'h021307; //Enable overrange, set overrange holdoff to max period 8*2^7 = 1024 samples //////启用超范围,将超范围保持设置为最大周期8*2^7=1024个样本
76:dout<=24'h021400;
77:dout<=24'h021500;
78:dout<=24'h021602;
79:dout<=24'h021700;
80:dout<=24'h021800;
81:dout<=24'h021902;
82:dout<=24'h022000;
83:dout<=24'h022100;
84:dout<=24'h022200;
85:dout<=24'h0223C0;
86:dout<=24'h022400;
87:dout<=24'h022500;
88:dout<=24'h022800;
89:dout<=24'h022900;
90:dout<=24'h022A00;
91:dout<=24'h022BC0;
92:dout<=24'h022C00;
93:dout<=24'h022D00;
94:dout<=24'h023000;
95:dout<=24'h023100;
96:dout<=24'h023200;
97:dout<=24'h0233C0;
98:dout<=24'h023400;
99:dout<=24'h023500;
100:dout<=24'h023400;
101:dout<=24'h023500;
102:dout<=24'h023800;
103:dout<=24'h023900;
104:dout<=24'h023A00;
105:dout<=24'h023BC0;
106:dout<=24'h023C00;
107:dout<=24'h023D00;
108:dout<=24'h024000;
109:dout<=24'h024100;
110:dout<=24'h024200;
111:dout<=24'h0243C0;
112:dout<=24'h024400;
113:dout<=24'h024500;
114:dout<=24'h024800;
115:dout<=24'h024900;
116:dout<=24'h024A00;
117:dout<=24'h024BC0;
118:dout<=24'h024C00;
119:dout<=24'h024D00;
120:dout<=24'h025000;
121:dout<=24'h025100;
122:dout<=24'h025200;
123:dout<=24'h0253C0;
124:dout<=24'h025400;
125:dout<=24'h025500;
126:dout<=24'h025800;
127:dout<=24'h025900;
128:dout<=24'h025A00;
129:dout<=24'h025BC0;
130:dout<=24'h025C00;
131:dout<=24'h025D00;
132:dout<=24'h02B000;
133:dout<=24'h02B105;
134:dout<=24'h02B500;
135:dout<=24'h02B600;
136:dout<=24'h02B700;
//137:dout<=24'h02C11F;
138:dout<=24'h02C23F;

139: dout<=24'h006101; ///***///设置 CAL_EN (始终在 JESD_EN 之前)
140: dout<=24'h020001; ///***///设置 JESD_EN (始终在 CAL_EN 之后)
141: dout<=24'h006C00; ///***///将 CAL_SOFT_TRIG 设置为低电平以复位校准状态机
142: dout<=24'h006C01; ///***///将 CAL_SOFT_TRIG 设置为高电平以启用校准

Amy Luo:

您好,

周一我将处理您的这个问题,若给您造成不便很抱歉。

,

linwei hu:

非常感谢,以下是读出寄存器最新的状态:

0208:1c
02C1:1f

,

Amy Luo:

您好,在reset后,您可以加 100ms delay延迟吗?然后再进行其他寄存器配置:

0:dout<=24'h0000B0; ///***///进行软复位

delay of 100ms 1: dout<=24'h020000; ///***///清除 JESD_EN (始终在 CAL_EN 之前)2: dout<=24'h006100; ///***///清除 CAL_EN (始终位于 JESD_EN 之后)

,

linwei hu:

非常感谢您的建议,目前读出寄存器最新的状态:

0208:7c
02C1:1f
看起来似乎链路已经建立,使用Ramp test mode时,两个IP核的输出:out_data[255:0] 与out_data_2[255:0]任何时候都是一样的,如图:

两个IP核的 gt0_rxdata[32:0]、gt1_rxdata[32:0]、gt2_rxdata[32:0]几乎是一样的,如图:

解析后的采样数据,看起来是每8个采样点是相同的,如图:


请问这是怎么回事?
非常感谢。

,

Amy Luo:

为更加有效地解决您的问题,我已经将此问题发布在E2E英文技术论坛上,请资深的英文论坛工程师为您提供帮助,请耐心等待他们的回复:

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1224283/adc12dj3200-ramp-test-mode

,

linwei hu:

非常感谢

,

Amy Luo:

已得到E2E英文工程师回复:

In the octet ramp pattern mode, the behavior will be as follows: each lane will count from 

If F*K < 256, it will count from 0x00 to (F*K)-1
If F*K > 256, it will count from 0x00 to 0xFF and wrap around and resume from 0x00 until the end of the multi-frame

In JMODE1 F = 8 and you are programming K = 4, that is the reason why each lane is counting from 0 to (8*4)-1 = 0 to 31.

if you want each lane to count from 0 to 255 program, K = 32 and each lane should count from 0 to 255.

,

linwei hu:

问题已解决,非常感谢

赞(0)
未经允许不得转载:TI中文支持网 » ADC12DJ3200: 在Jmode1模式中,接收到乱码,与输入信号无关
分享到: 更多 (0)