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. SQL Server 索引和表体系结构(包含列索引)

    包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的 ...

  2. .NET陷阱之六:从枚举值持久化带来大量空间消耗谈起

    好长时间没有写博文了,今天继续. 这次跟大家分享的内容起因于对一个枚举值列表的序列化,下面简化后的代码即能重现.为了明确起见,我显式指定了枚举的基础类型. // 定义一个枚举类型. public en ...

  3. 《Spark快速大数据分析》—— 第五章 数据读取和保存

    由于Spark是在Hadoop家族之上发展出来的,因此底层为了兼容hadoop,支持了多种的数据格式.如S3.HDFS.Cassandra.HBase,有了这些数据的组织形式,数据的来源和存储都可以多 ...

  4. Atitit 分区后的查询  mysql分区记录的流程与原理

    Atitit 分区后的查询  mysql分区记录的流程与原理 1.1.1. ibd是MySQL数据文件.索引文件1 1.2. 已经又数据了,如何分区? 给已有的表加上分区 ]1 1.3. 分成4个区, ...

  5. removeClass 按钮点击添加class效果

    html代码: <div class="game"> <span class="active">全部</span> < ...

  6. JAVA实现发送电子邮件

    相信大家对于网站也好,手机app也好,用户注册时,需要进行邮箱验证的功能特别好奇吧,本篇我将带领大家一起实现一下这个简单而又神奇的小功能,让我们的应用也可以加入这些神奇的元素.废话不多说,下面开始我们 ...

  7. javascript中函数声明和函数表达式浅析

    记得在面试腾讯实习生的时候,面试官问了我这样一道问题. //下述两种声明方式有什么不同 function foo(){}; var bar = function foo(){}; 当初只知道两种声明方 ...

  8. RESTful API URI 设计: 判断资源是否存在?

    相关的一篇文章:RESTful API URI 设计的一些总结. 问题场景:判断一个资源(Resources)是否存在,URI 该如何设计? 应用示例:判断 id 为 1 用户下,名称为 window ...

  9. DEBIAN下中文显示

    转:http://www.cppblog.com/colorful/archive/2012/05/28/176516.aspx 一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对 ...

  10. hibernate笔记--实体类映射文件"*.hbm.xml"详解

    实体类就是指普通的POJO,Hibernate并不知道那个实体类对应数据库的哪一张表,所以还需要配置一下,常用的方式就是*.hbm.xml文件[配置与@注解配置,这里介绍前者的详细属性: <?x ...