实验一 一位二进制全加器设计实验.docx

上传人:b****0 文档编号:12843226 上传时间:2023-04-22 格式:DOCX 页数:17 大小:455.50KB
下载 相关 举报
实验一 一位二进制全加器设计实验.docx_第1页
第1页 / 共17页
实验一 一位二进制全加器设计实验.docx_第2页
第2页 / 共17页
实验一 一位二进制全加器设计实验.docx_第3页
第3页 / 共17页
实验一 一位二进制全加器设计实验.docx_第4页
第4页 / 共17页
实验一 一位二进制全加器设计实验.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验一 一位二进制全加器设计实验.docx

《实验一 一位二进制全加器设计实验.docx》由会员分享,可在线阅读,更多相关《实验一 一位二进制全加器设计实验.docx(17页珍藏版)》请在冰豆网上搜索。

实验一 一位二进制全加器设计实验.docx

实验一一位二进制全加器设计实验

南昌大学实验报告

学生姓名:

学号:

专业班级:

中兴101

实验类型:

■验证□综合□设计□创新实验日期:

2012928实验成绩:

实验一一位二进制全加器设计实验

一.实验目的

(1)掌握QuartusII的VHDL文本设计和原理图输入方法设计全过程;

(2)熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件测试结果;

(3)熟悉设备和软件,掌握实验操作。

二.实验内容与要求

(1)在利用VHDL编辑程序实现半加器和或门,再利用原理图连接半加器和或门完成全加器的设计,熟悉层次设计概念;

(2)给出此项设计的仿真波形;

(3)参照实验板1K100的引脚号,选定和锁定引脚,编程下载,进行硬件测试。

三.设计思路

一个1位全加器可以用两个1位半加器及一个或门连接而成。

而一个1位半加器可由基本门电路组成。

(1)半加器设计原理

能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。

或:

只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。

图1为半加器原理图。

其中:

a、b分别为被加数与加数,作为电路的输入端;so为两数相加产生的本位和,它和两数相加产生的向高位的进位co一起作为电路的输出。

半加器的真值表为

表1半加器真值表

a

b

so

co

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

由真值表可分别写出和数so,进位数co的逻辑函数表达式为:

(1)

(2)

图1半加器原理图

(2)全加器设计原理

除本位两个数相加外,还要加上从低位来的进位数,称为全加器。

图2全加器原理图。

全加器的真值表如下:

表2全加器真值表

c

a

b

co

so

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

其中a为加数,b为加数,c为低位向本位的进位,co为本位向高位的进位,so为本位和。

图2.全加器原理图

四.实现方法一:

原理图输入法设计(自己独立完成)

1.建立文件夹

建立自己的文件夹(目录),如c:

\myeda,进入Windows操作系统

●QuartusII不能识别中文,文件及文件夹名不能用中文。

2.原理图设计输入

打开QuartusII,选菜单File→New,选择“DeviceDesignFile->BlockDiagram->SchematicFile”项。

点击“OK”,在主界面中将打开“BlockEditor”窗口。

(1)放置元件

在原理图编辑窗中的任何一个空白处双击鼠标左键或单击右键,跳出一个选择窗,选择此窗中的EnterSymbol项输入元件,出现元件选择窗口。

元件选择窗口窗口中SymbolLibraries:

的路径c:

\Quartus2\max2lib\prim下为基本逻辑元件库,双击之,在SymbolFiles:

下出现prim中的所有元件,选中你需要的元件(如:

二与门,即and2);或者在SymbolName:

中直接输入元件名称(and2),单击OK键。

你需要的元件(and2)会出现在原理图编辑窗中。

为了设计半加器,分别调入元件and2、not、xnor、input和output。

●如果安放相同元件,只要按住CTRL键,同时用鼠标拖动该元件。

(2)添加连线

把鼠标移到引脚附近,则鼠标光标自动由箭头变位十字,按住鼠标左键拖动,即可画出连线。

然后用鼠标分别在input和output的PIN-NAME上双击使其变黑色,再用键盘分别输入各引脚名:

ain、bin、co和so。

(3).保存原理图

单击File→Saveas…按扭,出现对话框,选择自己的目录(如c:

\myeda)、合适名称保存刚才输入的原理图,原理图的扩展名为.bdf,本实验取名gate.bdf。

如图3所示。

图3一位半加器图

(4)设置工程文件(Project)

方法1选择FileProjectSetProjecttoCurrentFile,即将当前的设计文件设置成工程。

方法2如果设计文件未打开,选FileProjectName,然后在跳出的ProjectName窗中找到c:

\myeda目录,在其File小窗口中双击gate.bdf文件。

●选择此项后可以看到窗口左上角显示出所设文件路径的变化。

3.选择目标器件

单击Assign→Device,跳出Device窗口,此窗口的DeviceFamily是器件序列栏,首先在此栏中选定目标器件对应的序列名,如EPM7128S对应的是MAX7000S系列;EPF10K10对应的是FLEX10K系列等。

根据实际情况完成器件选择后(本实验为Cyclone||系列的EP2C35F672C8),按OK键。

