第4章 QuartusⅡ应用指南
4.1 VHDL文本输入设计流程 4.2 原理图输入设计方法 习题 目 录
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 基于EDA技术进行电子系统设计,需要运用EDA工具如综合器、适配器、时序仿真器、编程器等对设计进行处理和下载,才能最终在CPLD/FPGA中形成硬件系统,这一流程随着设计的表达与输入方式的不同而不同,在文本输入、原理图输入、状态图输入、波形图输入、MATLAB的模型输入以及混合输入等众多方式中,以文本输入、原理图输入方式最为方便和常用。 本章基于QuartueⅡ9.0介绍一个设计实例的VHDL文本输入设计流程,包括设计输入、综合、适配、仿真测试和编程下载等;其间还介绍QuartusⅡ9.0包含的部分测试手段。最后在文本输入法的基础上介绍原理图输入设计法。 4.1 VHDL文本输入设计流程 本节以十进制计数器设计为例,通过该设计实现的流程,介绍QuartusⅡ的重要功能和具体实现步骤。
第4章 QuartusⅡ应用指南 4.1.1 建立工程文件夹和编辑文本 4.1 VHDL文本输入设计流程 4.1.1 建立工程文件夹和编辑文本 在设计之初,要为该项设计建立专门的文件夹,用以存放与此设计相关的所有设计文件,这些文件都将被EDA软件默认纳入工作库(Work Library)。 建议文件夹与EDA软件并列放置在同一个根目录下,文件夹中的文件不要直接放在安装目录中。文件夹名不能用中文和数字而要采用英文字母,否则在后面的步骤中,有的环节中可能显示找不到该文件夹中的内容。这里假设十进制计数器设计的文件夹取名为ZJ,路径为D:\ZJ。 接下来,首先输入源程序。打开QuartusⅡ9.0,单击菜单File→New。在New 窗口的Design Files中选择编译文件的语言类型,这里选择“VHDL File”,如图4.1所示。单击OK,然后在出现的VHDL文本编译窗口输入十进制计数器程序。也可以不必单击菜单File而进入文本编辑窗口,而是单击按钮 ,将更加快捷。 省略不写,但在软件工具MAX+plusⅡ中,vhd不能省略)。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.1选择编辑文件的语言类型 然后进行文件存盘。选择File→Save As命令,找到已建立的文件D:\ZJ,将设计的文本文件进行保存,要求存盘的文件名必须和实体名一致,即为cnt10(QuartusⅡ9.0中,此处后缀vhd为默认,可省略不写,但在软件工具MAX+plusⅡ中,vhd不能省略)。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 当出现问句Do you want to create...时,若单击yes按钮,则直接进入创建工程流程。若单击No按钮,可按以下的方法进入创建工程流程。前者是在初次设计时出现的,当做过几次编译、仿真,这个问句将不会出现,这时需要按照4.1.2节的指示来进行文本输入之后的流程。 4.1.2 创建工程 单击File→New Project Wizard,为工程进行编译前的设置即创建一个工程,包括指定工作目录、分配工程名称以及指定最高层设计实体的名称、选定综合器、仿真器以及该项目的目标器件系列和具体器件等。具体步骤如下:
第4章 QuartusⅡ应用指南 1.指定该设计为一个新工程 4.1 VHDL文本输入设计流程 1.指定该设计为一个新工程 选择菜单File→New Preject Wizard命令,即弹出 “工程设置”对话框,如图4.2所示。 图4.2利用New Preject Wizard创建工程cnt10 图中第一行的D:/ZJ/表示工程所在的工作库文件夹;第二行的cnt10表示此项工程的工程名,即顶层文件的实体名;第三行是当前工程顶层文件的实体名,这里即为cnt10。
第4章 QuartusⅡ应用指南 2.将设计文件添加到工程中 4.1 VHDL文本输入设计流程 2.将设计文件添加到工程中 继续单击下方的Next按钮,在弹出的对话框中单击File栏的“...”按钮,将与工程相关的VHDL文件添加入此工程,接下来的编译和适配/布线工作将以此设计文件为目标文件加以展开,界面如图4.3所示。添加工程文件的方法有两种: 第一种方法是单击Add All按钮,将设定的工程目录中的所有VHDL文件加入到工程文件栏中;第二种方法是单击Add按钮,从工程目录中选出相关的VHDL文件。 3.选择仿真器和综合器类型 单击Next按钮,这时弹出的窗口是选择仿真器和综合器类型,如果都选“None”,表示都选QuartusⅡ中自带的仿真器和综合器,在此都选择默认的“None”。
第4章 QuartusⅡ应用指南 4.选择目标芯片 4.1 VHDL文本输入设计流程 4.选择目标芯片 单击Next按钮,选择目标芯片。首先在Family栏选芯片系列,在此选Cyclone系列,然后进一步选择该系列的芯片EP1C3T144C8。这里EP1C3表示Cyclone系列及此器件的规模;T表示TQFP封装;C8表示速度级别。便捷的方法是通过图4.4所示窗口右边的3个窗口 精选:分别选择Package(封装)为TQFP;Pin为144;Speed为8,则符合条件的芯片骤然减少,EP1C3T144C8清晰地显露出来。 图 4.4选择目标器件EP1C3T144C8 图4.3将相关文件加入工程
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 5.结束设置 单击Next按钮,弹出的窗口为“工程设置统计”,上面列出了此项工程相关设置情况。最后单击Finish按钮,即对新工程进行了必要的设置,并出现cnt10的工程管理窗,或称Compilation Hierarchish 窗口,主要显示本工程项目的层次结构和各层次的实体名。 4.1.3全程编译 全程编译(Compilation)是QuartusⅡ对设计输入的多项处理操作,包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成以及基于目标器件的工程时序分析等,QuartusⅡ编译器是一个集成工具,由一系列处理模块构成的,这些模块负责对设计项目完成上述处理。全程编译的启动命令是Processing菜单Start Compilation。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 编译器首先检查出工程设计文件中是否存在语法和设计规则的错误,编译信息显示在工程管理窗下方的Processing栏中,如图4.5所示。 对于错误信息,可双击此条文,界面会立即跳转到VHDL源代码编辑窗口,并用深色标记条表示代码错误之处,修改代码然后保存(必须经过保存,才能将错误设计修改更新,编译器才能对新设计进行新一轮检查,否则编译对象仍为错误设计),再次编译直至排除所有错误。 注意,如果发现多处报错,则必须先纠正第一条错误,因为很多错误都是由第一条错误引起的,有时随着第一个错误的纠正,多条报错会立即消失。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.5全程编译后出现报错信息
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 如果编译成功,可以见到图4.6所示的工程管理窗口,该窗口的左上角显示了工程cnt10的层次结构、模块耗用的逻辑宏单元数以及所用引脚数,在此栏下是编译处理信息,中栏(Compilation Report栏)是编译报告项目选择菜单,点击其中各项可以详细了解编译与分析结果。 单击Timing Analyzer项的“+”号,则能通过点击以下列出的各项目,看到当前工程所有相关时序特性报告。 单击Fitter项的“+”号,则能通过单击以下列出的各项看到当前工程所有相关硬件特性适配报告,如其中的Floorplap View,可观察此项工程在EPGA器件中逻辑单元的分布情况和使用情况。 为了更详细地了解相关情况,可以打开Floorplan窗,选择View菜单中的Full Screen项,打开全部界面,再单击此菜单的相关项,如Routing→Show Node Fan-In等。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.6 编译成功的工程管理窗口
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 4.1.4时序仿真 编译器的纠错功能主要体现在VHDL语法规则方面,至于该设计是否达到预设要求,还需要对设计进行仿真测试,在此主要介绍时序仿真即波形仿真测试的流程。 1.打开波形编译器 选择菜单File中的New项,在New窗口选择Other Files中的Vector Wavefrom File如图4.7所示。 图4.7选择编辑矢量波形文件
第4章 QuartusⅡ应用指南 单击OK按钮,即出现空白的波形编译器,如图4.8所示。 4.1 VHDL文本输入设计流程 图4.8波形编辑器
第4章 QuartusⅡ应用指南 2.设置仿真时间区域 4.1 VHDL文本输入设计流程 2.设置仿真时间区域 仿真的时间区域设置合理与否甚至关系到仿真结果能否正常得出,所以有时即使设计正确,也由于没有仿真结果而误判设计的正确性。但是仿真时间区域设置越长,仿真速度越慢,所以恰当设定仿真时间区域很重要。 设置仿真时间区域的方法是在Edit菜单中选择End Time 项,在弹出的窗口中的Time栏处输入数值,选择时间单位,完成整个仿真域的时间设定如图图4.9所示,单击OK按钮,结束设置。 图4.9设置仿真时间长度
第4章 QuartusⅡ应用指南 3.设置要测试的端口节点 4.1 VHDL文本输入设计流程 3.设置要测试的端口节点 第一种方法是,选择View菜单中的Utility Windows 项的Node Finder 选项。弹出的对话框如图4.10所示,在Filter框中选Pins:all(通常已默认选此项),然后单击List按钮,于是在下方的Nodes Found窗口中出现设计中的cnt10工程的所有端口引脚名。如果此对话框中的List没有出现cnt10工程的端口引脚名,则需要重新编译一次。 图4.10 工程文件cnt10的端口节点
第4章 QuartusⅡ应用指南 第二种方法也是更快捷的方法是,在图4.8的Name栏中空白处,直接双击左键,出现图4.11所示对话框。 4.1 VHDL文本输入设计流程 第二种方法也是更快捷的方法是,在图4.8的Name栏中空白处,直接双击左键,出现图4.11所示对话框。 图4.11设置测试端口节点的快捷方法
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 单击Node finder...按钮,弹出Node finder窗口,选择Pins:all,单击右上角List按钮,同样出现了工程文件cnt10的端口节点,如图4.12所示。 图4.12 快捷方式下的端口节点窗口
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 选择要观测的节点,单击按钮 将节点送入Selected Nodes栏中,或者用 按钮一次将列表中的所有端口节点移送到Selected Nodes栏中。将选错的节点送还Nodes Found栏则单击按钮 或 。观测节点选好后,单击OK按钮,进入如图4.13所示的端口节点赋值窗口。 图4.13端口节点赋值窗口
第4章 QuartusⅡ应用指南 4.输入端口的赋值设置 4.1 VHDL文本输入设计流程 4.输入端口的赋值设置 仿真测试是在输入端口将数据引入电路,观察输出端口逻辑电平的波形表现,进而测试所设计的电路是否达到设计要求,因而输入数据的所有赋值可能均应考虑在内,才能全面测试电路性能。 常见的输入端口的赋值有时钟信号赋值、数据总线赋值。在对输入端口赋值之初,首先检查对齐栅格按钮 是否弹起,如果该按钮一直按下,则选定输入端口的区域一定是栅格的整数倍,不能随意设定赋值长度,这一点很不方便,所以赋值之前需要将该按钮弹起。 1)给时钟信号CLK赋值,单击图4.13所示窗口的时钟信号名CLK,使之变成蓝色条,再单击左列的时钟设置按钮 ,在Clock设置窗口中设定CLK的时钟周期10ns,设置占空比Duty cycle为50%(默认值即为50%),如图4.14所示。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.14设置时钟CLK的周期与占空比
第4章 QuartusⅡ应用指南 然后再设置CLR的电平,输入信号赋值波形如图4.15所示。 图4.16 总线数据格式设置对话框 第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 然后再设置CLR的电平,输入信号赋值波形如图4.15所示。 图4.15 输入信号赋值波形 2)给数据总线赋值虽然本设计没有涉及,但是在其它设计中常常会遇到,赋值方法是单击图4.13左侧赋值按钮区域的总线赋值按钮 ,弹出总线数据格式设置对话框如图4.16所示。 图4.16 总线数据格式设置对话框
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 对话框的Radix栏对总线数据格式有多种选择,如二进制、十六进制、无符号十进制、八进制、ASCII等格式,这里可选择二进制Binary格式,Increment by栏如果设置为1,则在选定的信号赋值时间区间里,每个栅格的所赋之值自动增1,如图4.17所示。如果不需要自动增1,则将Increment by栏的值改为0。 图4.17 每个栅格的赋值自动增1
第4章 QuartusⅡ应用指南 5.保存输入赋值设置 4.1 VHDL文本输入设计流程 5.保存输入赋值设置 保存波形文件.vwf起名为cnt10.vwf,这里要求波形文件名与设计实体名称一致,保存的位置为默认。 6.仿真器参数设置 选择菜单Assignment中的Settings,在Settings弹出的窗口中选择Category→Fitter Settings→Simulator,在右侧的Simulaton项下选择Timing,即选择时序仿真,并选择仿真文件名cnt10.vwf。设置毛刺检测Glith detection为Always模式即始终检测;选中Run simualtion until all vrctor stimuli are used即全程仿真;选择功耗估计Power Estimation进行相应设置。仿真器参数设置如图4.18所示。 7.启动仿真器,观察仿真结果 所有设置工作进行完毕,在菜单Processing项下选择Start Simulation,或者单击快捷键钮 ,启动仿真直到出现Simulaton was successful,说明仿真成功,cnt10的仿真波形如图4.19所示。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.18 仿真参数设置
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.19 cnt10的仿真波形
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 如果在启动仿真后,并没有出现仿真完成后的波形图,而是出现文字Can’t open Simulation Report Window,但报告仿真成功,则可自己打开仿真波形报告,选择Processing→Run Simulation。 如果无法展开波形显示时间轴上的所有波形图,可以在波形编辑窗中任何位置单击右键,在弹出的窗口中选择Zoom选项,在出现的下拉菜单中选择Fit in Window或者zoom In、zoom Out对图形进行缩放,如图4.20所示。也可以直接用缩放的快捷按钮 来完成,先左键单击该按钮,如果继续左键单击,则放大图形,右键单击则缩小图形。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.20 波形图的缩放
第4章 QuartusⅡ应用指南 4.1.5 应用网络列表观察器 4.1 VHDL文本输入设计流程 4.1.5 应用网络列表观察器 选择Tools菜单中Net list Viewers,下拉菜单中有RTL Viewer(RTL电路图)、State Machine(状态机)、Technology Map Viewers(电路结构原理图)等选项。 1.观察RTL电路图 QuartusⅡ可生成RTL电路图,它是与硬件描述语言或网表文件(VHDL、VERILOG、BDF、TDF、EDIF、VQM)相对应的寄存器级的图形。选择Tools菜单中RTL Viewer项,可以打开cnt10工程各层次的RTL电路图,如图4.21所示。双击图形中有关模块,可逐层了解各层次的电路结构。 对于较复杂的RTL电路,可利用功能过滤器Filter简化电路。即用右键单击该模块,在弹出的下拉菜单中选择Filter项的Sources或Destinations,由此生产相应的简化电路。
第4章 QuartusⅡ应用指南 2.观察电路结构原理图 4.1 VHDL文本输入设计流程 图4.21 cnt10工程的RTL电路图 2.观察电路结构原理图 如果选择Tools菜单中的Technology map Viewer项,可以看到cnt10工程的电路结构原理图,如图4.22所示。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.22 cnt10工程的电路结构原理图 3.观察状态图 观察电路的寄存器级RTL图或电路结构原理图,并不是所有电路最适宜的观察点,例如采用状态机法完成的设计,最直观的观察途径是看它的状态图。选择State Machine Viewer项,能看到设计工程所生成的的状态图,如图4.23所示,从图中清晰地看到该状态机的状态数目以及各状态的因果关系和循环的轨迹。
第4章 QuartusⅡ应用指南 4.1.6 引脚锁定 为了能对此计数器进行硬件测试,应将其输入输出信号锁定在芯片确定的引脚上,编译后下载。 4.1 VHDL文本输入设计流程 图4.23 某状态机生成的状态图 4.1.6 引脚锁定 为了能对此计数器进行硬件测试,应将其输入输出信号锁定在芯片确定的引脚上,编译后下载。 在cnt10工程编译仿真成功的基础上,进行引脚锁定。选择Tools菜单中的Assignments项,进入如图4.24所示的Assignment Editor编辑器窗。在Category栏中选择Pin,或直接单击快捷Pin按钮,然后取消左上侧的Show assignments for specific nodes的选择勾。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.24 Assignment Editor编辑器 双击“To”栏的new,在出现的如图4.25所示的下拉栏中选择本工程要锁定的端口信号名;然后双击对应的Location栏的new,在出现的下拉栏中选择器件的引脚号,如CLR锁定为器件的引脚1即Pin_1。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.25 cnt10工程的引脚锁定 当设计中的引脚数目较少时,还可以用更直观的方法锁定引脚。选择菜单中Assignments中的Pins选项,弹出图形化的引脚锁定窗口,单击要锁定的端口名并用鼠标拖住,移到芯片引脚图中合适的引脚处(一定移至器件边框处,使箭头出现且边框处引脚位置变色,才算端口放置成功)。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 Assignment Editor窗口中还能对引脚做进一步的设定,如在I/O Standard栏,配合芯片的不同的I/O Bank上加载的VCCIO电压,选择每一信号的I/O电压;在Reserved栏,可对某些空闲的I/O引脚的电气特性作设置;而在SignalProbe...等选择栏,可对指定的信号作探测信号的设定。 最后,保存这些引脚锁定的信息后,必须再编译一次,才能将引脚锁定信息编译综合进编程下载文件中。此后就可以准备将编译生成的.Sof文件下载到实验系统的FPGA中去了。 4.1.7 基于USB Blaster编程下载器的配置文件下载 配置文件的下载方式最常用的有:用并口通信线连接PC机与实验开发系统实现下载、用USB Blaster下载器通过PC机的USB口实现下载。USB口下载更加便捷灵活,本章以Altera USB-Blaster编程下载器的使用为例,介绍配置文件下载的流程,包括安装USB驱动程序、选择编程方式和目标配置文件、设置编程器、配置文件下载与硬件测试。
第4章 QuartusⅡ应用指南 1.安装USB驱动程序 4.1 VHDL文本输入设计流程 1.安装USB驱动程序 将Altera USB-Blaster下载器与电脑USB口连接好,会弹出添加硬件对话框,选从列表或指定位置安装,选下一步按钮,不要搜索,再次单击下一步按钮,单击从磁盘安装,打开路径D:\altera\quartus60\drivers\usb-blaster下的usbblst.inf文件,选下一步,成功装载驱动程序。查看驱动是否成功安装,可以右键单击我的电脑→属性→硬件→设备管理器→通用串行总线控制器,如图4.26所示,如果见到“Altera USB-blaste”项,说明驱动安装成功,否则重新检查安装步骤或下载器、数据线等硬件设备。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 图4.26 下载驱动安装情况
第4章 QuartusⅡ应用指南 2.选择编程方式和目标配置文件 4.1 VHDL文本输入设计流程 2.选择编程方式和目标配置文件 用数据通信线将USB-Blaster下载器和实验开发系统连接好,打开电源。在菜单Tools中选择Programmer,弹出如图4.27所示窗口,出现所要下载的.Sof文件,仔细核对下载文件路径与文件名,如果没有出现此文件或有错,先单击Delete,删除错误文件,再单击左侧Add file按钮,手动选择配置文件cnt10.sof。 图4.27配置文件下载窗口
第4章 QuartusⅡ应用指南 在下载窗口的Mode栏中提供了四种编程模式,分别为JTAG、Passive Serial、 Active 4.1 VHDL文本输入设计流程 在下载窗口的Mode栏中提供了四种编程模式,分别为JTAG、Passive Serial、 Active Serial、 In-Socket。其中JTAG和Active Serial(AS)模式应用最多。 JTAG编程模式下载包括直接下载和间接下载,前者当系统断电,则所有数据会丢失,该编程下载模式的文件为sof格式。后者当系统断电,设计数据并不丢失,但是需要先将sof文件先转换成jic文件,然后再用FPGA的JTAG口下载。 Active Serial(AS)模式是通过FPGA的AS口对器件进行直接编程,系统数据掉电不丢。为了实现这一点,在下载配置文件的同时,该配置文件也烧写到一个配置芯片中,Cyclone/ CycloneⅡ系列芯片的专用配置器件为EPCSx,该模式下的配置文件格式为pof。本例选择编程模式为直接JTAG下载。
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 3.设置编程器 在下载之前,要保证能够检测到下载器的存在,否则无法下载,并且在下载窗口Hardware Setup栏显示No Hardware。设置下载器需要单击Hardware Setup按钮,在弹出的如图4.28的对话框中设置下载接口方式。 图4.28 设置编程下载器窗口
第4章 QuartusⅡ应用指南 4.1 VHDL文本输入设计流程 在Available hardware items栏中,双击自动出现的USB-Blaster,则Currently Selected hardware栏将出现USB-Blaster,单击按钮Close,设置好的窗口如图4.29所示。 图4.29 编程下载器设置为USB-Blaster
第4章 QuartusⅡ应用指南 4.配置文件下载 4.1 VHDL文本输入设计流程 4.配置文件下载 选择目标配置文件cnt10. sof,单击下载标符Start按钮,即进入对目标器件FPGA的配置下载操作。当Progress显示100%以及在底部的处理栏中出现Configuration Successded时,表示编程成功,如图4.30所示。 图4.30配置文件下载成功 5.硬件测试 成功下载cnt10.sof后,将计数输出通过显示译码,在实验系统的数码管中进行计数显示,观察计数器工作情况,如果能够完成0—9计数,说明设计成功。
第4章 QuartusⅡ应用指南 4.2 原理图输入设计方法 在进行设计时,如果系统功能编程描述繁琐,但是结构清晰、方便用常规元件实现时,常常选择原理图输入设计方法,或者设计者编程技术和硬件描述语言知识还不够完备时,也优先考虑这种设计方法。 与文本输入设计一样,原理图输入设计也能进行任意层次的数字系统设计,能对系统功能进行精确的时序仿真,通过仿真,能迅速纠错并且在线修改系统设计和升级系统功能。比文本输入更加优越的是,从原理图输入文件中能够对系统的结构和原理一目了然,便于对系统设计的检查和排错。但是,由于原理图输入窗口容量有限,很难容纳过多元件,所以复杂的、大型的系统设计不宜单一选用此种输入方式,如果原理图输入与文本输入相结合,就能够扬长避短,集中二者的优势,使得设计变得更加易于实现。
第4章 QuartusⅡ应用指南 4.2 原理图输入设计方法 QuartusII为原理图输入设计提供了操作更为灵活的原理输入设计功能,同时还配备了更丰富的适用于各种需要的元件库,如基本门电路、基本触发器、几乎所有74系列的器件以及类似于IP核的参数可设置的宏功能模块LPM库(包括LPMROM、LPMRAM、LPMPLL等)。 本节以1位全加器为例介绍原理图输入的设计方法,同时介绍原理图输入与文本输入相结合的方法。1位全加器可以用两个半加器以及一个或门连接而成,因此将半加器的设计做为底层设计。事实上,除了最初的输入方法稍有不同外,主要流程与前面介绍的VHDL文本输入法完全一致。 4.2.1输入设计项目和存盘 假设本项设计的文件夹取名为adder,路径为D:\adder。
第4章 QuartusⅡ应用指南 1.进入原理图输入编辑窗口 4.2 原理图输入设计方法 1.进入原理图输入编辑窗口 打开Quartus II,选菜单 File→New,在弹出的New对话框中选择Device Design Files页的原理图文件编辑输入项 Block Diagram/Schematic File,按OK按钮后,将进入如图4.31所示的原理图编辑窗口。 图4.31 原理图输入编辑窗口
第4章 QuartusⅡ应用指南 2.半加器设计——底层设计 4.2 原理图输入设计方法 2.半加器设计——底层设计 在图4.31所示的编辑窗口中的任何一个位置上双击左键,将出现Quartus II软件自带的元件库,如图4.32所示,或者单击左栏工具按钮 也可以。 图4.32 Quartus II提供的元件库
第4章 QuartusⅡ应用指南 4.2 原理图输入设计方法 单击元件库文件夹前的“+”号,打开others文件夹,选中需要的元件,双击该元件即可将元件调入原理图编辑窗口中。或者在窗口左下角的Name中,输入元件名称然后单击OK也可以,元件调用窗口如图4.33所示。 图4.33元件调用窗口
第4章 QuartusⅡ应用指南 4.2 原理图输入设计方法 半加器的设计需要调入元件and2、not、xnor和输入输出引脚input和output,输入输出引脚input和output分别接于元件的端口处,各部分连线后,分别在input 和output的Pin name上双击,现如图4.34所示的对话框,分别输入各引脚名:a、b、co和so。 图4.34 修改端口名称
第4章 QuartusⅡ应用指南 半加器的内部逻辑图如图4.35所示。 3. 原理图文件保存 4.2 原理图输入设计方法 半加器的内部逻辑图如图4.35所示。 图4.35半加器内部逻辑图 3. 原理图文件保存 选择菜单File→Save As,将已设计好原理图文件取名为h_adder.bdf(注意默认的后缀名是.bdf),并保存在刚才为自己的工程建立的D:\adder文件夹内。原理图文件的存盘名称没有限制,以能够表达设计的功能和含义为最好。
第4章 QuartusⅡ应用指南 4.2.2将底层设计设置成可调用的元件 4.2 原理图输入设计方法 4.2.2将底层设计设置成可调用的元件 为了构成全加器的顶层设计,必须将底层设计设置成可调用的元件。这种方法也是原理图输入时节约画图空间的有效办法。 1.将原理图设计设置成元件 在打开半加器原理图文件h_adder.bdf的情况下,选择菜单File→Create/Update→Create Symbol Files for Current File项,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待在高层次设计中调用。h_adder.bdf生成的元件符号图、半加器时序仿真波形分别如图4.36、4.37所示。 图4.36 h_adder.bdf的元件符号图 图4.37 半加器时序仿真波形
第4章 QuartusⅡ应用指南 2.将VHDL文本设计设置成元件 4.2 原理图输入设计方法 2.将VHDL文本设计设置成元件 使用完全相同的方法也可以将VHDL文本文件变成原理图中的一个元件符号,实现VHDL文本设计与原理图设计的混合输入。转换中需要注意的是,必须以文本设计编译通过为前提,同时,该VHDL文件处于打开状态。 转换结束后,在当前界面并不能看到生成的元件,需要再次进入图4.31所示的原理图输入编辑窗口,左键双击窗口空白处,进入图4.32所示的窗口,可以看到类似图4.32所示的界面,但是多了一个元件库文件夹——Project,这个文件夹是用户自己设置、创建元件后软件系统自动生成的,用于放置自己创建的元件文件,如图4.38所示。 图4.38 创建元件后的原理图编辑窗口
第4章 QuartusⅡ应用指南 3.原理图输入法与VHDL文本输入的结合 4.2 原理图输入设计方法 3.原理图输入法与VHDL文本输入的结合 一个大系统的设计往往包含多个子模块的设计,其中有的设计适于调用现成元件画图完成,有的设计适于代码编程方式。不妨将代码编写形成的文本文件按照上述方法生成元件符号,在原理图编辑窗口加以调用,与其它元件共同组成复杂的大系统,这样,设计者可以发挥自己所长自由选择设计方法。 4.2.3全加器设计——顶层设计 再次选择菜单File→New→BlockDiagram/Schematic File,在新打开的原理图编辑窗口中双击鼠标左键,在弹出的窗口中调出元件h_adder.bdf和或门,并按图4.39连接好全加器电路。
第4章 QuartusⅡ应用指南 对全加器的编译和仿真与前面给出的流程完全一样,全加器时序仿真波形如图4.40所示。 4.2 原理图输入设计方法 图4.39 全加器内部逻辑图 对全加器的编译和仿真与前面给出的流程完全一样,全加器时序仿真波形如图4.40所示。 图4.40 全加器的时序仿真波形
第4章 QuartusⅡ应用指南 4.2.4原理图设计中总线的应用 4.2 原理图输入设计方法 4.2.4原理图设计中总线的应用 使用原理图输入法进行较复杂逻辑电路设计时,由于视图尺寸限制,一些信号线及输入输出数据线应使用总线形式,要特别注意信号标号和总线的表达方式。总线用粗线条表示。 如将4条信号线q[0]、q[1]、q[2]、q[3]合并成一条总线q[3..0],则在原理图制作中,必须给每条信号线标号,步骤为:在将要命名、标号的信号线处单击右键,出现Properties,点击进入,在Name处键入信号名称,最后确认即可。总线的名字也用同样方法标注为q[3..0],总线输出端口起名必须包含位宽的信息,如果起名为q,则编译出错。再如一条8位总线bus1[7..0]与另外三根位宽分别为1、3、4的连线相连,则该三根线的标号为bus[0]、bus[3..1]、bus[7..4]。设计中涉及总线的情况有以下几种。
第4章 QuartusⅡ应用指南 1.输出合并为总线 4.2 原理图输入设计方法 1.输出合并为总线 当电路的输出为几个1bit的数据线,为减少输出端口符号节省篇幅,将其制作成总线形式,形如图4.41所示。 图4.41 总线输出形式
第4章 QuartusⅡ应用指南 4.2 原理图输入设计方法 图4.42为其顶层元件符号图,从图中看出,输出只有CO和一条合并了的总线q[3..0],而不见了q[0]、q[1]、q[2]、q[3]。 图4.42 图4.41的顶层原理图
第4章 QuartusⅡ应用指南 2.信号与总线的连接 信号与总线的联结有很多方式,如多条信号线合并为一条总线,如图4.43所示。 4.2 原理图输入设计方法 2.信号与总线的连接 信号与总线的联结有很多方式,如多条信号线合并为一条总线,如图4.43所示。 图4.43 多条信号线合并为一条总线
第4章 QuartusⅡ应用指南 一条总线形式的信号拆分成一位或几位位宽的信号,分别作为下一级电路的输入,如图4.44所示。 4.2 原理图输入设计方法 一条总线形式的信号拆分成一位或几位位宽的信号,分别作为下一级电路的输入,如图4.44所示。 图4.44 总线拆分成一位位宽的信号线
第4章 QuartusⅡ应用指南 将输入端口、中间信号合并成一条总线如图4.45所示。 4.2 原理图输入设计方法 图4.45 将输入端口与中间信号合并成总线
第4章 QuartusⅡ应用指南 注意 ● 图4.45中shii和shi为VHDL语言描述程序生成的符号,并非软件工具自带元件库中元件; ● 模块shi中有端口名为a[3..0],则模块shii的输入端口名称中就不能有引脚名为a,否则有20个警告。将模块shii的端口a改名为f,改此一条可消除16个警告; ● 模块shi中的a[3..0]的引线必须引出来,然后再起名为a[3..0],否则会有很多警告。
第4章 QuartusⅡ应用指南 习 题 习 题 4-1将下面程序补充完整,在QuartusⅡ中编译,找出错误并纠正,直至编译通过。 习 题 习 题 4-1将下面程序补充完整,在QuartusⅡ中编译,找出错误并纠正,直至编译通过。 程序1: USE IEEE.STD_LOGIC_1164.ALL ; ENTITY decoder IS PORT (A : IN STD_LOGIC_VECTOR( 1 DOWNTO 0) ; EN : IN STD_LOGIC ; Y : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0) ; END ; ARCHITECTURE a OF decoder IS SIGNAL SEL : STD_LOGIC_VECTOR( 3 DOWNTO 0) ; BEGIN SEL(0) <= EN ; SEL(1) <= A(0) ; SEL(2) <= A(1) ; SEL(3) <= A(2) ;
第4章 QuartusⅡ应用指南 习 题 WITH SEL SELECT Y<= "00000001" WHEN "0001"; 习 题 WITH SEL SELECT Y<= "00000001" WHEN "0001"; "00000010" WHEN "0011"; "00000100" WHEN "0101"; "00001000" WHEN "0111"; "00010000" WHEN "1001"; "00100000" WHEN "1011"; "01000000" WHEN "1101"; "10000000" WHEN "1111"; "11111111" WHEN OTHERS ;
第4章 QuartusⅡ应用指南 习 题 程序2: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; 习 题 程序2: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY mux4 IS PORT (A, B, C, D : IN STD_LOGIC_VECTOR( 3 DOWNTO 0) ; S : IN STD_LOGIC_VECTOR( 1 DOWNTO 0) ; Z : OUT STD_LOGIC_VECTOR( 3 DOWNTO 0 ) ; END mux5 ; ARCHITECTURE mux4 OF b IS BEGIN Z<= A WHEN S="00" ELSE B WHEN S="01" ELSE C WHEN S="10" ELSE D WHEN S="11" ELSE "0000" ; END b ;
第4章 QuartusⅡ应用指南 习 题 4-2用QuartusⅡ原理图输入法生成的图形文件的扩展名是什么?文本文件和波形文件的扩展名分别是什么? 4-3 QuartusⅡ集成环境下存放加法器、译码器、计数器、寄存器等74系列的器件的位置是哪里?写出存放的路径。 4-4 QuartusⅡ集成环境下存放触发器、基本门电路、电源和地、输入输出端口的位置是哪里?写出存放的路径。 4-5在ModelSim的工作区中,用什么形式来观察项目各级文件的结构和内容? 4-6在QuartusⅡ中如何设置仿真的总时长? 4-7在QuartusⅡ中,如何观察所设计的电路的RTL图和状态图? 4-8由异或门实现8位异或逻辑运算,要求用原理图输入法设计完成。 4-9设计1位全减器,输入为被减数、减数和来自低位的借位;输出为两数的差和向高位的借位。要求得出“差”与“借位”的逻辑函数式,用原理图输入法完成设计,并且仿真验证设计的正确性。
第4章 QuartusⅡ应用指南 习 题 4-10 用3片74160设计模365计数器。 习 题 4-10 用3片74160设计模365计数器。 4-11使用JK触发器设计4位异步模16加法计数器,仿真验证设计是否正确。 4-12用DFF设计3位异步减法计数器,仿真验证设计是否正确。 4-13用DFF设计4人抢答电路,设输入为A、B、C、D,用它们的高电平分别代表四人按下按键。如果某DFF的输出为高电平,则代表相应的抢答人抢答成功。用原理图输入法设计并仿真验证。 4-14 用DFF设计5位右移寄存器,给出仿真波形图。 4-15用原理图输入法设计电路:某工厂有A、B、C 三个车间和一个自备电站,站内有两台发电机S1、S2,如果所有车间均不开工,则发电机全停;如果只有一个车间开工,则只运行发电机S1;如果只有两个车间开工,则只运行发电机S2;如果三个车间全开工,则两台发电机全部运行,设计控制S1、S2运行的逻辑电路。
第4章 QuartusⅡ应用指南 习 题 4-16用原理图输入法设计一个信号灯工作状态监测电路:设信号灯红、黄、绿灯分别为A、B、C,正常工作时只能是红、或绿、或红黄、或绿黄灯亮,除此四种情况外,均视为故障,报警输出为1。 4-17设计一个能够产生序列信号11010010110的序列发生器,用移位寄存器实现,或者计数器结合数据选择器实现,仿真验证其功能。 4-11设计29分频器,给出仿真波形图。