《数字电路设计及Verilog HDL实现》课件第8章_第1页
《数字电路设计及Verilog HDL实现》课件第8章_第2页
《数字电路设计及Verilog HDL实现》课件第8章_第3页
《数字电路设计及Verilog HDL实现》课件第8章_第4页
《数字电路设计及Verilog HDL实现》课件第8章_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.1QuartusⅡ开发环境的建立

8.2QuartusⅡ开发环境的建立第8章QuartusⅡ开发平台简介8.1.1QuartusⅡ软件的版本

QuartusⅡ目前最新的版本是QuartusPrime17.1,提供三个版本以满足不同的设计要求:专业版、标准版和精简版。

QuartusPrime专业版软件进行了专门优化,支持Stratix10、Arria10和Cyclone10GX设备家族的下一代FPGA和片上系统的高级特性。

QuartusPrime标准版软件包含对早期设备家族的广泛支持,包括StratixⅣ-Ⅴ、ArriaⅡ-V-10、IntelMAXⅡ-Ⅴ-10和IntelCycloneⅣ-Ⅴ-10LP设备系列。

QuartusPrime精简版软件只支持一些低成本的FPGA系列芯片,包括MAXⅡ-V-10、CycloneⅣ-Ⅴ-10LP和ArriaⅡ芯片系列。QuartusPrime精简版软件可以免费下载,无须许可文件。8.1QuartusⅡ开发环境的建立8.1.2QuartusⅡ软件的主要特性

QuartusⅡ软件具有开放性、结构无关性、完全集成化等特点,并具有丰富的设计库和模块化工具。QuartusⅡ软件能够在设计过程的每个步骤中引导设计者将注意力放在设计上,同时能够自动完成错误定位、错误和警告信息提示,使设计者的设计过程变得更加简单和快捷。QuartusⅡ软件主要具有以下特点:

(1)支持多种设计的输入方式。

QuartusⅡ软件支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式。(2)提供基于模块的设计方法。

QuartusⅡ软件为用户提供了基于模块的设计方法,用户可以独立设计、实施和验证各种设计模块,然后再将模块集成到顶层工程中。这样做可以显著缩短系统的设计和验证周期。

(3)提供多种形式的IP模块。

QuartusⅡ软件中的MegaWizardPlug-InManager可对软件中所包括的参数化模块库(LPM)或Altera/AMPPSM合作伙伴的IPMegafunctions进行参数设置和初始化操作,从而节省设计输入时间,优化设计性能。

(4)提供系统集成工具。

QuartusⅡ软件包含了Qsys(在QuartusⅡ11.0之前被称为SOPCBuilder)工具。Qsys为用户提供了片上系统的集成工具,用户可以根据需求选择各种IP核(包括嵌入式处理器、协处理器、外设、存储器和用户设定的逻辑),Qsys会自动完成IP核的添加、参数设置和连接等操作,使设计人员能够在几分钟内将概念转化成为可运作的系统,快速地构建可编程片上系统。

(5)易于引脚分配和时序约束。

QuartusⅡ软件可以进行预先的I/O分配和验证操作(无论顶层的模块是否已经完成),这样就可以在整个设计流程中尽早开始印刷电路板(PCB)的布局和布线设计工作。软件还提供各种分配编辑的功能,设计人员可以在任何时间对引脚的分配进行修改和验证,简化了引脚分配的管理。

(6)支持市场主流的众多器件。

QuartusⅡ软件支持MAXⅡ系列、Cyclone系列、Arria系列、StratixⅡ系列、Cyclone系列等。

(7)提供对第三方EDA工具的支持。

QuartusⅡ软件对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。QuartusⅡ支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

(8)支持多种操作系统。

QuartusⅡ软件支持Windows、Solaris、Linux等众多的操作系统。8.1.3QuartusⅡ软件的开发流程

在QuartusⅡ环境下,完整的开发流程如图8.1.1所示。

1.设计输入

如图8.1.1所示,设计输入是对开发系统需求进行描述的一种方式。QuartusⅡ软件支持多种形式的设计输入,包括原理图方式、HDL文本方式、状态机方式等。

1)原理图方式

原理图方式是指用“电路图”这种图形化的形式对系统进行描述。原理图是传统的系统设计方式,这种方式可以清楚地表示系统中各个部件的连接和接口关系,具有直观、易用的特点,但是这种方式需要器件库的支撑,要求器件库能够提供各种功能型号的标准元器件。图8.1.1QuartusⅡ软件开发流程

2)HDL文本方式

HDL文本方式是利用硬件描述语言来对系统进行描述,然后通过EDA工具对设计文件进行综合和仿真,最后变为目标文件后在ASIC或FPGA/CPLD中具体实现。这种设计

方法是目前普遍采用的主流设计方法。

3)状态机方式

状态机方式是指用状态图的方式进行功能系统描述。QuartusⅡ软件自带图形化的状态机输入工具,在图形界面里可以通过状态设置、输入输出端口设置、状态转移条件设置

