杰瑞科技汇

Quartus II仿真教程如何快速上手?

我们将使用 功能仿真 作为核心,因为它验证的是设计逻辑的正确性,速度快,是仿真流程中最关键的一步,本教程将以一个简单的 2选1多路选择器 为例,带你一步步完成整个仿真过程。

Quartus II仿真教程如何快速上手?-图1
(图片来源网络,侵删)

教程概述

  1. 准备工作:安装软件和创建工程。
  2. 设计输入:编写 Verilog HDL 代码。
  3. 创建波形文件:设置仿真激励信号。
  4. 运行仿真:执行仿真并查看结果。
  5. 分析结果:判断仿真是否通过。
  6. 总结与进阶:回顾流程和推荐下一步学习。

第一步:准备工作

1 软件安装

确保你已经安装了 Quartus II 软件,对于初学者,建议使用 Quartus II Web Edition,它是免费的,功能足够强大。

2 创建新工程

如果你还没有一个工程,需要先创建一个。

  1. 打开 Quartus II。
  2. 选择 File -> New Project Wizard...
  3. 按照向导提示,填写工程名称、保存路径,并选择你之前创建的顶层设计文件(在下一步中创建)。
  4. FamilyDevice 设置页面,你可以暂时选择一个通用的 FPGA/CPLD 器件,或者选择 Auto device selected by Filter,因为我们现在只做仿真,不涉及综合和布线,所以具体型号不重要。
  5. 完成向导,工程创建完毕。

第二步:设计输入

我们将创建一个 2选1 多路选择器。

1 创建 Verilog 文件

  1. 在 Quartus II 主界面,选择 File -> New
  2. 在弹出的对话框中,选择 Verilog HDL File,然后点击 OK
  3. 打开一个空的文本编辑器窗口。

2 编写代码

在文本编辑器中输入以下 2选1 多路选择器的 Verilog 代码:

Quartus II仿真教程如何快速上手?-图2
(图片来源网络,侵删)
// File: mux2to1.v
// Description: A 2-to-1 Multiplexer
module mux2to1 (
    input       wire a,      // Data input 0
    input       wire b,      // Data input 1
    input       wire sel,    // Select signal
    output      wire out     // Output
);
    // Use a continuous assignment statement to model the mux
    // If sel is 1, choose b. Otherwise, choose a.
    assign out = sel ? b : a;
endmodule

3 保存并添加到工程

  1. 点击保存按钮,将文件命名为 mux2to1.v
  2. 在工程导航窗口(Project Navigator -> HierarchyFiles 标签页)中,右键点击 Add/Remove Files in Project...
  3. 在弹出的对话框中,选择刚刚保存的 mux2to1.v,点击 Add,然后点击 OK

第三步:创建波形文件

这是仿真的核心步骤,我们需要告诉仿真器在什么时间、给输入信号施加什么样的值。

1 创建 Vector Waveform File (VWF)

  1. 在 Quartus II 主界面,选择 File -> New
  2. 在弹出的对话框中,选择 Vector Waveform File,然后点击 OK
  3. 一个空白的波形编辑器窗口会打开。

2 添加节点

我们需要将设计的输入/输出信号添加到波形图中。

  1. 在波形编辑器窗口左侧的 Name 区域空白处右键单击,选择 Insert -> Insert Node or Bus...
  2. 在弹出的对话框中,点击 Node Finder... 按钮。
  3. Node Finder 窗口中:
    • Filter 下拉菜单选择 Pins: all
    • 点击 List 按钮。
    • Nodes Found 列表中,会显示出你设计中的所有信号(a, b, sel, out)。
    • 使用 >> 按钮将所有信号添加到右侧的 Selected Nodes 列表中。
    • 点击 OK 关闭 Node Finder
  4. 再次点击 OK 关闭 Insert Node or Bus 对话框,所有信号都出现在波形编辑器中。

3 设置仿真时间

  1. 在波形编辑器顶部,你会看到时间刻度(如 100 ns)。
  2. 在时间刻度上右键单击,选择 End Time...
  3. 设置一个合适的总仿真时间,1 us (1000000 ns),然后点击 OK

4 编辑激励信号

我们需要为输入信号 a, b, sel 设置变化,以测试我们的多路选择器。

  1. 选中信号:在 Name 列中点击 sel 信号名,选中整行。

    Quartus II仿真教程如何快速上手?-图3
    (图片来源网络,侵删)
  2. 设置初始值:在左侧工具栏中,点击 高电平 按钮 1,将 sel 初始值设为 1

  3. 设置变化时间

    • 在时间轴上,将光标拖动到 200 ns 的位置。
    • sel 信号行上,从 0 ns200 ns 的区域左键拖动选中它。
    • 点击左侧工具栏的 低电平 按钮 0,将 sel0-200ns 区间设为 0
    • sel 的波形是:0-200ns0200ns-1us1
  4. ab 设置不同波形

    • 选中 a 信号,点击工具栏的 时钟周期 按钮,在弹出的对话框中,设置 Count every100 ns,这样 a 信号就会以 100ns 的周期(50%占空比)自动在 0 和 1 之间切换。
    • 选中 b 信号,同样点击时钟周期按钮,但这次设置 Count every50 ns,这样 b 信号的频率是 a 的两倍。

