Selection Combining – architecture simulation

In the previous post on Single Input Multiple Output (SIMO) models for receive diversity, various receiver diversity techniques were outlined. One of them is selection combining, the focus of the topic here.

Channel model

Assuming flat slow fading channel, the received signal model is given by

r = h s + n

where, h is the channel impulse response, r is the received signal, s is the transmitted signal and n is the additive Gaussian white noise.

Assuming small scale Rayleigh fading, the channel impulse response is modeled as complex Gaussian random variable with zero mean and variance \sigma_h^2

h \sim \mathbb{C}\mathbb{N}\left(0,\sigma_h^2\right)

Therefore, the instantaneous channel power is exponentially distributed

\displaystyle{|h|^2 \sim \frac{1}{{\sigma^2}_h} e^{-|h|^2/ {\sigma^2}_h}}

In the context of AWGN channel, the signal-to-noise ratio (SNR) for a given channel condition, is a constant. But in the case of fading channels, the signal-to-noise ratio is no longer a constant as the signal is fluctuating when passed through a fading channel. Therefore, for fading channel, the SNR has a random variable component built into it. Hence, we just don’t call it SNR, instead it is called instantaneous SNR which depends on the current conditions of the channel (or equivalently, the value of the random variable at that instant). Since the SNR is a random variable, we can also talk about its expected (average) value, which is called average SNR.

Denoting the average SNR as \Gamma and for convenience, let’s assume that the average power of the channel is unity, i.e, {\sigma^2}_h=1

average\; SNR = E\left\{|h|^2\right\} \frac{E\left\{|s|^2 \right\}}{\sigma_{n}^{2}} = {\sigma^2}_h \Gamma = \Gamma

The instantaneous SNR \gamma is given by

\gamma = |h|^2 \frac{E\left\{|s|^2 \right\}}{{\sigma^2}_n}= |h|^2 \Gamma

Therefore, like the channel impulse response, the instantaneous SNR is also exponentially distributed

\gamma \sim \frac{1}{\Gamma}e^{-\gamma/\Gamma}

Selection Combining

In selection combining, the received signal from the antenna that experiences the highest SNR (i.e, the strongest signal from N received signals) is chosen for processing at the receiver (Figure 1).

w_k = \begin{cases} 1 & \gamma_k = \arg\max_{i} \gamma_i \\ 0 & otherwise \end{cases}

That is, the weight of the path that has the highest |h_i| is chosen.

w_k = 1 \quad \quad \quad with \quad k = \arg\max_{i} |h_i|

Therefore, the output SNR (at the combiner output) is the maximum SNR of all the received signals

\gamma_{out} = \arg\max_{i} \gamma_i

Figure 1: Processing the received samples at the receiver

As we know, fading channels are characterized by fades, i.e, the period when the signal level falls below a certain threshold or certain noise level. During such fades, the user experiences signal outage. We would like to compute the probability, in certain fading channel, that a user will experience signal outage. This is called outage probability. Outage probability can be easily computed if we know the probability distribution characteristics of the fading.

For a selection combining scheme, for an user to experience outage, the SNR \gamma_i of all the received branches should fall below the given threshold $\gamma_{t}$. In otherwords, the output SNR \gamma_{out} at the combiner is below the threshold \gamma_{t}. The outage probability of selection combining receiver is given by

\begin{aligned} P_{outage} & = P \left[ \gamma_{out} < \gamma_{t} \right] \\ &= P \left[ \gamma_1, \gamma_2, \cdots, \gamma_N < \gamma_{t} \right] \\ &=\prod_{i=1}^{N} P\left[\gamma_i < \gamma_{t} \right] \\ &= \left[ 1 - e^{-\gamma_{t}/\Gamma}\right]^N\end{aligned}

For high average SNR conditions \Gamma \rightarrow \infty, the outage probability can be approximated as

P_{outage} \propto \left( \frac{1}{\Gamma}\right)^N

Python code

import numpy as np
import matplotlib.pyplot as plt

gamma_ratio_dB = np.arange(start=-10,stop=41,step=2)
Ns = [1,2,3,4,10,20] #number of received signal paths

gamma_ratio = 10**(gamma_ratio_dB/10) #Average SNR/SNR threshold in dB

fig, ax = plt.subplots(1, 1)
for N in Ns:
        P_outage = (1 - np.exp(-1/gamma_ratio))**N
        ax.semilogy(gamma_ratio_dB,P_outage,label='N='+str(N))

ax.legend()
ax.set_xlim(-10,40);ax.set_ylim(0.0001,1.1)
ax.set_title('Selection combining outage probability (Rayleigh fading channel)')
ax.set_xlabel(r'$10log_{10}\left(\Gamma/\gamma_t\right)$')
ax.set_ylabel('Outage probability');fig.show()
Outage probability of selection combining in Rayleigh fading channel
Figure 2: Outage probability of selection combining in Rayleigh fading channel

Figure 2, plots the outage probability against \Gamma/\gamma_t (the ratio of average SNR and the SNR threshold) for different N values – the number of received signals received over an Rayleigh flat fading channel. For example, the outage probability dramatically improves when going from N=1 branch to N=2 branches. At outage probability of 0.01% (y-value in the graph at 10^{-4}), there is an approximate 20 dB reduction in the required SNR.

Error rate performance

As an example, the symbol error rate performance of a QPSK modulated transmission over a Rayleigh flat fading SIMO channel, for a range of values for the number of receive antennas (N) is simulated here. Selection combining is used in the receiver. After the selection combining the received signal is equalized by multiplying the selected branch with the conjugate of the corresponding channel sample.

