本科学生实验报告
学号 114090316 姓名 李魁
学院 物电学院 专业、班级 11应电班
实验课程名称 电子
自动化(EDA实验)
教师及职称 罗永道 副教授
开课学期 2013 至 2014 学年 下 学期
填报时间 2014 年 5 月 6 日
云南师范大学教务处编印
实验序号
2
实验名称
加法器
实验时间
2014年5月6日
实验室
同析楼114
一.实验预习
1.实验目的:
(1) 掌握半加器和全加器的工作原理;
(2) 掌握VHDL编程语言的使用;
(3) 熟悉Quartus II软件的使用。
(1) 半加器
半加器(设此模块的器件名称是h_adder)的电路原理图如图1所示,半加器对应的逻辑真值
如图2所示。此电路模块由两个基本逻辑门元件构成,即与门和异或门。图中的a和b是是加数和被加数的数据输入端口;so是和值的数据输出端口;co则是进位数据的输出端口。根据图1的电路结构,很容易获得半加器的逻辑表述是
;
图1 半加器的电路结构
a
b
so
co
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
图2 半加器的真值表
(2)全加器
全加器可以由两个半加器和一个或门连接而成,其经典的电路结构如图3所示。此图右侧是全加器的实体模块,它显示了全加器的端口情况。看来,设计全加器之前,必须首先设计好半加器和或门电路,把它们作为全加器的元件,再按照全加器的电路结构连接起来。最后获得的全加器电路可称为顶层设计。全加器所对应的真值表如图4所示。
图3 全加器的电路结构
a
b
ci
so
co
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
图4 全加器的真值表
2.实验设备及材料
电脑一台,QuartusII 实验平台
3.实验
步骤及注意事项
实验方法步骤:
(1)打开计算机;
(2)打开Quartur II软件,编写和调试实验代码,然后进行试验仿真。
注意事项:
实验过程中认真分析实验原理编写代码,防止
本、书包等物品与实验设备接触,以免造成不必要的麻烦。
二.实验内容
1.实验现象与结果
(1) 半加器实验代码为:
library ieee;
use ieee.std_logic_1164.all;
entity h_adder is
port (a,b:in std_logic;
co,so:out std_logic);
end entity h_adder;
architecture fh1 of h_adder is
begin
so<=not(a xor (not b)) ; co<=a and b;
end architecture fh1;
(2)半加器编译报告为:
(3)半加器仿真波形如下所示:
(4)半加器RTL图为:
(5)半加器符号图为:
(6)全加器实验VHDL代码为:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY work;
ENTITY f_adder IS
port
(
ain : IN STD_LOGIC;
bin : IN STD_LOGIC;
cin : IN STD_LOGIC;
sun : OUT STD_LOGIC;
cout : OUT STD_LOGIC
);
END f_adder;
ARCHITECTURE bdf_type OF f_adder IS
component h_adder
PORT(a : IN STD_LOGIC;
b : IN STD_LOGIC;
co : OUT STD_LOGIC;
so : OUT STD_LOGIC
);
end component;
signal SYNTHESIZED_WIRE_0 : STD_LOGIC;
signal SYNTHESIZED_WIRE_1 : STD_LOGIC;
signal SYNTHESIZED_WIRE_2 : STD_LOGIC;
BEGIN
b2v_inst : h_adder
PORT MAP(a => ain,
b => bin,
co => SYNTHESIZED_WIRE_2,
so => SYNTHESIZED_WIRE_0);
b2v_inst1 : h_adder
PORT MAP(a => SYNTHESIZED_WIRE_0,
b => cin,
co => SYNTHESIZED_WIRE_1,
so => sun);
cout <= SYNTHESIZED_WIRE_1 OR SYNTHESIZED_WIRE_2;
END;
(7)全加器编译报告为:
(8)全加器其仿真波形如下所示:
(9)全加器RTL图为:
(10)全加器符号图为:
2.对实验现象、实验结果的分析及其结论
1.创建VWF文件
2.设定“End Time”为20us
3.在VWF文件中添加Node OR Bus
4.编辑波形
5.仿真
6.画出仿真结果
由波形仿真图可以看出,用原理图输入的方法仿真电路图,时序仿真存在延时和毛刺现象,更加接近真实电路,而功能仿真不存在这些现象。
至此一位全加器的设计和仿真就此完成。
1.为什么在实验步骤3中,将半加器保存为half_adder,可否保存为full_adder?
答:不能保存为full_adder,因为VHDL语言中,
程序名与实体名一致,否则会出现错误;而且这个程序是生成半加器模块的程序,统一命名对模块理解也容易得多。
教师评语及评分:
签名: 年 月 日