2 全加器并行加法器串行加法器的仿真实验报告.docx
《2 全加器并行加法器串行加法器的仿真实验报告.docx》由会员分享,可在线阅读,更多相关《2 全加器并行加法器串行加法器的仿真实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
2全加器并行加法器串行加法器的仿真实验报告
实验二加法器的设计与仿真
一、实验内容
1.用VHDL语言设计全加器;
2.利用设计的全加器组成串行加法器;
3.用VHDL语言设计并行加法器。
二、实验要求
1.进实验室前,请写一份预习报告;进实验室时经指导老师检查后,才可上机操作。
2.预习报告内容有:
用VHDL语言编写全加器、串行加法器和并行加法器。
3.在文本编辑区使用VHDL硬件描述语言设计逻辑电路,再利用波形编辑区进行逻辑功能仿真,以此验证电路的逻辑功能是否正确,最后在实验箱上进行下载验证。
4.实验结束前,由指导老师检查了以上三种电路的仿真波形和实验箱上的实验结果后方可离开。
三、电路功能介绍
1.全加器
用途:
实现一位全加操作
逻辑图
真值表
X
Y
CIN
S
COUT
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
VHDL程序
数据流描述:
波形图
2.四位串行加法器
逻辑图
波形图
3.74283:
4位先行进位全加器(4-BitFullAdder)
逻辑框图
逻辑功能表
注:
1、输入信号和输出信号采用两位对折列表,节省表格占用的空间,如:
[A1/A3]对应的列取值相同,结果和值[Σ1/Σ3]对应的运算是Σ1=A1+B1和Σ3=A3+B3。
请自行验证一下。
2、C2是低两位相加产生的半进位,C4是高两位相加后产生的进位输出,C0是低位级加法器向本级加法器的进位输入。
VHDL实现
全加器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYf_adderIS
PORT(
x,y,cin:
INSTD_LOGIC;
S,cout:
OUTSTD_LOGIC
);
ENDENTITYf_adder;
ARCHITECTUREbhvOFf_adderIS
BEGIN
s<=xXORyXORcin;
cout<=(xANDy)OR(xANDcin)OR(yANDcin);
ENDARCHITECTUREbhv;
波形图:
逻辑图:
4位串行加法器
VHDL语言实现
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYcxjfqIS
PORT
(
CIN:
INSTD_LOGIC;
X0:
INSTD_LOGIC;
Y0:
INSTD_LOGIC;
X1:
INSTD_LOGIC;
Y1:
INSTD_LOGIC;
X2:
INSTD_LOGIC;
Y2:
INSTD_LOGIC;
X3:
INSTD_LOGIC;
Y3:
INSTD_LOGIC;
S0:
OUTSTD_LOGIC;
S1:
OUTSTD_LOGIC;
S2:
OUTSTD_LOGIC;
S3:
OUTSTD_LOGIC;
COUT:
OUTSTD_LOGIC
);
ENDcxjfq;
ARCHITECTUREbdf_typeOFcxjfqIS
COMPONENTf_adder
PORT(x:
INSTD_LOGIC;
y:
INSTD_LOGIC;
cin:
INSTD_LOGIC;
S:
OUTSTD_LOGIC;
cout:
OUTSTD_LOGIC
);
ENDCOMPONENT;
SIGNALSYNTHESIZED_WIRE_0:
STD_LOGIC;
SIGNALSYNTHESIZED_WIRE_1:
STD_LOGIC;
SIGNALSYNTHESIZED_WIRE_2:
STD_LOGIC;
BEGIN
b2v_inst:
f_adder
PORTMAP(x=>CIN,
y=>X0,
cin=>Y0,
S=>S0,
cout=>SYNTHESIZED_WIRE_0);
b2v_inst1:
f_adder
PORTMAP(x=>SYNTHESIZED_WIRE_0,
y=>X1,
cin=>Y1,
S=>S1,
cout=>SYNTHESIZED_WIRE_1);
b2v_inst2:
f_adder
PORTMAP(x=>SYNTHESIZED_WIRE_1,
y=>X2,
cin=>Y2,
S=>S2,
cout=>SYNTHESIZED_WIRE_2);
b2v_inst3:
f_adder
PORTMAP(x=>SYNTHESIZED_WIRE_2,
y=>X3,
cin=>Y3,
S=>S3,
cout=>COUT);
ENDbdf_type;
仿真结果
逻辑图
3.74283:
4位先行进位全加器(4-BitFullAdder)
VHDL语言实现:
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITY74283_0IS
PORT
(
CIN:
INSTD_LOGIC;
A1:
INSTD_LOGIC;
A2:
INSTD_LOGIC;
B2:
INSTD_LOGIC;
A3:
INSTD_LOGIC;
A4:
INSTD_LOGIC;
B4:
INSTD_LOGIC;
B1:
INSTD_LOGIC;
B3:
INSTD_LOGIC;
SUM4:
OUTSTD_LOGIC;
COUT:
OUTSTD_LOGIC;
SUM1:
OUTSTD_LOGIC;
SUM2:
OUTSTD_LOGIC;
SUM3:
OUTSTD_LOGIC
);
END74283_0;
ARCHITECTUREbdf_typeOF74283_0IS
BEGIN
--instantiatemacrofunction
b2v_inst:
74283
PORTMAP(CIN=>CIN,
A1=>A1,
A2=>A2,
B2=>B2,
A3=>A3,
A4=>A4,
B4=>B4,
B1=>B1,
B3=>B3,
SUM4=>SUM4,
COUT=>COUT,
SUM1=>SUM1,
SUM2=>SUM2,
SUM3=>SUM3);
ENDbdf_type;
逻辑图:
波形图: