EDA课程设计.docx

上传人:b****3 文档编号:2151181 上传时间:2022-10-27 格式:DOCX 页数:11 大小:313.89KB
下载 相关 举报
EDA课程设计.docx_第1页
第1页 / 共11页
EDA课程设计.docx_第2页
第2页 / 共11页
EDA课程设计.docx_第3页
第3页 / 共11页
EDA课程设计.docx_第4页
第4页 / 共11页
EDA课程设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

EDA课程设计.docx

《EDA课程设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计.docx(11页珍藏版)》请在冰豆网上搜索。

EDA课程设计.docx

EDA课程设计

玉林师范学院本科生课程设计论文

 

10位超前进位加法器设计

 

院系

电子与通信工程学院

专业

通信工程

学生班级

姓名

学号

指导教师单位

电子与通信工程学院

指导教师姓名

摘要

EDA(ElectronicDesignAutomation)技术是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具;通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对特定目标芯片的适配编译、逻辑映射、编译下载等工具,最终形成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。

加法运算是最重要也是最基本的运算,所有的其他基本运算,如减、乘、除运算最终都能归结为加法运算。

但因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于他的位相关。

因此为了减少进位传输所消耗的时间,提高计算速度,人们设计了多种类型的加法器,如跳跃进位加法器、进位选择加法器、超前进位加法器等。

本设计采用的是超前进位加法器。

通过Verilog设计一个超前10位加法器。

关键词:

EDA加法器Verilog

 

目录

第一章EDA简介1

第二章设计内容与要求2

第三章超前进位加法器设计原理2

第四章详细设计流程3

4.1.创建工程文件3

4.2.程序的编译4

4.3.波形的仿真5

第五章设计结果分析8

第六章源程序代码9

第七章心得体会10

第八章参考文献10

 

第一章EDA简介

EDA(ElectronicDesignAutomation)技术是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具;通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对特定目标芯片的适配编译、逻辑映射、编译下载等工具,最终形成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。

全球提供EDA软件工具的厂商有近百家之多,大体分为两类:

一类是专业软件公司开发的EDA开发工具,独立于半导体器件厂商;另一类是半导体器件厂商为销售本公司可编程逻辑器件PLD产品开发的EDA软件工具,只能开发该公司的PLD器件。

本设计采用的Quartus8.0开发工具属于后者,是由Altera公司开发的EDA软件工具。

EDA开发流程如下图1.1所示[2]。

图1.1EDA开发流程

Figure1.1EDAdevelopmentprocesses

 

第二章设计内容与要求

加法运算是最重要也是最基本的运算,所有的其他基本运算,如减、乘、除运算最终都能归结为加法运算。

但因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于他的位相关。

因此为了减少进位传输所消耗的时间,提高计算速度,人们设计了多种类型的加法器,如跳跃进位加法器、进位选择加法器、超前进位加法器等。

本设计采用的是超前进位加法器。

通过Verilog设计一个超前10位加法器。

要求在QuartusII软件下,利用Verilog编程完成层次式电路设计,电路中的元件可以用Verilog设计也可以用库元件连线构成再封装。

10位超前进位加法器,借助EDA工具中的综合器,适配器,时序仿真器和编程器等工具进行相应处理。

适配采用Cyclone系列的EP1C6Q240C8。

要求综合出RTL电路,并进行仿真输入波形设计并分析电路输出波形。

第三章超前进位加法器设计原理

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

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

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

首先对于1位加法器基本位值和与进位输出为1;如果a,b有一个为1,则进位输出等于Cin;

令G=ab,P=a+b,则有:

Cout==ab+(a+b)Cin=G+P•Cin

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

(设定四位被加数和加数为A和B,进位输入cin,进位输出为cout,进位产生Gi=AiBi,进位传输Pi=Ai+Bi。

);

C0=Cin;

C1=G0+P0*C0=G0+P0*Cin

C2=G1+P1*C1=G1+P1*(G0+P0*Cin)=G1+P1*G0+P1*P0*Cin

C3=G2+P2*C2=G2+P2*(G1+P1*C1)=G2+P2*G1+P2*P1*G0+P2*P1*P0*Cin

C4=G3+P3*C3=G3+P3*(G2+P2*C2)=G3+P3*G2+P3*P2*G1+P3*P2*P1*G0+P3*P2*P1*P0*Cin

Cout=C4

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

