基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录

1.算法仿真效果

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

[2.1 2ASK调制解调](#2.1 2ASK调制解调)

[2.2 帧同步](#2.2 帧同步)

3.Verilog核心程序

4.完整算法代码文件获得


1.算法仿真效果

vivado2019.2仿真结果如下**(完整代码运行后无水印)**:

设置SNR=8db

设置SNR=20db

整体波形效果:

仿真操作步骤可参考程序配套的操作视频。

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

2.12ASK调制解调

2ASK调制解调是一种数字调制解调技术,它是基于ASK调制的一种数字调制方式。ASK调制是一种模拟调制方式,它是通过改变载波的振幅来传输数字信号。而2ASK调制解调则是将数字信号转换为二进制码,再通过改变载波的振幅来传输数字信号。 2ASK调制的原理是将数字信号转换为二进制码,然后将二进制码与载波信号相乘,得到调制信号。在解调时,将接收到的信号与载波信号相乘,再通过低通滤波器滤波,得到原始的数字信号。

2ASK是一种数字调制方式,其中"2"代表二进制,即调制信号只有两个幅度水平。在2ASK调制中,数字基带信号控制载波的幅度。当发送二进制"1"时,发送全幅度载波;当发送二进制"0"时,不发送信号,即无载波输出。因此,2ASK信号可以看作是基带脉冲序列与一个全幅度正弦波的乘积。2ASK的调制解调系统结构如下图所示:

假设我们的输入二进制序列为an,那么2ASK的调制过程可以用以下数学公式表示:

e2ASK(t) = Σan g(t - nTs) cos(ωct)

其中,g(t)是基带脉冲形状,Ts是基带脉冲间隔,ωc是载波的角频率。解调过程则是对接收到的信号进行包络检波,恢复出原始的二进制序列。

2.2帧同步

在数字通信中,信息通常是以帧为单位进行组织和传输的。帧同步的目的是确定每一帧的起始位置,以便接收端能够正确地解调出每帧中的数据。

设发送的帧结构为:帧同步码 + 信息码元序列 。帧同步码是具有特定规律的码序列,用于接收端识别帧的起始。

帧同步的过程就是在接收序列中寻找与帧同步码匹配的位置,一旦找到匹配位置,就确定了帧的起始位置,后续的码元就可以按照帧结构进行正确的划分和处理。

本地同步码的生成

相关运算

判决与同步确定

3.Verilog核心程序

复制代码
`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/10/18 19:57:39
// Design Name: 
// Module Name: FSK_demod
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
.......................................................  
wire signed[15:0]o_cosr1;
wire[31:0]m_axis_data_tdatar1;
dds_compiler_0 dds_compiler_u5(
  .aclk    (i_clk),                                  // input wire aclk
  .aresetn (~i_rst),                            // input wire aresetn
  .s_axis_config_tvalid(1'b1),  // input wire s_axis_config_tvalid
  .s_axis_config_tdata(32'h03ff_ffff),    // input wire [31 : 0] s_axis_config_tdata
  .m_axis_data_tvalid(),      // output wire m_axis_data_tvalid
  .m_axis_data_tdata(m_axis_data_tdatar1),        // output wire [31 : 0] m_axis_data_tdata
  .m_axis_phase_tvalid(),    // output wire m_axis_phase_tvalid
  .m_axis_phase_tdata()      // output wire [31 : 0] m_axis_phase_tdata
);
assign o_cosr1=m_axis_data_tdatar1[15:0];   
    
 

always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
     begin
     o_de_2ask <= 32'd0;
     end
else begin
     o_de_2ask <= $signed(i_2ask)*$signed(o_cosr1);
     end
end 
    
fiter1 fiterU1(
.i_clk  (i_clk),
.i_rst  (i_rst),
.i_din  (o_de_2ask[24:9]),
.o_dout (o_de_2askf)
);
   
   
................................................


//帧同步,提取数据,去帧头
frame_syn frame_syn_u(
.i_clk         (dat_clk),
.i_rst         (i_rst),
.i_bits        (o_bits),
.o_bits_data   (o_bits_data),
.o_bits_head   (o_bits_head),
.o_peak        (o_peak),
.o_en_data     (o_en_data),
.o_en_pn       (o_en_pn),
.o_frame_start (o_frame_start)
);


endmodule
0sj_047m

4.完整算法代码文件获得

V

相关推荐
9527华安1 小时前
国产安路FPGA开发设计培训课程,提供开发板+工程源码+视频教程+技术支持
fpga开发·fpga·安路·视频教程·培训·安路fpga
UVM_ERROR8 小时前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined8 小时前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
步达硬件1 天前
【FPGA】FPGA开发流程
fpga开发
我爱C编程1 天前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s09071362 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
燎原星火*2 天前
QSPI IP核 基本参数
fpga开发
XINVRY-FPGA2 天前
XCVU9P-2FLGC2104I Xilinx AMD Virtex UltraScale+ FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
FPGA_小田老师2 天前
FPGA Debug:PCIE一直自动重启(link up一直高低切换)
fpga开发·pcie debug·pcie初始化问题
hexiaoyan8272 天前
视频信号检测板卡:208-Base Camera Link 图像信号模拟器
fpga开发·图像信号模拟器·视频信号检测·视频信号分析·智能图像分析