8位加法器设计程序过程
8位加法器的设计

实验二8位加法器的设计1.实验目的:(1)学习使用Quartus II软件的基本用法(2)了解和掌握VHDL语言的语法规则和编程方法及基本流程(3)了解VHDL语言的基本结构(4)掌握元件例化设计思想2.实验内容设计一个由两个4位二进制并行加法器级联而成的8位加法器。
参考设计方案:加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。
并行进位加法器通常比串行级联加法器占用更多的资源。
随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。
因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。
实践证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位加法器由4位二进制并行加法器级联构成是较好的折中选择,下图即为八位加法器原理框图。
3.实验要求(1)画出系统的RTL原理框图,说明系统中个主要成分的功能(2)编写VHDL程序(3)进行系统时序仿真,画出时序图(4)记录实验过程中遇到的问题及解决办法4.程序设计5.生成RTL电路图如图所示,一个8位加法器由2个4位二进制并行加法器级联构成,4位二进制并行加法器U1的进位输出串接在U2的低位进位CIN上,4位二进制并行加法器U1的输入是A、B、CIN,4位二进制并行加法器U2的输入是A、B和由U1来的进位CONT,从而得到一个8位全加器。
6.仿真波形7.实验心得在本次实验中我遇到的问题是,刚开始我以为只要把4位二进制并行加法器和8位二进制加法器的VHDL程序代码全打在ADDER8B 中编译就可以了,这样做虽然也能够编译成功,但是,结果是,Quartus II软件只默认编译的第一个源程序,也就是4位二进制并行加法器的源程序。
结果我尝试了很久才发现,原来要把两个.vhd文件分开书写,并且8位二进制加法器的顶层文件名要与程序的实体名称一致。
8位串行全加器设计

8位串行全加器设计一.实验目的1.掌握ISE开发工具的使用,掌握FPGA开发的基本步骤;2.掌握8位串行全加器电路设计的一般办法;3.掌握程序下载的办法;4.初步了解开发板资源,掌握开发板的使用方法,重点掌握按键,开关,LCD,LED的使用方法。
二.实验内容1.用VHDL实现8位串行全加器8位串行全加器顶层模块电路如下图所示。
图 8位串行全加器顶层模块其中a_in,b_in:数据输入,使用板上开关(S0~S15);sum_out:运算结果输出,使用LED显示运算结果。
2.将程序下载到FPGA并进行检验资源使用要求用开关(S0~S15)输入加数,被加数。
用 LED(D8~D15)显示运算结果。
三.实验步骤1.启动ISE,新建工程文件;2.编写8位串行全加器模块Hadder,其原理图如上图所示。
3.编写完加法器模块之后,在顶层文件上实现映射;4.新建UCF文件,输入位置约束;5.完成综合,实现,生成下载文件;6.连接开发板USB下载线,开启开发板电源;7.下载FPGA;8.输入数据,验证结果。
四.关键代码entity add_one isPort ( a_in : in STD_LOGIC;b_in : in STD_LOGIC;cin : in STD_LOGIC;si : out STD_LOGIC;cout : out STD_LOGIC);end add_one;architecture Behavioral of add_one isbeginsi<=(a_in xor b_in)xor cin;cout<=(a_in and b_in)or(cin and a_in)or(cin and b_in); end Behavioral;-- 一位加entity add_eight isPort ( a : in STD_LOGIC_VECTOR (7 downto 0);b : in STD_LOGIC_VECTOR (7 downto 0);sum : out STD_LOGIC_VECTOR (7 downto 0);c_out :out STD_LOGIC);end add_eight;architecture Behavioral of add_eight is component add_oneport( a_in,b_in,cin:in STD_LOGIC;si,cout:out STD_LOGIC);end component;signal c: STD_LOGIC_VECTOR (7 downto 0);signal c_in:STD_LOGIC:='0';beginu0: add_one port map(a(0),b(0),c_in,sum(0),c(0)); u1: add_one port map(a(1),b(1),c(0),sum(1),c(1)); u2: add_one port map(a(2),b(2),c(1),sum(2),c(2)); u3: add_one port map(a(3),b(3),c(2),sum(3),c(3)); u4: add_one port map(a(4),b(4),c(3),sum(4),c(4)); u5: add_one port map(a(5),b(5),c(4),sum(5),c(5)); u6: add_one port map(a(6),b(6),c(5),sum(6),c(6)); u7: add_one port map(a(7),b(7),c(6),sum(7),c_out); end Behavioral;--八位加。
8位加法器设计程序过程

