一位全加器元件例化四位全加器

合集下载

EDA课程设计_一位全加器的设计

EDA课程设计_一位全加器的设计

EDA课程设计一位全加器的设计The design of one bit full adder学校:兰州交通大学学院:电子与信息工程学院班级:姓名:学号:指导老师:成绩:摘要:本设计主要是利用VHDL语言设计一个一位全加器,它由半加器和或门两个模块组成。

两个模块通过顶层元件例化连接到一起。

几个模块组成的整体能够实现全加器的功能,对所给数据,能够准确快速地计算出其结果.具体的该设计利用VHDL语言使用文本输入,新建工程,通过设计输入、编译、仿真完成各种模块设计,然后生成元器件,再根据元件例化完成各部分的整合,从而形成一个完整的全加器,功能上很好地被满足。

关键字:全加器元件例化Abstract:This design primarily uses VHDL language to design the one bit full adder, which is composed of two half adder and a OR gate. The two modules are connected by top Component instance. Finally, the whole of several parts achieve the function of full adder. For given dates, it can calculate its consequence accurately and quickly.In detail, the design uses text input method by VHDL language to create new projects. By designing the input, compile, simulate, it complete various modules design and generate new components. Then it forms a complete one bit full adder by accomplishing the integration of all parts, according to component instance. And the function can be well satisfied.Key word:full adder component instance一.原理(说明)在计算机中2个二进制数之间的加减乘除算术运算都是由若干加法运算实现的.全加器是算术逻辑运算的重要组成部分,对其深入探索研究有重要的意义。

EDA1_4位加法器原理图设计

EDA1_4位加法器原理图设计

4 位加法器原理图设计一、实验目的1、进一步掌握 Quartus Ⅱ原理图输入设计法。

2、通过4位加法器的设计,掌握原理图输入法中的层次化设计。

二、实验原理图1 半加器原理图图2 1位全加器原理图图3 4 位加法器原理图4 位加法器(如图3)是以 1 位全加器作为基本硬件,由 4 个 1 位全加器串行构成, 1位全加器又可以由两个1位的半加器和一个或门连接而成(如图2),而1位半加器可以由若干门电路组成(如图1)。

三、实验内容本次实验使用 Altera FPGA 的开发工具 Quartus Ⅱ,利用原理图输入设计方法设计一个 4位加法器。

四、实验步骤1、打开QUARTUS II软件,新建一个工程adder4bit。

2、建完工程之后,再新建一个Block Diagram/Schematic File。

在原理图编辑窗口绘制如图1的半加器原理图。

点击 File ->Save,将已设计好的图文件取名为:h_adder,并存在此目录内。

3、编译。

如果发现有错,排除错误后再次编译。

直到编译通过就可以进行波形仿真了。

4、时序仿真。

建立波形文件,设置波形参量,再保存(注意: QuartusⅡ在波形仿真时,只支持一个与工程名同名的波形文件,所以在对多个文件进行波形仿真时,对波形文件都取工程名进行保存,后缀名为.vwf;若确实想保留多个波形文件,则可以分别命名,想对哪个波形文件进行仿真时,点击Processing->simulationTool,在Simulation input中输入待仿真的波形文件即可,如图4所示) ,最后运行波形仿真。

观察分析波形。

然后将半加器 h_adder 封入库生成半加器元件了,为后续生成 1 位全加器做准备。

图4 仿真结果5、封装入库。

封将仿真调试好的半加器封装入库。

打开 h_adder.bdf文件,在File->Create/update 如图5所示。

图5 元件封装入库6、全加器原理图设计。

四位全加器实验Verilog

四位全加器实验Verilog

实验四四位全加器一、实验目的l. 用组合电路设计4位全加器。

2.了解Verilog HDL语言的行为描述的优点。

2、实验原理4位全加器工作原理1)全加器除本位两个数相加外,还要加上从低位来的进位数,称为全加器。

被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。

能实现全加运算功能的电路称为全加电路。

全加器的逻辑功能真值表如表中所列。

2)1位全加器一位全加器(FA)的逻辑表达式为:S=A⊕B⊕Cin;Co=AB+BCin+ACin其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;这两幅图略微有差别,但最后的结果是一样的。

3)4位全加器4位全加器可看作4个1位全加器串行构成, 具体连接方法如下图所示:采用Verilog HDL语言设计该4位全加器,通过主模块调用子模块(1位全加器)的方法来实现。

3、实验步骤四、实验连线K1-K4:14-11K5-K8:18-15L5-L8:7-10VIJN:83L4:64KHZ:805、心得体会首先,实现这一段全加器代码并不难,但是由于困惑给的三个时钟输入,没有太懂意思,所以只写了全加器控制LED灯的代码;后来问清楚后,运行全加器代码,有错误,原来是建文件时用的是verilog hdl,我建的是其他类型的;后来还有错,原来是把冒号打成分号;编译成功后,LED不亮,后来发现是硬件老化,换了箱子。

