预习报告部分
- 实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言RTL描述方式的编写方法。
- 实验原理:本实验用实验二“full_adder”的实体作为元件,用port map语句将下图的电路描述出来,实现四位加法器(并与实验三、实验四的加法器进行比较。)
- 实验内容:
设计一个四位加法器,实体名称为“adder4_3”,其引脚及其功能如下表。
端口模式 | 端口名 | 数据类型 | 说明 |
in (输入) | A | std_logic_vector(3 downto 0) | 加数 |
B | 加数 | ||
Ci | std_logic | 低位进位 | |
out (输出) | S | std_logic_vector(3 downto 0) | 和 |
Co | std_logic | 高位进位 |
要求应用一位全加器(实验二中所实现的)按如下电路图通过结构描述方式构造四位加法器。
本实验需要用的结构描述方法,请同学们参考课本第5章5.3节及其例题:例5-16和第8章例题:例8-14和例8-15。
本实验用实验二“full_adder”的实体作为元件,用port map语句描述出来将下图的电路,实现四位加法器,并与实验三、实验四的加法器进行比较。
- 实验所用设备:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件
五、实验步骤:①建立工程、②编辑代码、③编译及修改错误、④建立仿真波形并仿真、⑤根据仿真结果分析设计是否正确。
实验报告部分
- 实验步骤:
- 新建文件夹,建立工程 adder4_3
- 将实验二的full_adder拷贝到工程目录下
- 输入代码,保存并编译运行
- 显示工程的电路图
- 新建仿真波形图
- 判断仿真波形图结果和理论值是否相符
二、 实验数据及结果分析
通过对多组实验数据的分析,判断其符合预期结果。如图所示,如当A=0000,B=0000,ci=1时,他们的和为0001,产生的最高位进位co为0,正确。
三、实验结论
用一位全加器的实体通过结构描述的方式构造出四位加法器,这样的方式使全加器更加有效率的解决逻辑运算。并且port map和component语句得使用使代码更加简洁明了,结果更准确。
四、总结与心得体会
利用port map语句时比之前的实验更加方便,并且在调用程序时,复用性更强,可读性更高,开发效率也更高。
五、附录(实验源码)
library ieee;
use ieee.std_logic_1164.all;
entity full_adder is
port(a,b,ci:in std_logic;
s,co:out std_logic);
end entity;
architecture rtl of full_adder is
begin
s<= a xor b xor ci;
co<=(a and b) or (a and ci) or (b and ci);
end rtl;
library ieee;
use ieee.std_logic_1164.all;
entity adder4_3 is
port(A,B: in std_logic_vector(3 downto 0);
Ci : in std_logic;
S: out std_logic_vector(3 downto 0);
Co:out std_logic);
end entity;
architecture fadd of adder4_3 is
component full_adder is
port(a,b,ci:in std_logic;
s,co: out std_logic);
end component;
signal c0,c1,c2: std_logic;
begin
u0:full_adder port map(A(0),B(0),ci,S(0),c0);
u1:full_adder port map(A(1),B(1),c0,S(1),c1);
u2:full_adder port map(A(2),B(2),c1,S(2),c2);
u3:full_adder port map(A(3),B(3),c2,S(3),co);
end fadd;