Восстановите биты для DVB-S2 PL систем координат
[
восстанавливает пользовательские пакеты (UP) или непрерывный поток данных, BITS
,NUMFRAMESLOST
] = dvbs2BitRecover(RXFRAME
,NVAR
)BITS
, и количество потерянных кадров основной полосы систем координат, NUMFRAMESLOST
. Входные RXFRAME
- принятые комплексные синфазные квадратурные (IQ) символы в виде систем координат физического слоя (PL) передачи второй генерации цифрового видеовещания (DVB-S2). Входные NVAR
- оценка отклонения шума, используемая для вычисления мягких бит.
[
также возвращает состояние проверки циклической избыточности UP (CRC).BITS
,NUMFRAMESLOST
,PKTCRCSTATUS
] = dvbs2BitRecover(RXFRAME
,NVAR
)
Восстановите пользовательские пакеты (UP) для нескольких систем координат физического слоя (PL) в одном транспортном потоке передачи цифрового видеовещания спутника второй генерации (DVB-S2).
Этот пример использует MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны в пути, загрузите и разархивируйте MAT-файлы, введя этот код в командной строке MATLAB.
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
Задайте количество систем координат PL на поток. Создайте объект DVB-S2 System.
nFrames = 2; s2WaveGen = dvbs2WaveformGenerator;
Создайте битовый вектор информационных бит, data
, конкатенированных TS UPs.
syncBits = [0 1 0 0 0 1 1 1]'; % Sync byte for TS packet is 47 Hex pktLen = 1496; % UP length without sync bits is 1496 numPkts = s2WaveGen.MinNumPackets*nFrames; txRawPkts = randi([0 1],pktLen,numPkts); txPkts = [repmat(syncBits,1,numPkts); txRawPkts]; data = txPkts(:);
Сгенерируйте DVB-S2 сигнал временной области, используя входные информационные биты. Промойте фильтр передачи, чтобы обработать задержку фильтра и восстановить полную последнюю систему координат.
txWaveform = [s2WaveGen(data); flushFilter(s2WaveGen)];
Добавьте аддитивный белый Гауссов шум (AWGN) к сгенерированной форме волны.
sps = s2WaveGen.SamplesPerSymbol;
EsNodB = 1;
snrdB = EsNodB - 10*log10(sps);
rxIn = awgn(txWaveform,snrdB,'measured');
Создайте фильтр приподнятого приемника косинуса.
rxFilter = comm.RaisedCosineReceiveFilter( ... 'RolloffFactor',s2WaveGen.RolloffFactor, ... 'InputSamplesPerSymbol',sps,... 'DecimationFactor',sps); s = coeffs(rxFilter); rxFilter.Gain = sum(s.Numerator);
Примените согласованную фильтрацию и удалите задержку фильтра.
filtOut = rxFilter(rxIn); rxFrame = filtOut(rxFilter.FilterSpanInSymbols+1:end);
Восстановление UP. Отображение количества потерянных систем координат и состояния проверки циклической избыточности UP (CRC).
[bits,FramesLost,pktCRCStat] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10)); disp(FramesLost)
0
disp(pktCRCStat)
{20×1 logical}
Восстановление пользовательских бит в передаче цифрового видеотрансляционного спутника второй генерации (DVB-S2) с мультивходами общего потока (GS) со схемой переменной модуляции и кодирования.
Этот пример использует MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны в пути, загрузите и разархивируйте MAT-файлы, введя этот код в командной строке MATLAB.
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
Задайте количество систем координат физического слоя (PL) на поток.
nFrames = 1;
Создайте DVB-S2 Системного объекта с переменными строениями кодирования и модуляции для мультивхода GS. Задайте схему модуляции и скорость прямой коррекции ошибок (FEC) (MODCOD) и длину поля данных (DFL).
s2WaveGen = dvbs2WaveformGenerator; s2WaveGen.StreamFormat = "GS"; s2WaveGen.NumInputStreams = 3; s2WaveGen.MODCOD = [10 15 6]; % QPSK 8/9, 8PSK 5/6, and QPSK 2/3 s2WaveGen.DFL = [44500 51387 42960];
Создайте вектор информации входа бит для каждого потока входа.
data = cell(s2WaveGen.NumInputStreams,1); for i = 1:s2WaveGen.NumInputStreams data{i} = randi([0 1],s2WaveGen.DFL(i)*nFrames,1); end
Сгенерируйте DVB-S2 сигнал временной области с входными информационными битами. Промойте передающий фильтр, чтобы обработать задержку фильтра и восстановить полную систему координат.
txWaveform = [s2WaveGen(data); flushFilter(s2WaveGen)];
Добавьте аддитивный белый Гауссов шум (AWGN) к сгенерированной форме волны. Задайте выборки для каждого символа для фильтра основной полосы частот.
sps = s2WaveGen.SamplesPerSymbol;
EsNodB = 10;
snrdB = EsNodB - 10*log10(sps);
rxIn = awgn(txWaveform,snrdB,'measured');
Создайте фильтр приподнятого приемника косинуса.
rxFilter = comm.RaisedCosineReceiveFilter( ... 'RolloffFactor',s2WaveGen.RolloffFactor, ... 'InputSamplesPerSymbol',sps,... 'DecimationFactor',sps); s = coeffs(rxFilter); rxFilter.Gain = sum(s.Numerator);
Примените согласованную фильтрацию и удалите задержку фильтра.
filtOut = rxFilter(rxIn); rxFrame = filtOut(rxFilter.FilterSpanInSymbols+1:end);
Восстановление пользовательских бит. Включите раннее завершение декодера с кодами четности низкой плотности (LDPC).
[bits,FramesLost] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10),1);
Отображение количества потерянных систем координат и количества битовых ошибок в каждом потоке.
fprintf('Number of frames lost = %d\n',FramesLost)
Number of frames lost = 0
for i = 1:s2WaveGen.NumInputStreams fprintf('Number of bit errors in stream %d = %d\n',i, ... sum(data{i}~=bits{i})) end
Number of bit errors in stream 1 = 0 Number of bit errors in stream 2 = 0 Number of bit errors in stream 3 = 0
Восстановление пользовательских пакетов (UPs) в передаче цифрового видеотрансляционного спутника второй генерации (DVB-S2) с мультивходами транспортного потока (TS) с постоянным кодированием и модуляцией.
Этот пример использует MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны в пути, загрузите и разархивируйте MAT-файлы, введя этот код в командной строке MATLAB.
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
Задайте количество систем координат физического слоя (PL) на поток.
numFrames = 1;
Создайте DVB-S2 Системного объекта с постоянными строениями кодирования и модуляции для мультивхода TS. Задайте короткий формат системы координат для коррекции ошибок (FEC) и включите синхронизацию входного потока (ISSY).
s2WaveGen = dvbs2WaveformGenerator; s2WaveGen.NumInputStreams = 3; s2WaveGen.FECFrame = "short"; s2WaveGen.MODCOD = 10; % QPSK 8/9 s2WaveGen.DFL = 13920; s2WaveGen.ISSYI = true;
Создайте битовый вектор информационных бит конкатенированных TS UPs.
syncBits = [0 1 0 0 0 1 1 1]'; % Sync byte for TS packet is 47 Hex pktLen = 1496; % UP length without sync bits is 1496 data = cell(1,s2WaveGen.NumInputStreams); for i = 1:s2WaveGen.NumInputStreams numPkts = s2WaveGen.MinNumPackets(i)*numFrames; txRawPkts = randi([0 1],pktLen,numPkts); ISSY = randi([0 1],16,numPkts); % ISCRFormat is 'short' by default % 'short' implies the default length of ISSY as 2 bytes txPkts = [repmat(syncBits,1,numPkts); txRawPkts; ISSY]; % ISSY is appended at the end of UP data{i} = txPkts(:); end
Сгенерируйте DVB-S2 сигнал временной области, используя входные информационные биты. Промойте передающий фильтр, чтобы обработать задержку фильтра и восстановить полную систему координат.
txWaveform = [s2WaveGen(data); flushFilter(s2WaveGen)];
Добавьте аддитивный белый Гауссов шум (AWGN) к сгенерированной форме волны. Задайте выборки для каждого символа для фильтра основной полосы частот.
sps = s2WaveGen.SamplesPerSymbol;
EsNodB = 12;
snrdB = EsNodB - 10*log10(sps);
rxIn = awgn (txWaveform,snrdB,'measured');
Создайте фильтр приподнятого приемника косинуса.
rxFilter = comm.RaisedCosineReceiveFilter( ... 'RolloffFactor',s2WaveGen.RolloffFactor, ... 'InputSamplesPerSymbol',sps,... 'DecimationFactor', sps); s = coeffs(rxFilter); rxFilter.Gain = sum(s.Numerator);
Примените согласованную фильтрацию и удалите задержку фильтра.
filtOut = rxFilter(rxIn); rxFrame = filtOut(rxFilter.FilterSpanInSymbols+1:end);
Восстановление UP. Отображение количества потерянных систем координат и количества битовых ошибок в каждом потоке.
[bits,FramesLost,pktCRCStat] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10));
fprintf('Number of frames lost = %d\n',FramesLost)
Number of frames lost = 0
for i = 1:s2WaveGen.NumInputStreams fprintf('Number of bit errors in stream %d = %d\n',i, ... numel(pktCRCStat{i})-sum(pktCRCStat{i})) end
Number of bit errors in stream 1 = 0 Number of bit errors in stream 2 = 0 Number of bit errors in stream 3 = 0
RXFRAME
- Получены символы IQ от Систем Координат DVB-S2 передачиПолучены символы IQ от PL- систем координат DVB-S2 передачи с одним входом или мультивходы, заданные как вектор-столбец. RXFRAME
может содержать одну или несколько систем координат PL.
Длина RXFRAME
зависит от значения свойств FECFrame
, MODCOD
, и HasPilots
от dvbs2WaveformGenerator
Системные object™.
Типы данных: double
Поддержка комплексного числа: Да
NVAR
- Оценка отклонения шумаШумовое отклонение оценивает, что функция складывается из входа символов IQ, заданных как неотрицательная скаляра. NVAR
используется как масштабный коэффициент для вычисления мягких бит из символов IQ.
Когда вы задаете NVAR
как 0
функция использует значение 1e-5, которое соответствует отношению сигнал/шум (ОСШ) 50 дБ.
Типы данных: double
EARLYTERM
- Флаг для раннего завершения декодера LDPC0
или false
(по умолчанию) | 1
или true
Флаг для раннего завершения декодера LDPC, когда все проверки четности удовлетворены, заданный как набор логических 1
(true
) или 0
(false
). Когда установлено значение 1
(true
), декодер LDPC завершается, когда все проверки четности удовлетворены.
Когда вы задаете это значение 0
(false
), максимальный предел итерации декодирования равен 50.
Типы данных: logical
BITS
- Восстановленные биты данныхВосстановленные биты данных, возвращенные как массив ячеек векторов-столбцов. Каждый элемент массива ячеек имеет тип данных int8
. Этот выход может быть либо UPs, либо общим потоком данных, в зависимости от StreamFormat
свойство dvbs2WaveformGenerator
Системный объект.
Для передачи мультивхода потока каждый элемент массива ячеек соответствует индивидууму входному потоку.
Типы данных: cell
NUMFRAMESLOST
- Количество потерянных систем координат основной полосы частотКоличество потерянных систем координат основной полосы, возвращенных как неотрицательное целое число. Если CRC заголовка основной полосы не работает, система координат считается утерянным.
Типы данных: double
PKTCRCSTATUS
- Состояние CRC UPСтатус UP CRC, возвращенный как массив ячеек векторов-столбцов. Каждый элемент массива ячеек имеет тип данных logical
. Для передачи мультивхода потока каждый элемент массива ячеек соответствует индивидууму входному потоку.
PKTCRCSTATUS
применяется только для потоков входа, где значение UPL
свойство dvbs2WaveformGenerator
Системный объект ненулевой.
Типы данных: cell
[1] Стандарт ETSI EN 302 307-1 V1.4.1 (2014-11). Цифровое видеовещание (DVB); Структура кадрирования второй генерации, системы кодирования и модуляции канала для вещания, интерактивные услуги, сбор новостей и другие широкополосные спутниковые приложения (DVB-S2).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.