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.

DS160PR410: ALL_DONE_N pin behavior

Part Number: DS160PR410
Other Parts Discussed in Thread: , , DS160PR810

Hi Sir,

My customer design DS160PR410 in SMBus Master mode.

But they can't do the EEPROM programming in their factory side. So they want to use BMC to programming the DS160PR410.

And they have below following questions need your help to clarify.

Thank you

1. If they keep ENSMB=L1, but the EEPROM is empty, then use BMC to control DS160PR410, then what will be the ALL_DONE_N pin behavior?

2. If customer use BMC to control DS160PR410, should they must to change ENSMB=L3?

   When ENSMB=L3, what the ALL_DONE_N pin behavior will be?

3. as below capture from datasheet, if we set ENSMB=L1 but EEPROM is empty, which means DS160PR410 can't read any data from EEPROM, the ALL_DONE_N pin will keep high or it will remain a while high then go to low and change to SMBus slave mode.

We need your help to clarify the questions to let customer know how to programming DS160PR410 will be the best way for their debugging.

Thank you

  • Hello Anne,

    1.  If the EEPROM is empty, the DS160PR410 would still attempt to read the data from the EEPROM (after driving the READ_EN_N pin low) and then drive the ALL_DONE_N pin low.

    2.  It is still possible to use BMC to program the DS160PR410 with ENSMB=L1 after it drives the ALL_DONE_N pin low and enters the I2C slave mode.

    3.  See 1 and 2.

    Regards,

    Davor

  • Hi Davor,

    The All_DONE_N pin on customer's board wasn’t driven low.

    So we want to make sure again. There’s two status below. Which one is right?

    1. If our EEPROM is empty, the DS160PR410 would still attempt to read the data from the EEPROM, then drive the All_DONE_N pin low.

    2. EEPROM can’t be empty, otherwise DS160PR410 will always try to read the data, the All_DONE_N pin won’t be driven low.

  • Hello Anne,

    If the EEPROM device is empty, the DS160PR410 would still attempt to read the data from the EEPROM, and then drive the ALL_DONE_N pin low.

    The DS160PR410 does wait for the bus to be free in order to poll for the EEPROM. Is something hanging the I2C bus, so the DS160PR410 never gets a chance to poll for the EEPROM?

    I assume the READ_EN_N is driven low to trigger the EEPROM load from the DS160PR410?

    Regards,

    Davor

  • Hi Davor,

    Customer has confirmed some items and measured important signal and I2C waveform as follows.

    There are eight DS160PR410 in this design. The READ_EN_N is driven low for the first device. And the EEPROM does have an 8-bit 0xA0 address.

    However, the All_DONE pin isn’t driven low.

    Here are the results of some specific signals.

    (The waveform of the P3V3, EN_U1(1st device, pull down to ground), All_DONE_U1(1st device, connect to second device READ_EN_N), All DONE_U2(2nd device connect to 3rd device READ_EN_N).

     

    The first command of I2C bus are shown below. (address: 0xA0)

    And the whole I2C waveform decode as attachment.

    tek0000I2C.csv

  • Hi Davor,

    Customer has confirmed some items and measured important signal and I2C waveform as follows.

    There are eight DS160PR410 in this design. The READ_EN_N is driven low for the first device. And the EEPROM does have an 8-bit 0xA0 address.

    However, the All_DONE pin isn’t driven low.

    Here are the results of some specific signals.

    (The waveform of the P3V3, EN_U1(1st device, pull down to ground), All_DONE_U1(1st device, connect to second device READ_EN_N), All DONE_U2(2nd device connect to 3rd device READ_EN_N).

     

    The first command of I2C bus are shown below. (address: 0xA0)

    And the whole I2C waveform decode as attachment.

    4118.tek0000I2C.csv

  • Hi Davor,

    Customer has confirmed some items and measured important signal and I2C waveform as follows.

    There are eight DS160PR410 in this design. The READ_EN_N is driven low for the first device. And the EEPROM does have an 8-bit 0xA0 address.

    However, the All_DONE pin isn’t driven low.

    Here are the results of some specific signals.

    (The waveform of the P3V3, EN_U1(1st device, pull down to ground), All_DONE_U1(1st device, connect to second device READ_EN_N), All DONE_U2(2nd device connect to 3rd device READ_EN_N).

     

    The first command of I2C bus are shown below. (address: 0xA0)

    And the whole I2C waveform decode as attachment.

    3312.tek0000I2C.csv

  • Hello-

    Can you confirm that the devices are in the SMBus Master mode by measuring the voltage on the EN_SMB pins of each device?  If set correctly, the voltage on the EN_SMB pins should be around 0.85V.  If below 0.4V, then the devices are configured for Pin Mode.  If above 1.3V (but lower than 2.2V), then the devices are configured for SMBus Slave mode.

    Could you also send me the schematic for an offline review?

    Regards,

    Davor

  • Hi Davor,

    The voltage on the EN_SMB pins are all around 0.9V which means the SMBus of eight device are all in Master mode.

    Attached is the schematic. Please help review our schematic and give us advice.

    SY6Q_RISER_Board_4A_A_v15_20200519_Quanta.pdf

    Thanks,

    Li-Jyuan

  • Hello-

    I've reviewed the schematic and did not see any issues.

    I have tested the DS160PR410EVM-RSC (featuring 8 devices) in I2C Master mode with an empty EEPROM and observed the same results.  It actually does look like that you need to have the device operate in SMBus Slave Mode (L3), if the EEPROM is empty, to be able to program the device with a BMC.

    Regards,

    Davor

  • Hi Davor,

    Thanks for your help.

    We wonder know how DS160PR410 identify the table in EEPROM is right, wrong or empty? And how does it work after reading the wrong or empty table from EEPROM?

    You once said the DS160PR410 would still attempt to read the data from the EEPROM (after driving the READ_EN_N pin low) and then drive the ALL_DONE_N pin low even If the EEPROM is empty. Final, change the SMBus master to  slave.

    Can you test just one device in I2C Master Mode with an empty EEPROM? Will the All_Done_pin work?


    Best Regards,

    Li-Jyuan

  • Hello Li-Jyuan,

    The DS160PR410 expects an EEPROM table to be in a specific format (See SNLA320 for more info).  It first looks at the Base Header and if the base header data is unexpected, it will attempt to read it several times until the DS160PR410 EEPROM state machine enters an idle state. 

    My assumption was that the ALL_DONE_N pin would go low after entering the EEPROM idle state (I was recently working on a similar device that behaves just like that), however, my assumption was wrong.  The DS160PR410 behaves a little differently.  It enters the EEPROM idle states after several attempts to load from a empty EEPROM device, but its ALL_DONE_N pins never goes low.

    I have confirmed this on the DS160PR410EVM-RSC (8 devices daisy-chained for EEPROM load operation) and the DS160PR410EVM-SMA (a single device).  This was also confirmed in simulation.

    While the device EEPROM is in the idle state, the device can operate normally. 

    So, if the plan is to always program the DS160PR410 devices using BMC, ideally you want the DS160PR410 devices to be configured for the i2C Slave Mode.  However, if the DS160PR410 devices are configured for the I2C Master mode, programming them with a BMC is also acceptable.

    Regards,

    Davor

  • Hi Davor,

    Thank you for your reply.
    Sorry, we don' really understand what you mean. Can we check with you again?

    While the device EEPROM is in the idle state, the device can operate normally, right?
    But you said "DS160PR410 enters the EEPROM idle states after several attempts to load from a empty EEPROM device, but its ALL_DONE_N pins never goes low". Why the EEPROM has in the idle state, but ALL_DONE_N pins still don't go low?
    Which status is your meaning?

    In addition, we only need to write the program at startup, so we do not want to use BMC to program the DS160PR410. We prefer use EEPROM Self Load function. Also, there's a switch to isolate the SMBus on Mother_Board and Riser_Board in this design. And the All_Done_N pin in our design is the key to control switch(low-open; high-isolate).

    Final, in SMBus Master Mode, All_Done_Pin olny can be drive low when DS160PR410 read a right EEPROM table. It's risk for every design. While the EEPROM table is wrong or empty, then the IC can't work normally, right? Will the DS160PR410 device update this area in the furture?

    Best Regards

    Li-Jyuan

  • Hello Li-Jyuan,

    Yes, while the device EEPROM is in the idle state, the device can operate normally.

    There is an EEPROM_CFG_FAIL signal that affects the state of the ALL_DONE_N pin.  As the device failed to load a correct EEPROM image, it goes into the EEPROM idle state, but does not drive the ALL_DONE_N pin low to indicate the EEPROM image was not loaded.

    If the EEPROM table is wrong or empty, the IC can work normally, but it would have default CTLE settings that may not be optimal for your design. The ALL_DONE_N pin would not go low indicating it failed to load an EEPROM image.

    There are no plans to update the DS160PR410 design.  However, we do realize that an empty EEPROM should be qualified as a valid EEPROM image, so the behavior of the ALL_DONE_N pin was updated in the DS160PR810 (an Octal-channel linear redriver) design.  We're currently sampling this device and are planning to release it by the end of the year.

    Regards,

    Davor

  • Hi Davor,

    Thanks for your clarification.

    What is the default  CTLE settings If the EEPROM table is wrong or empty?

    The DS160PR810 design will support the behavior: that the ALL_DONE_N pin would go low as reading a  empty or wrong EEPROM table.

    Will the DS160PR810 design support the following behavior? When reading an empty or wrong EEPROM table, the ALL_DONE_N pin will go low. Looking forward to it.

    Best Regards,

    Li-Jyuan

  • Hello Li-Jyuan,

    There are two CTLE stages in the DS160PR410.  By default, both stages are set to the lowest setting.  The register defaults are provided in the DS160PR410 programming guide.

    Yes, the DS160PR810 ALL_DONE_N pin would go low when reading from an empty or wrong EEPROM.

    Regards,

    Davor

  • Hi Davor,

    Thanks for your kindly help.

    The default value is -0.8dB(lowest setting), right? Is that the package loss?

    Best Regards,

    Li-Jyuan

  • Hello Li-Jyuan,

    Yes.  It is the loss of the whole data path, not just the package.

    Regards,

    Davor