目次
1. アルゴリズムシミュレーション効果
matlab2022a のシミュレーション結果は次のとおりです。
ロック プロセス中にコンスタレーション ダイアグラムが変更されます。
タイミング収束曲線:
キャリア同期収束曲線:
2. アルゴリズムに関連する理論的知識の要約
16QAM (直交振幅変調) 変調に基づくオーディオ信号同期受信機は、複雑ですが効率的な通信システムです。このシステムには主に、ガードナー シンボル同期、キャリア同期、CMA (定モジュラス アルゴリズム) イコライゼーションという 3 つの重要な部分が含まれます。
1. ガードナーシンボルの同期
ガードナー シンボル同期は、データ シンボル レベルで機能するデジタル通信システムの位相と周波数の同期のためのアルゴリズムです。このアルゴリズムは、特別なフィルター (Gardner フィルターまたは Dragone フィルター) を通じて受信信号の位相と周波数を推定し、追跡します。このフィルターは、受信信号と理想信号の差を最小限に抑えようとするため、正確な位相と周波数の推定値が得られます。
Gardner タイミング エラー アルゴリズムは通常、BPSK および QPSK 信号で使用され、改良により QAM などの多値ベースバンド信号に適用できます。Gardner タイミング エラー アルゴリズム。このアルゴリズムの特徴は、各シンボルが 2 つのサンプリング ポイントのみを使用する必要があることです。1 つは最良の観測点であるストローブ ポイントであり、もう 1 つは中間のサンプリング ポイントであるミッドローブ ポイントです。観察ポイントは2つ。ガーデナーリングの数値制御発振器の機能は、フェーズロックループの NCO の機能とは全く異なり、ここでの NCO の機能はクロックの生成、つまり補間基点 mk の決定であり、同時に小数区間 uk の計算を完了して、補間のために補間器に提供します。
ビット同期ループの数値制御発振器 (NCO) は位相減速器であり、その差分方程式は次のとおりです。
η(m+1)=[η(m)-ω(m)]mod1
式中、η(m) は m 番目の動作クロック NCO レジスタの内容、ω(m) は NCO の制御ワードで、どちらも正の 10 進数です。NCO の動作周期は T s (サンプリング周期)、補間器の周期は Ti、ω (m) はループ フィルタによって調整され、NCO が最適なサンプリングの瞬間にオーバーフローするようになります。
2. キャリア同期
キャリア同期は、受信信号から位相と周波数の情報を抽出するために使用される部分です。これは主に、受信信号で発生する可能性のある搬送波偏差を除去するために使用されます。このずれは、送信装置と受信装置の周波数の非同期、またはマルチパスの影響によって発生する可能性があります。Costas ループは、抑圧された搬送波変調信号 (両側波帯抑圧搬送波変調など) および位相変調信号 (BPSK、QPSK) のコヒーレント復調における搬送波周波数回復に使用されます。Costas リングの主な用途は、無線通信受信機です。PLL ベースの検出器と比較した場合、その利点は、位相差が比較的小さい場合、Costas ループによって出力される誤差電圧が sin(2(θi −θf)) であるのに対し、PLL ベースの検出器によって出力される誤差電圧は 2 であることです。は sin(θi−θf) であり、これにより感度が 2 倍になるだけでなく、特に OFDM および GPS 受信機において、コスタス ループが搬送波のドップラー シフトの追跡に特に適したものになります。
3. CMAイコライゼーション
CMA (Constant Modulus Algorithm) イコライゼーションは、デジタル通信システムで一般的に使用されるブラインド信号処理テクノロジです。これは主に、マルチパス干渉とチャネル歪みを除去するために使用されます。CMA イコライザーは、重みを調整することで出力信号のモジュラス偏差を最小限に抑えます。これは、受信信号を理想的な信号形状に近いものに調整しようとすることを意味します。
16QAM 変調に基づくオーディオ信号同期受信機は、上記の 3 つの部分を組み合わせて、受信信号を処理することで同期復調と等化を実現し、それによって元の信号を復元します。
3.MATLABコアプログラム
........................................................................
%gardner算法开始
%gardner算法开始
len=length(out);
K=4; %每 个符号采4个样点
Ns=len; %总的采样点数
N=floor(Ns/K);%符号数
i=4; %用来表示Ts的时间序号,指示n,n_temp,nco,
k=1; %用来表示Ti时间序号,指示u,yI,yQ
ms=1; %用来指示T的时间序号,用来指示a,b以及w
strobe=zeros(1,Ns);
c1=0.0267;
c2=0.00035556; %环路滤波器系数
%%%%% 仿真输入测试的PSK基带数据 %%%
aI=real(out);
aQ=imag(out);
ik=[];
qk=[];
ns=length(aI)-2;
length(aI);
tic;
while(i<ns)
n_temp(i+1)=n(i)-w(ms);
if(n_temp(i+1)>0)
n(i+1)=n_temp(i+1);
else
n(i+1)=mod(n_temp(i+1),1);
%内插滤波器模块
FI1=0.5*aI(i+2-2)-0.5*aI(i+1-2)-0.5*aI(i-2)+0.5*aI(i-1-2);
FI2=1.5*aI(i+1-2)-0.5*aI(i+2-2)-0.5*aI(i-2)-0.5*aI(i-1-2);
FI3=aI(i-2);
.....................................................................
end
k=k+1;
u(k)=n(i)/w(ms);
end
i=i+1;
end
toc;
figure;
t=0:length(u)-1;
T=1/2400;
subplot(311);
plot(t*T,u);
xlabel('运算点数');
ylabel('分数间隔');
t=0:length(time_error)-1;
T=1/2400;
subplot(312);
plot(t*T,time_error);
xlabel('运算点数');
ylabel('定时误差');
t=0:length(w)-1;
T=1/2400;
subplot(313);
t=0:length(ik)-1;
T=1/1200;
plot(t*T,ik);title('最终的基带数据I');
len=length(ik);
symbolall=ik-1i*qk;
sym=zeros(1,len);
ik=[0,ik];
basebandSignal=symbolall';
%%
%载波同步
tic;
T=1/FS;
Yo = [];
%给锁相环一个初始相位
Phase0 = pi/4;
for frame=1:nf
x = basebandSignal(frame)*exp(sqrt(-1)*(phase*frame*T+Phase0)); %phase是反馈的调整变量,用来调整输入信号的载波频率来调整跟踪频率
%将数据转换到基带
......................................................................
Yo(frame)= dfrq;
end
%均衡器
OUT4 = CMA(OUT3);
OUT4 = OUT4;
toc;
LENS = 1000;%simulink设置的是1000.这里也1000.
axis([-0.5,0.5,-0.5,0.5]);
subplot(133);
plot(real(OUT4(LENS*(i-1)+1:LENS*i)),imag(OUT4(LENS*(i-1)+1:LENS*i)),'r.');title('CMA均衡基带数据星座图');
axis([-0.5,0.5,-0.5,0.5]);
pause(0.1);
end
y=OUT4;
T=1/2400;
Tx_real=y;
Tx_real=Tx_real';
t=t(1:length(Tx_real))*T;
data=[t' Tx_real];
ts2= timeseries;
ts2.Time=t';
ts2.Data=Tx_real;
save('data2.mat','-v7.3','ts2');
0X_027m
4. 完全なアルゴリズム コード ファイル
V