1、辽东学院自编教材可编程逻辑器件原理及应用实验指导书李海成 编(计算机科学与技术、电子信息工程专业用)姓名: 学号: 班级: 信息技术学院2023年6月目 录目 录2实验一 MAX+PLUS-II设计三八译码器3实验二 半加器27实验三 带进位输入的8位加法器29实验四 数据比较器31实验五 编码器34实验六 组合逻辑电路的设计37实验七 计数器40实验八 触发器功能的模拟实现43实验一 MAX+PLUS-II设计三八译码器实验类型: 验证性 实验课时: 2 指导教师: 李海成 时 间:201 年 月 日课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员: 说明:本书将以实验一
2、为例具体介绍altera公司max+plusII 10.0版本软件的基本应用,其它实验将不再赘述。读者在通过本实验后将对max+plusII软件及CPLD/FPGA的设计与应用有一个比较完整的概念和思绪。此书因篇幅有限,仅仅介绍了max+plusII软件的最基本、最常用的一些基本功能,相信读者在纯熟使用本软件以后,你定会发现该软件尚有好多非常方便、快捷、灵活的设计技巧与开发功能。由于编者能力有限,不详之处再所难免,我们希望得到你的指正与包含。一、实验目的:1、通过一个简朴的38译码器的设计,让学生掌握组合逻辑电路的设计方法。2、掌握组合逻辑电路的静态测试方法。3、初步了解可编程器件设计的全过程
3、。二、 实验环节: MaxplusII软件的基本操作与应用(一)设计输入:1、软件的启动:进入Altera软件包,打开MAX+plus II 10.0软件,如图1-1所示。图:1-12、 启动File New菜单,弹出设计输入选择窗口,如下图1-2所示。或点击下图1-3主菜单中的空白图标,进入新建文献状态。 图:1-2 图:1-33、选择Graphic Editor File,单击ok按钮,打开原理图编辑器,进入原理图设计输入电路编辑状态,如下图1-4所示:图:1-44、设计的输入1)放置一个器件在原理图上a 在原理图的空白处双击鼠标左键,出现窗口如图2-2;也可单击鼠标右键,出现窗口如图2-
4、1,选择“Enter symbol.”,出现窗口如图2-2,进入器件选择输入窗口。图2-1图:2-2 b 在“symbol name”提醒处(光标处)输入元件名称或用鼠标双击库文献(在提醒窗”Symbol Libraries”里的各个文献),在提醒窗“Symbol Files”中双击元件或选中元件按下OK即可将该器件放置到原理图中。c 假如安放相同元件,只要按住Ctrl键,同时用鼠标拖动该元件复制即可。d 一个完整的电路涉及:输入端口INPUT、电路元器件集合、输出端口OUTPUT。e 下图2-3为3-8译码器元件安放结果。 图:2-3 2)添加连线到器件的管脚上:把鼠标移到元件引脚附近,则鼠
5、标光标自动由箭头变为十字,按住鼠标右键拖动,即可画出连线。3-8译码器原理图如图2-4所示。 图:2-43)标记输入/输出端口属性分别双击输入端口的“PIN-NAME”,当变成黑色时,即可输入标记符并回车确认;输出端口标记方法类似。本译码器的三输入断分别标记为:A、B、C;其八输出端分别为:D0、D1、D2、D3、D4、D5、D6、d7。如下图2-5所示。 图:2-54)保存原理图单击保存按钮图标,对于新建文献,出现类似文献管理器的图框,请选择保存途径、文献名称保存原理图,原理图的扩展名为.gdf,本实验中取名为test1.gdf。4)点击FileProjectset project to c
6、urrent file设立此项目为当前文献,如下图2-6所示。注意,此操作在你打开几个原有项目文献时尤为重要,否则容易犯错。 图:2-6此时在软件窗口的顶层有途径指示,见下图2-7 图:2-7至此,你已完毕了一个电路的原理图设计输入的整个过程。(二) 电路的编译与适配1、 选择芯片型号选择当前项目文献欲设计实现的实际芯片进行编译适配,点击AssignDevice菜单选择芯片,如下图3-1对话窗所示。假如此时不选择适配芯片的话,该软件将自动把所有适合本电路的芯片一一进行编译适配,这将花费你许多时间。该例程中我们选用CPLD芯片来实现,如用7000S系列的EPM7128SLC84-6芯片;同样也可
7、以用FPGA芯片来实现,你只需在下面的对话窗口中指出具体的芯片型号即可。图:3-1注意:EPM7128SLC84-15和EPF10K1084-4不是快速芯片,要将提醒窗“Show Only Faster Speed Grades”前面的“”去掉。 2、编译适配启动MAX+plus II Compiler菜单,或点击主菜单下的快捷键,打开编译窗口。按Start开始编译,并显示编译结果,生成下载文献。假如编译时选择的芯片是CPLD,则生成 * pof文献;假如是FPGA芯片的话,则生成* sof文献,以备硬件下载编程时调用。同时生成 * rpt报告文献,可具体查看编译结果。如有错误待修改后再进行编
8、译适配,如下图3-2所示。注意,此时在主菜单栏里的 Processing菜单下有许多编译时的选项,视实际情况选择设立。图:3-2假如说你设计的电路顺利地通过了编译,在电路不复杂的情况下,就可以对芯片进行编程下载,直到设计的硬件实现,至此你已经完毕了一个EDA的设计与实现的整个过程。假如你的电路有足够的复杂,那么其仿真就显得非常必要。(三)电路仿真与时序分析MaxplusII教学版软件支持电路的功能仿真(或称前仿真)和时序分析(或称后仿真)。众所周知,开发人员在进行电路设计时,非常希望有比较先进的高效的仿真工具出现,这将为你的设计过程节约很多时间和成本。由于EDA工具的出现,和它所提供的强大的(
9、在线)仿真功能迅速地得到了电子工程设计人员的青睐,这也是当今EDA(CPLD/FPGA)技术非常火暴的因素之一。下面就axplusII软件的仿真功能的基本应用在本实验中作一初步介绍,在以后的实验例程中将不在一一介绍。一方面我们介绍功能仿真,即前仿真。(一)、编译选择a. 选择 MAX+plus II Compiler菜单,进入编译功能。b. 此时主菜单已改变如下图3-3。点击主菜单“Processing”,“Functional SNF Extractor”,如下图3-3。 图3-3c.此时编译窗口改变如下图3-4。这时下一步做的仿真是功能仿真。 图3-4二)添加仿真激励信号波形、启动axpl
10、usIIavefrom editor菜单,进入波形编辑窗口,如下图3-5所示。图:5、将鼠标移至空白处并单击右键,出现如下图6所示对话窗口。图:6、选择nter nodes from snf选项并按左键确认,出现下图7所示对话筐,单击和按钮,选择欲仿真的管脚。图7、单击按钮,列出仿真电路的输入、输出管脚图,如下图8所示。在本电路中,译码器的输出为灰色,表达未仿真前其输出是未知的。图:8、调整管脚顺序,符合常规习惯,调整时只需选中某一管脚(如)并按住鼠标左键拖止相应位置即可完毕。如图3-9所示。图:3-9、准备为电路输入端口添加激励波形,如下图3-10所示。选中欲添加信号的管脚,窗口左边的信号源
11、即刻变成可操作状态,如箭头和圆括弧所示。根据实际电路规定选择信号源种类,在本电路中我们选择时钟信号就可以满足仿真规定。图:107、选择仿真时间:视电路实际规定拟定仿真时间长短,如下图3-9所示。在当前主菜单“File”的下拉菜单中选中“End Time”,出现如图3-11中箭头所指的窗口,在提醒窗“Time”中输入仿真结束时间,即可修改仿真时间。在本实验中,我们选择软件的默认时间1us就能观测到3-8译码器的8个输出状态。 图:3-118、为A、B、C三输入端口添加信号:先选中A输入端“”,然后再点击窗口左侧的时钟信号源图标“”添加激励波形,出现下图3-12对话窗口。图:3-129、在本例程中
12、,我们选择初始电平为“0”,时钟周期倍数为“1”,(时钟周期倍数只能为1的整数倍)并按OK确认。经上述操作我们已为A输入端添加完激励信号,点击全屏显示如下图3-13所示。 图:3-1310、根据电路规定编辑此外两路输入端口的激励信号波形,在本实验中,译码器的、三路信号的频率分别为、倍关系,其译码输出顺序就符合我们的观测习惯。按上述方法为B、C两路端口添加波形后单击左边全屏显示图标“”,三路激励信号的编辑结果为下图3-14所示。图:3-1411、保存激励信号编辑结果:使用FileSave或关闭当前波形编辑窗口时均出现下图3-15对话筐,注意此时的文献名称不要随意改动,单击OK按钮保存激励信号波形
13、。 图:3-15三)电路仿真1、打开MaxplusIISimulator菜单,或点击主菜单下的快捷键,弹出仿真对话窗口,如下图3-16所示。 图:3-162、拟定仿真时间,End Time 为“1”的整数倍。注意:假如在添加激励信号的时未设立结束时间的话,此时在仿真窗口中就不能修改End Time参数。在该例程中,我们使用的是默认时间,单击Start开始仿真,如有犯错报告,请查找因素,一般是激励信号添加有误。本电路仿真结果报告中无错误、无警告,如下图3-17所示。图:3-17、观测电路仿真结果,请单击激励输出波形文献图标,如下图3-18所示。 图:3-184、 上图可见,我们所设计的3-8译码
14、器顺利地通过了仿真,设计完全对的。至此功能仿真结束。下面我们介绍时序仿真。(一)、选择编译1.选择 MAX+plus II Compiler菜单,进入编译功能。2. 此时主菜单已改变如下图3-19。点击主菜单“Processing”下拉菜单中“Timing SNF Extractor”,编译窗口便改变如下图3-19。 图3-19编译完毕后,下一步所做的仿真既是时序仿真。(二)、时序仿真1打开MaxplusIISimulator菜单,弹出其对话窗口,如下图3-20所示。点击“Start”开始时序仿真。 图3-202观测电路仿真结果,请单击激励输出波形文献图标,如下图3-21。 图3-21仔细观查
15、电路的时序,在空白出单击鼠标坐键,出现测量标尺,然后将标尺拖至欲测量的地方,查看延时情况从上图可以看到,我们这个电路在实际工作时,激励输出有15.2个ns的延迟时间。至此,你以完毕和掌握了电路的仿真功能。在有的电路仿真时,也许需要修改仿真步长,在主菜单“Options”下拉菜单中选中“Grid Size”, 如下图3-22。 图3-22出现如下图3-23窗口,在提醒窗“Grid Size”相应的光标行修改数据,然后点击“OK”确认。图3-23在时序仿真的过程中,也也许需要对激励波形反复做修改,如下图3-24,用鼠标点住某一处波形拖动,出现黑色的条,即被选中。此时可通过选择主窗口左边的波形键选择
16、高低电平,如图3-25。 图3-24图3-25当您想直接打开一个已经编辑好的文献时,可用主菜单“File”下拉菜单中的“Open”项,或使用主菜单下的快捷键 如下图3-26。 图3-26会出现以下“Open”窗口,如图3-27。在“Drives”提醒窗中可选择驱动器名称,在 “Directories” 提醒窗中可选择文献途径,如图中,双击“ ” ,可返回到 目录下,打开它里面的所有文献。双击 ,即可返回到D盘根目录下 。在提醒窗“Show in Files List”中选择文献类型,如.gdf、 .tdf、 .vhd等,或可显示所有文献。 在提醒窗“Files”中选择要打开的文献,该文献名称会
17、出现在“File Name”提醒窗中。点击“OK”键确认,即可打开该文献。当您打开一个现有的文献后,若要编译该文献,牢记要指定途径和元器件。指定途径可用前面讲过的方法,在主菜单“File”的下拉菜单 “Project” 中选择“Set Project to Current File”。也可采用如下方法,在主菜单“File”的下拉菜单 “Project” 中选择“Name”,或点击快捷键,出现如图3-28的窗口。在此窗口中拟定工程文献的途径和名称。指定工程文献途径后,可在软件窗口的顶层有提醒。如图3-29。 图3-27 图3-28 图3-29(四)、管脚的重新分派与定位: 启动MAX+plus
18、II Floorplan Editor菜单命令,(或按快捷图标)出现如图4-1所示的芯片管脚自动分派画面(读者可在芯片的空白处试着双击鼠标左键,你能发现这样操作可在芯片如图4-1和芯片内部之间如图4-2进行切换,可观测芯片内部的逻辑块等)。图:4-1Floorplan Editor显示的是该设计项目的管脚分派图。这是由软件自动分派的。用户可随意改变管脚分派,以方便与你的外设电路进行匹配。管脚编辑过程如下:1、 按下窗口左边的手动分派图标,所有管脚将会出现在窗口,如下图4-3中箭头所示。2、 用鼠标按住某输入/输出端口,并拖到下面芯片的某一管脚上,松开鼠标左键,便可完毕一个管脚的重新分派(读者可
19、试着在管脚之间互相拖拽,你会觉得非常方便)。注意:芯片上有一些特定功能的管脚,如时钟端,清零端等,进行管脚编辑时一定要注意,一般管脚都放置在I/O口。此外,在芯片器件选择中,假如选的是Auto,则不允许对管脚再进行手工分派。当你对管脚进行二次调整以后,一定要再编译一次,否则程序下载以后,其管脚功能还是为当初的自动分派状态。3、 可选用自动分派方式,点击软件窗口左侧图标,管脚会自动分派到器件的各个管脚。分派完毕后请注意重新编译。用自动分派后,假如要修改,则要手工分派,点手工分派,所有的管脚重新回到“Unassigned Nodes &”窗口中。然后再一个一个的把管脚分派在器件上。 图4-2 图:
20、4-3(五)、器件的下载编程与硬件实现一)实验箱电路板上的连线用三位拨码开关提供三位译码器的输入信号,将A、B、C相应的管脚与三个拨码开关相连;用LED灯来表达译码器的输出,将D0.d7相应的管脚分别与8只LED等相连。A B C LED0 LED1 LED2 LED3 LED4 LED5 LED6 LED7 0 0 0 亮 灭 灭 灭 灭 灭 灭 灭1 0 0 灭 亮 灭 灭 灭 灭 灭 灭0 1 0 灭 灭 亮 灭 灭 灭 灭 灭 1 1 0 灭 灭 灭 亮 灭 灭 灭 灭0 0 1 灭 灭 灭 灭 亮 灭 灭 灭1 0 1 灭 灭 灭 灭 灭 亮 灭 灭0 1 1 灭 灭 灭 灭 灭 灭
21、 亮 灭1 1 1 灭 灭 灭 灭 灭 灭 灭 亮二)器件的编程下载1、 启动MAX+plus II Programmer菜单或点击快捷图标,假如是第一次启用的话,将出现如图5-1所示的对话框,请你填写硬件类型,在“Hardware Type”提醒窗中选择“byte blaster”,在“Parallel Port”提醒窗出现“Lpt1:0x378”,并按下OK确认即可。如图5-2。图:5-1 图5-22、 选中主菜单下的JTAG Multi-Device JTAG Chain菜单项(第一次起用也许回出现问话筐,视实际情况回答确认)。3、 启动JTAG Multi-Device JTAG Ch
22、ain Setup菜单项,如图5-3所示。 图:5-34、 点击“Select Programming File”按钮,选择要下载的.Pof文献(CPLD器件的下载文献后缀是.Pof,FPGA器件的下载文献后缀是.sof)。然后按Add加到文献列表中,如图5-3所示。假如不是当前要下载编程的文献的话,请使用Delete将其删除。 图:5-45、 选择完下载文献以后,单击OK拟定,出现下图5-5的下载编程界面。 图:5-56、 单击Program按钮,进行下载编程(如是FPGA芯片,请点击Configure),如不能对的下载,请点击如图5-4的Detect jtag chain info按钮进行
23、JTAG测试,查找因素,直至完毕下载,最后按OK退出。至此,你已经完毕了可编程器件的从设计到下载实现的整个过程。7、 结合电路功能,观测设计实现的对的结果。 说明:通过对本实验的学习,相信读者对MaxplusII软件已有了一定的结识,同样对CPLD/FPGA可编程器件的整个设计过程有了一个完整的概念和思绪。当然本书因篇幅和编者水平有限,其软件的其它应用不能一一在此介绍,有关内容请参考相关教材及书物。 附: 用硬件描述语言完毕译码器的设计:(1)、生成设计项目文献。(2)、启动File New菜单命令,如图1.10: 图1.10(3)、选择Text Editor file,点击OK;(4)、键入
24、程序如下:SUBDESIGN test1( a,b,c:INPUT; d0,d1,d2,d3,d4,d5,d6,d7: OUTPUT;)BEGIN CASE (c,b,a) IS WHEN 0 = d7.0=1; WHEN 1 = d7.0=2; WHEN 2 = d7.0=4;实验成绩项目及比例实验操作(30%)报告书写(70%)得分成绩合计教师签字:批改日期: WHEN 3 = d7.0=8; WHEN 4 = d7.0=16; WHEN 5 = d7.0=32; WHEN 6 = d7.0=64; WHEN OTHERS = d7.0=128; END CASE;END;(4)、保存为
25、.tdf 文献,然后进行编译适配即可。其它操作都与原理图设计输入相同。实验二 半加器实验类型: 验证性 实验课时: 2 指导教师: 李海成 时 间:201 年 月 日课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员: 一、 实验目的1.设计并实验一个一位半加器2.掌握CPLD/FPGA组合逻辑设计基本方法。二、 实验原理半加器(被加数)Ai(被加数)Bi(半加和)Hi(本位进位)Ci计算机中数的操作都是以二进制进位的,最基本的运算就是加法运算。按照进位是否加入,加法器分为半加器和全加器电路两种。计算机中的异或指令的功能就是求两个操作数各位的半加和。一位半加器有两个输入、输出
26、,如图2-1。图2-1 一位半加器示意图 表2-1 半加器真值表输入输出BiAiHiCi0000011010101101一个半加大路的真值表如表2-1所示,根据真值表可得到半加器的函数表达式: 三、 实验连线半加器的两个输入所相应的管脚同两位拨码开关相连,两个输入管脚名为a、b;两个输出所相应的管脚同两位发光二极管相连,两个输出管脚名为 c0和s,其中c0表达进位, s表达相加结果。四、 实验记录状态输入对的输出实验结果BiAiHiCiHiCi10000201103101041101五、实验注意事项1. 提前编辑实验程序。2. 根据教师规定对的操作,并检查逻辑的对的性六、思考题1.EDA半加器
27、实现与数字电路设计方法的主线区别。2.简述EDA设计半加器的不同方法,并比较其优缺陷。3.心得体会及其他。实验成绩项目及比例实验操作(30%)报告书写(70%)得分成绩合计教师签字:批改日期:实验三 带进位输入的8位加法器实验类型: 验证性 实验课时: 2 指导教师: 时 间:200 年 月 日课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员: 一、 实验目的1. 设计并实现一个8位全加器2. 掌握EDA中模块调用方法二、 实验原理运用实验二构建的半加器构建一位的全加器,然后设计一个8 位的全加器,其框图如图4-1所示。图中的“进位入”Ci-1指的是低位的进位输出,“进位出
28、”Ci即是本位的进位输出。(被加数)Bi(7.0)全加器(被加数)Ai(7.0)(进位入)Ci-1(全加和)Si(7.0)(进位出)Ci图 4-1 8位全加器原理图0三、 实验连线全加器的17个输入所相应的管脚同17位拨码开关相连,17个输入管脚是a0a7、b0b7和cin a0a7、b0b7代表两个8位二进制数,cin代表进位位;9个输出所相应的管脚同9位发光二极管相连,9个输出管脚是sum0sum7和cout,sum0sum7代表相加结果,cout代表进位位。四、 实验记录输入实验结果Ci-1Bi(7.0)Ai(7.0)Si(7.0)Ci00000000000000000000000001
29、00000000011111110111111100111111111111111110000000000000000100000001000000001111111100000000011111111100000000五、 实验结果分析与思考1.半加器与全加器的区别。2.实验设计程序3实验结果总结实验成绩项目及比例实验操作(30%)报告书写(70%)得分成绩合计教师签字:批改日期:实验四 数据比较器实验类型: 设计性 实验课时: 2 指导教师: 李海成 时 间:201 年 月 日课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员: 一、 实验目的1.设计并实现一个4位二进制
30、数据比较器2.掌握数据比较器的构建及其方法二、 实验原理二进制比较器是提供关于两个二进制操作数间关系信息的逻辑电路。两个操作数的比较结果有三种情况:A等于B、A大于B和A小于B。考虑当操作数A和B都是一位二进制数时,构造比较器的真值表见表9-1。输出表达式如下:AEQB=AB+AB=(AB)AB=ABABA q q = a q b;when others = q B)、ALTB(AB),接发光二极管。改变拨码开关的状态,观测实验结果。四、 实验记录同前,对比较器造表,得到其真值表,并分析其运算结果的对的性。五、 实验结果分析与思考1.比较器的应用场合。2.实验设计程序3实验结果总结实验成绩项目
31、及比例实验操作(30%)报告书写(70%)得分成绩合计教师签字:批改日期:实验五 编码器实验类型: 验证性 实验课时: 2 指导教师: 李海成 时 间:201 年 月 日课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员: 一、 实验目的1. 设计并实现一个16-4优先编码器2. 掌握编码器的设计方法。二、 实验原理常用的编码器有:4-2编码器、8-3编码器、16-4编码器,下面我们用一个8-3编码器的设计来介绍编码器的设计方法。8-3编码器如图11-1所示,其真值表如表11-1。图11-1 8-3编码器表11-1 8-3优先编码器真值表输入输出EIN0N1N2N3N4N5N
32、6N7NA2NA1NA0NGSNEON1XXXXXXXX11111011111111111100XXXXXXX0000010XXXXXX01001010XXXXX011010010XXXX0111011010XXX01111100010XX011111101010X01111111100100111111111101整个编码器的VHDL语言描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ENCODE ISPORT(D:INSTD_LOGIC_VECTOR(7 DOWNTO 0);EIN:INSTD_LOGIC;A0N,A1N,A2N,G
33、SN,EON:OUT STD_LOGIC);END ENCODE;ARCHITECTURE A OF ENCODE ISSIGNAL Q:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINA0N =Q(0); A1N=Q(1); A2N=Q(2);PROCESS(D)BEGINIF EIN =1 THENQ=”111”;GSN=1; EON=1;ELSIFD(0)=0THENQ=”111”;GSN=0;EON=1;ELSIFD(1)=0THENQ=”110”;GSN=0;EON=1;ELSIFD(2)=0THENQ=”101”;GSN=0;EON=1;ELSIFD(3)=0T
34、HENQ=”100”;GSN=0;EON=1;ELSIFD(4)=0THENQ=”011”;GSN=0;EON=1;ELSIFD(5)=0THENQ=”010”;GSN=0;EON=1;ELSIFD(6)=0THENQ=”001”;GSN=0;EON=1;ELSIFD(7)=0THENQ=”000”;GSN=0;EON=1;ELSIFD=”11111111”THENQ=”111”;GSN=1;EON=0;END IF;END PROCESS;END A;实验源程序名是encode.vhd。请参考以上程序设计一16-4编码器。三、 实验连线输入信号D0D15(代表16路输入数据)、EIN(代表输入允许控制端)、EON、GSN(代表2个输出允许控制端),都接拨码开关;输出信号A0NA3N(代表四路编码结果输出)接发光二极管。改变拨码开关的状态,对照表11-1 8-3优先编码器真值表,观测实验结果。四、 实验记录对编码器造表,得到其真值表,并分析其运算结果的对的性。五、 实验结果分析与思考1.编码器常用芯片有哪些,比较专用芯片和EDA设计的优缺陷。2.实验过程出现问题及解决方法3实验结果总结实验成绩项目及比例实验操作(30%)报告书写(70%)得分成绩合计教师签字:批改日期:实验六 组合逻辑电路的设计实验类型: 设计性 实验课时: