What controls the effective Signal-to-Noise Ratio (SNR) of the DDS Core? What are the effects of data width and address width/table depth on the SNR?
The general rule of thumb for the DDS and SIN/COS Lookup Table cores is that there is a 6dB SNR improvement for each bit of address line to the table that stores the waveform values.
The normal DDS Core has a theoretical SNR limit of approximately 60dB. This is because the table size is 1024, which provides 10 bits for the address; thus, 6dB per bit gives 60dB of resolution. No matter how many bits are used to represent the output waveform, as soon as the number is over 10 bits, the table size becomes the theoretical limit to the SNR.
A larger table size can be used at the expense of more block RAM (1024 x18 bits is one Virtex-II block RAM), but these larger tables are generally avoided because of the increase in resources. The Phase Angle Width value on the DDC GUI controls the depth of the table.
However, other techniques for improving the SNR are available:
- Dithering is an option on the core that injects noise into the system such that the noise is increased but averaged out at the same time. This reduces the spurious harmonics and increases the spurious free dynamic range (SFDR) by 12dB.
- The Taylor series expansion uses an arithmetic circuit to cancel out noise, which increases the SNR to over 100dB. (Page 12 of the data sheet illustrates these concepts and their effects on the SNR.)
The effect of increasing the bit width of the Lookup Table values is to improve the dynamic range of the signal; this is less important in terms of suppressing harmonics.