NCO/DDS: A Periodic Waveform Generator

NCO/DDS: A Periodic Waveform Generator


Category: DSP Core

Created: October 22, 2008

Updated: January 27, 2020

Language: VHDL

Other project properties

Development Status: Stable

Additional info: FPGA proven

WishBone compliant: No

WishBone version: n/a

License: GPL


This core is a straight forward implementation of a Numerically Controlled Oscillator (NCO) - also referred to as a Direct Digital Synthesizer (DDS). In addition to generating the standard SIN/COS output waveforms, it also generates Square and Sawtooth outputs with very little extra resource. NCOs form an essential component in many Digital Comms applications - especially in digital modulation, up/down conversion and the generation of complex signals. This core is also great for test-benches as it provides a simple way to generate input stimuli for Filters, DSP circuits etc. The following Mean-square plot shows an example output tone of 1.7MHz for a 100MHz sample frequency. The NCO pdf datasheet fully documents how to use and configure the NCO core.

NCO mean-square spectrum


- 12-bit signed output data samples
- 32-bit phase accumulator
- Phase resolution of 2Pi/2^12
- Frequency resolution of Fs/2^32 (Fs = sample frequency)
- ~70 dB Signal-to-Noise Ratio (SNR)
- ~70 db Spurious Free Dynamic Range (SFDR)
- Simultaneous SIN, COS, SQUARE and SAWTOOTH outputs
- 2 clock-cycle latency
- Sample rates of 500MHz or better (Xilinx Virtex 5 / Altera Stratix III)


- Basic version fully tested and complete
- Future optimizations to improve SNR/SFDR will be considered

Help and Support

Simon Doherty is a Senior Design Consultant at ZIPcores If you require further assistance regarding the implementation of this core, you may contact me directly via my Opencores email alias at Alternatively you may contact me through customer support at ZIPcores.

Zipcores IP Cores