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

简介: m基于UW序列的数据帧检测,帧同步verilog实现,含testbench

1.算法仿真效果

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

de8e760baa0c97bbf913886ba354bccf_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
ca11ead13d98ea5f356a1c0b475b1a87_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
UW序列是一种特殊类型的伪随机二进制序列,通常用于数据帧检测和帧同步。UW序列具有以下特性:

平衡性:UW序列中的1和0的数量大致相等,确保序列具有良好的自相关性。
低互相关:不同UW序列之间的互相关性非常低,减少误检测的可能性。
长周期:UW序列的周期非常长,保证在数据传输过程中不会重复。
在数据帧检测中,发送端会将数据帧的头部与UW序列进行异或操作,接收端通过检测UW序列的出现来识别数据帧的起始位置和帧同步。

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

接收数据流并与UW序列进行互相关运算,得到互相关结果R。
将R与阈值进行比较,如果超过阈值,则认为找到了帧同步。

1 发送端实现
在发送端,首先确定数据帧的格式,包括头部、数据和尾部的长度。然后,选择一个合适的UW序列,并将数据帧的头部依次与UW序列进行异或操作。将得到的带有UW序列的头部发送给接收端。

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

选择UW序列:在接收端选择与发送端使用的UW序列相同的UW序列。

互相关运算:将接收到的数据流与选定的UW序列进行互相关运算,得到互相关结果R。

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

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

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 [11:0] o_Q_dw;
wire[14:0] o_peak;

wire o_syn;
wire frame_data_en;
wire [11:0] frame_data;
// Instantiate the Unit Under Test (UUT)
UW_1_sycn uut (
.i_clk (i_clk),
.i_rst (i_rst),
.o_I_dw (o_I_dw),
.o_Q_dw (o_Q_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
```

相关文章
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
|
消息中间件 SQL JSON
阿里云物联网平台 “物模型属性” 的分析&&易错点&&上报属性时Payload如何正确组装?
您是否在纠结设备上报了数据,平台到底有没有收到? 您是否很疑惑物模型属性怎么老是不刷新? 您是否不理解物模型属性下发总是不生效? 您是否不知道上报属性时Payload到底该怎么填? 您是否很纳闷物模型属性一会又携带有时间戳,一会又没有? 您是否怀疑能不能自定义物模型属性的时间戳?又如何取到自定义时间戳? 您是否...
8747 3
阿里云物联网平台 “物模型属性” 的分析&&易错点&&上报属性时Payload如何正确组装?
信道建模流程 | 带你读《大规模天线波束赋形技术原理与设计 》之二十八
本节将详细介绍衰落信道的整体建模流程,内容上与 3D 信道模 型 3GPP TR36.873 7.3 节和 3GPP TR38.901 的 7.5 节对应。两者在内容上大体相同,前者的目标为6GHz以下的信道建模(记为模型1),后者为0.5~100GHz 的信道建模(记为模型 2)。对于 6GHz 以下的信道建模,两者均可以使用, 在下文的描述中,两者不同的地方均会列出。
信道建模流程  | 带你读《大规模天线波束赋形技术原理与设计 》之二十八
|
8月前
|
计算机视觉
YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
847 4
|
12月前
|
网络协议 安全 网络架构
NAT穿透技术、穿透原理和方法
【10月更文挑战第19天】 NAT穿透技术、穿透原理和方法
890 7
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
355 2
基于IEEE802.11g标准的OFDM信号帧检测matlab仿真
此项目旨在应对无线信号识别挑战,利用MATLAB/Simulink开发IEEE 802.11g OFDM信号识别算法。通过对标准的深入研究,设计并计算PLCP前导码数据,采用信号相关性进行信号鉴定。项目构建了完整的发射机模型,在AWGN信道下评估性能。通过生成特定的短训和长训序列,实现帧头检测,并模拟真实信号传输。测试使用MATLAB 2022a版本,展示了信号生成与识别的关键步骤及结果。
|
SQL 存储 Oracle
常用数据库优缺点比较
【7月更文挑战第23天】常用数据库优缺点比较
1193 11
带你读《5G大规模天线增强技术》——2.4.6 大尺度参数计算
带你读《5G大规模天线增强技术》——2.4.6 大尺度参数计算
构建直接序列扩频系统模型(Matlab代码实现)
构建直接序列扩频系统模型(Matlab代码实现)
695 0