Since my project code is similar, To explain the BUG, Ive modified
ETTUS example code "rx_timed_samples", to
- SYnc with an external 1PPS
- retrieve and display the USRP time at start and during capture, from
both time-now and time_last_pps functions
Setup: SIngle B210, Ubuntu 18.04, UHD_4.0.0.0-804-gb2527716
, PPS via extern SMA port.( NOTE this is NOT the GPSDO, which is not
populated )
Outcome:
- GOOD: With only one B210 channel capturing, the USRP stays aligned
with 1PPS
- BAD: With both B210 channels capturing, the USRP always time-shifts
from 1PPS after first buffer-fill
________________________________
The essential additions to example code outputs are
t_now=usrp->get_time_now();
t_tmp=usrp->get_time_last_pps();
printf("Actual time:now %8.5f
:AtPPS:%8.5f\n",t_now.get_real_secs(),t_tmp.get_real_secs());
Here's my code output..capture at 5MSPS, 10 secs into future.
WORKS WITH ONE CHANNEL (9.99999 is same at 10.0)
./rx_timed_samples --channels "0" --nsamps 20000 --rate 5000000 --secs
10 --sync pps
Begin streaming 20000 samples, 10.000000 seconds in the future...
Actual time:now 1.00254 :AtPPS: 1.00000. Commence wait.
Actual time:now 10.00083 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.000008 frac secs
Actual time:now 10.00130 :AtPPS: 9.99999
FAILS WITH TWO CHANNELS
./rx_timed_samples --channels "0,1" --nsamps 20000 --rate 5000000
--secs 10 --sync pps
Begin streaming 20000 samples, 10.000000 seconds in the future...
Actual time:now 2.74539 :AtPPS: 2.00000. Commence wait.
Actual time:now 10.00092 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.000010 frac secs
Actual time:now 10.00166 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.000418 frac secs
Actual time:now 10.00202 :AtPPS: 9.27090
Heres the full output...
someone@breakfast:~/uhd/host/build/examples$ ./rx_timed_samples
--channels "0" --nsamps 20000 --rate 5000000 --secs 10 --sync pps
Creating the usrp device with: ...
[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501;
UHD_4.0.0.0-804-gb2527716
<...snip initialization stuff...>
Setting RX Rate: 5.000000 Msps...
[INFO] [B200] Asking for clock rate 40.000000 MHz...
[INFO] [B200] Actually got clock rate 40.000000 MHz.
Actual RX Rate: 5.000000 Msps...
Setting device timestamp to 0...
[INFO] [MULTI_USRP] 1) catch time transition at pps edge
[INFO] [MULTI_USRP] 2) set times next pps (synchronously)
Begin streaming 20000 samples, 10.000000 seconds in the future...
Actual time:now 1.00254 :AtPPS: 1.00000. Commence wait.
Actual time:now 10.00083 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.000008 frac secs
Actual time:now 10.00130 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.000416 frac secs
Actual time:now 10.00164 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.000824 frac secs
Actual time:now 10.00198 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.001232 frac secs
Actual time:now 10.00231 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.001640 frac secs
Actual time:now 10.00269 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.002048 frac secs
Actual time:now 10.00308 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.002456 frac secs
Actual time:now 10.00349 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.002864 frac secs
Actual time:now 10.00391 :AtPPS: 9.99999
Received packet: 2040 samples, 10 full secs, 0.003272 frac secs
Actual time:now 10.00425 :AtPPS: 9.99999
Received packet: 1640 samples, 10 full secs, 0.003680 frac secs
Done!
______________________________________
BAD:
someone@breakfast:~/uhd/host/build/examples$ ./rx_timed_samples
--channels "0,1" --nsamps 20000 --rate 5000000 --secs 10 --sync pps
<...snip initialization stuff...>
Setting RX Rate: 5.000000 Msps...
[INFO] [B200] Asking for clock rate 40.000000 MHz...
[INFO] [B200] Actually got clock rate 40.000000 MHz.
Actual RX Rate: 5.000000 Msps...
Setting device timestamp to 0...
[INFO] [MULTI_USRP] 1) catch time transition at pps edge
[INFO] [MULTI_USRP] 2) set times next pps (synchronously)
[INFO] [B200] Asking for clock rate 20.000000 MHz...
[INFO] [B200] Actually got clock rate 20.000000 MHz.
Begin streaming 20000 samples, 10.000000 seconds in the future...
Actual time:now 2.74539 :AtPPS: 2.00000. Commence wait.
Actual time:now 10.00092 :AtPPS: 9.27090 <<<<<<<<<<<<< THIS SHOULD BE
10.0 !!!!
Received packet: 2040 samples, 10 full secs, 0.000010 frac secs
Actual time:now 10.00166 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.000418 frac secs
Actual time:now 10.00202 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.000826 frac secs
Actual time:now 10.00236 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.001234 frac secs
Actual time:now 10.00269 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.001642 frac secs
Actual time:now 10.00301 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.002050 frac secs
Actual time:now 10.00331 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.002458 frac secs
Actual time:now 10.00365 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.002866 frac secs
Actual time:now 10.00398 :AtPPS: 9.27090
Received packet: 2040 samples, 10 full secs, 0.003274 frac secs
Actual time:now 10.00430 :AtPPS: 9.27090
Received packet: 1640 samples, 10 full secs, 0.003682 frac secs
Done!
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com