DDS Compiler v6.0
LogiCORE IP Product Guide
Vivado Design Suite
PG141 December 20, 2017
Table of Contents
IP Facts
Chapter 1: Overview
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   5
Licensing and Ordering  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   5
Chapter 2: Product Specification
Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
Resource Utilization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
Port Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
Chapter 3: Designing with the Core
General Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
Theory of Operation  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
Multichannel  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   26
Design Examples  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   26
Clocking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   27
Resets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   27
Protocol Description  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   29
Chapter 4: Design Flow Steps
Customizing and Generating the Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   38
System Generator for DSP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   49
Constraining the Core  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   50
Simulation  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   51
Synthesis and Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   51
Chapter 5: C Model
Features  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   52
Overview  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   52
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   54
C Model Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   54
Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   58
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
2
Send Feedback
Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   58
Linking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   59
Example  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   59
MATLAB Interface  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   60
Chapter 6: Test Bench
Demonstration Test Bench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   63
Appendix A:  Upgrading
Migrating to the Vivado Design Suite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
Upgrading in the Vivado Design Suite  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
Appendix B: Debugging
Finding Help on Xilinx.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   72
Debug Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   73
AXI4-Stream Interface Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   74
Appendix C: Additional Resources and Legal Notices
Xilinx Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   75
Documentation Navigator and Design Hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   75
References  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   76
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   77
Please Read: Important Legal Notices  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   78
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
3
Send Feedback
IP Facts
LogiCORE IP Facts Table
Core Specifics
UltraScale+™ Families
UltraScale™ Architecture
Zynq®-7000 All Programmable SoC
7 Series
AXI4-Stream
Performance and Resource Utilization web page
Provided with Core
Encrypted RTL
Not Provided
VHDL
Not Provided
 Encrypted VHDL
