1、使用 Verilog 设计的 Quartus II 入门指南.ModelSimQuartus IIVerilog软件:Quartus II 10.0 + ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition内容典型的 CAD 流程 开始 新建工程 录入 Verilog 设计 编译设计 引脚分配 仿真设计电路 编程及配置到 FPGA 器件 测试设计电路 典型的 CAD 流程计算机辅助设计(CAD)软件,使得运用可编程逻辑器件实现所需逻辑电路,变得容易。比如现场可编程门阵列(FPGA)。典型的 FPGA CAD 设计流程如图 1所示。图 1
2、典型的 FPGA CAD 设计流程CAD 流程包含以下步骤:设计输入所需电路可通过原理图方式或硬件描述语言方式(如 Verilog 或 VHDL)进行设计。 综合输入的设计被综合进入由逻辑元素(LEs,FPGA 芯片提供)组成的电路中。 功能仿真综合电路被测试以验证其功能是否正确,次仿真不考虑时序因素。 布局布线CAD Fitter 工具决定网表中定义的 LEs 如何布置成 FPGA 芯片中的实际LEs。 时序分析分析已布局布线电路中的不同路径的传播延迟,用以指示所需电路的性能。 时序仿真测试已布局布线电路,验证其是否在功能和时序上都正确。 编程及配置设计的电路,通过编程配置开关,被实现到一个
3、物理的 FPGA 芯片。配置开关用于配置 LEs 和建立所需线路连接。 本指南介绍 Quartus II 软件的基本特征。展示如何使用 Verilog 硬件描述语言来设计和实现电路。使用 GUI 来实现 Quartus II 指令。通过本份指南,读者将学习到:新建工程 使用 Verilog 代码录入设计 将综合的电路布局到 Altera FPGA 分配电路的输入输出到 FPGA 上的指定引脚 仿真设计电路 编程配置艾米电子 EP2C8 核心板上的 FPGA 芯片 1. 开始在 Quartus II 中设计的每个逻辑电路或子电路,叫做一个工程。软件每次运行一个工程,并将所有信息保存在单一文件夹中
4、。欲开始一个新的逻辑电路设计,第一步就是新建 一个文件夹来保存文件。为了保存本指南的设计文件,在 D 盘新建 introtutorial 文件夹。指南者运行的范例为一个简单的双路灯控电路。打开 Quartus II 软件,将看到类似于图 2 的画面。该显示画面包括若干窗口,用户可使用鼠标选择,以访问 Quartus II 软件的相关功能。Quartus II提供的大多数命令都可用菜单形式来访问。例如,在图 2 中,在 File 标签下点击左键,可打开如图 3 所示的菜单。用左键单击 Exit 可退出 Quartus II 软件。图 2 Quartus II 主体显示图 3 File 菜单一例对
5、于有些命令,需要连续访问两个或以上的菜单才可以使用。1.1 Quartus II 在线帮助Quartus II 软件提供了容易理解的在线文档,可解答许多在使用软件时遇到的问题。用户可通过选择 HelpSearch 来快速访问帮助话题,在打开的对话框 中,可以输入关键字。另外一个方法是,内容感应帮助,以快速查找指定话题的文档。在大多数的应用中,按住键盘上的 F1 键将打开一个显示该应用的可用命令的 帮助窗口。2 新建工程按如下步骤新建工程:1. 选择 FileNew Project Wizard,以打开图 4 所示窗口,可通过 Dont show me this introduction aga
6、in 跳过此窗口步骤。单击 Next,出现图 5 所示窗口。图 4 引导的任务显示图 5 创建新的工程2. 选择工作文件夹 introtutorial,也可以使用您自己设定的文件夹。工程必须有一个名字,通常情况下,与顶层设计实体的名字相同。如图 5 所示,选 择 light 作为工程名和顶层实体名。单击 Next。因为还没有创建introtutorial 文件夹,Quartus II 弹出一个对话框,询问是否新建所需文件夹,如图 6 所示。单击 Yes,将会引出图 7 所示的窗口。图 6 创建新的工程文件夹与否?图 7 添加用户指定设计文件3. 如果没有已存在的设计文件,单击 Next,将会打
7、开如图 8 所示的画面。图 8 选择器件家族和指定的器件4. 艾米电子 EP2C8 核心板采用的器件为 Cyclone II EP2C8Q208C8。此处选择 Cyclone II 器件家族,器件为 PQFP 封装,有 208 个引脚,速度等级为8。单击 Next,出现图 9 所示画面。图 9 指定第三方 EDA 工具5. 用户可指定一些第三方 EDA 工具。持续 Simulation 选用 ModelSim-Altera,格式为 Verilog HDL。单击 Next,出现图 10 所示窗口。6. 设置一览如图 10 所示。单击 Finish,返回 Quartus II 主体窗口。标题栏将显
8、示 light 工程,如图 11 所示。图 10 工程设置一览图 11 Quartus II 显示已建工程 3 使用 Verilog 代码设计输入作为一个设计范例,我们将采用双路的灯控电路,如图 12 所示。此灯可由两个按键中的任一按键来控制,x1 和 x2,按键的闭合相应的逻辑值为 1。真值表也同时在图中给出。注意输入 x1 和 x2 是异或的关系,但是我们仍然用门来显示。图 12 灯控电路所需电路,如图 13 所示,使用 Verilog 代码来描述。注意,Verilog 模块叫做 light,这个图 5 所示的名称是一致的。此代码的编辑可以使用任何可存储 ASCII 码的文本编辑器,或者使
9、用 Quartus II 自带的编辑器。当然,文件的名称可以任意取;而和顶层 Verilog 模块的名称一致,是一个设计惯例。文件名称必须带.v 扩展名,用以指示此文件为 Verilog 文件。所有,我们使用light.v 这个名称。图 13 图 12 所示电路的 Verilog 代码3.1 使用 Quartus II 文本编辑器本节将展示如何使用 Quartus II 文本编辑器。如果你喜欢使用其他文本编辑器来创建 Verilog 源文件,可以逃过此节。选择 FileNew 打开图 14 所示窗口,选择 Verilog HDL File,并单击 OK。这将打开文本编辑器窗口。第一步是指定所创
10、建的文件的名称。选择 FileSave As,打开图 15 所示的对话框。选择存储类型为 Verilog HDL File,填写名称为 light.v。单击 Save,打开图16 所示窗口。输入图 13 所示的代码。使用 Ctrl+s 保存该文件。图 14 选择新建的文件类型图 15 命名文件图 16 文本编辑器窗口3.1.1 使用 Verilog 模板对于设计者来说,Verilog 的语法有时很难被记住。为了解决问题,文本编辑器提供了 Verilog 模板集。这些模板提供了不同类型的 Verilog 表达的范例,譬如 module 声明、always 块和设置语句的陈述。可以通过 EditI
11、nsert TemplateVerilog HDL 来浏览这些模板,以熟悉这些资源,这是相当值得的。3.3 添加设计文件到工程中正如图 7 所讨论的那样,我们可以告诉 Quartus II 软件,哪些文件是当前工程的一部分。要查看当前的 light 工程中已包含的文件列表,选择 AssignmentSettingFile,这将打开图 17 所示画面。另外一个可用的方法是选择标签 ProjectAdd/Remove Files in Project。使用 Quartus II 文本编辑器创建文件时,勾上 Add file to current project 选项,所创建文件即自动加入到工程文件
12、列表。如果使用的不是Quartus II 自带的文本编辑器,那么图 17,列表中就没有所创建的文件,此时必须手动添加文件到工程文件列表中。欲添加文件到工程文件列表中,单击图17 中的 File Name:的按钮,弹出图 18 所示对话框,选择 light.v,单击Open。再次查看图 17 画面,此时所添加的文件就已经在文件列表了。需要注意的是, 在大多数案例中,Quartus II 软件可根据各个实体自动找到正确的文件,即使某些文件没有被认真地添加到工程中。然而,对于包含许多文件的复杂工程,按照上述方法,添加指定所需文件到工程中,是一个很好的设计惯例。图 17 设置窗口图 18 选择文件4
13、编译设计电路在 light.v 中 Verilog 代码,要经过几个 Quartus II 工具的处理:分析代码、综合电路以及生成目标芯片的实现内容。这些应用程序被聚集在一起,且被称作编译器。选择 ProcessingStart Compilation 运行编译器,或者单击 按钮运行。在编译过程中,Quartus II 的左边会显示不同阶段的进度。编译成功(或不成功)后,会弹出一个对话框。 单击 OK 确认。Qartus II 会显示图 19 所示画面的编译报告。当编译成功后,也可以通过 按钮手动打开编译报告。图 19 编译报告在此窗口的左面,列出了许多信息的列表。如图 19 所示,本工程使用
14、了 1个 LE 和 3 个引脚。4.1 错误在编译期间,Quartus II 在消息窗口,会显示生成的消息。如果此Verilog 设计正确,其中一条消息就会显示编译成功及无错误。如果编译不是零错误,那么在 Verilog 代码中,至少有一个错误。在这种情况下,与错误对 应的消息就会在消息窗口显示。双击某条错误信息,该信息将会滚动显示完整;并且打开 Quartus II 自带文本编译器,Verilog 代码中的某行将被高亮显示。类似的,编译器也会显示许多警告消息。同样的方法也适用于查看完整的警告消息。针对于某条 错误或警告消息,想得到更多信息,可选住此条消息,然后按住 F1 功能键,即可查看。我
15、们将 light.v 的最后一行改成 endmodules,重新编译。Quartus II 弹出对话框,报告编译错误;单击 OK,以确认。编译报告如图 20 所示。在消息窗口,单击 Error 标签,显示图 21 所示消息。双击第一条错误信 息,Quartus II 文本编辑器打开 light.v,最后一行被高亮,如图 22 所示。修正代码,重新编译,直至成功为止。图 20 编译报告图 21 错误信息图 22 指示错误代码的位置5 引脚分配在艾米电子 EP2C8-2010 增强版套件中,我们使用 LED1代表 f,SW1和 SW2分别代表 x1 和 x2,所需引脚映射如图 23 所示。使用文本
16、编辑器,新建一文件,命名为 pins list.txt。录入图 24 所示内容。选择AssignmentsImport Assignments,打开图 25 所示窗口。选择 pins list.txt 路径,单击 OK 导入引脚配置。选择 AssignmentsPin Planner(或单击 按钮),打开图 26 所示窗口,查看引脚是否分配正确。图 23 所需引脚映射图 24 引脚分配文件pins list.txt图 25 导入设置图 26 查看引脚分配5.1 配置未用引脚未用引脚需要一定得约束,倘若没有这些约束,就有可能出现一些莫名其妙的问题。选择 AssignmentsDeviceDevi
17、ce and Pin OptionsUnused Pins,打开图 27 所示窗口。一般情况下,按照图 28 所示配置。图 27 配置未用引脚图 28 配置未用引脚为三态输入6 仿真所设计的电路在艾米电子 EP2C8-2010 增强版套件实现所需电路之前,审慎的做法是,先仿真以确定所设计电路是否正确。下面将介绍如何使用 ModelSim-Altera 仿真:6.1 新建 testbench 文件使用文本编辑器新建 testbench 文件,文件类型与图 9 一致,命名为light_tb.v;不要勾 Add file to current project 选项,即不可加入到Quartus 工程文
18、件夹列表。录入图 29 所示代码。图 29 light_tb.v6.2 设置 ModelSim-Altera 路径第一次使用需要先设置 ModelSim-Altera 路径。选择ToolsOptionsGeneralEDA Tool Options,打开 EDA 工具选择,如图 30 所示,设置路径。单击 OK,返回 Quartus II 主题界面。图 30 设置 ModelSim-Altera 路径6.3 添加仿真所需测试文件选择 AssignmentsSettingEDA Tool SettingSimulation,打开图 31 所示窗口。在 NativeLink setting 下,选
19、择 Compile test bench:标签,单击Test Benches 按钮,打开图 32 所示窗口。单击 New,弹出设置窗口,命名Test bench name:为 light_tb(与前面编写 light_tb.v 一致);在 File name:处,点击按钮,添加 light_tb 文件路径;单击 Add,完成后如图 33 所示。连续三次单击 OK,返回 Quartus II 主题窗口。图 31 仿真选项设置图 32 指定 Test Benches图 33 添加 Test Benches6.4 开始仿真选择 ToolsRun EDA Simulation ToolEDA RTL
20、Simulation,进行 RTL 仿真;或者选择 ToolsRun EDA Simulation ToolEDA Gate Level Simulation,进行门级仿真。此处以 RTL 仿真为示范。选择选择 ToolsRun EDA Simulation ToolEDA RTL Simulation,弹出图 34 所示仿真画面。稍等片刻,波形就会显现。图 34 ModelSim-Altera 仿真画面在 Wave 窗口右上角,单击 ,最大化 Wave 窗口,方便查看波形,如图35 所示。将鼠标放在想要查看的波形上面,按住 Ctrl 键,滚动鼠标滚轴,可以很方便地放大缩小波形。图 35 查看
21、波形7 编程及配置 FPGA 器件7.1 安装下载电缆驱动USB-Blaster 用户,请参考 http:/ ByteBlaster II 用户,请参考 http:/ EthernetBlaster 用户,请参考http:/ JTAG 编程将 USB-Blaster 与 FPGA 开发板连接在一起,打开 FPGA 开发板电源,回到Quartus II 主题窗口。选择 ToolsProgrmmer 或单击 按钮,打开图 35 所示窗口。选择 Mode 为 JTAG。缺省情况下,USB-Blaster 没有被选中,单击Hardware Setup 按钮,在弹出的窗口选择 USB-Blaster,如
22、图 36 所示,单击Close 退出。图 36 编程器窗口图 37 硬件设置窗口如图 37 所示,light.sof 已被列入窗口。如果没有列入的话,单击 Add File,选择 light.sof 文件加入。这是一个由编译器的汇编模块生成的二进制文件,它包含配置 FPGA 器件的数据。.sof 文件后缀,表示 SRAM 目标文件(SRAM Object File)。同时可以注意到,选中的器件为 EP2C8Q208,即艾米电子 EP2C8 套餐所用器件。勾上 Program/Configure,单击 Start 开始下载。图 38 下载 SRAM 目标文件8 测试设计电路下载完毕后,就可以测试实现的电路了。使用 SW1和 SW2输入所有可能值,观察 LED1亮灭是否和预期一致。