Эта модель показывает современную схему кодирования канала, используемую в стандарте цифрового видеовещания второй генерации (DVB-S.2), который развертывается DIRECTV в Соединенных Штатах. Схема кодирования основана на конкатенации кодов LDPC (Low-Density Parity-Check) и BCH. Коды LDPC, изобретенные Галлагером в его исходной докторской диссертации в 1960 году, могут достичь чрезвычайно низких частот ошибок вблизи пропускной способности канала с помощью алгоритма итерационного декодирования с низкой сложностью. Внешние коды BCH используются для исправления спорадических ошибок, допущенных декодером LDPC.
Коды канала для DVB-S.2 обеспечивают значительный коэффициент усиления пропускной способности по сравнению с DVB-S при тех же условиях передачи и допускают операцию без квази-ошибок (частота ошибок пакета ниже 10 ^ -7) на уровне приблизительно 0,7 дБ до 1 дБ от предела Шеннона, в зависимости от режима передачи.
Этот пример моделирует энкодер BCH, LDPC энкодера, перемежитель, модулятор, а также их аналоги в приемник, согласно DVB-S.2 стандарту.
Система связи в этом примере выполняет следующие задачи:
Генерация BBFRAME случайным источником
Кодирование BCH для всех параметров кодирования и нормального FECFRAME
Кодирование LDPC, для всех параметров кодирования и нормального FECFRAME
Перемежение
Модуляция (QPSK, 8PSK, 16APSK или 32APSK)
Моделирование канала AWGN
Демодуляция с мягким решением
Deinterleaving
Декодирование LDPC с помощью алгоритма передачи сообщений
Декодирование BCH
Разбуферизация BBFRAME
modelname = 'commdvbs2' ; open_system(modelname); RX = [modelname '/RX Constellation']; % Define Simulink object as a variable set_param(RX,'openScopeAtSimStart','off' ); % Set Simulink scope visibility parameter T = evalc('sim(modelname)');
Кроме того, эта модель имеет блоки для измерения и отображения частоты ошибок пакета, частоты битовой ошибки LDPC и оцененного ES/No. Существует также график поля точек возможностей отображения принятого сигнала, которая помогает пользователям визуализировать искажения канала сигнала.
Упрощения и допущения
Для простоты, этот пример
Принимает идеальную синхронизацию между передатчиком и приемником
Использует сложную базовую модель канала AWGN, а не полноценного спутникового канала
Моделирует BBHEADER и DATA FIELD в BBFRAME с использованием двоичного случайного источника Бернулли и не выполняет скремблирование основной полосы частот
Поддерживает только обычный FECFRAME (т.е. длина блоков кодов LDPC составляет 64800)
Обрабатывает одно кодовое слово LDPC за один модуль времени в Simulink ®
Аппроксимирует логарифмический коэффициент логарифмической правдоподобности выходного канала для декодирования LDPC, принимая во внимание только две точки в созвездии, ближайшем к принятому сигналу во время демодуляции с мягким решением
Использует Es/No, предоставленный пользователем для декодирования LDPC, вместо оценки Es/No из принятого сигнала
Кроме того, пример не моделирует эти аспекты DVB-S.2 стандарта:
Короткий FECFRAME
Система координат физического слоя (PL)
Сигнализация PL и вставка пилот-сигнала
PL-скремблер
Фильтр основной полосы (BB) и квадратурная модуляция
Параметры модели
Двойной клик по блоку Параметров модели позволяет пользователям задать следующие параметры для модели:
Когда модель запускается, автоматически появляется окно, чтобы отобразить график поля точек полученного сигнала. Вероятность битовой ошибки LDPC, вероятность пакетной ошибки и оцененный ES/No от принятого сигнала будут постоянно обновляться.
% Set scope visibility for next display and run simulation set_param(RX,'openScopeAtSimStart','on'); sim(modelname);
Степень кодов LDPC можно легко наблюдать, используя настройки по умолчанию: QPSK, скорость 1/2, Es/No = 1 дБ и 50 итераций при декодировании. Даже при таком низком значении Es/No декодер LDPC редко делает ошибку. Этот график поля точек наглядно иллюстрирует, насколько шумен канал.
Если Es/No немного уменьшен, то, для примера, до 0,5 дБ, вероятность битовой ошибки LDPC будет намного больше. Это согласуется с типичными крутыми кривыми эффективности кодов LDPC.
% Cleanup % % To clear the variables set above and close without saving the changes to % the model, type the following commands into the MATLAB(R) command prompt. % close_system(modelname,0);
[1] DVB-S.2 Стандартная спецификация, ETSI EN 302 307 V1.1.1 (2005-03).
[2] Р. Г. Галлагер, Коды проверки четности низкой плотности, Транзакции IRE по теории информации, том 8, № 1, январь 1962, стр. 21-28.
[3] W. E. Ryan, Введение в коды LDPC, в Coding and Signal Processing for Magnetic Recoding Systems (Bane Vasic, ed.), CRC Press, 2004.