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