你的波形图现在应该看起来像这样:

Time (ns) sel a b out (预期)
0 0 0 0 0
50 0 0 1 0
100 0 1 0 1
150 0 1 1 1
200 1 1 1 1
250 1 1 0 0
300 1 0 0 0
350 1 0 1 1
400 1 1 0 0
... ... ... ... ...
  1. 保存波形文件:点击保存按钮,将其命名为 simulation.vwf

第四步:运行仿真

1 设置仿真器

  1. 在 Quartus II 主界面,选择 Assignments -> Settings...
  2. 在左侧导航栏中,展开 EDA Tool Settings,然后选择 Simulation
  3. 在右侧的 NativeLink settings 中:
    • Tool name 选择 ModelSim (这是 Quartus II 集成的标准仿真器)。
    • Format 选择 Verilog HDL
    • 确保 Run simulation script after compilation 勾选。
  4. 点击 OK 保存设置。

2 启动功能仿真

  1. 在 Quartus II 主界面,选择 Processing -> Start Simulation
  2. Quartus II 会自动完成以下步骤:
    • 分析:检查代码语法。
    • 综合:将 HDL 代码转换为门级网表。
    • 生成仿真网表:为仿真器创建一个专门的模型。
    • 启动 ModelSim:自动调用 ModelSim-Altera (现在是 Intel® Quartus® Prime Pro Edition 自带的 ModelSim),并加载你的设计、波形文件和仿真库。

3 在 ModelSim 中查看结果

如果一切顺利,ModelSim 界面将会弹出。

  1. 在 ModelSim 的主窗口中,会自动执行 vsim -do vsim.do 等脚本,加载了设计并运行了仿真。
  2. Objects 窗口中,你应该能看到 a, b, sel, out 这些信号。
  3. Wave 窗口中,你会看到 a, b, sel 的波形,out 信号的波形也已经根据计算结果绘制出来了。

第五步:分析结果

最关键的一步来了:检查 out 信号是否正确

  • 分析逻辑

    • sel = 0 时(0-200ns),out 应该等于 a 的值,观察波形,out 是否完全跟随 a 变化?(在 100ns 时 a 变为 1,out 也应该立即变为 1)。
    • sel = 1 时(200ns-1us),out 应该等于 b 的值,观察波形,out 是否完全跟随 b 变化?(在 250ns 时 b 变为 0,out 也应该立即变为 0)。
  • 判断成功out 的波形完全符合上述逻辑,那么恭喜你,你的设计在功能上是正确的,仿真通过


第六步:总结与进阶

你已经成功完成了 Quartus II 的完整功能仿真流程:

  1. 创建工程和设计文件
  2. 创建波形文件并设置激励
  3. 运行仿真
  4. 分析波形结果

这个流程是数字设计验证的基础,无论是做 FPGA 还是 ASIC 项目,都离不开它。

常见问题与解决

  • 仿真没有启动:检查 Settings -> EDA Tool Settings -> Simulation 中的设置是否正确,特别是 Tool nameFormat
  • 波形为全 X (Unknown)
    • 通常是因为没有正确地将设计文件添加到工程中。
    • 或者是 Node Finder 中没有找到信号。
    • 检查你的 Verilog 代码是否有语法错误。
  • ModelSim 报错:仔细阅读错误信息,通常是文件路径或库路径的问题,确保 Quartus II 能找到 ModelSim 的可执行文件。

进阶学习

  • 时序仿真:功能仿真只验证逻辑,不考虑实际硬件中的延迟,时序仿真会包含综合后布局布线产生的延时信息,能更真实地反映电路在 FPGA 上的行为,时序仿真的前提是成功完成 Processing -> Start Compilation(全编译)。
  • Testbench:对于复杂的设计,手动编辑波形文件非常繁琐,更专业的方法是编写一个 Testbench(测试平台)文件,Testbench 本身也是一个 Verilog 模块,它实例化你的设计(DUT - Design Under Test),并使用 initialalways 块等结构来动态生成激励信号,这是工业界标准的验证方法。

希望这份详细的教程能帮助你顺利入门 Quartus II 仿真!

分享:
扫描分享到社交APP
上一篇
下一篇