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.

THS788 not locking

Other Parts Discussed in Thread: THS788

Hi,

This is my first attempt with the THS788.

I am providing a clean 200 MHz clock to the device (measured with 1G scope)

When i initialize the THS788, i notice that the two DLL does not lock. (i wait about 500ms at start up, after reset)

Here is the result of the start sequence (sent via a UART port)

Init THS788...
id = 8010
status = 1
ctrl = 0
wriring 2 to ctrl (0x80)
ctrl = 0
status = 1
wriring A000 to ctrl (0x80)
ctrl (0x80) = A000
ctrl (0x81) = 0
status = 1

So, i can read the ID correctly. I issue a software reset (by wriring to 2 to Ctrl register), then i write 0xA000 to enable RCLK and SYNC (i've seen that on another thread).

However, the problem is, the status always returns 1, shouldn't it return 0xD, or at least 0x9 ?

Why does the 1G2 DLL won't lock... is there any way to verify that?

I am using DS4M200 from Maxim to generate the 200MHz clock.. 

if this can help, here is the init sequence code:

ths_read_reg(0x83,(uint8_t*)&id);
    debug("id = ");
    put_n(id,16);
    debug("\n\r");

    ths_read_reg(0x82,(uint8_t*)&status);
    debug("status = ");
    put_n(status,16);
    debug("\n\r");

    ths_read_reg(0x80,(uint8_t*)&ctrl);
    debug("ctrl = ");
    put_n(ctrl,16);
    debug("\n\r");

    ctrl = (1<<1) ;
    debug ("wriring ");
    put_n(ctrl,16);
    debug (" to ctrl (0x80)\n\r");
    ths_write_reg(0x80,(uint8_t*)&ctrl);
    DelayMs(50);
    ths_read_reg(0x80,(uint8_t*)&ctrl);
    debug("ctrl = ");
    put_n(ctrl,16);
    debug("\n\r");

    DelayMs(250);

    ths_read_reg(0x82,(uint8_t*)&status);
    debug("status = ");
    put_n(status,16);
    debug("\n\r");


    ctrl = (1<<15) | (1 << 13);
    debug ("wriring ");
    put_n(ctrl,16);
    debug (" to ctrl (0x80)\n\r");
    ths_write_reg(0x80,(uint8_t*)&ctrl);

    ths_read_reg(0x80,(uint8_t*)&ctrl);
    debug("ctrl (0x80) = ");
    put_n(ctrl,16);
    debug("\n\r");

    ths_read_reg(0x81,(uint8_t*)&ctrl);
    debug("ctrl (0x81) = ");
    put_n(ctrl,16);
    debug("\n\r");

    DelayMs(250);

    ths_read_reg(0x82,(uint8_t*)&status);
    debug("status = ");
    put_n(status,16);
    debug("\n\r");

Any ideas?

Thanks a lot,

  • Just measured RCLK, and i have a super clean 75MHz clock... is this a good news?

    Also, here is a very strange behavior.

    If i read the Status of any of the channels, i get:

    status A (0x4) = 15
    status B (0x24) = 15
    status C (0x44) = 15
    status D (0x64) = 15

    Meaning they have all DLL lock. Now, the channels were not enabled when i pooled their status. If i send 0x1 to the control of a channel (like 0x00 for channel 1) to enable it, and then i read the status again, i get:

    status A (0x4) = 14 

    To my astonishment, the lock is lost.

    I feel like i am missing something fundamental.. but i don't know what!

    Thanks for your help.

    EDIT: I just checked the evaluation board schematic, pin by pin, and everything seems similar to my board. The only difference is that i connect test pins to VCC (as described in datasheet).

  • Oh!

    Problem solved.

    There was no problem in the first place, just a wrong interpretation on my end.

    The DLL flags are active low. They are 0, meaning the DLL are locked!!

    It all makes sens now!

    Verry sorry!!

  • Hello

    I am trying to interface arduino due with THS788.  I need information about evaluation board of THS788. Is it available or would I have to make it myself? Can I find a schematic somewhere?

    Regards

    Abdul Wadood

    stabwdatdpk@hotmail.com

  • Wadood,

    I am moving your post to the correct forum.