等完成状态机的绘制等,也可以使用QuartusⅡ软件提供的状态机生成向导按步骤绘制状态机,最终生成的状态机文件(*.smf)可以转换成HDL文件。

2.综合

综合的定义是将设计的较高抽象层次描述转换成较低抽象层次描述的过程。综合的任务就是将HDL语言、原理图等设计输入,转换成由基本门电路(与、或、非门等)及器件库

提供的基本单元所组成的网表,并根据目标与要求(约束条件)优化所生成的逻辑连接,最后形成.elf或.vqm等标准格式的网表文件,供布局布线器进行实现。

随着FPGA/CPLD复杂度的提高,硬件系统性能的要求越来越高,高级综合是设计流程中的关键环节,综合结果的优劣直接影响了布局布线的结果。好的综合工具能够使设计占用芯片的物理面积最小、工作效率最高。综合有以下几种表示形式:

(1)高层次综合:将算法级的行为描述转换为RTL级描述。

(2)逻辑综合:从RTL级描述转换为逻辑门级(可包括触发器)表示。

(3)版图综合。将逻辑门表示转换为版图表示,或转换为PLD器件的配置网表表示。根据版图信息进行ASIC生产,有了配置网表可在PLD器件上实现系统功能。

在QuartusⅡ软件中,除了可以使用自带的“Analysis&Synthesis”命令进行综合外,也可以使用第三方综合工具。目前用得比较多的第三方综合工具为Synopsys公司的FPGACompilerⅡ、ExemplarLogic公司的LeonardoSpectrum、Synplicity公司的Synplify/

SynplifyPro等软件。

3.布局布线

QuartusⅡ软件中的布局布线,是由“Fitter”(适配器)执行的,其功能是使用综合生成的网表文件,将工程的逻辑和时序的要求与器件的可用资源相匹配。它将每个逻辑功能分

配给最合适的逻辑单元进行布线,并选择相应的互连路径和引脚分配。如果在设计中执行了资源分配,则布局布线器将试图使这些资源与器件上的资源相匹配,努力满足用户设置

的其他约束条件并尽可能地优化设计中的其余逻辑。如果没有对设计设置任何约束条件,则布局布线器将自动对设计进行优化。如果适配不成功,则Fitter会终止编译,并给出错误信息。

QuartusⅡ软件中布局布线包含分析适配结果、优化适配和通过反标保留分配等。

4.时序分析

时序分析是指为整个工程、特定的设计实体或个别实体、节点和引脚所需的速度性能进行分析。QuartusⅡ软件中的时序分析可用于分析设计中的所有逻辑,并有助于指导

Fitter达到设计中的时序要求。默认情况下,时序分析作为完整编译的一部分自动运行,分析、报告时序信息,例如,建立时间(tSU)、保持时间(tH)、时钟至输出延时(tCO)和最小时钟至输出延时、引脚至引脚延时(tPD)、最大时钟频率(fMAX)以及设计的其他时序特性。当提供时序约束或者默认设置有效时,时序分析会报告迟滞时间。可以使用时序分析报告分析、调试和验证设计的时序性能。

5.仿真

仿真的目的是在软件环境下,验证电路的设计结果是否和设想中的功能一致。在如图8.1.1所示的设计流程中,设计者在完成了设计输入、综合、布局布线后,需要验证系统的功能是否能够满足设计要求以及各部分的时序配合是否准确。

仿真可以分为功能仿真和时序仿真。功能仿真是在不考虑信号延时等因素的条件下,分析输入和输出之间关系的一种方式,又称为行为仿真或前仿真。时序仿真又叫后仿真,它是将设计映射到特定的工艺环境(如具体器件)中,并在完成了布局布线后进行的包括信号时延的仿真。由于不同器件的内部时延不一样,不同的布局布线方案会对时延造成很大的影响,因此在设计功能实现后,需要对设计进行时序仿真,分析信号间的时序关系,验证实现后的逻辑功能是否正确,延迟是否导致错误等。如果存在逻辑和时序的问题,就可以对设计进行修改,从而避免错误。

6.编程和配置

将成功编译、正确仿真后的编程文件下载到可编程器件的过程称为配置。在配置前,首先需将下载电缆、硬件开发板和电源准备好,再设置配置选项,随后就可以对可编程器件进行配置。

QuartusⅡ软件的编译工具(CompilerTool)中的汇编器(Assembler)用于生成配置所需的编程文件,会自动产生.sof文件(SRAMObjectFile)和.pof(ProgrammerObjectFile)

文件。.sof文件用于通过连接在计算机上的下载电缆对硬件开发板上的FPGA芯片进行配置,.pof文件用于配置专用配置芯片。

QuartusⅡ软件的Programmer编程器在下载电缆的配合下使用生成的.sof文件和.pof文件对FPGA/CPLD器件进行配置。8.2QuartusⅡ开发环境的建立8.2.1系统配置要求为了使QuartusⅡ软件的性能达到最佳,建议PC计算机的最低配置如下:

