После создания необходимых объектов, описанных в разделе Создать конфигурацию (Create Configuration) или Системные объекты (System Objects), можно использовать эти объекты для генерации требуемой формы волны. Измените параметры объекта и постройте график формы волны.
В каждом разделе этих примеров вы:
Создайте специфичный для формата объект строения или системный object™.
Создайте вектор-столбец или массив ячеек векторов-столбцов из информационных бит для генерации сигналов.
Сгенерируйте сигнал конкретного формата и постройте график.
Создайте объект строения Консультативного комитета по системам космических данных (CCSDS) Telecommand (TC) и форму волны. Использование Name,Value
пар, чтобы задать параметры передачи.
cfg = ccsdsTCConfig ('ChannelCoding', "LDPC", 'LDPCCodewordLength', 512); TFLength = 12; % Transfer frame length bits = randi([0 1],8*TFLength,1); % Bits in TC transfer frame waveform = ccsdsTCWaveform(bits,cfg);
Создайте dsp. Системный объект для отображения спектра сигналов сгенерированной волны CCSDS TC.
scope = dsp.SpectrumAnalyzer; scope.SampleRate = cfg.SamplesPerSymbol*cfg.SymbolRate; scope(waveform)
Создание Консультативного комитета по системам космических данных (CCSDS) телеметрия (TM) Системного объекта и форма волны.
Объект ccsdsTMWaveformGenerator
поддерживает эти два стандарта CCSDS TM, в зависимости от типа входов WaveformSource
свойство.
Стандарт синхронизации TM CCSDS и канального кодирования (CCSDS 131.0-B-3)
Гибкая расширенная схема кодирования и модуляции CCSDS для высокоскоростного стандарта телеметрии (CCSDS 131.2-B-1)
Стандартом по умолчанию для этого объекта является синхронизация CCSDS TM и кодирование канала.
Создайте системный объект и Сгенерируйте сигнал для синхронизации CCSDS TM и схемы канального кодирования
tmWaveGen = ccsdsTMWaveformGenerator % CCSDS TM object with defualt properties
tmWaveGen = ccsdsTMWaveformGenerator with properties: WaveformSource: "synchronization and channel coding" HasRandomizer: true HasASM: true PCMFormat: "NRZ-L" Channel coding properties: ChannelCoding: "RS" RSMessageLength: 223 RSInterleavingDepth: 1 IsRSMessageShortened: false Digital modulation and filter properties: Modulation: "QPSK" PulseShapingFilter: "root raised cosine" RolloffFactor: 0.3500 FilterSpanInSymbols: 10 SamplesPerSymbol: 10 Show all properties
bits = randi([0 1], tmWaveGen.NumInputBits,1); % Input information bits
waveform = tmWaveGen(bits);
Создайте dsp. Системный объект для отображения частотного спектра сгенерированной волны CCSDS TM во временной области.
BW = 36e6; % Typical satellite channel bandwidth Fsamp = tmWaveGen.SamplesPerSymbol*BW; scope = dsp.SpectrumAnalyzer('SampleRate',Fsamp,'AveragingMethod','Exponential'); scope(waveform)
Создайте системный объект и Сгенерируйте форму волны для гибкой схемы кодирования и модуляции CCSDS TM
В данном примере используйте запись через точку для определения параметров передачи.
tmWaveGen = ccsdsTMWaveformGenerator; tmWaveGen.WaveformSource = "flexible advanced coding and modulation"; tmWaveGen.ACMFormat = 14; % 16APSK
Вычислите количество систем координат передачи в одной системе координат физического слоя. Сгенерируйте форму волны, используя информационные биты, data
.
NumTFInOnePLFrame = tmWaveGen.MinNumTransferFrames*16 % One PL frame consists of 16 codewords, as specified in the standard
NumTFInOnePLFrame = 192
waveform = []; % Initialize waveform as null % Generate waveform for iTF = 1:NumTFInOnePLFrame bits = randi([0 1], tmWaveGen.NumInputBits, 1); waveform = [waveform;tmWaveGen(bits)]; end
Этот пример использует MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны в пути, загрузите и разархивируйте MAT-файлы, введя этот код в командной строке MATLAB.
if ~exist('s2xLDPCParityMatrices.zip','file') url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip'; websave('s2xLDPCParityMatrices.zip',url); unzip('s2xLDPCParityMatrices.zip'); addpath('s2xLDPCParityMatrices') end
Создайте цифровой видеовещательный спутник второй Генерации (DVB-S2) Системного объекта и форму волны. Использование Name,Value
пар, чтобы задать параметры передачи.
s2WaveGen = dvbs2WaveformGenerator("NumInputStreams",2,"MODCOD",[6 19],"RolloffFactor",0.25 ); disp(s2WaveGen)
dvbs2WaveformGenerator with properties: StreamFormat: "TS" NumInputStreams: 2 FECFrame: "normal" MODCOD: [6 19] DFL: 15928 ScalingMethod: "outer radius as 1" HasPilots: 0 RolloffFactor: 0.2500 FilterSpanInSymbols: 10 SamplesPerSymbol: 4 ISSYI: false Show all properties
Инициализируйте параметры симуляции.
numFramesPerStream = 1; % Number of PL frames generated per stream syncBits = [0 1 0 0 0 1 1 1]'; % Sync byte of TS packet (47 HEX) pktLen = 1496; % User packet (UP) length without sync bits is 1496 numPktsPerStream = s2WaveGen.MinNumPackets*numFramesPerStream; % Number of packets required to fill data field per stream
Сгенерируйте пакеты транспортного потока (TS) на поток.
data = cell(s2WaveGen.NumInputStreams,1); for i = 1:s2WaveGen.NumInputStreams txRawPkts = randi([0 1],pktLen,numPktsPerStream(i)); txPkts = [repmat(syncBits,1,numPktsPerStream(i)); txRawPkts]; data{i} = txPkts(:); end
Сгенерируйте DVB-S2 сигнал временной области, используя информационные биты, data
.
txWaveform = s2WaveGen(data);
Создайте dsp. Системный объект для отображения спектра сигнала сгенерированной DVB-S2 волны во временной области.
BW = 36e6; % Typical satellite channel bandwidth Fsym = BW/(1+s2WaveGen.RolloffFactor); Fsamp = Fsym*s2WaveGen.SamplesPerSymbol; spectrum = dsp.SpectrumAnalyzer('SampleRate',Fsamp); spectrum(txWaveform); release(spectrum);
Этот пример использует MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны в пути, загрузите и разархивируйте MAT-файлы, введя этот код в командной строке MATLAB.
if ~exist('s2xLDPCParityMatrices.zip', 'file') url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip'; websave('s2xLDPCParityMatrices.zip',url); unzip('s2xLDPCParityMatrices.zip'); addpath('s2xLDPCParityMatrices') end
Создайте цифровой видеовещательный спутник Второй Генерации расширенной (DVB-S2X) Системного объекта и формы волны.
s2xWaveGen = dvbs2xWaveformGenerator % DVB-S2X object with defualt properties
s2xWaveGen = dvbs2xWaveformGenerator with properties: StreamFormat: "TS" HasTimeSlicing: false NumInputStreams: 1 PLSDecimalCode: 132 DFL: 18448 PLScramblingIndex: 0 RolloffFactor: 0.3500 FilterSpanInSymbols: 10 SamplesPerSymbol: 4 Show all properties
Инициализируйте параметры симуляции.
numFrames = 3; % Number of PL frames generated per stream syncBits = [0 1 0 0 0 1 1 1]'; % Sync byte of TS packet (47 HEX) pktLen = 1496; % User packet (UP) length without sync bits is 1496 numPkts = s2xWaveGen.MinNumPackets*numFrames; % Number of packets required to fill data field per stream
Сгенерируйте пакеты транспортного потока (TS) на поток.
txRawPkts = randi([0 1], pktLen, numPkts); txPkts = [repmat(syncBits, 1, numPkts);txRawPkts]; data = txPkts(:);
Сгенерируйте DVB-S2X сигнал временной области, используя информационные биты, data
.
txWaveform = s2xWaveGen(data);
[1] Синхронизация TM и кодирование канала. Рекомендация по стандартам системы космических данных. CCSDS 131.0-B-3. Синяя книга. Выпуск 3. Вашингтон, округ Колумбия: CCSDS, сентябрь 2017 года.
[2] Гибкая расширенная схема кодирования и модуляции для высокоскоростных приложений телеметрии. Рекомендация по стандартам системы космических данных. CCSDS 131.2-B-1. Синяя книга. Выпуск 1. Вашингтон, округ Колумбия: CCSDS, март 2012 года.
ccsdsTCConfig
| ccsdsTCWaveform
| ccsdsTMWaveformGenerator
| dvbs2WaveformGenerator
| dvbs2xWaveformGenerator