NCO/DDS: A Periodic Waveform Generator

NCO/DDS: A Periodic Waveform Generator

Details

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

Description

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

Features

- 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)

Status

- 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