Verilog HDL十进制计数器实验Quartus90非常详细的步骤 - 图文

更新时间:2024-01-03 07:38:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 十进制计数器实验

该实验将使用 Verilog 硬件描述语言在 DE2-70 开发平台上设计一个基本时序逻辑电路 ——1 位十进制计数器。通过这个实验,读者可以了解使用 Quartus 工具设计硬件的基本流 程以及使用 Quartus II 内置的工具进行仿真的基本方法和使用 SignalTap II 实际观察电路运 行输出情况。SignalTap II 是 Quartus 工具的一个组件,是一个片上的逻辑分析仪,可以通

过 JTAG 电缆将电路运行的实际输出传回 Quartus 进行观察,从而省去了外界逻辑分析仪

时的很多麻烦。

? 实验步骤

3.1 建立工程并完成硬件描述设计

1. 打开 Quartus II 工作环境,如图 3-1 所示。

图 3-1 Quartus II 工作环境界面

2. 点击菜单项 File->New Project Wizard 帮助新建工程。参看图 3-2。

图 3-2 选择 New Project Wizard

打开 Wizard 之后,界面如图 3-3 所示。点击 Next,如图 3-3。

第 23 页 共 208 页

实验二 十进制计数器实验

图 3-3 New Project Wizard 界面

3. 输入工程工作路径、工程文件名以及顶层实体名。

这次实验会帮助读者理解顶层实体名和工程名的关系,记住目前指定的工程名与顶层 实体名都是 Counter10,输入结束后,如图 3-4 所示。点击 Next。

图 3-4 输入设计工程信息

4. 添加设计文件。界面如图 3-5 所示。如果用户之前已经有设计文件(比如.v 文件)。

第 24 页 共 208 页

实验二 十进制计数器实验

那么再次添加相应文件,如果没有完成的设计文件,点击 Next 之后添加并且编辑设计文件。

图 3-5 添加设计文件

5. 选择设计所用器件。由于本次实验使用 Altera 公司提供的 DE2-70 开发板,用户 必须选择与 DE2-70 开发板相对应的 FPGA 器件型号。

在 Family 菜单中选择 Cyclone II,Package 选 FBGA,Pin Count 选 896,Speed grade 选 6,确认 Available devices 中选中 EP2C70F896C6,如图 3-6。

图 3-6 选择相应器件

6. 设置 EDA 工具。设计中可能会用到的 EDA 工具有综合工具、仿真工具以及时序

第 25 页 共 208 页

实验二 十进制计数器实验

分析工具。本次实验中不使用这些工具,因此点击 Next 直接跳过设置。如图 3-7。

图 3-7 设置 EDA 工具

7. 查看新建工程总结。在基本设计完成后,Quartus II 会自动生成一个总结让用户核 对之前的设计,如图 3-8 所示,确认后点击 Finish 完成新建。

图 3-8 新建工程总结

在完成新建后,Quartus II 界面中 Project Navigator 的 Hierarchy 标签栏中会出现用户正

第 26 页 共 208 页

实验二 十进制计数器实验

在设计的工程名以及所选用的器件型号,如图 3-9 所示。

图 3-9 观察正在设计的工程

8. 培养良好的文件布局。

点击菜单项 Assignments->Device,选中 Compilation Process Settings 选项卡,勾上右边

的 Save Project output files in specified directory,输入路径(一般为 debug 或者 release),如图

3-10 所示。

注意:

使用相对路径.\\release,以便将工程文件拷贝在不同的 PC 机上运行。

图 3-10 指定单独的编译结果文件目录(相对路径)

9. 添加所需设计文件。

点击菜单项 File->New 或者点击图标

新建一个设计文件,选择 Verilog HDL File,

如图 3-11 所示,点击 OK。建立 Verilog 源代码文件。

第 27 页 共 208 页

实验二 十进制计数器实验

图 3-11 选择设计文件类型

输入如下 Verilog HDL 语言的设计代码: module Counter ( iclk, rst_n, q, overflow ); input iclk; input rst_n; output reg [3:0] q; output overflow; always @(posedge iclk or negedge rst_n) begin if(~rst_n) q <= 4'h0; else begin if(4'h9 == q) q <= 4'h0; else q <= q + 4'h1; end end assign overflow = 4'h9 == q; endmodule

第 28 页 共 208 页

实验二 十进制计数器实验

10. 保存设计。点击菜单项 File->Save、点击图标 如图3-12 所示。给设计文件命名 存。

Counter10,点击保

或者使用快捷键 Ctrl+S 保存设计,

Counter,与模块名相同,注意不是

图 3-12 保存设计文件

11. 分析与综合。点击菜单项 Processing->start->Start Analysis & Synthesis、点击图标

或者使用快捷键 Ctrl+K 执行分析与综合。参看图 3-13。

图 3-13 执行 start Analysis & Synthesis(开始分析与综合)

分析与综合完成后,编译出错,错误原因如图 3-14 所示。

图 3-14 分析与综合错误原因

顶层实体 Counter10 未在源码中定义,必须更改顶层实体为 Counter,这在多文件的工 程中经常需要用到。

