名称:基于FPGA的QPSK调制解调Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

基于FPGA的QPSK调制解调

1、实现QPSK调制解调功能

2、包含调制模块、解调模块、sin,cos载波模块

3、使用m序列发生器产生调制信号

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

6.1 整体仿真图

6.2 调制模块仿真图

6.3 载波模块仿真图

6.4 解调模块仿真图

部分代码展示:

//QPSK解调模块

module QPSK_demodu(

    input clk,

    input rst,

 input [7:0] qout,//调制波

 input [7:0] cos_wave,//本地载波

 input [7:0] sin_wave,//本地载波 

    output [1:0] data//解调输出

);

wire [16:0] cos_mul;

wire [16:0] sin_mul;

assign cos_mul=cos_wave*qout;//调制波形与本地载波相乘

assign sin_mul=sin_wave*qout;//调制波形与本地载波相乘

reg [5:0]filter_cos_cnt=0;//32

reg [5:0]filter_sin_cnt=0;//32

reg demodulate_a=0;

reg demodulate_b=0;

//采用计数器滤波,检测到cos_mul[15] =1 后计数到25

always @(posedge clk)

  begin

    if(rst)

filter_cos_cnt<=6'd0;

 else

 if(cos_mul[15]==1) 

filter_cos_cnt<=6'd1;

    else 

   if(filter_cos_cnt==6'd0)

filter_cos_cnt<=6'd0;

else

if(filter_cos_cnt>=6'd25)

filter_cos_cnt<=6'd0;

else 

filter_cos_cnt<=filter_cos_cnt+6'd1;

  end

always @(posedge clk)

begin

  if(filter_cos_cnt==6'd0)

demodulate_a<=0;//滤波输出解调的a路信号

  else

      demodulate_a<=1;//滤波输出解调的a路信号

end

//采用计数器滤波,检测到cos_mul[15] =1 后计数到25

always @(posedge clk)

  begin

    if(rst)

filter_sin_cnt<=6'd0;

 else

 if(sin_mul[15]==1) 

filter_sin_cnt<=6'd1;

    else 

   if(filter_sin_cnt==6'd0)

filter_sin_cnt<=6'd0;

else

if(filter_sin_cnt>=6'd25)

filter_sin_cnt<=6'd0;

else 

filter_sin_cnt<=filter_sin_cnt+6'd1;

  end

always @(posedge clk)

begin

  if(filter_sin_cnt==6'd0)

demodulate_b<=0;//滤波输出解调的b路信号

  else

      demodulate_b<=1;//滤波输出解调的b路信号

end

//

reg [7:0] cnt=8'd0;

always @(posedge clk)

  begin

    cnt<=cnt+1;

  end  

reg a_buf=0;

reg b_buf=0;

reg a_buf2=0;

reg b_buf2=0;

wire D_a,D_b;

always@(posedge clk)

if(cnt==8'd1) begin

a_buf<=demodulate_a;

b_buf<=demodulate_b;

end

assign D_a=a_buf;

assign D_b=b_buf;

wire [1:0]data_buf;

assign data_buf={D_a,D_b};

assign data=data_buf;

endmodule

源代码

 扫描文章末尾的公众号二维码

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: