当前位置: 首页 > article >正文

基于32QAM的载波同步和定时同步性能仿真,包括Costas环的gardner环

目录

1.算法仿真效果

2.算法涉及理论知识概要

3.MATLAB核心程序

4.完整算法代码文件获得


1.算法仿真效果

matlab2022a仿真结果如下(完整代码运行后无水印)

仿真操作步骤可参考程序配套的操作视频。

2.算法涉及理论知识概要

      载波同步是相干解调的基础,不管对于模拟通信还是数字通信来说,只要是相干解调,接收端都必须提供同频同相的载波。当然,若采用基带传输,此时便没有载波同步的问题,因为没有频带调制,即没有乘以载波进行频谱搬移的过程。

      位同步,也叫符号同步、定时同步、码元同步,只有数字通信才需要,数字通信中不管是基带传输还是频带传输都需要。这是因为数字通信中,是用波形中的几个采样点去代替一个符号,在接收端只需要对这些采样点中的一个进行判决,便可以恢复出这个符号。

       Costas环(Costas Loop)用在抑制载波调制信号(比如双边带抑制载波调制)和相位调制信号(BPSK、QPSK)的相干解调中的载波恢复(carrier frequency recovery)上。Costas环的主要应用是在无线通信接收机中。与基于PLL的检波器相比,它的优势在于,在相位差比较小的情况下,Costas环输出的误差电压为 sin(2(θi−θf)) ,而基于PLL的检波器输出的误差电压为 sin(θi−θf) ,这不仅使灵敏度提高了一倍,而且使Costas环路特别适合跟踪载波的多普勒频移,特别是在OFDM和GPS接收机中。

        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在最佳采样时刻溢出。当环路达到平衡时,ω(m)近似是个常数,此时平均每隔1/ω(m)个采样周期,NCO就溢出一次。

       在实际的 32QAM 通信系统中,载波同步和位同步是相互关联的。一般先进行载波同步,再位同步。在实现过程中,需要合理设置 Costas 环和 Gardner 环的参数,如环路带宽、增益等。

3.MATLAB核心程序

 
            
            I_PLL=I_RRC_S(delay*nsamp-nsamp/2+mul*nsamp+2+k);   %鉴相器的I路输入信息数据
            Q_PLL=Q_RRC_S(delay*nsamp-nsamp/2+mul*nsamp+2+k);   %鉴相器的Q路输入信息数据
            dataoutI((i-1)*nsamp+k) = I_PLL;%用来查看鉴相器的I路输入信息数据
            dataoutQ((i-1)*nsamp+k) = Q_PLL;
            %鉴相器处理
            Discriminator_Out = (sign(I_PLL)*Q_PLL-sign(Q_PLL)*I_PLL)/sqrt(2);   
            dd((i-1)*nsamp+k) = Discriminator_Out;%用来查看鉴相器的输出
            %环路滤波器处理
            PLL_Phase_Part((i-1)*nsamp+k) = Discriminator_Out * C1;   
            Freq_Control((i-1)*nsamp+k) = PLL_Phase_Part((i-1)*nsamp+k)+PLL_Freq_Part((i-1)*nsamp+k-1);
            PLL_Freq_Part((i-1)*nsamp+k) = Discriminator_Out * C2 + PLL_Freq_Part((i-1)*nsamp+k-1);
            NCO_Phase = NCO_Phase + Freq_Control((i-1)*nsamp+k);  %生成的相位
            WC_frame((i-1)*nsamp+k) = FC_NCO + PLL_Freq_Part((i-1)*nsamp+k) * Freq_Sample;
 
............................................................................
%系统最后输出数据与原始数据比对
figure;
stem(I_Data(6:end-6));hold on;
stem(qoutI(2:end),'r');
grid on;
 
figure;
stem(Q_Data(6:end-6));hold on;
stem(qoutQ(2:end),'r');
grid on;
 
 
figure;
subplot(131);
plot(I_Data,Q_Data,'b*');title('16QAM星座图');
subplot(132);
plot(real(AMP(3000:end)),imag(AMP(3000:end)),'b*');title('16QAM带频偏时偏的星座图');
subplot(133);
plot(qoutI(3000:end),qoutQ(3000:end),'b*');title('16QAM同步后星座图');
0sj_054m

4.完整算法代码文件获得

V


http://www.kler.cn/a/507866.html

相关文章:

  • LabVIEW实现油浸式变压器自主监测与实时报告
  • 【进程与线程】前端进程与后端进程
  • Unity ShaderGraph中Lit转换成URP的LitShader
  • 01.02、判定是否互为字符重排
  • Docker的入门
  • 算法竞赛(蓝桥杯)贪心算法1——数塔问题
  • 日志收集Day001
  • 高效实现 Markdown 转 PDF 的跨平台指南20250117
  • Android 13 Hotseat定制化修改——001 hotseat布局方向
  • 【混合开发】CefSharp+Vue 解决Cookie问题
  • gitignore忽略已经提交过的
  • 【深度学习基础】线性神经网络 | softmax回归的简洁实现
  • 算法随笔_6: 下一个排列
  • linux 安装PrometheusAlert配置钉钉告警
  • 博客搭建 — GitHub Pages 部署
  • Spark任务提交流程
  • 学习记录1
  • 免费送源码:Java+SpringBoot+MySQL SpringBoot网上宠物领养管理系统 计算机毕业设计原创定制
  • el-table中使用el-image图片预览被其他表格遮挡,使用z-index层级设置无效
  • 从 Web3 到元宇宙:探索数字身份的奇幻演变
  • Sqlmap入门
  • OpenCV-ED绘制的使用(附源码)
  • 1.17学习记录
  • 使用Docker部署postgresql
  • Navicat For Mysql 1112 导出密码破解 python
  • PHP生产管理系统