8位加法器设计程序过程实验 8位加法器设计一、实验目的熟悉利用QuartusⅡ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,进一步熟悉利用EDA软件进行数字系统设计的流程。
二、实验仪器与器材计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套。
三、实验内容1. 基本命题利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。
2. 扩展命题利用文本输入法设计4位并行进位加法器,再利用层次设计方法构成8位加法器。
通过时序仿真,比较两种加法器的性能。
四、实验设计思路按照如图2-1,2-2,2-3设计半加器、全加器、串行级联加法器① 设计半加器图2-1半加器设计图② 设计全加器图2-2全加加器设计图③ 设计串行级联8位加法器图2-3串行级联8位加法器设计图④ 仿真波形图对以上的串行级联加法器进行仿真。
设置时钟频率为/1/10ns。
每20ns对a,b输入口进行+2操作。
所得结果见图2-8。
由图可知延时大约为14ns。
图2-4串行级联加法器仿真波形图对以上的串行级联加法器进行仿真。
设置时钟频率为/2.0us。
每10us对a,b输入口进行+2操作。
所得结果见图2-4。
由图可知延时大约为10us。
五、实验要求将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
六、实验思考题(1)与单一设计文件比较,实现层次化设计应注意哪些问题?答:实现层次化设计需要注意的是:假设B设计中引用A设计,那么需要将A设计的工程文件放在B设计的工程文件中,另外,B设计的工程必须要以B的实体名称对应,不然仿真的时候会出错。
(2)比较图形编辑和文本编辑两种8位二进制加法器的性能,分析它们的主要异同点。
以下是文本编辑的参考程序。
1) 4位二进制数加法器ADDER4B的VHDL描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B ISPORT ( 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 ISSIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL AA,BB : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINAA<='0'&A4;BB<='0'&B4;SINT <= AA + BB + CIN4;S4 <= SINT(3 DOWNTO 0);COUT4 <= SINT(4);END behav;图2-9ADDER4B仿真波形图对以上的ADDER8B进行仿真。
用原理图输入法设计8位全加器

实验五用原理图输入法设计8位全加器一、实验目的熟悉利用QuartusII的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计,把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二、实验原理一个8位全加器可以由8个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
而一个1位全加器可以也是通过原理图输入的方法来完成。
三、实验内容(一)完成半加器和全加器的设计1、打开原理图输入编辑窗(1)File/new/“Block Diagram/Schematic File ”(2)在编辑窗中合适位置双击/展开libraries的“+”号、primitives/logic (3)根据半加器电路图,一次双击logic中的元件and2、not、xnor及pin 中的输入引脚input、输出引脚output调入各元件。
(4)通过左侧工具栏选择连线,按原理图连接好电路(5)双击input和output的PIN NAME至变成黑色,输入各引脚名:a、b、co、so(6)存盘 Fileve as/建立文件夹及目录,如d:\adder\存盘文件名为h_adder (7)生成电路符号在打开半加器原理图时/File/“Create/Update”/Create Symbol Files for Current File说明:A.转换生成电路符号也适用输入文本形式的文件B.只针对被打开的原理图或文件C.转换好的元件必须存在当前工程的文件夹中(8)设计全加器再打开一个原理图编辑窗口/调入元件连接好电路图/以名f_adder将其存在同一文件夹中。
(9)将f_adder.bdf设置为工程 File/New Project Wizard/Next/工程名和顶层文件名都为f_adder2.编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设计成一个硬件符号入库。
8位串行全加器设计

8位串行全加器设计串行全加器是一种基本的数字电路,用于实现两个二进制数的加法运算。
它可以将两个数位相同的二进制数相加,并将其和以及进位输出。
本文将详细介绍如何设计一个8位串行全加器。
首先,我们需要了解全加器的功能。
全加器由两个输入和两个输出组成。
输入包括两个要相加的二进制数位以及前一位的进位(Carry In),输出包括当前位的和(Sum)和当前位的进位(Carry Out)。
设计一个8位串行全加器时,我们需要将8个全加器连接在一起。
每个全加器的输入为两个二进制数位和前一位的进位,输出为当前位的和和当前位的进位。
具体设计步骤如下:1.首先,我们需要设计一个单个全加器电路。
全加器电路可以通过将两个半加器连在一起来实现。
半加器接收两个输入,并输出当前位的和和当前位的进位。
2.设计一个半加器电路。
半加器电路由两个输入和两个输出组成。
输入包括两个要相加的二进制数位,输出包括当前位的和和当前位的进位。
3.实现半加器电路的真值表。
半加器的真值表如下:输入A,输入B,输出S,进位--------,--------,--------,-------0,0,0,0,1,1,1,0,1,1,1,0,根据真值表可知,半加器的和输出为输入A和输入B的异或运算结果,进位输出为输入A和输入B的与运算结果。
4.通过使用逻辑门来实现半加器电路。
可以使用异或门实现和输出,使用与门实现进位输出。
5.设计一个完整的全加器电路。
一个全加器电路由一个半加器和一个或门构成。
半加器负责计算两个输入位的和和进位,而或门负责计算前一位的进位和当前位的进位的和。
全加器电路的输入为两个要相加的二进制数位和前一位的进位,输出为当前位的和和当前位的进位。
6.将8个全加器连在一起。
将第一个全加器的输入连接到待相加的两个8位二进制数的最低位和前一位的进位,将第二个全加器的输入连接到待相加的两个8位二进制数的次低位和第一个全加器的进位,以此类推。
最后一个全加器的输出即为所求的和。
八位全加器设计

八位全加器设计一、实验目的熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二、实验原理及仿真结果方案一8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与下一级一位全加器的进位输入信号cin相连。
设计流程(含仿真波形图):1、全加器的实现:由半加器加上组合电路实现。
仿真结果为:2、八位全加器的实现:由八个全加器组合生成八位全加器。
仿真结果为:方案二直接调用Quartus内部的宏功能模块LPM_ADD_SUB来实现8位全加器,其电路结构图如下:仿真结果为:方案三利用VHDL语言的运算操作符“+”和并置符“&”,可以通过少量的代码来实现复杂的全8位加器,关键代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY fulladderarray ISPORT(aa: IN STD_LOGIC_vector(7 downto 0);bb: IN STD_LOGIC_VECTOR(7 DOWNTO 0);cin: IN STD_LOGIC;sum: out STD_LOGIC_VECTOR(7 DOWNTO 0);cout: OUT STD_LOGIC);END ENTITY fulladderarray ;ARCHITECTURE one OF fulladderarray ISsignal nn: std_logic_vector(8 downto 0);BEGINnn<='0'& aa+bb+cin;sum<=nn(7 downto 0);cout<=nn(8);END ARCHITECTURE one;仿真结果为:三、方案比较三种方案的仿真时间如下:三种方案对FPGA的资源利用数量为:方案一方案二方案三经比较分析可得:方案一用时最多,方案三最少;方案一和方案三都用了较少的内部资源,方案一利用了较多的内部资源。
实验06八位硬件加法器

实验六8位硬件加法器一. 实验目的1. 掌握QuartusII的硬件描述语言设计方法2. 了解同步计数器的原理及应用3. 设计一个带使能输入、进位输出及同步清零的增1四位N (N<16)进制同步计数器二. 准备知识1. 串行进位加法器若有多位数相加,则可采用并行相加串行进位的方式来完成。
例如,有两个4位二进制数A3A2A1A0和B3B2B1B0相加,可以采用两片内含两个全加器或1片内含4个全加器的集成电路组成,其原理图如图6.1所示:图6.1 串行进位加法器由图6.1可以看出,每1位的进位信号送给下1位作为输入信号,因此,任1位的加法运算必须在低1位的运算完成之后才能进行,这种进位方式称为串行进位。
这种加法器的逻辑电路比较简单,但它的运算速度不高。
为克服这一缺点,可以采用超前进位等方式。
2. 超前进位加法器对于一个加法器来说,它是一个纯组合电路。
也就是它的输出在输入出现的时刻就已经确定了,包括它的和和进位值,是输入的组合逻辑。
换而言之,只要知道输入,在不算出和的情况下也可以得到进位值,该值仅为输入的组合逻辑,以这样的一种思路设计的叫超前进位加法器。
而所谓串行进位加法器,就是必须算得低位加法的值后才可以继续计算高位值,如图6.1所示的电路,引用了一位全加器构成了四位全加器。
在硬件实现上,在4倍的单个全加器延时时间内它的输出都是不准确的,必须经过4倍的单个全加器延时时间才能得到准确值。
如果是16位或32位的加法器,延时是不可容忍的。
因此一般来说是直接利用输入组合逻辑方式同时决定结果的每一位和输出进位来实现的加法器,为超前进位加法器,相比与串行加法大大减低了多位加法所需要的延迟。
由于串行进位加法器的速度受到进位信号的限制,人们又设计了一种多位数超前进位加法逻辑电路,使每位的进位只由加数和被加数决定,而与低位的进位无关。
现在介绍超前进位的概念。
根据全加器的功能,可列出它的真值表:表6.1 全加器真值表由全加器的真值表可得Si 和Ci 的逻辑表达式:1111111i i i i i i i i i i i i i i i i i i i i i i S A B C A B C A B C A B C A B C A B C A B C -------=+++=⊕+⊕=⊕⊕ (6.1)11111i i i i i i i i i i i i i i i i i i C A B C A B C A B C A B C A B A B C -----=+++=+⊕ (6.2)定义两个中间变量Gi 和Pi :i i i i i iG A B P A B ==⊕ (6.3)当Ai =Bi =1时,Gi =1,由Ci 的表达式可得Ci =1,即产生进位,所以Gi 称为产生量变 。
8位加法器设计程序过程

8位加法器设计程序过程八位加法器是一种组合逻辑电路,用于计算两个八位二进制数的和。
在设计过程中,需要确定输入和输出的位数、电路逻辑、输入输出关系等。
下面是一个八位加法器设计程序的详细过程。
1.确定输入和输出的位数:首先,我们需要明确八位加法器的输入和输出的位数。
在这个例子中,我们使用八位二进制数作为输入,并需要输出一个八位的和。
因此,输入和输出的位数均为8位。
2.确定输入和输出的表示形式:在计算机中,二进制数通常以补码形式进行表示。
因此,在这个例子中,我们将使用补码表示输入和输出。
3.分析电路逻辑:一个八位加法器由八位的全加器以及一个进位逻辑组成。
全加器用于计算两个相应位数相加的结果,而进位逻辑负责处理进位位。
因此,我们需要设计八个全加器和一个进位逻辑。
4.设计全加器电路:全加器是八位加法器的核心部分,用于计算两个位的和以及进位。
全加器的输入包括两个加数位和一个来自前一位的进位位。
输出包括和位以及进位位。
以下是一个典型的全加器电路:- 输入:A、B和C_in- 输出:Sum和C_out-逻辑表达式:Sum = A 异或 B 异或 C_inC_out = (A and B) 或 (C_in and (A 异或 B))设计八个这样的全加器电路,分别用于计算八个相应位数的和以及进位。
5.设计进位逻辑电路:进位逻辑电路负责处理来自各个位的进位。
具体来说,进位逻辑电路需要计算进位位以及进位到下一位的值。
以下是一个典型的进位逻辑电路:- 输入:C_in、C_0、C_1、C_2、C_3、C_4、C_5、C_6 和 C_7- 输出:C_out 和 C_next-逻辑表达式:C_out = C_7C_next = (C_6 and C_7) 或 (C_5 and (C_6 or C_7)) 或 (C_4 and (C_5 or (C_6 or C_7))) 或 ......(C_1 and (C_2 or (C_3 or (C_4 or (C_5 or (C_6 or C_7))))))其中,C_out代表从最高位传出的进位,C_next代表传递给下一位的进位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验8位加法器设计
一、实验目的
熟悉利用QuartusⅡ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,进一步熟悉利用EDA软件进行数字系统设计的流程。
二、实验仪器与器材
计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套。
三、实验内容
1. 基本命题
利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。
2. 扩展命题
利用文本输入法设计4位并行进位加法器,再利用层次设计方法构成8位加法器。
通过时序仿真,比较两种加法器的性能。
四、实验设计思路
按照如图2-1,2-2,2-3设计半加器、全加器、串行级联加法器
①设计半加器
图2-1半加器设计图
②设计全加器
图2-2全加加器设计图
③设计串行级联8位加法器
图2-3串行级联8位加法器设计图
④仿真波形图
对以上的串行级联加法器进行仿真。
设置时钟频率为/1/10ns。
每20ns对a,b输入口进行+2操作。
所得结果见图2-8。
由图可知延时大约为14ns。
图2-4串行级联加法器仿真波形图
对以上的串行级联加法器进行仿真。
设置时钟频率为/2.0us。
每10us对a,b输入口进行
+2操作。
所得结果见图2-4。
由图可知延时大约为10us。
五、实验要求
将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
六、实验思考题
(1)与单一设计文件比较,实现层次化设计应注意哪些问题?
答:实现层次化设计需要注意的是:假设B设计中引用A设计,那么需要将A 设计的工程文件放在B设计的工程文件中,另外,B设计的工程必须要以B的实体名称对应,不然仿真的时候会出错。
(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(3DOWNTO0);
B4 : IN STD_LOGIC_VECTOR(3DOWNTO0); S4 : OUT STD_LOGIC_VECTOR(3DOWNTO0); COUT4 : OUT STD_LOGIC);
END ADDER4B;
ARCHITECTURE behav OF ADDER4B IS
SIGNAL SINT : STD_LOGIC_VECTOR(4DOWNTO0);
SIGNAL AA,BB : STD_LOGIC_VECTOR(4DOWNTO0); BEGIN
AA<='0'&A4;
BB<='0'&B4;
SINT <= AA + BB + CIN4;
S4 <= SINT(3DOWNTO0);
COUT4 <= SINT(4);
END behav;
图2-9ADDER4B仿真波形图
对以上的ADDER8B进行仿真。
设置时钟频率为/2.0us。
每10us对a,b输入口进行+2操作。
所得结果见图2-9。
由图可知延时大约为20us。
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(7DOWNTO0);
B : IN STD_LOGIC_VECTOR(7DOWNTO0);
S : OUT STD_LOGIC_VECTOR(7DOWNTO0);
COUT : OUT STD_LOGIC );
END ADDER8B;
ARCHITECTURE struc OF ADDER8B IS
COMPONENT ADDER4B
PORT ( CIN4 : IN STD_LOGIC;
A4 : IN STD_LOGIC_VECTOR(3DOWNTO0);
B4 : IN STD_LOGIC_VECTOR(3DOWNTO0);
S4 : OUT STD_LOGIC_VECTOR(3DOWNTO0);
COUT4 : OUT STD_LOGIC );
END COMPONENT;
SIGNAL CARRY_OUT : STD_LOGIC;
BEGIN
U1 : ADDER4B -- 例化一个4位二进制加法器U1 PORT MAP ( CIN4 => CIN, A4 => A(3DOWNTO0),
B4 => B(3DOWNTO0), S4 => S(3DOWNTO0),
COUT4 => CARRY_OUT );
U2 : ADDER4B --例化一个4位二进制加法器U2 PORT MAP ( CIN4 => CARRY_OUT, A4 => A(7DOWNTO4),
B4 => B(7DOWNTO4), S4 => S(7DOWNTO4),COUT4 => COUT ); END struc;
图2-10ADDER8B仿真波形图
对以上的ADDER8B进行仿真。
设置时钟频率为/2.0us。
每10us对a,b输入口进行+2操作。
所得结果见图2-10。
由图可知延时大约为20us。
实验错误小结:
Quartus中仿真时出现no simulation input file assignment specify 解决方法
这个错误的意思是:仿真文件没有被指定,要仿真的话先要建一个仿真文件:
情况1、file -> new -> 选择Other file选项卡 -> Vector Waveform File
然后把输入输出端口加进去,再设置输入的信号,保存,就可以仿真了。
情况2、如果你之前已经建立过了,就打开assignments->settings->simulator settings
看里面的有个文本框 simulation input 里面是否为空,为空的话就要找到你所建立的Vector Waveform File 文件,是以*.VMF结尾的,如果没找到,你又以为你建立了Vector Waveform File ,很可能粗心的你还没保存Vector Waveform File ,保存了才会在project里面找到。