1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJuZm59r
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
基于OFDM+QPSK和LDPC编码的通信链路是一种常用的数字通信系统,用于实现高速、可靠的数据传输。该系统结合了正交频分复用(OFDM)、四相移键控(QPSK)调制和低密度奇偶校验(LDPC)编码与解码技术。此外,系统中还包括Costas环载波同步和Gardner环定时同步模块,用于实现信号的载波频率和定时偏移的同步。
4.部分源码
............................................................................
%%
rece = fft(rece);
%载波同步环
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%锁相环处理过程如下
Discriminator_Out = zeros(carlen * nsamp,1);
Freq_Control = zeros(carlen * nsamp,1);
PLL_Phase_Part = zeros(carlen * nsamp,1); %锁相环频率
PLL_Freq_Part = zeros(carlen * nsamp,1); %锁相环相位
WC_frame = zeros(1,carlen * nsamp);
NCO_Phase = 0;
mul = 2;
for i = 1 + mul:carlen - mul
.................................................................................
end
end
figure(1);
subplot(211)
plot(WC_frame((1+mul)*nsamp:end-mul*nsamp));
grid on;
title('锁相环频率响应曲线');
subplot(212)
plot(PLL_Phase_Part((1+mul)*nsamp:end-mul*nsamp)*180/pi);
title('锁相环相位响应曲线');
grid on;
num1 = symerr(sign(I_D(comps1:compf1)) , sign(dataoutI(comps1:compf1)));
num2 = symerr(sign(I_D(comps1:compf1)) , -sign(dataoutI(comps1:compf1)));
num3 = symerr(sign(I_D(comps1:compf1)) , sign(dataoutQ(comps1:compf1)));
num4 = symerr(sign(I_D(comps1:compf1)) , -sign(dataoutQ(comps1:compf1)));
numI = [num1,num2,num3,num4];
num = min(numI);
if num1 == num
dataout_I = dataoutI;
elseif num2 == num
dataout_I = -dataoutI;
elseif num3 == num
dataout_I = dataoutQ;
else
dataout_I = -dataoutQ;
end
num1 = symerr(sign(Q_D(comps2:compf2)) , sign(dataoutQ(comps2:compf2)));
num2 = symerr(sign(Q_D(comps2:compf2)) , -sign(dataoutQ(comps2:compf2)));
num3 = symerr(sign(Q_D(comps2:compf2)) , sign(dataoutI(comps2:compf2)));
num4 = symerr(sign(Q_D(comps2:compf2)) , -sign(dataoutI(comps2:compf2)));
numQ = [num1,num2,num3,num4];
num = min(numQ);
if num1 == num
dataout_Q = dataoutQ;
elseif num2 == num
dataout_Q = -dataoutQ;
elseif num3 == num
dataout_Q = dataoutI;
else
dataout_Q = -dataoutI;
end
figure(2);
x= 5:len-5;
stem(x*4 - 18,I_Data(5:len-5),'g');hold on;
stem(I_D(9:end-8));hold on;
stem(dataout_I(9:end),'r');
%%
%位同步环
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
datarcosI = dataout_I(9:end) ;
datarcosQ = dataout_Q(9:end) ;
interplen = length(datarcosI)/nsamp;
C1 = 0.001;
C2 = C1 * 0.001;
q = zeros(1,interplen);
m = 5;
j = 3;
q0 = 0.9;
%lf输出
w = 0.5;
%插值乘法器值
s0 = 2;
%误差检测输出
Detector_out = zeros(1,interplen);
%插值filter输出;
interp_outI = zeros(1,interplen * 2);
interp_outQ = zeros(1,interplen * 2);
interp_outI(1) = datarcosI(2);
interp_outI(2) = datarcosI(4);
interp_outQ(1) = datarcosQ(2);
interp_outQ(2) = datarcosQ(4);
for i = 2 : interplen - 1
for k = 1 : nsamp
........................................................................
end
[RData] = [QPSK_demod(sign(qoutI),sign(qoutQ))]';
RData = [0;0;0;0;0;0;0;0;RData;0;0;0;0;0;0;0;0;0;0;0;0];
RData= 2*RData-1;
msg_dec = [];
for i = 1:47
i
[vhatsd,nb_itersd,successsd] = func_Dec(RData(Ns*(i-1)+1:Ns*i),newH,N0,Max_iter);
tmps = vhatsd(Ms+1:Ns)';
msg_dec = [msg_dec;tmps];
end
[nCodErrs BERCoded] = biterr(msg_orig(sl:sp-100), msg_dec(sl:sp-100));
BERCoded
figure(3);
plot(uu,'*-');
figure(4);
subplot(211)
stem(I_Data(6:end-6));hold on;
stem(qoutI(2:end),'r');
grid on;
subplot(212)
stem(Q_Data(6:end-6));hold on;
stem(qoutQ(2:end),'r');
grid on;
0X_011m
---