这一部分做好后,我准备把控制声音的加上去,本来准备再加一个模块,可是不能有两个顶层块,就对主模块做了补充,用case命令调用不同的状态,因为时间紧迫,所以代码写得比较简单,没有用经典的分频代码。

这里附一小段,是我在研究分频控制时看懂的网上的经典分频代码,适合乐曲自动播放等高级的实现,仅供分享assign preclk=(divider==16383)?1:0;//divider==16383,preclk=1always @(posedge clk) //基频上升沿触发beginif(preclk) //preclk=1divider=origin;elsedivider=divider+1;endalways @(posedge preclk) //调整占空比beginspeaker=~speaker; //2 分频产生方波信号end这部分实现了分频功能,其中origin+divider=16384=2^14,这个数根据自己的需要而定。

4位全加器

4位全加器

1 设计分析全加器是能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号的加法电路。

其真值表如表1所示:根据真值表可得出下列表达式:根据以上表达式,可以用数据流方式设计出1位全加器。

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

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

4位全加器的原理图如图1所示:()()cinb a ab cin b a b a ab abcincin b a bcin a cin ab cout ⊕+=++=+++=()()()()cinb a cin b a cin b a cin ab b a cin b a b a abcin cin b a cin b a cin b a s ⊕⊕=⊕+⊕=+++=+++=图1 4位全加器原理图根据图1所示,可以采用结构化描述方式设计4位全加器。

2 程序设计设计的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adder1 IS --1位全加器设计PORT(a,b,cin:IN STD_LOGIC;s,cout:OUT STD_LOGIC);END adder1;ARCHITECTURE dataflow OF adder1 IS --用数据流方式设计1位全加器SIGNAL tmp:STD_LOGIC; --用tmp表示a⊕b BEGINtmp<=a XOR b AFTER 10 ns;s<=tmp XOR cin AFTER 10 ns;cout<=(a AND b)OR(tmp AND cin) AFTER 20 ns;END dataflow;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adder4 IS --4位全加器设计PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);cin:IN STD_LOGIC;s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cout:OUT STD_LOGIC);END adder4;ARCHITECTURE structural OF adder4 IS --用结构化描述风格设计4位全加器COMPONENT adder1PORT(a,b,cin:IN STD_LOGIC;s,cout:OUT STD_LOGIC);END COMPONENT;SIGNAL x,y,z:STD_LOGIC;FOR u1,u2,u3,u4:adder1 USE ENTITY WORK.adder1(dataflow);BEGINu1:adder1 PORT MAP(a(0),b(0),cin,s(0),x);u2:adder1 PORT MAP(a(1),b(1),x,s(1),y);u3:adder1 PORT MAP(a(2),b(2),y,s(2),z);u4:adder1 PORT MAP(a(3),b(3),z,s(3),cout);END structural;3 仿真结果对上面的程序进行仿真,先对1位全加器仿真,结果如图2所示:图2 1位全加器仿真图由图2可以看出,1位全加器的仿真结果与表1相符,说明1位全加器设计成功。

全加器的设计

全加器的设计

实验课程名称:EDA技术与应用实验项目名称4位全加器实验实验成绩实验者专业班级组别同组者 / 实验日期一、实验目的1、加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。

2、熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。

二、实验内容用原理图输入法设计4位全加器。

三、实验仪器Quartus II软件四、实验原理一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。

1、半加器描述根据半加器真值表可以画出半加器的电路图。

a b so Co0 0 0 00 1 1 01 0 1 01 1 0 1表1 半加器h_adder真值表图1 半加器h_adder电路图2、一位全加器描述一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL描述,1位全加器电路图如图所示:图2 一位全加器电路图3、4位全加器设计描述4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。

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

S 为输出和,其功能可用布尔代数式表示为:S A B Ci =++ii i i o ABC ABC ABC ABC C +++=首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。

将4个1位全加器级联构成四位全加器。

五、实验步骤1、为本项工程设计建立文件夹 :文件夹取名为adder ,路径为d:\adder 。

2、建立原理图文件工程和仿真 原理图编辑输入流程如下:1) 打开原理图编辑窗。

实验二 原理图输入法设计-4位加法器

实验二  原理图输入法设计-4位加法器

实验二四位加法器的设计与仿真——原理图输入法一实验目的通过一个4位加法器的设计掌握QuartusII的原理图输入方法及层次化设计的方法。

二原理说明一个4位加法器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出co与相邻的的高位加法器的最低进位输入信号ci相接。