将左侧的 Project Navigator 切到 Files 标签,对着 Counter.v 文件右击,选择 Set as Top-Level Entity,如图 3-15。

第 29 页 共 208 页

实验二 十进制计数器实验

图 3-15 重新指定顶层实体

12. 重新执行分析与综合,结果如图 3-16,出现了 12 个警告,这是因为 qsf 文件中记

录的顶层实体在这一步执行时还未更新。

图 3-16 分析与综合结果(第二次执行)

如果再次执行分析与综合,无论你是否删掉原先的编译结果,都会完全成功,如图 3-17。

图 3-17 分析与综合结果(第三次执行)

3.2 电路仿真

13. 功能仿真。它是为了检查设计是否在理论上达到预期功能,该仿真不考虑期间实

际物理特性。首先创建仿真输入波形文件。仿真时需要对顶层实体的输入管脚提供激励信 号,在 Quartus 软件中可以通过波形文件方便的输入。点击菜单项 File->New->Vector Waveform File,如图 3-18 所示。

第 30 页 共 208 页

实验二 十进制计数器实验

图 3-18 创建波形文件

14. 添加信号结点。在空波形文件中点击右键,如图 3-19 进行选择(或者直接双击)。

图 3-19 添加结点右键菜单

单击 Insert Node or Bus 后,出现如图 3-20 所示对话框。

图 3-20 添加结点对话框

选择 Node Finder 按钮可以从结点列表中选择我们需要的,而避免一个一个输入结点

第 31 页 共 208 页

实验二 十进制计数器实验

的麻烦。

图 3-21 Node Finder 对话框

Fitter 选择 Pin:all,点击 List 按钮。出现如图 3-22 所示的结点列表。

图 3-22 结点列表

简单起见,可以直接点>>按钮,将所有结点加入右侧 Select Nodes 栏中。完成后如图 3-23 所示。点击 OK 按钮确认。

第 32 页 共 208 页

实验二 十进制计数器实验

图 3-23 添加结点到右侧

点击 OK 后返回添加结点对话框。如图 3-24 所示。

图 3-24 添加结点后的对话框

点击 OK 确定,波形文件将如图 3-25 所示。

图 3-25 波形文件

第 33 页 共 208 页

实验二 十进制计数器实验

15. 将 iclk 设为方波。右击 iclk 信号,选择 value->clock..,如图 3-26 所示。

图 3-26 将 iclk 改为方波

在弹出的 clock 设定对话框中把周期调整为 20ns,如图 3-27。Duty cycle 的意思是占空 比,即是指高电平在一个周期之内所占的时间比率。

图 3-27 时钟的周期设置

16. 将 rst_n 改成低 20ns 后持续高电平。选中 rst_n 信号,单击左侧图标

强制设为

高电平。在波形上拖动鼠标选中前 20ns,单击左侧图标 强制设为低电平。

第 34 页 共 208 页

实验二 十进制计数器实验

完成后波形如图 3-28 所示。输出波形可不管。

图 3-28 波形文件

17. 保存波形文件 counter.vwf,如图 3-29,这里的命名可以随意。

图 3-29 保存波形文件

18. 波形文件生成后,直接点击仿真按钮会提示错误,见图 3-30,这是因为没有先产 生功能仿真网表。

图 3-30 未生成网表错误

19. 要生成功能仿真网表,首先设置仿真模式。点击菜单项 Assignment->Settings,选

中 Simulator Settings 选项卡,出现图 3-31 所示对话框。在 Simulation mode 中选择 Functional, Simulation input 选择刚才建立的波形文件,完成后点击 OK。

第 35 页 共 208 页

实验二 十进制计数器实验

图 3-31 仿真模式设置对话框

点击菜单项 Processing->Generate Functional Simulation Netlist,产生功能仿真所需的网 表,参看图 3-32。完成后结果显示如图 3-33。

图 3-32 生成功能仿真网表的操作菜单项

第 36 页 共 208 页

实验二 十进制计数器实验

图 3-33 功能仿真网表产生结果显示图

20. 点击菜单项 Processing->Start Simulation 或 工具按钮启动功能仿真。如图 3-34, 完成后结果显示如图 3-35。

图 3-34 仿真菜单项与按钮

图 3-35 仿真结果

21. 配置引脚。仿真完成后,确认功能正确后,可以进行分配引脚的操作。根据所提 供的 DE2-70 用户指导手册,将计数器的 q 输出配置到 DE2-70 开发板的 4 LED

(LEDG[3]-LEDG[0])上,overflow 接 LEDG[4],rst_n 接 KEY[0],clk 接开关 SW[0]。(参 考实验一)参考图 3-36,注意 Y24 不是 V24。

图 3-36 分配引脚图

注意:clock 相关:DE2_70 开发板没有办法直接输出低频方波,使用开关手动控制。 22. 完成引脚分配后,全编译文件。点击菜单项 Processing->start compilation、点击图

第 37 页 共 208 页

个绿

实验二 十进制计数器实验

