On 29/03/2023 01:36, sor...@ayecka.com wrote:

I’ve uploaded a sample of the signal I generate at:

https://mega.nz/file/jEEgnBZL#Kr-qjSUXlYDNBmuVfFvSOwy1CJCBelmxsSsnS2a4aDQ

The file is binary. The signal is sampled at 5.76 MHz. The signal is complex interleaved, 16 bits signed.

I gather the signal as it is transmitted to the B205.

I use: linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.4.0.0-0-g5fac246b

Gain 80 db. BW 10 MHz. lo-offset 3e6. Rate 5.76MHz.

I measure an output power of 3 dbm. Image rejection about 25 db only.

I copied the code for the initialization of the USRP:

std::string device_args("num_send_frames=256");

std::string subdev("A:A");

std::string ant("TX/RX");

std::string ref("external");


std::cout << boost::format("Creating the usrp device with: %s...") % device_args << std::endl;

uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args);

// Lock mboard clocks

std::cout << boost::format("Lock mboard clocks: %f") % ref << std::endl;

usrp->set_clock_source(ref);

//always select the subdevice first, the channel mapping affects the other settings

std::cout << boost::format("subdev set to: %f") % subdev << std::endl;

usrp->set_tx_subdev_spec(subdev);

std::cout << boost::format("Using Device: %s") % usrp->get_pp_string() << std::endl;

//set the sample rate

if (rate <= 0.0) {

std::cerr << "Please specify a valid sample rate" << std::endl;

return ~0;

}

// set sample rate

std::cout << boost::format("Setting TX Rate: %f Msps...") % (rate / 1e6) << std::endl;

usrp->set_tx_rate(rate);

std::cout << boost::format("Actual RX Rate: %f Msps...") % (usrp->get_tx_rate() / 1e6) << std::endl << std::endl;

// set freq

std::cout << boost::format("Setting RX Freq: %f MHz...") % (freq / 1e6) << std::endl;

uhd::tune_request_t tune_request(freq,lo_offset);

usrp->set_tx_freq(tune_request);

std::cout << boost::format("Actual TX Freq: %f MHz...") % (usrp->get_tx_freq() / 1e6) << std::endl << std::endl;

// set the rf gain

std::cout << boost::format("Setting TX Gain: %f dB...") % gain << std::endl;

usrp->set_tx_gain(gain);

std::cout << boost::format("Actual TX Gain: %f dB...") % usrp->get_tx_gain() << std::endl << std::endl;

// set the IF filter bandwidth

std::cout << boost::format("Setting TX Bandwidth: %f MHz...") % (bw / 1e6) << std::endl;

usrp->set_tx_bandwidth(bw);

std::cout << boost::format("Actual TX Bandwidth: %f MHz...") % (usrp->get_tx_bandwidth() / 1e6) << std::endl << std::endl;

// set the antenna

std::cout << boost::format("Setting TX Antenna: %s") % ant << std::endl;

usrp->set_tx_antenna(ant);

std::cout << boost::format("Actual TX Antenna: %s") % usrp->get_tx_antenna() << std::endl << std::endl;

std::string cpu_format ="sc16";

std::string wirefmt="sc16";

uhd::stream_args_t stream_args(cpu_format, wirefmt);

std::vector<size_t> channel_nums;

channel_nums.push_back(boost::lexical_cast<size_t>("0"));

stream_args.channels = channel_nums;


It would be great to know how to get it work properly.

Thank you,

Sorin


You should be able to use the tx_samples_from_file example for this simple test, which includes the ability to set an LO offset.
  This will tell you whether its your setup or something else.

Make sure that your sample amplitudes aren't saturated (that is, don't approach more than perhaps +/- 20000 or so).

_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to