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

m通信系统中基于相关峰检测的信号定时同步算法的FPGA实现

目录

1.算法概述

2.部分程序

3.算法部分仿真结果图

4.完整程序获取


CSDN用户:我爱C编程
CSDN主页:https://blog.csdn.net/hlayumi1234567?type=blog
擅长技术:智能优化,路径规划,通信信号,图像处理,深度学习,控制器等。

1.算法概述

        定时同步方法主要分为基于数据辅助和非数据辅助两类。前者是在发送有效数据前发送一段具有某种特征的训练或导频符号,接收端根据符号特征建立同步,具有同步建立速度快、精度高的特点,适用于分组通信或突发通信系统;后者典型的是利用循环前缀进行同步估计,不需要插入训练符号,传输效率高,但同步捕获时间长,精度较差,通常仅适用于连续传输系统。由于实际中常用的无线通信系统大多属于分组通信或突发通信,多采用基于训练序列的定时同步方法,因此本文主要对该同步方法进行分析研究和工程实现。首先对基于训练序列的定时同步原理和同步序列的设计进行简要介绍,其次对同步序列的性能进行仿真分析,然后详细阐述定时同步模块的结构设计,最后利用FPGA编程实现并进行综合仿真,验证该设计的可行性。       

        定时同步在实际中一般比较复杂,本文,我们主要使用加入的帧头信息进行定时同步,由于接收和发送是两块板子,所以他们对应的晶振是不同的,所以两个晶振之间会存在细微的频率差,这就是时偏,利用本方案加入的帧头,对每帧数据进行采样时钟的刷新,从而实现一帧之内采样时钟的偏差不超过一个时钟周期。

       帧头信息采用PN码,PN码序列捕获指接收机在开始接收扩频信号时,选择和调整接收机的本地扩频PN序列相位,使它与发送的扩频PN序列相位基本一致,即接收机捕捉发送的扩频PN序列相位,也称为扩频PN序列的初始同步。在系统接收端,一般解扩过程都在载波同步前进行,实现捕获大多采用非相干检测。接收到扩频信号后,经射频宽带滤波放大及载波解调后,分别送往2N扩频PN序列相关处理解扩器(N是扩频PN序列长)。2N个输出中哪个输出最大,该输出对应的相关处理解扩器所用的扩频PN序列相位状态,就是发送的扩频信号的扩频PN序列相位,从而完成扩频PN序列捕获。捕获的方法有多种,如滑动相干法、序贯估值法及匹配滤波器法等,滑动相关法是最常用的方法。

2.1 滑动相关法

  接收系统在搜索同步时,它的码序列发生器以与发射机码序列发生器不同的速率工作,致使这两个码序列在相位上互相滑动,只有在达到一致点时,才停下来,因此称之为滑动相关法。接收信号与本地PN码相乘后积分,求出它们的互相关值,然后与门限检测器的某一门限值比较,判断是否已捕获到有用信号。它利用了PN码序列的相关徨性,当两个相同的码序列相位一致时,其相关值输出最大。一旦确认捕获完成,捕获指示信号的同步脉冲控制搜索控制钟,调整PN码发生器产生的PN码重复频率和相位,使之与收到的信号保持同步。由于滑动相关器对两个PN码序列按顺序比较相关,所以该方法又称顺序搜索法。滑动相关器简单,应用簋广,缺点是当两个PN码的时间差或相位差过大时,相对滑动速度簋慢,导致搜索时间过长,特别是对长PN码的捕获时间过长,必须采取措施限定捕获范围,加快捕获时间,改善其性能。

2.2 序贯估值法

  序贯估值法是另一种减少长码捕获时间的快速捕获方法,它把收到的PN码序列直接输入本地码发生器的移位寄存器,强制改变各级寄存器的起始状态,使其产生的PN码与外来码相位一致,系统即可立即进行同步跟踪状态,缩短了本地PN码与外来PN码相位一致所需的时间。该方法先检测收到码信号中的PN码,通过开关,送入n级PN码发生器的移位寄存器。待整个码序列全部进入填满后,在相关器中,将产生的PN码与收到的码信号进行相关运算,在比较器中将所得结果与门限进行比较。若未超过门限,则继续上述过程。若超过门限,则停止搜索,系统转入跟踪状态。理想情况下,捕获时间Ts=nTc,(Tc为PN码片时间宽度)。该方法捕获时间虽短,但存在一些问题,它先要对外来的PN码进行检测,才能送入移位寄存器,要做到这一点有时很困难。另外,此法抗干扰能力很差,因为逐一时片进行估值和判决,并未利用PN码的抗干扰特性。但在无干扰条件下,它仍有良好的快速初始同步性能。