三实验内容与步骤1.按照参考图2.1完成全加器的设计,包括原理图输入、编译、仿真,并将此全加器电路设置成一个硬件符号入库。

图2.1全加器的设计电路操作步骤:(1)建立设计项目(Project):与实验一的操作相同。

(2)新建模块/原理图文件,进入图形编辑器方式。

执行File|New命令,选择“Block Diagram/Schematic File ”(模块/原理图文件)。

(3)选择元件。

在原理图编辑窗中的任何一个位置上双击鼠标的左键将跳出一个元件选择窗。

图2.2元件选择对话框(4)编辑图形文件在元件库找到自己想要的元件,放好后连线并添加输入输出端口,画出完整的电路图后保存并编译通过。

(5)对设计项目设置进行仿真:过程与方法与实验一相同。

(6)将设计项目设置成可调用的元件以便调用基本逻辑元件库参数可设置的强函数元件库基本逻辑元件库中的元件 由此输入所需要的元件名MAX+plus 库 图2.3 一位全加器的图形编辑文件图2.4 将一位全加器模块生成符号入库2.建立一个更高的原理图设计层次,调用以上获得的1位全加器构成4位加法器,并完成编译、综合、仿真。

3.设计文件打包上传。

四实验报告:详细叙述4位加法器的设计流程;给出各层次的原理图及其对应的仿真波形图;将实验原理、实验过程、仿真结果写进实验报告。

五思考题:为了提高加法器的速度,如何改进以上设计的进位方式?六选作内容:用一片74163和一片74138构成一个具有8路顺序脉冲输出的顺序脉冲产生器。

要求在原理图上标明第1路到第8路输出的位置。

4位全加器

4位全加器

设计过程如下:1.构建一个全加器全加器的真值表和逻辑表达式如下:表一全加器真值表逻辑表达式为:S=A⊕B⊕c , C=AB+(A⊕B)c(1)选逻辑门。

双击Logic and Bit Operations。

将Logical Operator模块拖到工作窗口中。

双击模块打开Block Parameters窗口,将Main标签中的Operator选项改为XOR或OR,再拖入一个AND门。

(2)选输入信号。

选用Pulse Generator。

打开Sources面板,拖入三个Pulse Generator 并放置在窗口的左侧。

这三个Pulse Generator作为加法器真值表的三个输入。

双击第一个并将它的周期(period)设定为8秒,相位延迟(phase delay)设定为4秒,Pluse Width设置为50并Pulse Generator重命名为A input,。

双击第二个,将周期设定为4秒,相位设定为2秒,Pluse Width设置为50,重命名为B input,。

双击第三个,将周期设定为2秒,相位设定为1秒,Pluse Width设置为50,重命名为C input。

(3)输入输出的观测。

用Commonly Used Blocks 中的Scope(示波器)模块。

输入分别为A、B、C输出为S、C(4)选好之后,进行连线,连线结果如下图1 全加器逻辑图(5)执行运行用示波器分别观察A、B、C 、S、C如下:A:B:C:S:C:经过比较,各波形与全加器真值表中数值相符合,因此,创建全加器模块。

2. 创建全加器模块选中要创建子系统的模块,选择Edit\CreateSubsystem 菜单,创建全加器模块,命名为Full_Adder,结果如下图图2 全加器模块3.构建一个4位加法器复制为四个全加器,并在Commonly Used Blocks中拖动3个In、2个Out、2个Demux、1个Mux,并连接成四位全加器,如下图所示:图3 4位全加器经赋值检验连接正确,保存命名为Full Adder_4。

logisim1位全加器构成4位加法器的设计过程描述

logisim1位全加器构成4位加法器的设计过程描述

logisim1位全加器构成4位加法器的设计过程描述[logisim1位全加器构成4位加法器的设计过程描述]在数字电路设计中,加法器是最基本也是最常见的电路之一。

一个4位加法器由四个1位全加器组成,每个1位全加器都能实现两个1位二进制数的加法。

本文将以构造一个4位加法器为例,详细介绍1位全加器的设计过程及其在4位加法器中的应用。

1. 1位全加器的功能和原理:1位全加器是一种能够实现三个二进制输入数(a、b和进位cin)加和产生两个输出数(和sum和进位cout)的电路。

其最基本的真值表可以表示为:a b cin sum cout-0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1从上表中可以看出,和sum的计算结果是输入数a、b和cin的异或值;而进位cout的计算结果则是输入数a、b和cin的与运算后再与(a、b的异或结果)的或运算的结果。

2. 1位全加器的逻辑门电路设计:根据上述的真值表,我们可以设计出1位全加器的逻辑门电路。