(1)1GB以上系统内存。

(2)大于3GB的安装QuartusⅡ软件所需的硬盘空间。

(3)操作系统:Windows或Linux。

(4)至少有下面的端口之一:

①用于ByteBlasterⅡ或ByteBlasterMV下载电缆的并行口(LPT口);

②用于MasterBlaster通信电缆的串行口;

③用于USB-Blaster下载电缆、MasterBlaster通信电缆以及APU(AlteraProgrammingUnit)的USB口(仅用于Windows2000和WindowsXP)。8.2.2QuartusⅡ软件的下载

在满足系统配置的计算机上,可以按照下面的步骤安装QuartusⅡ软件(这里以安装QuartusⅡ13.0为例)。

在Altera的官方网站/downloads/download-center.html下

载所需版本的Quartus软件,如图8.2.1所示。

在选择QuartusⅡ软件版本之后,网站提供了该版本软件的三种下载方式,如图8.2.2中的标签页所示,分别是:组合文件下载(CombinedFiles)、定制文件下载(IndividualFiles)

和光盘文件下载(DVDFiles)。定制文件下载的方式使用户可以在“系统软件”、“器件库”和“其他软件”中自主选择所需的软件,这样可以有效地减少下载包的占用空间。定制方式可以根据需要选择“QuartusⅡSubscriptionEdit”、“Devices”和“AdditionalSoftware”中提供的软件包。QuartusⅡSoftware、Devices(选用的可编程器件所属的开发包)是必需的,其他软件可以根据需要选择。

需要说明的是,在下载软件时还要根据所选用的可编程芯片下载支持该芯片的器件库。这里,由于硬件选用的是DE270开发板,板上的FPGA芯片是CycloneⅡ系列EP2C70F896C6芯片,因此下载开发包时需要选择CycloneⅡ系列的器件库。图8.2.1选择QuartusⅡ软件的下载版本图8.2.2选择软件的下载方式8.2.3QuartusⅡ软件的安装

首先找到事先下载的QuartusⅡ13.0安装包,双击“QuartusSetup.exe”开始运行安装程序,出现如图8.2.3所示的安装界面。

在图8.2.3中点击“Next”,并选择“同意许可证协议”后,会出现图8.2.4所示的软件安装路径设置界面。安装QuartusⅡ软件时,请务必注意设置的安装路径不要包括中文和空格。由于软件占用的硬盘空间比较大,选择安装路径时要保证有足够大的安装空间。图8.2.3QuartusⅡ软件安装首页图8.2.4设置软件安装路径图8.2.5选择需要安装的软件图8.2.6软件安装过程界面安装完QuartusⅡ软件之后,在首次运行它之前,还必须要有Altera公司提供的授权文件(license.dat)。授权文件包括对Altera综合与仿真工具的授权。Altera公司对Quartus

Ⅱ软件的授权有两种形式,一种是单机版的node-lockedlicense,另一种是网络版的networklicense。这里只介绍单机版node-lockedlicense的设置方法。

在获得授权文件后可以通过如下的方式在QuartusⅡ软件中指定授权文件位置。

(1)启动QuartusⅡ软件。

(2)选择主菜单“Tools”→“LicenseSetup”进行授权文件的设置,如图8.2.7所示。图8.2.7授权文件设置8.2.4安装下载线缆驱动程序

硬件设计完成后,需要通过下载线缆实现对目标芯片的编程和配置,因此还必须安装下载线缆的硬件驱动程序。这里以Altera公司的DE2-70开发板为例,说明下载线缆驱动

程序的安装过程。

DE2-70开发板的下载线缆的两端分别是USB接口和Blaster接口,USB-Blaster线缆通过这两个接口分别与PC机和DE2-70开发板相连。当开发板第一次与PC连接时,如果

之前没有安装USB-Blaster的驱动程序,就会在电脑的设备驱动程序中出现如图8.2.8所示的USB-Blaster设备图标。图8.2.8设备管理器中的USB-Blaster图标图8.2.9更新设备驱动程序图8.2.10选择驱动程序的搜索方式在图8.2.10中点击“浏览我的计算机以查找驱动程序软件(R)”,手工设置驱动程序所在的位置,会出现如图8.2.11所示的驱动程序路径设置界面。

USB-Blaster的驱动程序已经被存放在QuartusⅡ软件安装目录中的“quartus\drivers\usb-blaster”目录下,因此设置如图8.2.11所示的搜索位置后,点击“下一步(N)”,系统会根据搜索位置自动安装驱动程序。安装完成后,USB-Blaster在“设备管理器”中显示如图8.2.12所示。图8.2.11设置驱动程序的搜索位置图8.2.12USB-Blaster驱动程序安装成功8.3QuartusⅡ软件的开发过程8.3.1建立新项目

