このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
周波数オフセット補正のためのキャリア同期装置の減衰係数の調整
キャリア同期装置オブジェクトを使用して、周波数オフセットの補正を試行します。同期装置の減衰係数を増やして、オフセットが補正されたかどうかを判断します。
変調次数、サンプル レート、周波数オフセットおよび S/N 比の各パラメーターを設定します。
M = 8; fs = 1e6; foffset = 1000; snrdb = 20;
変調信号に周波数オフセットを導入する位相周波数オフセット オブジェクトを作成します。constellation diagram オブジェクトを作成します。
pfo = comm.PhaseFrequencyOffset('SampleRate',fs, ... 'FrequencyOffset',foffset); constDiagram = comm.ConstellationDiagram( ... 'ReferenceConstellation',pskmod(0:M-1,M,pi/M));
周波数オフセットを補正するキャリア同期装置オブジェクトを作成します。
carriersync = comm.CarrierSynchronizer('Modulation','8PSK', ... 'DampingFactor',0.05,'NormalizedLoopBandwidth',0.01);
主処理ループには以下のステップが含まれます。
ランダム データを生成します。
8-PSK 変調を適用します。
周波数オフセットを導入します。
AWGN チャネルを通して信号を渡します。
周波数オフセットを補正します。
コンスタレーション ダイアグラムを表示します。
for k = 1:200 data = randi([0 M-1],1000,1); modSig = pskmod(data,M); txSig = pfo(modSig); rxSig = awgn(txSig,snrdb); syncOut = carriersync(rxSig); constDiagram(syncOut) end
コンスタレーション点が明確に判別できないことから、キャリア同期装置が周波数オフセットを補正できないことが分かります。
関数 info
を使用して、正規化されたプルイン レンジ、最大周波数同期遅延および最大位相同期遅延を求めます。
syncInfo = info(carriersync)
syncInfo = struct with fields:
NormalizedPullInRange: 0.0044
MaxFrequencyLockDelay: 78.9568
MaxPhaseLockDelay: 130
正規化されたプルイン レンジをラジアンからサイクルに変換します。正規化周波数オフセットをプルイン レンジと比較します。
[foffset/fs syncInfo.NormalizedPullInRange/(2*pi)]
ans = 1×2
10-3 ×
1.0000 0.7071
オフセットがプルイン レンジより大きくなっています。これが、キャリア同期装置が周波数オフセットの補正に失敗した理由です。
同期装置の減衰係数を 0.707
に変更します。
carriersync.DampingFactor = 0.707;
主処理ループを繰り返します。
for k = 1:200 data = randi([0 M-1],1000,1); modSig = pskmod(data,M); txSig = pfo(modSig); rxSig = awgn(txSig,snrdb); syncOut = carriersync(rxSig); constDiagram(syncOut) end
今度は観測可能な 8 つのクラスターがあり、周波数オフセットが補正されたことを示しています。
新しいプルイン レンジを特定します。正規化オフセットはプルイン レンジより小さくなります。これが、キャリア同期装置がオフセットを補正できた理由です。
syncInfo = info(carriersync); [foffset/fs syncInfo.NormalizedPullInRange/(2*pi)]
ans = 1×2
0.0010 0.0100