ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QAM调制---Verilog代码

2020-06-06 18:01:28  阅读:441  来源: 互联网

标签:DM Name 调制 wire Verilog input QAM output reg


QAM调制---Verilog代码

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2020/05/28 11:41:08
// Design Name: 
// Module Name: DATA_16QAM_mapper
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


//原书提供的代码是有问题的!!!


module DATA_16QAM_mapper(

    input               wire                   DM_CLK,
    input               wire                   DM_RST,
    input               wire                   DM_DIN,
    input               wire                   DM_ND,
    output              reg       [7:0]        DM_RE,
    output              reg       [7:0]        DM_IM,
    output              reg       [5:0]        DM_INDEX,
    output              reg                    DM_RDY

    );

//----------------------------------------------------------------------

reg[3:0] STOR;
reg[1:0] counter;
reg      MAPEN;
reg      OUTEN;
reg[7:0] RE_TEMP;    
reg[7:0] IM_TEMP;
reg[5:0] DM_COUNT;
reg      OUTEN;
reg[1:0] OUT_COUNT;


always @(negedge DM_RST or posedge DM_CLK)
begin
    if(!DM_RST)
    begin
        MAPEN<=1'b0;
        STOR[3:0] <= 4'b0000;
        counter[1:0] <= 2'b00;
        RE_TEMP[7:0]<=8'b00000000;
        IM_TEMP[7:0]<=8'b00000000;
        OUTEN<=0;
        DM_RE[7:0]<=8'b00000000;
        DM_IM[7:0]<=8'b00000000;
        DM_COUNT[5:0]<=6'b000000;
        DM_INDEX[5:0]<=6'b000000;
        DM_RDY<=0;
        OUT_COUNT<=2'b00;

    end
    else 
    begin
        if(DM_ND)
        begin
            counter<=counter+1;
            case(counter)
                2'b00:STOR[0]<=DM_DIN;
                2'b01:STOR[1]<=DM_DIN;           //存入输入数值
                2'b10:STOR[2]<=DM_DIN;
                2'b11:STOR[3]<=DM_DIN;
           endcase
        end
        else 
        begin
            counter <=2'b00; 
              STOR  <=4'b0000;
        end

        if (counter==2'b11)       // MAPEN 标记四个信号是否已经存入
            MAPEN<=1'b1;
        else
            MAPEN<=1'b0;

        if(MAPEN)
        begin
               case(STOR[1:0])
                2'b00:RE_TEMP[7:0]<=8'b11000011;
                2'b10:RE_TEMP[7:0]<=8'b11101100;
                2'b01:RE_TEMP[7:0]<=8'b00111101;
                2'b11:RE_TEMP[7:0]<=8'b00010100; 
               endcase
            case(STOR[3:2])
                2'b00:IM_TEMP[7:0]<=8'b11000011;
                2'b10:IM_TEMP[7:0]<=8'b11101100;
                2'b01:IM_TEMP[7:0]<=8'b00111101;
                2'b11:IM_TEMP[7:0]<=8'b00010100;
            endcase
            OUTEN<=1;
        end
        else
        begin
            OUTEN<=0;
            RE_TEMP[7:0]<=8'b00000000;
            IM_TEMP[7:0]<=8'b00000000;
        end

        if(OUTEN)
        begin
           DM_RE<=RE_TEMP;
              DM_IM<=IM_TEMP;

              if(DM_COUNT==47)
                      DM_COUNT<=0;
           else
                   DM_COUNT<=DM_COUNT+1;

           DM_INDEX<=DM_COUNT;
           DM_RDY<=1'b1;
        end

        if (DM_INDEX==47)
           OUT_COUNT<=OUT_COUNT+1;

        if (OUT_COUNT==2'b11)
        begin
           DM_RE[7:0]<=8'b00000000;
           DM_IM[7:0]<=8'b00000000;
           DM_INDEX[5:0]<=6'b000000;
           DM_COUNT[5:0]<=6'b000000;
           DM_RDY<=0;
        end
    end
end

endmodule

 

标签:DM,Name,调制,wire,Verilog,input,QAM,output,reg
来源: https://www.cnblogs.com/chensimin1990/p/13055664.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有