●应将此栏下方标有ShowonlyFastestSpeedGrades的勾消去,以便显示出所有速度级别的器件。

4.编译(Compiler)

单击QuartusII→Compiler,跳出Compiler窗口,此编译器的功能包括网表文件的提取、设计文件的排错、逻辑综合、逻辑分配、适配(结构综合)、时序仿真文件提取和编程下载文件装配等。

单击Start,开始编译!

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

5.包装元件入库。

编译通过后,单击File→CreateDefaultSymbol,当前文件变成了一个包装好的自己的单一元件(半加器:

gate),并被放置在工程路径指定的目录中以备后用。

6.用两个半加器及一个或门连接而成一位全加器

我们将上述1~5步的工作看成是完成了的一个底层元件,并被包装入库。

利用已做好的半加器gate,完成原理图输入、连线、引脚命名、器件选择、保存、项目设置、编译等过程,完成顶层项目全加器的设计。

如图4所示。

图4全加器的设计图

●半加器元件gate的调用与库元件的调用方法一样。

●以文件名aaa.bdf存在同一目录(c:

\myeda)中。

以下步骤同方法二:

7.仿真,测试项目的正确性

8.观察分析波形

9.时序分析

五.VHDL文本输入法设计

1.试验程序(程序来源:

自己独立编写)

--全加器设计的文本输入法设计程序

--设计人:

邓小娇

--2012年9月26日

--1位二进制全加器顶层设计描述

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYaaaIS

PORT(ain,bin,cin:

INSTD_LOGIC;--输入信号ain为加数,bin为加数,cin为低位向本位的进位

cout,sum:

OUTSTD_LOGIC);--输出信号:

co为本位向高位的进位,--so为本位和

ENDENTITYaaa;

--半加器描述:

真值表描述方法

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYgateIS

PORT(a,b:

INSTD_LOGIC;--a为加数,b也为加数

co,so:

OUTSTD_LOGIC);--co为本位向高位进位,so为本位和

ENDENTITYgate;

ARCHITECTUREART4OFgateIS

SIGNALabc:

STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据类型

BEGIN

abc<=a&b;--a相并b,即a与b并置操作

PROCESS(abc)

BEGIN

CASEabcIS--类似于真值表的CASE语句

WHEN"00"=>so<='0';co<='0';

WHEN"01"=>so<='1';co<='0';

WHEN"10"=>so<='1';co<='0';

WHEN"11"=>so<='0';co<='1';

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREART4;

--或门逻辑描述

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYor2aIS

PORT(a,b:

INSTD_LOGIC;--a.b都为或门的输入

c:

OUTSTD_LOGIC);--c为或门的输出

ENDENTITYor2a;

ARCHITECTUREoneOFor2aIS

BEGIN

c<=aORb;

ENDARCHITECTUREone;

ARCHITECTUREfd1OFaaaIS

COMPONENTgate--调用半加器声明语句

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTor2a

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALd,e,f:

STD_LOGIC;--定义3个信号作为内部的连接线。

BEGIN

u1:

gatePORTMAP(a=>ain,b=>bin,co=>d,so=>e);--例化语句,=>表示信号连接

u2:

gatePORTMAP(a=>e,b=>cin,co=>f,so=>sum);

u3:

or2aPORTMAP(a=>d,b=>f,c=>cout);

ENDARCHITECTUREfd1;

2.程序说明

对于对数综合器来说,程序所列的全部程序可以同时输入相应的EDA软件进行编译,也能以单独的元件模块分别进行编辑、文件存档、编译和综合。

程序中共有3个独立的VHDL设计模块即2个元件模块和一个顶层设计模块aaa存档的文件名最好与对应的VHDL程序的实体一致如可分别将它们取名为or2a.vhdgate.vhd和aaa.vhd。

程序的解析如下:

(1)作为文件说明部分由双横线“--”引导了一段注释语句在VHDL程序的任何一行中双横线“--”后的文字都不参加编译和综合

(2)实体or2a语句段定义了或门or2a的引脚信号ab(输入)和c(输出)其结构体语句段描述了输入与输出信号间的逻辑关系,即将输入信号ab相或后传给输出信号端c。

由此实体和结构体描述了一个完整的或门元件,这一描述可以进行独立编译、独立综合与存档,或被其它的电路系统所调用。

(3)实体gate和结构体ART4描述了一个如图1所示的半加器,由其结构体的描述可以看到,它是由一个与非门、一个非门、一个或门和一个与门连接而成的,其逻辑关系来自于半加器真值表(表1)。

(4)在全加器接口逻辑即顶层文件的VHDL描述中,根据图1右侧的1位二进

全加器aaa的原理图,其实体定义了引脚的端口信号属性和数据类型。

其中,ain和bin分别为两个输入的相加位,cin为低位进位输入,cout为进位输出,sum为1位和输出。

结构体fd1的功能是利用COMPONENT和COMPONENT例化语句将上面由两个实体or2a和gate描述的独立器件,按照图1全加器内部逻辑原理图中的接线方式连接起来。

