В этом примере показано, как использовать Система 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] указано, что измерения выполняются по более чем 1000 отсчетам выходов I и Q основной полосы частот. Чтобы учесть задержки фильтра, мы включаем еще 1 бит в моделирование передаваемых символов. Мы выбрали избыточную выборку передаваемого сигнала на четыре. Мы предполагаем, что SNR составляет 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);
Коммуникационный Toolbox™ предоставляет сообщение comm.EVM для вычисления значений RMS EVM, Maximum EVM и X-го процентиля EVM. Раздел 6.7.3 [1] определяет метод расчета EVM, где средняя погрешность измеренных I и 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 предполагает, что принятые символы, rd и опорные символы, c, синхронизируются и дискретизируются с той же скоростью. Мы понижаем оценку принятого сигнала r и синхронизируем его с опорным сигналом c.comm.DifferentialEncoder
[1] требует, чтобы 1000 символов были использованы в одном вычислении RMS EVM. Для обеспечения достаточного усреднения мы моделируем 100 кадров из 1000 символов и используем максимум из этих 100 измерений RMS EVM в качестве результата измерения. Мы видим, что моделируемый передатчик соответствует критериям, упомянутым в разделе «Величина вектора ошибок» выше.
% 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.