8位加法器的设计

实验二 8位加法器设计

一、实验目的

熟悉利用Quartus Ⅱ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,进一步熟悉利用EDA 软件进行数字系统设计的流程。

二、实验仪器与器材

计算机1台,GW48-PK2S 实验箱1台,Quartus Ⅱ6.0 1套。

三、实验内容

1. 基本命题

利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。

2. 扩展命题

利用文本输入法设计4位并行进位加法器,再利用层次设计方法构成8位加法器。通过时序仿真,比较两种加法器的性能。

四、设计思路

加法器是数字系统中的基本逻辑器件。例如,为了节省逻辑资源,减法器和硬件乘法器都可由加法器来构成。多位加法器的设计十分耗费硬件资源,因此在实际的设计和相关系统的开发中,需要注意资源的利用率和进位速度两方面的问题。对此,首先应选择较适合组合逻辑设计的器件作为最终的目标器件,如CPLD ;其次在加法器的逻辑结构设计上,在芯片资源的利用率和加法器的速度两方面权衡得失,探寻最佳选择,即选择最佳的并行进位最小的加法单元的宽度。显然这种选择与目标器件的时延特性有直接关系。

多位加法器的构成有两种方式:即并行进位和串行进位方式。串行进位方式的加法器是将全加器级联构成的,它有电路简单,但进位速度较慢的特点。并行进位加法器设有产生并行进位的逻辑电路,加法器的进位仅与输入状态有关,与各级加法器的进位无关,即第 i 位加法器的进位直接由该位的各输入状态决定,其关系式为:

C i +1=X i Y i +X i ⊕Y i ⋅C i (i = 0,1,2,3„)

当i = 3时,代入上述表达式可得:

C 4=X 3Y 3+X 3⊕Y 3⋅X 2Y 2+X 3⊕Y 3⋅X 2⊕Y 2⋅X 1Y 1+X 3⊕Y 3⋅X 2⊕Y 2⋅X 1⊕Y 1⋅X 0Y 0+X 3⊕Y 3⋅X 2⊕Y 2⋅X 1⊕Y 1⋅X 0⊕Y 0⋅C 0

4位加法器的各位和数表达式如下:

S 3=X 3⊕Y 3⊕C 3

S 2=X 2⊕Y 2⊕C 2

S 1=X 1⊕Y 1⊕C 1

S 0=X 0⊕Y 0⊕C 0C 4=X 3Y 3+X 3⊕Y 3⋅C 3C 3=X 2Y 2+X 2⊕Y 2⋅C 2C 2=X 1Y 1+X 1⊕Y 1⋅C 1C 1=X 0Y 0+X 0⊕Y 0⋅C 0

用门电路实现的4位并行加法器电路如图2-1所示。

图2-1 4位并行加法器电路

显然,随着位数的增加,并行加法进位电路将越来越复杂,相同位数的并行加法器与串行加法器的资源占用差距也将快速增大,一般情况下,并行进位加法器通常比串行级联加法器占用更多的芯片资源。由于4位二进制并行加法器和串行级联加法器占用几乎相同的芯片资源。因此,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择,图2-2所示为该电路结构的8位加法器。

图2-2 8位加法器硬件结构图

提示:设计步骤一般包括如下十个方面,具体可参考实验一的设计思路,

下面提示有助于解决实验过程中出现的问题。

(1)首先应该建立好工作库文件夹并取名adder ,以作设计工程项目的工作库。

(2)设计电路原理图。打开Quartus II ,选择菜单File →New 。在New 窗口中的Device Design Files中选择编译文件的语言类型“Block Diagram/Schematic File ”如图2-3所示,单击OK 后出现图形编辑界面如图2-4所示。然后在该图形编辑窗口中绘制设计电路图。

图2-3 选择图形编辑类型

图2-3 Quartus II的图形编辑界面

(3)将当前设计取名为hadder 并设定为工程。设定后可以看见Quartus II 主窗左上方的工程项目路径指向。这个路径指向很重要!

(4)编译和排错

注意:如果设计文件含有错误,在编译时会出现出错信息指示。有时尽管只有1、2个小错,但却会出现大量的出错信息,确定错误所在的最好办法是找到最上一排错误信息指示,用鼠标左键双击,就能发现在出现文本编译窗中闪动的光标附近找到错误所在。纠正后再次编译,直至排除所有错误。还需要注意:闪动的光标指示错误所在只是相对的,错误一般在上方。VHDL 文本编辑中还可能出现许多其它错误,如:

