1
$\begingroup$

When I simulate BER for basic PSK schemes, I set the IQ complex noise variance to

$\sigma^{2} = \frac{E_{s}}{2*R_{m}*R_{c}}*\left( \frac{Eb}{No}\right)^{-1}$

where

$E_{s}$ = Energy per modulated symbol

$R_{m}$ = Modulation rate (1 for BPSK, 2 for QPSK)

$R_{c}$ = Coding rate

I have now introduced shaping and matched filters as shown below. Both filters have 0 dB DC gain (the SRRC Filter from GNU Radio Firdes Class). I was wondering what value of noise variance $\sigma^{2}_{N}$ I should use in this case. I have tried to use $\sigma^{2}_{N} = \frac{\sigma^{2}}{N}$ but it gives different values for different values of N. enter image description here

$\endgroup$
3
  • $\begingroup$ but $E_S$ already is "Energy per modulated symbol", i.e. it's the constellation point magnitude times the pulse energy – nothing changes in principle! $\endgroup$ Aug 4, 2021 at 13:13
  • 1
    $\begingroup$ Okay. But in the first case, $E_{s}$ is just average energy from the constellation (before pulse shaping). That is $(1^{2} + 1^{2})/2$ for BPSK. The question is what will be the value of $E_{s}$ after upsampling by N by the SRRC filter? $\endgroup$ Aug 5, 2021 at 9:09
  • $\begingroup$ I’m quite curious, did you progress on this? $\endgroup$
    – Gilles
    Aug 16, 2021 at 10:18

1 Answer 1

1
$\begingroup$

I think the problem is caused by the oversampling issue. Let us say $\gamma = E_s/N_o$ is the SNR where $E_s$ is the energy per symbol and $N_o$ is the power of the noise per sample). First thing to be checked is whether the symbol mapping is performed to satisfy unit average energy per symbol. Secondly,please check that your pulse shaping filter taps (array) have unit energy. Let filter taps are denoted by $\mathbf{h} = [h_1,h_2,\dots,h_N]$. You can easily check the energy of the filter taps by $$ E_h = \sum_{i=1}^N |h_i|^2$$ or in python

E_h = np.mean(np.abs(h)**2)

If the value is not equal to 1, than you can simply normalize the taps as $$ \mathbf{h}_{normalized} = \mathbf{h}/\sqrt{E_h}$$ or in python

h_normalized = h/np.sqrt(E_h)

Please recall that, the normalization is not required for the receiver side (in matched filter) since both the message signal as well as the noise are effected by the matched filter together.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.