The code utilizes the modem class discussed in the book here. The modem class incorporates modulation and demodulation techniques for PSK,PAM,QAM and FSK modulation schemes. It uses the object oriented programming method for implementing the various modems.

The addition of Gaussian white noise needs to be multidimensional. The method discussed in this article is extended here for computing and adding the required amount of noise across the N branches of signals.

Symbol error rate Vs EbN0 for QPSK over i.i.d Rayleigh flat fading channel with Selection Combining at the receiver
Figure 3: Symbol error rate Vs EbN0 for QPSK over i.i.d Rayleigh flat fading channel with Selection Combining at the receiver
"""
Eb/N0 Vs SER for PSK over Rayleigh flat fading with Selection Combining
@author: Mathuranathan Viswanathan
Created on Dec 10, 2019
"""
import numpy as np # for numerical computing
import matplotlib.pyplot as plt # for plotting functions
#from matplotlib import cm # colormap for color palette
from numpy.random import standard_normal

from DigiCommPy.modem import PSKModem

#---------Input Fields------------------------
nSym = 10**6 # Number of symbols to transmit
EbN0dBs = np.arange(start=0,stop = 36, step = 2) # Eb/N0 range in dB for simulation
N = [1,2,4,8,10] # [1,2,3,4,10,20] #number of diversity branches
M = 4 #M-ary PSK modulation

k=np.log2(M)
EsN0dBs = 10*np.log10(k)+EbN0dBs # EsN0dB calculation

fig, ax = plt.subplots(nrows=1,ncols = 1) #To plot figure

for nRx in N: #simulate for each # of received branchs
        #Random input symbols to modulator
        inputSyms = np.random.randint(low=0, high = M, size=nSym)
        modem = PSKModem(M)
        s = modem.modulate(inputSyms) #modulated PSK symbols

        #nRx signal branches
        s_diversity = np.kron(np.ones((nRx,1)),s);

        ser_sim = np.zeros(len(EbN0dBs)) # simulated symbol error rates

        for i,EsN0dB in enumerate(EsN0dBs):

                #Rayleigh flat fading channel as channel matrix
                h = np.sqrt(1/2)*(standard_normal((nRx,nSym))+1j*standard_normal((nRx,nSym)))
                signal = h*s_diversity #effect of channel on the modulated signal

                #Computing the signal power and adding noise
                gamma = 10**(EsN0dB/10) #converting EsN0dB to linear scale
                P = np.sum(np.abs(signal)**2,axis=1)/nSym #calculate power in each branch of signal
                N0 = P/gamma #required noise spectral density for each branch
                #Scale each row of noise with the calculated noise spectral density
                noise = (standard_normal(signal.shape)+1j*standard_normal(signal.shape))*np.sqrt(N0/2)[:,None]

                r = signal+noise #received signal branches

                #Receiver processing
                idx = np.abs(h).argmax(axis=0) #indices of max |h| values along all branches
                
                hSelected = h[idx,np.arange(h.shape[1])] #branches with max |h| values
                ySelected = r[idx,np.arange(r.shape[1])] #output of selection combiner
                equalized = ySelected*np.conj(hSelected) #equalized signal

                detectedSyms = modem.demodulate(equalized) #demodulation decisions
                ser_sim[i] = np.sum(detectedSyms != inputSyms)/nSym

        print(ser_sim)
        #ax.grid(True,which='both');
        ax.semilogy(EbN0dBs,ser_sim,label='N='+str(nRx))#plot simulated error rates

ax.set_xlim(0,35);ax.set_ylim(0.00001,1.1);ax.grid(True,which='both');
ax.set_xlabel('Eb/N0(dB)');ax.set_ylabel('Symbol Error Rate($P_s$)')
ax.set_title('SER performance for QPSK over Rayleigh fading channel with Selection Diversity')
ax.legend();fig.show()

Rate this post: PoorBelow averageAverageGoodExcellent (6 votes, average: 2.33 out of 5)

References

[1] Andrea Goldsmith, “Wireless Communications”, ISBN: 978-0521837163, Cambridge University Press, 1 edition.↗

[2] Barry-Lee-Messerschmitt, “Digital Communication”, ISBN: 978-0792375487 , Springer, 3rd edition, September 30, 2003.↗

Articles in this series

Articles in this series
[1] Introduction to Multiple Antenna Systems
[2] MIMO - Diversity and Spatial Multiplexing
[3] Characterizing a MIMO channel - Channel State Information (CSI) and Condition number
[4] Capacity of a SISO system over a fading channel
[5] Ergodic Capacity of a SISO system over a Rayleigh Fading channel - Simulation in Matlab
[6] Capacity of a MIMO system over Fading Channels
[7] Single Input Multiple Output (SIMO) models for receive diversity
[8] Receiver diversity - Selection Combining
[9] Receiver diversity – Maximum Ratio Combining (MRC)

Books by the author

Wireless Communication Systems in Matlab
Wireless Communication Systems in Matlab
Second Edition(PDF)

PoorBelow averageAverageGoodExcellent (180 votes, average: 3.62 out of 5)

Digital modulations using Python
Digital Modulations using Python
(PDF ebook)

PoorBelow averageAverageGoodExcellent (134 votes, average: 3.56 out of 5)

digital_modulations_using_matlab_book_cover
Digital Modulations using Matlab
(PDF ebook)

PoorBelow averageAverageGoodExcellent (136 votes, average: 3.63 out of 5)

Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Post your valuable comments !!!