一种常见的实现方式是使用两个异或门、一个与门和一个或门组合而成。

具体接线如下图所示:a -oooob -ooocin -oooosum cout Cin3. 构造4位加法器的步骤:一位全加器是完成二进制的加法运算的基本单元,我们可以通过将四个1位全加器按照特定的连接方式组成一个4位加法器。

下面是构造一个4位加法器的详细步骤:3.1 连接四个1位全加器:将四个1位全加器按照从右至左的顺序依次连接起来,其中每一个全加器的进位输入cin连接到其前一个全加器的进位输出cout。

这样,第一个全加器的进位输入cin可以直接连接到一个外部的输入信号,即加法器的进位输入Cin。

3.2 确定输入连接方式:将待相加的两个4位二进制数a和b的对应位与进位输入Cin分别与第一个全加器的a、b和cin相连。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第组
西华大学实验报告
.
西华大学实验报告(计算机类)
开课学院及实验室:机械学院实验室实验时间:年月日学生姓名学号成绩
学生所在学院电气与电子信息学院年级/专业/班
课程名称EDA技术课程代码106004689 实验项目名称四位加法器设计项目代码
指导教师项目学分
一、实验目的
学习加法器的功能与定义,学习VHDL,学习用元件例化方法设计多层次结构的VHDL设计。

二、内容与实验原理
内容:编写一个一位全加器和一个四位全加器的VHDL代码,用元件例化方法建立一个四位全加器并编译,仿真。

实验原理:
算术运算式数值系统的基本功能,更是计算机中不可缺少的组成单元。

1、全加器
全加法是算术运算电路中的基本单元,它们是完成1位二进制相加的一种组合逻辑电路。

一位加法器的真值表见下表;由表3-1中可以看见,这种加法考虑低位来的进位,所以称为全加。

一位全加器就是实现下表中逻辑关系的电路。

表3-1 一位半加器真值表
被加数A 加数B 低位进位Ci 和数S 进位Co
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
1 1 1 1 1
2、四位全加器
按照串行进位方式,采用四个一位全加器级联可以得到四位加法器。

三、使用环境
计算机、Modelsim软件。

四、核心代码及调试过程
(1)
library IEEE;
USE IEEE.std_logic_1164.all;
ENTITY full IS
PORT (a,b,cin:IN STD_LOGIC;
sum,Co: OUT STD_LOGIC);
END full ;
architecture rtl of full is
SIGNAL u0_Co,u0_s,u1_c0,c,d,e,f:STD_LOGIC;
BEGIN
c <= a OR b;
d <= a NAND b;
u0_Co <= NOT d;
u0_s <= c AND d;
e <= u0_s OR cin;
f <= u0_s NAND cin;
u1_c0 <= NOT f;
sum <= e and f;
Co <= u0_Co OR u1_c0;
end rtl;
(2)
full
library IEEE;
USE IEEE.std_logic_1164.all;
ENTITY full IS
PORT (a,b,cin:IN STD_LOGIC;
s,Co: OUT STD_LOGIC);
END full ;
architecture rtl of full is
SIGNAL u0_Co,u0_s,u1_c0,c,d,e,f:STD_LOGIC;
BEGIN
c <= a OR b;
d <= a NAND b;
u0_Co <= NOT d;
u0_s <= c AND d;
e <= u0_s OR cin;
f <= u0_s NAND cin;
u1_c0 <= NOT f;
s <= e and f;
Co <= u0_Co OR u1_c0;
end rtl;
--sifull
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY sifull IS
PORT( X,Y:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
C:IN STD_LOGIC;
SUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Co1:OUT STD_LOGIC);
END sifull;
ARCHITECTURE struct OF sifull IS
COMPONENT full
PORT(a,b,cin:IN STD_LOGIC;
s,Co:OUT STD_LOGIC);
END COMPONENT;
SIGNAL temp1,temp2,temp3,temp4:STD_LOGIC;
BEGIN
U1:full PORT MAP(X(0),Y(0),C,SUM(0),temp1);
U2:full PORT MAP(a=>X(1),b=>Y(1),cin=>temp1,s=>SUM(1),Co=>temp2);
U3:full PORT MAP(a=>X(2),b=>Y(2),cin=>temp2,s=>SUM(2),Co=>temp3);
U4:full PORT MAP(a=>X(3),b=>Y(3),cin=>temp3,s=>SUM(3),Co=>temp4);
Co1<=temp4;
END struct;
1、按照真值表编写一位全加器VHDL代码,并采用元件例化语句编写四位加法器VHDL代码。

2、利用仿真软件进行编译仿真,给出电路的时序逻辑波形。

3、分析仿真时序波形。

五、实验结果分析及问题讨论
图1
图2。

相关文档
最新文档