半加器.docx

上传人:b****0 文档编号:10110771 上传时间:2023-05-23 格式:DOCX 页数:31 大小:554.06KB
下载 相关 举报
半加器.docx_第1页
第1页 / 共31页
半加器.docx_第2页
第2页 / 共31页
半加器.docx_第3页
第3页 / 共31页
半加器.docx_第4页
第4页 / 共31页
半加器.docx_第5页
第5页 / 共31页
半加器.docx_第6页
第6页 / 共31页
半加器.docx_第7页
第7页 / 共31页
半加器.docx_第8页
第8页 / 共31页
半加器.docx_第9页
第9页 / 共31页
半加器.docx_第10页
第10页 / 共31页
半加器.docx_第11页
第11页 / 共31页
半加器.docx_第12页
第12页 / 共31页
半加器.docx_第13页
第13页 / 共31页
半加器.docx_第14页
第14页 / 共31页
半加器.docx_第15页
第15页 / 共31页
半加器.docx_第16页
第16页 / 共31页
半加器.docx_第17页
第17页 / 共31页
半加器.docx_第18页
第18页 / 共31页
半加器.docx_第19页
第19页 / 共31页
半加器.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

半加器.docx

《半加器.docx》由会员分享,可在线阅读,更多相关《半加器.docx(31页珍藏版)》请在冰点文库上搜索。

半加器.docx

半加器

半加器

预备知识半加器是与门和异或门的组合电路

异或门

1异或门定义

异或门是实现异或运算的数字单元电路,所谓异或运算是指在只有两个输入变量A、B的电路中,当A和B取值不同时输出为1,否则输出为0。

2异或门逻辑函数表达式

其中

表示异或,+表示与

3异或门可以用与门,非门和或门的组合来实现,

其组合逻辑电路见图1.0

图1.0

其中

表示或门

表示非门

表示与门

4异或门真值表

异或门真值表

5异或门的逻辑符号

为数字逻辑中的符号

为软件中的符号

 

二半加器知识介绍

1.半加器定义

半加器能实现两个一位二进制数的算术加法及向高位进位,而不考虑低位进位的逻辑电路。

它有两个输入端,两个输出端。

半加器用异或门及与门来实现。

2.真值表

两个一位二进制半加器的运算类似于十进制运算,区别是二进制半加器是逢2向高位进一,十进制是逢十向高位进一。

两个一位二进制半加器的运算法则为0+0=0;1+0=1;0+1=1;1+1=0,同时向高位进1.

根据两个一位二进制半加器的运算法则,我们得出其真值表,如下:

半加器的真值表中两个输入是加数A和B,输出有一个是和数C,另一个是进位数D。

被加数A

加数B

和数C

进位数D

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

3.输出逻辑表达式

通过观测真值表很容易看出:

A,B相异时,输出和数C为1;A,B相同时,输出和数C为0;A,B都为1时,输出进位数D为1;否则输出进位数D为0.据此我们得出如下:

C=A

B,D=A•B注:

表示异或,•表示与

4.半加器的逻辑电路图

 

 

图2.0

其中

为异或符号

为与符号

 

5功能仿真图

功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。

图3.0

加数A为1,被加数B为0时,输出和数C为1,进位数D为0;

加数A为1,被加数B为1时,输出和数C为0,进位数D为1;

加数A为0,被加数1为0时,输出和数C为1,进位数D为0;

加数A为0,被加数B为0时,输出和数C为0,进位数D为0;

6时序仿真图

时序仿真是在将设计适配到芯片后的仿真验证方式。

时序仿真在严格的仿真时间模-x#s:

^,~_[181670型下,模拟芯片的实际运作。

仿真时间模型将最基本的门级时延计算在内,从而可有_Y_k9d1W;n_r;I_vI/m181670效地分析出设计中的竞争和冒险。

经过时序仿真验证后的设计基本上与实际电路是一致

T_x_Me+n

?

0m!

X_g181670的。

 

三实验步骤(本实验用VHDL文本语言实现半加器,当然也可用Quartus的图形输入法实现如图2.0的半加器功能)

1.下面我们建立一个半加器的VHDL工程

1)选择开始>程序>Altera>QuartusII,运行QUARTUSII软件。

或者双击桌面上的QUARTUSII的图标运行QUARTUSII软件,出现如图1-3所示。

 

