1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJuakppv
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
基于DVB-T的COFDM+16QAM+LDPC码通信链路是一种常用的数字视频广播系统,用于实现高效的传输和接收。该系统结合了正交频分复用(COFDM)、16QAM调制和低密度奇偶校验(LDPC)编码与解码技术。此外,系统中还包括载波同步、定时同步和信道估计模块,用于实现信号的载波频率和定时偏移的同步,以及信道状态的估计。
4.部分源码
...................................................................................
A_avg =(3*sqrt(2)*4+sqrt(2)*4+sqrt(10)*8)/16;
Burst = 1*A_avg*4/3;
%--------------------------------------------------------------------------
%插入分散导频
g = bin2dec('100000000101'); %伪随机二进制序列生成多项式:x11+x2+1
state = bin2dec('11111111111'); %伪随机二进制序列生成寄存器初始状态
N = 2^11-1; %生成二进制序列长度
train = zeros(symbols_per_carrier,carrier_count);
train_sym = zeros(symbols_per_carrier,carrier_count);
for i=1:l+1
%改成随机数,不用上列PRBS生成法。简化
m=round(rand(1,carrier_count));
train(i,:)=m(1:carrier_count);
end
for i=1:l+1
%分散导频值
train_sym(i,pilot(i,:))=Burst*2.*(1/2-train(i,pilot(i,:)));
end
signal = [1:carrier_count];
X3(:,signal) = 0;
for i=1:l+1
%插入分散导频
X3(i,pilot(i,:)) = train_sym(i,pilot(i,:));
end
%保留原始插入分散导频
X3_SPCP = X3(1:4,:);
X3_SPCP(2:4,1) = 0;
X3_SPCP(2:4,1705) = 0;
ScPilotX = X3(1:4,:);
.............................................................................................
%STEP2:整数倍载波频率同步
Np = length(CP);
for i=1:12-1;
tmps=0;
for p=0:Np-1
tmps = tmps + X_modify1(i,45*p+1)*conj(X_modify1(i+1,45*p+1));
end
fl(i) = abs(tmps);
end
Fre_err = mean(Ff)+mean(fl);
X_modify2 = X_modify1;
for i1=1:12
X_modify2(i1,:)=X_modify1(i1,:).*exp(-j*2*pi*(Fre_err));
end
subplot(426);
plot(X_modify2(Max_ip,:),'b.');
xlabel('In-Phase');
ylabel('Quadrature');
axis square
title('经定频偏修正的符号');
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%信道估计
r_chestimation = X_modify2(First_ip:First_ip+8-1,:);
X_modify2 = r_chestimation;
r_chestimation(:,TPS) = 0;
for m=1:8
for k=1:1705
if (abs(Data_index(m,k))>0.5)
r_chestimation(m,k)=0;
end
end
end
.......................................................................................
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%-------------LDPC解码 --------------------------------
hDemod = modem.qamdemod('M', ModulateIndex, 'PhaseOffset', 0, 'SymbolOrder', 'Gray', 'OutputType', 'Bit');
msg_demod = demodulate(hDemod, S_data.');
msg_demod0= 2*msg_demod-1;
msg_dec = [];
for i = 1:11
[vhatsd,nb_itersd,successsd] = func_Dec(msg_demod0(Ns*(i-1)+1:Ns*i),newH,N0,Max_iter);
tmps = vhatsd(Ms+1:Ns)';
msg_dec = [msg_dec;tmps];
end
[nChnlErrs BERChnl] = biterr(msg_enc(1:end/4), msg_demod);
[nCodErrs BERCoded] = biterr(msg_orig(1:length(msg_dec)), msg_dec);
NERR=NERR+nCodErrs;
NERR
Eind=Eind+BERCoded;
end
Err = [Err,Eind/ind];
end
figure;
semilogy(EbN0,Err,'b-o');
grid on
xlabel('EbN0');
ylabel('误码率');
save R1.mat EbN0 Err
0X_010m