Эта модель, doc_gray_code, показывает линию связи, использующую модуляцию 8-PSK с серым кодированием. Серое кодирование - это метод, часто используемый в многоуровневых схемах модуляции для минимизации частоты битовых ошибок путем упорядочения символов модуляции так, чтобы двоичные представления соседних символов отличались только на один бит.
Пример модели включает в себя следующие блоки:
Блок генератора случайных целых чисел служит источником, создавая последовательность целых чисел.
Блок преобразования целого числа в бит преобразует каждое целое число в соответствующее двоичное представление.
Блок канала AWGN добавляет белый гауссов шум к модулированным данным.
Блок основной полосы частот демодулятора M-PSK демодулирует поврежденные данные.
Блок преобразования битов в целое преобразует каждое двоичное представление в соответствующее целое число.
Одна копия блока расчета частоты ошибок (с меткой Error Rate Calculation1 в этой модели) сравнивает демодулированные целочисленные данные с исходными данными, получая статистику ошибок символов. Выходной сигнал блока вычисления частоты ошибок представляет собой трехэлементный вектор, содержащий вычисленную частоту ошибок, количество обнаруженных ошибок и количество обработанных данных.
Другая копия блока библиотеки расчета частоты ошибок (с меткой Error Rate Calculation2 в этой модели) сравнивает демодулированные двоичные данные с двоичными представлениями исходных данных, давая статистику битовых ошибок.
В этой модели M-PSK модулятор блока основной полосы частот:
Принимает двоично-значные входы, представляющие целые числа между 0 и M − 1, где M - размер алфавита
Отображение двоичных представлений в точки созвездия с использованием последовательности, кодированной серым цветом
Производит выходы комплексных фазоров единичной величины с равномерно разнесенными фазами от 0 до 2δ (M − 1 )/M

Таблица показывает, какие двоичные представления на входе соответствуют тем фазорам на выходе. Второй столбец таблицы является промежуточным представлением, которое блок использует в своих вычислениях.
| Вход модулятора | Порядок с серым кодированием | Выход модулятора |
|---|---|---|
000 | 0 | exp(0) = 1 |
001 | 1 | exp(jδ/4) |
010 | 3 | exp(j3π/4) |
011 | 2 | exp(j2π/4) = exp(jδ/2) |
100 | 7 | exp(j7π/4) |
101 | 6 | exp(j6π/4) = exp(j3π/2) |
110 | 4 | exp(j4π/4) = exp(jδ) |
111 | 5 | exp(j5π/4) |
В таблице ниже сортируются первые два столбца таблицы в соответствии с выходными значениями. Эта сортировка делает более ясным, что общим эффектом этой подсистемы является отображение кода Грея, как показано на рисунке ниже. Обратите внимание, что цифры во втором столбце приведенной ниже таблицы отображаются на рисунке в порядке против часовой стрелки.
| Выход модулятора | Вход модулятора |
|---|---|
exp(0) | 000 |
exp(jδ/4) | 001 |
exp(j2π/4) = exp(jδ/2) | 011 |
exp(j3π/4) | 010 |
exp(j4π/4) = exp(jδ) | 110 |
exp(j5π/4) | 111 |
exp(j6π/4) = exp(j3π/2) | 101 |
exp(j7π/4) | 100 |

Можно проанализировать данные, полученные в примере, для сравнения теоретической производительности с производительностью моделирования.
Теоретическая вероятность ошибки символа MPSK равна
(øM))
где erfc - комплементарная функция ошибки, Es/N0 - отношение энергии в символе к спектральной плотности мощности шума, а М - число символов.
Чтобы определить вероятность битовой ошибки, вероятность символьной ошибки, PE, должна быть преобразована в ее эквивалент битовой ошибки. Нет общей формулы для преобразования символов в битовые ошибки. Верхний и нижний пределы тем не менее легко установить. Фактическая вероятность битовых ошибок, Pb, может быть ограничена
(M)
Нижний предел соответствует случаю, когда символы подверглись кодированию Грея. Верхний предел соответствует случаю чистого двоичного кодирования.
Чтобы проверить схему модуляции кода Грея в этой модели, смоделируйте модель с серым кодом для диапазона значений Eb/N0. Если вы хотите изучить коэффициенты битовых ошибок, но не частоты символьных ошибок, то вы можете использовать bertool графический интерфейс пользователя, как описано в приложении анализа битовых ошибок.
В остальной части этого раздела изучаются коэффициенты битовых и символьных ошибок и, следовательно, не используется bertool.
Поскольку увеличение значения Eb/N0 снижает количество ошибок, продолжительность каждого моделирования должна быть увеличена, чтобы статистика ошибок оставалась стабильной.
Использование sim Команда (Simulink) для запуска моделирования 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-модулятора и демодулятора M-PSK-демодулятора так, чтобы их параметры упорядочивания созвездия были Binary вместо Gray.