图1-3QUARTUSII软件运行界面

2)选择软件中的菜单File>NewProjectWizard,新建一个工程。

如图1-4所示。

 

 

图1-4新建工程对话框

 

3)点击图1-4中的NEXT进入工作目录,工程名的设定对话框如图1-5所示。

第一个输入框为工程目录输入框,用户可以输入如e:

/eda等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。

第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。

用户可以设定如EXP1,一般情况下工程名称与实体名称相同。

使用者也可以根据自已的实际情况来设定工程名和顶层文件名。

注:

本处的顶层文件名必须和程序的实体名一致,否则编译会出错。

 

图1-5指定工程名称及工作目录

4)点击NEXT,进入下一个设定对话框,按默认选项直接点击NEXT进行器件选择对话框。

如图1-6所示。

这里我们以选用CycloneII系列芯片EP2C35F672C8为例进行介绍。

用户可以根据使用的不同芯片来进行设定。

 

图1-6器件选择界面

首先在对话框的左上方的Family下拉菜单中选取CycloneII,在中间右边的Speedgrade下拉菜单中选取8,在左下方的Availabledevices框中选取EP2C35F672C8,点击NEXT完成器件的选取,进入EDATOOL设定界面如图1-7所示。

 

图1-7EDATOOL对话框

5)按默认选项,点击Next出现新建工程以前所有的设定信息,如图1-8所示,点击Finish完成新建工程的建立。

 

图1-8新建工程信息

 

2、建立VHDL设计文件

1)在创建好设计工程后,选择File>NEW…菜单,出现图1-9所示的新建设计文件类型选择窗口。

这里我们以建立VHDL设计文件为例进行说明。

 

图1-9新建设计文件选择窗口

 

图1-10文本编辑器对话框

 

2)在New对话框(图1-9)中选择DeviceDesignFiles页下的VHDLFile,点击OK按钮,打开文本编辑器对话框,如图1-10所示。

--下面是引用库

libraryieee;--库函数

useieee.std_logic_1164.all;--定义了std_logic数据类型及相应运算

useieee.std_logic_arith.all;--定义了signed和unsigned数据类型、相应运算

---相关类型转换函数

useieee.std_logic_unsigned.all;--定义了一些函数,可以使std_logic_vector

--类型被当作符号数或无符号数一样进行运算

--下面是构造实体

entityexp1is--exp1为实体名

port(A,B:

instd_logic;--输入A代表加数,B代表被加数

D,C:

outstd_logic--计算结果输出D代表和--数,C代表进位数

endexp1);--结束实体

--下面是建立结构体

architecturebehaveofexp1is--behave为结构体名

begin--以begin为标志开始结构体的描述

process(X,Y)--进程,X或Y变化时启动进程

begin

m_Result<=xxory;--和数xor表示异或

c<=xandy;--进位数and表示与

endprocess;--结束进程

endbehave;--结束结构体

 

3)在文本编辑器中输入如下VHDL程序:

 

关于VHDL,我们以上面半加器程序为例来解释VHDL的语法构成,以使大家对VHDL有个整体的把握。

一个VHDL程序有三部分构成,其为:

1.库和包library(设计资源);

2.实体entity(外部端口)

3.结构体architecture(内部结构)

①库和包library(设计资源)的介绍

1.1useieee.std_logic_1164.all;--定义了std_logic数据类型及相应运算

1.2useieee.std_logic_arith.all;--定义了signed和unsigned数据类型、相应运算

--和相关类型转换函数

1.3useieee.std_logic_unsigned.all;--定义了一些函数,可以使std_logic_vector

--类型被当作符号数或无符号数一样进行运算

本程序中用到3个库函数包:

如下:

补充:

当使用库时,需要说明使用的库名称,同时需要说明库中包集合的名称及范围;每个实体都应独立进行库的说明;库的说明应该在实体之前;经过说明后,实体和结构体就可以自动调用库中的资源;

②实体entity(外部端口)

entityexp1is--exp1为实体名

port(A,B:

instd_logic;

m_Result,c:

outstd_logic);

endexp1;--结束实体

实体说明主要描述对象的外貌,即对象的输入和输出(I/O)的端口信息,它并不描述器件的具体功能。