QuartusⅡ软件提供的新建工程指南会引导用户建立一个工程项目。新建工程的过程中包含对工程名称、工程文件、器件和第三方EDA工具的选择等,具体步骤如下:

(1)设置目录、工程名称和顶层实体名称。选择菜单命令“File”→“NewProjectWizard”,会出现一个“NewProjectWizard”的简介对话框,在该对话框中点击“Next”按钮将弹出如图8.3.1所示Directory,Name,TopLevelEntity”对话框,这个对话框用于设置工程项目存放目录、工程名称和工程顶层设计实体(Top-LevelDesignEntity)的名称,通常情况下可以将“工程名称”和“工程顶层设计实体”(简称“顶层实体”)设置为相同的名称。图8.3.1中将工程项目存放目录设置为“E:\sample1”,将工程名称和顶层实体名称都设置为“test1”。所谓“顶层实体”是系统设计文件最终顶层模块的名称,“顶层实体”的功能类似于C语言中main()函数的功能。在C语言中main()函数是整个程序的入口,main()是唯一的,且main()这个名称是不能改变的;在QuartusⅡ中,“顶层实体”是硬件的最终设计文件入口,这个文件是可以随时被设置的。图8.3.1设置目录、工程名称和顶层实体名称

(2)将已有设计文件添加到工程中。

在完成第(1)步后,点击“Next”按钮将会弹出“AddFiles”对话框,如图8.3.2所示。在这个对话框中可以在“Filename”的空白处选择或输入已存在的设计文件,然后选择“Add”

按钮将其加入到这个工程中,也可以使用“UserLibraries...”按钮把用户自定义的库函数加入到工程中使用,完成后点击“Next”按钮进入如图8.3.3所示对话框。由于这是我们的第

一个工程,在图8.3.2所示对话框中不做任何操作。图8.3.2在工程中添加文件

(3)选择使用的器件。图8.3.3所示是“Family&DeviceSettings”对话框。如果选中“Autodeviceselectedby

the

Filter”,则由编译器自动选择;否则就要在“Avalibabledevices”列表中手动选择所需的器件。由于DE2-70开发板中的FPGA芯片是CycloneⅡ系列中的EP2C70F896C6芯片,因此首先在“Devicefamily”中将“Family”选为“CycloneⅡ”,这样在“Availabledevices”下面的列表中就会列出CycloneⅡ的所有器件。这里根据需要选择的是EP2C70F896C6芯片。在对话框中还可以在右上侧通过设置器件的封装形式、引脚数目和速度级别等约束可选器件的范围,如图8.3.3所示。图8.3.3选择器件

(4)设置EDA工具。在完成第(3)步的操作后,点击“Next”按钮将会弹出“EDAToolSettings”对话框,如图8.3.4所示,询问是否选择其他EDA工具,用户可以根据自己的开发习惯选择EDA工具。这里使用Quartus自带仿真工具,因此直接选择“Next”,出现图8.3.5所示工程设置报告界面。图8.3.4EDA工具选择

(5)查看工程设置报告。

“Summary”对话框显示新建工程的设置情况,包括从第(1)步到第(4)步的所有用户设置,如图8.3.5所示。图8.3.5新建工程设置报告对话框

(6)进入工程开发设计界面。

在图8.3.5所示对话框中点击“Finish”完成工程的创建,并在软件界面顶部的标题栏显示工程名称和存储路径,如图8.3.6所示。图8.3.6中显示的软件界面,主要功能区域有标题栏、菜单栏、工具栏、资源管理窗口、编译状态窗口、信息显示窗口和工程工作区等。

•标题栏:显示当前工程的路径和工程名。

•菜单栏:主要由文件(File)、编辑(Edit)、视图(View)、工程(Project)、资源分配(Assignments)、操作(Processing)、工具(Tools)、窗口(Window)和帮助(Help)等下拉菜单组成。

•工具栏:包含了工程开发过程中一些常用命令的快捷方式图标。

•资源管理窗口:用于显示当前工程中的相关资源和文件。这个窗口包括三个标签:

Hierarchy标签提供工程的层级显示;Files标签提供所有的工程文件;DesignUnits标签提供设计单元的列表。

•工程工作区:在整个开发过程实现不同功能时,该区域将打开与其当时功能相对应的操作窗口,显示不同的内容,进行不同的操作,例如设计文件的录入、仿真设置、仿真分析、引脚分配、编程下载编译报告等都在该区域中操作或显示。

•编译状态窗口:显示编译过程模块综合、布局布线等各阶段的进度和所用时间。

•信息显示窗口:是一个消息处理器的显示窗口,可以提供详细的编译报告、警告和错误信息。设计者可以根据这里的某个消息定位到QuartusⅡ软件不同窗口中的相应位置,检查相关信息。图8.3.6工程创建完毕的软件界面这里补充说明一下,在新建工程完成后,也可以随时向工程中添加文件和改变器件的设置,具体操作如下。