1)错将设计文件存入了根目录,并将其设定成工程,由于没有了工作库,报错信息如下: Error :Can't open VHDL "WORK"

2)错将设计文件的后缀写成.tdf 而非.vhd ,报错信息如下:Error :Line1,File e:\muxfile\mux21a.tdf: TDF syntax error: ...

3)未将设计文件名存为其实体名,如错写为muxa.vhd ,报错信息如下:Error :Line1,...VHDL Design File "muxa.vhd" must contain ...

(5)时序仿真。具体步骤包括:建立波形文件、输入信号节点、设置波形参量、设定仿真时间宽度、加上输入信号、波形文件存盘、运行仿真器、观察分析波形。

注意:仿真波形文件的建立,一定要十分注意仿真时间区域的设定,以及时钟信号的周期设置,否则即使设计正确也无法获得正确的仿真结果。设定比较合理的仿真时间区域和信号频率,即仿真时间区域不能太小,仿真频率不能太高,即信号周期不能小到与器件的延时相比拟。

还可以进一步了解信号的延时情况。图2-4左侧的竖线是测试参考线,它与鼠标箭头间的时间差显示在窗口上方的Interval 小窗中,使用该方法可以测量任意两点的时间差,由图可见输入与输出波形间有一个小的延时量。

图2-4 仿真波形图

(6)建立电路模块默认符号

在Quartus II 环境下,执行“File ”菜单下的“Create/Update”选项中的“Create Symbol Files for Current File ”命令,将通过编译的设计文件产生一个(Quartus II Block Symbol File)模块符号文件,并保存在工程目录中。该模块符

号可以被其他图形设计文件调用,实现多层次的系统电路设计。

(7)利用上述设计的半加器模块和必要的门电路设计全加器,重复上述过程对所设计的全加器进行仿真,确认满足设计要求以后,最后再利用全加器模块设计8位串行级联加法器。

注意:若8位串行级联加法器的文件名取adder8b ,则在新建过程时,需要把最顶层文件名取adder8b ,并将hadder 和fadder 等相关文件保存到该工程目录中。

(8)引脚锁定

为在实验系统上验证设计的正确性,完成硬件测试。如果目标器件是EP1C6Q240 C8,选择合适的实验电路模式(参考附录2实验结构图,建议使用模式“1”),并确定输入输出信号进行引脚锁定。建议用键2和键1输入8位加数 (此值显示于键对应的数码管上,高位靠左);键4和键3可输入8位被加数(此值显示于键对应的数码管上,高位靠左);加法器最低进位位由键8控制;加法器的“和”显示于数码管6和5;加法器溢出位由发光管D8显示。请参考实验一列出引脚锁定信息表。

(9)编程下载时建议采用USB 方式。

(10)硬件测试:自拟测试方法,做好测试数据的记录。

五、实验要求

将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。

设计过程:

1、设计一位半加器:

2、利用前面设计的半加器设计一位全加器:

3、利用前面设计的全加器设计8位全加器:

4、仿真设计

5、配置引脚:

6、启动实验箱,检查实验结果,验证实验正确性

六、实验思考题

(1)与单一设计文件比较,实现层次化设计应注意哪些问题?

层次化设计应注意每个层次设计的顺序,从最小层次开始设计,且要保证每

个层次设计的正确性,并要记得把上一个层次设计的结果加载到下一个层次设计中。

(2)比较图形编辑和文本编辑两种8位二进制加法器的性能,分析它们的主要异同点。以下是文本编辑的参考程序。

1) 4位二进制数加法器ADDER4B 的VHDL 描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADDER4B IS

PORT ( CIN4 : IN STD_LOGIC;

A4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

B4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

S4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT4 : OUT STD_LOGIC);

END ADDER4B;

ARCHITECTURE behav OF ADDER4B IS

SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0);

SIGNAL AA,BB : STD_LOGIC_VECTOR(4 DOWNTO 0); AA

SINT

S4

COUT4

END behav;

2)应用ADDER4B 设计8位二进制数加法器ADDER8B 的VHDL 描述 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADDER8B IS

PORT ( CIN : IN STD_LOGIC;

A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

B : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

S : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

COUT : OUT STD_LOGIC );

END ADDER8B;

ARCHITECTURE struc OF ADDER8B IS

COMPONENT ADDER4B

PORT ( CIN4 : IN STD_LOGIC;

A4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

B4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

S4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT4 : OUT STD_LOGIC );

