The DDC provides sample-rate conversion and “fine tuning” of the complex IF 
delivered by the ADC. For most RFNOC platforms the radio block operates at the 
master clock rate, so you need a DDC block to do the sample rate conversion. 

But if you retune the radio by 4Mhz that isn’t conceptually “divided” by the 
sample rate conversion factor. When you retune the radio it delivers a new 
block of bandwidth to the DDC—4Mhz away from where you previously tuned it. 

Sample rate conversion has to work this way or signals would become badly 
mangled. 

Sent from my iPhone

> On Jul 20, 2021, at 6:14 PM, [email protected] wrote:
> 
> 
> I’m trying to understand what the DDC block is doing, because it doesn’t 
> appear to be working like I would expect. I’m somewhat new to DSP in general, 
> so it’s possible I have a fundamental misconception here.
> 
> 
> 
> Let’s say I have an RFNoC radio rx block connected to a DDC, a streamer, and 
> then out to a QT Frequency Sink. My radio is running at 16 MS/sec, and I want 
> the DDC to output at 400 KS/sec, a decimation factor of 40. My understanding 
> here is that my 16 MHz bandwidth should then be represented as a 400 kHz 
> bandwidth in my FFT plot - this is the behavior I would get if I used, say 
> the rational resampler block in gnuradio. So if I shifted my frequency center 
> by 4 MHz at the receiver, that would show up as a 4 MHz/40 = 100 kHz shift in 
> my FFT if I originally had a peak at the center.
> 
> 
> 
> This doesn’t seem to be happening with the DDC block. It looks more like it’s 
> truncating, rather than downsampling. For example, I apply a 100 kHz shift to 
> my receiver, and I get a 100 kHz shift in my peak in my FFT.
> 
> 
> 
> Diving into the code, I see that there is a fair amount of difference in the 
> front facing functions using the gnuradio libraries than what I see in in the 
> USRP hardware manual. For example, get_ and set_input_rate() are not 
> available. When I call “ettus_rfnoc_ddc_0.get_int_property(‘decim’)”, it 
> always returns a rate of 1 regardless of what my input/output rates are set 
> to. Changing this value with set_int_property() doesn’t appear to have any 
> effect, other than changing the number returned by the above function. What’s 
> going on here?
> 
> _______________________________________________
> USRP-users mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to