1、VHDL硬件描述语言四位加法器实验报告题目:硬件描述语言实验四:四位加法器姓名:* 学号: * 地点: 主楼402 时间: 3月21日 一、实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。二、实验环境:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。三、设计要求:采用三种方式设计一个四位加法器,实体名称分别为“adder4”、“adder4_2”、和“adder_3”,四位加法器的引脚与功能如下表。端口模式端口名数据类型说明in(输入)astd_logic_vector(3 downto 0)加数b加
2、数cistd_logic低位进位out(输出)sstd_logic_vector(3 downto 0)和costd_logic高位进位四、实验步骤:1、采用寄存器传输的描述方式:首先新建一个工程,命名为“adder4”,然后编辑代码。注意在模块内部(构造体说明部分)需要定义三个连接线,定义语句为:signal c0,c1,c2 : std_logic代码如下:library ieee;use ieee.std_logic_1164.all;entity adder4 isport ( a,b : in std_logic_vector (3 downto 0); ci : in std_lo
3、gic; s : out std_logic_vector (3 downto 0); co : out std_logic );end entity;architecture rtl of adder4 issignal c0,c1,c2 : std_logic;begin s(0) = a(0) xor b(0) xor ci; c0= (a(0) and b(0) or (a(0) and ci) or (b(0) and ci); s(1)= a(1) xor b(1) xor c0; c1= (a(1) and b(1) or (a(1) and c0) or (b(1) and c
4、0); s(2)= a(2) xor b(2) xor c1; c2= (a(2) and b(2) or (a(2) and c1) or (b(2) and c1); s(3)= a(3) xor b(3) xor c2; co= (a(3) and b(3) or (a(3) and c2) or (b(3) and c2);end rtl;仿真波形图如下:仿真电路图如下:由上图可知设计是正确的。2、采用行为描述方式:首先新建一个工程,命名为“adder4_2”,然后编辑代码。在编写代码过程中应注意以下几个要点:1、VHDL语言可以进行高层次抽象的行为描述,而不用描述硬件电路的具体逻辑关
5、系。例如在描述加法器时,可以用如下语句:s = a + b + ci;上述描述方法需要用到ieee库中的ieee.std_logic_unsigned.all。2、为了能够生成进位,四位加法器在内部应得到五位的和,因此两个加数也应扩充为五位。扩充字长可应用并置运算完成。如下语句将四位信号a在最高端并置一个0而成为五位信号aa:aa = 0 & a;将五位信号ss的低四位赋值给四位信号s的语句如下:s = ss(3 downto 0);和的最高位作为加法器的进位输出。代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_
6、unsigned.all;entity adder4_2 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 rtl of adder4_2 issignal aa,bb,ss:std_logic_vector(4 downto 0);begin aa = 0&a; bb = 0&b; ss = aa+bb+ci; s = ss(3 downto 0
7、); co= ss(4);end rtl;仿真波形图如下:仿真电路图如下:由上图可知设计是正确的。3、采用构造体的结构描述方式:首先新建一个工程,命名为“adder4_3”,然后编辑代码。(附加要求:应用一位全加器按如下电路图通过结构描述方式构造四位加法器)代码如下:library ieee;use ieee.std_logic_1164.all;entity full_adder is port ( a : in std_logic; b : in std_logic; ci : in std_logic; s : out std_logic; co : out std_logic );en
8、d entity;architecture rtl of full_adder isbegin 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;use ieee.std_logic_unsigned.all;entity adder4_3 is port ( A,B : in std_logic_vector(3 downto 0); Ci : in std_logic; S : out std_logic_vector
9、(3 downto 0); Co : out std_logic );end entity;architecture rtl of adder4_3 issignal C0,C1,C2:std_logic;component full_adder is port ( a,b : in std_logic; ci : in std_logic; s : out std_logic; co : out std_logic );end component full_adder;beginU0:full_adder port map(A(0),B(0),Ci,S(0),C0);U1:full_adde
10、r 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 rtl;仿真波形图如下:仿真电路图如下:由上图可知设计是正确的。5、三种描述方式的比较:这三种描述方式是从不同的角度对硬件系统进行行为和功能的描述。行为方式描述是对整个系统数学模型的描述,并不真正考虑其实际的操作,用行为方式描述的系统结构的程序其抽象程度高,很难直接映射到具体的逻辑元件的实现。要想得到具体的元件实现,必须将行为描述的VHDL语言程序改写为RTL方式描述的程序。采用RTL方式描述才能导出系统的逻辑表达式,才能直接得到逻辑元件之间的链接关系。构造体的结构描述方式是RTL方式描述的一种特殊的形式,它可以将已有的设计成果应用到新的设计中,提高了设计的效率。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1