Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

올림 코사인 필터를 사용한 펄스 성형

한 쌍의 제곱근 올림 코사인 정합 필터를 사용하여 16-QAM 신호를 필터링합니다. 신호의 Eye 다이어그램과 산점도 플롯을 플로팅합니다. 신호를 AWGN 채널에 통과시킨 후 비트 오류 수를 계산합니다.

시뮬레이션 파라미터를 설정합니다.

M = 16;         % Modulation order
bps = log2(M);  % Bits/symbol
n = 20000;      % Transmitted bits
sps = 4;        % Samples per symbol
EbNo = 10;      % Eb/No (dB)

필터 파라미터를 설정합니다.

span = 10;      % Filter span in symbols
rolloff = 0.25; % Rolloff factor

앞에서 정의한 파라미터를 사용하여 올림 코사인 송신 및 수신 필터를 생성합니다.

txfilter = comm.RaisedCosineTransmitFilter( ...
    RolloffFactor=rolloff, ...
    FilterSpanInSymbols=span, ...
    OutputSamplesPerSymbol=sps);

rxfilter = comm.RaisedCosineReceiveFilter( ...
    RolloffFactor=rolloff, ...
    FilterSpanInSymbols=span, ...
    InputSamplesPerSymbol=sps, ...
    DecimationFactor=sps);

올림 코사인 송신 필터 객체 txFilter의 임펄스 응답을 플로팅합니다.

fvtool(txfilter,Analysis="impulse")

Figure Figure 1: Impulse Response contains an axes object. The axes object with title Impulse Response, xlabel Samples, ylabel Amplitude contains an object of type stem.

정합 필터를 통과하는 지연을 계산합니다. 군지연은 한 필터를 통과하는 필터 범위의 절반이므로 두 필터의 필터 범위와 동일합니다. 심볼당 비트 수를 곱하여 지연(단위: 비트)을 구합니다.

filtDelay = bps*span;

오류율 카운터 System object™를 생성합니다. 정합 필터를 통과하는 지연을 설명하기 위해 ReceiveDelay 속성을 설정합니다.

errorRate = comm.ErrorRate(ReceiveDelay=filtDelay);

이진 데이터를 생성합니다.

x = randi([0 1],n,1);

데이터를 변조합니다.

modSig = qammod(x,M,InputType="bit");

변조된 신호를 필터링합니다.

txSig = txfilter(modSig);

처음 1,000개 샘플의 Eye 다이어그램을 플로팅합니다.

eyediagram(txSig(1:1000),sps)

Figure Eye Diagram contains 2 axes objects. Axes object 1 with title Eye Diagram for In-Phase Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents In-phase. Axes object 2 with title Eye Diagram for Quadrature Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents Quadrature.

주어진 EbNo에 대해 신호 대 잡음비(SNR)(단위: dB)를 계산합니다. awgn 함수를 사용하여 송신된 신호를 AWGN 채널에 통과시킵니다.

SNR = EbNo + 10*log10(bps) - 10*log10(sps);
noisySig = awgn(txSig,SNR,"measured");

잡음이 있는 신호를 필터링하고 산점도 플롯을 표시합니다.

rxSig = rxfilter(noisySig);
scatterplot(rxSig)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

필터링된 신호를 복조하고 오류 통계량을 계산합니다. 필터를 통과하는 지연은 errorRateReceiveDelay 속성에 의해 설명됩니다.

z = qamdemod(rxSig,M,OutputType="bit");

errStat = errorRate(x,z);
fprintf('\nBER = %5.2e\nBit Errors = %d\nBits Transmitted = %d\n',...
    errStat)
BER = 1.15e-03
Bit Errors = 23
Bits Transmitted = 19960