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

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

时间:2023-09-28 23:56:20浏览次数:44  
标签:同步 aI 0.5 CMA length gardner 信号 载波

1.算法仿真效果

matlab2022a仿真结果如下:

 

锁定过程的星座图变化情况:

 

 

 

 

定时收敛曲线:

 

 

 

载波同步收敛曲线:

 

 

 

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算法开始
%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');

 

  

 

标签:同步,aI,0.5,CMA,length,gardner,信号,载波
From: https://www.cnblogs.com/51matlab/p/17736676.html

相关文章

  • vsstudio: cmake项目调试
    vsstudio:cmake项目调试本文用于记录,在利用vsstudio进行cmake的QT项目研发过程中的环境配置。QtVisualStudioTool安装在vsstudio的扩展中搜索QT找到QTVisualStudio进行安装,然后配置QT所在路径QT环境配置此时如果运行cmake进行config时会报错,提示找不到QT相关环境......
  • LED驱动芯片同步降压AP3266高效率IC
    产品描述AP3266是高效率、外围简单、内置功率管的同步降压恒流芯片,适用于4-40V输入的降压LED恒流驱动芯片。输出最大功率可达40W,最大电流3.6A。AP3266可通过调节OVP端口的分压电阻,设定输出空载电压保护,避免高压空载上电瞬间烧坏LED灯。AP3266工作频率固定在130KHZ,......
  • K8s Pod与宿主机时区不同步
    目录本机替换上海时间一、通过定制Dockerfile添加时区二、通过将时区文件挂在到Pod中三、通过环境变量定义时区四、修改k8s表空间时区本机替换上海时间sudotimedatectlset-timezoneAsia/Shanghai&&sudontpdatetime.windows.com一、通过定制Dockerfile添加时区$catDockerf......
  • PHPStudy hosts文件可能不存在或被阻止打开及同步hosts失败问题
    在使用PHPStudy建站包时,有时会遇到同步hosts失败的问题,可能是因为hosts文件不存在或被阻止打开。这个问题通常可以通过以下几个步骤解决:步骤一:检查hosts文件是否存在首先,我们需要检查一下hosts文件是否存在。在Windows系统中,hosts文件位于C:\Windows\System32\drivers\etc\目录......
  • 【RocketMQ】主从同步实现原理
    RocketMQ支持集群部署来保证高可用。它基于主从模式,将节点分为Master、Slave两个角色,集群中可以有多个Master节点,一个Master节点可以有多个Slave节点。Master节点负责接收生产者发送的写入请求,将消息写入CommitLog文件,Slave节点会与Master节点建立连接,从Master节点同步消息数据。......
  • 并发_管程(同步互斥)
               ......
  • 教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS
    一直以来,大数据量一直是爆炸性增长,每天几十TB的数据增量已经非常常见,但云存储相对来说还是不便宜的。众多云上的大数据用户特别希望可以非常简单快速的将文件移动到更实惠的S3、OSS上进行保存,这篇文章就来介绍如何使用SeaTunnel来进行到OSS的数据同步。首先简要介绍一下......
  • centos搭建rsync远程同步服务器
    rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用rsync同步本地硬盘中的不同目录。 rsync和scp的区别:rsync支持增量同步,不管是文件数量的新增还是文件内容的新增,scp不行注意事项:1、centos默认已经安装rsync了,输入命令rsync查......
  • CentOS同步阿里云时钟
    安装Chrony[root@k8s-masteropt]#yuminstallchronyLoadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfile*base:mirrors.aliyun.com*extras:mirrors.ustc.edu.cn*updates:mirrors.aliyun.comResolvingDependencies-->Runningtr......
  • 实现基于分布式的LAMP架构,并将NFS实时同步到备份服务
    1.实现基于分布式的LAMP架构,并将NFS实时同步到备份服务1.1web服务器配置服务器环境准备需配置DNS解析,将域名解析成web服务器的地址服务名称IP地址web01-server10.0.0.8web02-server10.0.0.18mysql-server10.0.0.28nfs-server10.0.0.38backup-serv......