同样可推导出下面的式子:

sum=A⊕B⊕Cin=(A*B)⊕(A+B)⊕Cin=G⊕P⊕Cin

本实验中采用10位超前进位加法器

第四章详细设计流程

4.1.创建工程文件

打开QuartusII9.1创建一个工程文件adder_ahead

选择菜单File中NewProjectWizard命令,在如下“工程设置”对话框中单击右侧“…”按钮,找到文件夹D:

\atlera\quartus,选中已存盘的add_ahead.vhd的文件。

单击Next,将与工程有关的文件加入此工程。

(1)选择仿真器和综合器类型。

都选默认的None。

(2)选择目标芯片。

(3)工具设置。

这里默认使用QuartusⅡ自含的所有设计工具。

(4)结束设置。

4.2.程序的编译

(1).选择菜单“Processing”—“StartCompilation”命令,或者点击运行编译按钮,启动完全编译,这里的完全编译包括分析与综合、适配、装配文件、定时分析、网编文件提取过程。

如果只要进行期中的某一项编译,可以选着“Tools”---“CompilerTool”命令,或者点击按钮即可出现编译工具选择串口,共包括5个编译工具,分别为分析与综合器、适配器、装配器、定时分析器、网表文件提提取器,单机每个工具前面的小图标可单独启动每一个编译器。

(2)编译完成后,会将有关的编译信息显示在窗口中,可查看其中的相关内容。

还可以查看中和后的电路原理图,选择“Tools”---“NetlistViewers”---“RTLViewer”菜单命令,既可观察综合生成的RLT方式的电路原理图,在这里我们可以看到10位超期进位加法器生成的原理图如下:

10位超期进位加法器生成的原理图:

4.3.波形的仿真

仿真时序,对项目进行仿真测试,也可以对项目中的某一个子模块进行仿真,其方法是选择菜单“Assignment”---“Wizard”----“SimulatorSetWizard”命令,在设置过程中指定仿真对象,并指定对象的仿真类型、矢量激励源等。

(1)打开波形编辑器

选择菜单“File”---“New”命令,在“New”对话框中选择“OtherFile”页中的“VectorWaveFile”选项,单击“ok”按钮,即出现选择波形按钮;

(2)输入信号节点

选择菜单“View”---“UtilityWindows”---“NodeFinder”命令,出现对话框,在“Filter”下拉列表中选择“Pins:

all”选项,再次单击“List”按钮,即在下面的“NodesFound”框中出现本设计项目的所有端口引脚列表,从端口列表中选择所需要的,并逐个拖到波形编辑窗口中。

(4)编辑输入信号波形

点击波形编辑窗口中的全屏显示,使用波形编辑窗口中的各种波形赋值,编辑各输入信号的激励波形。

在仿真的时候需要设置一个合理的区域,选择菜单“Edit”---“EndTime”命令,在淡出的“Time”窗口中输入60us.

对数据的型号的格式可以选择:

Binary(二进制),Hexadecimal(十六进制)、Octal(八进制)、SignedDecimal(有符号十进制),UnsgnedDecimal(无符号十进制)。

这里选择的是UnsignedDecimal十进制,便于观察结果。

(5)仿真参数的设置,选择菜单“Assignments”—“Setting”

命令,在弹出的对话框选择“SimulatorSetting”项下的“Mode”

以选择仿真模式,仿真模式有功能仿真模式和时序仿真模式,这里选择功能仿真。

(6)观察仿真结果

选择菜单“Processing”---“StartSimulation”命令,即启动仿真器工作。

仿真完毕后,可以通过输出波形,检验所设计电路的功能是否正确。

10位超前进位的功能输出波形图:

 

10位超前进位的时序输出波形图:

第五章设计结果分析

输入a

1023

512

256

输入b

16

32

888

cin

0

1

0

1

0

1

sum

31

0

544

545

104

105

结果中显示是正常的,10位超前进位加法器得到成功的实现

第六章源程序代码

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];//产生第0位本位值和进位值

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

assignC[0]=cin;

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

assignG[1]=a[1]&b[1];//产生第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];//产生第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];//产生第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];//产生第4位本位值和进位值

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

assignC[4]=G[3]|(P[3]&C[3]);

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

assignG[5]=a[5]&b[5];//产生第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];//产生第6位本位值和进位值

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

assignC[6]=

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

当前位置:首页 > 工程科技

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

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