(5)在结构体fd1中,COMPONENTENDCOMPONENT语句结构对所要调用的或门和半加器两个元件作了声明(ComponentDeclaration),并由SIGNAL语句定义了三个信号d、e和f作为中间信号转存点,以利于几个器件间的信号连接。

接下去的PORTMAP()语句称为元件例化语句(ComponentInstantiation)。

所谓例化,在电路板上,相当于往上装配元器件;在逻辑原理图上,相当于从元件库中取了一个元件符号放在电路原理图上,并对此符号的各引脚进行连线。

例化也可理解为元件映射或元件连接,MAP是映射的意思。

例如由u2指示的语句表示将实体h_adder描述的元件的引脚信号a、b、co和so分别连向外部信号e、cin、f、和sum符号=>表示信号连接。

(6)由图1可见,实体f_adder引导的逻辑描述也是由三个主要部分构成的,即库、实体和结构体。

从表面上看来,库的部分仅包含了一个IEEE标准库和打开的IEEE.STD_LOGIC_1164.ALL程序包但实际上从结构体的描述中可以看出,对外部的逻辑有调用的操作,这类似于对库或程序包中的内容作了调用。

因此,库结构部分还应将上面的或门和半加器的VHDL描述包括进去,作为工作库中的两个待调用的元件。

由此可见,库结构也是VHDL程序的重要组成部分。

图5.VHDL设计基本结构

一个相对完整的VHDL程序具有如图9所示的比较固定的结构。

即首先是各类库及其程序包的使用声明,包括未以显式表达的工作库WORK库的使用声明。

然后是实体描述,在这个实体中含有一个或一个以上的结构体,而在每一个结构体中可以含有一个或多个进程,当然还可以是其它语句结构,例如其它形式的并行语句结构,最后是配置说明语句结构,这个语句结构在以上给出的示例中没有出现。

配置说明主要用于以层次化的方式对特定的设计实体进行元件例化,或是为实体选定某个特定的结构体。

一个相对完整的VHDL程序设计构建称为设计实体。

六.VHDL文本输入法设计实验步骤

1.新建项目,选择项目文件夹,输入工程名称,添加文件(一般为空),选择芯片型号,选择仿真工具(一般为默认),最后生成项目。

如下图:

图6.选择编辑文件

 

 

图7新建项目

2.新建VHDL文件,输入设计语言,保存时要注意与工程文件名相同。

如下图:

图8新建VHDL文件

3.保存好后,进行综合编译,如果有错误,折回修改。

如下图:

图9综合编译

4、

(1)新建一个.vwf文件,并将其设为仿真激励:

菜单Assignments->Settings,在左侧选择SimulationSettings,选择这里的.vwf文件

(2)设置为功能仿真:

菜单Assignments->Settings,在左侧选择SimulationSettings,设置为FunctionalSimulation

(3)生成功能仿真网表:

菜单Processing->GenerateFunctionalSimulationNetlist

(4)开始仿真:

菜单Processing->StartSimulation

如下图:

图10输入设置

七.仿真波形分析

.如下图:

cin1

ain0

bin0其他类似不在一一分析

cout0

sum1

 

(5)经过分析,可知仿真结果与真值表相同

表3真值表

cin

ain

bin

cout

sum

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

因此,仿真正确。

八.硬件测试

1.Assignments-.>device->

图11硬件选择

引脚锁定,参照下载实验板1K100的引脚号说明书,选择适当的引脚,如下图:

图12引脚设置

2.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。

3.编程下载,用下载线将计算机并口和试验箱上的JTAG口接起来,接通电源。

选择Tools—>Programmer菜单,打开programmer窗口。

在mode中选中JTAG,将Program/Configure下的笑方框选中

 

图13编程下载

4在开始编程之前,必须正确设置编程硬件。

点击“HardwareSetup”按钮,打开硬件设置口。

图14设置编程硬件

点击“AddHardware”打开硬件添加窗口,在“Hardwaretype”下拉框中选择“ByteBlasterMVorByteBlasterII”,“Port”下拉框中选择“LPT1”,点击OK按钮确认,关闭HardwareSetup窗口,完成硬件设置。

5、点击“Start”按钮,开始编程下载

图15编程下载

九.硬件测试结果

硬件测试:

根据真值表,本次实验中,将ain,bin,cin分别取的是开关k1,k2,k3而输出count,sum取的是LED1和LED2,它们会根据开关的不同设置而显示亮灭,如输入000,由于输出count、sum均为低电平,因此LED1和LED2均灭,输入001由于输入count、sum均为高电平,因此LED1和LED2均亮,依据全加器真值表依次验证过后,结果与真值表相符合。

试验成功!

十.试验心得

现代电子设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要课程,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次实验使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,同学的帮助下终于迎刃而解。

我表示非常感谢!

在以后的学习过程中我将更努力迎接!

十一.参考资料

[1]EDA技术与VHDL(第二版)潘松、黄继业清华大学出版社

[2]EDA技术与VHDL徐志军、王金明、尹延辉电子工业出版社

[3]EDA实验指导书丁杰朱启标

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

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1