주요 콘텐츠

파형 생성하기

구성 객체 또는 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와 파형을 만듭니다.

객체 ccsdsTMWaveformGeneratorWaveformSource 속성에 대한 입력 유형에 따라 다음 두 가지 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.

참고 항목

객체

함수

도움말 항목