基于Verilog HDL的10位超前进位加法器计分解文档格式.docx

上传人:b****5 文档编号:21660287 上传时间:2023-01-31 格式:DOCX 页数:10 大小:1.11MB
下载 相关 举报
基于Verilog HDL的10位超前进位加法器计分解文档格式.docx_第1页
第1页 / 共10页
基于Verilog HDL的10位超前进位加法器计分解文档格式.docx_第2页
第2页 / 共10页
基于Verilog HDL的10位超前进位加法器计分解文档格式.docx_第3页
第3页 / 共10页
基于Verilog HDL的10位超前进位加法器计分解文档格式.docx_第4页
第4页 / 共10页
基于Verilog HDL的10位超前进位加法器计分解文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于Verilog HDL的10位超前进位加法器计分解文档格式.docx

《基于Verilog HDL的10位超前进位加法器计分解文档格式.docx》由会员分享,可在线阅读,更多相关《基于Verilog HDL的10位超前进位加法器计分解文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

基于Verilog HDL的10位超前进位加法器计分解文档格式.docx

陈宇宁

2014年6月22日

设计题目:

设计一个10位的超前进位加法器。

要求作出功能和时序仿真。

一总体设计方案

1.1设计原理

将n个全加器相连可得n位加法器,但是加法时间较长。

解决的方法之一是采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。

超前进位产生电路是根据各位进位的形成条件来实现的。

4位超前进位加法器的设计:

首先对于1位全加器其本位值和与进位输出可表示如下:

从上面的式子可看出:

如果a和b都为1,则进位输出为1,如果a和b有一个为1,则进位输出等于

令G=ab。

P=a+b,则有:

由此可以用G和P来写出4位超前进位链如下:

(设定4位被加数和加数为A和B,进位输入为

,进位输出为

,进位产生

,进位传输

由上面的超前进位链可看出:

各个进位彼此独立产生,将进位级连传播给去掉了,因此,减小了进位产生的延迟时间。

1.210位超前进位加法器的Verilog描述

由上面的4位超前进位加法器可以推出10位超前进位加法器的Verilog描述:

moduleadd_ahead(sum,cout,a,b,cin);

input[9:

0]a,b;

inputcin;

output[9:

0]sum;

outputcout;

wire[9:

0]G,P;

wire[9:

0]C,sum;

assignG[0]=a[0]&

b[0];

assignP[0]=a[0]|b[0];

assignC[0]=cin;

assignsum[0]=G[0]^P[0]^C[0];

assignG[1]=a[1]&

b[1];

assignP[1]=a[1]|b[1];

assignC[1]=G[0]|(P[0]&

cin);

assignsum[1]=G[1]^P[1]^C[1];

assignG[2]=a[2]&

b[2];

assignP[2]=a[2]|b[2];

assignC[2]=G[1]|(P[1]&

C[1]);

assignsum[2]=G[2]^P[2]^C[2];

assignG[3]=a[3]&

b[3];

assignP[3]=a[3]|b[3];

assignC[3]=G[2]|(P[2]&

C[2]);

assignsum[3]=G[3]^P[3]^C[3];

assignG[4]=a[4]&

b[4];

assignP[4]=a[4]|b[4];

assignC[4]=G[3]|(P[3]&

C[3]);

assignsum[4]=G[4]^P[4]^C[4];

assignG[5]=a[5]&

b[5];

assignP[5]=a[5]|b[5];

assignC[5]=G[4]|(P[4]&

C[4]);

assignsum[5]=G[5]^P[5]^C[5];

assignG[6]=a[6]&

b[6];

assignP[6]=a[6]|b[6];

assignC[6]=G[5]|(P[5]&

C[5]);

assignsum[6]=G[6]^P[6]^C[6];

assignG[7]=a[7]&

b[7];

assignP[7]=a[7]|b[7];

assignC[7]=G[6]|(P[6]&

C[6]);

assignsum[7]=G[7]^P[7]^C[7];

assignG[8]=a[8]&

b[8];

assignP[8]=a[8]|b[8];

assignC[8]=G[7]|(P[7]&

C[7]);

assignsum[8]=G[8]^P[8]^C[8];

assignG[9]=a[9]&

b[9];

assignP[9]=a[9]|b[9];

assignC[9]=G[8]|(P[8]&

C[8]);

assignsum[9]=G[9]^P[9]^C[9];

assigncout=G[9]|(P[9]&

C[9]);

endmodule

1.3设计环境

本文在设计10位超前进位加法器过程中,采用QuartusII9.0软件。

对于硬件,在实验设计过程中,用到了TPG-EDA/SOPC教学实验箱。

二采用QuartusII9.0软件进行仿真

2.1主要步骤:

(1)打开QuartusII9.0,新建工程后新建VerilogHDLfile文件。

(2)将上面的10超前进位加法器的Verilog描述程序输入新建的文件并保存。

(3)点击Processing→startcompilation进行编译,编译成功后如下:

(4)点击Assignments→Pins进行管脚分配,分配好后保存并再编译:

分配好管脚后再次编译:

(4)新建VectorWaveformfile文件并导入全部管脚(Radix改为UnsignedDecimal):

(5)功能仿真,Assignments→setting在simulationmode那里选择functonal

(6)对输入a和b取随机值(选中输入右键Value→randomValue→everygridinterval)并保存,建立网表Processing→GeneratefunctionalsimulationNetlist

(7)Processing→startsimulation进行仿真,运行结果如下:

功能仿真结果

(8)时序仿真,Assignments→setting在simulationmode那里选择Timing→ok。

(9)保存文件,进行仿真。

如下图所示:

时序仿真结果

(10)选中输入,Edit→GridSize,Edit→Endtime进行修改:

(11)对a和b重新取随机值并保存,进行仿真:

时序仿真结果(修改endtime和gridsize)

2.2分析与总结:

由10超前进位加法器的仿真结果可以知道其计算值在0-1023(

^10)之间,a+b+

的值超过1023(

为0时),产生进位(此时

为1)。

步骤(7)(9)(11)分别为功能仿真结果、时序仿真结果、(修改endtime和gridsize)时序仿真结果,经过对比可以看出,功能仿真不存在延时,时序仿真会有很明显的延时,通过修改endtime和gridsize可以减小延时对结果的影响。

三个人体会

通过这次EDA课程设计,让我更加了解了QuartusII9.0软件这个软件,在这个设计过程中我深刻地体会到刻苦努力与认真对待的重要性,进一步巩固了自己所学的专业基础知识,提高了自己解决问题的能力。

本设计使得我有了一次非常好的将理论与实践结合的机会,并使我从中学到了新知识。

在此,感谢我的指导老师陈宇宁老师的耐心指导和教诲。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1