首页 > 其他分享 >m基于PN序列的数据帧检测,帧同步verilog实现,含testbench

m基于PN序列的数据帧检测,帧同步verilog实现,含testbench

时间:2023-07-28 21:56:26浏览次数:34  
标签:同步 信号 检测 verilog 模块 testbench 序列 PN

1.算法仿真效果

 

本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:

 

 

 

 

 

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

 

        在数据通信系统中,数据帧检测与帧同步是一项重要的任务,用于确定数据传输中数据帧的起始位置和边界,以正确解析数据。基于PN(Pseudo-Noise)序列的帧同步技术是一种常用的实现方法,它通过检测PN序列在接收信号中的匹配来实现帧同步。在本文中,我们将详细介绍基于PN序列的数据帧检测与帧同步Verilog实现,包括数学原理、实现过程、应用领域以及实现难点。

 

 

2.1 PN序列

 

       PN序列是一种特殊的伪随机序列,具有良好的自相关性和互相关性。PN序列可以通过线性反馈移位寄存器(LFSR)或者Gold码生成器等方式产生。PN序列具有周期性,周期长度为$N$。在数据通信中,发送端和接收端预先约定好PN序列,并将其作为帧同步标记插入数据帧中。接收端利用接收信号与预知的PN序列进行匹配,以找到数据帧的起始位置。

 

2.2 互相关检测

 

       在帧同步过程中,接收端需要通过互相关检测来确定接收信号中PN序列的匹配位置。互相关是一种常用的信号处理技术,用于衡量两个信号之间的相似程度。在基于PN序列的帧同步中,接收信号和预知的PN序列进行互相关运算,当两者匹配时,互相关峰值达到最大,从而可以确定数据帧的起始位置。

 

2.3 帧同步算法

 

基于PN序列的帧同步算法主要包括以下步骤:

 

接收信号采样:接收端对信号进行采样,得到数字信号序列。

 

PN序列生成:接收端使用与发送端相同的方法生成PN序列。

 

互相关运算:将接收信号与PN序列进行互相关运算,得到相关性序列。

 

峰值检测:检测相关性序列中的峰值,找到PN序列在接收信号中的匹配位置。

 

2.4 实现过程

 

       Verilog实现的基于PN序列的数据帧检测与帧同步主要包括多个模块,其中顶层模块负责将输入信号传递给帧同步模块,并将帧同步模块的输出传递给输出模块。顶层模块主要包括以下步骤:

 

输入数据读取:从外部输入读取接收信号的样本数据。

 

帧同步模块调用:调用帧同步模块对接收信号进行帧同步检测。

 

输出数据传递:将帧同步模块的输出传递给输出模块,进行输出。

       帧同步模块是实现基于PN序列的帧同步的核心模块,使用Verilog描述帧同步算法。帧同步模块主要包括以下步骤:

 

PN序列生成:使用LFSR或Gold码生成器产生预知的PN序列。

 

互相关运算:将接收信号与预知的PN序列进行互相关运算,得到相关性序列。

 

峰值检测:检测相关性序列中的峰值,找到PN序列在接收信号中的匹配位置。

 

输出模块

输出模块将帧同步模块的输出结果转换为帧同步的标志位,并输出结果。

 

2.5 应用领域

 

      基于PN序列的数据帧检测与帧同步Verilog实现在数字通信系统中有广泛的应用。在数据传输中,帧同步是确保数据帧正确解析的关键步骤。基于PN序列的帧同步技术可以应用于无线通信、有线通信、卫星通信、雷达系统等各种通信和信号处理系统。

 

2.6 实现难点

 

基于PN序列的数据帧检测与帧同步Verilog实现面临以下几个主要难点:

 

2.6.1 PN序列生成

 

       实现帧同步模块需要能够准确生成与发送端相同的PN序列。PN序列的生成算法是帧同步实现的关键,需要确保生成的PN序列在时间和频率上与预知的PN序列一致。

 

2.6.2 互相关运算

 

      在帧同步模块中,互相关运算是一个复杂的计算过程,需要高效的算法和数据结构来实现。互相关运算的正确性和效率对于帧同步的准确性和性能至关重要。

 

2.6.3 峰值检测

 

       峰值检测是帧同步过程中的关键步骤,需要准确找到相关性序列中的峰值。峰值检测算法需要兼顾灵敏度和鲁棒性,以适应不同信道条件和噪声干扰。

       基于PN序列的数据帧检测与帧同步Verilog实现是一种重要的数据通信技术,在数字通信系统中有广泛的应用。通过理解数学原理、实现过程、应用领域以及实现难点,我们可以更好地掌握帧同步算法的本质和实现方法,并在Verilog语言的FPGA平台上高效地实现数据帧检测与帧同步。帧同步技术的发展将进一步推动数字通信系统的性能提升,为未来的通信发展做出贡献。

 

3.Verilog核心程序

 

module PN_1_sycn(
                                 i_clk,
								 i_rst,
								 o_I_dw,
								 o_peak,
								 o_syn,
								 frame_data_en,
								 frame_data
	                     );
 			
