Simulink Spectrum Analyzer shows noise floor below max SQNR

2 vues (au cours des 30 derniers jours)
Simon Burkhardt
Simon Burkhardt le 15 Oct 2020
Commenté : Simon Burkhardt le 16 Oct 2020
I am using the HDL Coder Toolbox for Simulink to build a DDS (direct digital synthesizer).
I am using a converter Block (uintN_t) to convert the double value range {-1 ... 1} to uint16_t.
(add +1 offset, scale by 1/2 * 2^N-1)
Now I want to see the spectrum of the generated Signal with the spectrum analyzer, which gives me the following image:
The blue graph shows a noise floor >120dB below the carrier frequency.
This is wrong since I expect a maximum SQNR of: 1.76 + 6.02 * N = 98dB (for N = 16 bit).
If I export the uint16_t values to the workspace and analyze the datapoints with snr(x, fs, n) it outputs a correct value of 98dB.
Hence I suspect that the issue lies within the Spectrum Analyzer settings.
How do I set the Spectrum Analyzer correctly to show me the correct spectrum?

Réponse acceptée

Kiran Kintali
Kiran Kintali le 15 Oct 2020
https://www.mathworks.com/help/dsp/ref/spectrumanalyzer.html
There are multiple settings that could affect the observed noise floor..
  1. The window being used.
  2. RBW (Resolution Bandwidth specified)
  3. Spectrum estimation method Welch vs Filter bank
  4. Exponential averaging with large forgetting factors and
  5. Short simulation times etc.,
If you can share a sample model we may be able to provide additional guidance.
kiran.kintali@mathworks.com
  1 commentaire
Simon Burkhardt
Simon Burkhardt le 16 Oct 2020
Yes, the window settings were affecting the spectrum.
I checked the docs and the snr() function uses a Kaiser Window. If I set the Kaiser window (with parameter at 50dB) I get similar results for both the snr() and sfdr() function.
I still can't explain why the noise floor is affected since the window should affect the main lobe width. but ok, it works ¯\_(ツ)_/¯

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by