On 07/25/2017 08:43 AM, olivani via USRP-users wrote:

Hi ,

Let me first describe my application


I have to collected data (type short, wirefmt sc16) at a particular center frequency at a sampling rate of 25 Msps and set the bandwidth to be 20 MHz and the master clock is set to be 25 MHz. I have a custom fpga to detect the presence of unwanted signal within the 20 MHz bw of data collected .

I am using rx_samples_to_file script to collect data . I assume that when I plot the data ,, any tone below -10MHz and beyond +10 MHz should be discarded.

But when I used the script ./rx_samples_to_file I noticed that the data collected is equal to the sample rate specified and when plotted using pwelch function with bin size 512 I still see the tone after 20 MHz bw.

/usr/lib/uhd/examples/rx_samples_to_file --file /dev/test_5bw_20msps_1 --subdev A:A --args="type=e3x0,master_clock_rate=25e6" --bw 20e6 --freq 110e6 --rate 25e6 --duration 1 --stats

as per input parameter specified above I set the centre frequency at 110 MHz and have injected a tone at 122.5 MHz and set the BW to be 20 MHz. I assumed the tone should not be visible , but unfortunately it does.

This may lead to faulty detection in my application.

1. I added debug statements to see if at all the bw setting code is executed and it does. 2. I varied the bandwidth to be 5 MHz and I am able to see the roll off and also the tone.

Please find the plot below for the above input command

Inline image 1

Now setting the bandwidth to 5 MHz for verification purposeInline image 2


The code snippet used to plot the data in matlab as follows

binary_file = '\\fargo\projects\wls\staging\subbuku-o\test_5bw_20msps_1';%./rx_samples_to_file --file /dev/test_5bw_20msps_2 --subdev A:B --args="type=e3x0,master_clock_rate=50e6" --bw 20e6 --freq 110e6 --rate 25e6 --duration 1 --stats

if~exist('plotOn', 'var') || isempty(plotOn)

plotOn = 1;

end

if~exist('power_dbm', 'var') || isempty(power_dbm)

power_dbm = -100;

end

fid = fopen(binary_file,'r');

%A = fread(fid,inf,'bit16','ieee-le');

if~exist('wordWidth','var') || isempty(wordWidth)

% default to 16 bits...

A = fread(fid,inf,'bit16','ieee-le');

else

% extract according to word desired word width

width = ['bit',num2str(wordWidth)];

A = fread(fid,inf,width,'ieee-le');

end

%A = fread(fid,inf,'bit16','ieee-le');

%A = fread(fid,inf,'float32');

%parse the entire binary file

%A = fread(fid);

fclose(fid);

%A = A(1:2*4096);

I = A(1:2:end);

%figure; plot(I,'b-'); %-->counter test

Q = A(2:2:end);

if0

figure;

mag = 20*log10(abs(I));

plot(faxis,mag(1:N));

end

complex_sig = I + 1i*Q;

%complex_sig = transpose(complex_sig);

%fs = 1024e3;%512e3; %1024kHz for 4x and 8x; 768kHz, 512kHz and 256kHz for 6x, 2x and 1x

%fs = 512e3;

%fs = 256e3;

%fs = 7.68e6;

%fs = 15.36e6;

%fs = 7.68e6;

fs =25e6;

%[Pxx,F] = pwelch(complex_sig(1:4096*15),4096,[],[],fs,'centered');%%4x and 8x

%[Pxx,F] = pwelch(complex_sig(1:end),[],[],fs,'centered');%%4x and 8x

[Pxx,F] = pwelch(complex_sig(1:end),512,[],[],fs,'centered');%%4x and 8x

ifplotOn

figure; plot(F,10*log10((Pxx)),'b-'); grid on

title(binary_file)

ifexist('title_str','var')

if~isempty(title_str)

title(title_str)

end

end

end



Please let me know if it is possible to resolve the issue to eliminating the tone beyond 20 MHz bandwidth for 25 Msps sampling rate . I know with bandwidth and sample rate being pretty close it might not be possible to eliminate the tone or there might be aliasing effect . I did increase the master clock but the highest I could go is 50 MHz. I need 25 Msps sample rate and cannot change that.





Thanks and Regards,
Olivani


If you're only using a single channel, then you might try increasing the master clock rate to 50MHz, which will give the digital filtering more "head room"
  to work.



_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to