(1)在工程中添加文件。

在资源管理窗的“Files”标签中选中文件夹,点击右键,会出现“Add/RemoveFilesinProject...”快捷菜单,如图8.3.7所示,点击后就可以进入文件添加对话框,这个对话框的界面与图8.3.2的类似。图8.3.7在资源管理窗添加文件(2)更改器件设置。在资源管理窗的“Hierarchy”标签中选中器件名称,点击右键,在出现的快捷菜单中选择“Device...”,如图8.3.8所示,点击后就可以进入器件设置对话框,这个对话框的界面与图8.3.3的类似。图8.3.8在资源管理窗重新设置器件8.3.2设计输入

QuartusⅡ软件开发过程中设计输入最常用的方式是原理图方式和HDL文本方式。下面将分别介绍这两种方式的具体设计步骤。

1.基于原理图的设计输入本节以全加器为例,说明如图8.3.9所示的电路原理图作为设计文件,在QuartusⅡ软件中的“绘图”过程。

8.3QuartusⅡ软件的开发过程

8.3.1建立新项目

QuartusⅡ软件提供的新建工程指南会引导用户建立一个工程项目。新建工程的过程中包含对工程名称、工程文件、器件和第三方EDA工具的选择等,具体步骤如下:

(1)设置目录、工程名称和顶层实体名称。

选择菜单命令“File”→“New

Project

Wizar”的简

介对话框,在该对话框中点击“Next”按钮将弹出如图8.3.11所示“Directory,Name,TopLevelEntity”对话框,这个对话框用于设置工程项目存放目录、工程名称和工程顶层设计实体(Top-LevelDesignEntity)的名称,通常情况下可以将“工程名称”和“工程顶层设计实体”(简称“顶层实体”)设置为相同的名称。图8.3.9全加器原理图8.3.2设计输入

QuartusⅡ软件开发过程中设计输入最常用的方式是原理图方式和HDL文本方式。下面将分别介绍这两种方式的具体设计步骤。

1.基于原理图的设计输入本节以全加器为例,说明如图8.3.9所示的电路原理图作为设计文件,在QuartusⅡ软件中的“绘图”过程。

1)建立原理图文件

执行菜单栏“File”→“New”命令,在如图8.3.10所示的新建文件窗口中选择“BlockDiagram/SchematicFile”,点击“OK”。在工作区中会自动生成一个名为“Block1.dbf”文件的空白图纸,并在图纸上侧自动打开如图8.3.11所示的绘图工具栏。接下来的工作就是在这张空白的图纸上,“绘制”图8.3.9所示的全加器电路图。图8.3.10建立原理图输入文件图8.3.11原理图编辑窗口和工具栏

2)放置元器件

图8.3.9中的全加器是由3个“与非门”和2个“异或门”组成的,因此需要从器件库中先找到“与非门”和“异或门”,并将这两个元件添加到原理图编辑窗口中。

在图8.3.11所示原理图编辑窗口中的任意空白处双击鼠标左键,会弹出图8.3.12(a)所示元件选择窗口,在这个窗口的左侧列出了当前工程的元件和系统提供的所有器件库,有两种方式可以查找所需的元件。一种方式是在图8.3.12(a)左侧的“Name”文本框中输入元件的名称;另一种方式是在图8.3.12(a)左侧的“Libraries”元件库窗口中,按照元件的分类查找所需的元件,拖动“Libraries”右边的滑块,这里可以根据元件类别按层次展开器件库,在展开的器件库中选择所需的元件。器件库中提供了各种逻辑功能符号,包括mega-functions(宏功能)、others、primitives(原语)等。原语库中主要包括基本逻辑单元库,如各种门电路、缓冲器、触发器、引脚、电源和地等。图8.3.12查找所需的元器件图8.3.13为元件命名3)放置输入和输出端口

图8.3.9有三个输入信号和两个输出信号,因此电路图还需要添加三个输入端口和两个输出端口,输入端口(input)和输出端口(output)可以在“Libraries”→“Primitives”→“Pin”分类下找到。将添加的三个输入端口分别命名为“A”、“B”和“C0”,两个输出端口命名为“S”和“C1”。输入端口和输出端口默认的引脚名称都是“pin_nameX”。为了操作方便,

一般是需要对其进行重新命名的,其命名方法与元件相似。图8.3.14是输入端口引脚“A”命名的对话框。图8.3.14为端口信号命名图8.3.15绘制完成后的全加器原理图

4)连线

添加完元件和输入/输出信号后,还需要将输入/输出端口、各元件按照图8.3.9进行连接。有两种连线的方式。第一种方式是在原理图编辑窗口的工具栏中选中(Orthogo-nalNodeTool,

nalNodeTool,垂直连线工具)图标,在需要连接线的起始位置点击鼠标左键,然后按住左键并拖动鼠标到连接线的终点,松开鼠标左键即可;第二种方式是将鼠标放到元件的引脚上,鼠标会自动变成“十”形状,按左键拖动鼠标,就会有导线引出,根据电路图画好所有连线。

