NCO Configuration - 2.0 English

RFSoC DFE PRACH LogiCORE IP Product Guide (PG391)

Document ID
Release Date
2.0 English

The DFE PRACH core uses a dual-modulus CORDIC-based NCO to provide direct digital synthesis for a wide range of demodulation frequencies with zero frequency error. The NCOs can be configured via the API.

The NCO frequency for PRACH extraction is specified as an integer multiple of half the sub-carrier spacing of the PRACH channel. The API and IP calculate appropriate values for the NCO phase accumulator controls based on this frequency setting. The phase offset of the NCO can also be initialized to a known value via the API. It is possible to apply a gain reduction to the output of the NCO mixer. Values of 0 dB, -3 dB, -6 dB, and -9 dB are available.

The source code example below shows how to create a simple PRACH NCO configuration.

/* Declare NCO configuration structure */
XDfePrach_NCO NCOCfg = { 0 };

double PRACH_SCS  = 15000;  // 15 kHz PRACH subcarrier spacing
double PRACH_ch_Freq = 480000; // 480 kHz RACH channel frequency

NCOCfg.Frequency = (u32)(2 * PRACH_ch_Freq / PRACH_SCS);
NCOCfg.NcoGain   = 1; // 0 = 0dB, 1 = -3dB, 2 = -6dB, 3 = -9dB.

In the above code, PRACH_ch_Freq represents the PRACH channel frequency. The API performs the conversion from this frequency to the Demodulation Frequency settings used by the core. It is also possible to set a phase offset for the NCO, as an unsigned 18-bit number representing a fraction of 2π.

NCOCfg.PhaseOffset = 0x10000; // π/2 phase offset

The XDfePrach_NCO structure is used by all functions that manipulate the NCO parameters.