В этом примере показана часть стандарта ETSI (European Telecommunications Standards Institute) EN 300 429 для передачи кабельных систем цифровых телевизионных сигналов [1]. В примере используется система связи objects™ для моделирования цепи передатчик-приемник цифрового видеовещания (DVB-C).
Стандарт DVB-C описывает передачу цифровых телевизионных сигналов по кабельным линиям с использованием MPEG-2 или MPEG-4 семейства цифровых аудио- и видеопотоков. В этом примере моделируется часть этого стандарта. Поток данных передается с использованием кодов Рида-Соломона и модуляции QAM с одной несущей. Стандарт предписывает конструкцию передатчика и устанавливает минимальные требования к производительности приемника.
Целью этого примера является:
Смоделируйте главные части возможного передают/получают дизайн (работающий в 64-QAM способе с Транспортными данными о Пакете MPEG-2)
Проиллюстрировать использование ключевых объектов Communications Toolbox™ System для проектирования систем DVB-C (или аналогичных)
Иллюстрация создания системных объектов более высокого уровня, содержащих другие системные объекты, для моделирования больших компонентов тестируемой системы
Создание статистики ошибок, которая поможет определить, удовлетворяет ли модель требованиям к производительности системы
Иллюстрируйте создание тестового жгута, который может поддерживать переменные количества тестовых запусков. В этом случае мы используем эту поддержку для поддержки одного режима, где указан только один EbNo, и наблюдаем спектры и рассеянные диаграммы. Мы также поддерживаем режим, в котором указано несколько EbNo, чтобы создать кривую BER.
Сценарий commdvbc_init.m инициализирует параметры моделирования и создает структуру prmDVBC. Поля этой структуры являются параметрами системы DVB-C.
commdvbc_init % The fields of this structure are the parameters of the DVB-C system at % hand. prmDVBC
prmDVBC =
struct with fields:
bitsPerByte: 8
bitsPerMTpl: 6
MPEG2DatRateBitPerS: 9600000
rawMPEG2DataPcktLen: 184
MPEG2TrnsprtPcktLen: 188
MPEG2TrnsprtFramePer: 1.5667e-04
MPEG2PcktsPerSprFrm: 8
MPEG2TrnsSuperFrame: 1504
PRBSSeqPeriodBytes: 1503
PRBSSeqPeriodBits: 12024
RSCodewordLength: 204
CableChanFrameLen: 272
CableChanFrmPeriod: 1.5667e-04
RCosineSampsPerSym: 8
CableSymbolPeriod: 7.1998e-08
RCosineFilterSpan: 16
TxRxSymbolSampDelay: 288
DeintrlvrAlignDelay: 192
QAMSymbolMapping: [1x64 double]
ConvIntlNumBranches: 12
ConvIntlCellDepth: 17
Основной цикл в тестируемой системе обрабатывает пакет данных за пакетом, где восемь пакетов образуют суперкадр. Задайте useCodegen = true, чтобы использовать созданный код вместо кода MATLAB ®. Установите для переменной MATLAB compableIt значение true, чтобы создать созданный код.
В этом примере моделируется связь между оператором кабеля и абонентской приставкой клиента. Модель для этой связи содержится в функции с именем runDVBCSystemUnderTest. Контур обработки данных разделен на шесть основных частей. Объект System использовался для моделирования каждого из этих шести компонентов в этой связи. Эти объекты:
1) DVBCSource: generates the bitstream 2) DVBCTransmitter: contains the transmitter (encoding, modulation, filtering, etc.) 3) comm.AWGNChannel: models the channel 4) DVBCReceiver: contains the receiver 5) DVBCBER: calculates error rates 6) DVBCScopes: optional object that provides visualization
Внутренний цикл runDVBCSystemUnderTest использует следующие объекты:
Для обработки фиксированного количества суперкадров можно использовать цикл for-loop вокруг тестируемой системы. Кроме того, можно использовать while-loop для управления длиной моделирования на основе количества моделируемых ошибок и передаваемых битов. Мы сделали последнее, нацелившись на количество ошибок до 100, и максимальное количество передач до 1e6.
while (berEnd2End(2) < totalErrors) && (berEnd2End(3) < totalBits) txBytes = dvbcSource(); % Source [txPckt, modTxPckt] = dvbcTX(txBytes); % Transmitter chPckt = awgnChan(txPckt); % Channel [rxBytes, modRxPckt, rxPcakt] = dvbcRX(chPckt); % Receiver [berEnd2End, berDemod] = ... dvbBER(txBytes,rxBytes,modTxPckt,modRxPckt); % BER if useScopes runDVBCScopes(dvbcScope,txPckt,chPckt,rxPckt); end end
MPEG-2 Физический интерфейс основной полосы частот - источник данных
Этот раздел генерирует случайные данные и биты заголовка и добавляет байт синхронизации заголовка. Первый пакет каждого суперкадра использует битовое дополнение байта синхронизации заголовка. Код этого компонента содержится в DVBCSource.m.
Обработка основной полосы частот передатчика
В этом разделе выполняется рандомизация данных с использованием псевдошумовой последовательности. Передатчик применяет RS-кодирование и сверточное перемежение. Функция convertBytesToMTuplesDVBCDemo преобразовывает 8-битные байты в 6-битные куски для 64-QAM модулятора. Он применяет к потоку данных после модуляции фильтр косинуса с увеличенным квадратным корнем с 8-кратной избыточной выборкой. Код этого компонента содержится в DVBCTrmitter.m.
Канал
В примере сигналы передаются через канал AWGN. Используется команда .AWGNChannel.
Обработка основной полосы частот получателя
Этот раздел демодулирует полученные символы и преобразовывает 6-битные куски в байты, используя функцию convertMTuplesToBytesDVBCDemo. Поскольку операция фильтрации вводит задержку, пример синхронизирует принятые байты с краем пакета, используя объект системы задержки hPacketSync. Следует отметить, что задержка перемежителя кратна размеру пакета, поэтому достаточно синхронизации с краем пакета. Приемник выполняет обратное перемежение синхронизированных по пакетам байтов и декодирует с использованием системного объекта RS-декодера. Поскольку в примере используется один генератор ПШ последовательности, он синхронизирует декодированные данные с краем суперкадра перед деандомизацией. В примере показан спектр передаваемого и принимаемого канальных сигналов. Наконец, он сравнивает переданные биты и принятые биты, а также вход модулятора и выход демодулятора для получения частоты битовых ошибок. Код этого компонента содержится в DVBCReceiver.m.
Расчеты BER
Этот компонент сравнивает принятые, декодированные биты и сравнивает их с переданными битами для вычисления частоты битовых ошибок. Код этого компонента содержится в файле DVBCBER.m.
Визуализация
Дополнительный инструментарий обеспечивает визуализацию. Код этого компонента содержится в DVBCScopes.m.
Сначала мы запускаем тестируемую систему с одним EbNo и включенной визуализацией, чтобы убедиться, что она работает правильно.
totalErrors = 100; totalBits = 1e6; EbNo = 16.5; useScopes = true; useCodegen = false; compileIt = false; if compileIt % Make EbNo input var-size row vector (max length = 100) codegen runDVBCSystemUnderTest -report -args {coder.Constant(useScopes),coder.Constant(prmDVBC), coder.Constant(num), 1, coder.typeof(EbNo,[1 100],[false true]), 1, 1} end if useCodegen % Constant inputs do not appear in call to generated code version [berEnd2End, berDemod] = runDVBCSystemUnderTest_mex(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits); else [berEnd2End, berDemod] = runDVBCSystemUnderTest(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits); end


