基于FPGA的2ASK调制仿真

2ASK调制技术总的来说很简单,先产生二进制基带信号,产生一个载波信号,利用一个2选1开关电路进行输出。比如为1输出载波,为0则置0。

按照这样的思想,我们可以得出2FSK、2PSK的调制。对于2FSK,要产生两个不同频率的载波信号,最后为1输出一个,为0输出另外一个。2PSK则只用产生一个,为1,输出,为0取反输出。

下面介绍2ASK整体模块的实现,最后文末给出整个示例工程。至于2FSK、2PSK,大家应该能举一反三,轻松完成。

我们先来确定一些参数。比如说我这里选取系统时钟为50M,经过50分频后为1M,利用分频后的时钟来产生基带信号,那么码元速率就为1M。至于载波信号,我这里选取4M。这些参数大家可以按照实际情况来改。

时钟分频模块

module clk_div(
 input clk, 
 output reg clk_out
);
reg [13:0] cnt;
parameter N = 50;
always @(posedge clk)
begin
 if(cnt == N/2 - 1)begin
  cnt <= 14'b0;
  clk_out <= ~clk_out;
 end
 else 
  cnt <= cnt + 1'b1;
end
endmodule

二进制序列生成模块

module MXL(
 input clk,
 output reg out
);
reg[4:0]tmp = 5'b0;
always @(posedge clk)
begin
 if(tmp > 5'd31)
  tmp <= 5'd0;
 else
  tmp <= tmp + 1'b1;
 case(tmp)
  5'd0: out <= 0;
  5'd1: out <= 0;
  5'd2: out <= 1;
  5'd3: out <= 1;
  5'd4: out <= 1;
  5'd5: out <= 1;
  5'd6: out <= 0;
  5'd7: out <= 0;
  5'd8: out <= 0;
  5'd9: out <= 0;
  5'd10: out <= 1;
  5'd11: out <= 1;
  5'd12: out <= 1;
  5'd13: out <= 1;
  5'd14: out <= 0;
  5'd15: out <= 0;
  5'd16: out <= 1;
  5'd17: out <= 0;
  5'd18: out <= 1;
  5'd19: out <= 0;
  5'd20: out <= 1;
  5'd21: out <= 1;
  5'd22: out <= 0;
  5'd23: out <= 1;
  5'd24: out <= 1;
  5'd25: out <= 0;
  5'd26: out <= 1;
  5'd27: out <= 1;
  5'd28: out <= 1;
  5'd29: out <= 1;
  5'd30: out <= 0;
  5'd31: out <= 0;
 endcase
end
endmodule

NCO模块(生成载波信号)
该模块基于查表法,sin_table提供。
频率计算方法,这里我们选取16位cnt,时钟为50M,那么频率为50M*5243/2^16=4M
可以通过改变cnt,利用上述计算方式,生成任意频率信号。

module nco(
 input clk,
 output reg [7:0]sin
);
reg [15:0]cnt;
wire [7:0]sin_table_out;
initial cnt <= 0;
always @(posedge clk)
begin
 cnt <= cnt + 16'd5243;
 sin <= sin_table_out;
end
sin_table INS_SINTABLE(cnt[15:7],sin_table_out);
endmodule

2选1开关电路

module choose(
 input [7:0]data_in,
 input sel,
 output [7:0]data_out
);
reg[7:0]daout;
always @(sel)
begin
 if(sel)
  daout <= data_in;
 else 
  daout <= 8'd0;
end
assign data_out = daout;
endmodule

最后附上用Signal Tap仿真出来的图
在这里插入图片描述

哈哈,一个简单的2ASK调制仿真就出来了。如果感兴趣的话就按照我开头所讲的方法,把2FSK和2PSK实现一下吧。

最后附上整个示例工程文件
链接:https://pan.baidu.com/s/17YGL-9Stcr_uSsyEiJg0SQ
提取码:ahqz

参考资料
https://blog.csdn.net/VCA821/article/details/80768078

  • 17
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值