Main Content

シンボル タイミングおよびドップラー オフセットの補正

comm.SymbolSynchronizer および comm.CarrierSynchronizer System object を使用して、シンボル タイミングおよび周波数オフセットの誤りを補正します。

構成

シミュレーション パラメーターを初期化します。

M = 16;       % Modulation order
nSym = 2000;  % Number of symbols in a packet
sps = 2;      % Samples per symbol
spsFilt = 8;  % Samples per symbol for filters and channel
spsSync = 2;  % Samples per symbol for synchronizers
lenFilt = 10; % RRC filter length

送信機と受信機に対してルート レイズド コサイン (RRC) フィルター System object の対応するペアを作成します。

txfilter = comm.RaisedCosineTransmitFilter( ...
    FilterSpanInSymbols=lenFilt, ...
    OutputSamplesPerSymbol=spsFilt, ...
    Gain=sqrt(spsFilt));
rxfilter = comm.RaisedCosineReceiveFilter( ...
    FilterSpanInSymbols=lenFilt, ...
    InputSamplesPerSymbol=spsFilt, ...
    DecimationFactor=spsFilt/2, ...
    Gain=sqrt(1/spsFilt));

位相周波数オフセット System object を作成し、100 Hz のドップラー シフトを導入します。

doppler = comm.PhaseFrequencyOffset( ...
    FrequencyOffset=100, ...
    PhaseOffset=45, ...
    SampleRate=1e6);

可変遅延 System object を作成し、タイミング オフセットを導入します。

varDelay = dsp.VariableFractionalDelay;

キャリア同期装置 System object とシンボル同期装置 System object を作成し、ドップラー シフトとタイミング オフセットをそれぞれ補正します。

carrierSync = comm.CarrierSynchronizer( ...
    SamplesPerSymbol=spsSync);
symbolSync = comm.SymbolSynchronizer( ...
    TimingErrorDetector='Early-Late (non-data-aided)', ...
    SamplesPerSymbol=spsSync);

コンスタレーション ダイアグラム System object を作成し、結果を表示します。

refConst = qammod(0:M-1,M,UnitAveragePower=true);
cdReceive = comm.ConstellationDiagram( ...
    ReferenceConstellation=refConst, ...
    SamplesPerSymbol=spsFilt,Title='Received Signal');
cdDoppler = comm.ConstellationDiagram( ...
    ReferenceConstellation=refConst, ...
    SamplesPerSymbol=spsSync, ...
    Title='Frequency Corrected Signal');
cdTiming = comm.ConstellationDiagram( ...
    ReferenceConstellation=refConst, ...
    SamplesPerSymbol=spsSync, ...
    Title='Frequency and Timing Synchronized Signal');

主処理ループ

主処理ループでは以下を行います。

  • ランダムなシンボルを生成し、QAM 変調を適用します。

  • 変調した信号をフィルター処理します。

  • 周波数とタイミングのオフセットを適用します。

  • AWGN チャネルを通して、送信された信号を渡します。

  • 受信した信号をフィルター処理します。

  • ドップラー シフトを補正します。

  • タイミング オフセットを補正します。

for k = 1:15
    data = randi([0 M-1],nSym,1);
    modSig = qammod(data,M,UnitAveragePower=true);         
    txSig = txfilter(modSig);            
    
    txDoppler = doppler(txSig);          
    txDelay = varDelay(txDoppler,k/15);  
    
    rxSig = awgn(txDelay,25);            
    
    rxFiltSig = rxfilter(rxSig);         
    rxCorr = carrierSync(rxFiltSig); 
    rxData = symbolSync(rxCorr);  
end

可視化

受信した信号、周波数を補正した信号および周波数とタイミングを同期した信号のコンスタレーション ダイアグラムをプロットします。特定のコンスタレーション点は、受信した信号内では識別できず、周波数を補正した信号内で一部のみを識別できます。ただし、タイミングと周波数を同期した信号は予想された QAM コンスタレーション点と一致します。

cdReceive(rxSig)

cdDoppler(rxCorr)

cdTiming(rxData)

参考

|