input i_clk;
input i_rst;
output signed[11:0]o_I_dw;
 
output signed[14:0]o_peak ;
output             o_syn;
output             frame_data_en;
output signed[11:0]frame_data;  
    
//测试信号
signal_gen signal_gen_u(
				    .i_clk (i_clk), 
				    .i_rst (i_rst), 
				    .o_I_dw(o_I_dw)
				    ); 
    
//帧同步
    
//峰值计算
wire signed[29:0]w_peak2;
peak_cal peak_cal_cal_u1(
    .i_clk        (i_clk), 
    .i_rst        (i_rst), 
    .i_base_signal(o_I_dw[11:4]), 
    .o_peak       (),
    .o_peak2      (w_peak2)
    );
assign o_peak= w_peak2[23:8];
//峰值检测,输出帧同步使能信号
//峰值定位,包括阈值判决粗同步和峰值最大值定位精同步
 
frame_syn frame_syn_u(
    .i_clk      (i_clk), 
    .i_rst      (i_rst), 
    .i_lvl      (16'd3000), 
    .i_peak     ({o_peak}), 
    .o_syn      (o_syn)
    );
    
    
...........................................................................
    
assign frame_data=(frame_data_en==1'b1)?dly_dat[12]:12'd0;
    
    
endmodule

 

  

 

标签:同步,信号,检测,verilog,模块,testbench,序列,PN
From: https://www.cnblogs.com/51matlab/p/17588978.html

相关文章

  • sublime配置Verilog环境
    官网下载sublime进入界面CTRL+shift+p,点击第一个,等待一会出现另一个搜索框输入ChineseLocalizations汉化输入verilog,选择出现的第一个即可视图--->语法----->verilog即可自动补齐......
  • VS 还原 NuGet 程序包时出错: 无法加载源 https://dotnet.myget.org/F/aspnetcore-dev
    错误还原NuGet程序包时出错:无法加载源https://dotnet.myget.org/F/aspnetcore-dev/api/v3解决方法在新源中添加地址:https://www.nuget.org/api/v2/......
  • 免费的PNG素材资源网站推荐
    很多设计小白都不知道什么是PNG。事实上,PNG是一种支持透明度的图像格式。当你想在设计中将图像与背景或文本混合时,它就会派上用场。如果你没有时间为你正在处理的设计创建透明的PNG图像,你也可以使用我收集的PNG素材网站,以便每次需要透明的PNG图像时都可以参考。1.即时设计即时......
  • pnpm 是凭什么对 npm 和 yarn 降维打击的
    大家最近是不是经常听到pnpm,我也一样。今天研究了一下它的机制,确实厉害,对yarn和npm可以说是降维打击。那具体好在哪里呢?我们一起来看一下。那具体好在哪里呢?我们一起来看一下。我们按照包管理工具的发展历史,从npm2开始讲起:npm2用node版本管理工具把node版本降......
  • Verilog-1995,2001,2005差异
    1、Verilog不同版本的差异下图是Verilog各个阶段的关键字列表:2、Verilog-1995VSVerilog-20011、模块声明的扩展(1)       Verilog‐2001允许将端口声明和数据类型声明放在同一条语句中,例子如下: (2)Verilog‐2001中增加了ANSIC风格的输入输出端口声明,可以用于module,t......
  • 新一代包管理工具 pnpm 使用心得
    最近将几个项目的包管理器都由npm切换为了pnpm,迁移体验非常棒,算得上是个人体验最好的一次工具迁移。以下是使用pnpm的直观感受:体验优良,依赖安装速度极快,占用磁盘空间小。上手简单,绝大部分npm/yarn项目可以低成本完成迁移,官方也有较详尽的中文文档。pnpm组织no......
  • m基于FPGA的16QAM软解调verilog实现,含testbench
    1.算法仿真效果 本系统进行了两个平台的开发,分别是: Vivado2019.2 Quartusii18.0+ModelSim-Altera6.6d StarterEdition 其中Vivado2019.2仿真结果如下:     Quartusii18.0+ModelSim-Altera6.6d StarterEdition的测试结果如下:   2.算法涉及......
  • npm、pnpm、yarn 清理缓存,更改缓存目录
     //清理缓存$yarncacheclean$npmcacheclean-f$pnpmstoreprune//设置新的缓存地址$npmconfigsetglobal-folder"E:/npm/global"$pnpmconfigsetglobal-folder"E:/yarn/global"$pnpmconfigset"E:/pnpm/global"......
  • AspnetCore接入Nacos配置中心
    一、什么是nacosNacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服......
  • verilog时序单元分频器
    分频电路2.2.1简单的计数器计数器实质是对输入的驱动时钟进行计数,所以计数器在某种意义上讲,等同于对时钟进行分频。例如一个最大计数长度为N=2^M(从0计数到N-1)的计数器,也就是寄存器位数为M,那么寄存器最高位的输出为N=2^M分频,次高位为N/2分频...例如下面的代码:moduletest#(......