【南邮 | 电工电子基础实验A】数字电路·实验九(一)可编程器件与ISE软件的应用
实验名称:可编程器件与ISE软件的应用
设计方式:原理图
难度:⚡⚡(初学者&软件安装减益)
适用教材:郭宇锋《电工电子基础实验(第2版)》
寄语:电工电子基础实验A,启动!

一、配置ISE14.7
1. 软件安装注意事项
出于预习报告写作、实验操作、考试复习的需要,我们有必要在自己电脑上下载ISE14.7,并熟习其操作。网上有多个优秀的安装教程,本文不再赘述,我主要介绍安装过程中的注意事项。
我使用的系统是Win10,安装ISE14.7主要有两种方式:标准安装(作为软件安装)、Win10版安装(作为VirtualBox虚拟机安装),建议电脑配置不太好的同学选择标准安装,追求软件界面美观(其实就是更清晰一点)选择后者。
【标准安装·注意事项】在Select Installation Options中,建议取消勾选WinCap和WebTalk,它们会导致安装程序在最后卡住不动(当然这时候直接退出的话ISE软件激活后也是可以使用的);如果勾选Cable Drivers,你的笔记本电脑可以带到实验室去代替实验室的老台式机,进行烧录等操作(当然要经过教师同意)。
【Win10版安装注意事项】建议顺道去官网下一份帮助文档(14.7 Installation Guide and Release Notes),文档测试的VirtualBox版本是5.2.3.4,可以到VB的官网下载,还要记得下对应的Extension_Pack,也能够实现上文Cable Drivers的功能最后在虚拟机设置里调整一下设置即可。

安装好后可以用VirtualBox启动虚拟机,在虚拟机的桌面双击 “Project Navigator” 启动ISE1.47。若安装好后虚拟机启动失败,VBox弹出的报错窗口会提示关键信息;我遇到的问题是Win10的Hyper-V没有完全关闭导致的,可以去搜索 “Win10如何彻底关闭Hyper-V” 参考并尝试修复。需要注意的是,关闭Hyper-V后,将无法使用Win10的Linux子系统的功能,但是仍然可以使用VBox等第三方虚拟机。
2. 项目配置(今后的实验中都要用这个配置)
我们实验室用到的实验箱是 “DGDZ-5型电工电子实验箱”,在课本的附录可以看到更详细的参数,如管脚对应端口。实验的设计方式是原理图(Schematic),在软件中依次选择 File --> New Project,输入项目名称、选择路径(实验室电脑推荐保存到D盘的某个目录下,方便下次找到)、选择 top-level source 为 Schematic(默认应该是HDL),如下图所示:

点击Next,按下图依次选择 Family、Device 和 Speed,其中Speed在我做实验时设置-4是没问题的,也是教师课堂上的操作,但站内视频教程是-5。

如果是自己的笔记本,设置好后再新建下一个项目时,会保留上一次的配置;实验室的电脑关机后清理数据,应该每次都要设置好,以免烧录不进去。

二、实验流程
大部分实验中的ISE软件操作可按 “设计原理图、仿真、管脚约束、烧录”的步骤进行。
建议搭配站内视频食用:BV1Kv41187Nq
1. 设计原理图
项目建立好后,在左侧Design标签下可以找到芯片图标即名称,选中芯片后单击右键,选择New Source,选择Schematic,输入名称,如下边两张图所示:


此时我们建立了一张新的空白原理图。注意观察左侧下方的标签,我们选择 Symbols,也可以点击下图中红圈标记的按钮快速跳转到 Symbols。这个目录下存放各种元器件,Categories下是各种分类,数电实验中主要用到的类别是:General(基本,包括 低电平gnd 和 高电平vcc)、Logic(逻辑门)、Decoder(译码器)、Mux(数据选择器)、Flip_Flop(触发器)、Counter(计数器)、Shift_Register(移位寄存器)等。

补充:上图绿色圈中的按钮是添加导线按钮,可以用于连接各元件的输入输出端口;红圈正上方的两个取卡针一样的按钮是 Add I/O Marker,是用于整个原理图的输入输出端口的标记,在后面管脚约束处会用到;选中元件后可以点击下方的Symbol Info查看元件的信息,包括其用法,也可以在原理图中单击元件(选中后会变成红色),右键后找到Symol,也可以查看Symbol Info。需要注意的是,这里的元件跟数电课上的74系列芯片有较大差别,74系列芯片更具体、功能更多更复杂。
单击需要的元件后(这里演示and2),在右侧原理图的空白区域内再单击一次,元件就会被放在原理图上,按住键盘的Ctrl键不放,滚动鼠标滚轮可以缩放。缩放到合适大小后,单击Add I/O Marker,框中整个AND2可以为它的三个I/O端口添加标签,你也可以一个一个框住AND2引脚旁边的小正方形,最终效果是一样的:

