数字逻辑电路设计实验教案赵蕙.docx
- 文档编号:6476817
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:45
- 大小:904.02KB
数字逻辑电路设计实验教案赵蕙.docx
《数字逻辑电路设计实验教案赵蕙.docx》由会员分享,可在线阅读,更多相关《数字逻辑电路设计实验教案赵蕙.docx(45页珍藏版)》请在冰豆网上搜索。
数字逻辑电路设计实验教案赵蕙
实验一半加器和全加器I
实验平台
实验要求
使用TTL小规模集成电路芯片74LS00搭建半加器电路和全加器电路,电路的输入接实验平台开关,电路输出接实验平台的发光管。
希望同学们能够通过实验掌握使用基本门电路设计实现数字电路的方法。
实验原理
在数字电路中,门电路就是用来实现基本逻辑关系的电路,比如这个实验中的半加器和全加器。
最基本的门电路是与门、或门和非门,由这些门可以组合成其它的逻辑电路。
门电路最初由分立元件组成,集成电路出现后,我们现在使用的门电路都是集成门电路。
半加器:
完成两个一位二进制数的相加而求得“和”及“进位”。
全加器:
当多位二进制数相加时,高位的相加运算除了要将本位的加数和被加数相加以外,还要考虑低位是否有向该位的进位。
全加器完成将两个一位的二进制数相加,并考虑低位来的进位,相当于三个一位二进制数相加的电路。
实验步骤
1.设计
根据半加器和全加器列出真值表,写出输出函数,因为实验要求使用“与非门”实现,将输出函数转换为“与非门”形式,画出使用与非门实现半加器和全加器的电路图。
半加器与非门电路全加器与非门电路
2.连线
请特别注意VCC和GND的连接,不要接错,以免芯片烧毁!
所用芯片的Vcc连起来接+5V;所用芯片的GND连起来接地(GND)。
电路的输入接实验平台开关,电路的输出接实验平台的发光管。
实验提供的74LS00芯片逻辑与引脚图如下。
每块芯片中有四组2输入端与非门(正逻辑),根据步骤1设计的电路图,搭建半加器电路需要5个与非门(可使用2块74LS00芯片),搭建全加器电路需要9个与非门(可使用3块74LS00芯片)。
双列直插封装74LS00芯片逻辑图和引脚图
3.验证
开关向上拨为“1”,向下拨为“0”;发光管为“1”时点亮,为“0”时熄灭。
根据真值表,检验你所搭建的半加器和全加器电路,是否满足设计要求。
教你一招:
实验平台上可能有个别开关、发光管故障,可以将导线一端接开关,一端接发光管,如果开关向上拨时,发光管点亮;开关向下拨时,发光管熄灭,说明开关、发光管、导线都是好的。
完成连线后的电路可能有误,在没有万用表的情况下,此法也可帮你检查电路故障。
实验报告要求
1.填妥姓名、班级外,必须填写完成报告的日期(年月日),以后的实验报告要求里不再冗述。
2.写出使用TTL小规模集成电路芯片74LS00完成半加器的设计和实现的完整过程(根据功能要求列真值表->写输出函数->将输出函数变换成“与非门”形式->画出电路图->根据芯片引脚连线->验证结果)
3.结合实验中接触和使用的小规模集成电路,请说说什么是集成电路?
常用的中小规模集成电路产品有哪些?
4.实验过程中你遇到了哪些问题?
实验刚开始时,你觉得计算机硬件课程的实验最难理解的地方在哪里?
5.实验一和实验二使用两种不同的方式(小规模集成电路,可编程器件)实现全加器电路,就两种方式谈谈你实验的体会。
实验二FPGA设计流程——全加器II
实验平台
EDA/SOPC实验开发平台,实验二以后的所有实验都使用此开发平台。
实验要求
根据实验平台提供的Altera公司可编程器件FPGA(现场可编程门阵列),使用Altera公司的EDA设计开发工具QuartusII,用原理图方式设计实现全加器电路,电路的输入接实验平台开关,电路输出接实验平台的发光管。
希望同学们能够通过实验掌握使用可编程器件设计实现数字电路的方法。
实验原理
使用可编程器件进行数字电路设计,将传统的“设计硬件搭试焊接”过程变为“设计编译下载”的过程,其主要工作都在计算机内完成,先将设计输入计算机,再由开发系统将其转换成编程文件下载到可编程器件中。
全加器电路图的设计同实验一。
实验步骤
1.新建工程
实验室机器安装的设计环境为:
QuartusIIVersion9.0。
双击桌面
图标,运行QuartusII软件。
用NewProjectWizard工具选项创建此设计的工程,并设计相关信息。
点击菜单项File->newprojectwizard…,出现introduction对话框,如图1。
图1
单击next,进入Directory,name,Top-LevelEntity设置对话框,选择工程存放路径(请在E盘或F盘新建一个工程相文件夹,实验室的C盘、D盘及桌面被保护)、工程名称和顶层模块名称(本例工程名和顶层模块名均设为fadder。
)注意:
所有的名称和路径均不能包含空格和汉字。
如图2。
图2
跳过图3所示AddFiles对话框,该对话框设置用来将已存在的设计文件加入到工程中。
图3
点击next,进入Family&devicessettings对话框,指定FPGA器件为Cyclone系列的EP1C12F324C8,如图4。
Cyclone 系列FPGA是Altera公司最初(2002年)的低成本FPGA。
2004年和2006年,Altera公司又推出了更新的,密度更高的CycloneII和CycloneIII系列 FPGA,进一步巩固它在大批量、低成本应用解决方案中的地位。
图4
图5
图5对话框用来设置第三方EDA工具,包括综合工具,仿真工具和时序分析工具,这里我们点击Next跳过。
图6
信息显示区
编译状态区
资源管理区
工程工作区
标题栏
菜单栏
工具栏
图7
最后,新建工程向导会根据你之前一步一步的设置,给出一个工程设置概述页如图6,单击finish完成工程创建。
完成后,QuartusII界面如图7所示。
所有在新建工程向导中进行的设置,在工程建立完成后,都可以通过QuartusII菜单项进行修改。
2.设计输入
点击菜单项File->new…,出现新建源文件对话框如图8,数字电路的设计文件总的来说有两种方式,原理图方式和硬件描述语言方式,这次实验我们使用原理图方式设计电路,所以选择新建一个“BlockDiagram/SchematicFile”文件,图8,点击“OK”按钮,打开原理图编辑器。
图8
原理图编辑器的工具栏如图10所示,工具栏上的按钮作用依次分别是“分离窗口切换”、“选择”,“添加文字”、“符号工具”、“块工具”、“正交结点工具”、“正交总线工具”、“正交管道工具”、“橡皮筋工具”、“部分线选择工具”、“放大缩小工具”、“全屏”、“查找工具”、“水平翻转”、“垂直翻转”、“逆时针90度翻转”、“矩形工具”、“椭圆工具”、“直线工具”、“弧线工具”。
图9
QuartusII提供了许多基本库元件给用户使用,根据实验一全加器的设计,共需要9个“2输入与非门电路”模块。
在原理图编辑区的空白处双击鼠标,或点击符号工具
打开Symbol对话框如图9。
在Symbol对话框中,设计全加器电路需要的“与非门”可以通过选择“Primitives->logic”基本原件库中的“nand2”模块,点击“OK”,将该模块加入原理图中。
重复该过程,或在原理图编辑区选中已经添加好的nand2模块,使用Ctrl+C和Ctrl+V继续添加。
全加器电路的输出端口和输入端口,在Symbol对话框中,使用“Primitives->pin”库中的“input”模块和“output”模块,添加到原理图中。
添加完成后,可以在原理图中双击各个输入输出模块,为它们改名,尽量让端口名称具有可读性,本例可改为Ai、Bi、Ci-1、SHi、Si、Ci如图11。
与非门、输入端口、输出端口之间的连接使用“正交结点工具”
完成。
完成后的原理图如图11。
图10
图11
设计输入完成后,保存文件,将模块名命名为顶层模块名,即新建工程时指定的顶层模块名,本例为:
fadder.bdf。
新建的文件默认情况下会自动加入到工程中。
3.逻辑综合
为工程添加好设计文件以后,下一步就是对工程设计进行综合,本例使用QuartusII软件内嵌的分析综合工具Analysis&Synthesis进行。
点击工具栏中
按钮,对设计进行综合。
Analysis&Synthesis将检查工程的逻辑完整性和一致性。
设计如果综合通过,编译状态显示区中Analysis&Synthesis步骤前面会显示绿色的勾,如果设计有错误,会显示红色的叉,如图12,出错行号及错误原因会显示在信息显示区中,如图13。
图12
图13
根据错误原因提示修改设计,完成修改后,重新综合,直到综合通过,资源管理区中可以点击顶层模块名称前的+号,显示模块间的树形结构,编译状态显示区的Analysis&Synthesis步骤前显示绿色的勾,如图14。
图14
初学者往往不习惯阅读错误信息。
实际上学会读懂错误信息是很有用的!
4.功能仿真
在综合通过以后,只能够说明设计符合语法规范,但并不能保证设计满足功能要求,需要通过功能仿真,来验证电路功能是否符合设计要求,功能仿真的考察是的电路在理想环境下的行为,不考虑电路门延迟与线延迟。
这里使用QuartusII自带的波形图仿真工具进行。
1)新建仿真波形图文件
要使用QuartusII自带的波形图仿真工具进行仿真,首先要新建一个波形图文件。
在File菜单中选择New,出现如图8中所示对话框,在Verification/DebuggingFiles页中选择VectorWaveformFile,点击OK按钮,出现一个空的波形图文件,如图15。
图15
2)添加观察信号结点
用菜单Edit->Insert->InsertNodeorBus…,打开如图16所示对话框。
可以直接在Name文本框中直接输入信号名称,也可以通过点击按钮NodeFinder…,打开结点查询对话框来如图17,来添加需要观察的信号。
图16
本例在NodeFinder对话框的Filter选项下拉菜单中选择Pins:
all,然后点击List按钮,在NodesFound列表中,选中Ai、Bi、Ci-1、SHi、Si、Ci信号,双击或使用
按钮,将它们添加到观察信号中。
最后点击“OK”按钮,完成观察信号的添加。
图17
3)编辑输入波形
在Name栏中选中输入信号的名称,这组输入信号所在的行将被高亮,如图18。
通过菜单Edit->Value,或者直接使用工具栏按钮对输入信号的波形进行设定。
图18
如图19工具栏上的按钮作用分别是“分离窗口切换”、“选择”,“添加文字”、“编辑波形”、“放大缩小”、“全屏幕切换”、“查找”、“替换”、“设置为Unknown”、“置0”、“置1”、“设置为高阻”、“设置为WeakUnknown”、“设置为WeakLow”、“设置为WeakHigh”、“设置为Don’tCare”、“设置为取反”、“设置计数值”、“设置时钟”、“设置为任意值”、“设置随机值”、“贴齐网格线”、“排序”。
图19
信号添加完成并且编辑好波形后,保存文件,本例为fadder.vwf。
4)在QuartusII中指定仿真文件
用菜单Assignment->Setting…在SimulatorSettings中,设置Simulationmode为“Functional”,设置fadder.vwf为仿真输入文件,仿真结束的条件可以根据需要在SimulationPeriod项中选择,如图20选择仿真运行80ns结束。
点击“OK”按钮完成设置。
图20
5)生成功能仿真网表
用菜单Processing->GenerateFunctionalSimulationNetlist。
如果缺少这一步,在仿真运行时,QuartusII产生出错提示:
“Error:
RunGenerateFunctionalSimulationNetlist(quartus_mapseven_seg--generate_functional_sim_netlist)togeneratefunctionalsimulationnetlistfortoplevelentity"seven_seg"beforerunningtheSimulator(quartus_sim)”,无法完成仿真。
6)运行仿真
通过工具栏
按钮启动仿真。
7)观察分析仿真结果
仿真完成后,根据生成的仿真波形图,对比全加器真值表,分析结果是否正确。
本例结果如图21。
图21
5.布局布线
1)约束引脚
FPGA电路板与实验平台上各个资源模块(如本实验的LEDSwitches&Buttons模块)之间的连接是固定的,应该根据它们之间的连接关系对FPGA的引脚进行引脚约束。
约束引脚是将顶层设计文件的输入输出端口指定到FPGA器件的实际引脚。
引脚对应关系见附表。
使用菜单项Assignment->Pins进入引脚分配编辑窗口,完成后的分配图22。
图22
不要忘记引脚约束!
在以后的设计中,如果忘记了导入引脚约束文件,编译也不会报错,此时由软件自动分配未约束的引脚,但是和实际连接关系就不一致了。
后果是不能通过在实验仪上的验证。
2)布局布线、生成编程文件
引脚约束完成后,在QuartusII界面的工具栏中,点击
按钮,对设计进行全编译。
此外,也可以使用菜单项Processing->CompilerTool打开编译工具对话框,如图23,点击Fitter区域中的
按钮和Assembler区域中的
按钮来执行布局布线和生成编程文件,也可以直接点击Start按钮来完成全编译过程。
图23
如果设计文件或引脚约束有改动,一定要重新进行全编译。
6.时序仿真(附加题,有兴趣的同学选择完成)
功能仿真不考虑传输延迟,主要目的是检查逻辑功能有没有错误,是否符合设计要求。
时序仿真包含了延时信息,它能较好地反映芯片的工作情况。
用菜单Assignment->Setting…在SimulatorSettings中,更改设置Simulationmode为“Timming”,设置完成后重新运行仿真,观察结果,本例如图24。
图24
与功能仿真时得到的波形图不同,在时序仿真得到的波形图没有那么完美,因为信号经过任何门电路和导线都存在一个时间延迟问题,,使得电路的输入到达稳定状态时,输出并不一定能立即达到稳定状态。
观察电路延迟的情况。
7.配置器件(或称编程、下载)
对可编程器件FPGA进行配置(编程),俗称下载,下载前打开实验平台电源。
点击工具栏按钮,或使用菜单项Tool->Programmer进入器件编程话框,如图25。
单击
按钮,可以选择编程电缆硬件设置,如图26,因为实验设备使用的是USB-Blaster下载电缆,所以本例中使用USB-Blaster作为硬件接口。
设置完编程硬件后,在编程界面,在Mode中选择编程模式,本例使用JTAG模式。
勾选Program/Configure选项框,单击
按钮开始器件编程。
在Process进度条中会显示编程进度。
完成后,在QuartusII的信息显示区中,会报告成功或出错信息;注意:
信息显示在QuartusII的信息显示区中,不在编程窗口中。
编程界面左侧的其它按钮分别表示停止编程;自动检测编程硬件是否连接;删除编程文件;更改选中的编程文件;保存文件;添加用户自定义的器件;更改编程文件的顺序。
图25
图26
8.测试验证
器件被成功配置后,就可以进行验证了。
拨动连接全加器输入端口Ai,Bi,Ci的开关,观察连接全加器输出端口Si,Ci的发光管显示是否正确。
实验三七人表决器
实验要求
使用EDA设计开发工具QuartusII,以原理图方式设计实现七人表决器电路,当表决器的七个输入中有4个以上(含4个)为“1”时,u表决器输出为“1”,否则为“0”。
用七个开关作为表决器的七个输入,输入为逻辑“1”时表示表决者“赞成”,输入为“0”代表“不赞成””。
用二个发光管作为表决器的输出,发光管点亮(逻辑1)表示表决“通过”,发光管熄灭表示表决“不通过”。
实验原理
七人表决器的方案很多,这里给出一个使用多个一位全加器实现的电路参考,见“设计输入”,其中的一位全加器我们利用实验二的设计。
实验步骤
1.实验准备
打开QuartusII环境,使用File->OpenProject…打开上一次的全加器实验工程,双击顶层模块打fadder开原理图文件,然后使用File->Create/_Update->CreateSymbolFilesForCurrentFile,将顶层原理图方式设计的全加器模块转换为符号文件fadder.bsf。
在E盘或F盘新建一个文件夹(所有的名称和路径均不能包含空格和汉字),将实验二全加器工程中的全加器原理图文件fadder.bdf,以及刚才生成的全加器符号文件fadder.bsf,一起拷入新建的文件夹中。
2.新建工程
参考实验二指导,在上一步新建的文件夹内创建QuartusII工程,工程名和顶层模块名均设为seven。
3.设计输入
点击菜单项File->new…,新建原理图BlockDiagram/Schematic文件,在空白编辑区内双击鼠标左键,或使用符号工具
,打开symbol对话框。
在Libraries中,除了QuartusIIa提供的库元件外,由于在“实验准备”步骤中,往工程文件夹内中拷入了fadder.bsf符号文件,所以在Project树下,可以看见当前工程路径下自己定义的元件fadder.bsf。
点击“OK”按钮,将fadder模块加入原理图中。
重复该过程,共添加4个一位全加器模块。
在Symbol对话框中,使用“Primitives->pin”库中的“input”模块和“output”模块,为设计添加输入端口和输出端口。
使用“Primitives->logic”库中的“not”模块,,输出端口pass取反后送给输出端口deny。
模块之间的连接使用“正交结点工具”
完成。
完成后的原理图如下,保存文件(本例为seven.bdf)。
4.逻辑综合
参考实验二指导。
5.布局布线
使用菜单项Assignment->Pins进行引脚分配,完成后引脚分配如下图。
引脚约束完成后,在QuartusII界面的工具栏中,点击
按钮,对设计进行全编译。
6.编程
参考实验二指导。
7.验证
拨动开关,观察发光管,验证在所有输入条件下的输出结果是否正确。
实验报告要求
1.完善设计:
在表决通过时,用实验平台上的扬声器报鸣提示;在原基础上使用数码管显示赞成票数,写出设计方法。
(提示:
票数就是几个一位全加器计算出来的最后的结果;想在数码管上显示,需要设计译码器电路。
)
2.使用VHDL语言设计七人表决器电路。
附:
数码管段码表
发光二极管组成的显示器是嵌入式应用产品中最常用的廉价输出设备。
它由若干个发光二极管按一定的规律排列而成。
当某一个发光二极管导通时,相应的一个或一笔画被点亮,控制不同组合的二极管导通,就能显示数字和少量字符。
常用的七段显示器如下图。
一位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗。
实验平台上的七段数码管是共阴极的(发光二极管阳极连在一起称为共阳极显示器,阴极连在一起称为共阴极显示器),也就是输出为高电平的时候,二极管会导通。
例如显示一个“0”,就是abcdef导通,gh截止。
根据表可知,段码为3FH。
实验平台上有八个数码管,它们的abcdefgh都连接在一起,由用户控制,8个数码管的位选信号由一片74LS138译码器提供,译码器的输入端(SEL0,SEL1,SEL2)由用户控制,例如SEL0,SEL1,SEL2若为为000,就选中最右边的数码管,而其余数码管关闭。
表七段数码管段码表
显示
16进制
h
g
f
e
d
c
b
a
0
3F
0
0
1
1
1
1
1
1
1
06
0
0
0
0
0
1
1
0
2
5B
0
1
0
1
1
0
1
1
3
4F
0
1
0
0
1
1
1
1
4
66
0
1
1
0
0
1
1
0
5
6D
0
1
1
0
1
1
0
1
6
7D
0
1
1
1
1
1
0
1
7
07
0
0
0
0
0
1
1
1
8
7F
0
1
1
1
1
1
1
1
9
6F
0
1
1
0
1
1
1
1
A
77
0
1
1
1
0
1
1
1
B
7C
0
1
1
1
1
1
0
0
C
39
0
0
1
1
1
0
0
1
D
5E
0
1
0
1
1
1
1
0
E
79
0
1
1
1
1
0
0
1
F
71
0
1
1
1
0
0
0
1
数码管译码显示设计参考
实验平台上的数码管显示模块的电路原理,以及数码管的输入与与FPGA的管脚连接关系如下面的图、表所示:
信号名称
对应FPGA管脚名
说明
7SEG-A
H3
七段码管A段输入信号
7SEG-B
H4
七段码管B段输入信号
7SEG-C
K5
七段码管C段输入信号
7SEG-D
L5
七段码管D段输入信号
7SEG-E
K4
七段码管E段输入信号
7SEG-F
L3
七段码管F段输入信号
7SEG-G
L4
七段码管G段输入信号
7SEG-DP
M3
七段码管dp段输入信号
7SEG-SEL0
G4
七段码管位选输入信号
7SEG-SEL1
G3
七段码管位选输入信号
7SEG-SEL2
F4
七段码管位选输入信号
如果只需要在数码管上显示16进制数据0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F,可以参考下面的代码设计一个4-7译码器。
同学们知道1个16进制数据可以由四个二进制位表示,设计用四位的向量输入端口switch来表示四个二进制位;用7位的向量输出端口ledaq来表示数码管的七段(dp小数点段未考虑),根据七段数码管段码表,进行译码器描述。
向量输出端口sel用来选择点亮8个数码管中的哪一个,本例中sel[2:
0]设置为为“000”,点亮最右边的数码管,而其余数码管关闭,同学们也可根据自己的需要选择点亮其它数码管。
libraryieee;
useieee.std_logic_1164.all;
entityDecode4_7is
port(
switch:
instd_logic_vector(3downto0);--四位输入信号
ledag:
outstd_logic_vector(6downto0);--8个数码管的7段输出
sel:
outstd_logic_vector(2downto0)--8个数码管的位选输出
);
endDecode4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑电路 设计 实验 教案