一位全加器 VHDL设计与实现

作者:chenjieb520

一.设计目的

熟悉Quartus IIVHDL文本设计流程全过程,学习组合电路的设计,仿真和测试。

二.设计内容

设计一位全加器,给出程序的设计、软件编译、仿真分析、硬件测试及详细实验过程。

三.程序设计原理

   实验步骤:

 (1) 新建一个QuartusⅡ工程,用以在DE2平台上实现所要求的电路。

(2) 建立一个VHDL文件,实现一位全加器电路,完成编译。

(3) 新建一个波形文件,进行仿真分析,验证功能。

  (4) 参照DE2平台的引脚分配表分配引脚,用SW2~SW0作为输入ain bin cinDE2平台上的LEDR0输出sum, LEDR1输出cout

  (5) 编译工程,完成后下载到FPGA中。

(6) 拨动波段开关并观察LED灯的显示,以验证设计的功能是否正确。

 原理:

      本实验的原理是利用两个一位的半加器来组成一个一位的全加器。在程序设计中,利用组件化的思想来调用两个功能比较简单的半加器来实现功能稍加复杂的全加器。而一位半加器的设计思想就是利用真值表来进行设计即可。真值表如下:

a

b

so

co

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

四.程序流程图

 电路图:


程序流程图:由于本程序的逻辑设计比较简单,这里就不画程序流程图。程序的主要逻辑设计就是根据半加器的真值表进行设计的。

五.源程序

//h_adder.vhdl

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;

// or2a.vhdl

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;

// adder.vhdl

library ieee;

use ieee.std_logic_1164.all;

entity adder is

port(ain,bin,cin:in std_logic;cout,sum:out std_logic);

end entity adder;

architecture fd1 of 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;

六.调试过程

一位全加器 VHDL设计与实现_第1张图片

一位全加器 VHDL设计与实现_第2张图片


七.遇到的问题及解决方法

1、由于这是第一的实验,对于实验的环境很是陌生,导致在刚开始的时候,对整个程序的运行的过程很不熟悉,后来在老师的指导下,才懂得一些入门的知识。

2、在VHDL编程中,实体名要和文件名一样,否则编译就会出现错误。

3、在建立一般的仿真波形时,要注意将相应的引脚添加进来,在对各个输入的引脚进行波形编辑,然后尽量地遍历所有的情况。

4、在将程序下载的硬件的时候,不能只是单纯地就进行下载,应该在设置所有的硬件参数之后,要对整个项目重新编译一次,这样才能保证下载到机器上的程序是最新的,否则是得不到我们想要的结果的。

5、总之,经过这次的实验,了解到了VHDL的一般编写过程,如何进行调试和分析运行结果。

八.参考文献

EDA技术与VHDL(第二版) 潘松  黄继业 编著




你可能感兴趣的:(编程,c,测试,平台)