当前位置:   article > 正文

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真③(信号调制仿真)_fsk解调 verilog

fsk解调 verilog

Verilog编写2FSK第③步信号的调制

上一篇编写了2FSK调制信号的程序,本节编写信号调制的子程序

  • 2FSK二进制频移键控,FSK 是用不同频率的载波来传递数字消息的。
  • 例如:f1=sin2πw f2=sin4πw 传输f1时代表’0’传输f2时是’1’
module modulation(clk,DDSin,DA_Data,DA_Data2,DDS_out);//定义模块和端口
input clk;//输入的时钟
input DDSin;//需要调制的信号
input wire [10:0]DA_Data;//输入的载波=‘0’
input wire [10:0]DA_Data2;//输入的载波=‘1’
output wire[10:0]DDS_out;//输出的调制完成的信号
reg [10:0]canshu;//模块定义内部寄存器
always @(posedge clk)//每当时钟上升沿时触发
begin
if(DDSin==0)//如果输入的基带信号为0则输出位载波1
canshu<=DA_Data;
else //如果输入的基带信号为1则输出位载波2
canshu<=DA_Data2;
end
assign DDS_out=canshu;//
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 子模块编写完成后编写顶层文件
module DDS_top(
input clk,
output wire [10:0]DA_Data,
output wire [10:0]DA_Data2,
output wire [10:0]DDS_out,
input canshu
);
DDS DDS(//例化上节的载波生成的模块
.clk(clk),
.DA_Data(DA_Data),
.DA_Data2(DA_Data2)
);

modulation modulation(
.clk(clk),
.DDSin(canshu),
.DA_Data(DA_Data),
.DA_Data2(DA_Data2),
.DDS_out(DDS_out)
);
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 最后编写tb仿真文件
`timescale  1ms/1ms
module DDS_tb;//因为是仿真文件不用进行端口设置,该文件里的参数都会在wave中显示
wire [10:0]DA_Data;
wire [10:0]DA_Data2;
wire [10:0]DDS_out;
reg clk;
reg canshu=0;
DDS_top DDS_top(
.clk(clk),
.DA_Data(DA_Data),
.DA_Data2(DA_Data2),
.DDS_out(DDS_out),
.canshu(canshu)
);
initial clk=1;
always #5 clk=~clk;
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真①( MATLAB生成.mif文件)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/583870
推荐阅读
相关标签
  

闽ICP备14008679号