首页 > 其他分享 >m基于QPSK+LDPC的载波同步和定时同步matlab性能仿真,包括Costas和gardner环,LDPC,四倍采样

m基于QPSK+LDPC的载波同步和定时同步matlab性能仿真,包括Costas和gardner环,LDPC,四倍采样

时间:2023-08-07 13:57:32浏览次数:54  
标签:仿真 QPSK 同步 LDPC interp 算法 载波 Costas

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

本程序在博主之前的

 

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

 

算法基础上,加入了LDPC编译码进行仿真。

 

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

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

 

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

 

         实际通信中,由于信道的传输时延,接收两端的时钟偏移,接收端无法找到符号的最佳时刻来对其进行采样判决,这便使得接收端恢复出的数据与发送端的数据有误差。接收端若想在最佳采样时刻恢复发送端的数据,便要使得接收时钟与发送时钟同步,因此接收端要采取措施来调整接收端的采样时钟,这个同步的过程便定义为位同步。

 

        这里,我们分析了通信中的4进制相移键控QPSK调制解调算法,并使用具有多种信号处理IP核且开发灵活的现场可编程逻辑门阵列(Field-Programmable Gate Array:FPGA)对该算法进行了硬件实现。对BPSK调制解调算法中的关键技术数控振荡器(Numerically controlled oscillator: NCO)、成型滤波器、载波同步与定时同步的基本原理进行了详细的分析。随后,基于通信系统的设计要求,分别选择Costas环和Gardner环用于载波和码元同步,并利用Matlab软件对同步环路的参数及功能进行了仿真验证。在Matlab仿真验证成功后,使用Verilog语言对BPSK调制解调算法进行了硬件描述,并对该算法进行了功能仿真。仿真结果证明了 BPSK调制解调算法在FPGA中的正确实现。最后对水声通信试验平台中的上位机进行了简单设计,并完成了与FPGA的相互数据通信。为了进一步验证所编写的FPGA算法的正确性能,进行了相应的水池试验验证。结果表明,由于Costas环能够正确补偿信号传输过程中所产生的频偏,Gardner环也可以补偿信号在传输过程中所产生的定时偏差,因此当收发通信距离较短、信道的多途影响较小时,通过对估计的码元符号和原始码元符号进行对比,计算出环路在同步后的数据误码率为0,星座图分布良好,验证了基于FPGA的BPSK调制解调算法的正确实现。

 

Ttttttttttttt44444444

 

    Costas环(Costas Loop)用在抑制载波调制信号(比如双边带抑制载波调制)和相位调制信号(BPSK、QPSK)的相干解调中的载波恢复(carrier frequency recovery)上。由通用电气公司的John P. Costas 在1950s发明。它的发明被描述为对现代数字通信产生了深远的影响。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

 

3.MATLAB核心程序

 

for i = 2 : interplen - 1
     for k = 1 : nsamp
         y_temp = q0 - w;
         q(m) = q0;
         if y_temp > 0
            q0 = y_temp;
         else 
            q0 = mod(y_temp,1);
            mk = m;
            uk = s0 * q(m);
            uu(j) = uk;
            data1 = datarcosI(mk);
            data2 = datarcosI(mk + 1);
            interp_outI(j) = uk * data2 + (1 - uk) * data1;
            if mod(j,2) ~= 0
               qoutI((j+1)/2) = interp_outI(j);
            end
            data1 = datarcosQ(mk);
            data2 = datarcosQ(mk + 1);
            interp_outQ(j) = uk * data2 + (1 - uk) * data1;
            if mod(j,2) ~= 0
               qoutQ((j+1)/2) = interp_outQ(j);
            end
            j = j + 1;
         end
         m  = m + 1;
     end         
     Detector_out(i) = (interp_outI((i - 2)* 2 + 2)) * ((interp_outI((i - 1)* 2 + 1)) - (interp_outI((i - 2)* 2 + 1))) + (interp_outQ((i - 2)* 2 + 2)) * ((interp_outQ((i - 1)* 2 + 1)) - (interp_outQ((i - 2)* 2 + 1)));
     w = w + (C1 * (Detector_out(i) - Detector_out(i - 1)) + C2 * Detector_out(i));  
     Wm(i) = w;
