Post Go back to editing

Setting NCO Only Mode via Direct Register Writes

Category: Hardware
Product Number: AD9081
Software Version: AD9081 API 1.3.1

AD9081 UG 1578 alludes to methods to setting a single CW tone using NCO Only, but doesn't give a full description and mentions using the API that come with the AD9081.  However, we are currently developing without the API.  We have the ability to write to exact registers on the AD9081 and are trying to simply put a tone out.  It is proving more difficult than anticipated.  Note - we are not using the ADCs.

Our FDAC is 11796.48 MHz:

We want to output a different tones, one at a time, ranging from 100MHz to 1.25GHz.

Would someone be able to explain the registers that need to get written to on the AD9081 in order to do this simple task?

  • UG1578 reference Fnco = Fiq_out_ch = Ntx * Fiq_in, but we are not sure what any of that means.  If we know the value of Fnco based on our system then we might be able to get somewhere. How do we know what Fnco is?  Also, we are operating on the assumption that all other setup/initialization has been performed and we simply want to switch the device into NCO Only mode, load up a frequency, and enable the output.

  • Hi, the NCO frequency is set by the user via a frequency tuning word and is used to shift the input signal in frequency. In NCO-only mode an internally generated DC test tone is shifted by the NCO value and sent to the DAC for output. The diagram below is from the AD9176 DAC but shows the NCO-only path well (note the register values are not the same for the 9081; use the values shown in the tables).

    NCO settings are paged using the DACPAGE_MSK bit field (Register 0x001B) to mask which main datapath is configured (for example, Bit 0 enables controlling Main Datapath 0). Page the datapath you want to use, then set DDSM_EN_CAL_DC_INPUT bit to 1 (Register 0x01E9, Bit 1) to mux the test tone into the main datapath. The dc amplitude level is controlled using the 16-bit MAIN_DC_OFFSET bit field in Register 0x01E0 and Register 0x01E1 where a setting of 0x5A82 corresponds to a full-scale tone. Set bit 3 in 0x01C9 to enable the main NCO and write the frequency tuning word registers 0x01D0-0x1CB to set the NCO frequency, where main datapath NCO frequency = FDAC * (DDSM_FTW/2^48).

    Regarding "Fnco = Fiq_out_ch = Ntx * Fiq_in": this means that the NCO clock rate is controlled by the DAC clock rate, which is equal to the input datarate (Fiq_in) times the transmit (tx) path interpolation (N). This is not relevant for NCO only mode, since you have no I/Q input data or interpolation. In your screenshot you note an interpolation value, but in NCO only you are simply shifting a DC test tone, so interpolation is not valid. Fdac is determined by your clocking setup (reference clock, PLL settings, etc).

    I recommend reviewing the Main Digital Datapath section of the UG, specifically pages 143 and 144.

    Best wishes.