2.3 匹配滤波器法

  用于PN同步捕获的匹配滤波器一般采用延时线匹配滤波器,其目的是识别码序列,它能在特殊结构中识别特殊序列,而且只识别该序列。假设一个输入信号是7bit码序列1110010双相调制的信号,每当码有1-0过渡时,反相信号进入延时线,直到第1bit在T7,第2bit在T6。当全部时延元件都填满,而且信号调制码与滤波器时延元件相位一致时,T2的信号相位与T5、T6、T7的相位相同,时延元件T1、T3、T4也具有相同的信号相位。把{T2、T5、T6、T7}与{T1、T3、T4}两组分别相加,把{T1、T3、T4}之和倒相输出,再将这两个结果相加,包含在全部7个元件中的信号能量同相相加,整个输出是未处理的7倍。根据该能量关系可以识别码序列。

2.部分程序

`timescale 1ns / 1ps

module corrpeak_cal_tops(
                         i_clk,
								 i_rst,
								 o_I_dw,
								 o_Q_dw,
								 o_peakI,
								 o_peakQ
	                     );

								
input i_clk;
input i_rst;
output signed[11:0]o_I_dw;
output signed[11:0]o_Q_dw;
output signed[14:0]o_peakI;
output signed[14:0]o_peakQ;

bignoise_signal signal_u(
				    .i_clk (i_clk), 
				    .i_rst (i_rst), 
				    .o_I_dw(o_I_dw), 
				    .o_Q_dw(o_Q_dw)
				    );


corrpeak_cal corrpeak_cal_u1(
    .i_clk        (i_clk), 
    .i_rst        (i_rst), 
    .i_base_signal(o_I_dw[11:4]), 
    .o_peak       (o_peakI)
    );

corrpeak_cal corrpeak_cal_u2(
    .i_clk        (i_clk), 
    .i_rst        (i_rst), 
    .i_base_signal(o_Q_dw[11:4]), 
    .o_peak       (o_peakQ)
    );



endmodule

3.算法部分仿真结果图

01_205m

4.完整程序获取

使用版本matlab2022a

解压密码:C+123456

获得方式1(面包多下载):

获取方式2:

如果下载链接失效,加博主微信,或私信。

相关文章:

  • Unity 之 Mac App Store 内购过程解析(购买非消耗道具 | 恢复购买 | 支付验证)
  • AD四层板总结
  • 【MLOPs】Docker
  • js执行机制
  • Pytorch+Python实现人体关键点检测
  • 【1024】程序员福利
  • Redis产生的问题:在关闭虚拟机退出后重启发生网卡启动失败
  • 浅谈Vue3的优势
  • 如何在Vue+ElementUI项目中使用iconfont图标库
  • Python基础加强学习
  • C语言-简单的程序设计
  • 链队列基本操作
  • 多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制
  • Python是“真火”还是“虚火”?
  • 为什么要做数据治理以及如何进行数据治理?
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • CentOS7简单部署NFS
  • CSS盒模型深入
  • Electron入门介绍
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • ES6--对象的扩展
  • ES6核心特性
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Magento 1.x 中文订单打印乱码
  • Map集合、散列表、红黑树介绍
  • mongodb--安装和初步使用教程
  • 翻译--Thinking in React
  • - 概述 - 《设计模式(极简c++版)》
  • 关于Java中分层中遇到的一些问题
  • 精彩代码 vue.js
  • 浏览器缓存机制分析
  • 每天10道Java面试题,跟我走,offer有!
  • 什么是Javascript函数节流?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 使用Gradle第一次构建Java程序
  • 思维导图—你不知道的JavaScript中卷
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 异步
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # include “ “ 和 # include < >两者的区别
  • #100天计划# 2013年9月29日
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #宝哥教你#查看jquery绑定的事件函数
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (06)金属布线——为半导体注入生命的连接
  • (1)bark-ml
  • (1)虚拟机的安装与使用,linux系统安装
  • (2.2w字)前端单元测试之Jest详解篇
  • (4)(4.6) Triducer
  • (a /b)*c的值
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释