半加器全加器的工作原理和设计方法实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
1、学习和掌握半加器全加器的工作原理和设计方法。
2、熟悉EDA工具Quartus II的使用,能够熟练运用Vrilog HDL语言在
Quartus II下进行工程开发、调试和仿真。
3、掌握组合逻辑电路在Quartus Ⅱ中的图形输入方法及文本输入方法,
掌握层次化设计方法。
4、掌握半加器、全加器采用不同的描述方法。
二、实验容
1、完成半加器全加器的设计,包括原理图输入,编译、综合、适配、仿真等。并将半加器电路设
置成一个硬件符号入库
2、建立更高层次的原理图设计,利用1位半加器构成1位全加器,并完成编译、综合、适配、仿
真并硬件测试
3、采用图形输入法设计1位加法器分别采用图形输入和文本输入方法,设计全加器
4、实验报告:详细叙述1位全加法器的设计流程,给出各层次的原理图及其对应的仿真波形图,
给出加法器的上时序分析情况,最后给出硬件测试流程和结果。
三、实验步骤
1、建立一个Project。
2、编辑一个VHDL程序,要求用VHDL结构描述的方法设计一个半加器
3、对该VHDL程序进行编译,修改错误。
4、建立一个波形文件。(根据真值表)
5、对该VHDL程序进行功能仿真和时序仿真
四、实验现象
任务1:半加器真值表描述方法
代码如下:
半加器是只考虑两个加数本身,而不考虑来自低位进位的逻辑电路
S=A B+A B CO=AB
代码如下:
LIBRARY IEEE; --行为描述半加器 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS
PORT(a,b:IN STD_LOGIC; so,co:OUT STD_LOGIC); END h_adder;
Architecture FH1 OF h_adder IS
Signal abc:STD_LOGIC_vector(1 downto 0); Begin
abc<=a&b; --并 Process(abc) --进程 begin
case abc is
WHEN "00"=>SO<='0';CO<='0'; WHEN "01"=>SO<='1';CO<='0'; WHEN "10"=>SO<='1';CO<='0'; WHEN "11"=>SO<='0';CO<='1'; WHEN OTHERS =>NULL; END CASE; END PROCESS;
END ARCHITECTURE FH1; 结果如下:
逻辑图
半加器真值表
A i
B i S i
C i 0 0 0 1 1 0 1 1
0 0 1 0 1 0 0 1
任务2:二进制加法运算规则描述
代码如下:
LIBRARY IEEE;--行为描述(抽象描述结构体的功能) USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder2 is --半加器
PORT(A,B:IN STD_LOGIC;
S,C0:OUT STD_LOGIC);
END h_adder2;
ARCHITECTURE be_half_adder OF h_adder2 IS BEGIN
PROCESS(A,B)
BEGIN
IF(A='0' AND B='0') THEN S<='0';C0<='0'; ELSIF(A='0' AND B='1') THEN
S<='1';C0<='0';
ELSIF(A='1' AND B='0') THEN S<='1';C0<='0'; ELSE
S<='0';C0<='1';
END IF;
END PROCESS;
END be_half_adder;
结果如下:
任务3:按逻辑表达式设计
代码如下:
LIBRARY IEEE; --行为描述半加器(按逻辑表达式)USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder3 IS
PORT(a,b:IN STD_LOGIC;
so,co:OUT STD_LOGIC);
END h_adder3;
Architecture FH1 OF h_adder3 IS
Begin
so<=a XOR b ;
co<=a AND b;
END ARCHITECTURE FH1;
结果如下:
任务4:用基本单元电路与或非描述半加器
代码如下:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity h_adder4 is
port(a:in STD_LOGIC;
b:in STD_LOGIC;
sum:out STD_LOGIC;
co:out STD_LOGIC );
end h_adder4;
architecture ch4 of h_adder4 is
signal c,d:std_logic;
begin
c<=a or b;
d<=a nand b;
co<=not d;
sum<=c and d;
end architecture ch4;
结果如下: