Этот пример показывает часть ETSI (Европейский институт стандартизации электросвязи) EN 300 429 стандарт для передачи кабельной системы цифровых телевизионных сигнал [1]. Пример использует систему связи objects™, чтобы моделировать Цифровое телевидение - Кабель (DVB-C) цепочка получателя передатчика.
Стандарт DVB-C описывает передачу цифровых телевизионных сигнал по строкам кабеля с помощью MPEG-2 или семейства MPEG-4 цифрового аудио и видеопотоков. В этом примере мы моделируем фрагмент того стандарта. Поток данных передается с помощью кодов Тростника-Solomon и одного поставщика услуг модуляция QAM. Стандарт предписывает проект передатчика и устанавливает минимальные требования к производительности для получателя.
Цель этого примера к:
Смоделируйте основные фрагменты возможного, передают/получают проект (действующий в 64-QAM режиме с Транспортными Пакетными данными о MPEG-2)
Проиллюстрируйте использование Системных объектов ключа Communications Toolbox™ для DVB-C (или подобный) разработка системы
Проиллюстрируйте создание высокоуровневых Системных объектов, которые содержат другие Системные объекты в порядке смоделировать большие компоненты системы под тестом
Сгенерируйте ошибочную статистику, которая поможет определить, удовлетворяет ли модель требования производительности системы
Проиллюстрируйте создание тестовой обвязки, которая может поддержать переменные количества тестовых прогонов. В этом случае мы используем ту поддержку, чтобы поддержать один режим, где только один EbNo задан, и мы наблюдаем спектры и scatterplots. Мы также поддерживаем режим, где несколько 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 compileIt на истину в порядке создать сгенерированный код.
Этот пример моделирует ссылку от оператора кабельной связи до поля верхней части набора клиента. Модель для той ссылки содержится в функции с именем runDVBCSystemUnderTest. Цикл обработки данных разделен на шесть основных частей. Системный объект использовался, чтобы смоделировать каждый из тех шести компонентов в той ссылке. Те объекты:
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 вокруг системы под тестом, чтобы обработать постоянное число супер кадров. Также можно использовать цикл с условием продолжения, чтобы управлять продолжительностью симуляции на основе количества моделируемых ошибок и переданных битов. Мы сделали последнего, предназначаясь для количества ошибок к 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 модулятора. Это применяется, квадратный корень повысил фильтр косинуса с 8x сверхдискретизировавший к потоку данных после модуляции. Код для этого компонента содержится в DVBCTransmitter.m.
Канал
Пример передает сигналы через канал AWGN. Это использует коммуникацию. AWGNChannel.
Основополосная обработка получателя
Этот раздел демодулирует полученные символы и преобразовывает 6-битные фрагменты в байты с помощью функции convertMTuplesToBytesDVBCDemo. Поскольку операция фильтрации вводит задержку, пример синхронизирует полученные байты с пакетным ребром с помощью Системного объекта задержки, hPacketSync. Обратите внимание на то, что задержка interleaver является кратной пакетному размеру, таким образом синхронизирование с пакетным ребром достаточно. Получатель устраняет чередование синхронизируемых с пакетом байтов и декодирует использование Системного объекта декодера RS. Поскольку пример использует один генератор последовательности PN, он синхронизирует декодируемые данные с ребром сверхкадра перед дерандомизацией. Пример показывает переданный и полученный спектр сигнала канала. Наконец, это сравнивает переданные биты и полученные биты, а также вход модулятора и демодулятор вывод, чтобы получить частоты ошибок по битам. Код для этого компонента содержится в 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, полученных с объектами системы измерения коэффициента ошибок.
Этот пример использует следующий скрипт и функцию помощника:
EN 300 429 V1.2.1 Стандарта ETSI: Цифровое телевидение (DVB); Структурируя структуру, кодирование канала и модуляцию для кабельных систем, Европейского института стандартизации электросвязи, Вальбонн, Франция, 1998.