标 或使用 CTRL+L 执行全编译,如图 3-37 所示。

图 3-37 执行 start compilation

编译结果如图 3-38 所示。

图 3-38 全编译结果显示

23. 时序仿真。其主要用途是查看实际设计的电路运行时是否满足延时要求,时序仿 真考虑了电路实际运行的延时等因素。

单击菜单中 Assignment->Settings,选中 Simulator Settings 选项卡,在 Simulation mode

中选择 Timing,Simulation input 选择刚才建立的波形文件,完成后点击 OK,如图 3-39。

图 3-39 仿真模式设置对话框(时序仿真)

特别注意:图 3-31 和图 3-39 区别了功能仿真和时序仿真。

如果是 8.0 版,在左侧带问号的 Quartus II Simulator (Timing)处右击 start,启用时序仿

第 38 页 共 208 页

实验二 十进制计数器实验

真,如图 3-40A.

图 3-40A 启用时序仿真

如果是 7.2 版,由于没有 Tasks 窗口,需要在 Processing->Start 菜单按照 A―E 的步骤 执行。如图 3-40B 所示。每一步骤完成会弹出一个对话框,单击 OK 或者确定。

图 3-40B 时序仿真的后五步操作图解

仿真结果如图 3-41 与 3-42 所示。

图 3-41 仿真结果图

第 39 页 共 208 页

实验二 十进制计数器实验

图 3-42 时序仿真波形

24. 将设计下载在 FPGA 中。完成设计后就可以下载到板上实际运行,点击菜单项

Tools->Programmer 或点击图标 打开程序下载环境。点击 start 开始下载。(参考实验一)

25. 手工拨动 SW[0],测试实验结果。

3.3 逻辑分析仪 SignalTap II 的使用

26. 首先将手工开关时钟换回 50Mhz 的时钟,否则由于时钟过于低速,SignalTap II

抓取不到波形。方法是在引脚配置中将 iclk 指定 AD15,之后全编译工程,并且下载运行!

可以看到绿灯有 5 个在亮,最左边的暗一点,如图 3-43A 所示。否则,很可能是引脚 分配出错,如图 3-43B 中出现了 Y27 设成了 V27 的错误。

图 3-43A 5 个灯都亮,正确。

图 3-43B 只有 4 个灯亮,错误。

27. 新建 SignalTap II 文件。点击菜单项 File->SignalTap II Logic Analyzer File

第 40 页 共 208 页

实验二 十进制计数器实验

图 3-44 新建逻辑分析仪文件

图 3-45 逻辑分析仪文件

由于窗口界面面积较小,可以通过文件左上角的 按钮将文件子窗口与主窗口分离。 28. 选择硬件,首先连接号 DE2-70,然后在文件右上的 Hardware 下拉菜单中选择

USB-Blaster,选好后应能自动识别出 Device 是 EP2C70。选择后的情况如图 3-46 所示。

第 41 页 共 208 页

实验二 十进制计数器实验

图 3-46 选择硬件环境

29. 选择逻辑分析仪时钟,本实验中就以计数器时钟作为逻辑分析仪时钟。确认左下角

的标签页是 setup,然后点击右下侧 SignalConfiguration 中的 Clock 栏后的按钮。出现如图

3-47 所示。

图 3-47 结点查找对话框

Fitter 选择 SignalTap II:post-fitting,点击 List 按钮,左侧出现可选结点,选择其中的 iclk,点击中间的≥按钮。完成后如图 3-48 所示。

图 3-48 选择时钟结点

第 42 页 共 208 页

实验二 十进制计数器实验

完成后出现确认对话框。点击 OK 按钮。参看图 3-49

图 3-49 确认对话框

而后出现时钟结点选择界面,如图 3-50 所示。

图 3-50 完成时钟结点选择

30. 完成后可在栏中选择存储深度、触发级等选项,这里采用默认设置。下面加入需

要观测的结点。在左侧空白区域双击,再次出现选择结点对话框。点击 List 列出所有可选 结点。将关心的结点选择好,选择 Pins:all 列出所有引脚,除 iclk 外全部导入。完成后如图

3-51 所示。点 OK 确定。

图 3-51 选择观察结点

完成后如图 3-52 所示。

第 43 页 共 208 页

实验二 十进制计数器实验

图 3-52 结点完成后界面

31. 完成以上步骤后保存 SignalTap II 文件,可取名为 Counter.stp,参看图 3-53。并在

询问是否设置为当前工程的 SignalTap 时选“确定”。再到 Quartus 主界面中执行全编译。编

译完成后下载文件到 FPGA。

图 3-53 保存 SignalTap II 文件

32. 完成后,再次回到逻辑分析仪文件,点击左上 按钮开始分析。就可以观察到

第 44 页 共 208 页

实验二 十进制计数器实验

实际捕获的波形。如图 3-54 所示。

图 3-54 SignalTap II 抓取到的波形

至此,整个实验结束。读者应该体会到了从设计->仿真->下载->波形抓取的四个经典 步骤。

◆ 本实验指导结束

本文来源:https://www.bwwdw.com/article/ikox.html

Top