当前位置:文档之家› 4位全加器设计解析

4位全加器设计解析

可编程逻辑器件设计大作业题目四位全加器设计学院自动化与电气工程学院班级姓名学号2104年12月30 日目录摘要 ...............................................................................................错误!未定义书签。

1.设计目的 ..................................................................................错误!未定义书签。

2.设计要求ﻩ错误!未定义书签。

3.设计原理ﻩ错误!未定义书签。

3.1.四位全加器 (1)3.2.四位全加器的原理图...................................................错误!未定义书签。

4.设计方案 ..................................................................................错误!未定义书签。

4.1.仿真软件ﻩ错误!未定义书签。

4.2.全加器原理...................................................................错误!未定义书签。

4.2.1一位全加器的设计与原理 ............................................错误!未定义书签。

4.2.2四位全加器的原理及程序设计 ..................................错误!未定义书签。

5.程序设计...............................................................................错误!未定义书签。

6.仿真及结果..............................................................................错误!未定义书签。

总结与体会ﻩ错误!未定义书签。

参考文献ﻩ错误!未定义书签。

摘要VHDL主要用于描述数字系统的结构,行为,功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

本次设计是用VHDL语言设计四位全加器,并用Quartus II仿真。

关键词:VHDL四位全加器QuartusII四位全加器设计1.设计目的复习加法器的原理,掌握加法器的设计实现方法,设计实现数字系统设计中常用的4位全加器,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。

2.设计要求1)复习EDA的相关技术与方法;2)掌握VHDL或者Verilog语言,并要求能编写程序。

3)Quartus软件的使用:掌握程序编辑、编译、调试、仿真方法。

4)设计相关简单的电路,完成既定的功能。

3.设计原理3.1.四位全加器加法器是数字系统中的基本逻辑器件。

例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。

但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。

多位加法器的构成有两种方式:并行进位和串行进位方式。

并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。

通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。

四位全加器可对两个多位二进制数进行加法运算,同时产生进位。

当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。

其中CIN表示输入进位位,COUT表示输出进位位,输入A和B分别表示加数和被加数。

输出SUM=A+B+CIN,当SUM大于255时,COUT置‘1’。

其管脚图如下:()()cinb a ab cin b ab a ab abcincin b a bcin a cin ab cout ⊕+=++=+++=()()()()cinb a cinb a cin b a cin ab b a cin b a b a abcin cin b a cin b a cin b a s ⊕⊕=⊕+⊕=+++=+++=图3-1 四位全加器管脚图全加器是能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号的加法电路。

其真值表如表1所示:表1 全加器真值表输入输出a b ci n s co ut 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 11111根据真值表可得出下列表达式:根据以上表达式,可以用数据流方式设计出1位全加器。

要设计的是4位全加器,这里采用串行进位来设计。

先设计4个1位的全加器,然后将低位的进位输出与高位的进位输入相连,将要进行加法运算的两个4位数的每一位分别作为每一个1位全加器的输入,进行加法运算,所有的1位全加器的输出组成一个4位数,即输入的两个4位数之和,最高位的全加器产生的进位输出即两个4位数求和的进位输出。

3.2.四位全加器的原理图4位全加器的原理图如图3-2所示:图3-2 四位全加器原理图根据图3-2所示,可以采用结构化描述方式设计4位全加器。

4.设计方案4.1.仿真软件Quartus II是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II 除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

4.2.全加器原理4.2.1一位全加器的设计与原理一位全加器的原理图如下:图4-1一位全加器原理图一位全加器的程序设计:ENTITY adder1 IS--1位全加器设计PORT(a,b,cin:IN STD_LOGIC;s,cout:OUT STD_LOGIC);ENDadder1;ARCHITECTURE dataflow OF adder1IS--用数据流方式设计1位全加器SIGNALtmp:STD_LOGIC; --用tmp表示a⊕bBEGINtmp<=a XOR b AFTER10 ns;s<=tmpXORcin AFTER 10ns;cout<=(aANDb)OR(tmp AND cin) AFTER 20ns;ENDdataflow;4.2.2四位全加器的原理及程序设计要设计的是4位全加器是采用串行进位来设计的。

首先根据已经设计好的一位的全加器通过将低位的进位输出与高位的进位输入相连的方法,组成所需要的四位全加器。

其程序如下:ENTITY adder 4 IS--4位全加器设计PORT(a,b:INSTD_LOGIC_VECTOR(3DOWNTO 0);cin:INSTD_LOGIC;s:OUTSTD_LOGIC_VECTOR(3DOWNTO0);cout:OUT STD_LOGIC);END adder4;ARCHITECTURE structuralOF adder4 IS--用结构化描述风格设计4位全加器COMPONENT adder1PORT(a,b,cin:IN STD_LOGIC;s,cout:OUT STD_LOGIC);ENDCOMPONENT;SIGNALx,y,z:STD_LOGIC;FORu1,u2,u3,u4:adder1 USE ENTITYWORK.adder1(dataflow);BEGINu1:adder1 PORT MAP(a(0),b(0),cin,s(0),x);u2:adder1PORT MAP(a(1),b(1),x,s(1),y);u3:adder1 PORTMAP(a(2),b(2),y,s(2),z);u4:adder1PORTMAP(a(3),b(3),z,s(3),cout);END structural;四位全加器的原理图:图4-2 四位全加器原理图5.程序设计LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder1IS --1位全加器设计PORT(a,b,cin:IN STD_LOGIC;s,cout:OUT STD_LOGIC);ENDadder1;ARCHITECTURE dataflow OF adder1 IS --用数据流方式设计1位全加器SIGNAL tmp:STD_LOGIC; --用tmp表示a⊕bBEGINtmp<=a XOR bAFTER 10ns;s<=tmp XORcin AFTER10ns;cout<=(a AND b)OR(tmp ANDcin) AFTER 20 ns;ENDdataflow;LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adder4IS --4位全加器设计PORT(a,b:IN STD_LOGIC_VECTOR(3DOWNTO0);cin:IN STD_LOGIC;s:OUT STD_LOGIC_VECTOR(3DOWNTO0);cout:OUT STD_LOGIC);END adder4;ARCHITECTURE structural OF adder4IS--用结构化描述风格设计4位全加器COMPONENT adder1PORT(a,b,cin:INSTD_LOGIC;s,cout:OUTSTD_LOGIC);END COMPONENT;SIGNAL x,y,z:STD_LOGIC;FOR u1,u2,u3,u4:adder1USE ENTITYWORK.adder1(dataflow);BEGINu1:adder1PORT MAP(a(0),b(0),cin,s(0),x);u2:adder1 PORTMAP(a(1),b(1),x,s(1),y);u3:adder1 PORT MAP(a(2),b(2),y,s(2),z);u4:adder1PORT MAP(a(3),b(3),z,s(3),cout);END structural;6.仿真及结果根据上面的程序我进行了仿真,首先是对1位全加器进行仿真,结果如图6-1所示:图6-1 1位全加器仿真图由图6-1可以看出,1位全加器的仿真结果与表1相符,说明1位全加器设计成功。

相关主题