基于Quartus II 软件(VHDL)设计
基于Quartus II 软件设计流程
目录
quartus ii 安装请参考:
Quartus II 13.1的安装及使用_HarrietLH的博客-CSDN博客
添加器件库请参考:
Quartus II 13.1添加器件库方法_逗比不是我的博客-CSDN博客_quartusii怎么添加子模块
关于程序的烧录等请参考:
verilog学习笔记- 1)Quartus软件的使用_Vizio_的博客-CSDN博客
一,基于 Quartus II 的数字系统设计流程
Altera Quartus II 设计软件提供完整的多平台设计环境,能够直接满足特 定设计需要,为可编程芯片系统( SOPC)提供全面的设计环境。Quartus II 软件 含有 FPGA 和 CPLD 设计所有阶段的解决方案。Quartus II 的开发流程如图所示
图中的流程:设计输入->综合->布线布局->时序分析->仿真->编程配 置,在 Quartus II 中综合、布线布局、时序分析都包含在编译中,也就是在点 击 Start Complication 后,软件会自动完成这三部分的功能。设计输入一般有 文本输入、图形输入、网表输入等几种方法,仿真之前需要编辑好输入信号激励 文件,编程配置则需要根据开发板的说明书来对系统的输入输出管脚进行配置。 此外,Quartus II 软件为设计流程的每个阶段提供 Quartus II 图形用户界 面、EDA 工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个, 也可以在设计流程的不同阶段使用不同界面。
二,Quartus II 软件使用介绍
Quartus II 软件可以完成设计流程的所有阶段。它是一个全面的、易于使用 的独立解决方案。图显示 Quartus II 图形用户界面为设计流程每个阶段 所提供的功能。
1. 建立工程
1)启动 Quartus II 软件后,就会出现如图 6- 5 所示的用户图形界面。
2)使用 New Project Wizard(File 菜单)或 quartus_map 可执行文件建立 新工程。建立新工程时,指定工程工作目录,分配工程名称,指定顶层设计实体的名称。 在用户图形界面点击 File 菜单,在 File 下拉菜单中点击 New Project Wizard, 如所图所示。点击 New Project Wizard 后,出现如所图界面。
用户图形界面
点击 File 下拉菜单中的 New Project
新建工程向导:目录、名称和顶层设计实体名
在指定路径之前,可以先新建一个工程文件夹,如在这里我们新建一个工程 文件夹并命名为 counter_displayer,将工程取名为 counter_displayer,因为 工程的顶层设计实体名应与工程名一致,所以工程的顶层设计实体名也是 counter_displayer,设置后如图所示,然后点击 next。
3)出现如图所示的添加设计文件的对话框。 当然,在这里可以选择不添加文件而直接点击 next 进入下一步,因为在 Quartus II 用户图形界面中也可以通过点击 assignment-> setting-> files 来 添加您所需要的文件。所以在这里 我们直接点击 next 进入下一步。
4)出现如图所示的器件系列设置对话框。对于不需要下载到开发板而只想软件仿真的设计,在这里可以不用指定特定 的器件,让软件自动选择适当的器件,但对于需下载到开发板来实现的设计,就 应该在这里选择与开发板上对应的芯片。例如,若开发板上用的是 Cyclone II 系列的 EP2C8Q208C8 的芯片,那么就应该在下拉菜单 Family 下应选择 Cyclone II,在 Available devices 中选择 EP2C8Q208C8,然后点击 Next。
新建工程向导:添加设计文件对话框
新建工程向导:器件系列设置对话框
5)出现如图 6- 10 所示的 EDA 工具设置对话框。 Quartus II 软件本身包含了一套完整的开发流程,从设计输入、分析与综合、 功能仿真、适配、时序分析、时序仿真,到下载都可以在 Quartus II 中完成, 对于没有特别的要求可以不调用其他的 EDA 软件,在这里直接选择 Next 进入下 一步。
新建工程向导:EDA 工具设置对话框
6)出现如图 6- 11 所示的新建工程摘要界面。
新建工程的摘要
至此,一个新工程已经建立好,点击 Finish 可以进入到此工程的编辑环境。 这个设计可以分为两个部分:第一部分就是十六进制计数器;第二部分是七 段数码管的显示部分。对于计数器就直接调用软件库里面的模块,显示部分实际 上也就是个译码电路,所以接下来我们将详细说明这两部分的设计来介绍从设计 输入到下载的整个流程。
2. 设计输入
可以使用 Quartus II 软件在 Quartus II Block Editor 中建立设计,或使 用 Quartus II Text Editor 通过 AHDL、Verilog HDL 或 VHDL 设计语言来建立 HDL 设计。Quartus II 软件还支持采用 EDA 设计输入和综合工具生成的 EDIF InputFiles(.edf)或 13 Verilog Quartus Mapping Files (.vqm)建立的设计。另外,还可以在 EDA 设计输入工具中建立 Verilog HDL 或 VHDL 设计,生成 EDIF 输入文件和 VQM 文件,或在 Quartus II 工程中直接使用 Verilog HDL 或 VHDL 设计文件。 在这个设计中,采用 Quartus II Block Editor 和 Quartus II Text Editor 两种输入组合来完成设计。
(1)设计译码器电路首先设计译码器电路,采用文本输入方式来描述此电路, 它的输入来自十六进制计数器的输出:qa、qb、qc 和 qd,译码器的输出连接到 七段数玛管,这是个典型组合逻辑电路。在 Quartus II 图形用户界面下:点击 File->New 后,在如图 6- 12 所示的对话框中选择 VHDL File。
双击 VHDL File 之后,保存文件 VHDLl.vhd,文件名读者可以自己命名,但 文件名一般都是和程序或电路相关的,如在这里我们取名为 decode,保存后出 现如图 6- 13 所的代码编辑窗口。 图 6- 13 中,decode.vhd 是保存后的文件名,而 counter displayer 是整 个工程的工程名,因为在一个工程下可以包含多个文件(.vhd,.bsf 等等),接 下来就是编写此组合逻辑电路来实现译码的功能,如图 6- 14 所示
程序中信号的命名因人而异,但主要是为了方便自己阅读程序,当然对于复 杂的程序,应养成给程序添加注释的习惯,以便日后查阅或供他人阅读。其中 qa、qb、qc、和 qd 来自计数器的输出;seven_seg_input 是译码器的输出信号, 输入到七段数码管。 程序输入完之后,就可以对这段代码进行编译了。但应该注意的是,先把 decode.vhd 设为顶层文件再进行编译,不然编译报错说找不到顶层文件,设置 方法:在 Quartus II 软件中点击 Project 菜单,出现如图 6- 15 所示的对话框, 并选择 Set as Top-Level Entity 或直接使用组合键 Ctrl+ Shift +J,然后就 可以点击编译进行编译了
点击上图中的紫色小箭头进行编译
编译完之后,将此程序生成 block 块,在设计整体功能时要调用到这个模块, 生成 block 块的方法是:在用户界面中点击 decode.vhd 文件,使之处于当前活 动窗口,然后点击 File-> Create\Update->Create Symbols for Current File,等待 symbol 的生成,如图 6- 16 所示。 成功生成之后会有对话框提示:Create symbol file was successful,生 成的 block 会自动添加到 Project-> decode 下,如图 6- 17 所示。 到这一步,译码器电路就已经完成了。 (2)建立观察模块为了仿真的方便,我们生成另一个小模块,在仿真的时候 便于我们观察计数器的计数过程。描述如下:把计数器的输出信导 qa、qb、qc 和 qd 作为译码器输入的同时,又将此 4 个信号作为这个小模块的输入,小模块 的输出信号是 result,也就是计数器的输出,信号 result 的值是从 0-直到 15, 其实和译码器的输出是一样的,不同的是:小模块 counter_output 的输出信号 result 是为了在时序仿真是便于观察计数器的计数,而译码器 decode 的输出信 号 seven_segment[7..0]在下载配置的时候是和七段数码管相对应的,直接控制 数码管上显示的计数值。
此模块的设计过程可以参考译码器电路的设计过程。首先新建个.vhd 文件, 保存为 counter.vhd 文件,然后在此文件中编辑代码实现功能,接着编译并为此 文件创建一个 block块。
(3)建立顶层文件在步骤 1)和 2)中,都是先在文本编辑器中编辑程序,编 译通过后再生成一个与之对应的模块,这两个模块在工程文件夹中的名字分别 是:decode.bsf 和 counter_output.bsf,下面需完成此设计的最后一步,点击 File-> new 后,在弹出的对话框中(见图 6- 12)选择 Block Diagram/Schematic File,用图形编辑器来新建一个图形输入文件。双击 Block Diagram/Schematic File 后,就进入了图形输入的界面,如图 6- 19 所示,将名为 block.bdf 的文 件保存为 counter_displayer.bdf,保存后的文件 counter_displayer.bdf 即为 整个工程的 Top-Level Entity。 在界面空白处双击左键,会弹出如图 6- 20 左边所示的器件模块选择框,在 图中,我们看到先前生成的两个模块:decode 以及 counter_output 都在 Project 下 , 依 次 双 击 decode 、 counter_output 以 及 图 中 c : /altera/quartus51/libraries-> others-> maxplus2-> 74161,将这三个模块 添加进图形编辑环境中,分别如图 6- 20、图 6-21,6-22
注意:各个模块的后缀名是.bsf 块符号文件,而工程的 counter_displayer 的 top-level 实体的后缀是.bdf 的设计文件。 添加完毕三个模块之后,还应添加输入输出符号,接下来的工作就是用信号 线把模块之间对应的端口连接起来,且系统的输入信号与输入符号相连,系统的 输出信号与输出符号相连。
整个系统的输入信号分别是:LDIN(预置输入使能)、A、B、C、D(A、B、C、 D 为预置输入端)、ENT、ENP、CIRN(置零使能)、CLK(时钟输入端),此计数器 的工作方式请参见 74161 的功能表。 图 6-23 的连线中,单根信号线由工具 来画出,而信号总线则由来画出,双击输入输出符号可以改变输入输出信号的名字。要删除某根信号线,可以先用鼠标单击选中要删除的信号线,然后按 Delete 键就可以删除了。在对总线重命名的时候应注意要标明总线的宽度如 result[3..0],不然在编译的时候 也会出错。
3. 编译
连接好并重命名之后 , 保存文件 ,然后就可以对这个顶层文件 counter_displayer.bdf 进行编译了,编译完将出现如图 10-23 所示的警告。
警告内容: a)Warning: Output pins are stuck at VCC or GND Warning (13410): Pin "SEVEN_SEGMENT[0]" is stuck at GND b)Warning: No exact pin location assignment(s) for 22 pins of 22 total pins Warning: Found 13 output pins without output pin load capacitance assignment Warning: Following 1 pins have nothing, GND, or VCC driving datain port -- changes to this connectivity may change fitting results c)Warning: The Reserve All Unused Pins setting has not been specified, and will default to 'As output driving ground'. d)Warning: Found pins functioning as undefined clocks and/or memory enables Info: Assuming node "CLK" is an undefined clock 出现的警告没有大碍。警告 a)指出有信号始终接地,因为在译码器电路中 输出信号总线 SEVEN_SEGMENT[7..0]中的 SEVEN_SEGMENT(7)始终是 0,对整个设 计没有影响;警告 b)说明管脚尚未分配,后面管脚分配后这个警告就会消失; 警告 c)指出未分配的管脚尚未指定状态故默认为输出接地,我们一般需要在 Setting 中设定为三态输出从而消除警告;警告 d)在配置管脚时自动解除,对 仿真也不会有什么影响。
4. 时序仿真
首先建立波形文件,点击 File ->New->Verification/Debugging Files,在出现的对话框中双 击 Vector Waveform File 使进入了波形文件编辑环境。在图 6- 25 中,右键点 击左边空白处,选择 Insert Node or Bus…,添加用以仿真的输入输出信号。 需要注意的是,Quartus II 软件自 10.0 版本后就不再自带仿真功能了,相关功能可用 Modelsim实现,这里仅以Quartus II 9.0 版本为例进行讲解。
在出现的 Insert Node or Bus 对话框中点击 Node Finder 后,即会出现一 个为仿真添加输入输出信号的界面,在界面的 Filter 中选择 Post-Complication 在点击 List,那么工程编译后所有内外部的信号都会被列出来,这里所指的外 部信号即系统的所有输入输出信号,而内部信号则是系统内的一些寄存器的输入 输出信号,不同进程间用于通信的信号等,一般只选择输入输出信号即可,如果 需要更详细的分析系统,则通常也将与寄存器相关的一些信号添加到仿真波形文件中。
系统的所有信号如图 6- 26 左边所示。
下一步工作是为波形文件中每个输入信号编辑激励信号,编辑激励信号的工 具如图 10-26 的最左端所示,如欲编辑输入时钟信号 clk,则只需要先点击 clk信号,使之变为浅蓝色,然后运用左端的编辑工具 ,输入它的周期,即时钟 的频率;而对于其他输入信号就可以完成对其编辑。 编辑好输入波形文件,保存后便可用于仿真。仿真结果如图 6- 28 所示,经观察,仿真结果符合设计要求
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)