双击生成的标签,接下来要对它们进行重命名,你也可以单击选中标签,右键找到Rename Port进行重命名。双击后会弹出如下窗口,选则左侧 Nets 下的条目修改 Name 中的文本并确定即可。

最终我们将3个端口分别命名为A、B、C,并保存(要记得时不时按下保存按钮,免得实验室电脑抽风)。从标签尖角的方向,容易看出哪个标签是输入端,哪个是输出端。


2. 仿真
仿真的目的是检查我们设计的电路是否能够达到我们的设计目标(也方便同学画波形图啦)。
我们回到 Design 标签,在左侧找到该标签并单击后,在上方找到 Simulation ,单击选择后,再单击我们的原理图(文件后缀是sch),最后双击 Simulate Behavioral Model,打开仿真器。


上图是仿真器界面,我用红框标记了我们刚才命名的端口,可以观察到A、B旁边的黄色方块里写着“I”,说明这是输入(Input)端口;C旁边的绿色方块中则是“O”,即输出(Output)端口。选择其中一个【输入】端口,右键,在弹出的菜单中,我们经常用到的是“Force Constant”和“Force Clock”,分别用红色箭头和紫色箭头标记,前者可以使端口保持一个常数(1或0),后者可以使端口电平按设定的周期变化。前者主要用于需要手动更改的输入,后者则能够实现自动化。我主要介绍一下后者的用法。


在定义时钟窗口中,我们主要填写3项:Leading & Trailing Edge Value 和 Period,前两项决定了每个周期输入从低还是高开始(Leading),以低还是高结束(Trailing),最后一项决定周期大小,这里填 10ns。
为了实现BA按顺序输入 00, 01, 10, 11,我们要使高位的周期是低位的2倍,即B的周期是A的2倍,设置为20ns。以此类推,我们可以实现三位、四位甚至更多的二进制数的自动输入。点击波形上边“1.00us”左边带沙漏的按钮,可以使输入持续1微秒。最终,仿真的效果如下:

发现波形呈一条直线,这是因为我们没有放大到可以显示的程度,点击上图中的放大镜,或按住Ctrl键+滚动滚轮,放大波形以便观察。我们还可以拖动Name中的端口,使得高位(B)在上,如下图所示:

【Virtual Bus的应用】按住Ctrl键不放,分别点击B和A,实现复选,右键找到“New Virtual Bus”(一般在最下面),输入名称后放大。单路波形也可以创建Virtual Bus,右键C后按同样的操作,最后得到带数字标记的波形图:

右键刚才创建的Virtual Bus,在 Radix 中找到 并选择Octal(八进制)或Hex(十六进制),可以将二进制编码转换成其他进制(输出尽量还是用二进制),如下图所示:

可见当B、A均为高电平“1”时,输出C才为高电平“1”,符合两输入与门的真值表。今后的很多实验都需要验证输入输出是否符合真值表。

3. 管脚约束
退出仿真界面回到原理图设计界面,点击上方的“Implementation”,打开“User Constraints”下拉菜单,双击其中的“I/O Pin Planning”中带“Post”的项目,等待片刻后会弹出是否创建UCF文件的确认窗口,这里选择Yes。

等待一会后,弹出如下图所示窗口,我们需要修改的地方是“I/O Std”和“Site”,前者实验中统一选择LVCMOS33,后者要根据课本附录对芯片各引脚和实验箱接线柱对应关系、结合实验箱上的实际位置进行选择,这里的P92、P93、P102分别对应实验箱的7、8、9号接线柱。(已完成图中①②)

随后单击“All ports”自动全选所有端口,最后点击左上角的保存按钮,最小化这个窗口,方便连接实物电路时查找。(已完成图中③④)

4. 烧录
首先,将实验箱与电脑用USB数据线进行连接,这一步很重要!
返回设计界面,找到下方的“Generate Programming File”,双击并等待一段时间,若没有出现红叉(Errors),则原理图的数据流文件(.bit)已经成功生成。再双击下方的“Configure Target Device”,准备将文件烧录进板子(芯片)中,这一步也称“下载”。

新窗口弹出后,双击左侧的“Boundary Scan”,然后在右侧空白部分右键,选择第一项“Add Xilinx Device”,找到项目位置下的.bit文件并打开。


打开后原本的空白区域内会出现一个芯片的图案,右键选择“Program FPGA Only”(第一个经常失败),若出现蓝底白字的“Program Success”,说明程序已经烧录到板子,可以进行连线啦!

三、结束
本文为数字电路实验部分的第一篇介绍,同学应该牢记软件的使用步骤,方便在今后各个实验快速而准确地操作,早点美美下班;考试中也会用到软件,同学更应记住每个功能的位置和它们的先后顺序;同时遇到非预期状况也要学会调整,如仿真没问题,但是搬到实验箱上总是得不出结果,这时候要检查烧录的文件是否正确、断电重启实验箱、换管脚等等操作。
愿同学们实验顺利!