Basically I'm sending the bit 0 by transmitting a down-chirp C0[n] and the bit 1 by transmitting an up-chirp C1[n].
Both C0[n] and C1[n] have the same duration Ts, bandwidth Bs, length N = Ts*fs and power Ps = 1/N*sum(|C1[n]|^2).
For example the packet 011001 will result in xTx = C0[n]C1[n]C1[n]C0[n]C0[n]C1[n]$.
I modeled the channel as follows:
SNR = 10^SNRdB/10
Pn = sigman^2 =Ps/SNR = N0
xRx = xTx + sqrt(Pn/2)*randn(size(xTx))
where xTx} is the transmitted packet and xRx$is the simulated received packet.
Now, I want to vary the SNRdB to make the BER curve for my implemented system and compare it to the theoretical, standard, error probability available in the literature (ASK, PSK, FSK, etc.). The problem is that all of them are expressed in terms of Eb/N0, instead of SNR. Therefore I can't compare the performances.
Can anybody help me with it?
There's a decent article about it on dsprelated:
If you know the SNR, the noise BW, and the bit rate, it is pretty easy to convert SNR to Eb/No.
Eb is the energy per bit or the signal power scaled to the bit rate:
Eb = Ps/Rb, where Rb is the bit rate.
No is the noise in a unit Hz bandwidth, so however you measure the noise, divide the total noise power by that bandwidth to get No;
No = Pn/BWn.
Neither Rb nor BWn have to be in Hz, so if it is a digital simulation you can scale everything relative to fs or whatever you're doing. Just be consistent so that Rb and BWn are scaled compatibly. If you measure SNR strictly after the receiver filter models, then those limit BWn and you need to scale by those. Details can matter, and it's good to have a simple calibration method if you can figure one out.
The linked article also talks about symbol rates for cases where the symbol rate and the bit rate differ, but in your case, since it appears you are not using any higher modulation or coding, the bit rate and symbol rate may be considered the same thing so that Rb = Rs, and Eb = Es.
I hope that helps a bit or two. Figuring out SNR can be really challenging in many systems, but hopefully this goes reasonably well for you.
Thank you for the answer!
So, according to what I understand I have simulated the channel as follows:
- I calculated the power of the signal Ps = mean(abs(C1[n]^2))
- Then I calculated the energy of the signal Es = Eb = Ps/Rb
but, Rb = 1/Tb, which in samples is Rb = 1/N, therefore
Eb = Ps*length(C1[n])
- Once I have Eb, I can calculate N0 = Eb/EbN0 (EbN0 is varying in the range [-10, 15])
- The received signal is then, xRx = xTx + sqrt(N0/2)*randn(1, size(xTx)
Is it correct? or should I divide by Bwn?