8位全加器

  • 格式:doc
  • 大小:486.00 KB
  • 文档页数:11

常熟理工学院课程设计报告

物理与电子工程学院EDA实验室

目录

一、设计目的和要求 ....................................... 1

1.课程设计目的 ........................................ 1

2.课程设计的基本要求 .................................. 1

3.课程设计类型 ........................................ 1

二、仪器和设备 ........................................... 1

三、设计过程 ............................................. 1

1.设计内容和要求 ...................................... 1

2.设计方法和开发步骤 .................................. 2

3.设计思路 ............................................ 2

4.设计难点 ............................................ 4

四、设计结果与分析 ....................................... 4

1.思路问题以及测试结果失败分析 ........................ 4

2.程序简要说明 ........................................ 5

五、心得体会 ............................................. 9

六、参考文献 ............................................ 10

常熟理工学院课程设计报告

物理与电子工程学院EDA实验室

一、设计目的和要求

1.课程设计目的

设计一个带进位的八位二进制加法计数器:要求在MAX+plusⅡ10.2软件的工作平台上用VHDL语言层次设计出一个带进位的八位二进制加法器,并通过编译及时序仿真检查设计结果。

2.课程设计的基本要求

全加器与带进位输入8位加法器设计要求我们通过8位全加器的设计掌握层次化设计的方法,充分理解全加器的设计过程,掌握一位全加器的程序,熟悉MAX+plusⅡ10.2软件的文本和原理图输入方法设计简单组合电路。

课程设计过程中要求能实现同步和异步的八位二进制全加器的设计。

3.课程设计类型

EDA课程设计

二、仪器和设备

PC机、MAX+plusⅡ10.2软件

三、设计过程

1.设计内容和要求

方法一:

1.原理图输入完成半加器和1位全加器的设计,并封装入库

2.层次化设计,建立顶层文件,由8个1位全加器串联构成8位全加器

3.每一层次均需进行编译、综合、适配及仿真

方法二:

1. 原理图输入完成一个四位全加器的设计

2.层次化设计,建立顶层文件,由2个4位全加器串联构成8位全加器

3.每一层次均需进行编译、综合、适配及仿真 常熟理工学院课程设计报告

物理与电子工程学院EDA实验室 2.设计方法和开发步骤

加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。

实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。

因此这次课程设计中的8 位加法器可采用两个4位二进制并行加法器级联而成。此外我们还讨论了由八个一位全加器串联构成的八位二进制全加器。设计中前者设计为同步加法器,后者设计为异步加法器。

3.设计思路

方法一:异步八位全加器

设计流程图如下:

图1异步八位流程图

常熟理工学院课程设计报告

物理与电子工程学院EDA实验室 设计原理图如下页所示:

图2 异步八位全加器

方法二:同步八位全加器

设计流程图如下:

图3同步八位流程图

设计原理图如下页所示: 四

常熟理工学院课程设计报告

物理与电子工程学院EDA实验室

图4 同步八位全加器

4.设计难点

(1)半加器的设计:半加器不考虑低位向本位的进位,因此它有两个输入端和两个输出设加数(输入端)为A、B;和为S;向高位的进位为Ci+1;函数的逻辑表达式为:S=A⊕B;Ci+1=AB。

(2)四位二进制带进位加法器:两个四位二进制数进行加法运算,同时产生进位。当两个二进制数相加时,较高高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。

(3)同步设计:同步是有时钟信号输入,根据时钟信号来判断是否执行计算。

四、设计结果与分析

1.思路问题以及测试结果失败分析

(1)设计程序时保存文件名要与实体名一致,设计过程中出现了几次这样的低级错误,值得注意。

(2)所设计的程序文件不能直接放在根目录下,我们在自己笔记本上做完直接拷贝到实验室计算机上放在了E盘根目录下这样会出错。

(3)生成了ADD4元件后进行绘制原理图,因为输入输出是8位,也就是说常熟理工学院课程设计报告

物理与电子工程学院EDA实验室 要有16个输入,8个输出,但是开始绘图的时候只绘制了2个输入,一个输出,提示输入与总线连接不符合。

(4)在8个一位全加器组成8位加法器的波形仿真时候由于把时间间隔设置的特别小到20.0ns,导致计算机还没计算完前一个数据就开始下一个数据了,如下图

图5 方法一的错误仿真波形

附:由于开始时没有具体要求,我们做了两种方案的异步全加器,由两个四位全加器串联而成的八位全加器仿真时出现的问题如下:

(5)在两个4位全加器组成的8位加法器波形仿真时出现如下图形红色框中的现象,反复仿真多次结果一样,才明白,刚开始计算机会有延迟处理信号,后面的信号就正常了。

图6

2.程序简要说明

方法一:异步八位全加器

(1)设计一个半加器

VHDL源程序代码(关键代码)

ARCHITECTURE FH1 OF H_ADDER IS

BEGIN

SO <= NOT (A XOR (NOT B)); 常熟理工学院课程设计报告

物理与电子工程学院EDA实验室 CO <= A AND B;

END ARCHITECTURE FH1;

具体功能:

半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。数据输入A被加数、B加数,数据输出SO和数(半加和)、进位CO。其真值表为:

表1-1 半加器电路真值表

输入 输出

A B C S

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

(2)设计一个一位全加器

VHDL源程序代码

ARCHITECTURE FD1 OF F_ADDER IS

COMPONENT H_ADDER IS

PORT (A, B : IN STD_LOGIC;

CO, SO : 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);

COUT <= D OR F;

END ARCHITECTURE FD1;

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

表1-2 一位全加器电路真值表

输入 输出

A B C F S

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

常熟理工学院课程设计报告

物理与电子工程学院EDA实验室 由真值表写出逻辑表达式,经化简后得:

S=ABC F=AB+BC+AC=ACBCAB••

其中A为被加数,B为加数,相邻低位来的进位数为C,输出本位和为S。向相邻高位进位数为F。

(3)设计一个八位串行二进制全加器

VHDL源程序代码(关键代码)

ARCHITECTURE ONE OF F_ADDER8 IS

COMPONENT F_ADDER IS

PORT (AIN, BIN, CIN : IN STD_LOGIC;

COUT, SUM : OUT STD_LOGIC );

END COMPONENT;

SIGNAL C1, C2, C3,C4,C5,C6,C7: STD_LOGIC;

BEGIN

U1 : F_ADDER PORT MAP(AIN => AIN(0), BIN => BIN(0), CIN => CIN, SUM =>

SUM(0), COUT => C1);

U8 : F_ADDER PORT MAP(AIN => AIN(7), BIN => BIN(7), CIN => C7, SUM =>

SUM(7), COUT => COUT);

END ONE;

经过一番编译仿真的调试后,我们得到了如下两幅正确的仿真波形。-

图7 方法一的正确仿真波形

方法二:同步八位全加器

(1) 设计一个四位全加器

VHDL源程序代码(关键代码)

ARCHITECTURE h1 of ADD4 is