END COMPONENT;

SIGNAL CARRY_OUT : STD_LOGIC;

BEGIN

U1 : ADDER4B -- 例化一个4位二进制加法器U1 PORT MAP ( CIN4 => CIN, A4 => A(3 DOWNTO 0),

B4 => B(3 DOWNTO 0), S4 => S(3 DOWNTO 0), COUT4 => CARRY_OUT );

U2 : ADDER4B --例化一个4位二进制加法器U2

PORT MAP ( CIN4 => CARRY_OUT, A4 => A(7 DOWNTO 4),

B4 => B(7 DOWNTO 4), S4 => S(7 DOWNTO 4),COUT4 => COUT );

END struc;

实验二 8位加法器设计

一、实验目的

熟悉利用Quartus Ⅱ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,进一步熟悉利用EDA 软件进行数字系统设计的流程。

二、实验仪器与器材

计算机1台,GW48-PK2S 实验箱1台,Quartus Ⅱ6.0 1套。

三、实验内容

1. 基本命题

利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。

2. 扩展命题

利用文本输入法设计4位并行进位加法器,再利用层次设计方法构成8位加法器。通过时序仿真,比较两种加法器的性能。

四、设计思路

加法器是数字系统中的基本逻辑器件。例如,为了节省逻辑资源,减法器和硬件乘法器都可由加法器来构成。多位加法器的设计十分耗费硬件资源,因此在实际的设计和相关系统的开发中,需要注意资源的利用率和进位速度两方面的问题。对此,首先应选择较适合组合逻辑设计的器件作为最终的目标器件,如CPLD ;其次在加法器的逻辑结构设计上,在芯片资源的利用率和加法器的速度两方面权衡得失,探寻最佳选择,即选择最佳的并行进位最小的加法单元的宽度。显然这种选择与目标器件的时延特性有直接关系。

多位加法器的构成有两种方式:即并行进位和串行进位方式。串行进位方式的加法器是将全加器级联构成的,它有电路简单,但进位速度较慢的特点。并行进位加法器设有产生并行进位的逻辑电路,加法器的进位仅与输入状态有关,与各级加法器的进位无关,即第 i 位加法器的进位直接由该位的各输入状态决定,其关系式为:

C i +1=X i Y i +X i ⊕Y i ⋅C i (i = 0,1,2,3„)

当i = 3时,代入上述表达式可得:

C 4=X 3Y 3+X 3⊕Y 3⋅X 2Y 2+X 3⊕Y 3⋅X 2⊕Y 2⋅X 1Y 1+X 3⊕Y 3⋅X 2⊕Y 2⋅X 1⊕Y 1⋅X 0Y 0+X 3⊕Y 3⋅X 2⊕Y 2⋅X 1⊕Y 1⋅X 0⊕Y 0⋅C 0

4位加法器的各位和数表达式如下:

S 3=X 3⊕Y 3⊕C 3

S 2=X 2⊕Y 2⊕C 2

S 1=X 1⊕Y 1⊕C 1

S 0=X 0⊕Y 0⊕C 0C 4=X 3Y 3+X 3⊕Y 3⋅C 3C 3=X 2Y 2+X 2⊕Y 2⋅C 2C 2=X 1Y 1+X 1⊕Y 1⋅C 1C 1=X 0Y 0+X 0⊕Y 0⋅C 0

用门电路实现的4位并行加法器电路如图2-1所示。

图2-1 4位并行加法器电路

显然,随着位数的增加,并行加法进位电路将越来越复杂,相同位数的并行加法器与串行加法器的资源占用差距也将快速增大,一般情况下,并行进位加法器通常比串行级联加法器占用更多的芯片资源。由于4位二进制并行加法器和串行级联加法器占用几乎相同的芯片资源。因此,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择,图2-2所示为该电路结构的8位加法器。

图2-2 8位加法器硬件结构图

提示:设计步骤一般包括如下十个方面,具体可参考实验一的设计思路,

下面提示有助于解决实验过程中出现的问题。

(1)首先应该建立好工作库文件夹并取名adder ,以作设计工程项目的工作库。

(2)设计电路原理图。打开Quartus II ,选择菜单File →New 。在New 窗口中的Device Design Files中选择编译文件的语言类型“Block Diagram/Schematic File ”如图2-3所示,单击OK 后出现图形编辑界面如图2-4所示。然后在该图形编辑窗口中绘制设计电路图。

图2-3 选择图形编辑类型

