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

qam 64的设计的更多相关文章

  1. X86(32位)与X64(64位)有什么区别,如何选择对应的操作系统和应用程序?

    X86就是我们一般用的32位的系统,指针长度为32位(386起):X64就是64位的系统,指针长度为64位. 选择硬件对应的软件,建议通过以下三条考虑:1.64位操作系统相对32位操作系统理论上性能会 ...

  2. Win7系统32位和64位的区别

    Win7系统32位和64位的区别已经是一个老话题了,可是还是有很多朋友不明白.这两者到底有什么区别呢?下面本文与大家通俗的介绍下Win7系统32位和64位的区别,其他一些深入的理论讲述,大家可以看看文 ...

  3. Abp vNext 番外篇-疑难杂症丨浅谈扩展属性与多用户设计

    说明 Abp vNext基础篇的文章还差一个单元测试模块就基本上完成了我争取10.1放假之前给大家赶稿出来,后面我们会开始进阶篇,开始拆一些东西,具体要做的事我会单独开一个文章来讲 缘起 本篇文章缘起 ...

  4. ARM、Intel、MIPS处理器啥区别?看完全懂了

    安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小.MIPS在32位和64位嵌入式领 ...

  5. ARM、Intel、MIPS处理器啥区别?看完全懂了【转】

    转自:http://news.mydrivers.com/1/472/472317.htm 安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于 ...

  6. 刚安装Fedora 23工作站后,你必须要做的24件事

    [51CTO.com快译]Fedora 23工作站版本已发布,此后我们就一直在密切关注它.我们已经为新来读者介绍了一篇安装指南:<Fedora 23工作站版本安装指南> 还有一篇介绍如何从 ...

  7. ARM与X86 CPU架构对比区别

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是  CISC要用最少的机器语言 ...

  8. fedora 使用

    我们在这篇指南中将介绍安装Fedora 23工作站版本后要完成的一些实用操作,以便用起来更爽. 1.更新Fedora 23程序包 哪怕你可能刚刚安装/升级了Fedora 23,仍很可能会有需要更新的程 ...

  9. C语言--第三次作业

    要求一 . 1)C高级第三次PTA作业(1) 题目6-1 1.设计思路      (1)主要描述题目算法          第一步:将月份分别赋值:          第二步:利用switch语句,输 ...

随机推荐

  1. 搭建Cordova开发环境

    Cordova是什么 Apache Cordova是一套设备API,允许移动应用的开发者使用JavaScript来访问本地设备的功能,比如摄像头.加速计.它可以与UI框架(如jQuery Mobile ...

  2. AD域内DNS服务器如何解析公网域名

    原创地址:http://www.cnblogs.com/jfzhu/p/4022999.html 转载请注明出处 AD域内需要有DNS服务器,用于解析域内的计算机名,但是域内的计算如何解析公网的域名呢 ...

  3. 【VC++技术杂谈001】音频技术之调节音量及设置静音

    本文主要介绍如何使用混音器Mixer API函数实现系统音量调节,以及设置静音. 1.混音器的作用及结构 1.1混音器的作用 声卡(音频卡)是计算机进行声音处理的适配器,具有三个基本功能: (1)音乐 ...

  4. python数据类型详解

    目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字符串,例如:str='th ...

  5. SSIS Execute SQL Task 用法

    Execute Sql Task组件是一个非常有用的Control Flow Task,可以直接执行SQL语句,例如,可以执行数据更新命令(update,delete,insert),也可以执行sel ...

  6. ExtJs4常用配置方法备忘

    viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...

  7. window下Nodejs的部署

    nodejs http://nodejs.org/#download npm node cli.js install npm -gf //可以安装最新版的NPM node cli.js install ...

  8. MVC实用架构设计(三)——EF-Code First(5):二级缓存

    前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...

  9. VS 2015 Enterprise第二大坑

    前言 继上篇文章之后,你会继续跌进大坑,这个坑困扰我一上午,同时也会让你大跌眼镜,如果你遇到了,那么恭喜你提升自身能力和解决能力的时机到了,当然你可以通过本文继续少走不必要的弯路[我也是无意中发现的捷 ...

  10. EasyUI Tabs绑定右键

    JS:             /*为选项卡绑定右键*/                 $("#tabs").tabs({                     onConte ...