版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术及应用高等职业教育本科精品教材PART01单元1EDA概述PART02单元2VerilogHDL结构与要素PART03单元3VerilogHDL描述语句PART05单元5常用模块电路的VerilogHDL设计PART06单元6基础设计PART07单元7IP核的应用目录CONTENTSPART04单元4QuartusPrime设计基础PART08单元8综合设计PART04单元4QuartusPrime设计基础4.1
QuartusPrime概述4.2原理图输入设计方法4.3文本输入设计流程4.1QuartusPrime概述4.1QuartusPrime概述QuartusPrime是Intel(收购Altera之后)推出的一款功能强大且用途广泛的综合性设计软件,它在现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)的开发领域占据着至关重要的地位。随着半导体技术的不断进步以及FPGA/CPLD应用领域的日益拓展,QuartusPrime也在持续更新和完善,以适应不断变化的市场需求和技术挑战。这款软件集成了设计输入、自动综合、布局布线、仿真、编程下载等一系列开发环节所需的功能,为开发者提供了一个一站式的开发平台。开发者无须在多个不同的工具之间切换,就能够完成从最初的设计构思到最终将设计下载到硬件设备,并使其正常工作的整个流程,大大提高了开发效率。QuartusPrime主要有两个版本,即QuartusPrimeStandardEdition(标准版)和QuartusPrimeProEdition(专业版)。标准版适用于一般的FPGA/CPLD开发项目,能够满足大多数中低端应用的需求,它提供了基本的设计工具和功能,具有较高的性价比。而专业版则针对高端应用和复杂设计,具备更强大的功能和更高的性能,例如支持更先进的工艺节点、更高级的时序分析和优化工具等,适用于对设计要求极高的项目,如高速通信、高性能计算等领域。运行QuartusPrime后,可以看到图41所示的QuartusPrime管理器窗口。该窗口主要包含项目导航窗口、任务窗口、消息窗口,可通过View→UilityWindows菜单下的选项添加或隐藏这些窗口。4.1QuartusPrime概述4.1QuartusPrime概述为了使QuartusPrime正常工作,第一次运行软件时,需要设置lcense.dat文件,否则许多功能将被禁用。在QuartusPrime管理器窗口选择ToolsLicenseSetup选项,单击Licensefile后的【…】按钮,在弹出的对话框中选择license.dat文件或直接输入具有完整路径的文件名,如图42所示。4.2原理图输入设计方法4.2原理图输入设计方法QuartusPrime具备功能强大、直观便捷和操作灵活的原理图输入设计功能,同时配备了丰富的元件库,其中包含基本逻辑元件库,如逻辑门、D触发器、宏功能元件等,包含了几乎所有74系列的器件。QuartusPrime编辑器的工作对象是项目,项目用来管理所有设计文件以及编辑设计文件过程中产生的中间文档。在一个项目下,可以有多个设计文件,这些设计文件可以是原理图文件、文本文件(如AHDL、VHDL、VerilogHDL等文件)、符号文件、底层输入文件以及第三方EDA工具提供的多种格式文件。原理图输入设计方法通过图形化界面,从软件提供的元件库中选取所需的逻辑元件,并将它们连接起来构成电路原理图,以此描述数字电路的功能。本节通过一位全加器的设计,介绍电路原理图输入的设计方法。4.2.1设计一位半加器1.设置工程(1)创建工程。创建一个文件夹(这里选F盘),命名为myproject,用作工程项目文件。启动QuartusPrime软件,在QuartusPrime管理器窗口中选择菜单File→New→NewQuartusPrimeProject,出现NewProjectWizard对话框,如图43所示,输入工程路径、工程名称和顶层实体名,本工程路径设置为myproject文件夹路径,工程名称命名为adder,顶层实体名默认与项目名称一致。4.2原理图输入设计方法4.2原理图输入设计方法单击【Next】按钮,进入工程类型选择界面,如图44所示。在ProjectType中默认选择Emptyproject,建立一个空的工程。4.2原理图输入设计方法(2)加入设计文件。单击【Next】按钮,弹出图45所示对话框,单击Filename栏右侧的【…】按钮,选择与工程相关的文件。单击【Add】按钮进入此工程,由于这是一个新建的工程,没有任何可用的设计文件,因此此处不用添加,直接单击【Next】按钮,进入选择芯片页面。(3)选择目标芯片。根据实际使用的FPGA型号选择目标器件,此处选择CycloneIVE系列的“EP4CE10F17C8”,在DeviceFamily栏中选择“CycloneIVE”。CycloneIVE系列的产品型号较多,为了方便在Availabledevices栏中快速找到芯片型号,可在Package栏中选择FBGA封装,在Pincount栏中选择256引脚,在Corespeedgrade栏中选择8,之后在可选择的器件中只能看见4个符合要求的芯片型号,选中“EP4CE10F17C8”,如图46所示。4.2原理图输入设计方法4.2原理图输入设计方法4.2原理图输入设计方法(4)选择仿真器和综合器类型。单击【Next】按钮,进入仿真器和综合器类型设置界面,NONE为默认项,在此都选择NONE。(5)完成设置。单击【Next】按钮后,弹出工程设置统计对话框,列出了此项工程相关设置情况。最后单击【Finish】按钮,完成设置,随后出现adder的工程管理窗口,显示本工程项目的层次结构和各层次的实体名。QuartusPrime将工程信息存储在工程配置文件(.qsf)中。包括设计文件、波形文件、SignalTap文件、内存初始化文件,以及构成工程的编译器、仿真器的软件构建设置等有关QuartusPrime工程的所有信息,如图47所示。4.2原理图输入设计方法4.2原理图输入设计方法2.输入设计(1)打开编辑窗口。选择菜单File→New,在弹出的New对话框中选择DesignFiles的BlockDiagram/SchematicFile,如图48所示。4.2原理图输入设计方法(2)放置元件。在原理图编辑窗口的空白处双击(或右击选择Insert→Symbol),弹出元件选择对话框,如图49所示。4.2原理图输入设计方法元件选择对话框中Libraries的路径是d:/intelfpga_lite/19.1/quartus/libraries/primitives,为基本逻辑元件库,双击选中需要的元件(如二输入与门);或者在Name栏直接输入元件名称“and2”,单击【OK】按钮。所选元件会出现在原理图编辑窗口。为了设计半加器,分别调入元件AND2、NOT、XNOR2、INPUT和OUTPUT。如果要放置相同元件,按住Ctrl键的同时用鼠标拖动该元件即可。(3)添加连线,引脚命名。将光标移到引脚附近,光标变为“十”字形,按住鼠标左键拖动,即可画出连线。双击INPUT和OUTPUT的PIN-NAME,使其变黑色,再输入各引脚名:ain、bin、co和so。(4)保存原理图。选择菜单File→SaveAs,出现保存选择对话框,自定保存目录(如F:\myproject\adder),以合适的名称保存原理图,这里命名为adder,扩展名为.bdf,如图410所示。4.2原理图输入设计方法4.2原理图输入设计方法3.全程编译QuartusPrime编译器(Compiler)是由一系列处理模块构成的,其功能包括网表文件提取、设计文件排错、逻辑综合、逻辑分配、适配(结构综合)、时序仿真文件提取和编程下载文件装配,以及基于目标器件的工程时序分析等。编译器首先检查出工程设计文件中可能的错误信息,供设计者排除,然后生成结构化的以网表文件表达的电路原理图文件、功能和时序信息文件、器件编程的目标文件等。在编译前,设计者可以通过各种设置指导编译器使用不同的综合和适配技术(如时序驱动技术等),以提高设计项目的工作速度,优化器件的资源利用率。在编译过程中及编译完成后,还可以从编译报告窗口获得所有相关的详细编译结果,便于及时调整设计方案。选择菜单Processing→StartCompilation,开始编译。编译过程中,要注意管理器窗口下方的Processing栏的编译信息。如果工程中的文件有错误,Processing栏会显示出来,双击错误提示,即显示用深色标记的错误位置,再次进行编译直至排除所有错误。如果编译成功,可以看到图411所示的编译报告。单击其中各项可以详细了解编译与分析结果。如单击FlowSummary项,将在右栏显示硬件耗用统计报告。4.2原理图输入设计方法4.包装元件入库编译通过后,选择菜单File→Create/update→CreateSymbolFilesforCurrentFile,当前文件变成一个包装好的单一元件(半加器:adder.bsf),并被放置在工程路径指定的目录中以备后用。4.2原理图输入设计方法4.2.2设计全加器1.用两个半加器及一个或门构成一位全加器重复4.2.1小节中步骤2的工作,利用设计好的两个半加器及一个或门构成一位全加器。放置半加器时,可单击Name栏后的【…】按钮,选择路径F:\myproject\adder下的adder.bsf,如图412所示。4.2原理图输入设计方法一位全加器的原理图如图413所示。将全加器原理图保存至工程项目下,并命名为fadder。2.编译全加器如果一个项目中有多个文件,想对其中一个文件进行编译处理时,需要将该文件设置成顶层文件。选择菜单Project→SetasTop-LevelEntity,再选中fadder文件,即可将全加器原理图设置为顶层文件。按4.2.1小节中的步骤3对全加器原理图进行编译。完成全加器的原理图输入设计。4.3文本输入设计流程4.3文本输入设计流程QuartusPrime支持AHDL、VHDL及VerilogHDL等硬件描述语言描述的文本文件。本节基于例3.27的示例,详细介绍QuartusPrime文本输入设计流程。创建工程步骤与第4.2.1小节的步骤1相同,此处不再赘述。4.3.1文本输入选择菜单File→New。在弹出的New对话框中选择DesignFiles的VerilogHDLFile,单击【OK】按钮,进入文本编辑窗口。将例3.27的代码编写到文本编辑窗口,并命名为h_adder.v,如图414所示。4.3文本输入设计流程4.3.2仿真测试当前的工程编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。这可以用针对逻辑电路的仿真软件来完成。仿真软件主要有以下两类。第一类是由FPGA供应商自己推出的仿真软件,如原Altera公司的早期QuarusⅡ中自带的门级波形仿真软件,此类软件针对性强,易学易用,缺点是只适用于小规模设计。QuartusⅡ10.0版本后撤除了此类软件。另一类是EDA专业仿真软件商提供的第三方仿真工具软件,如ModelSim。在QuartusPrime的平台上使用ModelSim有多种方式,一种是直接使用,另一种是间接使用,即在新版QuartusPrime中将ModelSim整合成旧版门级波形仿真器,保持了原有特性,用户可以通过熟悉的操作流程进行仿真。1.ModelSim的特点(1)多语言支持。支持Verilog、VHDL和SystemVerilog等多种硬件描述语言,并且可以对混合语言设计进行仿真,方便工程师使用习惯的语言进行设计和验证。(2)高性能仿真。具备高效的仿真引擎,能够处理大规模的设计,快速完成仿真任务,节省开发时间。即使是复杂的芯片设计,也能在合理的时间内生成仿真结果。(3)丰富的调试功能。提供了强大的调试工具,如波形查看、断点设置、信号探针、事务级调试等,方便工程师快速定位和解决设计中的问题。(4)与其他工具集成良好。可以与多种设计工具(如综合工具、布局布线工具)和验证工具(如形式验证工具、断言验证工具)进行集成,形成完整的设计验证流程。4.3文本输入设计流程(1)设计仿真。对数字电路设计进行功能仿真和时序仿真。功能仿真主要验证设计的逻辑功能是否正确,时序仿真则考虑了电路的延迟,验证设计在实际时序条件下的行为。(2)波形展示与分析。以直观的波形图展示信号的变化情况,方便工程师观察信号的时序关系、逻辑值变化等,从而判断设计是否符合预期。还支持对波形进行缩放、平移、测量等操作,以及对多个信号进行比较分析。(3)调试。允许工程师在仿真过程中设置断点,暂停仿真执行,查看信号的当前值和状态,进行单步执行、查看变量值等操作,帮助定位和修复设计中的错误。(4)代码覆盖率分析。分析设计代码在仿真过程中的执行情况,统计哪些代码被执行,哪些代码没有被执行,从而评估仿真的完整性,确保设计的各个部分都得到了充分的验证。(5)事务级建模与仿真。支持事务级建模(TLM),可以在更高的抽象层次上对设计进行建模和仿真,提高仿真效率,加速系统级验证。ModelSim支持手动仿真和自动仿真两种模式。手动仿真需要用户在ModelSim的图形界面或者命令窗口中逐个执行仿真操作,如编译文件、启动仿真、添加信号到波形窗口、运行仿真等。自动仿真借助脚本文件来自动化执行一系列仿真操作,这样能提升仿真效率、减少人工操作失误,还可实现仿真流程的标准化和可重复性。4.3文本输入设计流程4.3.3
ModelSim手动仿真1.设置仿真工具确认QuartusPrime的仿真工具已指向ModelSim所在路径。选择菜单Tools→Options,在General中选择EDAToolOptions,弹出图415所示窗口,下方的ModelSim-Altera栏显示指向安装软件ModelSimASE的路径D:\intelFPGA\19.1\modelsim_ase\win32aloem。4.3文本输入设计流程2.建立波形文件并保存选择菜单File→New,在New对话框中选择Verification/DebuggingFiles中的UniversityProgramVWF,如图416所示。在打开的波形编辑窗口中选择菜单File→SaveAs,单击【保存】按钮,命名为h_adder.vwf,如图417所示。4.3文本输入设计流程4.3文本输入设计流程3.设置仿真时间区域对于时序仿真来说,将仿真时间轴设置在一个合理的时间区域上十分重要。时间范围通常可设置在数十微秒。选择菜单Edit→SetEndTime,在弹出窗口的EndTime栏输入仿真时间,例如输入55,单位为μs,于是整个仿真域的时间即设定为55μs,如图418所示。4.3文本输入设计流程4.加入信号节点将工程h_adder的端口信号节点选入波形编辑器。方法是先选择菜单Edit→Insert,弹出InsertNodeorBus对话框,单击【NodeFinder】按钮,进入NodeFinder对话框,在Filter下拉列表中选择Pins:all,然后单击【List】按钮,左侧的NodesFound列表中出现设计中的h_adder工程的所有端口引脚名。注意,如果该对话框的List不显示工程的端口引脚名,需重新编译,即选择菜单Processing→StartCompilation,然后重复以上操作。最后选中所有节点于右侧SelectedNodes栏。单击【OK】按钮后,所有选中的信号被送到波形编辑窗口,如图419所示。4.3文本输入设计流程4.3文本输入设计流程单击窗口左侧的【全屏显示】按钮,通过【放大/缩小】按钮调整大小,使仿真坐标处于适当位置。仿真时间横坐标设定在数十微秒数量级。5.设置激励信号波形分别设置输入信号a和b的电平。用鼠标在信号名的某一数据区拖曳出一个蓝色区域,然后单击左侧工具栏中的【?】按钮,在弹出的窗口输入数据,如1,在不同区域设置不同数据。编辑好的激励波形如图420所示。保存波形文件。4.3文本输入设计流程6.启动仿真选择菜单Simulation→SimulationSettings,HDLLanguage选择Verilog,单击【RestoreDefaults】按钮,再单击【Save】按钮,保存设置。选择菜单Simulation→RunFunctionalSimulation以启动仿真,仿真波形文件自动弹出,如图421所示。分析波形文件可知,输入/输出波形完全符合设计要求。4.3文本输入设计流程4.3.4
ModelSim自动仿真以例3.13为例,基于ModelSim的波形仿真器的自动仿真流程如下:1.选择EDA仿真工具在QuartusPrime中打开例3.13的工程,工程名为counter16,选择菜单Tools→Options,然后选择EDAToolOptions。添加ModelSim路径,如图422所示。4.3文本输入设计流程在ModelSim-Altera栏设置ModelSim的安装路径下的可执行文件的路径,该路径为QuartusPrime安装盘(D:\intelFPGA\19.1\modelsim_ase\win32aloem),路径设置完成后单击【OK】按钮返回QuartusPrime主界面。选择菜单Assignments→Settings,然后选择EDAToolSettings,将“Simulation”设置成ModelSim-Altera、VerilogHDL,如图423所示。设置完成后单击【OK】按钮返回QuartusPrime主界面。4.3文本输入设计流程6.启动仿真选择菜单Simulation→SimulationSettings,HDLLanguage选择Verilog,单击【RestoreDefaults】按钮,再单击【Save】按钮,保存设置。选择菜单Simulation→RunFunctionalSimulation以启动仿真,仿真波形文件自动弹出,如图421所示。分析波形文件可知,输入/输出波形完全符合设计要求。4.3文本输入设计流程2.编写TestBench使用QuartusPrime软件生成TestBench模板,以便编写仿真文件。选择菜单Processing→Start→StartTestBenchTemplateWriter,QuartusPrime软件已自动生成TestBench模板,并在Message窗口显示该模板的存放路径,选择这个模板并稍作修改就能直接使用。生成Test-Bench模板结果如图424所示。4.3文本输入设计流程在工程目录下找到“counter16.vt”文件,用QuartusPrime软件打开并进行修改,“counter16.vt”文件内容如例4.1所示。【例4.1】生成的TestBench模板代码。4.3文本输入设计流程编写TestBench文件的主要目的是对使用硬件描述语言设计的电路进行仿真验证,测试设计电路的功能是否与预期目标相符。TestBench结构如下:4.3文本输入设计流程timescale声明仿真单位和精度时,不需要以分号结尾。“/”之前的1ns表示仿真单位是1ns,“/”之后的1ns表示仿真精度是1ns。当代码中出现“#10”时,表示延时10ns。因为仿真精度为1ns,所以最低的延时精度只能到1ns。(2)定义模块名。定义模块名的关键字为module,代码如下:4.3文本输入设计流程timescale声明仿真单位和精度时,不需要以分号结尾。“/”之前的1ns表示仿真单位是1ns,“/”之后的1ns表示仿真精度是1ns。当代码中出现“#10”时,表示延时10ns。因为仿真精度为1ns,所以最低的延时精度只能到1ns。(2)定义模块名。定义模块名的关键字为module,代码如下:4.3文本输入设计流程模块名的命名方式一般是在被测模块名后面加上“_tb”,或者在被测模块名前面加上“tb_”,表示为哪个模块提供激励文件,通常激励文件不需要定义输入和输出端口。(3)信号或变量定义。代码中定义的常量有时需要频繁修改,为了方便修改,可以把常量定义成参数形式,定义参数的关键字为parameter,代码如下:4.3文本输入设计流程Verilog中常用的声明信号或变量的关键字为reg和wire,在initial语句或always语句中使用的变量定义成reg类型,在assign语句中或用于连接被例化模块名的信号中定义成wire类型。声明方法如下:4.3文本输入设计流程(4)例化设计模块。例化的设计模块是指被测模块,例化被测模块的目的是将被测模块和激励模块实例化,并且对被测模块的端口与激励模块的端口进行连接,使得激励可以输入被测模块。如果被测模块是由多个模块组成的,只需要在激励模块中例化多个模块的顶层模块。代码如下:4.3文本输入设计流程在实例化模块中,左侧带“.”的信号为counter16模块定义的端口信号,右侧括号内的信号为激励模块中定义的信号,其信号名可以和被测模块中的信号名一致,也可以不一致,命名一致的好处是便于开发者理解激励模块和被测模块信号之间的对应关系。(5)使用initial或always语句产生激励波形。initial语句面向模拟仿真过程,不能被综合。initial语句通常用来对信号进行初始化,或者产生一次性变化的信号。always语句用于产生周期性激励信号。例如,产生时钟激励的代码如下:4.3文本输入设计流程上述代码表示每20个时间单位,clk的电平状态翻转一次,由于一个完整的时钟周期包括一个高电平和一个低电平,因此clk的时钟周期为40ns,占空比为50%。需要注意的是,在always语句中设置了clk的时钟周期,但没有设置初始值,因此clk需要在initial语句中进行初始化,代码如下:4.3文本输入设计流程上述代码表示clk赋初值为0,rst赋初值为1,在40个时间单位之后,将rst赋初值为0。QuartusPrime软件已经完成了基本工作,包括端口部分代码编写、变量声明以及例化测试工程等,在这个模板中添加需要的测试代码即可。eachvec和@eachvec是多余的信号,可以删除。修改后另存为counter16_tb.vt,以使文件名与模块名一致。修改后的TestBench代码如下:4.3文本输入设计流程上述代码表示clk赋初值为0,rst赋初值为1,在40个时间单位之后,将rst赋初值为0。QuartusPrime软件已经完成了基本工作,包括端口部分代码编写、变量声明以及例化测试工程等,在这个模板中添加需要的测试代码即可。eachvec和@eachvec是多余的信号,可以删除。修改后另存为counter16_tb.vt,以使文件名与模块名一致。修改后的TestBench代码如下:4.3文本输入设计流程3.配置仿真环境选择菜单Assignments→Settings,在打开的对话框中选择仿真文件,如图425所示。4.3文本输入设计流程单击Compiletestbench右边的【TestBenches】按钮,弹出图426所示的对话框。单击【New】按钮,弹出图427所示的对话框。4.3文本输入设计流程在Testbenchname栏输入需要测试的文件名counter16,在Toplevelmoduleintestbench栏输入测试文件中的顶层模块名counter16_tb,然后在Testbenchandsimulationfiles下的Filename栏选择测试文件counter16_tb.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 藏药材种植员班组安全评优考核试卷含答案
- 重冶备料破碎工安全教育知识考核试卷含答案
- 催化汽油吸附脱硫装置操作工操作安全水平考核试卷含答案
- 水族造景工复测强化考核试卷含答案
- 地毯整经工岗位质量综合考核试卷含答案
- 钟表及计时仪器制造工岗位基础晋升考核试卷含答案
- 景泰蓝掐丝工工作质量水平考核试卷含答案
- 玻璃钢制品拉挤工岗前知识技能考核试卷含答案
- 烟草评吸师核心竞赛考核试卷含答案
- 烟叶制丝设备操作工诚信品质水平考核试卷含答案
- 甘肃应龙生物科技有限公司年产800吨胺唑草酮、150吨五氟磺草胺、1000吨呋虫胺化学农药原药建设项目报告书
- 景观石吊装方案
- 慢性疾病的临床营养指导
- 【含完整答案】岩土工程(工程勘察)专业中级职称理论考试题库
- 个税优化方案-100万年薪以内
- 2024年全国高中数学联赛试题(及答案)
- 医务科依法执业自查表
- 全国医疗服务价格项目规范(2012版)
- 危险化学品重大危险源责任人履职情况评估表
- 上海外国语大学欧洲语言文学专业
- 体育测量与评价主体教案
评论
0/150
提交评论