图2-3 Quartus II的图形编辑界面

(3)将当前设计取名为hadder 并设定为工程。设定后可以看见Quartus II 主窗左上方的工程项目路径指向。这个路径指向很重要!

(4)编译和排错

注意:如果设计文件含有错误,在编译时会出现出错信息指示。有时尽管只有1、2个小错,但却会出现大量的出错信息,确定错误所在的最好办法是找到最上一排错误信息指示,用鼠标左键双击,就能发现在出现文本编译窗中闪动的光标附近找到错误所在。纠正后再次编译,直至排除所有错误。还需要注意:闪动的光标指示错误所在只是相对的,错误一般在上方。VHDL 文本编辑中还可能出现许多其它错误,如:

1)错将设计文件存入了根目录,并将其设定成工程,由于没有了工作库,报错信息如下: Error :Can't open VHDL "WORK"

2)错将设计文件的后缀写成.tdf 而非.vhd ,报错信息如下:Error :Line1,File e:\muxfile\mux21a.tdf: TDF syntax error: ...

3)未将设计文件名存为其实体名,如错写为muxa.vhd ,报错信息如下:Error :Line1,...VHDL Design File "muxa.vhd" must contain ...

(5)时序仿真。具体步骤包括:建立波形文件、输入信号节点、设置波形参量、设定仿真时间宽度、加上输入信号、波形文件存盘、运行仿真器、观察分析波形。

注意:仿真波形文件的建立,一定要十分注意仿真时间区域的设定,以及时钟信号的周期设置,否则即使设计正确也无法获得正确的仿真结果。设定比较合理的仿真时间区域和信号频率,即仿真时间区域不能太小,仿真频率不能太高,即信号周期不能小到与器件的延时相比拟。

还可以进一步了解信号的延时情况。图2-4左侧的竖线是测试参考线,它与鼠标箭头间的时间差显示在窗口上方的Interval 小窗中,使用该方法可以测量任意两点的时间差,由图可见输入与输出波形间有一个小的延时量。

图2-4 仿真波形图

(6)建立电路模块默认符号

在Quartus II 环境下,执行“File ”菜单下的“Create/Update”选项中的“Create Symbol Files for Current File ”命令,将通过编译的设计文件产生一个(Quartus II Block Symbol File)模块符号文件,并保存在工程目录中。该模块符

号可以被其他图形设计文件调用,实现多层次的系统电路设计。

(7)利用上述设计的半加器模块和必要的门电路设计全加器,重复上述过程对所设计的全加器进行仿真,确认满足设计要求以后,最后再利用全加器模块设计8位串行级联加法器。

注意:若8位串行级联加法器的文件名取adder8b ,则在新建过程时,需要把最顶层文件名取adder8b ,并将hadder 和fadder 等相关文件保存到该工程目录中。

(8)引脚锁定

为在实验系统上验证设计的正确性,完成硬件测试。如果目标器件是EP1C6Q240 C8,选择合适的实验电路模式(参考附录2实验结构图,建议使用模式“1”),并确定输入输出信号进行引脚锁定。建议用键2和键1输入8位加数 (此值显示于键对应的数码管上,高位靠左);键4和键3可输入8位被加数(此值显示于键对应的数码管上,高位靠左);加法器最低进位位由键8控制;加法器的“和”显示于数码管6和5;加法器溢出位由发光管D8显示。请参考实验一列出引脚锁定信息表。

(9)编程下载时建议采用USB 方式。

(10)硬件测试:自拟测试方法,做好测试数据的记录。

五、实验要求

将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。

设计过程:

1、设计一位半加器:

2、利用前面设计的半加器设计一位全加器:

3、利用前面设计的全加器设计8位全加器:

4、仿真设计

5、配置引脚:

6、启动实验箱,检查实验结果,验证实验正确性

六、实验思考题

(1)与单一设计文件比较,实现层次化设计应注意哪些问题?

层次化设计应注意每个层次设计的顺序,从最小层次开始设计,且要保证每

个层次设计的正确性,并要记得把上一个层次设计的结果加载到下一个层次设计中。

(2)比较图形编辑和文本编辑两种8位二进制加法器的性能,分析它们的主要异同点。以下是文本编辑的参考程序。

1) 4位二进制数加法器ADDER4B 的VHDL 描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADDER4B IS

PORT ( CIN4 : IN STD_LOGIC;

A4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

B4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

S4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT4 : OUT STD_LOGIC);

END ADDER4B;