end

 

  

 

标签:仿真,QPSK,同步,LDPC,interp,算法,载波,Costas
From: https://www.cnblogs.com/51matlab/p/17611233.html

相关文章

  • C#实现SqlServer数据库同步
    实现效果:设计思路:1.开启数据库及表的cdc,定时查询cdc表数据,封装sql语句(通过执行类型,主键;修改类型的cdc数据只取最后更新的记录),添加到离线数据表;2.线程定时查询离线数据表,更新远程库数据;3.远程库数据被更改又会产生cdc数据,对此数据进行拦截;配置文件说明:{ "AsyncInterval":......
  • lsyncd 文件实时同步
    配置文件安装yuminstall-ylsyncd配置/etc/lsyncd.conf------Userconfigurationfileforlsyncd.----Simpleexamplefordefaultrsync,butexecutingmovesthroughonthetarget.----Formoreexamples,see/usr/share/doc/lsyncd*/examples/----s......
  • reg和wire+fsdb转文本+FIQ和IRQ+桶形移位+数据转换+数据同步+NRZ和NRZI+加法器有效使
    reg和wirehttps://mp.weixin.qq.com/s?__biz=MzUyNzA2MDA0OQ==&mid=2247531642&idx=1&sn=be10436fa547d894cf58bbffac48a0fd&chksm=fa076144cd70e8524cbc108db18e5fdf9472a0ea9e2b14f4b55d3d3d936136bc50b7b4c30589&scene=27wire可以作为模块的输入和输出,但是reg只能作为模......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:2.算法涉及理论知识概要QPSK(QuadraturePhaseShiftKeying)是一种常用的调制方式,它可以在相位和......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:   将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要       QPSK(QuadraturePhaseShiftKeying)......
  • 一些笔记同步软件,notion替代,开源笔记软件
    StandardNotes|End-To-EndEncryptedNotesApphttps://www.bookstackapp.com/https://www.qownnotes.org/https://github.com/zadam/triliumFlowUs息流官网-新一代知识管理与协同平台,在线文档笔记知识库,项目管理协作Releases·toeverything/AFFiNE·GitHubAFFiNE......
  • centos7中安装 ntp时间同步服务器
     001、查看ntp服务状态[root@PC1home]#cat/etc/redhat-release##系统版本CentOSLinuxrelease7.6.1810(Core) 002、启动ntp服务[root@PC1home]#systemctlstartntpd##没有安装ntpd服务Failedtostartntpd.service:Unitnotfound. 003、使......
  • ODS层数据同步问题总结
    ODS层数据同步问题总结项目中参与到一些贴源层从各个系统同步数据的需求,理论上ODS层是不做任何处理的,应该很简单才对,但是实际还是超出理论的,结合其他同事踩过的坑,总结一些接入的问题。其实大部分问题,都是源表不规范导致的,因此在抽数前,一定要做好调研,下次写一篇如何做调研的总结......
  • C++11 同步与互斥
    C++11同步与互斥1.std中的锁1.1锁是实现互斥的方法,在std中实现了多种基本锁如下:std::mutex:最基本的互斥锁,只能在同一线程中进行加锁和解锁操作。std::recursive_mutex:递归互斥锁,允许同一线程多次加锁,但必须在同一线程中解锁相同次数。std::timed_mutex:定时互斥锁,允......
  • js方法保持同步promiseAll
    单个请求保持同步-方法执行完再执行后面的语句delItem(item){if(item.row.status=='2'){this.$message.warning("需求在开发中,无法删除");return;}if(item.row.status=='3'){this.$message.warning("需求已开发完成,无法......