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

【硬件测试】基于FPGA的2FSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR

目录

1.算法仿真效果

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

2.1 FSK调制解调

2.2 帧同步

3.Verilog核心程序

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


1.算法仿真效果

本文是之前写的文章

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

的硬件测试版本。

在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。

硬件ila测试结果如下:(完整代码运行后无水印)

vio设置SNR=15db

vio设置SNR=10db

局部放大看FSK调制解调过程

硬件测试操作步骤可参考程序配套的操作视频。

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

       频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了较为广泛的应用。

2.1 FSK调制解调

      在二进制频移键控中,幅度恒定不变的载波信号的频率随着输入码流的变化而切换(称为高音和低音,代表二进制的1 和0)。产生FSK 信号最简单的方法是根据输入的数据比特是0还是1,在两个独立的振荡器中切换。采用这种方法产生的波形在切换的时刻相位是不连续的,因此这种FSK 信号称为不连续FSK 信号。

       由于相位的不连续会造频谱扩展,这种FSK 的调制方式在传统的通信设备中采用较多。随着数字处理技术的不断发展,越来越多地采用连继相位FSK调制技术。目前较常用产生FSK 信号的方法是,首先产生FSK 基带信号,利用基带信号对单一载波振荡器进行频率调制。相位连续的FSK信号的功率谱密度函数最终按照频率偏移的负四次幂衰落。如果相位不连续,功率谱密度函数按照频率偏移的负二次幂衰落。

2-FSK功率谱密度的特点如下:

(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;

(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。

       PSK:在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。在二进制频移键控(2FSK)中,当传送“1”码时对应于载波频率,传送“0”码时对应于载波频率。2FSK信号波形可看作两个2ASK信号波形的合成,下图是相位连续的2FSK信号波形。

        FSK信号的解调也有非相干和相干两种,FSK信号可以看作是用两个频率源交替传输得到的,所以FSK的接收机由两个并联的ASK接收机组成。 

       FSK:频移键控是利用两个不同频率f1和f2的振荡源来代表信号1和0,用数字信号的1和0去控制两个独立的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,所以二进制频移键控的信号带宽B较大,频带利用率小。

       FSK功率谱密度的特点如下:

(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;

(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。

2.2 帧同步

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

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

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

本地同步码的生成

相关运算

判决与同步确定

3.Verilog核心程序

............................................................ 

wire [1:0]o_msg;

//产生模拟测试数据
signal signal_u(
.i_clk (i_clk),
.i_rst (~i_rst),
.o_bits(o_msg)
);




//设置SNR
wire signed[7:0]o_SNR;
vio_0 your_instance_name (
  .clk(i_clk),                // input wire clk
  .probe_out0(o_SNR)  // output wire [7 : 0] probe_out0
);

wire signed[15:0]o_carrier1;
wire signed[15:0]o_carrier2;
wire signed[15:0]o_fsk;
wire signed[15:0]o_fskn;
wire signed[31:0]o_de_ffsk1;
wire signed o_bits;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num; 
wire  [1:0]o_rec2; 
wire [1:0]o_bits_data;
wire [1:0]o_bits_head;
wire [7:0]o_peak;
wire  o_en_data;
wire  o_en_pn;
wire  o_frame_start;
//FSK调制解调系统    
FSK uut(
.i_clk(i_clk),
.i_rst(~i_rst),
.i_bits(o_msg),
.i_SNR(o_SNR),
.o_carrier1(o_carrier1),
.o_carrier2(o_carrier2),
.o_fsk(o_fsk),
.o_fskn(o_fskn),
.o_de_ffsk1(o_de_ffsk1),
.o_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),
.o_error_num     (o_error_num),
.o_total_num     (o_total_num),
.o_rec2          (o_rec2)
);

 


wire signed[15:0]w_de_ffsk1=o_de_ffsk1[25:10];
wire errflag = o_bits^{~o_rec2[1]};


//ila篇内测试分析模块
ila_0 ila_u (
	.clk(i_clk), // input wire clk
	.probe0({ 
	        o_msg,o_SNR,//9
 
	        o_bits_data,o_bits_head,o_peak,o_en_data,o_en_pn,//6
	        o_fsk, o_fskn,w_de_ffsk1,//48
	        o_error_num[19:0],o_total_num[23:0]//44

	         })
	);	 
endmodule
0sj_048m

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

V


http://www.kler.cn/a/466514.html

相关文章:

  • 【数据结构05】排序
  • 在Mac电脑上搭建Gradle
  • 云打印之菜鸟打印组件交互协议
  • win32汇编环境,在窗口程序中画简单图形
  • 使用 C++ 和函数式编程构建高效的 AI 模型
  • [Qt] 输入控件 | Line | Text | Combo | Spin | Date | Dial | Slider
  • 阻抗(Impedance)、容抗(Capacitive Reactance)、感抗(Inductive Reactance)
  • 【Docker】:Docker容器使用
  • 野火直播 5.9.5 | 频道丰富的电视直播软件,支持港澳台频道和快速换台
  • 【深度学习】Java DL4J基于 LSTM 构建新能源预测模型
  • vue学习第一阶段
  • MacBook_Xcode_Swift雨燕
  • 深度学习中的离群值
  • 27、使用StreamPark管理Flink作业中,关于对Flink客户端的conf进行占位符替换的修改
  • 将数组转换为laravel中的对象
  • ts中 type 和 interface 定义类型有什么区别?
  • 【Unity】【图形渲染】Unity Shader基础操作3:内置文件与包含文件的使用
  • 实时数仓与离线数仓的全面对比
  • 上升沿下降沿递增
  • 高等数学学习笔记 ☞ 函数的极限
  • 微信小程序滑动解锁、滑动验证
  • git 退出编辑模式
  • AI对嵌入式开发行业的影响
  • 家政上门小程序如何创建?家政服务怎么能少了小程序帮手
  • Unity 对Sprite或者UI使用模板测试扣洞
  • 安装并配置Ubuntu22.04桌面