在电路原理图上实体相当于元件符号。

 

AD

BC

图1-1

实体exp1中描述如上图1-1输入和输出(I/O)的端口信息

③构造体architecture(内部结构)

结构体具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部元件的连接关系。

architecturebehaveofexp1is--behave为结构体名

begin--以begin为标志开始结构体的描述

process(X,Y)--进程,X或Y变化时启动进程

begin

m_Result<=xxory;--和数xor表示异或

c<=xandy;--进位数and表示与

endprocess;--结束进程

endbehave;--结束结构体

上面一段结构体描述的实体内部元件的连接关系如下:

m_Result=X

YC=A•B

注:

程序中给信号赋值用“<=”如c<=xandy意思为把X,Y相与后的结果赋给C

补充:

半加器若用电路图来表示,其为:

其中黑色边框,汉字皆为注释方框中为结构体描述的电路,左右两边的半方框为实体的描述,定义输入,输出。

 

4)点击保存按钮,弹出如下选项,将其名命名为exp1,如下图

 

5)对设计文件进行编译

QUARTUSII编译器窗口包含了对设计文件处理的全过程。

在QUARTUSII软件中选择processin>startcompilation菜单项,就会自动编译,出现QUARTUSII的编译器窗口,如下图所示

如果文件有错,在软件的下方则会提示错误的原因和位置,以便于使用者进行修改直到设计文件无错。

整个编译完成,软件会提示编译成功,

3管脚分配

在前面选择好一个合适的目标器件(在这个实验中选择为EP2C35F672C8),完成设计的分析综合过程,得到工程的数据文件以后,需要对设计中的输入、输出引脚指定到具体的器件管脚号码,指定管脚号码称为管脚分配或管脚锁定。

这里介绍两种方法进行管脚锁定。

1)点击Assignments菜单下面的AssignmentEditor,进入到引脚分配窗口。

如图1-15所示。

 

图1-15进入引脚分配界面

首先将要分配管脚的信号放置在To下方。

双击To下方的《New》,如图1-15所示则会出现如图1-16所示界面。

 

图1-16信号选择对话框

选择NodeFinder…进入如图1-17所示的NodeFinder对话框界面。

按图1-17中样例设置参数。

在Filter窗口选择Pins:

all,在Named窗口中输入“*”,点击List在NodesFound窗口出现所有信号的名称,点击中间的按钮则SelectedNodes窗口下方出现被选择的端口名称。

双击OK按钮,完成设置。

进入管脚分配窗口,如图1-18所示。

图1-17NodeFinder对话框

 

图1-18管脚分配

 

在图1-18中以锁定端口A的管脚为例,其它端口的管脚锁定与其基本一致。

选择端口A的对应AssignmentName待其变为蓝色,双击之,出现下拉菜单选取如图1-18所示的Location(Acceptswildcards/groups)选项。

选择端口A的对应Value栏,待其变为蓝色,依照表1-2所示的硬件与FPGA的管脚连接表(或附录),输入对应的管脚名AC22,按回车键,软件将自动将其改为PIN_AC22,同时蓝色选择条会自动跳转到Value栏的下一行,这表明软件已经将输入端口C分配到FPGA的AC22引脚上,如图1-19所示。

图1-19给A端口进行管脚分配

用同样的方法,依照表1-2和所示的硬件与FPGA的管脚连接表(或附录),对其它端口进行管脚分配,如图1-20所示。

图1-20所有引脚全部分配结束后的软件窗口

 

端口名

使用模块信号

对应FPGA管脚

说明

A

拨动开关K1

AC22

加数

B

拨动开关K2

AD23

被加数

D

LED灯LED2

AA16

进位数

C

LED灯LED1

AA17

和数

表1-2端口管脚分配表

值得注意的是,当管脚分配完之后一定要进行再进行一次全编译,以使分配的管脚有效。

 

4、对设计文件进行仿真

1)创建一个仿真波形文件,选择QUARTUSII软件File>New,进行新建文件对话框。

如图1-24所示。

选取对话框的OtherFile标签页,从中选取VectorWaveformFile,点击OK按钮,则打开了一个空的波形编辑器窗口,如图1-25所示。

 

图1-24新建文件对话框图1-25波形编辑器

