SNLA267A March   2019  – June 2019 DS90UB953-Q1 , DS90UB954-Q1 , DS90UB960-Q1

 

  1.   How to Design a FPD-Link III System Using DS90UB953-Q1 and DS90UB954-Q1
    1.     Trademarks
    2. 1 Overview
      1. 1.1 System Level Functionality
    3. 2 Basic Design Rules
      1. 2.1 IDX and MODE Pin Verification
        1. 2.1.1 REF Clock, CLK IN, AON and Frequency Selection
          1. 2.1.1.1 Synchronous Mode
          2. 2.1.1.2 Non-Synchronous CLK_IN Mode
          3. 2.1.1.3 Non-Synchronous AON Mode
          4. 2.1.1.4 CSI Throughput
          5. 2.1.1.5 Clocking and Frequency Selection Example
      2. 2.2 Successful I2C Communication With 953 and 954
        1. 2.2.1 Aliasing
        2. 2.2.2 Port Selection on 954
      3. 2.3 I2C Passthrough Verification
      4. 2.4 Basic Diagnostic and Error Registers
    4. 3 Designing the Link Between SER and DES
      1. 3.1 Back Channel Configuration
      2. 3.2 BIST
        1. 3.2.1 BIST Configuration and Status
        2. 3.2.2 BIST Procedure
        3. 3.2.3 List of Registers Used in BIST Script
      3. 3.3 AEQ
      4. 3.4 CML Out
    5. 4 Designing Link Between SER and Image Sensor
      1. 4.1 Sensor Initialization Using SER GPIOs
      2. 4.2 CLKOUT
    6. 5 Designing Link Between DES and ISP
      1. 5.1 Frame Sync
        1. 5.1.1 Using SER GPIOs From the DES
        2. 5.1.2 Internal and External Frame Sync Configuration
        3. 5.1.3 Tables for Using GPIOs and Frame Sync
      2. 5.2 Port Forwarding
      3. 5.3 Pattern Generation
        1. 5.3.1 Accessing Indirect Registers
        2. 5.3.2 Pattern Generation From DES to ISP and SER to DES
    7. 6 Hardware Design
      1. 6.1 Basic I2C Connectors
        1. 6.1.1 I2C Pullups for SDA and SCL
      2. 6.2 AC Capacitor on FPD3 Link
      3. 6.3 Capacitance Used in Loop Filter
      4. 6.4 Critical Signal Routing
      5. 6.5 Time Domain Reflection
      6. 6.6 Return Loss and Insertion Loss
      7. 6.7 Power-over-Coax (PoC)
      8. 6.8 Voltage and Temperature Sensing
    8. 7 Appendix
      1. 7.1 Scripts
        1. 7.1.1  BIST Script
        2. 7.1.2  Example Sensor Initialization Script
        3. 7.1.3  CSI Enable and Port Forwarding Script
        4. 7.1.4  Enabling CMLOUT FPD3 RX Port 0 on 954
        5. 7.1.5  Remote Enabled SER GPIO Toggle Script
        6. 7.1.6  Local SER GPIO Toggle Script
        7. 7.1.7  Internal FrameSync on 953 GPIO1
        8. 7.1.8  External FrameSync on 953 GPIO0
        9. 7.1.9  SER GPIOs as Inputs and Output to DES GPIO
        10. 7.1.10 Pattern Generation on the 953 Script
        11. 7.1.11 Pattern Generation on the 954 Script
        12. 7.1.12 Monitor Errors for Predetermined Time Script
        13. 7.1.13 954 and 953 CSI Register Check Script
        14. 7.1.14 Time Till Lock Script on 953
      2. 7.2 Acknowledgments
  2.   Revision History

BIST Procedure

swru519_digital_reset.gifFigure 9. BIST Script Flowchart

The following steps will explain how BIST is conducted between the DS90UB953-Q1 and DS90UB954-Q1. After basic rules have been followed, BIST will determine the health of the link between the SER and DES only. Example code is listed in Section 7.1.1 and a list of registers used in the code is shown in Table 16 and Table 17.

Table 13. RESET_CTL Register Description on 953

