华东交通大学理工学院课程设计报告书所属课程名称EDA课程设计题目超前进位加法器设计分院专业班级学号学生姓名指导教师2013 年7月2日目录第一章设计内容与要求 (3)第二章超前进位加法器设计原理 (3)第三章详细设计流程 (4)3.1.创建工程文件 (4)3.2.程序的编译 (5)3.3.波形的仿真 (7)第四章设计结果分析 (11)第五章源程序代码 (12)第六章心得体会 (14)第七章参考文献 (15)第一章设计内容与要求加法运算是最重要也是最基本的运算,所有的其他基本运算,如减、乘、除运算最终都能归结为加法运算。
但因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于他的位相关。
因此为了减少进位传输所消耗的时间,提高计算速度,人们设计了多种类型的加法器,如跳跃进位加法器、进位选择加法器、超前进位加法器等。
本设计采用的是超前进位加法器。
通过Verilog 设计一个超前8位加法器。
要求在Quartus II软件下,利用Verilog编程完成层次式电路设计,电路中的元件可以用Verilog设计也可以用库元件连线构成再封装。
8位超前进位加法器,借助EDA工具中的综合器,适配器,时序仿真器和编程器等工具进行相应处理。
适配采用Cyclone系列的EP1C6Q240C8。
要求综合出RTL电路,并进行仿真输入波形设计并分析电路输出波形. 试比较并阐述数据类型reg型和wire型的区别。
第二章超前进位加法器设计原理将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+P0C0=G0+P0•cinC2=G1+P1C1=G1+P1(G0+P0cin)=G1+P1G0+P1P0cinC3=G2+P2C2=G2+P2(G1+P1cin)=G2+P2G1+P2P1G0+P2P1P0cinC4=G3+P3C3=G3+P3(G2+P2C2)=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0cin Cout=c4由超前进位链,各个进位彼此独立产生,将进位级联传播给去掉了,因此,减小了进位产生的延迟时间。
同样可推导出下面的式子:SUM=A⊕B⊕Cin=(AB)⊕(A+B) ⊕CinU=G⊕P⊕Cin本实验中采用8位超前进位加法器第三章详细设计流程3.1.创建工程文件打开Quartus II 9.1创建一个工程文件adder_ahead选择菜单File中New Project Wizard命令,在如下“工程设置”对话框中单击右侧“…”按钮,找到文件夹D:\atlera\quartus,选中已存盘的add_ahead.vhd的文件。
单击Next,将与工程有关的文件加入此工程。
(1)选择仿真器和综合器类型。
都选默认的None。
(2)选择目标芯片。
(3)工具设置。
这里默认使用QuartusⅡ自含的所有设计工具。
(4)结束设置。
3.2.程序的编译(1).选择菜单“Processing”—“Start Compilation”命令,或者点击运行编译按钮,启动完全编译,这里的完全编译包括分析与综合、适配、装配文件、定时分析、网编文件提取过程。
如果只要进行期中的某一项编译,可以选着“Tools”---“Compiler Tool”命令,或者点击按钮即可出现编译工具选择串口,共包括5个编译工具,分别为分析与综合器、适配器、装配器、定时分析器、网表文件提提取器,单机每个工具前面的小图标可单独启动每一个编译器。
(2)编译完成后,会将有关的编译信息显示在窗口中,可查看其中的相关内容。
还可以查看中和后的电路原理图,选择“Tools”---“Netlist Viewers”---“RTL Viewer”菜单命令,既可观察综合生成的RLT方式的电路原理图,在这里我们可以看到8位超期进位加法器生成的原理图如下:8位超期进位加法器生成的原理图:3.3.波形的仿真仿真时序,对项目进行仿真测试,也可以对项目中的某一个子模块进行仿真,其方法是选择菜单“Assignment”---“Wizard”----“Simulator Set Wizard”命令,在设置过程中指定仿真对象,并指定对象的仿真类型、矢量激励源等。
(1)打开波形编辑器选择菜单“File”---“New”命令,在“New”对话框中选择“Other File”页中的“Vector Wave File”选项,单击“ok”按钮,即出现选择波形按钮;(2)输入信号节点选择菜单“View”---“Utility Windows”---“Node Finder”命令,出现对话框,在“Filter”下拉列表中选择“Pins:all”选项,再次单击“List”按钮,即在下面的“Nodes Found”框中出现本设计项目的所有端口引脚列表,从端口列表中选择所需要的,并逐个拖到波形编辑窗口中(4)编辑输入信号波形点击波形编辑窗口中的全屏显示,使用波形编辑窗口中的各种波形赋值,编辑各输入信号的激励波形。
在仿真的时候需要设置一个合理的区域,选择菜单“Edit”---“End Time”命令,在淡出的“Time”窗口中输入60us.对数据的型号的格式可以选择:Binary(二进制),Hexadecimal(十六进制)、Octal(八进制)、Signed Decimal(有符号十进制),Unsgned Decimal(无符号十进制)。
这里选择的是Binary二进制,便于观察结果。
(5)仿真参数的设置,选择菜单“Assignments”—“Setting”命令,在弹出的对话框选择“Simulator Setting”项下的“Mode”,以选择仿真模式,仿真模式有功能仿真模式和时序仿真模式,这里选择功能仿真。
(6)观察仿真结果选择菜单“Processing”---“Start Simulation”命令,即启动仿真器工作。
仿真完毕后,可以通过输出波形,检验所设计电路的功能是否正确。
8位超前进位的功能输出波形图:第四章设计结果分析输入a 00100110 00100111输入b 001010110 01010111cin 0 1 0 1 sum 01101000 01101001 01101010 01101011 结果中显示是正常的,8位超前进位加法器得到成功的实现8位超前进位器综合后的RTL级原理图第五章源程序代码8位超前进位加法器module add_ahead(sum,cout,a,b,cin);input[7:0] a,b;input cin;output[7:0] sum;output cout;wire[7:0] G,P;wire[7:0 ] C,sum;assign G[0]=a[0]&b[0];assign P[0]=a[0]|b[0];assign C[0]=cin;assign sum[0]=G[0]^P[0]^C[0];assign G[1]=a[1]&b[1];assign P[1]=a[1]|b[1];assign C[1]=G[0]|(P[0]&cin);assign sum[1]= G[1]^P[1]^C[1];assign P[2]=a[2]&b[2];assign C[2]=G[1]|(P[1]&C[1]);assign sum[2]=G[2]^P[2]^C[2];assign G[3]=a[3]&b[3];assign P[3]=a[3]|b[3];assign C[3]=G[2]|(P[2]&C[2]);assign sum[3]=G[3]^P[3]^C[3];assign G[4]=a[4]&b[4]; assign P[4]=a[4]|b[4];assign C[4]=G[3]|(P[3]&C[3]); assign sum[4]=G[2]^P[2]^C[2]; assign G[5]=a[5]&b[5]; assign P[5]=a[5]|b[5];assign C[5]=G[4]|(P[4]&C[4]); assign sum[5]=G[5]^P[5]^C[5]; assign G[6]=a[6]&b[6]; assign P[6]=a[6]|b[6];assign C[6]=G[5]|(P[5]&C[5]); assign sum[6]=G[6]^P[6]^C[6]; assign G[7]=a[7]&b[7]; assign P[7]=a[7]|b[7];assign C[7]=G[6]|(P[6]&C[6]); assign sum[7]=G[7]^P[7]^C[7]; assign cout=G[7]|(P[7]&C[7]); endmodule第六章心得体会本学期学习了EDA技术与Vertlog技术,对EDA技术应用有了一些了解,在如今生活在这个数字化和信息化时代,数字产品的广泛应用越来越多。
EDA技术的使用在我们生活中息息相关,发现了EDA的强大功能。
系统系设计,混合电路设计,综合仿真的设计,数字电路设计,版图设计,PCB 板设计,PLD开发,高速电路设计,模拟电路设计等应用。
这次课设中用到的Quartus Ⅱ软件,在安装过程中遇到不能仿真,后来下载了9.11版本得到解决。
Quartus Ⅱ进行EDA开发包括设计输入,编译,仿真,编程和验证,自己通过设计8位超前加法器对Quartus Ⅱ软件的应用也得到了一定的掌握。
在编译的过程中遇到一些不能编译,通过网上找资料,和同学的讨论得到了一定的了解,通过软件的设置和通过编译错误的提示来更改错误,对设计的原理有了更深的理解。
同时也发现遇到问题不要急着马上就向同学寻求帮助,我们自己可以认真地独立思考,想想问题哪里出错了,这样自己才会有不断地提高。
认识涞源于实践实践是用于检验真理的唯一标准。
这次使用超前进位这样就减少了延时,加快了运行速度。
对于一切的设计我们都要多思考,使用最优的方法到我们实际生活当中去。
这次课设设计,加强了我们自己动手,思考解决问题的能力。
也让我们在学习的道路求知的一段探索道路,是对于我们生活一种充实。