A numerically controlled oscillator (NCO) is a digital signal generator, which synthesizes a discrete-time, discrete-valued representation of a sinusoidal waveform. You can typically use NCOs in communication systems. In such systems, they are used as quadrature carrier generators in I-Q mixers, in which baseband data is modulated onto the orthogonal carriers in one of a variety of ways (see Figure 1).
You can also use NCOs in all-digital phase-locked loops (PLLs) for carrier synchronization in communications receivers, or as standalone frequency shift keying (FSK) or phase shift keying (PSK) modulators. In these applications, the phase or the frequency of the output waveform varies directly according to an input data stream.
The NCO MegaCore® function supports the following multiple NCO architectures:
- Multiplier-based implementation using digital signal processing (DSP) blocks or logic elements (LEs) (single-cycle and multicycle)
- Parallel/serial LE-based, CORDIC-based implementation
- Large and small ROM-based implementation using device memoryresources
The NCO MegaCore function includes dual-output oscillator and quaternary frequency shift keying (QFSK) modulator example designs and generates a fully parameterizable discrete-valued representation of a sinusoidal waveform, allowing you to set the following parameters:
- Support for single or dual outputs (sine/cosine)
- Variable-width frequency modulation input
- Variable-width phase modulation input
- Support for user-defined frequency resolution, angular precision, and magnitude precision
The NCO MegaCore function is optimized for all Intel® FPGA device families and generates the following simulation testbenches:
- Verilog HDL
- MATLAB models
- Quartus® Prime vector files