Этот пример показывает, как измерить вероятность битовой ошибки (BER) и вероятность пакетной ошибки (PER) одного потока расширенной ссылки цифрового видеотрансляции спутника второй генерации (DVB-S2X), который имеет постоянное кодирование и модуляцию для регулярных систем координат. Пример подробно описывает стратегии синхронизации символа и несущей, подчеркивая, как оценить искажения RF переднего конца в условиях сильного шума. Сигнал с одним потоком добавляет искажения RF переднего конца, а затем пропускает форму волны через аддитивный канал белого Гауссова шума (AWGN).
Стандарт DVB-S2X, расширение спецификации DVB-S2, усиливает поддержку, предоставляемую для основных приложений DVB-S2, и повышает общую эффективность по сравнению со спутниковыми ссылками. Стандарт DVB-S2X поддерживает следующие дополнительные функции:
Больше гранулярности модуляции и кодовых скоростей
Меньшие опции развертывания фильтра для лучшего использования полосы пропускания
Созвездия, оптимизированные для линейных и нелинейных каналов
Больше опций скремблирования для критических сценариев межканальных помех
DVB-S2X, обслуживающие различные целевые приложения, и приемники подвергаются различным типам и уровням искажений RF на основе используемого приложения. Этот пример проектирует аспекты синхронизации приемника DVB-S2X, используемого для центральных приложений DVB-S2. Пример поддерживает более новые скорости кода, более высокие схемы модуляции, такие как 64, 128 и 256 APSK, и меньшие опции отката фильтра.
ETSI EN 302 307-2, Раздел 6, Таблица 20a и Таблица 20c [1] суммируют требования к эффективности без квази-ошибок (QEF) по каналу AWGN для различных схем модуляции и скоростей кода. Работа область значений для различных режимов передачи может быть рассмотрен как + 3 или -2 дБ от точка, где наблюдается эффективность QEF. Потому что работает Область значений низкий, стратегии временной синхронизации несущей и символа являются сложными проектами задачами.
Эта схема суммирует пример рабочего процесса.
Пример обрабатывает 30 системы координат физического слоя (PL) данных с установите значение 25 дБ, а затем вычислите BER и PER. Смещение несущей частоты, смещение тактового сигнала дискретизации и фазы помехи применяются к модулированному сигналу, и AWGN добавляется к сигналу.
В приемнике после согласованной фильтрации выполняются операции синхронизации и восстановления несущей для восстановления передаваемых данных. Чтобы извлечь системы координат, искаженная форма волны обрабатывается через различные стратегии синхронизации и восстановления несущей. Алгоритмы восстановления несущей управляются пилотно. Для декодирования систем координат данных параметры передачи физического слоя, такие как схема модуляции, скорость кода и тип системы координат FEC, восстанавливаются из заголовка PL. Чтобы регенерировать вход поток битов, заголовок основной полосы (BB) декодируется.
Поскольку стандарт DVB-S2X поддерживает пакетированный и непрерывный режимы передачи, системы координат BB может быть либо конкатенацией пользовательских пакетов, либо потоком бит. Заголовок BB восстанавливается, чтобы определить режим передачи. Если система координат BB является конкатенацией пользовательских пакетов, состояние проверки пакетной циклической избыточности (CRC) каждого пакета возвращается вместе с декодированными битами, и затем измеряются PER и BER.
Эти блоки показывают рабочие процессы синхронизации и восстановления входных битов.
Этот пример загружает MAT-файл с DVB-S2X матрицами четности LDPC. Если MAT-файл недоступен в пути MATLAB ®, используйте эти команды для загрузки и разархивации MAT-файла.
if ~exist('dvbs2xLDPCParityMatrices.mat','file') if ~exist('s2xLDPCParityMatrices.zip','file') url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip'; websave('s2xLDPCParityMatrices.zip',url); unzip('s2xLDPCParityMatrices.zip'); end addpath('s2xLDPCParityMatrices'); end
Задайте cfgDVBS2X
структура для определения параметров конфигурации DVB-S2X передачи. PLSDecimalCode
129 и 131 не поддерживаются, потому что они используются для генерации систем координат VL-SNR. Поддерживаются только обычные системы координат.
cfgDVBS2X.StreamFormat = "TS"; cfgDVBS2X.PLSDecimalCode = 191; % 64APSK 7/9 with pilots cfgDVBS2X.DFL = 50128; cfgDVBS2X.ScalingMethod = "Unit average power"; cfgDVBS2X.RolloffFactor = 0.35; cfgDVBS2X.SamplesPerSymbol = 2
cfgDVBS2X = struct with fields:
StreamFormat: "TS"
PLSDecimalCode: 191
DFL: 50128
ScalingMethod: "Unit average power"
RolloffFactor: 0.3500
SamplesPerSymbol: 2
Стандарт DVB-S2X поддерживает гибкие полосы пропускания канала. Используйте типовую пропускную способность канала, такую как 36 МГц. Пропускная способность канала может варьироваться. Алгоритм грубой частотной синхронизации, реализованный в этом примере, может отслеживать смещения несущей частоты до 11% от скорости входного символа. Скорость символа вычисляется как B/( 1 + R), где B является пропускной способностью канала, и R является коэффициентом срабатывания передающего фильтра. Алгоритмы, реализованные в этом примере, могут исправить смещение тактового сигнала дискретизации до 10 ppm.
simParams.sps = cfgDVBS2X.SamplesPerSymbol; % Samples per symbol simParams.numFrames = 30; % Number of frames to be processed simParams.chanBW = 36e6; % Channel bandwidth in Hertz simParams.cfo = 2e6; % Carrier frequency offset in Hertz simParams.sco = 2; % Sampling clock offset in parts per million simParams.phNoiseLevel = "Low"; % Phase noise level provided as 'Low', 'Medium', or 'High' simParams. EsNodB = 25; % Energy per symbol to noise ratio in decibels
Эта таблица определяет фазу шумовую маску (dBc/Hz), используемую для генерирования фазы шума, приложенного к переданному сигналу. Эти шумовые маски взяты из ETSI TR 102 376-1 Раздел 4.3.2.1.3 Рисунок 12 [2].
Чтобы создать DVB-S2X сигнал, используйте HelperDVBS2XRxInputGenerate
вспомогательная функция с simParams
и cfgDVBS2X
структуры как входы. Функция возвращает сигнал данных, переданные и принятые формы сигналов, параметры конфигурации физического слоя в качестве структуры и структуру обработки приемника. Принятая форма волны нарушается с частотой несущей, смещениями фазы синхронизации и фазовым шумом, а затем передается через канал AWGN. Структура параметров обработки приемника, rxParams
, включает опорные поля пилот-сигнала, индексы пилот-сигнала, счетчики и буферы. Постройте график созвездия принятых символов и спектра переданных и принятых форм волны.
[data,txOut,rxIn,phyConfig,rxParams] = HelperDVBS2XRxInputGenerate(cfgDVBS2X,simParams); disp(phyConfig)
FECFrame: "normal" ModulationScheme: "64APSK" LDPCCodeIdentifier: "7/9"
% Received signal constellation plot rxConst = comm.ConstellationDiagram('Title','Received data', ... 'XLimits',[-1 1],'YLimits',[-1 1], ... 'ShowReferenceConstellation',false, ... 'SamplesPerSymbol',simParams.sps); rxConst(rxIn(1:length(txOut)))
% Transmitted and received signal spectrum visualization Rsymb = simParams.chanBW/(1 + cfgDVBS2X.RolloffFactor); Fsamp = Rsymb*simParams.sps; specAn = dsp.SpectrumAnalyzer('SampleRate',Fsamp, ... 'ChannelNames',{'Transmitted waveform','Received waveform'}, ... 'ShowLegend',true); specAn([txOut,rxIn(1:length(txOut))]);
В приемнике временной синхронизации символов выполняется на принятых данных и затем сопровождается система координат синхронизацией. Алгоритмы приемника включают алгоритмы коррекции грубого и мелкого ухудшения частоты. Алгоритм оценки несущей частоты может отслеживать смещения несущей частоты до 20% от скорости входного символа. Грубая оценка частоты, реализованная как цикл с частотной автоподстройкой (FLL), уменьшает смещение частоты до уровня, который может отслеживать оценщик мелкой частоты. Предпочтительный цикл полоса для синхронизации символа и компенсации грубой частоты зависит от настройка.
Блок из 36 пилотов повторяется каждые 1476 символов. При оценке крупной частотной ошибки используется 34 из 36 пилот-символов. Отношение используемых пилот-сигналов к блоку (34) и периодичности пилот-сигнала (1476) составляет 0,023. Использование значения 0,023 в качестве коэффициента масштабирования для полосы цикла грубой частотной синхронизации является предпочтительным.
Когда вы уменьшаете , уменьшите шумовую полосу цикла, чтобы отфильтровать больше шума во время сбора. Количество систем координат, необходимых для сходимости синхронизатора символов и грубого FLL, зависит от настройки полосы пропускания цикла.
При синхронизации системы координат используется заголовок PL. Поскольку синхронизация несущей осуществляется с использованием данных, синхронизация системы координат должна точно обнаруживать начало системы координат. играет решающую роль в определении точности синхронизации системы координат. Когда модулированные QPSK системы координат восстанавливаются значения ниже 3 дБ, синхронизация системы координат должна выполняться в нескольких системах координат для точного обнаружения.
Оценка тонкой частоты может отслеживать смещения несущей частоты до 4% от скорости входа символов. Оценка тонкой частоты должна обрабатывать несколько пилотных блоков, чтобы смещение остаточной несущей частоты было уменьшено до уровней, приемлемых для алгоритма оценки фазы. Алгоритм оценки фазы может обрабатывать остаточную ошибку несущей частоты менее 0,02% от входа частоты символов.
Эти настройки назначены в rxParams
структура для обработки синхронизации. Для получения дополнительной информации о том, как задать эти параметры для низких значения см. в разделе «Дальнейшие исследования».
rxParams.carrSyncLoopBW = 1e-2*0.023; % Coarse frequency estimator loop bandwidth normalized by symbol rate rxParams.symbSyncLoopBW = 8e-3; % Symbol timing synchronizer loop bandwidth normalized by symbol rate rxParams.symbSyncLock = 8; % Number of frames required for symbol timing error convergence rxParams.frameSyncLock = 1; % Number of frames required for frame synchronization rxParams.coarseFreqLock = 5; % Number of frames required for coarse frequency acquisition rxParams.fineFreqLock = 4; % Number of frames required for fine frequency estimation % Total frames taken for symbol timing and coarse frequency lock to happen rxParams.initialTimeFreqSync = rxParams.symbSyncLock + rxParams.frameSyncLock + rxParams.coarseFreqLock; % Total frames used for overall synchronization rxParams.totalSyncFrames = rxParams.initialTimeFreqSync + rxParams.fineFreqLock; % Create time frequency synchronization System object by using % HelperDVBS2TimeFreqSynchronizer helper object timeFreqSync = HelperDVBS2TimeFreqSynchronizer( ... 'CarrSyncLoopBW',rxParams.carrSyncLoopBW, ... 'SymbSyncLoopBW',rxParams.symbSyncLoopBW, ... 'SamplesPerSymbol',simParams.sps, ... 'DataFrameSize',rxParams.xFecFrameSize, ... 'SymbSyncTransitFrames',rxParams.symbSyncLock, ... 'FrameSyncAveragingFrames',rxParams.frameSyncLock); % Initialize error computing parameters [numFramesLost,pktsErr,bitsErr,pktsRec] = deal(0); % Initialize data indexing variables stIdx = 0; dataSize = rxParams.inputFrameSize; plFrameSize = rxParams.plFrameSize; dataStInd = rxParams.totalSyncFrames + 1; isLastFrame = false; symSyncOutLen = zeros(rxParams.initialTimeFreqSync,1);
Чтобы синхронизировать принятые данные и восстановить входной поток битов, искаженные DVB-S2X выборки формы волны обрабатываются по одной системе координат за раз путем выполнения этих шагов.
Примените согласованную фильтрацию, выводя из расчета две выборки на символ.
Применить временную синхронизацию символа с помощью детектора временных ошибок Гарднера с выходом, сгенерированным со скоростью символа. TED Гарднера не управляется данными, поэтому он выполняется перед синхронизацией поставщика услуг.
Примените систему координат синхронизацию, чтобы обнаружить начало системы координат и идентифицировать положения пилот-сигнала.
Оцените и примените грубую коррекцию смещения частоты.
Оцените и примените коррекцию смещения тонкой частоты.
Оцените и компенсируйте остаточные частоту несущей и фазовый шум.
Декодируйте заголовок PL и вычислите параметры передачи.
Демодулируйте и декодируйте системы координат PL.
Выполните проверку CRC заголовка BB, если проверка прошла, восстановите параметры заголовка.
Перегенерируйте входной поток данных или пакетов из систем координат BB.
while stIdx < length(rxIn) % Use one DVB-S2X PL frame for each iteration. endIdx = stIdx + rxParams.plFrameSize*simParams.sps; % In the last iteration, all the remaining samples in the received % waveform are considered. isLastFrame = endIdx > length(rxIn); endIdx(isLastFrame) = length(rxIn); rxData = rxIn(stIdx+1:endIdx); % After coarse frequency offset loop is converged, the FLL works with a reduced loop bandwidth. if rxParams.frameCount < rxParams.initialTimeFreqSync coarseFreqLock = false; else coarseFreqLock = true; end % Retrieve the last frame samples. if isLastFrame resSymb = plFrameSize - length(rxParams.cfBuffer); resSampCnt = resSymb*rxParams.sps - length(rxData); if resSampCnt >= 0 % Inadequate number of samples to fill last frame syncIn = [rxData; zeros(resSampCnt, 1)]; else % Excess samples are available to fill last frame syncIn = rxData(1:resSymb*rxParams.sps); end else syncIn = rxData; end % Apply matched filtering, symbol timing synchronization, frame % synchronization, and coarse frequency offset compensation. [coarseFreqSyncOut,syncIndex,phEst] = timeFreqSync(syncIn,coarseFreqLock); if rxParams.frameCount <= rxParams.initialTimeFreqSync symSyncOutLen(rxParams.frameCount) = length(coarseFreqSyncOut); if any(abs(diff(symSyncOutLen(1:rxParams.frameCount))) > 5) error('Symbol timing synchronization failed. The loop will not converge. No frame will be recovered. Update the symbSyncLoopBW parameter according to the EsNo setting for proper loop convergence.'); end end rxParams.syncIndex = syncIndex; % The PL frame start index lies somewhere in the middle of the chunk being processed. % From fine frequency estimation onwards, the processing happens as a PL frame. % A buffer is used to store symbols required to fill one PL frame. if isLastFrame fineFreqIn = [rxParams.cfBuffer; coarseFreqSyncOut]; else fineFreqIn = [rxParams.cfBuffer; coarseFreqSyncOut(1:rxParams.syncIndex-1)]; end % Estimate the fine frequency error by using the HelperDVBS2FineFreqEst % helper function. % Add 1 to the conditional check because the buffer used to get one PL frame introduces a delay of one to the loop % count. if (rxParams.frameCount > rxParams.initialTimeFreqSync + 1) && ... (rxParams.frameCount <= rxParams.totalSyncFrames + 1) rxParams.fineFreqCorrVal = HelperDVBS2FineFreqEst( ... fineFreqIn(rxParams.pilotInd),rxParams.numPilotBlks, ... rxParams.refPilots,rxParams.fineFreqCorrVal); end if rxParams.frameCount >= rxParams.totalSyncFrames + 1 fineFreqLock = true; else fineFreqLock = false; end if fineFreqLock % Normalize the frequency estimate by the input symbol rate % freqEst = angle(R)/(pi*(N+1)) where N (18) is the number of elements % used to compute the mean of auto correlation (R) in % HelperDVBS2FineFreqEst. freqEst = angle(rxParams.fineFreqCorrVal)/(pi*(19)); % Generate the symbol indices using frameCount and plFrameSize. % Subtract 2 from the rxParams.frameCount because the buffer used to get one % PL frame introduces a delay of one to the count. phErr = exp(-1j*2*pi*freqEst*((rxParams.frameCount-2)*plFrameSize:(rxParams.frameCount-1)*plFrameSize-1)); fineFreqOut = fineFreqIn.*phErr(:); % Estimate the phase error estimation by using the HelperDVBS2PhaseEst % helper function. [phEstRes,rxParams.prevPhaseEst] = HelperDVBS2PhaseEst( ... fineFreqOut(rxParams.pilotInd),rxParams.refPilots,rxParams.prevPhaseEst); % Compensate for the residual frequency and phase offset by using % the % HelperDVBS2PhaseCompensate helper function. % Use two frames for initial phase error estimation. Starting with the % second frame, use the phase error estimates from the previous frame and % the current frame in compensation. % Add 3 to the frame count comparison to account for delays: One % frame due to rxParams.cfBuffer delay and two frames used for phase % error estimate. if rxParams.frameCount >= rxParams.totalSyncFrames + 3 phaseCompOut = HelperDVBS2PhaseCompensate(rxParams.ffBuffer, ... rxParams.pilotEst,phEstRes(2),rxParams.pilotInd); end rxParams.ffBuffer = fineFreqOut; rxParams.pilotEst = phEstRes; % The phase compensation on the data portion is performed by % interpolating the phase estimates computed on consecutive pilot % blocks. The second phase estimate is not available for the data % portion after the last pilot block in the last frame. Therefore, % the slope of phase estimates computed on all pilot blocks in the % last frame is extrapolated and used to compensate for the phase % error on the final data portion. if isLastFrame pilotBlkLen = 36; % Symbols pilotBlkFreq = 1476; % Symbols avgSlope = mean(diff(phEstRes(2:end))); chunkLen = rxParams.plFrameSize - rxParams.pilotInd(end) + ... rxParams.pilotInd(pilotBlkLen); estEndPh = phEstRes(end) + avgSlope*chunkLen/pilotBlkFreq; phaseCompOut1 = HelperDVBS2PhaseCompensate(rxParams.ffBuffer, ... rxParams.pilotEst,estEndPh,rxParams.pilotInd); end end % Recover the input bit stream. if rxParams.frameCount >= rxParams.totalSyncFrames + 3 isValid = true; if isLastFrame syncOut = [phaseCompOut;phaseCompOut1]; else syncOut = phaseCompOut; end else isValid = false; syncOut = []; end % Update the buffers and counters. rxParams.cfBuffer = coarseFreqSyncOut(rxParams.syncIndex:end); rxParams.syncIndex = syncIndex; rxParams.frameCount = rxParams.frameCount + 1; if isValid % Data valid signal % Decode the PL header by using the HelperDVBS2XPLHeaderRecover helper % function. Start of frame (SOF) is 26 symbols which are discarded % before header decoding. They are only required for frame % synchronization. rxPLSCode = syncOut(1:90); % First 90 symbols of frame is PL header [plsDecCode, phyParams] = HelperDVBS2XPLHeaderRecover(rxPLSCode,rxParams.s2xStatus); % Validate the decoded PL header. if plsDecCode ~= cfgDVBS2X.PLSDecimalCode fprintf('%s\n','PL header decoding failed') else % Demodulation and decoding for frameCnt = 1:length(syncOut)/rxParams.plFrameSize rxFrame = syncOut((frameCnt-1)*rxParams.plFrameSize+1:frameCnt*rxParams.plFrameSize); % Estimate noise variance by using % HelperDVBS2NoiseVarEstimate helper function. nVar = HelperDVBS2NoiseVarEstimate(rxFrame,rxParams.pilotInd,rxParams.refPilots,rxParams.normFlag); % The data begins at symbol 91 (after the header symbols). rxDataFrame = rxFrame(91:end); % Recover the BB frame by using HelperDVBS2XBBFrameRecover % helper function. rxBBFrame = HelperDVBS2XBBFrameRecover(rxDataFrame,phyParams,rxParams.plScramblingIndex, ... rxParams.numPilotBlks,nVar,false); % Recover the input bit stream by using % HelperDVBS2StreamRecover helper function. if strcmpi(cfgDVBS2X.StreamFormat,'GS') && ~rxParams.UPL [decBits,isFrameLost] = HelperDVBS2StreamRecover(rxBBFrame); if ~isFrameLost && length(decBits) ~= dataSize isFrameLost = true; end else [decBits,isFrameLost,pktCRC] = HelperDVBS2StreamRecover(rxBBFrame); if ~isFrameLost && length(decBits) ~= dataSize isFrameLost = true; pktCRC = zeros(0,1,'logical'); end % Compute the packet error rate for TS or GS packetized % mode. pktsErr = pktsErr + numel(pktCRC) - sum(pktCRC); pktsRec = pktsRec + numel(pktCRC); end if ~isFrameLost ts = sprintf('%s','BB header decoding passed.'); else ts = sprintf('%s','BB header decoding failed.'); end % Compute the number of frames lost. CRC failure of % baseband header is considered a frame loss. numFramesLost = isFrameLost + numFramesLost; fprintf('%s(Number of frames lost = %1d)\n',ts,numFramesLost) % Compute the bits in error. if isLastFrame && ~isFrameLost bitsErr = bitsErr + sum(data((dataStInd-1)*dataSize+1:dataStInd*dataSize) ~= decBits); else if ~isFrameLost bitsErr = bitsErr + sum(data((dataStInd-1)*dataSize+1:dataStInd*dataSize) ~= decBits); end end dataStInd = dataStInd + 1; end end end stIdx = endIdx; end
BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0) BB header decoding passed.(Number of frames lost = 0)
Постройте созвездие синхронизированных данных и вычислите BER и PER.
% Synchronized data constellation plot syncConst = comm.ConstellationDiagram('Title','Synchronized data', ... 'XLimits',[-1.7 1.7],'YLimits',[-1.7 1.7], ... 'ShowReferenceConstellation',false); syncConst(syncOut)
% Error metrics display % For GS continuous streams if strcmpi(cfgDVBS2X.StreamFormat,'GS') && ~rxParams.UPL if (simParams.numFrames-rxParams.totalSyncFrames == numFramesLost) fprintf("All frames are lost. No bits are retrieved from BB frames.") else ber = bitsErr/((dataStInd-rxParams.totalSyncFrames)*dataSize); fprintf('BER : %1.2e\n',ber) end else % For GS and TS packetized streams if pktsRec == 0 fprintf("All frames are lost. No packets are retrieved from BB frames.") else if strcmpi(cfgDVBS2X.StreamFormat,'TS') pktLen = 1504; else pktLen = cfgDVBS2X.UPL; % UP length including sync byte end ber = bitsErr/(pktsRec*pktLen); per = pktsErr/pktsRec; fprintf('PER: %1.2e\n',per) fprintf('BER: %1.2e\n',ber) end end
PER: 0.00e+00
BER: 0.00e+00
Для симуляций BER в AWGN, принимая идеальную синхронизацию, используйте HelperDVBS2XBitRecover
вспомогательная функция для оценки эффективности приемника. См. примеры, приведенные в разделе M-help HelperDVBS2XBitRecover
вспомогательная функция. Для получения дополнительной информации о том, как сконфигурировать параметры синхронизации rxParams
для других cfgDVBS2X
и simParams
настройки смотрите в 'Further Exploration Section' Сквозной симуляции DVB-S2 с ослаблениями RF и коррекциями о том, как сконфигурировать параметры синхронизации rxParams
для других cfgDVBS2X
и simParams
настройки. Для схем более высокой модуляции, подобных 64 APSK и выше, эта таблица показывает типичное количество систем координат, требуемых для сходимости цикла временных параметров символа.
В примере используются следующие вспомогательные функции:
HelperDVBS2XRxInputGenerate.m: Сгенерируйте DVB-S2X выборки формы волны, искаженные искажениями RF и структурой параметров для обработки приемника
HelperDVBS2PhaseNoise.m: Сгенерируйте выборки фазового шума для различных DVB-S2X шумовых масок фазы и примените его к входному сигналу
HelperDVBS2TimeFreqSynchronizer.m: Выполните согласованную фильтрацию, временную синхронизацию символов, системы координат синхронизацию и грубую оценку частоты и коррекцию
HelperDVBS2FrameSync.m: Выполните синхронизацию системы координат и обнаружите начало системы координат
HelperDVBS2FineFreqEst.m: Оценка смещения мелкой частоты
HelperDVBS2PhaseEst.m: Оценка смещения фазы несущей
HelperDVBS2PhaseCompensate.m: Выполните компенсацию фазы несущей
HelperDVBS2XPLHeaderRecover.m: Демодулируйте и декодируйте заголовок PL, чтобы восстановить параметры передачи
HelperDVBS2NoiseVarEstimate.m: Оценка отклонения полученных данных от уровня шума
HelperDVBS2XBBFrameRecover.m: Выполните декремблирование, демодуляцию, декодирование и восстановление системы координат BB из системы координат PL
HelperDVBS2XDemapper.m: Выполните мягкую демодуляцию для всех DVB-S2X модуляционных схем
HelperDVBS2XLDPCDecode.m: Выполните декодирование LDPC для всех DVB-S2X форматов систем координат LDPC и скоростей кода
HelperDVBS2XBCHDecode.m: Выполните декодирование BCH для всех DVB-S2X форматов систем координат и скоростей кода
HelperDVBS2StreamRecover.m: Выполните проверку CRC заголовка BB и восстановите входной поток из системы координат на основе параметров заголовка
HelperDVBS2XBitRecover.m: Выполните демодуляцию и декодирование заголовка PL, дескремблирование PL, демодуляцию, декодирование и восстановление системы координат BB. Выполните проверку CRC заголовка BB и восстановите входной поток из системы координат BB.
Стандарт ETSI EN 302 307-2 V1.1.1 (2015-11). Цифровое видеовещание (DVB); Структура кадрирования второй генерации, системы кодирования и модуляции каналов для вещания, интерактивных услуг, сбора новостей и других приложений широкополосного спутника; Часть 2: DVB-S2 расширения (DVB-S2X).
Стандарт ETSI TR 102 376-2 V1.2.1 (2015-11). Цифровое видеовещание (DVB); Руководство по реализации системы второй генерации для вещания, интерактивных услуг, сбора новостей и других широкополосных спутниковых приложений; Часть 2: S2 расширения (DVB-S2X).
Стандарт ETSI TR 102 376-1 V1.2.1 (2015-11). Цифровое видеовещание (DVB); Руководство по реализации системы второй генерации для вещания, интерактивных услуг, сбора новостей и других широкополосных спутниковых приложений (DVB-S2).
Менгали, Умберто и Альдо Н.Д 'Андреа. Методы синхронизации для цифровых приемников. Нью-Йорк: Пленум Press,1997.
Э. Касини, Р. Де Гауденци, и Альберто Гинези. DVB‐S2 алгоритмы модема проекта и эффективности по типичным спутниковым каналам. International Journal of Satellite Communications and Networking 22, № 3 (2004): 281-318.
Майкл Райс, цифровые коммуникации: подход в дискретном времени. Нью-Йорк: Prentice Hall, 2008.