• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的16QAM调制Verilog代码Quartus仿真

07/09 08:05
506
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24012510340U57.doc

共1个文件

名称:基于FPGA的16QAM调制Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

16QAM调制过程可以简化为下图,I路Q路分别乘以cos和sin,再相加即得到调制信号

包含正余弦产生模块、有符号乘法器模块、有符号加法器模块以及编码映射。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 整体仿真

16QAM调制过程可以简化为下图,I路Q路分别乘以cos和sin,再相加即得到调制信号。

7. DDS模块仿真,用于产生sin和cos

地址sin_address累加,cos_address累加,依次读取ROM里面所存的sin和cos值。输出波形如上图所示。

8. 相乘模块仿真

Dataa信号和datab信号相乘得到result信号。可以看到result的幅值包络与datab有关。

9. 相加模块仿真

相加模块将dataa得值和datab得值相加,得到result得值。result得值即为16QAM调制波形

部分代码展示:

module qam(clk, DataIn, DataOut);
   input         clk;//时钟
   input [3:0]   DataIn;//输入码
   output [12:0] DataOut;//输出16QAM信号
   wire [9:0]    sin_data;
   wire [9:0]    cos_data;
   reg [2:0]     MULT0_data;
   reg [2:0]     MULT1_data;
   wire [12:0]   MULT0_result;
   wire [12:0]   MULT1_result;
   
   //DDS 产生正弦和余弦
   DDS u0(.clk(clk), .sin_data(sin_data), .cos_data(cos_data));
   
//有符号触乘法器
   MULT u1(.dataa(sin_data), .datab(MULT0_data), .result(MULT0_result));
   
//有符号触乘法器
   MULT u2(.dataa(cos_data), .datab(MULT1_data), .result(MULT1_result));
   
//有符号加法器
   add u3(.dataa(MULT0_result), .datab(MULT1_result), .result(DataOut));
   
   //编码映射
   always @(DataIn)
      case (DataIn)
         4'b0000 :
            begin
               MULT0_data <= 3'b011;
               MULT1_data <= 3'b011;
            end
         4'b0001 :
            begin
               MULT0_data <= 3'b001;
               MULT1_data <= 3'b011;
            end
         4'b0011 :
            begin
               MULT0_data <= 3'b111;
               MULT1_data <= 3'b011;
            end
         4'b0010 :
            begin
               MULT0_data <= 3'b101;
               MULT1_data <= 3'b011;
            end
         4'b0110 :
            begin
               MULT0_data <= 3'b101;
               MULT1_data <= 3'b001;
            end
         4'b0111 :
            begin
               MULT0_data <= 3'b111;
               MULT1_data <= 3'b001;
            end
         4'b0101 :
            begin
               MULT0_data <= 3'b001;
               MULT1_data <= 3'b001;
            end
         4'b0100 :
            begin
               MULT0_data <= 3'b011;
               MULT1_data <= 3'b001;
            end
         4'b1100 :
            begin
               MULT0_data <= 3'b011;
               MULT1_data <= 3'b111;
            end
         4'b1101 :
            begin
               MULT0_data <= 3'b011;
               MULT1_data <= 3'b111;
            end
         4'b1111 :
            begin
               MULT0_data <= 3'b111;
               MULT1_data <= 3'b111;
            end
         4'b1110 :
            begin
               MULT0_data <= 3'b101;
               MULT1_data <= 3'b111;
            end
         4'b1010 :
            begin
               MULT0_data <= 3'b101;
               MULT1_data <= 3'b101;
            end

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=614

  • 2-24012510340U57.doc
    下载

相关推荐