2)设置仿真结束时间,波形编辑器默认的仿真结束时间为1µS,根据仿真需要,可以自由设置仿真的结束时间。

选择QUARTUSII软件的Edit>EndTime命令,弹出线路束时间对话框,在Time框办输入仿真结束时间,点击OK按钮完成设置。

3)加入输入、输出端口,在波形编辑器窗口左边的端口名列表区点击鼠标右键,在弹出的右键菜单中选择InsertNodeorBus…命令,在弹出的InsertNodeorBus对话框如图1-26所示界面中点击NodeFinder…按钮。

 

图1-26InsertNodeorBus对话框

在出现的NodeFinder界面中,如图1-27所示,在Filter列表中选择Pins:

all,在Named窗口中输入“*”,点击List在NodesFound窗口出现所有信号的名称,点击中间的

按钮则SelectedNodes窗口下方出现被选择的端口名称。

双击OK按钮,完成设置,回到图1-26所示的InsertNodeorBus对话框,双击OK按钮,所有的输入、输出端口将会在端口名列表区内显示出来,如图1-28所示。

 

图1-27NodeFinder对话框

图1-28在波形编辑器中加入端口

4)编辑输入端口波形,即指定输入端口的逻辑电平变化,下面详细介绍波形编辑工具的使用方法,以使大家对波形编辑工具熟悉。

 

图1-29波形编辑器工具栏

文本编辑工具,选中文本编辑图标,将鼠标移动到图形编辑窗口,鼠标变成十字架形状,点击鼠标左键就会出现文本编辑标签;双击文本编辑标签,就可修改文本内容。

箭头指向为文本说明的部分。

 

波形编辑工具(常用):

选中波形编辑工具,鼠标变成波形编辑工具形状,在需要编辑的图形仿真窗口中选择一段要编辑的图形,所选的部分电平就会发生变化。

 

查找工具:

当波形仿真较复杂的时候,可通过查找工具查找某一信号或文本注释所在位置,并进行相应的编辑。

点击查找工具,在“findwhat”栏里输入要查找的内容,并选择查找的范围,即可完成查找功能。

替换工具和查找工具类似。

 

未初始化工具:

单击所要编辑的信号名,使所要编辑的信号线变成蓝色,再点击未初始化工具,则整个信号线状态全部为未初始化状态;若想只编辑信号线的一部分为未初始化状态,可先选中要编辑信号线的一部分,使之变为蓝色,再点选相应工具,可完成对一部分信号线的编辑。

高低电平、高阻、无关、反向、弱点电平等与未初始化图形编辑工具类似。

 

未定义工具高阻工具

 

高阻等其他波形编辑工具

计数值工具:

选中需要编辑的信号线的一段,点选计数工具,出现下图所示窗口,可以选择进制,起始计数值、结束计数值;选择“timing”标签,可设置计数的起始时间,和计数单位。

 

时钟工具(常用):

单击要编辑的信号线,使之变为蓝色条,再单击左列的时钟设置键,在Clock窗口中设置信号线的时钟周期;Clock窗口中的Dutycycle是占空比,默认为50%占空比,如下图所示。

 

任意值工具:

单击要编辑的信号线,使之变为蓝色条,再单击左列的任意值设置键,在出现的对话框中可设置数位进制和任意的数值。

 

随机值工具:

单击要编辑的信号线,使之变为蓝色条,或则选择要编辑信号线的一段,再单击左列的随机值设置键,所选区域显示产生的随机值波形。

 

以上是对波形编辑工具的一些介绍。

在如图1-28所示的波形编辑窗口中,选择要输入波形的输入端口如B端口,在端口名显示区左边的波形编辑器工具栏中有要输入的各种波形,其按钮说明如图1-29所示。

根据仿真的需要输入波形。

以添加输入端口波形B为例来讲解如何操作:

在添加完输入,输出端口后,在每个端口的左边会出现I或者O字样,分别代表输入,输出,我们只需要添加输入端口波形,首先单击Edit--EdnTime弹出如图a-1EndTime对话框,在EndTime对话框左边第一行输入10,第二行输入us,完毕后单击OK,完成了整个仿真时间的设置。

 

图a-1EndTime对话框

然后用波形编辑工具

选中B的1.58到2.0us后,然后单击

