QUARTUSII基本使用方法.doc
Quartus II 6.0的使用以10进制计数器为例 物理硬件基于康芯GW48PK实验箱 目 录1 基于Quartus II的系统设计流程 . 22 计数器的 VHDL 设计 . 32.1 编辑设计文件 . 32.2 创建工程 . 52.3 编译前设置 .92.4 编译 .112.5 仿真 . 13 2.6 引脚锁定 . 172.7 编程下载 . 18附:本讲义所用VHDL程序源代码.21QuartusII 基本使用方法Altera 的 QuartusII 提供了完整的多平台设计环境,能满足各种特定设计的需要,是单芯片可编程系统(SOPC)设计的综合性环境和 SOPC 开发的基本设计工具,并为 Atera DSP开发包进行系统模型设计提供了集成综合环境。QuartusII 设计环境完全支持 VHDL、Verilog的设计流程,其内部嵌有 VHDL、Verilog 逻辑综合器。QuartusII 也具备仿真功能,此外,与 MATLAB 和 DSP Builder 结合,可以进行基于 FPGA 的 DSP 系统开发,是 DSP 硬件系统实现的关键 EDA 工具。本章将以数个简单的例子详细介绍 QuartusII 的使用方法,包括设计输入、综合与适配、仿真测试、优化设计和编程下载等方法。1、基于Quartus II的系统设计流程Quartus II 的一般设计流程如图1所示,QuartusII 支持多种设计输入方法,如:原理图式图形设计输入、文本编辑、第三方工具等。图 1 QuartusII 的设计流程2 计数器的 VHDL 设计通过一个 4 位二进制计数器的设计实例,对 QuartusII 的重要功能和使用方法作一些说明,并详细介绍 QuartusII 的基本设计流程。2.1 编辑设计文件首先建立工作库目录,以便设计工程项目的存储。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹。此文件夹将被 EDA 软件默认为工作库(Work Library)。一般,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。在建立了文件夹后就可以通过 QuartusII 的文本编辑器编辑设计文件,步骤如下:(1)新建一个文件夹。这里假设本项设计的文件夹取名为 CNT,在 F 盘中,路径为F:CNT。注意:文件夹名不能用中文,也最好不要用数字。(2)输入源程序。打开 QuartusII,选择菜单“File”“New”,在 New 窗口中的“DeviceDesign Files”中选择编辑文件的语言类型,这里选择“VHDL File”(如图2-1所示)。然后在 VHDL 文本编辑窗口中输入,如图 2-2所示,4 位二进制计数器的VHDL 程序。图 2-1选择编辑文件的语言类型图2-2编辑输入设计文件(3)文件存盘。选择菜单“File”“Save As”,找到要保存的文件夹F:CNT,文件名应与实体名一致,即counter.vhd。当出现图 2-3 中所示的“Do you want to create a new project with this file?”对话框时,若单击“是”,则直接进入创建工程流程;若单击“否”,则可以以后再为该设计创建工程。如果保存文件时将“Create newproject based on this file”前的“”,则不会出现该对话框。图2-3保存设计文件2.2 创建工程在此要利用 New Project Wizard 工具选项创建此设计工程,即令 cnt10.vhd 为工程,并设定此工程的一些相关的信息,如工程名、目标器件、综合器、仿真器等。详细步骤如下:(1)打开建立新工程管理窗。选择菜单“File”“New Project Wizard”,即弹出工程设置对话框(如图 2-4 所示)。单击此对话框最上一栏右侧的“”按钮,找到文件夹 D:CNT,选中文件 cnt10.vhd(一般应设顶层设计文件为工程),在单击“打开”按钮,即可出现图2-4所示的设置情况。其中第一行的 D:CNT 表示工程所在的工作库文件夹;第二行的 cnt10 表示此项工程的工程名,此工程名可以取任何名字,一般直接用顶层文件的实体名作为工程名;第三行是顶层文件的实体名,这里即为 cnt10。图2-4 利用New Project Wizard创建工程cnt4(2)将设计文件加入工程。单击图 2-4 中的 Next 按钮,在弹出的对话框中单击 File 栏的按钮,将与工程相关的所有 VHDL 文件加入此工程,即得到如图 2-5 所示的情况。将工程文件加入的方法有 2 种:第1种方法是单击按钮,从文件夹CNT中选出相关的 VHDL 文件,如我们刚刚存放的cnt10.vhd;第2种方法是单击 Add All 按钮,将设定的工程目录中的所有 VHDL 文件加入到工程文件栏中。图 2-5将相关文件加入工程(3)选择目标芯片。单击图 2-5 中的 Next 按钮,选择目标芯片。首先在 Family 栏选择Cyclone,在 Available devices 栏选择 EP1C12Q240C8(器件较多时,也可以通过右侧的封装、引脚数、速度等条件来过滤选择)。图2-6选择目标芯片(4)选择综合器和仿真器类型。单击图 2-6 中的 Next 按钮,这时弹出的窗口是选择仿真器和综合器类型,如果默认都不选择,表示用 QuartusII 中自带的仿真器和综合器。在此处我们什么也不选。图2-7选择仿真器和综合器(5)结束设置。单击图2-7中的Next 按钮,即弹出“Summary”窗口,上面列出了此项工程相关设置情况。单击 Finish 按钮,即可设定好此工程。建立工程后,可以使用 Settings 对话框(Assignments 菜单)的 Add/Remove 页在工程中添加和删除、设计其他文件。如果现有的Max+PLUS II的工程,还可以使用Convert Max+PLUS II Project 命令(File 菜单)将 Max+PLUS II 的分配与配置文件(acf)转换为QuartusII 工程。图2-8设置完成时的信息页面窗口2.3 编译前设置在对工程进行编译处理前,必须做好必要的设置,步骤如下:(1)目标芯片选择。选择Assignments菜单中的 Device 项(也可以选择Assignments菜单中的Settings 项,在弹出的对话框中选择 Category 项下的 Device),然后选择目标芯片(方法同创建工程中的第3步),如图2-9所示。之后点击Device & Pin Options按钮,如图2-10所示,会弹出Device & Pin Options窗口,如图2-11所示。图2-9选择器件 图2-10Setting窗口(2)选择目标器件闲置引脚的状态。在 Device & Pin Options 窗口中,如图2-11所示,选择 Unused Pin项,设置目标器件闲置引脚的状态为输入状态(呈高阻态)。图2-11设置闲置引脚状态2.4QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。在这一过程中将设计项目适配进FPGA/CPLD 目标器件中,同时产生多种用途的输出文件,如功能和时序仿真文件、器件编程的目标文件等。编译器首先从工程设计文件间的层次结构描述中提取信息,包括每个低层次文件中的错误信息,供设计者排除,然后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的文件结合成一个数据包,以便更有效地处理。在编译前,设计者可以通过各种不同的设置,指导编译器使用各种不同的综合和适配技术,以便提高设计项目的工作速度,优化器件的资源利用率。而且在编译过程中和编译完成后,可以从编译报告窗中获得所有相关的详细编译结果,以利于设计者及时调整设计方案。 下面首先选择 Processing 菜单的 Start Compilation 项或Quartus II工具栏中的Start Compilation快捷键,如图2-12所示,启动全程编译。注意这里所谓的编译(Compilation),包括以上提到的 QuartusII 对设计输入的多项处理操作,其中包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。图2-12启动全程编译如果工程中的文件有错误,在下方的Processing栏中会显示出来(如图2-13)。对于Processing 栏中显示的语句格式错误,可双击此条文,即弹出对应的 VHDL 文件,在深色标记条处即为文件中的错误。修改后再次编译直至排除所有错误,直到出现图2-14所示界面,点击确定按钮即可。图2-13全程编译后出现报错信息图2-14全程编译成功了解编译结果包括以下一些内容:(1)阅读编译报告。编译成功后可以见到如图 2-14 的界面。此界面左上角是工程管理窗;在此栏下是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析;最下栏是编译处理信息;右栏是编译报告,可以通过 Processing 菜单下的 Compilation Report 查看。(2)了解工程的时序报告。点击图 2-14 中间一栏的 Timing Analyses 项左侧的“+”号,可以看到相关信息。(3)了解硬件资源应用情况。点击图 2-14 中间一栏的 Flow Summary 项,可以查看硬件耗用统计报告;点击图 2-14 中间一栏的 Fitter 项左侧的“+”号,选择 Floorplan View,可以查看此工程在 PLD 器件中逻辑单元的分布情况和使用情况。(4)查看 RTL 电路。选择菜单 Tools 下Netlist Viewers的 RTL Viewer,即可看到综合后的 RTL 电路图,如图 2-15 所示。图2-15RTL 电路图2.5 仿真仿真就是对设计项目进行全面彻底的测试,以确保设计项目的功能和时序特性,以及最后的硬件器件的功能与原设计相吻合。仿真可分为功能方针和时序仿真。功能仿真只测试设计项目的逻辑行为,而时序仿真则既测试逻辑行为,也测试实际器件在最差条件下设计项目真实运行情况。仿真操作前必须利用 QuartusII 波形编辑器建立一个矢量波形文件(VWF)作为仿真激励。VWF 文件将仿真输入矢量和仿真输出描述成为一波形的图形来实现仿真,但也可以将仿真激励矢量用文本表达,即文本方式的矢量文件(.vec)。QuartusII允许对整个设计项目进行仿真测试,也可以对该设计中的任何子模块进行仿真测试。对工程的编译通过后,必须对其功能和时序性质进行仿真,以了解设计结果是否满足原设计要求。以 VWF 文件方式的仿真流程的详细步骤如下:(1)打开波形编辑器。选择菜单 File 中的 New 项,在 New 窗中选Other Files中的Vector Waveform File(如图2-13),点击OK,即出现空白的波形编辑器(图 2-16)。图2-16新建矢量波形文件 (2)设置仿真时间区域。为了使仿真时间轴设置在一个合理的时间区域上,在 Edit 菜单中选择 End Time 项,在弹出的窗口中的 Time 栏中输入50,单位选择“us”,即整个仿真域的时间设定为 50s,单击“OK”,结束设置。(3)保存波形文件。选择 File 中的 Save As,将名为 cnt10.vwf(默认名)的波形文件存入文件夹 F:CNT 中。(4)输入信号节点。将计数器的端口信号选入波形编辑器中,方法是首先选 Edit 菜单中的 Insert Node Or Bus选项,然后单击 Node Finder按钮,在图2-17的Filter框中选 Pins:all,然后单击 List,则在下方的 Nodes Found 窗口出现 Cnt10 工程的所有引脚名(如果此对话框中的 List 不显示,需要重新编译一次,然后再重复以上操作过程)。选择要插入的节点,可以按“”、“”逐个添加或删除节点,也可以按“>>”、“<<”添加或删除所有节点,选择完毕后按“OK”。点击波形窗口左侧的全屏显示按钮“”,使波形全屏显示,然后按放大缩小按钮“”,使仿真坐标处于适当位置(图 2-18)。图2-17选择节点图2-18插入节点后的波形编辑器(5)编辑输入波形(输入激励信号)。点击图 2-18 中的时钟信号名 clk,使之变成蓝色,再点击左侧的时钟设置键“”,在 Clock 窗口中设置 clk 的周期为 2s(如图 2-19)。图中的Duty Cycle是占空比,可以选50,即占空比为 50%的方波。点击 en 和 rst 设置其波形,可以通过“”和“”直接将信号设为“0”或“1”,也可以按住鼠标左键在波形编辑区拖动选择某一段波形,将其值设为“0”或“1”。对于总线数据,可以通过“”设置其波形。图2-19设置时钟波形 (6)仿真器参数设定。选择菜单 Assignment 中的 Settings,在 Settings 窗口的 Category下选 Simulator,在此项下可观察仿真总体设置情况;在 Simulation栏确认仿真模式为时序仿真“Timing”;在 Simulation Options 栏,确认选定 Simulation coverage reporting,毛刺检测 Glitch detection 为 1ns 宽度。图2-20选择时序仿真(7)启动仿真器。在菜单 Processing 项选择 Start Simulation,直到出现图2-21中,仿真成功结束。图2-21仿真成功(8)观察仿真结果。仿真波形文件 Simulation Report 通常会自动弹出(图 2-22)。注意QuartusII 中,波形编辑文件(*.vwf)与波形仿真报告文件(Simulation Report)是分开的,而 Max+Plus II 中编辑与仿真报告波形是合二为一的。如果在启动仿真后,没有出现仿真完成后的波形图,而是出现文字“Cant open Simulation Report Window”,但报告仿真成功,则可以通过选择 ProcessingSimulation Report 自己打开仿真波形报告。图 2-22仿真波形输出2.6引脚锁定为了能对计数器进行硬件测试,应将计数器的输入输出信号锁定在芯片确定的引脚上。将引脚锁定后应再编译一次,把引脚信息一同编译进配置文件中,最后就可以把配置文件下载进目标器件中,完成FPGA的最终开发。选择GW48EDA系统的电路模式5,确定引脚分别为:主频时钟CLK接clock0(第28脚,可接在4Hz上);计数使能EN接电路模式5的键1(PIO0对应第233脚);复位RST接电路模式5的键2(PIO1对应第234脚);溢出COUT接发光管D1(PIO8对应第1脚);4位输出总线CQ3.0分别接PIO19、PIO18、PIO17、PIO16(它们对应的引脚编号分别为16、15、14、13),可由数码1来显示。接下来进行引脚锁定,具体步骤如下:(1)打开cnt10.qpf工程文件;(2)选择主菜单中Assignments的Assignments Editor命令,进入Assignments Editor 编辑窗口,在Category下拉列表框中选择Pin,或直接单击右上侧的Pin按钮,如图2-23所示。图 2-23 Assignments Editor在图 2-23 中下面的表格里To列对应的行中双击鼠标左键,将显示本工程中所有的输入输出端口,选择要分配的端口即可,在 Location 对应的行中双击鼠标左键,将显示芯片所有的引脚,选择要使用的引脚即可。以同样的方法可将所有端口锁定在对应的引脚上,如图2-24所示结果。引脚锁定后,存储引脚锁定信息,之后必须再编译一次(ProcessingStart Compilation),将引脚信息编译进下载文件中,这样生成的sof文件才可被下载到FPGA中去。图 2-23 表格方式引脚锁定窗口2.7 编程下载打开编程窗和配置文件。用带仿真器的USB数据线连接实验箱上适配板的JTAG口和PC机,打开电源。(1)选择主菜单中Tools的Programmer命令,弹出图2-24所示窗口,在Mode下拉列表框中有4种编程模式可选择:JTAG、Passive Serial、Active Serial Programming和In-Socket Programming。为了直接对FPGA进行配置,选JTAG(默认),并选中下载文件右侧的第一个小方框。注意要仔细核对下载文件路径与文件名。如果文件没有出现或者有错,可单击左侧的Add File按钮,手动选择配置文件cnt10.sof。图 2-24 选择编程下载文件(2)设置编程器。若是初次安装的Quartus II,在编程前必须进行编程器选择操作。这里准备选择USB-BlasterUSB-0。单击Hardware Setup对话框中,选择Hardware Settings选项卡,双击此选项卡中的选项USB-ByteBlaster,如图2-25所示,单击Close按钮,关闭对话框即可。这时应该在编程窗口右上方显示出编程方式:USB-BlasterUSB-0,如图2-26所示。如果在图2-25所示的窗口内的Currently selected Hardware右侧显示No Hardware,则必须加入下载方式。即单击ADD Hardware按钮,在弹出的窗口中单击OK按钮,再在图2-25中双击USB-ByteBlaster,使得Currently selected Hardware右侧显示USB-ByteBlasterUSB-0。图 2-25 双击USB-Blaster图 2-26 设置编程器(3)下载。单击Start按钮,即进入对目标器件FPGA的配置下载操作。当Process显示100%,并且在底部的处理栏出现Configuration Succeeded是,表示编程下载成功。(4)硬件测试。下载cnt10.sof成功后,选择电路模式5,CLK通过实验箱上的clock0的跳线选择频率4Hz;键1置高电平,控制EN允许计数;键2先置高电平,后置低电平,使RST产生复位信号。观察数码管1和发光管D1了解计数器工作情况。附:cnt10.vhdLIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY cnt10 IS PORT( CLK,RST,EN:IN std_logic; CQ:OUT std_logic_vector(3 downto 0); COUT:OUT std_logic);END cnt10; ARCHITECTURE behav OF cnt10 IS BEGIN PROCESS(CLK,RST,EN) Variable CQI:std_logic_vector(3 downto 0); BEGIN IF ( RST = '1' ) THEN CQI:=(OTHERS=>'0'); ELSIF CLK'EVENT AND CLK='1' THEN IF EN='1' THEN IF CQI<9 THEN CQI:=CQI+1; ELSE CQI:=(OTHERS=>'0');END IF; END IF; END IF; IF CQI=9 THEN COUT<='1' ELSE COUT<='0'END IF; CQ<=CQI; END PROCESS; END behav;