Hi,
I am using Lyrtech's SFFSDR platform that contains a DAC5687. This DAC has an NCO that helps generate a quadrature output for RF transmission. The NCO multiplies the I and Q inputs by whatever frequency it is set at. I do not want to use the quadrature modulation feature, and a theoretical way of doing that is to set the NCO frequency to 0 as that will multiply the I input by 1 and the Q input by 0. This works in theory, but does anyone knows if it works in practice? In Code Composer, I set the NCO frequency to 0, but the DAC5687's output seems to be a constant when I measure it on the oscope. Does anyone have any ideas?
Thanks,
Carlo
Hi Carlo,
Setting the NCO to 0Hz means that there will be no complex frequency shift to your baseband data. Based on the complex mixer equation on page 37, if the NCO frequency is zero, then the I and Q channels will remain independent (i.e. Iout = Iin, Qout = Qin) since cos(0) = 1 and sin(0) = 0.
There are two things that you can check. One is to make sure that there are valid data at baseband that are in the right frequency and amplitude range for the analog output to show correctly. I am not too familiar with the SFFSDR platform, but it is possible that there are some filter components that may filter out the output range when the NCO frequency is set to 0.
Also, after you program the NCO, you will need to make sure the NCO phase accumulator is synchronized correctly by asserting PHSTR.
-KH
Thanks for your response. By asserting PHSTR, do you mean that I should continuously set it to high for every rising edge of clk_in? The purpose of that would be to continuously reset the phase accumulator so that it always has a value of 0 right? By the way, I could also simply disable the NCO in the DAC register by either enabling the full_bypass bit in CONFIG1 or disabling the nco bit in CONFIG2 right?
Carlos,
A simple 0 -> 1 transition in PHSTR will synchronize the phase accumulator if the sync_nco bit is enabled in address 0x05. Keep the PHSTR within one CLK_IN (CLK1) period.
Doing a full-bypass will also disable the FIR filters. If you are using these FIR filters, this may cause problems in your design. The simplest way is to disable the NCO in CONFIG2.
That is another way of doing it. The only issue is that there is some error that does not allow me to address the registers of the DAC5687 from the DSP of the SFFSDR. I do not have direct access to the DAC5687. Oh well... In any case, what is the purpose of the NCO? Is it to help get low frequency digital signals get within the actual digital to analog converter's bandwidth? It happens that I am just trying to send a constant signal through the DAC5687 (because the SFFSDR is such that my signal has to go through the DAC5687 to go where it eventually needs to go), so I have really have no need for the NCO.
The purpose of the NCO is to allow the end user to move the complex I/Q signal across the Nyquist zone. For instance, if your baseband signal is at zero Hz, you can use the NCO to move the signal anywhere from 0 to fs/2. Often, it is easier to generate signals at baseband and then use the mixer to move the signal around. This is to help designers with frequency planning of their system if needed.