基于OFDM+64QAM系统的载波同步matlab仿真,输出误码率,星座图,鉴相器,锁相环频率响应以及NCO等

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

2.1 OFDM原理

2.2 64QAM调制

2.3 载波同步

5.算法完整程序工程


1.算法运行效果图预览

 

2.算法运行软件版本

MATLAB2022a

3.部分核心程序

............................................................................
for ij=1:Nframe      
    [sj,ij]
    %64个符号的训练序列
    msg1          = round(63*rand(64,1));
    msg2          = repmat(msg1,2,1); 
    msg2_64QAM    = qammod(msg2,Morder);
     
    dataPre       = round(63*rand(36,1));  
    dataPre_64QAM = qammod(dataPre,Morder);  
    %数据   
    signal        = round(63*rand(nsym-2*64-36,1));      
    signal_64QAM  = qammod(signal,Morder);
  
    Tx_din        = [dataPre;msg2;signal];
    Tx_bin        = de2bi(Tx_din,6,'left-msb');
    Tx_bin2       = Tx_bin.';
    %发送数据的二进制数
    Tx_bin3       = reshape(Tx_bin2,[],1);   
 
    dataTxSig     =[dataPre_64QAM;msg2_64QAM;signal_64QAM];
    dataTx        = dataTxSig.*Carrier.';
..............................................................................   
        %积分滤波器
        PLL_Phase_Part(i)= Discriminator(i)*C1;
        PLL_Freq_Part(i) = Discriminator(i-1)*C2+PLL_Freq_Part(i-1);
        Freq_Control(i)  = PLL_Phase_Part(i)+PLL_Freq_Part(i);
        NCO_Phase(i)     = NCO_Phase(i-1)+Freq_Control(i-1);
        fre(i)           = NCO_Phase(i)/(2*pi*i)*fs;
        %平滑处理
        if i-len<=99
           Discriminator2(i) = mean(Discriminator(len+1:i));                
           fre2(i)           = mean(fre(len+1:i));
        else
           Discriminator2(i) = mean(Discriminator(i-99:i));
           fre2(i)           = mean(fre(i-99:i));
        end
    end         
   
    

if (sj==12 | sj==15)& ij==1

figure    
subplot(2,2,1)
plot(fre2(len+1:nsym)); 
grid on;
title('锁相环频率响应');

subplot(2,2,2)
plot(NCO_Phase(len+1:nsym)); 
grid on;
title('NCO输出相位');

subplot(2,2,3)
plot(Discriminator2(len+1:nsym));  
title('鉴相器输出');  
grid on;


subplot(2,2,4)
plot(dataPhaEst(2000:end),'b*');  
title('锁相环之前星座图');   
grid on;

figure
plot(Signal_PLL(2000:end),'r.');  
title('锁相环之后星座图');   
grid on; 

end
  
s_pll=Signal_PLL; 
dRx2=qamdemod(s_pll,Morder);
dRx1=reshape(dRx2,[],1);
dRx_bit1=de2bi(dRx1,6,'left-msb'); 
dRx_bit2=dRx_bit1.';
dRxbit=reshape(dRx_bit2,[],1);
 
for m=(1200+1):nsym 
    if dRxbit(m)~=Tx_bin3(m)  
       err_bit(ij)=err_bit(ij)+1;       
    end                         
end                                    
end                                
sum_bit_err=sum(err_bit);
BER(sj)=sum_bit_err/(Nframe*(4*nsym-300*4));
end


figure;
semilogy(SNRss,BER,'b-o');
grid on

xlabel('SNR');
ylabel('error');
0046

4.算法理论概述

        正交频分复用(OFDM)是一种在现代通信系统中广泛使用的调制技术,它具有高效的频谱利用和抗多径衰落等特点。64QAM(64-ary Quadrature Amplitude Modulation)是一种调制方式,可以在每个符号中传输更多的位信息。在OFDM系统中,保持载波同步对确保数据传输的可靠性至关重要。

2.1 OFDM原理

      OFDM将高速数据流划分为多个较低速的子载波,这些子载波之间互相正交,从而降低了子载波之间的干扰。每个子载波可以独立地调制和解调,提高了抗多径衰落和频率偏移的能力。

2.2 64QAM调制

     64QAM是一种高阶调制方式,每个符号可以传输6个比特(2^6=6426=64种可能的组合)。每个符号的相位和幅度有64种可能的组合,使得64QAM适合传输更多的信息,但也对信号质量要求更高。

2.3 载波同步

       在OFDM系统中,准确的载波同步是至关重要的。载波同步包括两个方面:频率同步和相位同步。频率同步旨在校准发送端和接收端的本地振荡器,以消除频率偏移。相位同步则调整接收信号的相位,以最大化解调性能。

5.算法完整程序工程

OOOOO

OOO

O

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于 DCO-OFDM 的 NOMA 可见光通信系统误码率仿真 Matlab 的流程可以如下: 1. 构建 DCO-OFDM NOMA 系统模型:包括发送端、接收端、信道模型等等。 2. 生成随机消息:产生一定数量的随机二进制消息。 3. 将随机消息编码为 NOMA 信号:使用 NOMA 编码技术将随机消息编码成 DCO-OFDM 信号。 4. 将 NOMA 信号传输到接收端:使用可见光通信信道模型将 NOMA 信号传输到接收端。 5. 在接收端解码 NOMA 信号:使用 NOMA 解码技术将接收到的 NOMA 信号解码成二进制消息。 6. 计算误码率:将解码错误的比特数除以总比特数,得到误码率。 以下是一个基于 DCO-OFDM NOMA 可见光通信系统误码率仿真 Matlab 的示例代码: ```matlab % 系统参数设置 NumOfBits = 1e5; % 发送消息的比特数 NumOfSubcarriers = 64; % 子载波数量 NumOfUsers = 2; % 用户数量 PowerRatio = [0.7, 0.3]; % 发送功率比例 SNRdB = 20; % 信噪比 LED = [1, 0, 0]; % 发送端 LED 灯颜色 PD = [0, 1, 0]; % 接收端 PD 灯颜色 Distance = 1; % 传输距离(单位:m) alpha = 1; % 衰减因子 beta = 1; % 非线性失真系数 % 生成随机消息 Bits = randi([0, 1], 1, NumOfBits); % NOMA 编码 [Signal, Constellation] = NOMA_Encode(Distance, PowerRatio, NumOfSubcarriers, NumOfUsers, Bits); % 发送光信号 txSignal = DCO_OFDM_Modulation(Signal, NumOfSubcarriers, LED); % 信道传输 rxSignal = Channel_Transmission(txSignal, Distance, alpha, beta); % DCO-OFDM 解调 rxData = DCO_OFDM_Demodulation(rxSignal, NumOfSubcarriers, PD); % NOMA 解码 rxBits = NOMA_Decode(rxData, NumOfSubcarriers, NumOfBits, NumOfUsers, PowerRatio, SNRdB, Constellation); % 计算误码率 BER = sum(Bits ~= rxBits) / NumOfBits; disp(['误码率为:', num2str(BER)]); ``` 这里需要实现 DCO-OFDM 系统模型、NOMA 编码和解码技术、可见光通信信道模型等等。具体实现可以根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简简单单做算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值