Затем мы повторно запускаем тестируемую систему с вектором EbNo и визуализация отключается для генерации кривой BER.
Ступенчатый метод объектов измерения частоты ошибок, berEnd2End и berDemod, выводит вектор 3 на 1, содержащий обновления измеренного значения BER, количество ошибок и общее количество передач битов. Отображение BER на выходе демодулятора вместе со сквозным BER.
EbNo = 11.5:0.5:14.5; useScopes = false; useCodegen = false; compileIt = false; if compileIt % Make EbNo input var-size row vector (max length = 100) codegen runDVBCSystemUnderTest -report -args {coder.Constant(useScopes),coder.Constant(prmDVBC), coder.Constant(num), 1, coder.typeof(EbNo,[1 100],[false true]), 1, 1} end if useCodegen % Constant inputs do not appear in call to generated code version [berEnd2End, berDemod] = runDVBCSystemUnderTest_mex(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits) else [berEnd2End, berDemod] = runDVBCSystemUnderTest(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits) end % plotDVBCResults(EbNo, berEnd2End, berDemod);
berEnd2End =
0.0193
0.0139
0.0075
0.0038
0.0006
0.0001
0.0000
berDemod =
0.0174
0.0133
0.0083
0.0066
0.0041
0.0028
0.0018

В этом примере использовались несколько объектов системы для моделирования части системы связи DVB-C по каналу AWGN. Он показал, как моделировать несколько частей системы DVB-C, таких как рандомизация, кодирование и перемежение. В примере также использовались объекты системы задержки для синхронизации передатчика и приемника. Производительность системы измерялась с использованием кривых BER, полученных с помощью системных объектов измерения частоты ошибок.
В этом примере используется следующий сценарий и вспомогательная функция:
Стандарт ETSI EN 300 429 V1.2.1: цифровое видеовещание (DVB); Структура кадров, канальное кодирование и модуляция для кабельных систем, Европейский институт телекоммуникационных стандартов, Вальбонна, Франция, 1998 год.