[USRP-users] TX Image rejection B210

Sebastian Held sebastian.held at imst.de
Tue Apr 14 02:08:48 EDT 2015

Dear Ian,

> I'm going to suggest that there is something in this UHD example thats less than ideal. I note that the code as supplied by Ettus has no "--lo_off" argument, so perhaps Sebastian has edited this example? Regardless I see the issue in the factory code and I'm going to file a bug.
Yes, I modified the code code to include support for LO offset
modification (changed three lines or so - copied from an other example).
I did this, to nail down the cause of my problem.
> To the observation that you are seeing improved improved spectral mask conformance with an OFDM signal…I suspect this is mostly because the recent update you did from maint caused you to pick up the new FPGA images that were published last week. These have specific filter changes to improve performance with exactly this kind of wideband signal.
Yes, you are right. By the way I'm on release_003_008_002-40-gf23e7bc.
> The discussion of what is the ideal master_clock_rate vs what is merely an OK one is a very broad topic and differs between USRP's. If you want to give some specifics of your signal then I can give some suggestions. 
My original problem was the violation of the spectrum mask for 802.11p
signals. I generate the IQ representation with a sample rate of 10 MHz.
Older UHD versions indicated a problem with the sample rate - from that
point on I used a fixed 10 MHz or 20 MHz master clock to further
invetigate the problem.

Back to my testcase: The sinusoids do not change if I modify the master
clock. There is certainly a problem with image suppression.
FYI: I attached the patch with the lo_off parameter. I could also file a
pull request if you wish.



Sebastian Held (Dipl.-Ing.)
Carl-Friedrich-Gauss-Str. 2-4
47475 Kamp-Lintfort
Tel: +49 2842 981-418
Fax: +49 2842 981-199
E-mail: mailto:sebastian.held at imst.de
Internet: http://www.imst.de


Prof. Dr.-Ing. Ingo Wolff
Dr. Peter Waldow
Amtsgericht Kleve HRB 6737
USt.-ID: DE 811348335

Wir weisen darauf hin, dass rechtsverbindliche Erklärungen namens
unseres Hauses grundsätzlich der Unterschriften zweier ausreichend
bevollmächtigter Vertreter unseres Hauses bedürfen. Wir verschicken
daher keine rechtsverbindlichen Erklärungen per E-Mail an Dritte.
Demgemäß nehmen wir per E-Mail auch keine rechtsverbindlichen
Erklärungen oder Aufträge von Dritten entgegen. Diese E-Mail dient
einzig dem unverbindlichen Informationsaustausch zwischen Sender und
Empfänger. Sie entfaltet keine Rechtswirksamkeit.
Diese E-Mail ist vertraulich zu behandeln. Sollten Sie nicht der
vorgesehene Empfänger sein, bitten wir Sie, den Versender zu informieren
und die Nachricht zu löschen. Die Weitergabe sowie Vervielfältigung,
Verwertung und Mitteilung seines Inhalts ist nur mit unserer
ausdrücklichen Genehmigung gestattet. Alle Rechte vorbehalten,
insbesondere für den Fall der Schutzrechtsanmeldung.
This document has to be treated confidentially. If you are not the
intended recipient, please immediately notify the sender and delete this
message. Its contents are not to be passed on, duplicated, exploited or
disclosed without our expressed permission. All rights reserved,
especially the right to apply for protective rights.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20150414/614b8862/attachment-0002.html>
-------------- next part --------------
>From bb57da3c718d9f331a132c8489b70e4e5beb4481 Mon Sep 17 00:00:00 2001
From: Sebastian Held <sebastian.held at imst.de>
Date: Tue, 14 Apr 2015 08:07:48 +0200
Subject: [PATCH] added lo_off parameter to tx_waveforms example

 host/examples/tx_waveforms.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/host/examples/tx_waveforms.cpp b/host/examples/tx_waveforms.cpp
index 7e63326..bac6c28 100644
--- a/host/examples/tx_waveforms.cpp
+++ b/host/examples/tx_waveforms.cpp
@@ -95,7 +95,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
     //variables to be set by po
     std::string args, wave_type, ant, subdev, ref, otw, channel_list;
     size_t spb;
-    double rate, freq, gain, wave_freq, bw;
+    double rate, freq, gain, wave_freq, bw, lo_off;
     float ampl;
     //setup the program options
@@ -106,6 +106,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
         ("spb", po::value<size_t>(&spb)->default_value(0), "samples per buffer, 0 for default")
         ("rate", po::value<double>(&rate), "rate of outgoing samples")
         ("freq", po::value<double>(&freq), "RF center frequency in Hz")
+        ("lo_off", po::value<double>(&lo_off), "Offset for frontend LO in Hz (optional)")
         ("ampl", po::value<float>(&ampl)->default_value(float(0.3)), "amplitude of the waveform [0 to 0.7]")
         ("gain", po::value<double>(&gain), "gain for the RF chain")
         ("ant", po::value<std::string>(&ant), "antenna selection")
@@ -172,6 +173,8 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){
     for(size_t ch = 0; ch < channel_nums.size(); ch++) {
         std::cout << boost::format("Setting TX Freq: %f MHz...") % (freq/1e6) << std::endl;
         uhd::tune_request_t tune_request(freq);
+        if(vm.count("lo_off")) tune_request = uhd::tune_request_t(freq, lo_off);
+        else tune_request = uhd::tune_request_t(freq);
         if(vm.count("int-n")) tune_request.args = uhd::device_addr_t("mode_n=integer");
         usrp->set_tx_freq(tune_request, channel_nums[ch]);
         std::cout << boost::format("Actual TX Freq: %f MHz...") % (usrp->get_tx_freq(channel_nums[ch])/1e6) << std::endl << std::endl;

More information about the USRP-users mailing list