m基于16QAM调制的音频信号同步接收器matlab仿真,包括gardner符号同步,载波同步以及CMA均衡

简介: m基于16QAM调制的音频信号同步接收器matlab仿真,包括gardner符号同步,载波同步以及CMA均衡

1.算法仿真效果
matlab2022a仿真结果如下:

锁定过程的星座图变化情况:
1.jpeg
2.jpeg
3.jpeg

定时收敛曲线:

5a6ed4c1c2b8c6a025fc09da1ffc9acb_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

载波同步收敛曲线:

7aba8ded4c929df47c1b44baa1789603_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

2.算法涉及理论知识概要
基于16QAM(Quadrature Amplitude Modulation)调制的音频信号同步接收器是一个复杂但高效的通信系统。该系统主要涉及三个关键部分:Gardner符号同步、载波同步以及CMA(Constant Modulus Algorithm)均衡。

  1. Gardner符号同步

     Gardner符号同步是一个用于数字通信系统的相位和频率同步的算法,它是在数据符号级别上工作的。这个算法通过一个特殊的滤波器(Gardner或Dragone滤波器)来估计并跟踪接收信号的相位和频率。这个滤波器尝试最小化接收信号和理想信号之间的差异,从而提供一个准确的相位和频率估计。
    
      Gardner定时误差算法通常用在BPSK、QPSK信号,通过改进可以应用在QAM等多进制基带信号中。Gardner定时误差算法,该算法的一个特点是每个符号只需要使用两个采样点,一个是strobe点,即最佳观察点,另外一个是midstrobe点,即两个观察点之间的采样点。Gardener环中的数控振荡器与锁相环路中的NCO功能完全不同,这里的NCO作用是产生时钟,即确定内插基点mk,同时完成分数间隔uk的计算,以提供给内插器进行内插。
    

    位同步环路中的数控振荡器(NCO)是一个相位递减器,它的差分方程为:
    η(m+1)=[η(m)-ω(m)]mod1

    式中,η(m)是第m个工作时钟NCO寄存器的内容,ω(m)为NCO的控制字,两者都是正小数。NCO的工作周期是T s(采样周期),内插器的周期为T i,ω(m)由环路滤波器进行调节,使NCO在最佳采样时刻溢出。
    
  2. 载波同步

    载波同步是用于从接收到的信号中提取相位和频率信息的部分。它主要用于消除接收信号中可能存在的载波偏差。这种偏差可能由发射和接收设备的频率不同步或者多径效应引起。 Costas环(Costas Loop)用在抑制载波调制信号(比如双边带抑制载波调制)和相位调制信号(BPSK、QPSK)的相干解调中的载波恢复(carrier frequency recovery)上。Costas环的主要应用是在无线通信接收机中。与基于PLL的检波器相比,它的优势在于,在相位差比较小的情况下,Costas环输出的误差电压为 sin(2(θi−θf)) ,而基于PLL的检波器输出的误差电压为 sin(θi−θf) ,这不仅使灵敏度提高了一倍,而且使Costas环路特别适合跟踪载波的多普勒频移,特别是在OFDM和GPS接收机中。
    
  3. CMA均衡

     CMA(Constant Modulus Algorithm)均衡是一种常用于数字通信系统的盲信号处理技术。它主要用于消除多径干扰和通道失真。CMA均衡器通过调整其权重来最小化输出信号的模值偏差。这意味着它会尝试将接收到的信号调整到接近理想的信号形状。
    
     基于16QAM调制的音频信号同步接收器将上述三个部分结合在一起,通过处理接收到的信号实现同步解调和均衡处理,从而恢复出原始信号。
    

3.MATLAB核心程序

%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');
相关文章
|
11天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
10天前
|
算法
基于HASM模型的高精度建模matlab仿真
本课题使用HASM进行高精度建模,介绍HASM模型及其简化实现方法。HASM模型基于层次化与自适应统计思想,通过多层结构捕捉不同尺度特征,自适应调整参数,适用于大规模、高维度数据的分析与预测。MATLAB2022A版本运行测试,展示运行结果。
|
11天前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
200 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
129 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
6月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
6月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)