4位全加器实验报告.docx
《4位全加器实验报告.docx》由会员分享,可在线阅读,更多相关《4位全加器实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
![4位全加器实验报告.docx](https://file1.bdocx.com/fileroot1/2023-6/3/05806c71-5e1a-4f98-894a-2d792a52360f/05806c71-5e1a-4f98-894a-2d792a52360f1.gif)
4位全加器实验报告
4位全加器实验报告
篇一:
四位全加器实验报告
实验一:
四位全加器实验报告
实验日期:
学生姓名:
陆小辉(学号:
25)指导老师:
黄秋萍加法器是数字系统中的基本逻辑器件,是构成算数运算电路的基本单元。
1位加法器有全加器和半加器两种。
多位加法器构成方式有并行进位方式和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度较快;串行进位加法器是将全加器级联构成多位加法器。
并行进位加法器通常比串行进位加法器占用更多的资源,随着位数的增多,相同位数的并行进位加法器比串行进位加法器的资源占用差距快速增大。
因此,在工程中使用加法器时,要在速度与容量之间寻求平衡。
一、设计要求:
设计四位全加器,完成相应的功能。
可采用并行进位方式和串行进位方式,可采用三种常用建模方式中的任意一种。
三、测试代码如(转载自:
小草范文网:
4位全加器实验报告)下:
moduletext_fulladd4;二、设计代码如下:
(此处采用数据流建模)
wire[3:
0]sum;modulefulladd4(sum,cout,a,b,cin);wirecout;output[3:
0]sum;reg[3:
0]a,b;outputcout;regcin;input[3:
0]a,b;fulladd4f1(sum,cout,a,b,cin);inputcin;initialassign{cout,sum}=a+b+cin;beginendmodulea=4'b0;b=4'b0;cin=1'b0;#210$stop;endalways#10a=a+1;always#5b=b+1;always#100cin=cin+1;endmodule四、仿真波形如下:
续图
篇二:
4位全加器实验报告
数电第一次实验
通信1402程杰UXX13468
【实验目的】
采用ISE集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四进制全加器。
【实验内容】
加法器是数字系统中的基本逻辑器件。
多位加法器的构成有两种方式:
并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
实现多位二进制数相加的电路称为加法器,它能解决二进制中1+1=10的功能(当然还有0+0、0+1、1+0).
【实验原理】全加器
除本位两个数相加外,还要加上从低位来的进位数,称为全加器。
图4为全加器的方框图。
图5全加器原理图。
被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。
能实现全加运算
表2全加器逻辑功能真值表
图4全加器方框图
图5全加器原理图
多位全加器连接可以是逐位进位,也可以是超前进位。
逐位进位也称串行进位,其逻辑电路简单,但速度也较低。
四位全加器
如图9所示,四位全加器是由半加器和一位全加器组建而成:
图9四位全加器原理图
【实验步骤】
(1)建立新工程项目:
打开ISE软件,进入集成开发环境,点击File→Newproject建立一个工程项目adder_4bit。
建立文本编辑文件:
点击File→New在该项目下新建Verilog源程序文件adder_4bit.v并且输入源程序。
(2)编译和仿真工程项目:
在verilog主页面下,选择Compile—CompileAll或点击工具栏上的按钮启动编译,直到project出现status栏全勾,即可进行仿真。
选择simulate-startsimulate或点击工具栏上的按钮开始仿真,在跳出来的startsimulate框中选择work-test_adder_4bit测试模块,同时撤销EnableOptimisim前的勾,之后选择ok。
在sim-default框内右击选择test_adder_4bit,选择AddWave,然后选择simulate-run-runall,观察波形,得出结论,仿真结束。
四位全加器
1、原理图设计
如图9所示,四位全加器是由半加器和一位全加器组建而成:
图9四位全加器原理图
【程序源代码】
半加器程序代码如下:
moduleHalfadder(S,C,A,B
);
inputA,B;outputS,C;xor(S,A,B);and(C,A,B);
endmodule
一位全加器程序代码如下:
moduleonebit_adder(Sum,Co,A,B,Ci);
inputA,B,Ci;outputSum,Co;wireS1,D1,D2;
HalfadderHA1(.B(B),.S(S1),.C(D1),.A(A));HalfadderHA2(.A(S1),.B(Ci),.S(Sum),.C(D2));org1(Co,D2,D1);
endmodule
四位全加器程序代码如下:
modulefourbit_adder(S,C3,A,B,C_1);
input[3:
0]A,B;
inputC_1;
output[3:
0]S;outputC3;wireC0,C1,C2;
onebit_adderU0_FA(S[0],C0,A[0],B[0],C_1);
onebit_adderU1_FA(S[1],C1,A[1],B[1],C0);onebit_adderU2_FA(S[2],C2,A[2],B[2],C1);onebit_adderU3_FA(S[3],C3,A[3],B[3],C2);
endmodule
四位全加器仿真代码如下:
modulefourbir_adder_TF;
//Inputs
reg[3:
0]A_t;reg[3:
0]B_t;regC_1_t;//Outputs
wire[3:
0]S_t;wireC3_t;
//InstantiatetheUnitUnderTest(UUT)fourbit_adderuut(.S(S_t),.C3(C3_t),.A(A_t),.B(B_t),.C_1(C_1_t));
initialbegin
//InitializeInputs
A_t=0000;B_t=0001;C_1_t=0;
#10$display("AB=%b%b,S_t=%b,C3_t=%b",A_t,B_t,S_t,C3_t);A_t=0011;B_t=0011;C_1_t=0;
#10$display("AB=%b%b,S_t=%b,C3_t=%b",A_t,B_t,S_t,C3_t);A_t=0111;B_t=1100;C_1_t=0;
#10$display("AB=%b%b,S_t=%b,C3_t=%b",A_t,B_t,S_t,C3_t);endendmodule
仿真结果截图
引脚分配代码
NET"A[0]"LOC="P11";NET"A[1]"LOC="L3";NET"A[2]"LOC="K3";NET"A[0]"LOC="B4";
NET"B[0]"LOC="G3";
NET"B[0]"LOC="F3";
篇三:
四位全加器实验报告
武汉轻工大学
数学与计算机学院
《计算机组成原理》
实验报告
题目:
4位二进制计数器实验
专业:
软件工程
班级:
130X班
学号:
1305110XXX
姓名:
XX
指导老师:
郭峰林
XX年11月3日
【实验环境】
1.Win7
2.QuartusII9.1计算机组成原理教学实验系统一台。
【实验目的】
1、熟悉VHDL语言的编写。
2、验证计数器的计数功能。
【实验要求】
本实验要求设计一个4位二进制计数器。
要求在时钟脉冲的作用下,完成计数功能,能在输出端看到0-9,A-F的数据显示。
(其次要求下载到实验版实现显示)
【实验原理】
计数器是一种用来实现计数功能的时序部件,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。
计数器由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。
计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。
计数器按计数进制不同,可分为二进制计数器、十进制计数器、其他进制计数器和可变进制计数器,若按计数单元中各触发器所接收计数脉冲和翻转顺序或计数功能来划分,则有异步计数器和同步计数器两大类,以及加法计数器、减法计数器、加/减计数器等,如按预置和清除方式来分,则有并行预置、直接预置、异步清除和同步清除等差别,按权码来分,则有“8421”码,“5421”码、余“3”码等计数器,按集成度来分,有单、双位计数器等等,其最基本的分类如下:
?
?
?
同步计数器?
1、结构?
?
?
异步计数器?
计数器的种类?
加法计数器?
?
?
?
2、功能?
减法计数器
?
?
可逆计数器?
?
?
二进制计数器?
?
3、进制?
十进制计数器?
?
?
N进制计数器?
?
?
下面对同步二进制加法计数器做一些介绍。
同步计数器中,所有触发器的CP端是相连的,CP的每一个触发沿都会使所有的触发器状态更新。
因此不能使用T′触发器。
应控制触发器的输入端,即将触发器接成T触发器。
只有当低位向高位进位时(即低位全1时再加1),令高位触发器的T=1,触发器翻转,计数加1。
例如由JK触发器组成的4位同步二进制加法计数器,令其用下降沿触发。
下面分析它的工作原理。
①输出方程
nnnnCQ?
Q3Q2Q1Q0
②驱动方程
J0?
K0?
1?
n?
J1?
K1?
Q0?
?
nn?
J2?
K2?
Q1Q0
nnn?
?
J3?
K3?
Q2Q1Q0
③状态方程
本实验中要求用VHDL语言设计同步4位二进制计数器,令其上升沿触发。
说明:
为了方便在QuartusII9.1sp2中完成编译和功能仿真,我们选择芯片CycloneII,EP2C70F89C6,而在DE2-115开发板中进行下载时,则需要选择与开发板相匹配的芯片CycloneIVE中的EP4CE115F29C7。
(芯片选择见下文详述,注意每次变换芯片后都需要重新编译)
【实验步骤】
1.1.1创建项目工程
1、首先新建一个文件夹。
利用资源管理器,新建一个文件夹,如:
d:
\test1。
作为本项目所有文件存放位置。
2、创建一个工程
(1)
软件。
(2)、再开始建立新项目工程。
点击:
【File】菜单,选择下拉列表中的【NewProjectWizard...】命令,打开建立新项目工程的向导对话框。
点击next。
完成以上命名工作后,点击Next,进入下一步。
图
(5)选择设计文件所需要的可编程芯片的型号,实验中我们所用的实验平台是DE2-115开发板。
由于DE2-115实验板中的FPGA芯片较新,QuartusII9.1sp2软件还没有为其提供相应的仿真功能,因此,我们要选择较早的芯片CycloneII,EP2C70F89C6
图
点击Next,进入下一步。
如下图对话框:
点击Finish,完成新建项目工程的任务。
1.1.2创建源程序文件
(1)新建一个VHDL项目文件。
打开QuartusII,选择菜单“File”?
“New”,在New窗中的“DesignFiles”中选择编译文件的语言类型,选“VHDLFile”(如图所示)。
图
(2)然后在VHDL文本编译窗中键入VHDL程序。
VHDL语言的程序代码如下图所示:
图
其中,CLK是时钟信号,CQ是4位数据输出端。
每当检测到CLK出现一个上升沿时,计数器就自加1并输出结果。
(3)键入程序后,点击保存,选择默认保存名。
在对工程进行编译处理前,必须做好必要的设置:
(1)选择目标芯片。
目标芯片的选择也可以这样来实现:
选择Assignments菜单中的Settings项,在弹出的对话框中选择Category项下的Device(也可以直接选择Assignments菜单中的Device项),然后选择目标芯片(方法同创建工程中的第5步)。
(2)选择目标器件闲置引脚的状态。
点击Assignments-----Device?
,在Device&PinOptions窗口中,选择UnusedPin项,设置目标器件闲置引脚的状态为输入状态(呈高阻态Asinputtri-stated)。
图