5)保存原理图文件

完成全加器电路图的绘制后要将其保存。执行主窗口的“File”→“SaveAs”命令,将原理图文件取名为“myAdd1.bdf”,并保存在此工程项目建立的文件夹内。至此,基于原理图

的设计输入完成。

2.基于VerilogHDL语言的文本输入

下面同样以“全加器”为例,说明用VerilogHDL文本方式输入设计文件的过程。

1)建立VerilogHDL文件

执行主窗口的菜单栏“File”→“New”命令,在“DesignFiles”对话框中选择“VerilogHDLFile”,点击“OK”。2)输入源代码

在文本编辑窗口中输入全加器的源代码,具体代码如下:

moduleFadder(cout,sum,a,b,cin);//模块名,端口列表

outputcout,sum; //输出端口声明

inputa,b,cin;//输入端口声明

assign{cout,sum}=a+b+cin;//数据流语句a+b

endmodule//模块结束

文件编辑完毕后,保存上述VerilogHDL文件,并将其命名为“Fadder.v”。至此,基于VerilogHDL语言的文本设计输入完成。可以看到,利用VerilogHDL语言设计输入的方法更简洁,移植性、通用性好,便于修改设计,是目前普遍采用的设计方法。3)生成符号文件

用源代码编写的模块,如果要在原理图中使用,就需要生成符号模块。首先,在资源管理器中选择需要的源代码文件,然后执行主窗口的菜单栏“File”→“Create/Update”→

“CreateSymbolFilesforCurrentFile”命令,如果源代码文件没有语法错误,便可创建设计文件的符号模块,该模块会出现在Libraries器件库中的Project文件夹下,如图8.3.16左侧所示,创建的模块符号如图8.3.图8.3.16由VerilogHDL文件创建的全加器模块8.3.3编译

完整的编译包括Analysis&Synthesis、Fitter、Assembler和TimingAnalyzer四个主要过程的连续执行。

在工具栏中点击图标可以执行编译,或者选择菜单栏中的“Processing”→“StartCompilation”命令启动编译。本例中“全加器”的编译过程中编译状态窗口的信息如图8.3.17

所示图8.3.17编译过程中的编译状态窗口在图8.3.17显示的编译状态窗口中完成以下几个步骤:

(1)Analysis&Synthesis:完成综合的功能。

(2)Fitter:对设计进行布局布线。

(3)Assembler:为编程或配置目标器件建立一个或多个编程文件,包括.sof和.pof。

(4)TimeQuestTimingAnalysis:作为全编译的一部分自动运行,观察和报告时序信息,例如建立时间、保持时间、时钟至输出延时、引脚至引脚延时、最大时钟频率、延缓时间以及设计的其他时序特性。若顺利通过编译,则主窗口下方的“Messages”窗口会在编译过程结束后提示“QuartusⅡFullCompilationwassuccessful.”,并给出如图8.3.18所示的编译报告,详细列出该硬件设计占用可编程芯片的资源情况,包括逻辑单元(TotalLogicElements)、寄存器(Total

Registers)、引脚(TotalPins)、

乘法器(EmbeddedMultiplier9-bitElements)和锁相环(TotalPLLs)等资源。

编译结束后,可以在RTL视图中看到综合后生成的电路图,用户可以分析综合后结果是否与所设想中的设计一致。执行“Tools”→“NetlistViewers”→“RTLViewer”命令打开RTL视图,本实例中用VerilogHDL实现的Fadder模块的RTL结果如图8.3.19所示。RTL阅读器右侧的窗口是设计结果的主窗口,包括设计电路的模块和连线;层次列表的内容包括以下几个方面:

(1)实例(Instances):能够被继续展开成低层次模块或实例。

(2)原语(Primitives):是最低层次的节点,不能被展开。

(3)引脚(Pins):当前层次的I/O端口。如果端口是总线,也可以将其展开,观察到每一个端口的信号。

(4)网线(Nets):连接节点的连线。当网线是总线时也可以展开,观察每条网线。图8.3.18编译报告图8.3.19RTL视图8.3.4功能仿真

仿真是指在软件环境中验证电路的功能是否能够满足设计要求。仿真分为功能仿真和时序仿真。功能仿真主要验证在不考虑电路时延的情况下,输入和输出之间的逻辑关系是否正确。时序仿真则是在电路已经映射到特定的工艺环境后,考虑器件中实际存在的电路延时对布局布线网表文件进行的一种仿真。仿真是对设计方案的验证,首先要保证功能仿真结果是正确的,在功能仿真通过后,如果在时序分析中发现时序不能满足要求,就需要更改设计,直到功能仿真和时序仿真都能达到设计要求。

QuartusⅡ软件支持功能仿真和时序仿真。在QuartusⅡ软件中可以对整个设计进行仿真,也可以只对项目中的某个子模块进行仿真。仿真时需要提供激励源,矢量波形文件