ADDR. 0x01[7:3] 0x01[2] 0x01[1] 0x01[0]
Bits XXX X 0 1
Desc. Reserved Restart ROM Auto-Load Digital reset including registers Digital reset except registers
  1. Use the reset register to reset the entire digital block and set the serializer (SER) and deserializer (DES) to a known state.
    • Register 0x01 is the RESET_CTL register on both the 953 and 954.
    • Note that bit [0] in REST_CTL does not reset the registers. Bit [1] controls the digital reset responsible for clearing registers. Generally, it is better to conduct a digital reset without clearing the registers to save time initial troubleshooting steps.
  2. Table 14. DEVICE_STS Register Description on 954

    ADDR. 0x04[7] 0x04[7] 0x04[7] 0x04[7] 0x04[7] 0x04[7] 0x04[1:0]
    Bits X X X X 1 1 XX
    Desc. Configuration Checksum Passed Power-up Initialization Complete Reserved REFCLK Valid PASS Status LOCK Status Reserved

    Table 15. GENERAL_STATUS Register Description for Lock on 953

    ADDR. 0x52[7] 0x52[6] 0x52[5] 0x52[4] 0x52[3] 0x52[2] 0x52[1] 0x52[0]
    Bits X 1 X X X 1 X 1
    Desc. Reserved LOCK Status Reserved BC Link lost BIST Error detected FC High-speed lock detected BC error detected BC Link detected
  3. Confirm that SER and DES are locked by accessing the respective devices IDs and DES device status.
    • As mentioned before, verifying the correct SER and DES device IDs indicates that the correct DES device ID and SER alias ID is used when making I2C commands. The DEVICE_ID for both devices can be found in register 0x00 while the SER_ALIAS_ID can be found on the deserializer in register 0x5C.
    • The DES device status will indicate if the LOCK status is high. As mentioned before, the LOCK status serves the purpose of validating the link integrity of the connection between the SER and DES. When the LOCK status is high, the PLL in the DES is locked and validates the data and clock recovered from the serial input. As a result, the value should be 0xCF. DEVICE_STS on the 954 can be found in register 0x04.
  4. Enable the write permission for RX Port0.
    • On the DES, this bit allows data to be written to RX port 0 registers. Any combination of RX port registers can be written simultaneously. This applies to all paged FPD3 Receiver port registers. Remember, configuring parameters that pertain to RX port 0 registers require a write command. If permission to write RX port 0 is not given, then register values will not be changed even with correct write commands. The FPD3_PORT_SEL can be found in register 0x4C.
  5. On the SER, clear any previous errors in the system before enabling BIST by clearing the CRC errors and BIST CRC errors in addition to reading the BCC status and SER general status.
    • BIST CRC errors and CRC errors are cleared to ensure that the next BIST test only includes errors from the specified test. These errors are housed in the BC_CTRL register located at 0x49 on the 953. Value 0x28 selects the self-clearing bits to clear the BIST CRC and CRC errors.
    • Reading the bidirectional control channel (BCC) status has two functions. First, if there are any errors that occurred over the BCC, they may be flagged and categorized in this register. Second, reading this register may clear a flag that is raised in the SER general status register that can only be cleared when the BCC status register is read. The BCC_STATUS register is located at 0x79 on the 953.
    • The general status of the SER holds indicators for many different types of errors, including BIST CRC ERR and the RX LOCK DETECT. Verifying its value before BIST will show the changes that occur after BIST. A typical general status will indicate the value 0x45 showing that RX Lock Detect, HS PLL Lock, and Link Detect flags are high. GENERAL_STS can be found at register 0x52 on the 953.
  6. Read the BIST error counter before BIST.
    • In addition to checking the indicator if an error occurred, it is important to read the number errors before the test. If one error is forced, we expect this value to be 0x01 after the BIST has completed. The BIST_ERR_CNT can be found in register 0x54 of the 953.
  7. On the DES, read the BIST control register, enable the BIST, force the singular, multiple, or no errors, and read the RX port status after the BIST starts and before the BIST ends.
    • The BIST control register enables the BIST as well as various parameters important for BIST. Bit [0] of the BIST control represents BIST_EN. Reading it before and then after enabling BIST helps show that BIST has been enabled. By using the sleep command, BIST can run as long as the user desires. BIST_CTL can be located in register 0xB3 of the 954.
    • The RX port status, like the general status and BCC status on the 954, houses many useful error flags. These flags include: the BCC CRC error, lock status change, BCC sequence error, parity error, receiver pass indication, lock status, and locked to recovered clock status. Consider bit [4] which indicates the LOCK_STS_CHG. By reading this value right after the BIST is enabled, and right before the BIST is disabled, the user is able to tell if the lock status changed during BIST. It is important to read this register after BIST is started because enabling and disabling the BIST forces the devices to relock. RX_PORT_STS1 can be found in register 0x4D.
    • The port debug register is used for debugging various functions by enabling build in errors or tests. Bit [0] is self-clearing and controls the FORCE_ONE_BC_ERROR function. Bit [1], by comparison, controls FORCE_BC_ERRORS and must be cleared. This is helpful for testing the error detection of the system. The PORT_DEBUG register can be found at 0xD0 of the 954.
  8. Disable the BIST and write permissions of RX Port0.
    • Disabling the BIST is done through the BIST control register, 0xB3, on the DES. BIST uses all functionality of the BCC and disabling the BIST reestablishes communication between the SER and DES.
    • This bit allows data to be written to RX port 0 registers. Any combination of RX port registers can be written simultaneously. This applies to all paged FPD3 Receiver port registers. Because only reads are required at this stage the BIST, it is good practice to disable the write permission. The FPD3_PORT_SEL can be found in register 0x4C.
  9. Check for errors on the SER general status, DES device status, and BIST error count.
    • The general status of the 953, with register value 0x52, that was checked before BIST gave a value of 0x45. With the introduction of an error, a value of 0x4D is read from the register. This value indicates that the RX Lock Detect, HS PLL Lock, Link Detect, and BIST CRC Error flags are high.
    • The device status of the 954 was checked before BIST. Despite forcing an error in the system, the status should read still read 0xCF because the devices should still be LOCKED.
    • Before BIST was enabled, all possible BIST CRC errors were cleared and the BIST CRC error count was read. After forcing one error during BIST, one error should be displayed in the BIST_ERR_CNT. If the count is 0x01, that means that the devices were LOCKED, any errors that occurred were only produced during the BIST test, the error detection system is working as intended, and the link between the SER and DES is not producing any errors.

The LOCK and PASS statuses ensure that the serializer and deserializer are communicating effectively. By using the built-in self test (BIST), the LOCK between devices can be accurately evaluated. As a result, this is a fundamental step to ensure proper design of the board.