Серый закодированный 8-PSK

Эта модель, doc_gray_code, показывает линию связи с помощью серо-закодированной модуляции 8-PSK. Серое кодирование является методом, часто используемым в многоуровневых схемах модуляции минимизировать частоту ошибок по битам путем упорядоченного расположения символов модуляции так, чтобы бинарные представления смежных символов отличались только на один бит.

Структура примера

Модель в качестве примера включает эти блоки:

  • Блок Random Integer Generator служит источником, производя последовательность целых чисел.

  • Блок Integer to Bit Converter преобразует каждое целое число в соответствующее бинарное представление.

  • Блок AWGN Channel добавляет белый Гауссов шум в модулируемые данные.

  • Блок M-PSK Demodulator Baseband демодулирует поврежденные данные.

  • Блок Bit to Integer Converter преобразует каждое бинарное представление соответствующему целому числу.

  • Одна копия блока Error Rate Calculation (пометил Error Rate Calculation1 в этой модели), сравнивает демодулируемые целочисленные данные с данными о первоисточнике, давая к ошибочной статистике символа. Выход блока Error Rate Calculation является трехэлементным вектором, содержащим расчетный коэффициент ошибок, количество ошибок, наблюдаемых, и обработанный объем данных.

  • Другая копия библиотечного блока Error Rate Calculation (пометил Error Rate Calculation2 в этой модели), сравнивает демодулируемые двоичные данные с бинарными представлениями исходных данных, давая к статистике битовой ошибки.

Серо-закодированная модуляция M-PSK

В этой модели, блоке M-PSK Modulator Baseband:

  • Принимает входные параметры с бинарным знаком, которые представляют целые числа между 0 и M − 1, где M является размером алфавита

  • Двоичные представления карт точкам созвездия с помощью серо-закодированного упорядоченного расположения

  • Производит фазовращатель комплекса модульной величины выходные параметры, с равномерно расположенными с интервалами фазами между 0 и 2π (M − 1)/M

Таблица показывает, которому бинарные представления во входе соответствуют который фазовращатели в выходе. Второй столбец таблицы является промежуточным представлением, которое блок использует в его расчетах.

Вход модулятораСеро-закодированное упорядоченное расположениеМодулятор Выход
0000exp(0) = 1
0011exp(/4)
0103exp(j 3π/4)
0112exp(j 2π/4) = exp(/2)
1007exp(j 7π/4)
1016exp(j 6π/4) = exp(j 3π/2)
1104exp(j 4π/4) = exp()
1115exp(j 5π/4)

Таблица ниже видов первые два столбца приведенной выше таблицы, согласно выходным значениям. Эта сортировка делает его более ясным, что полный эффект этой подсистемы является отображением Кода Грея, как показано в фигуре ниже. Заметьте, что числа во втором столбце приведенной ниже таблицы появляются в против часовой стрелки порядке в фигуре.

Модулятор ВыходВход модулятора
exp(0)000
exp(j π/4)001
exp(j 2π/4) = exp(/2)011
exp(j 3π/4)010
exp(j 4π/4) = exp()110
exp(j 5π/4)111
exp(j 6π/4) = exp(j 3π/2)101
exp(j 7π/4)100

Исследование примера

Можно анализировать данные, которые пример производит, чтобы сравнить теоретическую производительность с производительностью симуляции.

Теоретическая вероятность появления ошибки символа MPSK

PE(M)=erfc(EsN0sin(πM))

где erfc дополнительная функция ошибок, Es/N0 является отношением энергии в символе к шумовой степени спектральная плотность, и M является количеством символов.

Чтобы определить вероятность битовой ошибки, вероятность появления ошибки символа, PE, должна быть преобразована в свою эквивалентную битовую ошибку. Нет никакой общей формулы для символа к преобразованию битовой ошибки. Верхний и нижние пределы, тем не менее, легки установить. Фактическая вероятность битовой ошибки, Pb, как могут показывать, ограничена

PE(M)log2MPbM/2M1PE(M)

Нижний предел соответствует случаю, где символы подверглись Грэю, кодирующему. Верхний предел соответствует случаю чистого двоичного кодирования.

Результаты симуляции

Чтобы протестировать схему модуляции Кода Грея в этой модели, симулируйте graycode модель для области значений значений Eb/N0. Если вы хотите изучить частоты ошибок по битам, но не коэффициенты ошибок символа, то можно использовать bertool графический интерфейс пользователя как описано в BERTool.

Остальная часть этого раздела изучает и бит и коэффициенты ошибок символа и следовательно не использует bertool.

Поскольку увеличение значения Eb/N0 понижает количество произведенных ошибок, продолжительность каждой симуляции должна быть увеличена, чтобы гарантировать, что статистические данные ошибок остаются устойчивыми.

Используя sim команда, чтобы запустить симуляцию Simulink® из командного окна MATLAB®, следующий код генерирует данные для кривых коэффициента ошибок и частоты ошибок по битам символа. Это считает значения Eb/N0 в области значений от 0 дБ до 12 дБ на шагах 2 дБ.

M       = 8;
Tsym    = 0.2;
BERVec  = [];
SERVec  = [];
EbNoVec = [0:2:12];
for n   = 1:length(EbNoVec);
    EbNo = EbNoVec(n);
    sim('doc_gray_code')  ;
    SERVec(n,:) = graySER;
    BERVec(n,:) = grayBER;
end;

После симуляции для полного набора значений Eb/N0 можно построить результаты с помощью этих команд:

semilogy( EbNoVec,SERVec(:,1), 'o', EbNoVec, BERVec(:,1), '*' );
legend  ( 'Symbol error rate', 'Bit error rate' );
xlabel  ( 'Eb/No (dB)' ); ylabel( 'Error Probability' );
title   ( 'Symbol and Bit Error Probability' );

Сравнение с чистым двоичным кодированием и теорией

Как дальнейшее осуществление, с помощью данных получен из berawgn, можно построить теоретические кривые на тех же осях с результатами симуляции. Можно также сравнить Грэя, кодирующего с чистым двоичным кодированием путем изменения M-PSK Modulator Baseband и блоков M-PSK Demodulator Baseband так, чтобы их параметрами Constellation ordering был Binary вместо Gray.