• qam 64的设计


    module qam64(x,out,clk,clk1,rst);
    input x,clk,clk1,rst;
    output [18:0] out;
    reg [2:0] count;
    reg [5:0] reg1,reg2;
    reg [18:0] ssig,csig;
    reg [15:0] sine;
    reg [15:0] cosine;


    always @(posedge clk)
    begin
    if(!rst)
    begin reg1<=0;reg2<=0;count<=0;end
    else begin reg1[5:0]<={reg1[4:0],x};count<=count+1;
    if(count==3'b110)
    begin reg2<=reg1;count<=0;end
    else reg2<=reg2;
    end
    end

    always@(posedge clk1) begin
    if(!rst)
    begin csig<=0;ssig<=0;end
    else begin
    case(reg2)
    6'b000000://cosine+sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b000001://cosine+2sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b000010://cosine+3sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b000011://cosine+4sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b000100://2cosine+sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b000101://2cosine+2sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b000110://2cosine+3sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b000111://2cosine+4sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b001000://3cosine+sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b001001://3cosine+2sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b001010://3cosine+3sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b001011://3cosine+4sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b001100://4cosine+sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    8'b001101://4cosine+2sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b001110://4cosine+3sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b001111://4cosine+4sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    8'b010000://cosine-sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b010001://cosine-2sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b010010://cosine-3sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b010011://cosine-4sine
    begin csig[18:16]<=cosine[15:13];csig[15:0]<=cosine[15:0];
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b010100://2cosine-sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b010101://2cosine-2sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b010110://2cosine-3sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b010111://2cosine-4sine
    begin csig[18:17]<=cosine[15:14];csig[16:1]<=cosine[15:0];csig[0]<=0;
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b011000://3cosine-sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b011001://3cosine-2sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b011010://3cosine-3sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b011011://3cosine-4sine
    begin csig[18]<=cosine[15];csig[17:2]<=cosine[15:0];csig[1:0]<=0;
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b011100://4cosine-sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b011101://4cosine-2sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b011110://4cosine-3sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]=0;
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b011111://4cosine-4sine
    begin csig[18:3]<=cosine[15:0];csig[2:0]<=0;
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b100000://-cosine+sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b100001://-cosine+2sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b100010://-cosine+3sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b100011://-cosine+4sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b100100://-2cosine+sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b100101://-2cosine+2sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b100110://-2cosine+3sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b100111://-2cosine+4sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b101000://-3cosine+sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b101001://-3cosine+2sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    8'b101010://-3cosine+3sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b101011://-3cosine+4sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b101100://-4cosine+sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18:16]<=sine[15:13];ssig[15:0]<=sine[15:0];end
    6'b101101://-4cosine+2sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18:17]<=sine[15:14];ssig[16:1]<=sine[15:0];ssig[0]<=0;end
    6'b101110://-4cosine+3sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18]<=sine[15];ssig[17:2]<=sine[15:0];ssig[1:0]<=0;end
    6'b101111://-4cosine+4sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18:3]<=sine[15:0];ssig[2:0]<=0;end
    6'b110000://-cosine-sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b110001://-cosine-2sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b110010://-cosine-3sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b110011://-cosine-4sine
    begin csig[18:16]<=!cosine[15:13];csig[15:0]<=!cosine[15:0];
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b110100://-2cosine-sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b110101://-2cosine-2sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b110110://-2cosine-3sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b110111://-2cosine-4sine
    begin csig[18:17]<=!cosine[15:14];csig[16:1]<=!cosine[15:0];csig[0]<=0;
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b111000://-3cosine-sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b111001://-3cosine-2sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b111010://-3cosine-3sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b111011://-3cosine-4sine
    begin csig[18]<=!cosine[15];csig[17:2]<=!cosine[15:0];csig[1:0]<=0;
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    6'b111100://-4cosine-sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18:16]<=!sine[15:13];ssig[15:0]<=!sine[15:0];end
    6'b111101://-4cosine-2sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18:17]<=!sine[15:14];ssig[16:1]<=!sine[15:0];ssig[0]<=0;end
    6'b111110://-4cosine-3sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18]<=!sine[15];ssig[17:2]<=!sine[15:0];ssig[1:0]<=0;end
    6'b111111://-4cosine-4sine
    begin csig[18:3]<=!cosine[15:0];csig[2:0]<=0;
    ssig[18:3]<=!sine[15:0];ssig[2:0]<=0;end
    endcase
    end
    end
    assign out=rst?csig+ssig:0;
    endmodule

  • 相关阅读:
    扩展GridView控件增加选择列
    Flash图片轮换/切换左右推拉效果
    Flash图片轮换/切换普通效果1
    WebForm_PostBackOptions未定义 解决方法
    SQL Server 2008无法还原日志备份或差异备份的问题解决(转)
    一个简单的C#多线程间同步的例子.[转]
    SQL2008报错:无法还原日志备份或差异备份,因为没有文件可用于前滚(转)
    C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
    C# Monitor类锁定对象
    使用SqlServer中的float类型时发现的问题(转)
  • 原文地址:https://www.cnblogs.com/xinshuwei/p/5647843.html
Copyright © 2020-2023  润新知