Go Back

Source code


Name: waveform_gen
Created: Oct 22, 2008
Updated: Jul 26, 2011
SVN Updated: Mar 10, 2009

Other project properties

Category: DSP core
Language: VHDL
Development status: Stable
Additional info: FPGA proven
WishBone Compliant: No
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 sdoherty@opencores.org. Alternatively you may contact me through customer support at ZIPcores.

Zipcores IP Cores