广工计算机组成原理实验
实验二要求:
例2-19一位全加器,要做出仿真波形
提交完整详细的代码,元件图,测试波形,说明文字
一、实验目的
- 学习、掌握QuartusII开发平台的基本使用
- 设计一个一位全加器,并验证全加器的功能
二、实验说明和实验原理
一个一位全加器可以用两个一位半加器和一个或门连接而成。而一个一位半加器可由基本门电路组成。
- 半加器设计原理:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。
其中:a、b分别为被加数与加数,作为电路的输入端;s0为两数相加产生的本位和,它和两数相加产生的向高位的进位c0一起作为电路的输出。 - 全加器设计原理:除本位两个数相加之外,还要加上从低位来的进位数,称为全加器。
其中:a为被加数,b为加数,c为低位向本位的进位,c0为本位向高位的进位,s0为本位和。
三、实验内容
利用VHDL编辑程序实现半加器和或门,再连接半加器和或门完成全加器的设计。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY f_adder IS
PORT (ain,bin,cin:IN STD_LOGIC;
cout,sum:OUT STD_LOGIC);
END ENTITY f_adder;
ARCHITECTURE fd1 OF f_adder IS
COMPONENT h_adder
PORT (a,b:IN STD_LOGIC;
co,so:OUT STD_LOGIC);
END COMPONENT;
COMPONENT or2a
PORT(a,b:IN STD_LOGIC;
c: OUT STD_LOGIC);
END COMPONENT;
SIGNAL d,e,f : STD_LOGIC;
BEGIN
u1: h_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e);
u2: h_adder PORT MAP(a=>e,b=>cin,co=>f,so=>sum);
u3: or2a PORT MAP(a=>d,b=>f,c=>cout);
END ARCHITECTURE fd1;
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;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY or2a IS
PORT(a,b:IN STD_LOGIC;
c: OUT STD_LOGIC);
END ENTITY or2a;
ARCHITECTURE one OF or2a IS
BEGIN
c<=a OR b;
END ARCHITECTURE one;
四、元件图
五、测试结果
六、实验心得
- 通过这次实验,学习且掌握了QuartusII开发平台的基本使用。
- 能设计出一个一位全加器,并验证全加器的功能。
- 学会了使用元件例化语句。例化语句用于层次设计,即在当前设计中调用一个已经设计好的功能模块。
COMPONENT 元件名 IS
PORT (端口名表) ;
END COMPONENT 文件名 ;
例化名 : 元件名 PORT MAP( [端口名 =>] 连接端口名,…);