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.

DS90UB953A-Q1: Buffer errors trying to stream 3840x1080 @ 30 fps

Part Number: DS90UB953A-Q1
Other Parts Discussed in Thread: DS90UB954-Q1

We have a design with DS90UB953 on one end of the FPD link and a DS90UB954 on the other side, and we can successfully read 1920x1080 frames at ~57-59 fps. We are now trying to implement reading 3840x1080 frames at ~29-30 fps. However, we are seeing buffer errors show up on the TDES side with the BUFFER_ERROR bit of RX_PORT_STS2 set.  What could be causing this buffer error?  It seems like if we can do 1920x1080 @ 60fps we should be able to do 3840x1080 @ 30fps.  Is there something about the line length that could be causing this issue?  What else should we look at?

  • Hello Luis,

    The buffer overflows when the data cannot be transmitted into the CSI output port faster than it is being received. So, it indicates an issue of aggregating the two much data from many sensors or the received line length is larger than the buffer can store.
    The DS90UB954-Q1 has a 16kb line buffer (FIFO) per port, so normally it could support this format, as long as the average rate of video lines coming in is slow enough to ensure that the line buffer won't overfill on the DES which also depends on the configured CSI-2 output rate (which would determine the FIFO drain rate) and the CSI-2 lane rate/line timing on the CSI-2 input side (which would determine the FIFO fill rate).

    To be able to calculate exactly we will require the following details:

    Are you using one camera or two?

    What is the data type or number of bits per pixel ?

    Do you have any other error reported by the DES?

    What is the used CSI output lane speed? 

    Are you using synchronoized forwarding or Round Robin forwarding?

    What is the value of the REFCLK connected to the DES?

    Is your SER running on back channel Synch mode, or using and external Oscillator? of external, what is the value?

  • Hi Hamzeh,

    Thanks for your response.  Here are the answers to your questions:

    • Are you using one camera or two?
      • One Sensor configured to 3840x1080 @ 29fps, 800Mbps per lane and 4 lanes
    • What is the data type or number of bits per pixel ?
      • 2B or Raw10, 10bits per pixel
    • What is the used CSI output lane speed? 
      • 800Mbps per lane and 4 lanes
    • Are you using synchronoized forwarding or Round Robin forwarding?
      • We are using RR.
        • {0x20, 0x20},  // CSI CTL - Port1 Disabled
        • {0x21, 0x01},  // CSI CTL - RR Fwd
    • What is the value of the REFCLK connected to the DES?
      • 25Mhz
    • Is your SER running on back channel Synch mode, or using and external Oscillator? of external, what is the value?
      • Synch Mode
    • Do you have any other error reported by the DES?
      • No CSI errors -  here is the quick status log
        • FPD 954 Reg 0x03 - Revision : 20
        • FPD 954 Reg 0x04  - Dev Status: DF
        • FPD 954 Reg 0x4D - RX Port Err/Status: 03
        • FPD 954 Reg 0x4E  - RX Port Err/Statu2- : 54
        • FPD 954 Reg 0x51 - Ser Alarm : 00
        • FPD 954 Reg 0x54 - Ser CSI-2 ERR : 00
        • FPD 954 Reg 0x55 - Parity Err Byte High: 00
        • FPD 954 Reg 0x56 - Parity Err Byte Low: 00
        • FPD 953 Reg 0x02 - Revision: 33
        • FPD 953 Reg 0x06 - Revision: 41
        • FPD 953 Reg 0x07 - Revision: 28
        • FPD 953 Reg 0x50 - Revision: 20
        • FPD 953 Reg 0x51 - Dev Status: C0
        • FPD 953 Reg 0x52 - GPIO Stat: 45
        • FPD 953 Reg 0x5C - CSI Err Count : 00
        • FPD 953 Reg 0x5D - CHKSUM / ECC Err : 00
        • FPD 953 Reg 0x5E - LANE01 Err : 00
        • FPD 953 Reg 0x5F - LANE23 Err: 00
        • FPD 953 Reg 0x60 - CSI CK Err: 00
        • FPD 953 Reg 0x61 - CSI VC ID: 2B
        • FPD 953 Reg 0x62 - WC_LSB: c0
        • FPD 953 Reg 0x63 - WC_MSB: 12
  • Hello Luis,

    Calculating the required buffer for your data:
    3840 pixels * 10 bits = 384000 bits per line / 8 bits = 4.8kb per line which is good below the available buffer 16kb, means this should work fine.

    Reviewing the provided register values we can see that in reg 0x4E[6] line length is changinging which leads to the Buffer error!

    Question, are these errors are showing immediately after power up or he show up during normal operation?  If this happens only after start up then the error can be cleared by reading the register once to clear

  • Hi Hamzeh,

    When we have it working in the 1920x1080 setup, register 0x4E[6] is also set but the stream is still functional -- so in that case we are getting 0x4E = 0x44 instead of 0x54.  That is why we didn't/don't suspect that as the problem.  As far as my teammate and I remember, the error didn't clear when reading the register in either the 1920x1080 or 3840x1080 case.

  • Luis,

    Is there any way to reduce the sensor lane speed down from 800Mbps/lane? Because the data format you are transmitting should only require around 350Mbps/lane. What I think it happening here is that the sensor is sending the whole frame very quickly with minimal LP11 time between lines, and then sitting idle for a long period of time before the next frame. Instead it would be better to reduce the vertical blanking by slowing down the line rate while still maintaining the same pixels and frame rate. The 954 is also configured to output 800Mbps/lane, but the DPHY timing parameters are probably slightly slower on the 954 side compared to what the sensor is outputting which is leading to an offset in how quickly 954 can send the lines vs. how quickly they are coming in over multiple lines in a frame. That is causing a buffer overflow. 

    Best Regards,

    Casey