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.

DAC39RF10EF: Can DAC39RF10 manage data not encapsulated on JESD204 protocol?

Part Number: DAC39RF10EF
Other Parts Discussed in Thread: DAC39RF10

Tool/software:

Hello, 

We are testing DAC39RF10 IC and we would need to know if the following configuration is possible:

- 1 -> PRBS generator inside one FPGA (generating PRBS31 data)

- 2 -> PRBS generator directly attacking only one GTH transceiver (on UltraScale FPGA). So only one lane of the DAC is used.

- 3 -> Encoding 8B/10B is used (configured inside the transceiver)

- 4 -> JTEST register is set to 0x4 (PRBS31 encoding)

- 5 -> Data is not encapsulated in JESD204 protocol. This means that no JESD204 protocol is used. This is the main doubt we have about our setup. We directly attack GTH transceivers with PRBS generator and 8b/10b encoding. So data received by the DAC is not encapsulated on JESD204 .

- 6 -> Activate BER_EN to check errors during communication

We have done several tests and through the GUI for the DAC, we see that BER error counters goes to 0xFF instantly after enable JESD_EN bit on corresponding register. 

Does the DAC require data received to be encapsulated on JESD204 protocol?? If not, Do we have to use all lanes (16) to work with JMODE0 , even when JTEST mode is set to 0x04 (PRBS31)??

Thanks by advance! 