.vwf是QuartusⅡ软件中最常用的激励源文件,这里着重介绍以矢量波形文件.vwf作为激励源进行仿真的完整操作过程。

仿真一般分为建立矢量波形文件、添加输入输出节点、编辑输入信号、保存矢量波形文件和进行功能仿真等过程。

1.建立矢量波形文件

在进行仿真之前,必须为仿真的输入信号提供测试激励,测试激励被保存在矢量波形文件中。

在主菜单中执行“File”→“New”命令,在弹出的“New”对话框中选择“UniversityPro-gramVWF”会自动建立一个空白的波形文件,并打开如图8.3.20所示波形编辑器,自动为

该波形文件命名为“Waveform3.vwf”。波形编辑器由左右两部分组成:左边是信号窗口,显示用于仿真的输入和输出信号的名称及信号在标定时刻的状态取值;右边是波形窗口,显示对应信号的波形图。窗口的上方是波形编辑工具栏。图8.3.20所示波形编辑器中显示的整个仿真的时间长度是960ns。如果需要改变这个时间长度则可以选择主菜单“Edit”→“SetEndTime...”进行设置。图8.3.20波形编辑器

2.添加输入输出节点

在编辑输入波形之前,需要在待测试的电路中找到所需观测的信号。在FPGA的术语中,“节点”一词用来指电路中的信号,可以是输入信号(输入节点)、输出信号(输出节点)或内部信号。对于本例中的全加器,需要找到输入和输出节点,这个过程是通过使用一个名为“NodeFinder”的操作来完成的。在波形编辑器信号窗口的空白处点击鼠标左键或在波形编辑窗口的菜单中选择Edit”→“Insert”→“InsertNodeorBus...”,出现如图8.3.21所示的弹出窗口,点击右侧的“NodeFinder...”,会出现如图8.3.22所示的“NodeFinder”窗口。图8.3.21“InsertNodeorBus...”窗口图8.3.22“NodeFinder”窗口在本例中,点击“List”按钮后,左侧的“NodesFound”列表框列出了全加器电路所有输入、输出引脚“A”、“B”、“C0”、“C1”、“S”。右侧为选中信号列表框。如果选择单个节点,可以在左侧的待选节点窗口中选择所需的输入和输出节点,然后点击中间的按钮将所需的信号添加到右侧的选中节点列表中。若要将所有输入输出信号添加到右侧窗口中,则可以直接点击中间的按钮。节点选择完成后的NodeFinder”窗口如图8.3.23所示。

点击图8.3.23所示的“OK”按钮,回到图8.3.21所示“InsertNodeorBus”窗口中,再次点击“OK”按钮,回到波形编辑窗口,这时会看到如图8.3.24所示添加了观测节点的波图8.3.23仿真节点选择后的结果图8.3.24添加观测节点后的波形编辑窗口图8.3.25调整网格宽度

3.编辑输入信号

绘制输入信号波形的方法有多种。最直接的方法是选定某个信号的一个时间范围,并指定该范围信号的取值。

波形编辑窗口中的波形编辑工具栏为编辑输入信号的波形提供了方便,图8.3.26标出了工具栏中各快捷按钮的功能。图8.3.26波形编辑工具栏图8.3.27时钟信号设置对话框下面说明本节中全加器的三个输入信号“A”、“B”和“C0”绘制的过程。下面分别用不同的方法对这三个信号进行设置。

(1)信号“A”。在160ns点附近的输入信号“A”波形上点击鼠标,然后将鼠标拖动到320ns点。所选的时间段以蓝色突出显示,如图8.3.28(a)所示。通过点击图标将波形的值更改为1,如图8.3.28(b)所示。

(2)信号“B”。另一种可以编辑波形的方式是通过使用反转图标将选定的时间间隔内信号的值取反。我们使用这种方法来创建信号“B”的波形。在“B”信号波形内选择80~160ns时间图8.3.28编辑全加器输入信号“A”的波形图8.3.29编辑全加器输入信号“B”的波形

(3)信号“C0”。

我们使用第三种方法来绘制“C0”的波形。这个信号应该在每隔40ns的区间取值在0和1之间交替变化。信号的这种规律变化的模式与逻辑电路中使用的时钟信号类似。“C0”

虽然不是时钟信号,但以时钟信号的设置方式指定“C0”是很方便的。

在信号窗口点击“C0”输入,它将选择“C0”的整个仿真时间,然后点击时钟图标,会弹出如图8.3.30所示窗口,这里设置80ns的时钟周期和50%的占空比。图8.3.30时钟信号参数设置图8.3.31编辑全加器输入信号C0”的波形图8.3.32数据显示格式设置图8.3.32中各选项对应的数据格式如下:•Binary:二进制数。•Octal:八进制数。•Hexadecimal:十六进制数。•SignedDecimal:有符号十进制数。•UnsignedDecimal:无符号十进制数。•Fractional:小数。•ASCII:ASCII码。

