My title page contents

16QAM调制信号生成设计Verilog代码Quartus仿真

名称:16QAM调制信号生成设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

16QAM调制信号生成

1、对输入的4bit信号进行16QAM调制

2、包含正弦波、余弦波产生模块

3、包含有符号乘法器、加法器模块

4、实现编码映射


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


演示视频:

设计文档:

仿真文档.doc

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调制波形



部分代码展示:

//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

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 16QAM调制信号生成设计Verilog代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员