ARCHITECTURE behav OF ADDER4B IS

SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0);

SIGNAL AA,BB : STD_LOGIC_VECTOR(4 DOWNTO 0); AA

SINT

S4

COUT4

END behav;

2)应用ADDER4B 设计8位二进制数加法器ADDER8B 的VHDL 描述 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADDER8B IS

PORT ( CIN : IN STD_LOGIC;

A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

B : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

S : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

COUT : OUT STD_LOGIC );

END ADDER8B;

ARCHITECTURE struc OF ADDER8B IS

COMPONENT ADDER4B

PORT ( CIN4 : IN STD_LOGIC;

A4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

B4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

S4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT4 : OUT STD_LOGIC );

END COMPONENT;

SIGNAL CARRY_OUT : STD_LOGIC;

BEGIN

U1 : ADDER4B -- 例化一个4位二进制加法器U1 PORT MAP ( CIN4 => CIN, A4 => A(3 DOWNTO 0),

B4 => B(3 DOWNTO 0), S4 => S(3 DOWNTO 0), COUT4 => CARRY_OUT );

U2 : ADDER4B --例化一个4位二进制加法器U2

PORT MAP ( CIN4 => CARRY_OUT, A4 => A(7 DOWNTO 4),

B4 => B(7 DOWNTO 4), S4 => S(7 DOWNTO 4),COUT4 => COUT );

END struc;


相关文章

  • 加法器实验报告
  • 实验三 加法器的设计与仿真 一.实验目的 熟悉quartus ⅱ仿真软件的基本操作,用逻辑图和vhdl 语言设计加法器并验证. 二.实验内容 1.熟悉quartus ⅱ软件的基本操作,了解各种设计输入方法(原理图设计.文本设计. 波形设计) ...查看


  • 原码一位乘法器
  • 课 程 设 计 报 告 课程设计名称:课程设计题目: 院(系):专 业:班 级:学 号:姓 名:指导教师:完成日期: 计算机组成原理课程设计 定点原码一位乘法器的设计 目 录 第1章 总体设计方案 ..................... ...查看


  • 近似加法器
  • 电子科技大学 UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 数字电路 课程设计报告 课程设计题目 近似加法器 学 号 [1**********]09 作者姓名 宁博宇 指导 ...查看


  • FIR抽取滤波器的工作原理
  • 摘 要:本文介绍了FIR抽取滤波器的工作原理,重点阐述了用XC2V1000实现FIR抽取滤波器的方法,并给出了仿真波形和设计特点.关键词:FIR抽取滤波器:流水线操作:FPGA 用FPGA实现抽取滤波器比较复杂,主要是因为在FPGA中缺乏实 ...查看


  • 加法器的设计与仿真
  • 实验三 加法器的设计与仿真 一.实验内容 1.用VHDL 语言设计全加器: 2.利用设计的全加器组成串行加法器: 3.用VHDL 语言设计并行加法器. 二.实验原理.波形仿真及波形分析 1.全加器 (1)VHDL 语言 LIBRARY IE ...查看


  • 可控加法器
  • 国家电工电子实验教学中心 数字电子技术 实 验 报 告 实验题目: 可控加法器 学 院: 专 业: 学生姓名: 学 号: 任课教师: 电子信息工程学院 2013 年 12 月 3 日 1. 设计任务要求 用4位加法器实现可控累加(加/减,0 ...查看


  • 一位十进制BCD码加法器设计
  • 一位十进制 BCD 码加法器设计 年3月30日 2012 实验目的: 熟悉基于EDA 平台的电路设计,掌握MAXPLUS 的使用,并运用 MAXPLUS 设计电路图,模拟其工作环境 实验原理: MAXPLUS 软件能够模拟电路工作的实际情况 ...查看


  • 加法器设计
  • 沈 阳 工 程 学 院 课 程 设 计 课程设计题目: 加法器设计 系 别 自动控制工程系 班级 生自专111 学生姓名 佀自勇 学号 2011336120 指导教师 王新颖.王健 职称 副教授.副教授 起止日期: 2013年06月17日起 ...查看


  • 实验一 四位串行进位加法器的设计实验报告
  • 实验一 四位串行进位加法器的设计 一.实验目的 1. 理解一位全加器的工作原理 2. 掌握串行进位加法器的逻辑原理 3. 进一步熟悉Quartus 软件的使用,了解设计的全过程, 二.实验内容 1. 采用VHDL 语言设计四位串行进位的加法 ...查看


热门内容