Delta sigma modulator PSD simulation
Show older comments
Hi everyone. I built a first-order delta-sigma modulator, as shown in the figure, using Fourier transform to simulate PSD, but it is not the same as the simulation I saw in related papers, please help check where the problem is
attach my code and simulink module
Answers (1)
Your DSM implementation is likely fine—the mismatch is coming from how the PSD is being computed.
Key things to fix
- Don’t use raw FFT directlyA simple FFT → |·|² → log will give inaccurate PSD. Use:
- Windowing (e.g., Hann)
- Averaging (e.g., Welch)
- Use long simulationsDSM noise shaping requires large sample sizes. Short runs produce noisy and misleading PSD.
- Discard transientsThe initial portion of the simulation distorts the spectrum—remove it before computing PSD.
- Average multiple segmentsA single FFT realization is not sufficient. Averaging is necessary to match published results.
- Normalize correctlyEnsure proper scaling for:
- Sampling frequency
- One-sided spectrum
- Check expected slopeFor a first-order DSM, the noise floor should rise (~20 dB/dec). If not, the issue is in PSD estimation.
Recommended approach
Instead of building everything manually, you can validate your results using Mixed-Signal Blockset:
- Use the Delta-Sigma Modulator block / ADC examples
- Run long simulations and use consistent analysis workflows for PSD/SNR
- These examples already capture correct NTF-based noise shaping and avoid common PSD pitfalls
Categories
Find more on Mixed-Signal Blockset in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!