В этом примере показано, как использовать
Система object™, чтобы измерить величину вектора ошибок (EVM) симулированного передатчика IEEE® 802.15.4 [1]. IEEE 802.15.4 является базисом для технических требований ZigBee.comm.EVM
Величина вектора ошибок (EVM) является мерой различия между ссылочной формой волны, которая является безошибочным модулируемым сигналом и фактической переданной формой волны. EVM используется, чтобы определить количество точности модуляции передатчика. [1] требует, чтобы 802.15.4 передатчиков не должны иметь RMS значением EVM хуже, чем 35%.
802.15.4 систем для полосы на 868 МГц используют прямую последовательность распространила спектр (DSSS) с бинарным манипулированием сдвига фазы (BPSK), используемым для модуляции чипа и кодирования дифференциала, используемого для кодирования символа данных.
dataRate = 20e3; % Bit rate in Hz M = 2; % Modulation order (BPSK) chipValues = [1;1;1;1;0;1;0;1;1;0;0;1;0;0;0]; % Chip values for bit 0. % Chip values for 1 is the opposite.
Разделите 6.7.3 из [1], указывает, что измерения выполняются более чем 1 000 выборок меня и основополосных выходных параметров Q. С учетом задержек фильтра мы включаем еще 1 бит в симуляцию переданных символов. Мы приняли решение сверхдискретизировать переданный сигнал четыре. Мы принимаем ОСШ 60 дБ с учетом передатчика и тестируем аппаратные недостатки.
numSymbols = 1000; % Number of symbols required for one EVM value numFrames = 100; % Number of frames nSamps = 4; % Number of samples that represents a symbol filtSpan = 8; % Filter span in symbols gain = length(chipValues); % Spreading gain (number of chips per symbol) chipRate = gain*dataRate; % Chip rate sampleRate = nSamps*chipRate; % Final sampling rate numBits = ceil((numSymbols)/gain)+1; % Number of bits required for one EVM value SNR = 60; % Simulated signal-to-noise ratio in dB
Мы можем получить модулируемые символы BPSK с простым отображением 0 к +1 и 1 к-1. Если мы также сопоставляем значения чипа, то мы можем модулировать перед преобразованием бита к чипу и использовать матричную математику, чтобы записать эффективный код MATLAB®. Технические требования ZigBee также задают импульсный формирующий фильтр как наличие повышенной формы импульса косинуса с фактором спада 1.
% Map chip values chipValues = 1 - 2*chipValues; % Design a raised cosine filter with rolloff factor 1 rctFilt = comm.RaisedCosineTransmitFilter('RolloffFactor', 1, ... 'OutputSamplesPerSymbol', nSamps, ... 'FilterSpanInSymbols', filtSpan); rcrFilt = comm.RaisedCosineReceiveFilter('RolloffFactor', 1, ... 'InputSamplesPerSymbol', nSamps, ... 'FilterSpanInSymbols', filtSpan, ... 'DecimationFactor', nSamps);
Communications Toolbox™ обеспечивает comm.EVM, чтобы вычислить RMS EVM, Максимальный EVM и процентиль Xth значения EVM. Разделите 6.7.3 из [1], задает метод расчета EVM, где средняя погрешность измеренных я и выборки Q нормированы на степень символа. Для системы BPSK степень обоих символов созвездия является тем же самым. Поэтому мы можем использовать 'Пиковую опцию нормализации' степени созвездия. Другие доступные опции нормализации, которые могут использоваться с другими стандартами системы связи, являются средней степенью созвездия и средней степенью опорного сигнала.
evm = comm.EVM('Normalization', 'Peak constellation power')
evm = comm.EVM with properties: Normalization: 'Peak constellation power' PeakConstellationPower: 1 ReferenceSignalSource: 'Input port' MeasurementIntervalSource: 'Input length' AveragingDimensions: 1 MaximumEVMOutputPort: false XPercentileEVMOutputPort: false
Мы сначала генерируем случайные биты данных, дифференцированно кодируем эти биты с помощью
Системный объект, и модулирует BPSK использования. Мы распространяем модулируемые символы путем использования умножения матриц с сопоставленными значениями чипа. Символы распространения затем передаются через импульсный формирующий фильтр. Объект EVM принимает, что полученные символы, ул., и ссылочные символы, c, синхронизируются и производятся на том же уровне. Мы прореживаем полученный сигнал, r, и синхронизируемся с опорным сигналом, c.comm.DifferentialEncoder
[1] требует, чтобы 1 000 символов использовались в одной RMS вычисление EVM. Чтобы убедиться у нас есть достаточно усреднения, мы симулируем 100 систем координат 1 000 символов и используем максимум этих 100 RMS измерения EVM как результат измерения. Мы видим, что симулированный передатчик соответствует критериям, упомянутым в разделе Error Vector Magnitude выше.
% Tx and Rx filter delays are identical and equal to half the filter span. % Total delay is equal to the sum of two filter delays, which is the filter % span of one filter. refSigDelay = rctFilt.FilterSpanInSymbols; % Simulated number of symbols in a frame simNumSymbols = numBits*gain; % Initialize peak RMS EVM peakRMSEVM = -inf; % Create a comm.DifferentialEncoder object to differentially encode data diffenc = comm.DifferentialEncoder; % Create an comm.AWGNChannel System object and set its NoiseMethod property % to 'Signal to noise ratio (SNR)' chan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)',... 'SNR', SNR); % Loop over bursts for p=1:numFrames % Generate random data b = randi([0 M-1], numBits, 1); % Differentially encode d = diffenc(b); % Modulate x = 1-2*d; % Convert symbols to chips (spread) c = reshape(chipValues*x', simNumSymbols, 1); % Pulse shape cUp = rctFilt(c); % Calculate and set the 'SignalPower' property of the channel object chan.SignalPower = sum(cUp.^2)/length(cUp); % Add noise r = chan(cUp); % Downsample received signal. Account for the filter delay. rd = rcrFilt(r); % Measure using the EVM System object rmsEVM = evm(complex(rd(refSigDelay+(1:numSymbols))), ... complex(c(1:numSymbols))); % Update peak RMS EVM calculation if (peakRMSEVM < rmsEVM) peakRMSEVM = rmsEVM; end end % Display results fprintf(' Worst case RMS EVM (%%): %1.2f\n', peakRMSEVM)
Worst case RMS EVM (%): 0.19
Мы показали, как использовать comm.EVM, чтобы протестировать, если передатчик ZigBee выполняет заданные значения стандарта EVM. Мы использовали грубую модель, которая только вводит аддитивный белый Гауссов шум и показала, что измеренный EVM меньше, стандарт задал 35%.
Стандарт IEEE 802.15.4, беспроводное Среднее управление доступом (MAC) и физический уровень (PHY) технические требования для беспроводных персональных сетей области с низкой ставкой, 2003.