Retrieve data from USRP N210 device

2019-02-21 08:15发布

The N210 is connected to the RF frontend, which gets configured using the GNU Radio Companion.

I can see the signal with the FFT plot; I need the received signal (usrp2 output) as digital numbers.The usrp_sense_spectrum.py output the power and noise_floor as digital numbers as well.

I would appreciate any help from your side.

标签: gnuradio usrp
2条回答
聊天终结者
2楼-- · 2019-02-21 09:07

I suggest that you write a python application and stream raw UDP bytes from the USRP block. Simply add a UDP Sink block and connect it to the output of the UDH: USRP Source block. Select an appropriate port and stream to 127.0.0.1 (localhost)

Now in your python application open a listening UDP socket on the same port and receive the data. Each sample from the UDH: USRP Source is a complex pair of single prevision floats. This means 8 bytes per sample. The I float is first, followed by the Q float.

Note that the you need to pay special attention to the Payload Size field in the UDP Sink. Since you are streaming localhost, you can use a very large value here. I suggest you use something like 1024*8 here. This means that each packet will contain 1024 IQ Pairs.

I suggest you first connect a Signal Source and just pipe a sin() wave over the UDP socket into your Python or C application. This will allow you to verify that you are getting the float bytes correct. Make sure to check for glitches due to overflowing buffers. (this will be your biggest problem).

Please comment or update your post if you have further questions.

查看更多
女痞
3楼-- · 2019-02-21 09:12

Answer from the USRP/GNU Radio mailing lists:

Dear Abs,

you've asked this question on discuss-gnuradio and already got two answers. In case you've missed those, and to avoid that people tell you what you already know:

Sylvain wrote that, due to a large number of factors contributing to what you see as digital amplitude, you will need to calibrate yourself, using exactly the system you want to use to measure power:

You mean you want the signal power as a dBm value ?

Just won't happen ... Too many things in the chain, you'd have to calibrate it for a specific freq / board / gain / temp / phase of the moon / ...

And I explained that if you have a mathematical representation of how your estimator works, you might be able to write a custom estimator block for both of your values of interest:

>

I assume you already have definite formulas that define the estimator for these two numbers. Unless you can directly "click together" that estimator in GRC, you will most likely have to implement it. In many cases, doing this in Python is rather easy (especially if you come from a python or matlab background), so I'd recommend reading at least the first 3 chapters of https://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials

If these answers didn't help you out, I think it would be wise to explain what these answers are lacking, instead of just re-posting the same question.

Best regards, Marcus

查看更多
登录 后发表回答