4位全加器实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四位全加器

11微电子黄跃1117426021

【实验目的】

采用modelsim集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四位进位加法器。

【实验内容】

加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。

实现多位二进制数相加的电路称为加法器,它能解决二进制中1+1=10的功能(当然还有 0+0、0+1、1+0).

【实验原理】

全加器

除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全

加器的方框图。图5全加器原理图。被加数A

i 、加数B

i

从低位向本位进位C

i-1

为电路的输入,全加和S

i 与向高位的进位C

i

作为电路的输出。能实现全加运算

功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。

信号输入端信号输出端

A i

B i

C i S i C i

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

表2 全加器逻辑功能真值表

图4 全加器方框图

图5 全加器原理图

多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。

四位全加器

如图9所示,四位全加器是由半加器和一位全加器组建而成:

图9 四位全加器原理图

【实验步骤】

(1)建立新工程项目:

打开modelsim软件,进入集成开发环境,点击File→New project建立一

个工程项目adder_4bit。

建立文本编辑文件:

点击File→New在该项目下新建Verilog源程序文件adder_4bit.v

并且输入源程序。

(2)编译和仿真工程项目:

在verilog主页面下,选择Compile— Compile All或点击工具栏上的按钮启动编译,直到project出现status栏全勾,即可进行仿真。

选择simulate - start simulate或点击工具栏上的按钮开始仿真,在跳出来的 start simulate框中选择work-test_adder_4bit测试模块,同时撤销Enable Optimisim前的勾,之后选择ok。

在sim-default框内右击选择test_adder_4bit,选择Add Wave,然后选择simulate-run-runall,观察波形,得出结论,仿真结束。

四位全加器

1、原理图设计

如图9所示,四位全加器是由半加器和一位全加器组建而成:

图9 四位全加器原理图

【仿真和测试结果】

下图为四位全加器的仿真图:

图10 仿真图

【程序源代码】

1位全加器程序代码如下:

module f_adder(a,b,cin,sum,cout);

output sum,cout;

input a,b,cin;

wire s1,c1,c2;

xor(s1,a,b);

and(c1,a,b);

or(sum,s1,cin);

and(c2,s1,cin);

xor (cout,c2,c1);

endmodule

四位全加器程序代码如下:

module adder_4bit(s,co,a,b,ci);

output[3:0] s;

output co;

input[3:0] a,b;

input ci;

wire ci1,ci2,ci3;

f_adder f0(a[0],b[0],ci,s[0],ci1);

f_adder f1(a[1],b[1],ci1,s[1],ci2);

f_adder f2(a[2],b[2],ci2,s[2],ci3);

f_adder f3(a[3],b[3],ci3,s[3],co);

Endmodule

四位全加器测试程序代码如下:

module test_adder_4bit;

reg [3:0] A,B;

reg CI;

wire [3:0] S;

wire CO;

adder_4bit A1(S,CO,A,B,CI);

initial

begin

$monitor($time,"A=%b,B=%b,CI=%b,CO=%b,S=%b\n",A,B,CI,CO,S);

end

initial

begin

A=4'd0;B=4'd0; CI=1'B0;

#5 A=4'd3;B=4'd4;

#5 A=4'd2;B=4'd5;

#5 A=4'd9;B=4'd9;

#5 A=4'd10;B=4'd15;

#5 A=4'd10;B=4'd5;CI=1'b1;

end

endmodule

【实验心得和体会】

通过设计4位全加器,熟练了原理图输入方法,学会使用Verilog语言输入方法,也能较灵活地使用modlesim软件。

由时序图可以看出实现了4位全加器的功能,Verilog的程序设计是正确的,实验是成功的。

相关文档
最新文档