파형 생성하기
구성 객체 또는 System object 만들기에서 설명하는 필요한 객체를 만든 후 해당 객체를 사용하여 원하는 파형을 생성할 수 있습니다. 객체 파라미터를 변경하고 파형을 플로팅합니다.
이 예제의 각 섹션에서는 다음을 수행합니다.
형식별 구성 객체나 System object™를 만듭니다.
파형 생성을 위해 정보 비트로 구성된 열 벡터 또는 그러한 열 벡터의 셀형 배열을 만듭니다.
형식별 파형을 생성하고 플로팅합니다.
DVB-S2 파형 생성하기
이 예제에서는 LDPC 패리티 행렬이 포함된 MAT 파일을 사용합니다. 경로에 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
DVB-S2(Digital Video Broadcasting Satellite Second Generation) System object와 파형을 만듭니다. 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
정보 비트 data
를 사용하여 DVB-S2 시간 영역 파형을 생성합니다.
txWaveform = s2WaveGen(data);
생성된 DVB-S2 시간 영역 파형의 신호 스펙트럼을 표시하는 스펙트럼 분석기 System object를 만듭니다.
BW = 36e6; % Typical satellite channel bandwidth Fsym = BW/(1+s2WaveGen.RolloffFactor); Fsamp = Fsym*s2WaveGen.SamplesPerSymbol; spectrum = spectrumAnalyzer('SampleRate',Fsamp); spectrum(txWaveform); release(spectrum);
DVB-S2X 파형 생성하기
이 예제에서는 LDPC 패리티 행렬이 포함된 MAT 파일을 사용합니다. 경로에 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
DVB-S2X(Digital Video Broadcasting Satellite Second Generation extended) System object와 파형을 만듭니다.
s2xWaveGen = dvbs2xWaveformGenerator % DVB-S2X object with default 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(:);
정보 비트 data
를 사용하여 DVB-S2X 시간 영역 파형을 생성합니다.
txWaveform = s2xWaveGen(data);
DVB-RCS2 파형 생성하기
DVB-RCS2(Digital Video Broadcasting Second Generation Return Channel over Satellite) System object와 파형을 만듭니다. Name,Value
쌍을 사용하여 송신 파라미터를 지정합니다.
wg = dvbrcs2WaveformGenerator("WaveformID",2,"PreBurstGuardLength",6,"SamplesPerSymbol",6); disp(wg)
dvbrcs2WaveformGenerator with properties: TransmissionFormat: "TC-LM" ContentType: "traffic" IsCustomWaveform: false WaveformID: 2 PreBurstGuardLength: 6 PostBurstGuardLength: 0 FilterSpanInSymbols: 10 SamplesPerSymbol: 6 Read-only: FramePDULength: 80
프레임 프로토콜 데이터 단위(PDU)를 생성합니다.
framePDU = randi([0 1],wg.FramePDULength,1);
DVB-RCS2 버스트 샘플을 생성합니다.
txWaveform = wg(framePDU);
CCSDS HPE TM 파형 생성하기
길이가 각각 1024바이트인 10개의 전송 프레임에 대한 CCSDS HPE TM 파형을 생성합니다.
rng("default")
numTF = 10;
numBytesInTF = 1024;
dataTF = randi([0 1],numBytesInTF*8*numTF,1);
CCSDS HPE 파형 생성기 System object를 만들고 속성을 설정합니다.
hpeWaveform = ccsdsHPEWaveformGenerator;
hpeWaveform.TransmissionType = "telemetry";
hpeWaveform.PPMOrder = 4;
hpeWaveform.NumRows = 36;
hpeWaveform.NumBytesInTransferFrame = numBytesInTF;
TM 파형을 생성합니다.
txOut = hpeWaveform(dataTF);
CCSDS TM 파형 생성하기
CCSDS(Consultative Committee for Space Data Systems) TM(Telemetry) System object와 파형을 만듭니다.
객체 ccsdsTMWaveformGenerator
는 WaveformSource
속성에 대한 입력 유형에 따라 다음 두 가지 CCSDS TM 표준을 지원합니다.
CCSDS TM synchronization and channel coding standard (CCSDS 131.0-B-3)
CCSDS flexible advanced coding and modulation scheme for high rate telemetry standard (CCSDS 131.2-B-1)
이 객체의 디폴트 표준은 CCSDS TM 동기화 및 채널 코딩입니다.
System object를 만들고 CCSDS TM 동기화 및 채널 코딩 방식에 대한 파형 생성하기
tmWaveGen = ccsdsTMWaveformGenerator % CCSDS TM object with default properties
tmWaveGen = ccsdsTMWaveformGenerator with properties: WaveformSource: "synchronization and channel coding" HasRandomizer: true HasASM: true PCMFormat: "NRZ-L" Channel coding ChannelCoding: "RS" RSMessageLength: 223 RSInterleavingDepth: 1 IsRSMessageShortened: false Digital modulation and filter 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);
생성된 CCSDS TM 시간 영역 파형의 주파수 스펙트럼을 표시하는 스펙트럼 분석기 System object를 만듭니다.
BW = 36e6; % Typical satellite channel bandwidth Fsamp = tmWaveGen.SamplesPerSymbol*BW; scope = spectrumAnalyzer('SampleRate',Fsamp,'AveragingMethod','Exponential'); scope(waveform)
System object를 만들고 CCSDS TM Flexible Advanced Coding and Modulation Scheme을 따르는 파형 생성하기
이 예제에서는 점 표기법을 사용하여 송신 파라미터를 지정합니다.
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
CCSDS TC 파형 생성하기
CCSDS(Consultative Committee for Space Data Systems) TC(Telecommand) 구성 객체와 파형을 만듭니다. 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);
생성된 CCSDS TC 파형의 신호 스펙트럼을 표시하는 스펙트럼 분석기 System object를 만듭니다.
scope = spectrumAnalyzer; scope.SampleRate = cfg.SamplesPerSymbol*cfg.SymbolRate; scope(waveform)
참고 문헌
[1] TM Synchronization and Channel Coding. Recommendation for Space Data System Standards. CCSDS 131.0-B-3. Blue Book. Issue 3. Washington, D.C.: CCSDS, September 2017.
[2] Flexible Advanced Coding and Modulation Scheme for High Rate Telemetry Applications. Recommendation for Space Data System Standards. CCSDS 131.2-B-1. Blue Book. Issue 1. Washington, D.C.: CCSDS, March 2012.
참고 항목
객체
dvbs2WaveformGenerator
|dvbs2xWaveformGenerator
|dvbrcs2WaveformGenerator
|ccsdsHPEWaveformGenerator
|ccsdsTMWaveformGenerator
|ccsdsTCConfig