1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Zp2blZZy
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
在二进制频移键控中,幅度恒定不变的载波信号的频率随着输入码流的变化而切换(称为高音和低音,代表二进制的1 和0)。产生FSK 信号最简单的方法是根据输入的数据比特是0还是1,在两个独立的振荡器中切换。采用这种方法产生的波形在切换的时刻相位是不连续的,因此这种FSK 信号称为不连续FSK 信号。由于相位的不连续会造频谱扩展,这种FSK 的调制方式在传统的通信设备中采用较多。随着数字处理技术的不断发展,越来越多地采用连继相位FSK调制技术。目前较常用产生FSK 信号的方法是,首先产生FSK 基带信号,利用基带信号对单一载波振荡器进行频率调制。相位连续的FSK信号的功率谱密度函数最终按照频率偏移的负四次幂衰落。如果相位不连续,功率谱密度函数按照频率偏移的负二次幂衰落。
4.部分源码
............................................................................
wire 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;
//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_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_fsk, o_fskn,w_de_ffsk1,o_bits,//50
o_error_num,o_total_num,errflag,//64
o_rec2
})
);
endmodule
0sj_025m
---