N/A
Supported 
Device Family(1)
Supported User 
Interfaces
Resources
Design Files
Example Design
Test Bench
Constraints File
Simulation 
Model
Supported 
S/W Driver
Tested Design Flows(2)
Design Entry
Simulation
Vivado® Design Suite
System Generator for DSP
For the supported simulators, see the
Xilinx Design Tools: Release Notes Guide
Support
Provided by Xilinx at the Xilinx Support web page
Notes: 
1. For a complete list of supported devices, see the Vivado IP 
catalog.
2. For the supported versions of the tools, see the
Xilinx Design Tools: Release Notes Guide.
Introduction
The Xilinx® LogiCORE™ IP Direct Digital 
Synthesizer (DDS) Compiler core implements 
high performance, optimized Phase Generation 
and Phase to Sinusoid circuits with AXI4-Stream 
compliant interfaces.
The core sources sinusoidal waveforms for use 
in many applications. A DDS consists of a Phase 
Generator and a SIN/COS Lookup Table (phase to 
sinusoid conversion). These parts are available 
individually or combined using this core. 
Features
•
Phase Generator and SIN/COS Lookup table 
can be generated individually or together 
with optional dither to provide a complete 
DDS solution.
Rasterized feature eliminates phase noise 
from phase truncation.
Sine, cosine, or quadrature outputs.
•
• Optional per-channel resynchronization of 
accumulated phase.
Lookup table can be stored in distributed 
or block RAM.
• Optional phase dithering spreads the 
spectral line energy for greater Spurious 
Free Dynamic Range (SFDR).
Phase dithering or Taylor series correction 
options provide high dynamic range signals 
using minimal FPGA resources. Supports 
SFDR from 18 dB to 150 dB.
•
•
•
•
•
• Up to 16 independent time-multiplexed 
channels.
Fine frequency resolution using up to 
48-bit phase accumulator with DSP slice or 
FPAGA logic options.
3-bit to 26-bit signed output sample 
precision.
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
4
Product Specification
Send Feedback
Chapter 1
Overview
Direct digital synthesizers (DDS), or numerically controlled oscillators (NCO), are important 
components in many digital communication systems. Quadrature synthesizers are used for 
constructing digital down and up converters, demodulators, and implementing various 
types of modulation schemes, including PSK (phase shift keying), FSK (frequency shift 
keying), and MSK (minimum shift keying). A common method for digitally generating a 
complex or real valued sinusoid employs a lookup table scheme. The lookup table stores 
samples of a sinusoid. A digital integrator is used to generate a suitable phase argument 
that is mapped by the lookup table to the desired output waveform. A simple user interface 
accepts system-level parameters such as the desired output frequency and spur 
suppression of the generated waveforms. 
Software-defined radios (SDR)
Applications
• Digital radios and modems
•
• Digital down/up converters for cellular and PCS base stations
• Waveform synthesis in digital phase locked loops
• Generating injection frequencies for analog mixers
Licensing and Ordering
This Xilinx® LogiCORE™ IP module is provided at no additional cost with the Xilinx 
Vivado® Design Suite under the terms of the Xilinx End User License. 
Information about other Xilinx LogiCORE IP modules is available at the Xilinx Intellectual 
Property page. For information about pricing and availability of other Xilinx LogiCORE IP 
modules and tools, contact your local Xilinx sales representative.
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
5
Send Feedback
Chapter 2
Product Specification
Figure 2-1 provides a block diagram of the DDS Compiler core. The core consist of two main 
parts, a Phase Generator and SIN/COS LUT, which can be used independently or together 
with an optional dither generator to create a DDS capability. A time-division (TDM) 
multichannel capability is supported, with independently configurable phase increment 
and offset parameters.
X-Ref Target - Figure 2-1
s_axis_config_tvalid
s_axis_config_tready
s_axis_config_tdata
s_axis_config_tlast
Dither
Generator
slave
i/f
PINC
POFF
RAM
Phase 
Accumulator
+
+
SIN/
COS
LUT
Optional
Taylor
Series
Correction
s_axis_phase_tvalid
s_axis_phase_tready
s_axis_phase_tdata
s_axis_phase_tlast
slave
i/f
PINC
POFF
PHASE_IN
resync
>=
>=
Channel
Counter
>=
=
aclk
aclken
aresetn
master
i/f
master
i/f
m_axis_data_tvalid
m_axis_data_tready
m_axis_data_tdata
m_axis_data_tuser
m_axis_data_tlast
m_axis_phase_tvalid
m_axis_phase_tready
m_axis_phase_tdata
m_axis_phase_tuser
m_axis_phase_tlast
event_phase_in_invalid
event_poff_invalid
event_pinc_invalid
event_s_phase_chanid_incorrect
event_s_phase_tlast_missing
event_s_phase_tlast_unexpected
event_s_config_tlast_missing
event_s_config_tlast_unexpected
X13213
Figure 2-1: DDS Core Architecture
Phase Generator
The Phase Generator consists of an accumulator followed by an optional adder to provide 
addition of phase offset. When the core is customized, the phase increment (PINC) and 
phase offset (POFF) can be independently configured to be either fixed, programmable 
(using the CONFIG channel) or streaming (using the input PHASE channel).
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
6
Send Feedback
Chapter 2:
Product Specification
When set to fixed, the DDS output frequency is set when the core is customized and cannot 
be adjusted after the core is embedded in a design.
When set to programmable, the CONFIG channel TDATA field has a subfield for the input in 
question (PINC or POFF) or both if both have been selected to be programmable. If neither 
PINC nor POFF is set to programmable, there is no CONFIG channel.
When set to streaming, the input PHASE channel TDATA field has a subfield for the input in 
question (PINC or POFF) or both if both have been selected to be streaming. If neither PINC 
nor POFF is set to streaming, and the core is configured to have a Phase Generator, then 
there is no input PHASE channel.
When PINC is set to streaming, an optional RESYNC streaming input can be configured. 
When asserted, this signal resets the accumulated phase of the channel in question.
When rasterized mode is selected, the hardware values of PINC and POFF that are input or 
configured must be 0 to Modulus-1. This corresponds to a full circle. So for negative PINC 
or POFF values, add the Modulus to the negative value desired to map to the required 
range. For example with Modulus = 100, the required range is 0 to 99. An angle of -90° 
would be -25 with this Modulus. Adding 100 gives 75 (270°). 
When using system parameters, PINC and POFF are not input directly, but are calculated 
from the input Output Frequencies and Phase Angles. Beware that for small values of 
Modulus, the available values are relatively far apart, so the actual output frequency or 
phase angle may differ significantly from the desired value as displayed in the Additional 
Summary tab.
SIN/COS LUT
When configured as a SIN/COS LUT only, the Phase Generator is not implemented and the 
PHASE_IN signal is input using the input PHASE channel and transformed into sine and 
cosine outputs using a look-up table. Efficient memory usage is achieved by exploiting the 
symmetry of sinusoid waveforms. The core can be configured for sine only output, cosine 
only output or both (quadrature) output. Each output can be configured independently to 
be negated. Precision can be increased using optional Taylor series correction. This exploits 
DSP slices on FPGA families that support them to achieve high SFDR with high speed 
operation.
Phase Generator and SIN/COS LUT (DDS)
The Phase Generator is used in conjunction with the SIN/COS LUT to provide either a phase 
truncated DDS or Taylor series corrected DDS. An optional dither generator can be added 
between the two blocks to provide a phase dithered DDS.
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
7
Send Feedback
Chapter 2:
Product Specification
Performance
This section details the performance information for various core configurations. 
Latency
The latency of the core can be specified through the user interface in the Vivado Integrated 
Design Environment (IDE) or be automatically set to the optimum value based upon the 
Optimization Goal. 
For streaming inputs (s_axis_phase_t*) the latency specifies the minimum number of 
cycles between input and the associated output.
For configuration inputs, the latency is the minimum latency from the first cycle aresetn 
becomes inactive until a valid output. The latency from configuration channel inputs to 
output channel outputs is not deterministic because configuration inputs are synchronized 
to the internal channel counter phase, thus introducing a delay which is unknown external 
to the core.
IMPORTANT: Xilinx recommends that CE and TVALID on input are not both used to control data into 
the core as this can lead to obscure latency. For instance if TREADY is not used, data samples are pushed 
through the core by TVALID on input and hence setting TVALID Low freezes data in transit much like 
clock enable. Xilinx recommends that full AXI4-Stream protocol is used where latency is variable, but 
no data is lost. If deterministic latency is required, Xilinx recommends that you fix either CE or TVALID 
High and control data flow using the other.
Throughput
The DDS Compiler core supports full throughput in all configurations (one output for every 
cycle).
Resource Utilization
For details about resource utilization, visit Performance and Resource Utilization.
Port Descriptions
The DDS Compiler core pinout is shown in Figure 2-2. All of the possible pins are shown, 
though the specific pins in any instance depend upon parameters specified when the core 
is generated.
DDS Compiler v6.0
PG141 December 20, 2017
www.xilinx.com
8
Send Feedback