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.

How do I Set Up DAC 5687 EVM Board?

Other Parts Discussed in Thread: DAC5687

I am having trouble controlling the DAC 5687 chip on DAC 5687 EVM board.  I need help to set up the EVM board so that analog output changes proportionally to the digital input I enter.

Following are the four approaches I had tried:

1. I have verified the data that I wrote to the EVM board correctly at RP5, 6, 9 and 10.  I am writing at the data rate of 16 Mhz.  When I write 0x0 to the DAC and both of the analog output of Channels A and B show 0.  However, I cannot tell the difference of the analog output when writing 0x7FFF7FFF to the DAC.  I write other non-zero values.  Also show the same thing.  (I cannot tell the difference.)  I am hooking up the clock with my source clock, which runs at 84 Mhz.  What could be wrong?  Do I need a faster input clock?  How fast?  I have verified the 1.8 V and 3.3 V power supply to the board correctly.  I used SPI control software from TI to turn on FULL/FIR/FIFO Bypass only.

2. For DAC 5687 setup, I only turned ON FIR/FIFO Bypass but leave NCO and the rest OFF.  The interesting thing is the analog output is not proportional to the digital input I set.  For example, I write a 32-bit 0x7FFF7FFF (i.e. A=0x7FFF, B=0x7FFF).  The analog output is not half of the analog output when I write a 32-bit 0xFFFFFFFF.  The clock rate to CLK2 is 82 Mhz.  The CLK1 was left unconnected.  The clock input is from my CPU board (3.3 V).  I am writing 32-bit DAC words at 27 Mhz.  The DAC 5687 EVM was applied with 1.8 V and 3.3 V respectively.  After connecting the power cord, I have confirmed with the meter on J7 and J10 again.  What is the configuration that I have to set through TI DAC5687 SPI Control software to get it right?

3. To isolate the problem, we built a test board with switches connected directly to the DAC 5687 EVM board.  The switches are used to emulate we are sending different digital values to J13 and J14.  16 bits for each J13 and another 16 bits for J14.  No matter what we changed digital inputs through the switches or disconnect the switches, the analog output remains the same (like noise).  If we turn off NCO, analog output stays 0 all the time.  Do we need to turn on NCO while writing digital values to the EVM board.  Could this be a defect on the DAC5687 EVM board?

4. We use bypass (no FIFO, no FIR).  We can provide external square clock at 2 Mhz, 41 Mz and 82 Mhz through J4 CLK2.  How do we set up the evaluation board so that the analog outputs from J5 and j9 change proportionally to the digital inputs through J13 and J14?  In addition to connecting our development board to the EVM, we have also tried to directly connect an external test board with dip switches to the EVM.  With either one of these two approaches, nothing change on the analog output side.

Thanks,
Jew-Dong Kuo

  • 1. I have verified the data that I wrote to the EVM board correctly at RP5, 6, 9 and 10.  I am writing at the data rate of 16 Mhz.  When I write 0x0 to the DAC and both of the analog output of Channels A and B show 0.  However, I cannot tell the difference of the analog output when writing 0x7FFF7FFF to the DAC.  I write other non-zero values.  Also show the same thing.  (I cannot tell the difference.)  I am hooking up the clock with my source clock, which runs at 84 Mhz.  What could be wrong?  Do I need a faster input clock?  How fast?  I have verified the 1.8 V and 3.3 V power supply to the board correctly.  I used SPI control software from TI to turn on FULL/FIR/FIFO Bypass only.

    Reply>> if you input is static, i.e. the data is not changing clock cycle to clock cycle, then the output will be static. The DAC5687EVM is configured in its default configuration for an AC coupled output through a transformer, which acts as a high pass filter with a couple 100 kHz bandwidth. The static or DC signal will not pass through the transformer, and the transformer center tap will remove the DC signal at the DAC output pins.

    Please refer to section 2.2 of the User's guide for a setup procedure for testing the EVM with only a clock signal (no data connection). You should be able to see the same result as shown in the user's guide.

    Once you verify that, then we can work on how to continue.

    Robert

  • And when you are ready to input a CW signal, you can use the attached image to load DAC register accordingly (as an example).

  • Hi Robert and Hamza,

    I have followed 2.2 setup.  I can see clock wave with NCO turned on.  Thanks for pointing out the EVM acts as a high pass filter with a couple 100 kHz bandwidth.  Now I was able to generate some analog signals on the output end.  The thing is I was not able to generate saw  tooth or sine wave forms.   There might be some formula that I have to follow instead of keeping incrementing the variable and writing to the DAC input port to generate saw tooth.  Sine wave generation might be more involved.  I confirmed that my writing frequency is consistent with the analog output by changing the A channel DAC input data twice faster than data feeding into the B channel.  I will very appreciate if you can show me how to generate the sawtooth and sine wave forms.  Thanks!

    Jew-Dong

  • You can use the following MATLAB code for generating CW signal. You also might want to take a look at our pattern generator card that can drive all TI DACs with a CW/modulated signal. (http://focus.ti.com/docs/toolsw/folders/print/tsw3100evm.html)

    -----------------------------------------------------------------------

    clear, clc, close all;

    Fupdate = 200e6;     % Sample rate
    samples = 2^16;      % Number of samples 

    resolution = 16;    % Resolution

    tones = [20.1e6];   % Array with the frequency of the tones to be generated

    % Quantize frequencies
    num_tones = length(tones);
    for i = 1:num_tones
        if tones(i) > 0
            %freq(i) = tones(i);
            freq(i) = max(primes(round(tones(i)/Fupdate*samples)))/samples*Fupdate;
            F(i) = cellstr(strcat(num2str(freq(i)/1e6),'MHz_'));
        else
            freq(i) = -max(primes(round(abs(tones(i))/Fupdate*samples)))/samples*Fupdate;
            F(i) = cellstr(strcat('m',num2str(-freq(i)/1e6),'MHz_'));
        end
    end

    freq        % Display exact frequencies being generated

    % Generate complex exponential
    n = 1:samples;
    exp_arg = (j*2*pi/Fupdate)*(freq'*n);

    if num_tones == 1
        complex_exp = exp(exp_arg);
    else
        complex_exp = sum(exp(exp_arg));
    end

    IFout_i = real(complex_exp);
    IFout_q = imag(complex_exp);

    % Quantize the complex exponential to the bit resolution specified
    maxAbs  = max(max(abs(IFout_i)),max(abs(IFout_q)));

    scale = 0.99;
    % scale = 10^(-0.1/20);
    scale = scale*(2^(resolution-1))/maxAbs;

    DACout_i = round(scale*IFout_i) + 2^(resolution-1) - 32768;
    DACout_q = round(scale*IFout_q) + 2^(resolution-1) - 32768;

    data = complex(DACout_i, DACout_q);

    -----------------------------------------------------------------------

  • Hi Robert and Hamza,

    Thanks for both of your messages.  I have got it working now.

    First of all, I was not aware that there was a transformer (100K high pass filter) at the analog output.  Once I cranked up the analog output frequency close to 100K, I saw the wave form coming out. 
    Secondly, there was a defect on my wave form generation algorithm.  Once I got it fixed, the square wave came out.  I appreciated for both of your help!

    Thanks,
    Jew-Dong