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.

[参考译文] DS90UB960-Q1:MIPI-CSI2帧(垂直)和线路(水平)同步数据包中的时序偏移

Guru**** 2539500 points
Other Parts Discussed in Thread: DS90UB960-Q1, DS90UB953-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1231636/ds90ub960-q1-timing-shift-in-mipi-csi2-frame-vertical-and-line-horizontal-sync-packets

器件型号:DS90UB960-Q1
主题中讨论的其他器件: DS90UB953-Q1

尊敬的团队:

我们将 DS90UB953-Q1和 DS90UB960-Q1用作串行器/解串器、  通过 MIPI CSI-2接口传输来自传感器的视频流。 我们只连接一个传感器、并将线路输出设置 为 DS90UB960 CSI2端口0。

但是、我们无法从端接侧读取视频流、并且端接的 D-PHY 会出现"LP 序列错误"。

我们探测了传感器和 Orin 之间通道的波形、发现  CSI-2的长和短数据包中的时间规格与 CSI2手册中的要求一致。  然而、与传感器发送的 CSI2波形相比、来自960 CSI2输出端口的帧和线路同步数据包的时序似乎发生了偏移。

帧结束数据包并不出现在帧数据传输的末尾、而是出现在非常接近下一帧开始的地方。 并且线路开始/结束数据包也似乎很奇怪。

在发送线路开始数据包之后、在线路数据之前、始终会保持较长 LP 状态。 但是、线路数据完成后将立即显示线路结束数据包。

传感器 CSI2输出端口波形中的同步数据包正确、但在 DS90UB960输出中使用 SerDes 后同步数据包变得奇怪、这会使我们感到困惑。

我认为在处理串行器/解串器时肯定出了问题、但是根据串行器/解串器中的两个寄存器、我们没有发现任何错误。

您能给我们介绍一下如何解决上述问题吗?

