Difference between revisions of "Synchronizing USRP Events Using Timed Commands in UHD"

From Ettus Knowledge Base
Jump to: navigation, search
(Clocking and Timekeeping in the USRP)
(VITA Time)
Line 48: Line 48:
  
 
===VITA Time===
 
===VITA Time===
 +
 +
The next topic to cover is the VITA time. This time value (denoted as vita_time) is a 64-bit counter driven by the USRP's FPGA base clock. vita_time is used as an absolute time reference for the radio and is local to the Radio Core of the USRP's FPGA. We'll discuss more about the Radio Core below.
  
 
===PPS (Pulse Per Second)===
 
===PPS (Pulse Per Second)===

Revision as of 18:00, 4 February 2020

Application Note Number

AN-TC

Revision History

Date Author Details
2020-02-10 Sam Reiter Initial creation

Abstract

This AN discusses Timed Commands in UHD. We will explore usecases, theory of operation, and examples of timed command use in UHD 3.x.

Timed Commands: Overview and Usecases

  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • k

Clocking and Timekeeping in the USRP

CHDR Packet Types and Structure

CHDR or "Compressed Header" packets are a derivative of the VITA 49 (VRT) protocol. While the CHDR protocol is proprietary to USRP devices, mapping to and from VITA-49 is a trivial task. All packet routing in b2xx and "Gen 3" USRPs uses the CHDR protocol.

There are 4 types of packets used in the USRP:

  • Data
  • Flow Control
  • Command
  • Command Response

The type of packet is determined by the state of bits 63 and 62 in the CHDR header. See UHD Manual: Radio Transport Protocols for more information on CHDR structure.

packet breakdown.png

All of these packet types have a single bit (61) used to denote whether an optional timestamp is included. If present, a timestamp is a 64-bit value representing an absolute time value. In this application note, we’re concerned with the use and functionality of command packets with a timestamp present, also known as “Timed Commands”.

VITA Time

The next topic to cover is the VITA time. This time value (denoted as vita_time) is a 64-bit counter driven by the USRP's FPGA base clock. vita_time is used as an absolute time reference for the radio and is local to the Radio Core of the USRP's FPGA. We'll discuss more about the Radio Core below.

PPS (Pulse Per Second)

Radio Core Block Timing

General RFNoC block Timing

Command Queue

Summary

USRP Time Sources

Internal PPS

External PPS

GPSDO

UHD API for Timed Commands

Overview of Relevant Methods

Timed Commands vs. Stream Commands with time_spec (remove this?)

Commands that can be timed

Time Resolution of Timed Commands

Example: Using Timed Commands to Phase Align Channels

Example: Using Timed Commands to Control GPIO