您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网 > 电子百科 > 半导体技术 > 基础知识 >

什么是一位全加器,其原理是什么?

2010年03月08日 17:13 www.elecfans.co 作者:佚名 用户评论(0

什么是一位全加器,其原理是什么

 加器是能够计算低位进位的二进制加法电路

一位全加器由2个半加器组成,其电路原理如图4-2所示


  一位全加器(FA)的逻辑表达式为:
  S=A⊕B⊕Cin
  Co=AB+BCin+ACin
  其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;
  如果要实现多位加法可以进行级联,就是串起来使用;比如32位+32位,就需要32个全加器;这种级联就是串行结构速度慢,如果要并行快速相加可以用超前进位加法,
  超前进位加法前查阅相关资料;
  如果将全加器的输入置换成A和B的组合函数Xi和Y(S0…S3控制),然后再将X,Y和进位数通过全加器进行全加,就是ALU的逻辑结构结构。
  即 X=f(A,B)
  Y=f(A,B)
  不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。
 

表2-1一位全加器的真值表

ADD1 0 0 1 1 0 0 1 1
ADD2
0 1 0 1 0 1 0 1
CARRY_OUT
0 0 0 0 1 1 1 1
SUM< 0 1 1 0 1 0    0 1

一、         实验目的

1.       熟悉QUARTUSII软件的使用;

2.       熟悉实验箱的使用;

3.       掌握利用层次结构描述法设计电路。

二、         实验原理及说明

由数字电路知识可知,一位全加器可由两个一位半加器与一个或门构成,其原理图如图1所示。该设计利用层次结构描述法,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中a,b,cin信号可采用实验箱上键1、键2和键3进行输入,s,co信号采用D1与D2发光二极管来显示。

1位全加器的设计(1)

图1.1 全加器原理图

三、         实验步骤

1.    建立full_adder的工程(project)

在QUARTUSII软件下创建一工程,工程名为full_adder,芯片名为EP 1C3T144,选择FPGA目标器件,根据DE2的平台情况,选择cyclone II系列的EP2C35F672C6,注意工程路径不要放到安装路径;

2.    设计half_adder的VHDL模块

新建VHDL语言文件,输入如下半加器VHDL语言源程序,并存盘为half_adder.vhd;

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity half_adder is

           port( a : in STD_LOGIC;

                  b : in STD_LOGIC;

                  s : out STD_LOGIC;

                 co : out STD_LOGIC );

end half_adder;

architecture half_adder of half_adder is

signal c,d:std_logic;

begin

       c<=a or b;

       d<=a nand b;

       co<=not d;

       s<=c and d;

end half_adder;

 

3.      验证half_adder.vhd的正确与否,进行仿真

一般先进行功能仿真,再进行时序仿真。为了仿真,首先编辑测试文件。本次实验由于系统简单,采用对输入信号进行输入波形编辑的方法得到激励文件

 

4.      进行功能仿真

(1)设置仿真器进行功能仿真:

•         Assignments—>setting,选择simulation setting,在simulation mode中选择functional

•         在对话框中的simulation input中选择half_adder.vwf,指定激励文件

•         由Processing—>generat functional simulation netlist得到功能仿真的网表文件

•         由Processing—>start simulation得到功能仿真波形1位全加器(2)

(2)设置仿真器进行时序仿真:

•         改变仿真器的设置,Assignments—>setting

•         选择仿真器设置,更改仿真模式,选择timing

•         由Processing—>start Compilation对设计进行编译

•         由Processing—>start simulation得到时序仿真波形1位全加器(2)

5.      封装

6.      编辑全加器的原理图

由file->new,打开原理图文件,并存盘为full_adder.bdf

在原理图中调用半加器与或门模块,按照图1.1所示连接电路,完成后另保存full_adder。1位全加器(2)

7.      对设计进行全编译,如出现错误请按照错误提示进行修改。

•      由Processing->Start Compilation对设计进行全编译。

•     编辑波形文件对全加器模块进行功能仿真和时序仿真。

8.      锁定引脚,下载

实验采用模式5,锁定引脚对照表如下

                     

信号

键1

键2

键3

D1

D2

引脚号

1

2

3

11

32

 

执行ASSIGNMENT-PINS,设置完成后,执行下载。

下载:采用JATG方式进行下载,通过键1、键2与键3的输入,观察D1,D2的亮灭验证全加器的逻辑功能。(此时,电脑与下载线都要连接到实验箱上,且每次连线都必须先关掉电源)

 

四、         思考题

1.为什么在实验步骤3中,将半加器保存为half_adder,可否保存为full_adder?

答:不能保存为full_adder,因为VHDL语言中,要求程序名与实体名一致,否则会出现错误;而且这个程序是生成半加器模块的程序,统一命名对模块理解也容易得多。

2.对电路进行功能仿真与时序仿真时,发现二者有什么样的区别?

   答:功能仿真就是将综合后的VHDL网表文件再送到VHDL仿真器中所进行仿真。这时的仿真仅对VHDL描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件特性,如延时特性。时序仿真就是将布线器/适配器所产生的VHDL网表文件送到VHDL仿真器中所进行的仿真。该仿真已将器件特性考虑进去了,因此可以得到精确的时序仿真结果。

3.为什么要进行引脚锁定?

   答:进行引脚锁定,是为了对硬件进行检测,就是FPGA/CPLD直接应用与系统设计中,将下载文件下载到芯片后,对系统的设计进行的功能检测的过程。

4.采用层次结构法描述电路有什么样的优点?

  答:可以大大降低设计成本,缩短设计周期;极大地简化设计文档的管理;提高大规模系统电子设计的自动化程度;设计者拥有完全的自主权,再无受制于人之虞;良好的可移植与可测试性,为系统开发提供可靠的保证;能将所有设计环节纳入统一的自顶向下的设计方案中;在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试。 

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

( 发表人:admin )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!