Regards

  • Hey Alejandro, 

    The data does not need to be encapsulated in the JESD link. What does need to happen however is all JESD related settings need to be correct, even though JESD itself is not being used. 

    For example, If you want to run the SERDES at 12.8Gbps in 8b10b you would need to provide the DAC the correct clock, 10.24GHz would work. 

    You want to essentially set all JESD related registers as if you are sending real data over to the DAC, Even your DUC_L setting and JESD_M setting all need to be valid. It would be best to try to get a link up first with data and then switch over to PRBS if that is possible. 

    If you can provide more information regarding what configuration you want to use with the DAC (JMODE, update rate, interpolation, stream count, etc). I can help with this testing further. 

    Regards, 

    Matt

  • Dear Matthew,

    Sorry for my late reply ,but I have been unable to continue with tests until today. I will try to describe our setup, and configuration used.

    - Serdes rate : 10.65Gbps

    - Data rate : 8.52Gbps

    - FPGA clock : 133.125 MHz (the GUI give us a wrong value (double as expected)). Below you can find a screenshot of GUI

    - No SYSREF used

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/73/pastedimage1734007910033v1.png

    In addition, we add the log with register values loaded on DAC for you to check if something is wrong with configuration

     

    DAC39RF10.read(0x02E8) # = 0x00
    # Loaded File: C:\Program Files\Texas Instruments\DAC39RF10 EVM GUI\supportFiles\config\LMX1204.cfg
    LMX1204.write(0x00,0x0001)
    LMX1204.write(0x5A,0x0000)
    LMX1204.write(0x56,0x0004)
    LMX1204.write(0x4F,0x0005)
    LMX1204.write(0x4B,0x0003)
    LMX1204.write(0x48,0x0004)
    LMX1204.write(0x43,0x51CB)
    LMX1204.write(0x41,0x65F0)
    LMX1204.write(0x22,0x04C0)
    LMX1204.write(0x21,0x0000)
    LMX1204.write(0x1D,0x05FF)
    LMX1204.write(0x1C,0x0A08)
    LMX1204.write(0x19,0x0119)
    LMX1204.write(0x18,0x0001)
    LMX1204.write(0x17,0xE040)
    LMX1204.write(0x16,0x0478)
    LMX1204.write(0x15,0x0EF8)
    LMX1204.write(0x14,0x0EF8)
    LMX1204.write(0x13,0x0EF8)
    LMX1204.write(0x12,0x0EF8)
    LMX1204.write(0x11,0x0074)
    LMX1204.write(0x10,0x1200)
    LMX1204.write(0x0F,0x0B80)
    LMX1204.write(0x0E,0x0002)
    LMX1204.write(0x0D,0x0003)
    LMX1204.write(0x0C,0x0000)
    LMX1204.write(0x0B,0x0000)
    LMX1204.write(0x09,0x0010)
    LMX1204.write(0x08,0x0130)
    LMX1204.write(0x07,0x0001)
    LMX1204.write(0x06,0xC924)
    LMX1204.write(0x05,0x493F)
    LMX1204.write(0x04,0x3F11)
    LMX1204.write(0x03,0x1F87)
    LMX1204.write(0x02,0x0083)
    LMX1204.write(0x00,0x0000)
    # Loaded File: C:\Program Files\Texas Instruments\DAC39RF10 EVM GUI\supportFiles\config\LMK04828 8b10b.cfg
    LMK04828.write(0x000,0x80)
    LMK04828.write(0x000,0x00)
    LMK04828.write(0x002,0x00)
    LMK04828.write(0x100,0x01)
    LMK04828.write(0x104,0x20)
    LMK04828.write(0x106,0xF8)
    LMK04828.write(0x107,0x00)
    LMK04828.write(0x108,0x01)
    LMK04828.write(0x10E,0xF9)
    LMK04828.write(0x10F,0x00)
    LMK04828.write(0x110,0x02)
    LMK04828.write(0x113,0x00)
    LMK04828.write(0x116,0xF1)
    LMK04828.write(0x117,0x05)
    LMK04828.write(0x118,0x02)
    LMK04828.write(0x11B,0x00)
    LMK04828.write(0x11E,0xF1)
    LMK04828.write(0x11F,0x05)
    LMK04828.write(0x120,0x01)
    LMK04828.write(0x123,0x02)
    LMK04828.write(0x124,0x22)
    LMK04828.write(0x126,0xF9)
    LMK04828.write(0x127,0x00)
    LMK04828.write(0x128,0x01)
    LMK04828.write(0x129,0x55)
    LMK04828.write(0x12B,0x02)
    LMK04828.write(0x12C,0x20)
    LMK04828.write(0x12D,0x00)
    LMK04828.write(0x12E,0xF0)
    LMK04828.write(0x12F,0x50)
    LMK04828.write(0x130,0x01)
    LMK04828.write(0x131,0x55)
    LMK04828.write(0x133,0x02)
    LMK04828.write(0x134,0x22)
    LMK04828.write(0x135,0x00)
    LMK04828.write(0x136,0xF0)
    LMK04828.write(0x137,0x01)
    LMK04828.write(0x138,0x45)
    LMK04828.write(0x139,0x00)
    LMK04828.write(0x13A,0x00)
    LMK04828.write(0x13B,0x20)
    LMK04828.write(0x13C,0x00)
    LMK04828.write(0x13D,0x08)
    LMK04828.write(0x13E,0x03)
    LMK04828.write(0x13F,0x00)
    LMK04828.write(0x140,0x07)
    LMK04828.write(0x141,0x00)
    LMK04828.write(0x142,0x08)
    LMK04828.write(0x143,0x00)
    LMK04828.write(0x144,0x87)
    LMK04828.write(0x145,0x00)
    LMK04828.write(0x146,0x18)
    LMK04828.write(0x147,0x00)
    LMK04828.write(0x148,0x33)
    LMK04828.write(0x149,0x02)
    LMK04828.write(0x14A,0x02)
    LMK04828.write(0x14B,0x02)
    LMK04828.write(0x14C,0x00)
    LMK04828.write(0x14D,0x00)
    LMK04828.write(0x14E,0x00)
    LMK04828.write(0x14F,0x7F)
    LMK04828.write(0x150,0x01)
    LMK04828.write(0x151,0x02)
    LMK04828.write(0x152,0x00)
    LMK04828.write(0x153,0x00)
    LMK04828.write(0x154,0x0C)
    LMK04828.write(0x155,0x00)
    LMK04828.write(0x156,0x0C)
    LMK04828.write(0x157,0x00)
    LMK04828.write(0x158,0x78)
    LMK04828.write(0x159,0x00)
    LMK04828.write(0x15A,0x78)
    LMK04828.write(0x15B,0xD4)
    LMK04828.write(0x15C,0x20)
    LMK04828.write(0x15D,0x00)
    LMK04828.write(0x15E,0x00)
    LMK04828.write(0x15F,0x0B)
    LMK04828.write(0x160,0x00)
    LMK04828.write(0x161,0x02)
    LMK04828.write(0x162,0x44)
    LMK04828.write(0x163,0x00)
    LMK04828.write(0x164,0x00)
    LMK04828.write(0x165,0x0C)
    LMK04828.write(0x171,0xAA)
    LMK04828.write(0x172,0x02)
    LMK04828.write(0x17C,0x15)
    LMK04828.write(0x17D,0x33)
    LMK04828.write(0x166,0x00)
    LMK04828.write(0x167,0x00)
    LMK04828.write(0x168,0x01)
    LMK04828.write(0x169,0x59)
    LMK04828.write(0x16A,0x20)
    LMK04828.write(0x16B,0x00)
    LMK04828.write(0x16C,0x00)
    LMK04828.write(0x16D,0x00)
    LMK04828.write(0x16E,0x04)
    LMK04828.write(0x173,0x60)
    LMK04828.write(0x139,0x00)
    LMK04828.write(0x143,0x11)
    LMK04828.write(0x140,0x00)
    LMK04828.write(0x144,0x74)
    LMK04828.write(0x143,0x11)
    LMK04828.write(0x143,0x31)
    LMK04828.write(0x143,0x11)
    LMK04828.write(0x144,0xFF)
    LMK04828.write(0x139,0x03)
    LMK04828.write(0x14A,0x06)
    LMK04828.write(0x147,0x00)
    LMK04828.write(0x139,0x00)
    LMK04828.write(0x143,0x10)
    LMK04828.write(0x140,0xFF)
    LMK04828.write(0x11C,0x22)
    LMK04828.write(0x11F,0x11)
    LMK04828.write(0x11E,0xF0)
    LMX1204.write(0x09,0x0008)
    LMX1204.write(0x10,0x1080)
    DAC39RF10.write(0x0000,0x80)
    time.sleep(0.1)
    DAC39RF10.write(0x0101,0x00)
    DAC39RF10.write(0x0102,0x01)
    DAC39RF10.write(0x0103,0x03)
    DAC39RF10.write(0x0108,0x10)
    DAC39RF10.write(0x0109,0x14)
    DAC39RF10.write(0x010A,0x00)
    DAC39RF10.write(0x010B,0x00)
    DAC39RF10.write(0x0103,0x03)
    DAC39RF10.write(0x0103,0x01)
    DAC39RF10.write(0x0103,0x01)
    DAC39RF10.write(0x0105,0x1F)
    DAC39RF10.write(0x01C2,0x01)
    DAC39RF10.write(0x02E1,0x00)
    DAC39RF10.write(0x02E3,0x00)
    DAC39RF10.write(0x02E4,0x11)
    DAC39RF10.write(0x02E8,0x00)
    DAC39RF10.write(0x0723,0x1F)
    DAC39RF10.write(0x0724,0x0F)
    DAC39RF10.write(0x0725,0x1F)
    DAC39RF10.write(0x0726,0x0F)
    DAC39RF10.write(0x072E,0x14)
    DAC39RF10.write(0x072F,0x14)
    DAC39RF10.write(0x0739,0x14)
    DAC39RF10.write(0x0100,0x01)
    DAC39RF10.write(0x02E0,0x01)
    DAC39RF10.write(0x0100,0x04)
    DAC39RF10.read(0x0100) # = 0x00
    DAC39RF10.write(0x0121,0x04)
    DAC39RF10.read(0x0121) # = 0x04
    DAC39RF10.write(0x0121,0x04)
    DAC39RF10.read(0x0121) # = 0x04
    DAC39RF10.write(0x01A0,0x01)
    DAC39RF10.read(0x01A0) # = 0x01
    DAC39RF10.write(0x01A0,0x01)
    DAC39RF10.read(0x01A0) # = 0x01
    DAC39RF10.write(0x0100,0x01)
    DAC39RF10.read(0x0100) # = 0x01
    
    
     

    What we see in registers through GUI is:

    - Register LANE_STATUS[9] (0150h) is 0x01, which means that lane 9 is detecting a data signal

    - Register LANE_ERROR[9] (0160h) is giving us the value 0x02, which means that there is a disparity error

    - Register BER_CNT_REGISTER[9] (01B0h)  goes to 0xFF immediatly after run the test

    Maybe we have forgotten to configure any other register required, or one of the ones we have configured have no correct values for the test we want to carry out. So we would appreciate if  you can have a look on the log file and see if something is wrong or missing.

    Of course, If you need more additional data, please, let us know and we will provide you the information as soon as possible. 

    Regards!