>The DDS output is stuck at zero (including at the input of the ERA-4 
>amplifier), and SYNC_OUT is not toggling.

Have the amplitude registers been programmed? I've noticed on our AD9914 eval 
board that profile 0 defaults to 0 before they're programmed. Profiles 1 to 7  
amplitudes have a somewhat random default starting amplitude value. So profile 
0 will not output anything with only a FTW but profiles 1-7 will.

On the eval board that we're currently using, I'm using a 2.4 GHz clock with 
about 4 dBm in . Starting the DDS, currents are 3.3V/0.57A and 1.8V/0.11A. The 
3.3V current is more or less constant at 0.57 A. I first put in the following 
values to the registers,

                  np.array([0x03, 0x01, 0x05, 0x21, 0x20,
                                          0x01, 0x00, 0x80, 0x09, 0x00,
                                          0x00, 0x01, 0x01, 0x01, 0x02,
                                          0x1B, 0x00, 0x00, 0x08, 0x00])

And clear the DAC cal bit,

        np.array([0x03, 0x00, 0x05, 0x21, 0x20])

At this point the current on the 1.8 V is 0.12 A but if I turn on any of the 
profile pins it jumps to 0.25 A.

I then programme the FTW for profile 0 to output 1.3 GHz and do an ioupdate. 
Current is at 1.8V/0.12A.

Now if I set the profile 0 amplitude to 0.9999 and phase to 0 and do an 
ioupdate, the current goes to 0.15 A and I can see the 1.3 GHz output from 
profile 0 on the spectrum analyser. Code to set profile frequency, amplitude 
and phase is below.

Sincerely,
Raghu

def set_profile_frequency(self, slave_select, profile, input_frequency):
        # input_frequency in MHz
        quotient = int(2**32*input_frequency/self.clockfrequency)

        output_quotient = ('{:0>2x}'.format(11+2*profile) +
                           '{:0>8x}'.format(quotient))

        if len(output_quotient) != 10:
            raise AD9914_Exception('frequency')

        self.cheetah.start_queue(self.handle, slave_select)
        self.cheetah.ch_spi_queue_array(self.handle,
                                        byte_array(output_quotient))
        self.cheetah.end_queue(self.handle)

    def set_profile_amplitude_phase(self, slave_select, profile,
                                    amplitude, phase):
        output_amp = '{:0>4x}'.format(int(amplitude*2**12))
        output_phase = '{:0>4x}'.format(int((float(phase)/360)*2**16))
        output = '{:0>2x}'.format(12+2*profile) + output_amp + output_phase
        self.cheetah.send_array(self.handle, slave_select, byte_array(output))

-----Original Message-----
From: ARTIQ [mailto:[email protected]] On Behalf Of Sébastien 
Bourdeauducq
Sent: Saturday, August 22, 2015 3:16 AM
To: [email protected]
Subject: [ARTIQ] AD9914 support status and questions

Hi,

I've been doing some hardware tests on the QC2 AD9914 DDS system. Many things 
are working (tested using the runtime test mode):
* basic read/write of the registers, reset values match the datasheet
* 100000 cycles of ddstest
* selection of different slots on the backplane
* reset - a modified register returns to its default value
* FUD (aka IO_UPDATE) - the SYNC_CLK output is correctly toggling at 125MHz 
(3GHz/24), and I can turn it on and off using the "SYNC_CLK enable" bit of CFR2 
followed by FUD.

I'm clocking the DDS at 3GHz, using a SynthNV locked to the 10MHz output 
generated by the ARTIQ SoC on USER_GPIO_P, itself locked to the 125MHz internal 
RTIO clock.

There are some problems though, which may be due to a hardware issue:

The DDS output is stuck at zero (including at the input of the ERA-4 
amplifier), and SYNC_OUT is not toggling.

The current drawn on 1.8V (analog + digital) is abnormal: 138mA immediately 
upon power up (before interaction with the FPGA) which goes to 170mA after 
ddsinit. The current draw is not affected by FTW programming, but setting all 
power-down bits in CFR1 diminishes it significantly.
According to the datasheet, the 1.8V current should be >400mA. What is the 
current drawn by other boards, immediately upon power up and while the DDS is 
properly generating a signal?

Both 1.8V points on JP2 are powered. Current on 3.3V is ~500mA which is 
consistent with the datasheet.

Could you:
* let me know what the normal 1.8V current values are.
* confirm that register read/writes work on your hardware (ddstest).
* test the rest of AD9914 support in ARTIQ as the problems I'm experiencing 
might be due to a faulty DDS board.

Do you have ideas about what the problem could be?

ddsinit does this:
https://github.com/m-labs/artiq/blob/fba05531f456ba4d0f2b47d241bb039ab66ba930/soc/runtime/test_mode.c#L240

Sébastien
_______________________________________________
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq
_______________________________________________
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq

Reply via email to