第3章 CHAPTER 3 Quartus Prime的应用 Quartus Ⅱ是原Altera公司的EDA开发环境,支持从建立工程、设计输入,到编译、综合与适配、仿真,以及编程与配置的全部设计流程。2015年Intel公司收购Altera后,从15.1版开始,将Quartus Ⅱ更名为Quartus Prime。 Quartus Prime支持硬件描述语言、原理图和状态机等多种输入方式,并且能够生成和识别 电子设计交换格式(Electronic Design Interchange Format,EDIF) 网表文件和HDL网表文件,同时支持第三方工具软件,设计者可以在设计流程的各个阶段根据需要选用更专业的工具软件。 Quartus开发环境支持Intel公司的可编程逻辑器件,不同版本支持的器件种类和范围有所不同。新版软件在增加对新器件支持的同时,也逐步放弃了对旧器件的支持。例如,Quartus Ⅱ 13.0支持MAX Ⅱ/Ⅴ系列CPLD和Cyclone Ⅰ~Ⅴ系列FPGA,而Quartus Ⅱ 13.1放弃了对MAX Ⅱ系列CPLD和Cyclone Ⅰ/Ⅱ系列FPGA的支持。发展到18.1版后,Quartus Prime 只支持Cyclone Ⅳ/Ⅴ及以上系列FPGA。因此,设计者需要根据自己所用可编程逻辑器件的类型和型号选用合适的Quartus版本。例如,需要使用MAX Ⅱ系列CPLD,或者需要使用基于Cyclone Ⅱ FPGA设计的DE1/DE2开发板时,那么最高只能使用Quartus Ⅱ 13.0版; 而使用基于Cyclone Ⅲ FPGA设计的DE0开发板时,则可以使用Quartus Ⅱ 13.1版; 使用基于Cyclone Ⅳ系列FPGA设计的DE2115开发板时,就可以使用Quartus Prime。 另外,不同版本的Quartus软件在功能上也有差异。从10.0版开始,Quartus Ⅱ放弃了9.1版(及以前)自带的、直观易用的向量波形仿真工具,而是调用功能更为强大的专业软件ModelSim进行仿真。从11.0版开始,Quartus Ⅱ推出了片上系统开发组件SOPC Builder的升级版本Qsys; 而从13.0版开始,则完全淘汰了SOPC Builder,只保留Qsys,同时又恢复了9.1版直观易用的向量波形仿真方法,并更名为University Program VWF,以方便高校EDA课程教学使用。从Quartus Prime 16.1版开始,Intel公司将Qsys更名为Platform Designer,同时将内嵌的逻辑分析仪SignalTap Ⅱ更名为Signal Tap Logic Analyzer。 还需要注意的是,Quartus Ⅱ 13.0/13.1版既支持Windows 32位操作系统,又支持Windows 64位操作系统,而Quartus Ⅱ 14.0及以上版本只支持Windows 64位操作系统。因此,如果需要在Windows 32位操作系统下应用Quartus软件,那么最高只能安装Quartus II 13.0/13.1。关于Quartus 软件各版本特性的详细信息,可以访问Intel公司的官方网站查阅Quartus软件的版本发布(Release)获取相关信息。 Quartus Prime提供了pro(专业版)、standard(标准版)和lite(精简版)3种版本。专业版只支持先进的Intel SoC FPGA器件,标准版提供最全面的器件支持,而精简版是大批量器件系列理想的设计起点。使用专业版和标准版需要许可证支持,而精简版可以免费使用。 实践出真知。本章以Quartus Prime 18.1标准版为基础,以DE2115开发板为实现载体,以4选1数据选择器为例讲述Intel公司EDA开发环境Quartus Prime的应用,包括基本设计流程、原理图输入方法、仿真方法和嵌入式逻辑分析仪的应用。 3.1a 微课视频 3.1b 微课视频 3.1c 微课视频 3.1基本设计流程 设计流程是指基于可编程逻辑器件应用EDA开发环境进行数字系统设计的具体过程。在Quartus Prime开发环境下进行EDA设计的基本流程如图31所示,包括建立工程、设计输入、编译、综合与适配、引脚锁定、编程与配置等主要步骤,同时还可以根据需要进行仿真分析、在线测试或时序分析。 图31基本设计流程 本节讲述在Quartus Prime开发环境下进行EDA设计的基本步骤。 3.1.1建立工程 Quartus Prime以工程(Project)的方式对设计项目进行管理,将所有的文件存储在工程目录中,包括设计文件、波形文件、逻辑分析仪文件、存储器初始化文件和构成工程的编译器、仿真器和相关软件设置,以及编译、综合和适配过程中产生的相关文件和报告信息。因此,在Quartus Prime开发环境下进行EDA设计,首先需要建立工程。 Quartus Prime提供了新建工程向导(New Project Wizard),通过新建工程向导引导设计者快速完成新工程的建立,包括指定工程目录、设置工程名和顶层模块文件名、添加或删除工程文件和库、指定目标器件类型和型号,以及设置EDA工具软件等工作。 建立工程的具体步骤如下。 (1) 启动Quartus Prime。Quartus Prime 18.1标准版启动后的主界面如图32所示,由左侧的项目管理器(Project Navigator)和任务(Tasks)指示窗口、底部的信息(Messages)窗口、中央的主窗口以及右侧的IP目录(IP Catalog)窗口5部分组成。除了主窗口外,其余窗口都可以通过View→Utility Windows菜单中的相关命令开启或关闭。 图32Quartus Prime主界面 Quartus Prime常用菜单命令如表31所示。除了File、Edit和View等Windows常用的菜单外,用于文件管理、工程设置、编译与综合以及内嵌工具的调用等命令分别在Project、Assignments、Processing和Tools菜单下。另外,Help菜单中还提供了应用Quartus Prime和学习HDL的相关文档,帮助设计者迅速掌握软件和语言的应用要点。 表31Quartus Prime常用菜单命令 菜单命令快捷键功能 File New...Ctrl+N新建文件 Open...Ctrl+O打开文件 CloseCtrl+F4关闭文件 New Project Wizard...新建工程向导 Open Project...Ctrl+J打开工程 Save Project保存工程 续表 菜单命令快捷键功能 File Close Project关闭工程 SaveCtrl+S保存文件 Save as...文件另存为 Save AllCtrl+Shift+S保存所有文件 File Properties...文件属性 Create/Update生成/更新 Export...输出 Convert Programming Files...转换编程文件 Recent Files最近打开的文件 Recent Projects最近打开的工程 ExitAlt+F4退出 Edit UndoCtrl+Z撤销 RedoCtrl+Y重做 CutCtrl+X剪切 CopyCtrl+C复制 PasteCtrl+V粘贴 DeleteDel删除 Select AllCtrl+A全选 Find...Ctrl+F查找 Find NextF3查找下一个 Find PreviousShift+F3查找上一个 Replace...Ctrl+H替换 Toggle Connection Dot添加/删除连接点 Flip Horizontal水平翻转 Flip Vertical垂直翻转 Update Symbol or Block...更新符号或者模块图 View Utility Windows 添加/关闭应用窗口 Address Radix地址格式 Memory Radix数据格式 Zoom InCtrl+Space放大 Zoom OutCtrl+Shift+Space缩小 Show Guidelines显示/隐藏网格线 Project Add Current File to Project添加当前文件到工程中 Add/Remove Files in Project添加/删除工程文件 Assignments Device...器件 Settings...Ctrl+Shift+E设置 Pin plannerCtrl+Shift+N引脚锁定工具 Processing Stop ProcessingCtrl+Shift+C停止编译 Start CompilationCtrl+L开始编译 Start 开始 续表 菜单命令快捷键功能 Tools Run Simulation Tool 运行仿真工具 Netlist Viewers 网表浏览器 Signal Tap Logic Analyzer逻辑分析仪 Programmer编程器 IP CatalogIP目录 Nios Ⅱ SBT for Eclipse片上系统软件开发工具 Platform Designer片上系统硬件开发平台 Tcl Scripts...Tcl脚本命令 Options...选择 License Setup...许可文件设置 Install Devices...安装器件库 Help Help Topics帮助主题 PDF Tutorials HDL学习文档 What’s New新版本信息 Release Notes版本发布信息 On the Web 网络资源 About Quartus Prime关于Quartus Prime 注: ①表示命令有子菜单; ...表示命令有弹出信息页; ②不同文档类型的菜单项不同; ③SBT为Software Build Tools的缩写。 在Quartus Prime主界面中,执行File→New Project Wizard菜单命令,弹出如图33所示的New Project Wizard对话框,提示设计者建立新工程需要完成以下5项任务: ①指定工程名和工程目录; ②指定顶层模块文件名; ③添加或删除工程文件和库; ④指定目标器件类型和型号; ⑤设置EDA工具。 图33New Project Wizard对话框 单击Next按钮进入设置工程目录、工程名和顶层模块名页面,如图34所示,其中第1栏用于指定存放工程文件的工作目录,第2栏用于指定工程名,第3栏用于指定顶层模块文件名。Quartus Prime要求顶层模块文件名与工程名相同,因此在输入工程名时,顶层模块文件名也随之自动输入。 需要强调的是: ①工程路径中不能含中文、空格和特殊字符,因为Quartus 软件无法正确地识别汉字和特殊字符编码; ②当前工程项目中包含低层工程项目时,当前工程项目文件和所有低层项目文件应保存在同一目录中,不要分子目录保存。 图34设置工程目录和工程名 (2) 单击Next按钮进入工程类型(Project Type)页面,选择工程类型。对于初学者,建议先选择空工程(Empty project),如图35所示,以便熟悉在Quartus Prime开发环境下进行EDA设计的基本流程。对于已经熟悉基本设计流程的用户,则可以选择工程模板(Project template)以提高设计效率。 图35选择工程类型 (3) 单击Next按钮进入添加文件(Add Files)页面,如图36所示,向工程中添加所需要的文件和库,也可以删除工程中多余的文件和库。当新建的工程中不包含任何设计文件时,可以跳过这一步。 另外,工程建立完成后,还可以通过Project→Add/Remove Files in Project菜单命令再次进入Add Files页面,向工程中添加新文件或删除工程中的多余文件。 图36添加文件 (4) 单击Next按钮进入目标器件设置页面,如图37所示。首先,在Family下拉列表中选择目标器件的类型,然后在Available devices列表中选择具体的器件型号。在选择目标器件型号时,还可以通过指定器件的封装(Package)、引脚数(Pin count)和速度等级(Core speed grade)缩小选择范围。 图37目标器件设置 图37中已经选择了DE2115开发板的FPGA器件型号EP4CE115F29C7,器件类型为Cyclone IV E,封装为FBGA,引脚数量为780个,速度等级为7。 (5) 单击Next按钮进入EDA工具设置页面,如图38所示,用于选择综合工具、仿真工具和时序分析工具。不选择(None)时,Quartus Prime应用默认的EDA工具。 对于复杂的数字系统设计,建议选用专业的EDA工具。对于一般的设计项目,Quartus Prime提供的默认综合工具完全能够满足工程要求。 Quartus Prime 18.1版应用ModelSim进行仿真。Intel公司OEM版的ModelSim名为ModelSimAltera,仿真语言根据所用硬件描述语言的类型选定(图38中已选择Verilog HDL)。 图38EDA工具设置 (6) 单击Next按钮,弹出工程汇总信息对话框,如图39所示,显示新建工程的相关信息。 图39工程汇总信息对话框 若建立工程过程中的信息有误,还可以单击图39中的Back按钮返回相应的页面进行修改,无误则单击Finish按钮完成新工程的建立任务。这时Quartus Prime主界面最上方的标题栏已经包含了当前工程目录和工程名两项信息,如图310所示,同时在左侧的项目管理器中包含了目标器件和顶层模块名两项信息。 图310包含新建工程信息的Quartus Prime主界面 3.1.2设计输入 设计输入(Design Entry)是将所设计的电路或系统以EDA软件支持的某种形式表达出来的过程。Quartus Prime支持硬件描述语言(HDL)、原理图(Schematic)和状态机(State Machine)等多种文件类型,如表32所示,同时又提供了第三方设计输入接口,如EDIF网表文件等。 表32Quartus Prime设计文件类型 设 计 文 件扩展名描述 Verilog HDL.v,.vlg,.verilog应用 Verilog HDL编写的设计文件 VHDL.vhd,.vh,.vhdl应用VHDL编写的设计文件 原理图.bdf应用Quartus Prime Block Editor建立的原理图设计文件 EDIF.edf,.edif应用任何标准EDIF编写程序生成的网表文件 图形.gdf应用MAX+plus II Graphic Editor建立的原理图设计文件 AHDL.tdf应用原Altera公司硬件描述语言AHDL编写的设计文件 VQM.vqm通过Synplify或Quartus Prime生成的Verilog网表文件 图311New对话框 硬件描述语言是EDA设计中最主要的输入方式。与传统的原理图方法相比,应用HDL有利于应用自顶向下的设计方式,有利于模块的分解与重用,并且HDL描述还具有与实现器件工艺无关的特点。因此,基于可移植方面的考虑,EDA工程设计大多应用HDL进行描述,以方便模块的功能重构与重用。 应用硬件描述语言输入方式的基本步骤如下。 (1) 在Quartus Prime主界面中,执行File→New菜单命令,弹出如图311所示的New对话框,用于新建项目文件。 Quartus Prime支持4类项目文件: 设计文件(Design Files)、存储器文件(Memory Files)、验证与调试文件(Verification/Debugging Files)和其他文件(Other Files)。每种项目文件又包含多种具体的文件类型选项。 若应用Verilog HDL进行设计,则应选择Design Files下的Verilog HDL File,然后单击OK按钮,弹出如图312所示的HDL代码编辑窗口。 图312HDL代码编辑窗口 (2) 在HDL代码编辑窗口中,输入Verilog HDL代码并以模块名(本例为MUX4to1)为文件名进行保存(提示: Verilog HDL文件的扩展名为.v,VHDL文件的扩展名为.vhd),如图313所示。 图313设计输入 图314由文件建立工程 需要注意的是: ①Quartus Prime要求顶层模块与工程同名,否则会导致编译失败。当工程只包含一个模块时,该模块即为顶层模块,因此一定要确保模块名、文件名与工程名严格一致; ②对于顶层模块,新建工程和设计输入两个步骤可以互换。也就是说,可以先输入设计文件,保存设计文件时,在弹出如图314所示的对话框中单击Yes按钮,启动新建工程的过程。 设计输入完成后,Verilog HDL代码需要经过编译、综合与适配后才能生成可以下载到CPLD中的编程文件或FPGA中的配置文件。 3.1.3编译、综合与适配 Quartus Prime编译、综合与适配流程如图315所示,包括分析与建模、综合、适配、装配和时序分析等主要环节。 图315Quartus Prime编译、综合与适配流程 分析与建模(Analysis & Elaboration)是调用Quartus Prime内嵌的编译器检查输入代码中是否存在语法错误以及潜在的逻辑错误的过程。 综合(Synthesis)是面向给定的约束和设置(Constraints & Settings),将HDL代码转换为门级网表的过程,是将HDL描述转化为硬件电路的关键步骤。 综合的效果决定设计电路的性能和芯片的资源利用率。在综合前,需要对设计施加适当的约束,包括时序约束、面积约束和功耗约束。综合器根据设定的约束,在器件厂商提供的综合库支持下,针对具体的可编程逻辑器件类型进行优化,目的是使综合所生成的电路满足设计要求。 给设计添加适当的约束,编译后对综合结果进行分析,找出设计中的瓶颈,对设计后期优化过程的成败起着决定性的作用。但是,给设计添加约束时,设计者必须充分理解分析与综合设置以及适配设置等优化项目的含义。关于综合与优化设置相关内容,将在第7章中讲述。未添加约束文件时,Quartus Prime按照默认的设置进行编译与综合。 编译与综合过程完成之后,Quartus Prime会自动将综合后产生的网表文件针对选定的目标器件进行映射,将工程的逻辑和时序要求与目标器件的可用资源相匹配,包括逻辑分割、逻辑优化和布局布线,这一过程称为适配和装配(Fitter & Assembler)。完成后,Quartus Prime会生成针对具体目标器件的编程与配置文件(Programming & Configuration Files),并进行时序分析(Timing Analysis),生成后适配仿真文件(PostFit Simulation Files)和工程统计报告,说明目标器件的资源占用等情况。 在Quartus Prime主界面中,执行Processing→Start Complication菜单命令或直接单击主界面中的按钮启动编译与综合过程。若描述代码没有错误,则编译、综合与适配过程会自动完成,生成能够下载到CPLD/FPGA或其外部配置芯片的编程与配置文件,并显示如图316所示的工程汇总信息,说明该工程的编译时间、版本信息、器件信息和资源占用等情况。 图316工程汇总信息 若在编译过程中发现错误,Quartus Prime将在信息窗口中用红色字体显示错误信息(Error Message)。对于代码问题,双击错误信息提示,Quartus Prime会自动定位到错误代码附近。仔细阅读错误信息说明,修改代码并重新启动编译与综合过程,直到完全正确为止。 需要注意的是,编译与综合过程中出现蓝色字体的警告信息(Warning Message),虽然不影响编译、综合与适配过程的正常进行,但可能预示着代码中存在潜在的设计错误,因此,设计者应对编译过程中产生的警告信息足够重视, 图317RTL电路 建议仔细阅读相关警告信息,排除潜在错误,确保综合出的电路功能正确。 编译、综合与适配过程完成之后,执行Tools→Netlist Viewers菜单命令,就可以查看综合出的RTL电路,如图317所示。可以看出,4选1数据选择器是通过定制Quartus Prime中的通用数据选择器IP得到的。 3.1.4引脚锁定 编译、综合与适配过程完成后,如果需要将综合出的电路下载到可编程逻辑器件中进行测试,那么还需要进行引脚锁定(或称为引脚约束),以确定工程的顶层模块端口与目标器件引脚的对应关系。 Quartus Prime提供了3种引脚锁定方法: ①使用图形化工具Pin Planner锁定引脚; ②编写Tcl脚本文件锁定引脚; ③应用属性定义锁定引脚。 1. 使用Pin Planner锁定引脚 使用图形化工具Pin Planner是引脚锁定的基本方法,具体步骤如下。 (1) 在Quartus Prime主界面中执行Assignments→Pin Planner菜单命令,弹出如图318所示的Pin Planner窗口。需要在图318中的Location栏中输入模块I/O端口对应的引脚信息。 图318Pin Planner窗口(1) (2) 对于DE2115开发板,需要查阅用户手册(User Manual)以确定FPGA外围电路组件与其I/O引脚的对应关系。DE2115开关量输入电路与FPGA器件I/O引脚的接口信息如图319所示,发光二极管(Light Emitting Diode,LED)驱动电路与FPGA器件I/O引脚的接口信息如图320所示。 图319DE2115开发板开关量输入电路与FPGA器件I/O引脚的连接信息 图320DE2115开发板LED驱动电路与FPGA器件I/O引脚的接口信息 若将4选1数据选择器的4路输入数据d3、d2、d1和d0分别锁定到开关SW17~SW14上,将2位地址a[1]和a[0]分别锁定到开关SW1和SW0上,将输出y锁定到发光二极管LEDG8上,则需要在Pin Planner窗口下部的Location栏中填入对应的FPGA引脚名,如图321所示。 图321Pin Planner窗口(2) (3) 引脚锁定完成后,需要重新编译工程,以生成带有引脚锁定信息的编程与配置文件。 2. 编写Tcl文件锁定引脚 对于顶层模块端口很多的应用工程,使用Pin Planner进行引脚锁定的方法费时费力,建议编写Tcl文件完成引脚锁定。 Tcl是工具命令语言(Tool Command Language),在FPGA开发中可以应用Tcl文件对引脚进行配置,既可以提高设计效率,又能够增强代码的可重用性。 Tcl文件的格式定义如下。 #setup.tcl #setup pin setting set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF ... set_location_assignment PIN_引脚名 -to 端口名 ... 其中,#setup.tcl和#setup pin setting为Tcl文件的说明部分; setup为Tcl文件名,建议修改为当前工程名。 编写Tcl文件进行引脚锁定的具体方法如下。 (1) 在Quartus Prime主界面中执行Files→New菜单命令,弹出New对话框(见图311),选择Design Files栏下的Tcl Script File,单击OK按钮进入Tcl文件编辑窗口。在窗口中输入4选1数据选择器MUX4to1的Tcl锁定信息,如图322所示。 图322Tcl文件编辑窗口 (2) Tcl文件编辑好后,保存文件名为MUX4to1.tcl,并执行Projects→Add/Remove Files in Project菜单命令将Tcl文件添加到工程中。 (3) 执行Tools→Tcl Scripts菜单命令,弹出如图323所示的Tcl Scripts对话框,打开相应的Tcl文件,单击Run按钮运行Tcl文件,即可一次完成引脚锁定。 图323Tcl Scripts对话框 通常,EDA开发板配有示例工程模板,包含开发板所有引脚分配信息。例如,友晶公司为DE2115开发板提供了一个名为DE2_115_GOLDEN_TOP的空工程模板,模板中已经包含了开发板所有的引脚锁定信息。因此,设计者可以基于GOLDEN_TOP工程进行设计,添加自己的功能代码,保持模块的端口名与模板已经锁定引脚的端口名一致,或者将模板中已经定义的端口名修改为自己定义的端口名,从而省去引脚锁定这个耗时费力的环节,有效地提高设计效率。 3. 应用属性定义锁定引脚 除了应用Pin Planner和编写Tcl文件锁定引脚的方法外,还可以应用Quartus Prime综合属性(Synthesis Attributes)语句中的芯片引脚属性(chip_pin)锁定引脚。 在Verilog HDL代码中添加芯片引脚属性不影响Verilog HDL的语法,但在布局布线(Place & Route)过程中,Quartus Prime会根据chip_pin属性锁定引脚。 应用属性定义实现4选1数据选择器引脚锁定的代码如下。 module MUX4to1(d0,d1,d2,d3,a,y); input d0 /* synthesis chip_pin="AA23" */; input d1 /* synthesis chip_pin="AA22" */; input d2 /* synthesis chip_pin="Y24" */; input d3 /* synthesis chip_pin="Y23" */; input [1:0] a /* synthesis chip_pin="AC28,AB28" */; output wire/reg y /* synthesis chip_pin="F17" */; ... endmodule 需要说明的是: ①chip_pin属性应放在端口列表和表示语句结束的分号之间,以“/*”开始,以“*/”结束; ②应用属性定义锁定引脚时,必须在新建工程中明确指出实现目标器件的具体型号; ③应用属性定义锁定引脚的方法只能在顶层模块中应用。 3.1.5编程与配置 编程与配置是指将经过编译与综合后产生的含有电路设计信息的目标文件(.sof或.pof)写入可编程逻辑器件(CPLD/FPGA)或FPGA外部配置器件(如EPCS)中的过程。一般习惯将.sof文件加载到FPGA内部查找表SRAM中的过程称为配置(Configuration); 将.pof文件写入CPLD或固化到FPGA外部配置器件中的过程称为编程(Program)。 对DE2115开发板进行编程与配置时,需要将装有Quartus Prime的计算机通过USB设备电缆(Type A to B)与DE2115开发板的USBBlaster接口连接起来并给开发板加电。 如果首次使用开发板,那么还需要安装USBBlaster驱动程序。 USBBlaster的安装步骤如下。 ① 通过Windows控制面板中的“设备管理器”打开设备管理界面。在“其他设备”中找到带有感叹号的USBBlaster设备图标,如图324所示。 ② 右击带有感叹号的USBBlaster图标,在弹出的快捷菜单中选择“更新驱动程序软件(P)”。 ③ 在弹出的对话框中选择 “浏览计算机以查找驱动程序软件(R)”。 ④ 浏览并指定USBBlaster驱动程序路径。 对于Quartus Prime 18.1标准版,USBBlaster驱动程序位于Quartus Prime安装目录(默认为c:\intelFPGA\18.1)下的quartus\drivers\usbblaster子目录中。浏览并选中驱动程序所在的子目录后,单击“下一步”按钮进行安装。安装完成后,在设备管理器的“通用串行总线控制器”下就可以看到正常的USBBlaster设备图标了,如图325所示。 图324未安装驱动的USBBlaster设备图标 图325安装好驱动的USBBlaster设备图标 Quartus Prime支持4种编程与配置方式: JTAG(Joint Test Action Group)配置方式、Socket编程(InSocket Programming)方式、PS(Passive Serial)方式和AS编程(Active Serial Programming)方式。常用的有JTAG配置和AS编程两种方式,其中应用JTAG配置方式可对多个FPGA进行配置,应用AS编程方式可对CPLD/EPCS配置器件进行编程。另外,Quartus Prime还支持JTAG间接配置方式,用于对EPCS配置器件进行间接编程。 1. JTAG配置方式 JTAG配置方式用于将综合与适配后生成的目标文件.sof(SRAM Object File)配置到FPGA查找表的SRAM中,以实现可编程逻辑。由于SRAM为易失性存储器(Volatile Memory),断电后存储数据会丢失,所以应用JTAG配置方式直接配置FPGA不能长期保存电路的设计信息,适用于实验或产品研发阶段硬件电路的测试。 DE2115开发板的JTAG配置链如图326所示。应用JTAG对FPGA进行配置时,需要确保运行与编程(RUN/PROG)开关SW19处于RUN位置。 图326JTAG配置链 应用JTAG方式配置FPGA的具体步骤如下。 (1) 打开编程器。 在Quartus Prime主界面中执行Tools→Programmer菜单命令,打开Quartus Prime编程器(Programmer)。 Quartus Prime编程器窗口如图327所示。 图327Quartus Prime编程器窗口 (2) 设置硬件连接。 单击Hardware Setup按钮,弹出Hardware Setup对话框,在Currently selected hardware下拉列表中选择USBBlaster[USB0],如图328所示,设置硬件连接。完成后单击Close按钮关闭对话框。 图328设置硬件连接对话框 如果不能正确连接,则需要检查: ①USBBlaster驱动程序是否已正确安装; ②开发板是否已与计算机相连接; ③开发板是否已经加电。 (3) 选择编程与配置方式。 将设计电路下载到FPGA目标器件中,需要应用JTAG配置方式。Quartus Prime默认的编程与配置方式即为JTAG。 (4) 添加配置文件。 在工程编译、综合与适配过程完成之后,Quartus Prime会生成.sof配置文件,并且将文件自动添加到编程器窗口中。如果没有添加.sof文件或需要更换配置文件,单击编程窗口左侧的Add File按钮打开选择编程文件窗口,浏览并选择工程目录中output_files子目录下的.sof配置文件,如图329所示,单击Open按钮打开。 图329选择.sof配置文件 (5) 启动配置过程。 在Quartus Prime编程器中勾选Program/Configure选项,如图330所示,并确认DE2115开发板的运行与编程开关SW19处于RUN位置,然后单击Start按钮开始配置。当配置进度条(Progress)显示100%时,配置完成。 图330配置过程窗口 配置完成后,就可以在开发板上测试4选1数据选择器的功能了。 2. AS编程方式 AS编程方式用于将综合与适配后生成的目标文件.pof(Program Object File)写入CPLD或固化到FPGA外部的EPCS配置器件中。由于CPLD和EPCS配置器件均为非易失性存储器(Nonvolatile Memory),所以应用AS编程方式能够永久保存电路的设计信息。 将编程文件固化到FPGA外部的EPCS配置器件后,每次开发板加电时,FPGA会主动引导配置过程: 读取EPCS配置器件中的数据,并加载到FPGA查找表的SRAM中。因此,应用AS编程方式将编程文件.pof写入EPCS配置器件中能够使FPGA在上电后立即获得硬件电路的设计信息。 DE2115开发板的AS编程链如图331所示。应用AS方式编程EPCS器件时,需要将运行与编程(RUN/PROG)开关SW19拨到PROG位置。 图331AS编程链 需要注意的是,如果在建立工程的过程中没有指定EPCS配置器件,则综合与适配过程不会自动生成.pof编程文件。因此,在应用AS编程方式之前,需要设置目标器件以指定EPCS配置器件的具体型号,然后重新启动编译、综合与适配过程才能生成.pof编程文件。 应用AS方式编程EPCS器件的具体步骤如下。 (1) 在Quartus Prime主界面中执行Assignments→Device菜单命令,弹出Device对话框,如图332所示。 图332Device对话框 (2) 单击图332中的Device and Pin Options按钮,在弹出的Device and Pin Options (设备与引脚选择)对话框中选择Category栏下的Configuration选项,并勾选右侧的Use configuration device复选框,然后选择具体的EPCS配置器件型号(DE2115开发板的配置器件型号为EPCS64),如图333所示,然后单击OK按钮完成设置过程。 图333配置器件 (3) 重新启动编译、综合与适配过程,生成.pof编程文件。 (4) 打开编程器,选择编程与配置方式。 在Quartus Prime主界面中执行Tools→Programmer菜单命令,打开Quartus编程器,在Mode下拉列表中选择Active Serial Programming,如图334所示。 (5) 添加编程文件。 单击编程器窗口左侧的Add File按钮,弹出Select Programming File对话框,在output_files子目录中找到已经生成的.pof编程文件,如图335所示。单击Open按钮打开。 图334编程模式选择 图335编程文件选择 (6) 启动编程过程。 如图336所示,勾选Program/Configure,并且确认开发板的RUN/PROG开关已经拨到PROG位置,单击Start按钮开始编程。当进度条(Progress)显示100%时,编程过程完成。 图336编程过程窗口 编程过程完成后,需要将DE2115开发板的运行与编程开关SW19重新拨回RUN位置。开发板断电重启后,4选1数据选择器应用电路信息就自动从EPCS配置器件加载到FPGA中,然后就可以在开发板上测试4选1数据选择器的功能了。 3. JTAG间接配置方式 除了JTAG配置方式和AS编程方式外,Quartus Prime还支持JTAG间接配置方式,用于应用JTAG对EPCS配置器件进行间接编程。 应用JTAG间接配置方式时,首先需要将配置文件.sof转换为JTAG间接配置文件(.jic),然后再应用JTAG配置方式将间接配置文件写入EPCS器件,完成对配置器件的编程。 应用JTAG间接配置方式的具体步骤如下。 (1) 启动编程文件转换器。 在Quartus Prime主界面中执行File→Convert Programming Files菜单命令,弹出如图337所示的Convert Programming File对话框。 图337Convert Programming File对话框 (2) 设置转换信息。 在Programming file type下拉列表中选择JTAG Indirect Configuration File(.jic),在Mode下拉列表中选择Active Serial模式,如图338所示,并在Configuration device下拉列表中选择EPCS64(DE2115开发板的配置器件型号),同时将File name文本框默认的文件output_file.jic改为MUX4to1.jic。 图338文件转换信息设置 (3) 指定Flash Loader器件。 在Input files to convert列表中单击Flash Loader项,再单击右侧的Add Device按钮添加Flash Loader器件,如图339所示。 图339添加Flash Loader器件 图340指定Flash Loader器件 在弹出的Select Devices对话框中,分别选择左侧的(DE2115开发板上的)Cyclone Ⅳ E器件类型和右侧的EP4CE115器件型号,如图340所示,表示需要将Flash Loader配置到EP4CE115 FPGA中。单击OK按钮返回Convert Programming File对话框。 (4) 添加需要转换的配置文件。 单击SOF Data,如图341所示,再单击右侧的Add File按钮,添加需要转换的.sof文件。 图341添加配置文件 图342指定配置文件 将文件目录切换到当前工程目录的output files子目录下,找到配置文件MUX4to1.sof,单击Open按钮打开,如图342所示,表示需要转换的SOF Data为配置文件MUX4to1.sof。 (5) 生成间接配置文件。 单击Convert Programming File对话框中的Generate按钮,如图343所示,启动间接配置文件生成过程。完成后,弹出生成成功消息提示框后,单击OK按钮关闭消息提示框。 图343间接配置文件生成 (6) 编程间接配置文件。 在Quartus Prime主界面中执行Tools→Programmer菜单命令,启动Quartus编程器,选择JTAG配置方式,单击Add Files按钮,添加工程目录的output_files子目录下的间接配置文件MUX4to1.jic,勾选Programming/Configuration选项,如图344所示。 从图344可以看出,添加间接配置文件后,Quartus编程器窗口中出现了两项文件信息: ①Factory default enhanced SFL image,作用为Flash Loader,将配置到FPGA器件中,引导编程过程; ②间接配置文件MUX4to1.jic,将固化到EPCS配置器件中。 图344编程间接配置文件 确认开发板的运行与编程开关SW19处于RUN位置后,单击Start按钮开始间接配置过程。过程分两步进行: ①应用JTAG配置Flash Loader到目标FPGA中; ②通过Flash Loader将间接配置文件MUX4to1.jic写入EPCS配置器件中。完成后,硬件电路的设计信息已经固化到EPCS配置器件中了。 将开发板断电重启后,FPGA会主动从EPCS配置器件中读取硬件电路的设计信息,并配置到FPGA中,4选1数据选择器同样可以正常工作。 3.2 微课视频 3.2原理图设计方法 Quartus Prime既支持HDL输入方法,又支持原理图设计方法,还支持以HDL描述为主、原理图设计为辅的混合设计方式,以发挥两者各自的优点。底层模块通常应用HDL描述,以方便模块的功能定义和重构,使模块的功能既满足设计需求,又能节约FPGA资源。顶层电路既可以应用Verilog HDL模块例化方法描述各模块之间的连接关系,也可以采用传统的原理图方法进行设计。 应用原理图设计方法的好处是直观易用。有了数字电路课程基础,就可以在电子技术课程设计等实践中应用EDA技术设计数字系统了。原理图具有直观形象的优点,应用于顶层电路设计时能够使系统的总体结构清晰明了。但是,原理图方法的缺点也很突出,一是设计效率低,二是可移植性差。 图345图形化元器件目录 简单的数字系统可以应用原理图方法设计顶层电路。对于复杂的数字系统,则建议应用结构描述方法,通过模块例化方法描述顶层电路的结构。虽然结构描述方法不如原理图方法直观,但有利于系统的功能重构,并且具有良好的可移植性,因而在复杂数字系统设计中应用广泛。 Quartus Prime提供了3类用于原理图设计的符号库: megafunctions、others和primitives,如图345所示。另外,用户也可以将自己设计好的功能模块通过Quartus Prime主界面中Files→Create∠Update→Create Symbol Files for Current File菜单命令封装成图形符号,以便在原理图设计中调用。 megafunctions 符号库包含IO、arithmetic、gates和storage 4类器件库,有参数化加/减法器、参数化乘/除法器、指数和对数运算、编码器与译码器、比较器、参数化触发器、参数化计数器、参数化RAM和参数化FIFO等多种类型的器件。 others 符号库包含74系列逻辑器件(maxplus2子目录下),如7400/02/04、74138/139、74151/153、74160/161/162/163等多种商品化数字器件。 primitives 符号库包含5类基本图形化符号,如缓冲器(buffer目录下)、基本逻辑门(logic目录下)、电源(vcc)和地(gnd)等符号(other目录下)、输入/输出端口(pin目录下)和存储器件(storage目录下)。 原理图设计方法的流程与HDL输入方法的流程相同,只是在选择设计文件类型时,在新建文件的New对话框中选择设计文件类型中的Block diagram/Schematic Files后,弹出如图346所示的原理图设计窗口,就可以编辑扩展名为.bdf的原理图文件了。 图346原理图设计窗口 原理图设计窗口包括原理图编辑区和工具栏两部分。原理图编辑区用于绘制原理图,工具栏则包含了绘制和编辑原理图所需要的工具,如表33所示。 表33原理图工具 按钮工具名称描述 分离窗口从Quartus Prime环境中分离或还原原理图窗口 选择指针选择器件、线条等图形元素 缩放工具单击放大图形,右击缩小图形 放置器件从元件库中选择要添加的器件或符号 放置端口从下拉列表中选择放置输入、输出或双向端口 手工具在原理图窗口中抓取器件或符号 文字工具在原理图窗口中添加文字 插入模块插入已设计好的模块 正交导线用于绘制水平或垂直方向的导线 正交总线用于绘制水平或垂直方向的总线 正交导管用于绘制水平或垂直方向的导管(Conduit) 对角导线用于绘制对角方向的导线 对角总线用于绘制对角方向的总线 对角导管用于绘制对角方向的导管(Conduit) 矩形工具用于画矩形窗口 椭圆工具用于画椭圆窗口 画线工具用于画不具有电气功能的连线 弧线工具用于画不具有电气功能的弧线 打开/关闭橡皮筋连接功能打开时移动元件连接在元件上的连线也跟着移动,不改变与其他元件的连接关系 打开/关闭局部正交连线选择功能打开局部正交连线选择功能,可以通过鼠标选择两条正交连线的局部 垂直翻转将选中的元件或模块进行垂直翻转 水平翻转将选中的元件或模块进行水平翻转 旋转工具将选中的元件或模块逆时针方向旋转90° 应用原理图设计方法的基本步骤如下。 1. 添加图形符号 在原理图编辑区的任意空白处双击,或者单击工具栏中的按钮,弹出如图347所示的Symbol对话框。在左侧的Libraries列表中按分类查找所需要的元器件,选中后单击OK按钮,在原理图编辑区出现随鼠标移动的元器件符号,在绘图区适当的位置单击放置元器件。 图347Symbol对话框 2. 连接元器件 放置好元器件后,需要连线,将鼠标指向器件的端口,当鼠标指针变为直角形状时进入连线状态。拖动鼠标到另一个连接点位置后松开,则会放置一段连线。反复操作完成所有的连线。 需要删除连线时,先单击连线使其处于选中状态,然后按Delete键删除,或者右击连线,在弹出的快捷菜单中选择Delete。 需要注意的是,原理图中的总线(Bus)为粗线,导线(Wire)为细线。从端口引出的连线是导线还是总线,取决于端口的宽度。若端口的宽度为1位,则引出的是导线; 若端口的宽度为多位,则引出的是总线。 3. 设置I/O端口 在原理图编辑区的任意空白处双击,或者单击工具栏中的按钮, 弹出Symbol对话框。展开primitives→pin列表选择input、output或inout端口符号,单击OK按钮,出现随鼠标移动的端口图标,在绘图区合适的位置单击放置端口符号,调整端口方向,连接到器件需要输入/输出的引脚上。 双击端口符号中的pin_name,修改端口名。注意,端口名的格式为 端口名[msb..lsb] 其中,msb和lsb用于定义端口的位宽,默认的位宽为1。 需要注意的是: ①在原理图中,用于定义端口位宽的msb和lsb用符号“..”连接,而不是冒号(用冒号会导致编译错误); ②I/O端口的宽度必须与其相连接的器件端口位宽严格一致。 4. 保存文件 执行File→Save/Save as菜单命令保存原理图设计文件。如果原理图为顶层设计电路,则保存的文件名应为工程名加上原理图文件扩展名(.bdf)。 4选1数据选择器原理图如图348所示,设置文件名为MUX4to1.bdf。 图3484选1数据选择器原理图 原理图设计完成后,同样需要进行编译、综合与适配,以及引脚锁定、编程与配置。这些过程与HDL输入法完全相同,在此不再复述。 3.3a 微课视频 3.3b 微课视频 3.3仿真分析 EDA设计的基本流程包括建立工程,设计输入,编译、综合与适配,引脚锁定以及编程与配置5个主要环节。完成了设计输入并成功进行编译与综合后,并不能说明综合出的电路功能正确,性能能够满足设计要求。 模块功能的验证通常有两种方法: ①应用ModelSim对设计电路进行仿真分析; ②在设计电路中嵌入逻辑分析仪(Signal Tap Logic Analyzer)进行在线测试。 仿真(Simulation)是通过软件算法模拟电路的运行验证电路的逻辑功能,以及在适配过程中引入分布参数(包括器件传输延迟和布线延迟)后,验证其功能是否依然正确无误。 仿真分为功能仿真和时序仿真两种类型。 功能仿真(Functional Simulation)是指在不考虑器件的传输延迟时间和布线延迟时间情况下的仿真; 而时序仿真(Timing Simulation)是指在完成布局布线之后进行包含了器件传输延迟和布线延迟信息的仿真。功能仿真为理想化仿真,而时序仿真结果能够较真实地反映电路的实际性能。 Quartus Prime调用ModelSim进行仿真分析。Mentor公司为Intel公司提供了两种OEM版的ModelSim: ModelSim_ae和ModelSim_ase。使用ModelSim_ae需要有相应许可证的支持,而ModelSim_ase为入门版,虽然在应用上有一定的限制,只能仿真10000行(及以下)的可执行代码,但是完全能够满足大部分工程项目的仿真需求。 Quartus Prime支持两种仿真方法: ①基于Intel公司大学计划项目(University Program)的向量波形(Vector Waveform)仿真方法; ②编写测试平台文件(testbench)进行仿真。无论哪种方法,都需要调用ModelSim进行仿真,只是方法不同而已。 3.3.1基于向量波形的仿真方法 基于向量波形的仿真是图形化的仿真方法,具有直观易用的优点,适合简单工程的仿真需要。 下面介绍基于向量波形的仿真方法的具体步骤。 1. 建立向量波形文件 在设计工程中,在Quartus Prime主界面中执行File→New菜单命令,弹出New对话框(见图311),选择Verification/Debugging Files栏下的University Program VWF,单击OK按钮,将弹出如图349所示的向量波形文件编辑窗口,其中窗口上方为波形编辑工具栏。 图349向量波形文件编辑窗口 波形编辑工具栏的下方分为两部分: 左侧为节点名称(Name)栏,用于添加需要设置的输入激励信号以及需要观察的内部节点和输出信号; 右侧为波形区,用于编辑输入信号的波形和显示仿真后内部节点和输出信号的波形。 2. 插入节点或总线 在波形编辑窗口左侧的Name栏的空白处右击,在弹出的快捷菜单中选择Insert Node or Bus,弹出如图350所示的Insert Node or Bus对话框。单击Node Finder按钮,弹出Node Finder对话框,如图351所示。 图350Insert Node or Bus对话框 图351Node Finder对话框 在插入节点或总线之前,可以先进行过滤(Filter)和定位(Look in),以缩小查找范围。 选择Filter下拉列表中的Pins:all,选择模块的端口,单击List按钮,将在Nodes Found列表中列出工程所有的I/O信号。选择需要设置和观测的端口,单击>按钮将端口添加到右侧Selected Nodes列表(不需要的端口可以通过<按钮移出,也可以通过>>和<<按钮将端口全部移入或移出),如图352所示。完成后单击OK按钮返回,再单击对话框中的OK按钮返回波形文件主窗口。 图352插入节点 3. 设置仿真参数 向量波形文件编辑窗口中Edit菜单下的Grid Size和Set End Time命令用于设置仿真步长和仿真结束时间。 Quartus Prime默认的仿真步长为10ns,仿真结束时间为1μs。由此可以推出,Quartus Prime默认的仿真次数为1μs/10ns=100次。对于组合逻辑电路,对应输入信号100种组合; 对于时序电路,对应50个时钟周期。若仿真次数不够,则可以通过加长仿真结束时间或减小仿真步长的方法增加仿真次数。 一般推荐使用增加仿真结束时间的方法。例如,对8位二进制计数器进行分析时,至少需要仿真28=256个时钟周期,才能观察到一个完整的计数循环过程,因此需要将End Time调整为256×2×10ns=5.12μs; 而对于基本的3线8线译码器进行仿真时,由于输入的二进制码只有8种取值组合,所以只需要仿真8次,因此设置End Time为8×10ns=80ns。 4. 设置输入信号波形 仿真参数设置完成后,接下来需要应用波形编辑工具设置输入激励信号的波形。Quartus Prime提供的波形编辑工具的功能描述如表34所示。 表34波形编辑工具 按钮工具名称描述 选择工具选择信号或波形 放缩工具利用鼠标(左键)放大/(右键)缩小显示波形 赋x将选中的波形段赋值为未知 赋0将选中的波形段赋值为低电平 赋1将选中的波形段赋值为高电平 赋z将选中的波形段赋值为高阻状态 取反将选中的波形段反相 计数赋值以计数方式为周期性信号赋值 时钟赋值以时钟方式为周期性时钟信号赋值 随机赋值对选中的信号段进行随机赋值 功能仿真启动功能仿真(Functional Simulation) 时序仿真启动时序仿真(Timing Simulation) 生成文件生成testbench和Script文件 栅格对齐栅格对齐 捕捉过渡捕捉过渡 波形设置的具体方法: 单击Name区的输入信号,当信号变为蓝色时,表示该信号已被选中。在波形区,拖动选择需要编辑的信号波形段,单击工具栏中的或按钮将该信号段设置为低电平或高电平,也可以单击工具栏中的(Count Value)按钮对信号进行周期赋值,以仿真步长的倍数为基准进行变化,或者单击工具栏中的(Random Values)按钮对信号进行随机赋值。 设置4选1数据选择器输入信号的波形,如图353所示。其中,4路数据d0、d1、d2和d3分别以10ns、20ns、30ns和40ns为步长循环变化。单击信号名称左侧的按钮展开2位地址a,设置a[1]和a[0]分别以500ns和250ns为步长变化,则2位地址a按00、01、10和11的顺序变化。 图353设置输入信号波形 5. 保存向量波形文件 执行向量波形文件编辑窗口File→Save /Save as菜单命令,将向量波形保存为.vwf文件。 6. 启动仿真 需要进行功能仿真时,执行Simulation→Run Functional Simulation菜单命令,或者直接单击工具栏中的按钮启动功能仿真。进行时序仿真时,执行Simulation→Run Timing Simulation菜单命令,或者直接单击工具栏中的按钮启动时序仿真。 4选1数据选择器的功能仿真结果如图354所示。分析仿真波形,验证逻辑功能是否正确。从图354中输出信号与输入信号的对应关系可以看出,当地址a=2'b00时,输出y的波形与d0的波形相同; 当a=2'b01时,输出y的波形与d1的波形相同; 当a=2'b10时,输出y的波形与d2的波形相同; 当a=2'b11时,输出y的波形与d3的波形相同。因此,4选1数据选择器功能正确。 如果仿真结果有误,就需要修改描述代码重新进行编译与综合过程,再进行仿真,直到模块功能正确为止。 3.3.2基于testbench的仿真方法 基于向量波形的仿真方法适用于对简单工程进行仿真。对于复杂的数字系统,应用向量波形进行仿真时难以设置复杂的输入信号的波形组合,因而应用上有很大的局限性。 对于复杂的数字系统仿真,建议应用基于测试平台文件(testbench)的仿真方法。基于testbench进行仿真时,需要编写测试平台文件testbench。 4选1数据选择器的测试平台文件testbench与被测模块MUX4to1之间的关系如图355所示。仿真时,testbench为MUX4to1模块为4路输入信号d0、d1、d2、d3以及2位地址a提供输入激励,例化MUX4to1并指定观测信号及显示数据格式,调用ModelSim仿真并输出观测信号以供设计者进行分析。 图3544选1数据选择器功能仿真结果 图355testbench与被测模块的关系 需要说明的是,当ModelSim仿真软件随Quartus Prime一起安装时,Quartus Prime会自动关联ModelSim。在仿真过程中,如果出现Quartus Prime无法调用ModelSim的情况,则需要手动关联ModelSim: 在Quartus Prime主界面中,执行Tools→Options菜单命令,在弹出的Options对话框中选择General栏下的EDA Tool Options,进入EDA工具选择对话框,在ModelSimAltera栏中设置ModelSim的安装路径,如图356所示,具体与安装Quartus Prime时的路径设置有关。设置完成后单击OK按钮退出。 图356手动关联ModelSim 应用testbench进行4选1数据选择器仿真的具体步骤如下。 1. 生成testbench模板文件 在Quartus Prime主界面中,执行Processing→Start→Start Test Bench Template Writer菜单命令,将在“当前工程目录\simulation\modelsim”文件夹中自动生成一个扩展名为.vt的测试平台文件(vt表示verilog testbench),文件名与工程名一致。 对于4选1数据选择器,测试平台文件文件名为MUX4to1.vt。 打开测试平台文件MUX4to1.vt,可以看到,自动生成的testbench模板文件已经完成了模块定义(默认模块名为“工程名_vlg_tst”)、端口声明和模块例化,但核心代码initial和always过程语句部分是空白的,如图357所示。用户需要添加代码设置输入信号的波形并指定需要观测的输出信号及其显示格式。 图3574选1数据选择器testbench模板 2. 编辑testbench 在测试平台文件中应用initial和always过程语句设置4路输入数据和2位地址的起始值和波形,如图358所示,同时调用系统任务$monitor持续监测输出信号y的变化。 图358编辑testbench代码 3. 关联testbench文件 执行Assignments→Settings菜单命令,在弹出的Settings对话框中的Category列表中选择EDA Tool Settings→Simulation,进入如图359所示的仿真设置界面,将Time scale参数值设置为1ns(与MUX4to1.vt中的参数设置一致)。 图359仿真设置 设置NativeLink settings栏中的相关信息以关联testbench文件。 (1) 勾选Compile test bench,如图360所示,单击右侧的Test Benches按钮,弹出Test Benches对话框,以指定testbench文件。 图360关联testbench文件(1) 如果没有关联过testbench文件,则Test Benches文件列表是空白的,如图361所示。 图361关联testbench文件(2) (2) 关联testbench文件。单击New按钮,弹出New Test Bench Settings对话框,需要将相应的testbench文件名和相应的顶层模块名填入对应文本框中。对于4选1数据选择器的仿真,在Test bench name文本框中输入测试平台文件MUX4to1.vt,在Top level module in test bench文本框中输入testbench模块名MUX41a_vlg_tst,如图362所示。 图362关联testbench文件(3) (3) 添加testbench文件。单击File name文本框后的按钮,浏览“当前工程目录\simulation\modelsim”文件夹,查找testbench文件(MUX4to1.vt),选中并加入(单击Add按钮)File Name栏中,如图363所示。 图363关联testbench文件(4) 单击OK按钮,弹出Test Benches对话框,如图364所示。连续单击OK按钮完成设置过程。 图364Test Benches对话框 4. 启动仿真 设定完成后, 在Quartus Prime主界面中,执行Tools→Run Simulation Tool→RTL Simulation菜单命令,调用ModelSim进行功能仿真。如果需要进行时序仿真,则执行Tools→Run Simulation Tool→Gate Level Simulation菜单命令。仿真完成后,会自动弹出ModelSim波形窗口,如图365所示。选定波形栏,单击按钮缩放波形以便于分析。 图3654选1数据选择器ModelSim波形图 3.4 微课视频 3.4逻辑分析仪的应用 数字系统开发不但需要仿真分析,还需要进行实际测试。 传统的测试方法是将逻辑分析仪和示波器等仪器设备连接到芯片的引脚或电路连线上进行测试。对于基于可编程逻辑器件设计的数字系统,这种测试方法需要预先将PLD内部需要观测的节点或总线锁定到芯片引脚上,再外接逻辑分析仪等设备进行测试。 随着半导体制造工艺水平的提高,FPGA的密度越来越大,I/O引脚数也越来越多,而且大多数FPGA采用了微间距的TQFP(Thin Quad Flat Package)封装或BGA(Ball Grid Array)封装,如图366所示,使采用传统的通过芯片引脚对内部信号进行测试的方法变得越来越难以实现。 图366FPGA封装 Signal Tap Logic Analyzer是内嵌于Quartus Prime开发环境中的逻辑分析仪。设计者可以将Signal Tap Logic Analyzer同设计电路一起配置到FPGA器件中。Signal Tap Logic Analyzer能够在电路工作期间实时捕获电路内部节点的信号和总线上的信息流,然后通过JTAG接口将采集到的数据反馈给Quartus Prime开发环境以显示电路内部节点上的信号波形或者总线上的信息流。 使用Quartus Prime内嵌的Signal Tap Logic Analyzer无需外接逻辑分析设备,设计者只需要通过USBBlaster连接到需要测试的目标器件上,就可以应用Quartus Prime开发环境对FPGA内部硬件电路工作时的数据进行采集和显示,而且不影响硬件电路的正常工作。 为了测试4选1数据选择器,需要为4选1数据选择器提供4路激励数据d0、d1、d2、d3,然后在2位地址a的作用下对4选1数据选择器的4路数据和输出y进行采样并显示,以供设计者分析电路功能是否满足正确。 1. 建立测试工程 在4选1数据选择器工程目录(c:\EDA_lab)下,新建测试工程MUX4to1_tst,然后定制锁相环IPALTPLL(设模块名为PLL_for_MUX4to1_tst),设置锁相环的5路输出信号c0、c1、c2、c3和c4依次为4MHz、3MHz、2MHz、1MHz和100MHz方波,分别作为4选1数据选择器的4路输入数据d0、d1、d2、d3和逻辑分析仪Signal Tap Logic Analyzer的时钟。 锁相环的定制方法和具体步骤将在本书5.2节中讲述。 新建原理图顶层设计文件,将定制好的锁相环PLL_for_MUX4to1_tst.qip和4选1数据选择器原理图符号文件MUX4to1.bsf(在MUX4to1工程中,通过Files→Create∠Update→Create Symbol Files for Current File菜单命令生成)连接成如图367所示的测试工程顶层电路,同时将4选1数据选择器的2位地址a[1:0]分别锁定到两个外接开关SW1和SW0上,通过改变开关的状态观察数据选择器输出信号y的变化。 图367测试工程顶层电路 2. 新建逻辑分析文件 在Quartus Prime主界面中,执行File→New菜单命令,弹出New对话框,选中Verification/Debugging Files栏下的Signal Tap Logic Analyzer File文件类型,单击OK按钮确认,将弹出Signal Tap Logic Analyzer主窗口,如图368所示。 Signal Tap Logic Analyzer主界面主要包含例化管理器(Instance Manager)、JTAG链配置区(JTAG Chain Configuration)、SOF管理器(SOF Manager)、信号节点列表区(auto_signaltap_0)、信号配置区(Signal Configuration)、层次显示区(Hierarchy Display)和数据日志(Data Log)共7个区域。 图368Signal Tap Logic Analyzer主窗口(1) 例化管理器用于控制Signal Tap Logic Analyzer的工作过程,在没有设置待测信号和参数之前,例化管理器中的按钮是灰色的,为不可用状态。JTAG链配置区用于指定具体的JTAG连接(对于DE2115开发板,为USBBlaster)。SOF管理器用于指定加载到FPGA的.sof配置文件名和启动配置过程。信号节点列表区用于选择需要观测的信号并设置相关参数。信号配置区用于指定Signal Tap Logic Analyzer的时钟源、设置采样深度,以及触发控制和触发条件等相关参数。 单击例化管理区中的auto_signaltap_0,将默认的逻辑分析仪名auto_signaltap_0更改为signaltap_MUX4to1(方便记忆)。更改之后,信号列表区、层次显示区和数据日志中的名称也随之调整,如图369所示。 图369Signal Tap Logic Analyzer主窗口(2) 3. 添加需要观测的信号 在信号节点列表区(signaltap_MUX4to1)的空白处双击,弹出Node Finder对话框。先单击按钮展开Options选项,然后在Filter下拉列表中选择Design Entry(all names),单击List按钮列出电路中所有模块的对外端口,如图370所示。 单击Matching Nodes列表中的MUX4to1: inst1左侧的展开,分别将数据选择器的4路输入数据d0、d1、d2、d3和2位地址a以及输出y添加到Nodes Found列表,作为需要观测的信号,如图371所示。 单击图371中的Insert按钮将需要观测的信号添加到信号列表区,如图372所示。注意,不要添加多余的节点到信号列表区,因为添加过多的信号会导致Signal Tap Logic Analyzer占用更多的FPGA资源,可能会导致编译失败。 节点列表中的Data Enable和Trigger Enable复选框栏用于启用或禁用已加入节点列表中相关信号的使用。如果禁用Data Enable,则Signal Tap Logic Analyzer不会采集相应的信号。如果禁用Trigger Enable,则相应的信号不用作触发条件定义。利用这些选项有助于减少逻辑分析仪所占用的资源。 图370模块的对外端口 图371添加观测节点 图372待测节点列表 触发条件(Trigger Conditions)有Basic AND、Basic OR、Comparison和Advanced 4个选项。Basic用于为单个信号设置触发模式,其中Basic AND表示选定触发级数的所有信号相与的结果为真时,逻辑分析仪开始捕捉数据。如果需要将观察信号的不同组合作为触发条件,则应选择Advanced,并且需要为逻辑分析仪定义触发条件表达式。 4. 配置采样参数 信号添加完成后,还需要配置Signal Tap Logic Analyzer的采样参数,指定采样时钟和设置采样深度。对于更深层次的应用,还需要设置触发流控制、触发位置设置和触发条件等相关信息。 (1) 设置采样时钟。在信号配置区,单击Clock文本框右侧的浏览按钮,在弹出的Node Finder对话框中单击List按钮,列出工程中所有节点。展开锁相环PLL_for_MUX4to1_tst: inst,将输出c4添加到Nodes Found列表中,如图373所示。单击OK按钮,即指定Signal Tap Logic Analyzer的采样时钟来自锁相环PLL_for_MUX4to1_tst的c4输出的100MHz信号。 图373设置采样时钟 (2) 设置采样深度。在信号配置区中Data区域Sample depth下拉列表中选择采样深度,如图374所示。采样深度决定了采样信号存储数据量的大小,应根据采样条件和被测信号的数量决定,同时受FPGA内部RAM资源量的限制。采样深度确定之后,所有待测信号都获得同样的采样深度。 当选择采样深度为2k(2000个采样点)时,在时钟频率为100MHz(周期为10ns)的情况下,每次采样时长为2000×10ns=20μs。因此,4路输入数据d0、d1、d2、d3为4MHz、3MHz、2MHz和1MHz的情况下,每次分别采样80、60、40和20个数据周期,能够满足分析要求。 图374设置采样深度 对于复杂的工程测试,还可以设置Trigger区域中的触发流控制、触发位置、触发级数、触发信号和触发方式等相关参数,以控制数据采集过程。 (1) 触发流控制(Trigger flow control)有顺序(Sequential)和状态机(Statebased)两个选项。其中,Sequential表示按顺序计算所有的触发条件,即当一个触发条件满足后,判断第2个触发条件是否满足,依此类推,当所有的条件都满足时触发采集过程; Statebased 表示应用状态机指定触发顺序,适用于较为复杂的触发控制。 Signal Tap Logic Analyzer默认选择顺序控制,如图374所示。 (2) 触发位置(Trigger position)下拉列表用于设置触发位置,以确定触发位置前后应采集的数据量。其中,Pre trigger position表示前点触发,保存触发前后12%和88%的数据信息; Center trigger position表示中点触发,保存触发前后各50%的数据信息; Post trigger position表示后点触发,保存触发前后88%和12%的数据信息。 Signal Tap Logic Analyzer默认选择前点触发,如图374所示。 (3) 触发级数(Trigger conditions)下拉列表用于设置触发级数,共有10级选项。在多级触发中,逻辑分析仪首先对第1级触发条件进行测试。当第1级触发表达式为真(TRUE)时,开始对第2级触发表达式进行测试。依此类推,直到完成所有触发级测试,并且最后一级触发条件测试结果为真时,逻辑分析仪开始捕获数据。 Signal Tap Logic Analyzer默认的触发级数为1,如图374所示。 (4) 选择触发信号和触发方式。若勾选Trigger in复选框,则应在Source栏中选择触发信号和触发电平,即当触发信号有效时,逻辑分析仪在采样时钟的作用下对待观测组中的信号进行单次或连续采样。 Signal Tap Logic Analyzer默认不勾选Trigger in复选框,如图374所示。 5. 保存逻辑分析仪文件 执行Signal Tap Logic Analyzer主界面中File→Save As菜单命令,修改Signal Tap Logic Analyzer默认的文件名stp1.stp为MUX4to1_tst.stp(.stp为逻辑分析仪文件扩展名),单击“保存”按钮,弹出如图375所示的添加逻辑分析仪文件提示框。单击Yes按钮,表示重新编译时将Signal Tap Logic Analyzer文件(MUX4to1_tst.stp)集成于工程中一起编辑、综合与适配,以便将逻辑分析仪Signal Tap Logic Analyzer同硬件电路一起配置到FPGA芯片中。 图375添加逻辑分析仪文件提示框 如果单击No按钮,则需要手动设置Signal Tap Logic Analyzer。在Quartus Prime主界面中执行Assignments→Settings菜单命令,在弹出的Settings对话框的Category列表中选择Signal Tap Logic Analyzer,单击Signal Tap File name文本框右侧的浏览按钮,在弹出的对话框中选择已经保存的逻辑分析仪文件(MUX4to1_tst.stp)添加到工程中,并勾选Enable Signal Tap Logic Analyzer复选框,如图376所示,单击OK按钮返回。 图376逻辑分析仪设置 6. 重新编译和配置 单击按钮对工程重新进行编译、综合与适配,将逻辑分析仪嵌入应用工程。 编译、综合与适配过程完成后,需要将MUX4to1_tst.sof文件配置到FPGA中。如果连接好硬件后没有自动检测到USBBlaster,则需要手动设置USBBlaster。单击图377中的Setup按钮,在Hardware下拉列表中选择USBBlaster [USB0]。 图377硬件连接设置 单击图377中的浏览按钮,在目前工程目录output_files子目录下选中新生成的文件MUX4to1_tst.sof,再单击按钮进行配置。完成后,可以看到例化管理器Instance Manager右侧提示为Ready to acquire,如图378所示,表示可以进行在线测试了。 图378配置完成后的例化管理器窗口 7. 启动逻辑分析仪进行测试 设置开关SW1和SW0均为低电平(a=00),单击例化管理器中的按钮(或者执行Processing→Run Analysis菜单命令或按F5快捷键)启动Signal Tap Logic Analyzer进行单次数据采集,得到的信号波形如图379所示,可以看到输出y的波形与数据d0的波形一致。 图379a=00时的测试波形图 分别设置开关SW1和SW0为01、10和11,然后单击例化管理器中的按钮启动Signal Tap Logic Analyzer进行数据采集。得到的信号波形分别如图380~图382所示,可以看到4选1数据选择器的实际工作情况与逻辑功能相同。 图380a=01时的测试波形图 图381a=10时的测试波形图 图382a=11时的测试波形图 另外,还可以单击例化管理器中的按钮(或者执行Processing→AutoRun Analysis菜单命令或按F6快捷键)进行连续测试,这时Signal Tap Logic Analyzer将实时采集和显示信号的波形,拨动SW1和SW0开关改变数据选择器的地址就可以观察到输出y的实时变化。单击按钮(或者执行Processing→Stop Analysis菜单命令或按Esc键),Signal Tap Logic Analyzer将停止数据采集。 测试完成后,需要从工程中移除Signal Tap Logic Analyzer时,在图376所示的设置界面中取消勾选Enable Signal Tap Logic Analyzer复选框,重新进行编译与综合后即可移除逻辑分析仪。 3.5 微课视频 3.5数字频率计的设计——基于原理图方法 本节应用原理图方法设计数字频率计,一方面是为了与数字电路课程相衔接,使只掌握了原理图设计方法的读者能够在电子技术课程设计和电子竞赛等实践环节中应用EDA技术设计中小规模数字系统; 另一方面是为了与第4章应用Verilog HDL描述的方法进行比较,以体现应用HDL设计数字系统的优越性。 设计任务: 设计能够测量1Hz~100MHz信号频率的数字频率计,应用8位数码管显示测频结果,要求测量误差不大于±1Hz。 分析: FPGA内部逻辑单元的传输延迟时间很短,基于FPGA设计的频率计很容易测量100MHz及以上信号的频率(将在7.3节静态时序分析中进行验证)。要求测量误差不大于±1Hz时,在闸门信号作用时间为1s的情况下,测量1Hz~100MHz信号的频率需要应用108进制计数器进行计数。 直接测频法的原理电路如图11所示。当计数器带有计数允许控制端(如74HC160的EP)时,原理电路中的与门可以省略。另外,为了能够连续测量信号的频率,还需要在原理电路的基础上设计主控电路,在时钟脉冲的作用下,循环对计数器清零、开启闸门和刷新显示3项任务。 能够实现连续测频的频率计总体设计方案如图383所示,其中FX为被测信号。主控电路输出的CLR′为清零信号,用于将计数器清零; CNTEN为闸门信号,用于控制计数器在固定的时间范围内对CLK进行计数; DISPEN为显示刷新信号,用于控制锁存译码电路刷新测量结果。如果被测信号为正弦波,那么还需要将被测信号FX经过放大整形为脉冲信号后作为测频计数器的时钟。放大与整形电路属于模拟和模数混合电路,在此不再复述。 图383数字频率计总体设计方案 设计过程: 从设计方案可以看出,数字频率计主要由主控电路、计数、锁存与显示译码电路和分频器构成。 1. 计数、锁存与显示译码电路设计 要求测量信号频率为1Hz~100MHz时,需要应用108进制计数器进行计数,驱动8位数码管显示频率值。108进制计数器需要从Quartus Prime图形符号库中调用8个十进制计数器74160级联构成。 CD4511是带有锁存功能的BCD显示译码器,因此锁存与译码电路基于CD4511设计最方便。但遗憾的是,Quartus Prime提供的图形符号库中没有CD4511,因此只能调用库中提供的BCD显示译码器7448设计。 由于7448没有锁存功能,为了能够锁存测量结果,还需要在每个计数器74160和显示译码器7448之间插入4位D锁存器(如7475)以锁存需要显示的BCD码。另外,由于DE2115开发板应用共阳数码管显示,因此基于DE2115实现频率计时,还需要在7448的每个输出端加上反相器将高电平有效的驱动信号转换为低电平有效,以适应驱动共阳数码管的要求。 综上分析,BCD码计数、锁存与显示译码电路如图384所示。 图384BCD码计数、锁存与显示译码电路 图385计数、锁存与显示译码 模块图形符号 为了使顶层设计电路简洁清晰,将图384所示的计数、锁存与显示译码电路通过Files→Create∠Update→Create Symbol Files for Current File菜单命令封装成如图385所示的图形符号BCD_CNT_LE_7SEG,以便在顶层设计电路中调用。 2. 主控电路设计 主控电路用于产生周期性的清零信号、闸门信号和显示刷新信号。 用十进制计数器74160作为主控器件,取时钟为8Hz时,测频计数器的清零信号CLR′、闸门信号CNTEN、显示刷新信号DISPEN与主控计数器的输出Q3Q2Q1Q0之间的时序关系设计如表35所示。其中,清零信号的作用时间为1/8s; 闸门信号CNTEN的作用时间为1s; 显示刷新信号作用时间为1/8s。 表35主控电路功能表 CLKQ3Q2Q1Q0状态CLR′CNTENDISPEN 10000P0000 20001P1110 30010P2110 40011P3110 50100P4110 60101P5110 70110P6110 80111P7110 91000P8110 101001P9101 由表35可以写出3个控制信号的逻辑函数表达式,如下所示。 CLR′=P′0=(Q′3Q′2Q′1Q′0)′=Q3+Q2+Q1+Q0 CNTEN=(P0+P9)′=CLR′·DISPEN′ DISPEN=P9=C 其中,C为计数器74160的进位信号。 由上述函数式设计出的主控电路如图386所示,其中,74175用于将清零信号、闸门信号和显示信号锁存后输出,以避免组合逻辑输出所产生竞争冒险现象,从而提高频率计工作的可靠性。 图386主控电路设计图 执行Files→Create∠Update→Create Symbol Files for Current File菜单命令,将主控电路封装成如图387所示的图形符号Freqer_CTRL,以便在顶层设计电路中调用。 图387主控电路图形符号 3. 分频器设计 分频器用于为主控电路提供8Hz的时钟脉冲。 将DE2115开发板50MHz晶振信号分频为8Hz时,需要应用分频系数为50×106/8=6250000的分频器。直接应用原理图设计如此大分频系数的分频器时,电路规模相当复杂。 为了简化分频电路设计,先定制锁相环(ALTPLL)将50MHz的晶振信号分频为10kHz,然后再应用分频系数为10×103/8=1250的分频器将10kHz降为8Hz。 锁相环的定制方法和具体步骤将在5.2节中讲述。 分频系数为1250的分频器应用1250/2=625进制计数器级联一位二进制计数器实现,如图388所示。其中,625进制计数器每经过625个脉冲输出一个进位信号,驱动一位二进制计器翻转输出8Hz方波。 图388分频系数为1250的分频器 图389分频器图形符号 执行Files→Create∠Update→Create Symbol Files for Current File菜单命令,将图388所示的分频器封装成如图389所示的图形符号FP10k_8Hz,以便在顶层设计电路中调用。 4. 顶层电路设计 频率计顶层电路是基于图383所示的设计方案,应用已经封装好的分频器,主控电路,计数、锁存与译码显示电路,以及定制的锁相环搭建而成,如图390所示。为了节约篇幅,顶层设计电路只连接了4组计数、锁存与显示译码模块,所以当闸门作用时间为1s时,能够测量信号的最高频率为10kHz。将顶层电路中的计数、锁存与显示译码电路扩展为6组时,能够测量信号的最高频率为1MHz,而设计测频范围为1Hz~100MHz的频率计需要将4组计数、锁存与显示译码电路扩展为8组才能实现。 图390频率计顶层设计电路 需要说明的是,图390中的D触发器部分为超量程指示电路。当待测信号的频率超出测量范围时,D触发器输出周期性脉冲,驱动外接的发光二极管OVLED闪烁,指示信号频率已经超出了测量范围。 另外,将测频信号的输入端(FX1_100MHz)连接到开发板50MHz晶振的输出端时,可以测试频率计功能的正确性。 对于应用数码管显示信息的多I/O端口数字系统,建议编写Tcl文件进行引脚锁定,以便可以在含有数码管的应用系统中重复使用。 驱动8位数码管显示信号频率的频率计Tcl文件内容参考如下。 #freqor_sch.tcl #freqor pin setting set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF set_location_assignment PIN_AG14 -to FX1_100MHz set_location_assignment PIN_Y2 -to OSC50MHz set_location_assignment PIN_AA14 -to D7_Gn set_location_assignment PIN_AG18 -to D7_Fn set_location_assignment PIN_AF17 -to D7_En set_location_assignment PIN_AH17 -to D7_Dn set_location_assignment PIN_AG17 -to D7_Cn set_location_assignment PIN_AE17 -to D7_Bn set_location_assignment PIN_AD17 -to D7_An … set_location_assignment PIN_H22 -to D0_Gn set_location_assignment PIN_J22 -to D0_Fn set_location_assignment PIN_L25 -to D0_En set_location_assignment PIN_L26 -to D0_Dn set_location_assignment PIN_E17 -to D0_Cn set_location_assignment PIN_F22 -to D0_Bn set_location_assignment PIN_G18 -to D0_An Tcl文件编写完成后,按3.1.4节所述方法完成频率计引脚的锁定。 将计数、锁存与显示译码电路扩展为8组(能够测量100MHz信号的频率)时,频率计顶层工程综合与适配的结果如图391所示。可以看出,频率计共使用了733个逻辑单元(Logic Elements)、458个寄存器(Registers)、512位片内存储资源(Memory Bits)和一个锁相环(PLL)。 图391频率计综合与适配结果 本章小结 本章讲述Intel公司的EDA综合开发环境Quartus Prime的基本应用,包括基本设计流程、原理图设计方法、仿真分析方法以及逻辑分析仪的应用。 Quartus Prime能够完成建立工程,设计输入,编译、综合与适配,引脚锁定,以及编程与配置的全部设计流程,同时还可以根据需要进行仿真分析,以及在工程中嵌入逻辑分析仪进行在线测试。 Quartus Prime支持硬件描述语言、原理图和状态机等多种输入方式,能够生成和识别EDIF网表文件和HDL网表文件,同时支持第三方工具软件,使设计者可以在设计流程的各个阶段能够根据需要选用更为专业的工具软件。 Verilog HDL支持层次化设计方法。底层模块建议应用HDL描述,以方便模块功能的定义和重构。顶层设计电路既可以应用模块例化方式描述各模块之间的连接关系,也可以应用传统的原理图方法设计顶层电路。 受到Quartus Prime提供的原理图库中器件功能的限制,应用原理图设计数字系统既不利于优化设计,也不利于系统功能的重构。但是,原理图设计方法具有直观形象的优点。 仿真分析是通过计算机算法模拟代码的运行检查描述代码的逻辑是否正确,分为功能仿真和时序仿真两种类型。功能仿真是指在不考虑器件的传输延迟时间和布线延迟时间情况下的理想化仿真; 而时序仿真是指在完成布局布线之后进行,包含了器件传输延迟和布线延迟信息的仿真。 Signal Tap Logic Analyzer是集成于Quartus Prime开发环境中的逻辑分析仪。设计者可以将Signal Tap Logic Analyzer嵌入设计电路,然后一起配置到可编程逻辑器件中。Signal Tap Logic Analyzer能够在电路工作期间实时捕获内部节点的信号或总线上的信息流,然后通过JTAG接口将采集到的数据传输给Quartus Prime开发环境显示电路内部节点的信号波形或总线上的数据信息,以供设计者进行分析。 思考与练习 31简述在Quartus Prime开发环境下进行EDA设计的基本流程。 32已知4线16线的译码器74LS154的两个功能端S′A和S′B均为低电平时,译码器正常工作,将输入的4位二进制码A3A2A1A0翻译成低电平有效的输出信号Y′0~Y′15; 否则译码器不工作,输出全部强制为高电平。 在Quartus Prime开发环境下应用Verilog HDL描述74LS154并进行仿真验证,然后下载到开发板进行功能测试。 33已知8选1数据选择器74HC151的功能端S′为低电平时,数据选择器正常工作,根据地址码A2A1A0的不同从8路输入数据D0~D7中选择其中一路输出; 否则数据选择器不工作,输出强制为低电平。 在Quartus Prime开发环境下应用Verilog HDL描述74HC151并进行仿真验证,然后下载到开发板进行功能测试。 34应用原理图设计方法将两片十进制加/减计数器74192扩展为一百进制加/减计数器并进行仿真验证,然后下载到开发板进行功能测试。 35在Quartus Prime开发环境下,应用testbench对例226中的4选1数据选择器进行仿真验证。 36在Quartus Prime开发环境下,应用testbench对例227中的4位计数器进行仿真验证。 37完成3.5节数字频率计的设计。下载到开发板进行功能测试。 38*应用原理图方法设计数码序列控制电路。具体要求如下: (1) 在单个数码管上依次显示自然数序列(0~9)、奇数序列(1、3、5、7 和 9)、音乐符号序列(0~7)和偶数序列(0、2、4、6 和 8); (2) 加电后先显示自然数序列,然后按上述规律循环显示。 在Quartus Prime开发环境下完成设计,并下载到EDA开发板进行功能测试。 39*应用原理图方法设计洗衣机定时控制器。具体要求如下: (1) 洗涤时间以分钟为单位,可以在 1~99min任意设置; (2) 用两位数码管显示洗涤剩余时间; (3) 开机后按“停10s→正转20s→停10s→反转20s”的模式循环运转; (4) 洗涤时间到后洗衣机停止工作,同时发出光电信号和音频信号提醒用户注意。 在Quartus Prime开发环境下进行设计,并下载到EDA开发板进行功能测试。 提示: 用开发板上的数码管显示洗涤剩余时间,用3个LED表示洗衣机的工作状态。