4.保存矢量波形文件在设置完输入信号的波形后,就可以保存波形文件了。具体方法是:点击主窗口的保存按钮,并对输入波形文件命名后,系统会将其保存在当前工程所建立的文件夹中。这里将前面编辑的全加器的矢量波形文件命名为Fadder.vwf。

5.进行功能仿真

生成矢量波形文件后,就可以对电路的功能进行仿真了。在波形编辑窗口的主菜单中选择“Simulation”→“RunFunctionalSimulation”,或者工具栏上的按钮,会自动弹出一个显示仿真过程的窗口并在过程结束后自动关闭,随后会自动弹出一个与波形编辑器类似的窗口,该窗口中给出了输出波形,如图8.3.33所示。在这个窗口中,所有的波形都是只读的,所以输入波形如果有任何变化则必须重新修改波形文件,然后重新进行仿真。从图8.3.33中可以看出,输出信号“本位和”信号“S”和“本位向高位的进位”信号“C1”与输入信号“A”、“B”和“C0”的关系与全加器的真值表一致。图8.3.33全加器功能仿真结果8.3.5时序仿真

在功能仿真正确后,可以加入电路的传输延时,进行时序仿真。在波形编辑窗口中选择“Simulation”→“RunTimingSimulation”,或者工具栏上的按钮,会自动弹出一个显示仿真过程的窗口并在过程结束后自动关闭,随后会自动弹出一个时序仿真结果窗口,如图

8.3.34所示。同样的,在这个窗口中所有的波形也都是只读的,如果输入信号有任何变化则必须修改波形文件,然后重新进行仿真。

与图8.3.33比较,可以明显地看到输出波形相比输入波形相对应有大约6ns的延时,同时波形中还显示出由于竞争产生的毛刺。图8.3.34全加器时序仿真结果8.3.6工程配置及引脚分配

1.器件的配置

选择“Assignments”→“Device”选项,打开如图8.3.35所示的器件设置对话框。在该对话框里可选用工程所需要的、QuartusⅡ软件所支持的元器件种类。除了选择器件的型号,

还要选择“DeviceandPinOptions...”选项,打开如图8.3.36所示的器件配置对话框,可以设置配置芯片、未使用引脚的状态以及其他选项。

(1)设置配置芯片。

在图8.3.36左侧的类别选择窗口中选择“Configuration”配置器件,在右侧勾选“Useconfigurationdevice”,并在右侧的器件中选中配置芯片,如EPCS16。

(2)配置未使用引脚的状态。

在左侧的类别选择窗口中选择“UnusedPins”,弹出如图8.3.37所示对话框。在该对话框里可以设置未使用引脚的工作状态,如设置成输入三态。器件的其他选项可以根据实

际需要选择配置。图8.3.35器件设置对话框图8.3.36器件配置对话框图8.3.37设置未使用引脚的状态

2.引脚分配

对可编程器件配置完成后,为了能对“全加器”进行硬件测试,应将其在FPGA芯片上配置的引脚与DE270开发板上的硬件资源建立对应关系。DE270开发板上的资源非常

丰富,这里只介绍简单的输入/输出设备,如开关和发光二极管。DE270开发板上的资源与FPGA芯片EP2C70F896C6引脚的对应关系如表8-1所示。在QuartusⅡ软件的Assignments菜单下点击“PinPlanner”,会出现如图8.3.38所示的引脚分配工具。它右侧是器件的封装视图,在封装图中以不同的颜色和符号表示不同类型的引脚,并以其他符号表示I/O块;左下角在默认状态下显示“AllPins”列表。

在器件封装视图中点击右键,可以选择显示指定特性的引脚、显示器件的总资源、查找引脚等功能。将鼠标放于某个引脚的上方,会自动弹出该引脚属性的标签,双击该引脚打开引脚的属性窗口可以对其进行配置。在“AllPins”列表中“NodeName”栏已经列出设计中所有的输入/输出引脚。在“NodeName”列是每个端口的名称,在“Location”列是每个端口对应的引脚,在这里可以按照表

82对全加器的端口进行引脚分配。图8.3.38显示的是引脚分配完毕的状态。

引脚分配的另一种方法是在主窗口的菜单栏“Assignments”中选择“AssignmentEditor”后,弹出如图8.3.39所示的窗口。双击“To”栏选择输入需要分配的引脚“A”,在“AssignmentName”列设置为Location的情况下,在“Value”列设置芯片的引脚。

需要注意的是,在工程配置和引脚分配完成后,必须重新编译工程。图8.3.38设置未使用引脚的状态图8.3.39用PinEditor分配端口引脚前面的引脚分配方法需要手工配置每个端口,适合硬件设计引脚数量不多的情况。如果系统的引脚数量比较多,这种方法就比较繁琐了。在这种情况下可以采用文件导入的方

式,批量进行引脚分配,具体方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论