天天看點

基于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仿真出來的圖

基于FPGA的2ASK調制仿真

哈哈,一個簡單的2ASK調制仿真就出來了。如果感興趣的話就按照我開頭所講的方法,把2FSK和2PSK實作一下吧。

最後附上整個示例工程檔案

連結:https://pan.baidu.com/s/17YGL-9Stcr_uSsyEiJg0SQ

提取碼:ahqz

參考資料

https://blog.csdn.net/VCA821/article/details/80768078