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

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

时间:2023-07-30 14:03:55浏览次数:29  
标签:同步 接收端 数据 verilog testbench 序列 PNB PN

1.算法仿真效果

 

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

 

 

 

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

       基于双PN序列的数据帧检测和帧同步是一种在通信系统中常用的技术,用于确保接收端正确地识别和解析传输的数据帧。在本文中,我将详细介绍基于双PN序列的数据帧检测的数学原理和实现过程,并探讨其在FPGA(现场可编程门阵列)中的应用领域。

1.1 双PN序列

      双PN序列是由两个伪随机序列组成的序列,通常记为PNA和PNB。这两个序列具有以下特性:

 

长度相同:PNA和PNB的长度相等,通常用N表示。

互相关性:PNA和PNB之间的互相关性非常低,几乎为零。

自相关性:PNA和PNB各自的自相关性非常高,接近于1。

在接收端,我们会使用这两个双PN序列来检测数据帧的起始位置和帧同步。

 

1.2 数据帧检测原理

       数据帧通常由头部(header)、数据(payload)和尾部(tail)组成。在发送端,数据帧首先与一个唯一的PN序列进行异或操作,然后再与另一个PN序列进行异或操作,形成双PN序列。接收端会通过以下过程来检测数据帧的起始位置和帧同步:

 

接收数据流并与PNA进行互相关运算,得到互相关结果R1。

接收数据流并与PNB进行互相关运算,得到互相关结果R2。

将R1和R2分别与阈值进行比较,如果超过阈值,则认为找到了帧同步。

第2部分:实现过程

2.1 发送端实现

       在发送端,首先确定数据帧的格式,包括头部、数据和尾部的长度。然后,选择两个合适的PN序列PNA和PNB,并将数据帧的头部、数据和尾部依次与这两个序列进行异或操作。将得到的双PN序列发送给接收端。

 

2.2 接收端实现

在接收端的FPGA中,实现帧检测和帧同步需要进行以下步骤:

 

选择PN序列:在接收端选择与发送端使用的PNA和PNB相同的PN序列。

 

互相关运算:将接收到的数据流与选定的PNA和PNB进行互相关运算,得到两个互相关结果R1和R2。

 

阈值判定:将R1和R2与预先设定的阈值进行比较。阈值的选取要基于信噪比和系统性能考虑,通常通过实验来确定。

 

帧同步:当R1和R2均超过阈值时,表示找到了帧同步,接下来可以开始解析数据帧。

       基于双PN序列的数据帧检测和帧同步在许多通信系统中都有广泛的应用,尤其是在接收端解析复杂的数据帧时。以下是一些应用领域的例子:

 

       无线通信系统:在无线通信中,数据帧检测和帧同步是接收端解析传输数据的关键步骤。通过使用双PN序列,可以实现高效可靠的帧同步,提高通信系统的性能。

 

       卫星通信:在卫星通信系统中,由于信号可能受到淡化、多径干扰等问题,帧同步对于正确接收数据非常重要。基于双PN序列的帧同步可以提高抗干扰能力。

 

       5G和物联网:随着5G和物联网的发展,数据帧通常具有复杂的格式和高速传输要求。基于双PN序列的帧同步在这些应用中可以有效地检测和同步数据帧。

 

       视频和音频传输:在视频和音频传输中,数据通常以帧的形式进行传输。帧同步是实现流畅播放和高质量传输的关键技术。

 

3.Verilog核心程序

 

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/07/24 21:40:51
// Design Name: 
// Module Name: TEST
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
 
 
module TEST();
 
 
	// Inputs
	reg i_clk;
	reg i_rst;
 
	// Outputs
	wire [11:0] o_I_dw;
    wire[15:0] o_peak;
    
 
wire             o_syn;
wire      frame_data_en;
wire [11:0] frame_data;
	// Instantiate the Unit Under Test (UUT)
	PN_1_sycn uut (
		.i_clk       (i_clk), 
		.i_rst       (i_rst), 
		.o_I_dw      (o_I_dw), 
		.o_peak      (o_peak),
        .o_syn       (o_syn),
        .frame_data_en(frame_data_en),
        .frame_data   (frame_data)
	);
 
	initial begin
		// Initialize Inputs
		i_clk = 1;
		i_rst = 1;
 
		// Wait 100 ns for global reset to finish
		#100 
      i_rst = 0;  
		// Add stimulus here
 
	end
     
	  
   always #5 i_clk=~i_clk;
 
 
endmodule

 

  

 

标签:同步,接收端,数据,verilog,testbench,序列,PNB,PN
From: https://www.cnblogs.com/51matlab/p/17591346.html

相关文章

  • m基于UW序列的数据帧检测,帧同步verilog实现,含testbench
    1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,仿真结果如下所示:   2.算法涉及理论知识概要      UW序列是一种特殊类型的伪随机二进制序列,通常用于数据帧检测和帧同步。UW序列具有以下特性: 平衡性:UW序列中的1和0的数量大致相等,确保序列具有良好的自相......
  • docker aspnetcore学习笔记
    在终端窗口cmd:  示例应用程序对于示例应用程序,让我们使用.NET从模板创建一个简单的应用程序。在本地计算机中创建一个名为的目录。打开终端并切换到该目录。运行以下命令,使用ASP.NET核心Web应用模板创建C#应用。$mkdirdotnet-docker$cddotnet-docker$dotne......
  • m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:2.算法涉及理论知识概要傅里叶变换(FourierTransform)是一种重要的信号处理技术,用于将一个时域信号转换为频域表示,分析信号的频率成分。FFT(FastFourierTransform)是一种高效的傅里叶变换算法,可以......
  • m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
    1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:      2.算法涉及理论知识概要       傅里叶变换(FourierTransform)是一种重要的信号处理技术,用于将一个时域信号转换为频域表示,分析信号的频率成分。FFT(FastFourierT......
  • m基于PN序列的数据帧检测,帧同步verilog实现,含testbench
    1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:     2.算法涉及理论知识概要         在数据通信系统中,数据帧检测与帧同步是一项重要的任务,用于确定数据传输中数据帧的起始位置和边界,以正确解析数据。基于PN(Pseudo-......
  • 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......