Phase offset and Phase increment - 2025.1 English

Vitis Libraries

Release Date
2025-06-04
Version
2025.1 English

In the basic configuration, phase offset and phase increment are input to the DDS graph as constructor arguments. As such they are set at power-on and remain constant for all time. The template parameter TP_USE_PHASE_OFFSET allows for phase offset to be modified at runtime. Set this parameter to 1 to allow run-time changes to phase offset. The template parameter TP_PHASE_OFFSET_API selects the form of port for this update. When set to 0 the graph will expose an RTP port. This is asynchronous, which means that it is not necessary to supply a new value for phase offset on each iteration of the kernels(s). When set to 1 the graph will expose an iobuffer port. Iobuffers have a minimum size of 32 bytes, but the phase offset is described in the first 4 bytes as a uint32 just as for an RTP. Since the iobuffer port is blocking, a new value for phase offset must be supplied for each iteration of the kernel(s). Phase increment can be configured for run-time update. To do this, set TP_USE_PHASE_INC_RELOAD to 1. This will result in the exposure of an RTP port for phase increment in the form of a uint32. This port is asynchronous, so a new value of phase increment need not be supplied for every iteration of the kernel(s). Note that the value supplied is used to calculate lookup tables necessary for the parallel operation. The function to do this takes approx 128 cycles on AIE, which has built-in sincos lookup, versus approx 220 cycle on AIE-ML. Therefore, with each RTP requiring so many cycles, frequent RTP updates will have a marked effect on performance.