# Can I create my IF signal on SDR before bringing data to PC?

I'm relatively new to SDR's and I'm trying to determine what sort of BW I need for my laptop to get the best resolution possible for an FMCW system. I have an X310 Ettus with a UBX160 daughtercard which should give about 1 meter of resolution theoretically. Anywhere close to this will probably work just fine for my application. But at the moment I only have a PC capable of a 1 Gig ethernet hookup. The fact is though this will be a pretty short range system, and I expect a pretty narrow range of results (approx bandwidth of a few hundred kHz). Is there a way to mix the echo with the FMCW waveform on board the ettus and just deliver the sub MHz band to the laptop? Or do I really need to shell out all that cash to get the range resolution this unit could deliver?

Sorry this is a newb question, I've been playing around with GNU Radio and uhd a little and I'm leaning towards expecting a "no" on this question - but would love some input from the pros out there. Thanks in advance!

The theoretical data rate to transmit a signal with bandwidth $$W$$ Hz and resolution $$R$$ b/sample is simply $$2WR$$ b/s. In practice, you will need somewhere between that and $$4WR$$.

One way to reduce the required rate is to preprocess the signal in the SDR's FPGA. This will require delving into Verilog, integrating your hardware with what is already there, and very likely simulating and debugging it. What can be done also depends on how much space is left on the particular FPGA in your device.

I think the formula you got the 1m resolution from is actually the one for pulse radars with non-interpolating single pulses. You can do better!

Note that in (linear-chirp) FMCW, the beat frequency, i.e. the difference in frequency between the received and transmitted signal is proportional to range. There's nothing in there limiting your resolution!

Your limitation does actually exist, in the shape of time-bandwidth products being limited (i.e. you can't assess frequency arbitrarily finely within a limited observation time), and of course due to noise / clutter.

If you have a static radar target, there's nothing stopping you from just trying out FMCW: use GNU Radio to generate a slow chirp (sampling rate 20e6, signal source set to sawtooth, frequency maybe 100 Hz, frequency modulator block, set its sensitivity such that when the sawtooth reaches its maximum, your freq mod produces exactly $$\pi$$ of phase advancement per sample, i.e. half the sampling rate). Observe with a Qt GUI waterfall sink. If you can see the chirp, attach the USRP Sink instead. Also add a USRP Source. Calculate the beat frequency with a "multiply conjugate".

gr-radar implements FMCW and quite a few other radar methods. Have a look.

Is there a way to mix the echo with the FMCW waveform on board the ettus and just deliver the sub MHz band to the laptop?

Yeaaaah, with RFNoC that'd work. But as MBaz says, Verilog awaits you. Not an easy route to start down. As you'd need a Xilinx Vivado license, simply buying a fast PC and a 10 GBit Ethernet network card and matching cable/transceiver would be cheaper.

Or do I really need to shell out all that cash to get the range resolution this unit could deliver?

You mean the 50€ for an analog mixer, plus a microwave splitter for the TX side, now that you already have an X310?

• Thank you for your response! Very illuminating. It sounds like you suggest two routes - improve upon my preconceptions of FMCW using 20 MHz sweep OR yes shelling out for fast PC and 10 GBit eth. The Rx and Tx are not to be colocated, but I suppose I could still emit a recorded version of waveform on the Tx side and mix with incoming echo at Rx port? I guess I'd still need a saved version of waveform onboard the ettus. Will check out RFNoC too, thanks! – kit_traverse Mar 24 at 22:36
• how would you do an FMCW receiver without knowing the transmit frequency? all the information is in the difference between these two. Radar can't work without transmit signal knowledge at the receiver. Also, why would you "record" a chirp: that's easy to calculate on the fly. Again, writing code for the USRP is a) going to be way more complex than you think, and b) you need very expensive licenses for Xilinx' tools to do that. I don't think that's an option for you. – Marcus Müller Mar 24 at 22:39
• the idea is either a long cable to share the 10 MHz ref, or using some high precision clocks and implementing some calibration procedure to solve for any offset (similar to determining Doppler). I will look more into the slow fmcw method you mentioned, the environment is likely to be static so length of pulse is not a constraint for me here. – kit_traverse Mar 24 at 22:48
• you can't solve for both doppler and range at the same time if you don't have a lock. Yep, if your target is static, you're only limited by the noise floor - and your precise knowledge of the transmit signal at the receiver. So, maybe start with that. Instead of using a long cable to share the 10 MHz clock, you could use the very same cable to bring your UBX's TX to the other place – makes way more sense. – Marcus Müller Mar 24 at 22:57
• Yes I know, it'd be a calibration using perhaps a corner reflector/known stationary target, or even cross-talk/LOS between Tx and Rx. Using a reference and PPS to synchronize FMCW doesn't seem terrible, but I've never done this before so I'll heed your advice and look into delivering transmit signal via SMA as well. Last thing, you mentioned setting sensitivity of freq modulator (assuming VCO here), that it should produce exactly pi phase advancement per sample. If the frequency is sweeping how can I assure pi for each sample? – kit_traverse Mar 25 at 14:42