高电平,该段波形变为高电平1,见图a-2B端口编辑波形图,用同样的方法编辑其他时段的波形和其他输入端口的波形,参照图1-30编辑输入端口波形。

 

图a-2B端口编辑波形图

注:

输入波形的时间不能过小,最好能达到每段波形最小间隔0.3us,否则很可能由于延时造成结果的不如意。

完成后如图1-30所示。

最后选择软件的File>Save进行保存。

 

图1-30编辑输入端口波形

5)指定仿真器设置,在仿真过程中有时序仿真和功能仿真之分,在这里介绍功能仿真。

在QUARTUSII软件中选择Tool>SimulatorTool命令,打开仿真器工具窗口,如图1-31所示。

 

图1-31仿真器工具窗口

图1-31

按图1-31上的提示,首先产生功能仿真网表文件,点击产生功能仿真网表的按钮GenerateFunctionalSimulationNetlist,产生功能仿真网表,然后点击开始仿真的START按钮开始进行仿真,直到仿真进度条为100%完成仿真。

点击仿真报告窗口按钮Report,观察仿真波形。

如图1-32所示。

 

图1-32仿真波形

6、从设计文件到目标器件的加载

完成对器件的加载有两种形式,一种是对目标器件进行加载文件,一种是对目标器件的配置芯片进行加载。

这里我们介绍对目标器件EP2C35F672C8进行加载的方法。

1)使用下载电缆将PC机与实验系统连接起来。

2)选择QUARTUSII软件的Tool>Programmer命令,进行编程器窗口,如图1-33所示,如果没有设置编程硬件,则编程硬件类型为NoHardware,需要对编程硬件进行设置。

点击HardwareSetup…编程硬件设置按钮,进行如图1-34所示的编程硬件设置对话框。

 

 

图1-33编程器窗口

图1-34编程器硬件设置对话框

3)点击AddHardware按钮,出现AddHardware对话框,如图1-35所示。

 

 

图1-35编程硬件选择对话框

4)在AddHardware对话框中,从Hardwaretype列表中选择所需要硬件类型,如果是USB接口的请参照用户使用手册中的USB电缆的安装与使用,如果使用的是并口下载线则选取如图1-35所示的硬件类型,点击OK按钮,完成对硬件类型的设置。

回到编程器硬件设置窗口,点击Close按钮退出设置。

则在编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。

5)如果软件已运行一个工程,则在打开编程器的时候,编程器窗口会自动出现这个工程文件要加载到目标器件的文件,如果要加载其它文件可以从其它地方进行添加更改。

选好加载文件后,再点选Progam/Configure,编程模式选取JTAG模式,点击STRAT进行文件加载,直到加载进度变为100%,文件成功加载完成。

7实验结果与现象

以设计的参考示例为例,当设计文件加载到目标器件后,将K1置1(往上拨)时,灯D1亮;将K2置1(往上拨)时,灯D1亮;将K1,K2都置1(往上拨)时,灯D1灭,D2亮;将K1,K2都置0(往下拨)时,灯D1灭,D2灭。

8实验报告

1、绘出仿真波形,并作说明。

2、将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。

 

附:

半加器的完整程序:

--下面是引用库

-------------------------------------------------------------------------------

libraryieee;--库函数

useieee.std_logic_1164.all;--定义了std_logic数据类型及相应运算

useieee.std_logic_arith.all;--定义了signed和unsigned数据类型、相应运算和相关--类型转换函数

useieee.std_logic_unsigned.all;--定义了一些函数,可以使std_logic_vector类

--型被当作符号数或无符号数一样进行运算

---------------------------------------------------------------------------

--下面是构造实体

entityexp1is--exp1为实体名

port(A,B:

instd_logic;--输入A代表加数,B代表被加数

C,D:

outstd_logic--计算结果输出C代表和数,D代表--进位数);

endexp1;--结束实体

---------------------------------------------------------------------------

--下面是建立结构体

architecturebehaveofexp1is--behave为结构体名

begin--以begin为标志开始结构体的描述

process(A,B)--进程,A或B变化时启动进程

begin

C<=AxorB;--和数xor表示异或

D<=AandB;--进位数and表示与

endprocess;--结束进程

endbehave;--结束结构体

注:

完整的半加器VHDL工程放在:

北方工大EDA实验指导书\实验一设计全加器\半加器目录里。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2