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.

ADS54J66: mode Test Patterns

Part Number: ADS54J66

Nous voudrions utiliser le mode Test Patterns pour un test automatique de l'ADS54J66.
Le type de pattern utiisé est le mode 0100 = Output digital ramp: output data increment by one LSB every clock cycle from code 0 to 16384


Nous rencontrons des problèmes de fonctionnement.


La rampe est incrémentée de 1 tous les 4 échantillons.
 
 

La rampe passe d'environ 8150 (notre exemple 8137) à 8192 (-8192 en signé exemple ci dessous)
 
 

La rampe reste bloquée vers 8192 pendant environ 200 échantillons (8192 - 8138 = 54 *4 échantillons/incrément = 216 échantillons ?)
 
 

Puis la rampe redémarre
 
Ce phénomène se reproduit sur les 3 cartes que nous avons.

Pouvez vous nous aider à résoudre ce problème (mauvaise configuration ou problème composant?)

  • Philippe,

    When using test pattern modes, you need to disable the interleave engine by writing a 0x03 to address 0x18 of page 0x6100. Attached are the results of the pattern with this enabled and disabled. With the IL engine disabled, it appears the 2nd LSB has a pattern but it is not a typical pattern one would see with a ramp. I am checking with the design team regarding this.

    Regards,

    Jim

    ADS54J66_ramp_test_Mode_8.pptx

  • Philippe,

    I was informed the ramp only uses 14 bits so you need to ignore the 2 LSB's.

    Regards,

    Jim

  • Hi,

    Thanks for the fast response.

    First of all, we have activated the counter pattern without any problems. As you said the counter is only on the 14MSBs bits. We have already ignored the 2 LSBs bits.

    The problem we have is that (as you can see on the pictures) the counter increase up to 8137 (0x1FC9) then jump to -8192 (aka 8192 : 0x2000) and stay at this value for 220 samples ((8192-8137)*4) and then restart the incrementation.

    We are on a Xilinx Kintex Ultrascale and when we look at the RAW values that leave the JESD IP with an Integrated Logic Analyzer (ILA) on Vivado, we can see the same issue.

    Do you have any ideas.

        

    Regards

  • Philippe,

    Do you see this when you disable the interleave engine by writing a 0x03 to address 0x18 of page 0x6100?

    Regards,

    Jim

  • Jim,

    The interleave engine is disabled

    I enclose you some of our code
    Regards,
    Philippe
    	// Write Device configuration
            // ADS54Jxx_ANALOG
            data.push_back(static_cast<uint32_t>(0x000081));
    
    
            // ADS54Jxx_DIGITAL
            data.push_back(static_cast<uint32_t>(0x400468));    // Selects Main digital Page (0x6800)
            data.push_back(static_cast<uint32_t>(0x400300));
    
            data.push_back(static_cast<uint32_t>(0x60f701));    // digital top reset
            data.push_back(static_cast<uint32_t>(0x60f700));    // digital top reset
            data.push_back(static_cast<uint32_t>(0x70f701));    // digital top reset
            data.push_back(static_cast<uint32_t>(0x70f700));    // digital top reset
    
            data.push_back(static_cast<uint32_t>(0x001180));    // Selects Master Page (0x80)
            data.push_back(static_cast<uint32_t>(0x005380));    // CLK Div divide by 2
            data.push_back(static_cast<uint32_t>(0x0039C0));    // Always write 1
            data.push_back(static_cast<uint32_t>(0x005920));    // Always write 1
    
            data.push_back(static_cast<uint32_t>(0x600001));    // reset digital channel A & B
            data.push_back(static_cast<uint32_t>(0x600000));    // clear reset
            data.push_back(static_cast<uint32_t>(0x700001));    // reset digital channel C & D
            data.push_back(static_cast<uint32_t>(0x700000));    // clear reset
    
            data.push_back(static_cast<uint32_t>(0x400461));    // Selects Decimation filter Page (0x6141)
            data.push_back(static_cast<uint32_t>(0x400341));
            data.push_back(static_cast<uint32_t>(0x600008));    // dec filter page mode 8
            data.push_back(static_cast<uint32_t>(0x700008));    // dec filter page mode 8
            data.push_back(static_cast<uint32_t>(0x600104));    // Always write 1
            data.push_back(static_cast<uint32_t>(0x700104));    // Always write 1
    
            data.push_back(static_cast<uint32_t>(0x40046A));    // Selects JESD analog Page (0x6A00)
            data.push_back(static_cast<uint32_t>(0x400300));
            data.push_back(static_cast<uint32_t>(0x601602));    // Set mode x40
            data.push_back(static_cast<uint32_t>(0x701602));
    
            data.push_back(static_cast<uint32_t>(0x400469));    // Selects JESD Digital Page (0x6900)
            data.push_back(static_cast<uint32_t>(0x400300));
    
            data.push_back(static_cast<uint32_t>(0x600020));    // set control mode
            data.push_back(static_cast<uint32_t>(0x600101));    // JESD dig 20X
            data.push_back(static_cast<uint32_t>(0x700020));    // set control mode
            data.push_back(static_cast<uint32_t>(0x700101));    // JESD dig 20X
    
            data.push_back(static_cast<uint32_t>(0x600080));    // set CTRL K
            data.push_back(static_cast<uint32_t>(0x60060F));    // set K to 16
            data.push_back(static_cast<uint32_t>(0x700080));    // set CTRL K
            data.push_back(static_cast<uint32_t>(0x70060F));    // set K to 16
    
            data.push_back(static_cast<uint32_t>(0x400501));    // Disable Broadcast
            data.push_back(static_cast<uint32_t>(0x700121));    // JESD dig 20X + SyncbAB ???    //0x700101));    // JESD dig 20X
            data.push_back(static_cast<uint32_t>(0x400500));    // Enable Broadcast
    
            data.push_back(static_cast<uint32_t>(0x400461));    // Selects Page (0x6100)
            data.push_back(static_cast<uint32_t>(0x400300));
            data.push_back(static_cast<uint32_t>(0x606806));    // Disable DC offset correction
            data.push_back(static_cast<uint32_t>(0x706806));    // Disable DC offset correction
    
            data.push_back(static_cast<uint32_t>(0x401803));    // Interleaving bypass
            data.push_back(static_cast<uint32_t>(0x00110F));    // Selects ADC Page (0x0F)
            data.push_back(static_cast<uint32_t>(0x0075FF));    // Pattern 1 MSB
            data.push_back(static_cast<uint32_t>(0x0076FC));    // Pattern 1 LSB
            data.push_back(static_cast<uint32_t>(0x007700));    // Pattern 2 MSB
            data.push_back(static_cast<uint32_t>(0x007800));    // Pattern 2 LSB
            data.push_back(static_cast<uint32_t>(0x007440));    // Test Mode Counter