2.6 EVM and MER
Two figures of merit often used in digital communications are the error vector magnitude (EVM) and the modulation error ratio (MER). Both are related to the SNR but take in account that when using a digital modulation, one can compare the symbols of a signal of interest to the constellation symbols (or estimates).
More specifically, let denote a sequence of symbols extracted from the signal of interest and be the reference symbols. In many cases, one assumes that are the “correct” constellation symbols even if they are simple estimates obtained by the constellation nearest-neighbor of . The error sequence used by both EVM and MER is and its average power is . Considering the average power of is , the MER is given by
| (2.6) |
The RMS EVM can be defined as
| (2.7) |
such that, in linear scale (not using dB):
| (2.8) |
It is also common to express EVM in dB or in percentage.
Similar to the SNR, there are several distinct definitions for MER and EVM. For example, the maximum power can be used instead of the average power () in Eq. (2.7). Or, alternatively, the reference symbols may not be available in a nondata-aided scheme, and their estimation used instead. This estimation can be done using the nearest-neighbor constellation symbol of each received symbol. But in this case, if there are errors (the SER or BER is not zero), obtaining the reference as the nearest-neighbor of leads to an optimistic estimation because would be larger in case the correct symbols were used. But this is not a problem when is the transmit signal and the nearest-neighbor decision is always correct (SER and BER are zero).
Listing 2.1 provides an example of MER and EVM estimations for QAM modulation. In Line 14, this code illustrates that MER and EVM can be obtained one from the other.
1M=64; %modulation order 2constellation=ak_qamSquareConstellation(M); %QAM constellation 3Ec=mean(abs(constellation).^2); %average energy constellation 4N=10000; %number of random symbols 5SNRdB=8; %desired SNR in dB 6noisePower=Ec/(10^(0.1*SNRdB));%total noise power, half per dimension 7indicesTx=ceil(M*rand(1,N)); %indices, check with: hist(indices,M) 8transmitSymbols=constellation(indicesTx); %correct symbols 9noise=sqrt(noisePower/2)*(randn(1,N)+1j*randn(1,N)); %noise (complex) 10receiveSymbols=transmitSymbols+noise; %symbol-based AWGN channel 11%% 1st option) Using the correct transmit symbols as reference 12evm=ak_evm(transmitSymbols, receiveSymbols); %estimate RMS EVM (%) 13mer=ak_mer(transmitSymbols, receiveSymbols); %estimate MER (dB) 14mer2=10*log10(1/(evm/100)^2); %MER calculated from EVM 15disp(['EVM=' num2str(evm) '%, MER=' num2str(mer) ' dB (correct)']) 16%% 2nd option) Using the estimated transmit symbols as reference 17[indicesRx, estimatedSymbols]=ak_qamdemod(receiveSymbols,M); 18evm_est=ak_evm(estimatedSymbols, receiveSymbols); %estim. RMS EVM (%) 19mer_est=ak_mer(estimatedSymbols, receiveSymbols); %estimate MER (dB) 20disp(['EVM=' num2str(evm_est) '%, MER=' num2str(mer_est) ' dB']) 21%% Other figures of merit 22snr=10*log10(mean(abs(transmitSymbols).^2)/mean(abs(noise).^2)); %SNR 23ser=sum(indicesRx+1 ~= indicesTx)/length(indicesTx); %estimate SER 24disp(['SNR=' num2str(snr) ' dB, SER=' num2str(ser) '%'])
Listing 2.1 compares two options for the reference : using the transmit symbols or extracting it from the received signal. If the symbol error rate (SER) is zero, the results from these two options coincide. However, for SNRdB=8, the output of Listing 2.1 is:
EVM=39.8923%, MER=7.9822 dB (correct) EVM=18.8403%, MER=14.4983 dB SNR=7.9822 dB, SER=0.7647%
As discussed, both EVM and MER may be underestimated when the reference symbols are estimated from the received ones. In this case, the MER for the second option was 14.5 dB while the correct one is only 8 dB. Another observation is that, when the channel is AWGN, the MER coincides with the SNR in case the correct transmit symbols are used as reference. In the general case, MER and SNR may not coincide due to synchronization errors and other impairments.