非常感谢、

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

    您好、Lee、

    5月29日星期一是美国公共假日、我们将从此主题开始继续活动。 感谢您的耐心等待。  

    此致、  
    洛根

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

    您好、Lee、

    您能否在良好和不良的情况下提供波形和寄存器转储?

    您是在一个还是多个设置上看到这种情况吗?

    格伦  

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

    您好、Glenn、

    很抱歉花这么长的时间来回复。

    请检查以下附件:

    波形:

    寄存器:

    UB953:
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00: 30 00 73 4b 00 18 41 28 fe 1e 10 7f 7f 06 34 00
    10: 00 00 00 00 00 20 18 3c 80 62 62 62 00 00 00 00
    20: 00 00 00 00 00 02 00 00 67 33 01 00 00 00 00 00
    30: 00 20 09 04 00 10 00 64 00 00 00 00 00 00 00 00
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    50: 20 c0 45 00 00 00 00 00 07 07 07 00 00 00 00 00
    60: 00 2a 00 10 0f 8b 01 44 00 00 00 00 00 00 00 00
    70: 00 00 25 00 00 00 00 00 00 00 e4 00 00 00 00 00
    80: 00 00 00 00 00 00 90 00 00 00 00 00 05 00 00 00
    90: 32 e3 64 01 00 00 00 00 00 00 03 02 00 00 00 0f
    a0: 00 0d 0e 0d 0e 10 42 10 10 10 03 01 00 00 00 00
    b0: 02 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    f0: 5f 55 42 39 35 33 00 00 00 00 00 00 00 00 00 00
    
    UB960:
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00: 64 00 1e 40 d0 01 00 fe 1c 10 7a 7a 01 00 02 ff
    10: 00 00 00 00 00 00 00 00 80 61 a8 e3 dd 00 04 04
    20: e0 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00
    30: 00 00 01 41 01 01 00 00 00 00 00 00 00 00 00 00
    40: 00 a9 71 01 00 00 20 00 00 00 00 12 01 03 04 62
    50: 9f 00 00 03 00 00 00 00 5a 00 00 30 80 a8 50 00
    60: 00 00 00 00 00 a8 c0 00 00 00 00 00 00 7c 8a 88
    70: 2b 2c 00 02 00 10 00 c5 00 01 00 00 00 f1 00 00
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    90: 60 eb 00 00 ff ff 00 00 00 00 00 00 00 00 00 00
    a0: 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00
    b0: 1c 13 1f 08 25 00 18 00 9c 33 83 74 80 00 00 00
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    d0: 00 43 94 27 60 f2 00 02 00 01 00 00 00 00 00 00
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    f0: 5f 55 42 39 36 30 00 00 00 00 00 00 00 00 00 00

    我们还尝试了800MHz 模式、 在线路数据之前仍然存在空白 LP 状态、但 一旦线路数据传输结束、线路结束数据包仍然会出现。 与 400MHz 的情况相比、线路末端和下一个线路起点之间的 LP 状态变得更长。

    此致!

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

    您好、Lee、  

    我将在下周审查您的数据并提供反馈。

    格伦  

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

    您好、Lee、

    1. 在960寄存器0x1F 中、您是否可以尝试将 BIT [2] REF_CLK_MODE 设置回默认值0?
    2. 只是为了确认、953上的 CSI-2设置是否与成像仪输出的数据匹配? 960上的 CSI-2设置是否与 SOC 预期的匹配? 我注意到960配置为非连续时钟、而953配置为连续时钟、因此我想再次检查这是否是正确的配置。  
    3. 您可以尝试关闭成像仪并使用953 patgen 吗?

    此致、

    信迪  

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

    Cindy、您好!

    感谢你的帮助。

    更改寄存器后问题仍然存在。

    立即注册:

    UB953
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00: 30 00 73 58 00 03 00 00 fe 1e 10 7f 7f 00 00 00
    10: 00 00 00 00 00 20 18 3c 80 62 62 62 00 00 00 00
    20: 00 00 00 00 00 02 00 00 67 33 01 00 00 00 00 00
    30: 00 20 09 04 00 10 00 64 00 00 00 00 00 00 00 00
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    50: 20 c0 45 00 00 00 00 00 07 07 07 00 00 00 00 00
    60: 00 2a 00 10 0f 8b 00 00 00 00 00 00 00 00 00 00
    70: 00 00 25 00 00 00 00 00 00 00 e4 00 00 00 00 00
    80: 00 00 00 00 00 00 90 00 00 00 00 00 05 00 00 00
    90: 32 e3 64 01 00 00 00 00 00 00 03 02 00 00 00 0f
    a0: 00 0d 0e 0d 0e 10 42 10 10 10 03 01 00 00 00 00
    b0: 02 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    f0: 5f 55 42 39 35 33 00 00 00 00 00 00 00 00 00 00
    
    UB960
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00: 64 00 1e 40 d0 01 00 fe 1c 10 7a 7a 01 00 02 ff
    10: 00 00 00 00 00 00 00 00 80 61 a8 e3 dd 00 04 02
    20: e0 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00
    30: 00 00 01 03 00 01 00 00 00 00 00 00 00 00 00 00
    40: 00 a9 71 01 00 00 20 00 00 00 00 12 01 03 04 64
    50: 00 00 00 03 00 00 00 00 5e 00 00 30 80 a8 50 00
    60: 00 00 00 00 00 a8 c0 00 00 00 00 00 00 7c 8a 88
    70: 2b 2c 00 02 00 10 00 c5 00 01 00 00 00 00 00 00
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    90: 4b 08 00 00 ff ff 00 00 00 00 00 00 00 00 00 00
    a0: 00 00 00 00 00 1d 00 00 00 00 00 00 00 00 00 00
    b0: 1c 13 1f 08 25 00 18 00 9c 33 83 74 80 00 00 00
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    d0: 00 43 94 02 60 f2 00 03 00 01 00 00 00 00 00 00
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    f0: 5f 55 42 39 36 30 00 00 00 00 00 00 00 00 00 00

    2.我们用下面的脚本尝试了 UB953 PatGen 模式,行同步短包消失了,所以我们不知道问题是否存在。

    static int init_pattern_generator(struct regmap *map)
    {
        int err = 0;
    
        TRY(err, regmap_write(map, 0xB0, 0x02));    // IA_AUTO_INC=1
        //TRY(err, regmap_write(map, 0xB1, 0x01));    // PGEN_CTL
    
        //TRY(err, regmap_write(map, 0xB2, 0x01));    // PGEN_ENABLE=1
        TRY(err, regmap_write(map, 0xB1, 0x02));    // PGEN_CFG
        TRY(err, regmap_write(map, 0xB2, 0x33));    // BLOCK_SIZE=3 NUM_CBARS=3(8 Color Bars)
        TRY(err, regmap_write(map, 0xB2, 0x2A));    // PGEN_CSI_DI  (Virtual Channel:0, Data Type:0x2A)
        TRY(err, regmap_write(map, 0xB2, 0x10));    // PGEN_LINE_SIZE1   0x780=1920 0x1000=4096
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_LINE_SIZE0
        TRY(err, regmap_write(map, 0xB2, 0x02));    // PGEN_BAR_SIZE1    0xF0=240
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_BAR_SIZE0
        TRY(err, regmap_write(map, 0xB2, 0x02));    // PGEN_ACT_LPF1     0x438=1080
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_ACT_LPF0
        TRY(err, regmap_write(map, 0xB2, 0x02));    // PGEN_TOT_LPF1     0x465=1125 0x200=512
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_TOT_LPF0
        TRY(err, regmap_write(map, 0xB2, 0x4C));    // PGEN_LINE_PD1     2963   0x4C4B=19531
        TRY(err, regmap_write(map, 0xB2, 0x4B));    // PGEN_LINE_PD0
        TRY(err, regmap_write(map, 0xB2, 0x0A));    // PGEN_VBP
        TRY(err, regmap_write(map, 0xB2, 0x0A));    // PGEN_VFP
        TRY(err, regmap_write(map, 0xB2, 0xAA));    // PGEN_COLOR0
        TRY(err, regmap_write(map, 0xB2, 0x33));    // PGEN_COLOR1
        TRY(err, regmap_write(map, 0xB2, 0xF0));    // PGEN_COLOR2
        TRY(err, regmap_write(map, 0xB2, 0x7F));    // PGEN_COLOR3
        TRY(err, regmap_write(map, 0xB2, 0x55));    // PGEN_COLOR4
        TRY(err, regmap_write(map, 0xB2, 0xCC));    // PGEN_COLOR5
        TRY(err, regmap_write(map, 0xB2, 0x0F));    // PGEN_COLOR6
        TRY(err, regmap_write(map, 0xB2, 0x80));    // PGEN_COLOR7
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR8
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR9
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR10
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR11
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR12
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR13
        TRY(err, regmap_write(map, 0xB2, 0x00));    // PGEN_COLOR14
        TRY(err, regmap_write(map, 0xB2, 0x00));    // Reserved
    
        return err;
    }
    

    此致!

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

    您好、Lee、

    我认为 patgen 代码或寄存器转储没有任何问题。 我确实注意到您将960时钟模式从非连续模式更改为连续模式。 只是为了确保 SOC 是否配置为能够识别来自960的 CSI-2设置? 当您使用 patgen 时、SOC 是否仍报告错误?

    此致、

    信迪

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

    Cindy、您好!

    感谢您的答复。

    1.

    与我们在 Guo 帖子中分享的错误日志相比,错误已发生变化,请查看最新的一个:

    kworker/4:0-35      [004] ....    85.074410: rtcpu_nvcsi_intr: tstamp:3536462637 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000088
    kworker/4:0-35      [004] ....    85.074414: rtcpu_vinotify_event: tstamp:3537216644 cch:0 vi:0 tag:CHANSEL_PXL_SOF channel:0x23 frame:0 vi_tstamp:113181059520 data:0x0000000000000001
    kworker/4:0-35      [004] ....    85.130411: rtcpu_vinotify_event: tstamp:3537893477 cch:0 vi:0 tag:CHANSEL_PXL_EOF channel:0x23 frame:0 vi_tstamp:113204070464 data:0x0000000001ff0002
    kworker/4:0-35      [004] ....    85.130414: rtcpu_vinotify_event: tstamp:3537893904 cch:0 vi:0 tag:FE channel:0x00 frame:0 vi_tstamp:113204072256 data:0x0000000000000020
    kworker/4:0-35      [004] ....    85.130414: rtcpu_vinotify_event: tstamp:3537894056 cch:0 vi:0 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:0 vi_tstamp:113204072288 data:0x0000200000000000
    kworker/4:0-35      [004] ....    85.298558: rtcpu_vinotify_error: tstamp:3543159065 cch:0 vi:0 tag:CHANSEL_NOMATCH channel:0x01 frame:0 vi_tstamp:113381066048 data:0x0000000000000549

    高于 含义的错误:

    1. PHY_Interrupt0
    LP sequence error detected on data lane [A/B]0
    LP sequence error detected on data lane [A/B]1
    2. PIXEL_SOF
    The first pixel in a frame that is not that of an embedded type
    3. PIXEL_EOF
    The last pixel in a frame that is not that of an embedded type
    4. CsimuxFrameError_Regular
    VPR state from fuse block    [ 3]: 0
    A frame end has been found on a regular mode stream.
    5.ChanselPixShort
    Channel 35
    This can happen for three reasons: PIXEL_SHORT_FRAME: FE packet arrives before last expected pixel of the uncropped image; PIXEL_EMPTY_FRAME: FE packet arrives before cropped pixels other embedded data been received; PIXEL_OPEN_LINE: A pixel line has been opened with line start but FE packet arrives before line end ever arrives.
    6. ChanselNoMatch
    -NO_MATCH                    [ 0]: 1
    The non-embedded data packet does not match any configured channels at all

    SOC 配置出现问题,但联系 NVIDIA 后,我们认为现在的配置都是正确的。 也许您可以帮助我们再次查看它吗?

    由于同步数据包和电压问题、我们无法排除串行器/解串器中仍然存在错误的可能性。

    2.

    我还将器件布局图发布在此处、可能会有所帮助。

    非常感谢。

    此致!

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

    您好、Lee、  

    我查看了之前共享的寄存器转储和 patgen 脚本。  

    我在以下代码片段中发现错误:  

    try (err、regmap_write (map、0xB2、0x02));// PGEN_ACT_LPF1 0x438=1080
    try (err、regmap_write (map、0xB2、0x00));// PGEN_ACT_LPF0
    Try (err、regmap_write (map、0xB2、0x02);// PGEN_TOT_LPF1 0x465=1125 0x200=512
    try (err、regmap_write (map、0xB2、0x00));// PGEN_TOT_LPF0

    在设置每帧总行数时、垂直消隐(垂直前沿、垂直后沿和垂直同步)必须添加到每帧总行数中。 在这种情况下、每帧的有效行数和总数是相同的。 但是、在垂直前沿和后沿上、每个都为12。 然后、PGEN_TOT_LPF0的最小值应为 0x14。 您是否能够更改这些值并重新测试?  

    此外、在960寄存器转储中、测量以 MHz 为单位的 REFCLK 频率的0xA5读取为0x1d (29MHz)。 您能否确认正在使用频率为25MHz 的振荡器?

    此致!

    佐伊

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

    Lee、

    我认为您看到的实际上是预期行为。 让我尝试解释一下:

    从架构上来讲、960在内部为接收到的 CSI-2数据使用线路缓冲器。 960会等待收到一个完整的短数据包或长数据包、然后通过 CSI-2输出转发数据包。 在示波器屏幕截图中、您可以看到发生了以下情况:

    通常、CSI-2作为一种协议不需要为水平时序信号提供离散 DPI 时序、这就是为什么在架构上允许这样做的原因。 如果您实际上希望在应用中获得离散的线路开始/线路结束计时(这似乎是您通过使用线路开始/线路结束数据包实现的目标)。 您需要将960的 CSI-2速度提高到高于传感器的 CSI-2速度。 这样就可以最小化960必须等待缓冲视频线路的影响。 即使如此、也可能无法实现、具体取决于传感器的水平消隐时序。 视频信号的水平前沿需要有足够的时间让960发送整个视频线路并准备好转发线路结束数据包。 960的最大发送器速度为1.6Gbps/通道、因此您需要计算以1.6Gbps/通道的速率发送一条视频线所需的时间、并与我们中的水平前沿时间进行比较、看看哪个更小。  

    此致、

    凯西  

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

    尊敬的 Zoe、感谢您提供的信息、我将查看 PG 模式脚本。

    您好、Casey、感谢您的友好解释。 我们还想知道在 HS 传输期间是否也预计有电压电平?

    我们直接通过 UB960 CSI 输出引脚对其进行探测、似乎与 MIPI 标准(150-250mV)不匹配。

    只要电压符合预期、我们就可以确信串行器/解串器中一切正常。

    此致!

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

    Lee、

    CSI-2 RX 是否处于活动状态并对接口应用动态端接? DPHY 的 HSTX 传输电压依赖于在数据包的 HS 部分期间提供端接的受电方、因此在我看来、CSI-2 RX 可能不会应用端接。 尽管探头设置似乎也有点奇怪、因为您似乎也得到了低于0V 的摆动、这是不真实的。 您可能还遇到了探测问题、  

    此致、

    凯西

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

    大家好、Casey、没错、我们现在尝试使用另一个示波器、此时没有低于0V 的电压、但 HS 电压仍高于标准。

    由于 Jetson Orin 提示了一些错误消息、因此我们认为接收器已激活。

    DPHY 的 HSTX 发送电压依赖于在数据包 HS 部分期间提供端接的接收端[/引号]

    这些词语意味着电压取决于接收器的配置?

    我们不知道"对接口应用动态端接"是什么意思、您能详细说明?

    此致!

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

    Jim、

    MIPI CSI-2 D-PHY 物理接口使用动态端接方案。 您可以在此处进一步了解物理接口、例如:

    https://download.tek.com/document/61W_25772_0_HR.pdf

    因此在波形的 HS 部分期间、接收器(ORIN)将以差分方式端接100欧姆信号。 如果接收器未激活、则信号将显示更高的振幅。 首先、请确保将 Orin 设置为 DPHY 模式、而不是 DPHY 模式。 您可能还需要验证接收器是否配置为每通道400Mbps 的速率接收数据。  

    另外、请确保在960中、由于大家使用的是400Mbps/通道、因此需要从数据表的第7.4.19节对这些额外设置进行编程、从而确保计时正确:

    此致、

    凯西  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外,在960寄存器转储中,0xA5用于测量以 MHz 为单位的 REFCLK 频率,读取值为0x1d (29MHz)。 您能否确认正在使用频率为25MHz 的振荡器?

    您好、Zoe、

    感谢你的帮助。

    我们确认25MHz 频率用于 REFCLK 引脚、但当在不同的时间读取时、0xA5中的值从0x1B~0x1D (27-29)摆动。

    这意味着什么?

    此致!

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

    大家好、Casey、谢谢您的专业讲解、我们发现当我们运行脚本读取 NVIDIA Orin 端的流时、电压确实正常。

    此致!