使用Quartus Prime进行VHDL功能仿真的完整流程

使用Quartus Prime进行VHDL功能仿真的完整流程

前言

对于数字逻辑和FPGA领域的初学者而言,掌握官方开发工具的使用是开启学习之路的第一步。本文将以Intel Quartus Prime Lite Edition为例,详细介绍从软件选择、项目创建、代码编译到最终完成功能仿真的完整工作流程。本文旨在提供一份系统性的操作手册,并通过对常见错误的分析,帮助读者高效地完成第一个VHDL设计的仿真验证。

一、 环境搭建:软件选择与安装#

1.1 软件选择#

FPGA开发主要依赖于芯片厂商提供的集成开发环境(IDE)。目前主流的选择包括:

Intel Quartus Prime: 用于Intel(原Altera)系列的FPGA芯片开发。

AMD Xilinx Vivado: 用于AMD(原Xilinx)系列的FPGA芯片开发。

本文选用 Intel Quartus Prime Lite Edition。该版本免费,功能覆盖了从设计输入、仿真、综合到下载调试的全过程,完全能够满足学习和中小型项目的需求。

1.2 下载与安装注意事项#

详细下载教程:Quartus Prime Lite安装教程 | CSDN博客

下载内容: 在Intel官网下载Quartus Prime Lite Edition时,请确保同时勾选了 ModelSim-Intel FPGA Edition 组件,这是后续进行仿真的必要工具。

安装空间: Quartus Prime是大型软件,下载的压缩包虽只有数GB,但完整安装后会占用数十GB的硬盘空间。建议将其安装在有充足空间的SSD分区,以提升软件启动和编译速度。

安装路径: 强烈建议使用纯英文、无空格的安装路径(例如 D:\intelFPGA_lite\20.1),以避免潜在的路径识别问题。

二、 项目创建与配置#

在Quartus中,所有设计工作都围绕“项目(Project)”展开。

2.1 新建项目向导(New Project Wizard)#

启动Quartus Prime,在欢迎界面选择 New Project Wizard。

目录与名称设置(关键步骤):

Working Directory: 为项目指定一个工作目录。同样,此路径必须为纯英文、无空格路径。

Project Name: 为项目命名,例如 d_latch_project。

Top-Level Design Entity: 指定顶层设计实体的名称。为保持一致性,建议此处与项目名相同,例如 d_latch_project。

项目类型: 选择 Empty project。

添加文件: 暂时跳过,后续手动创建。

器件选择: 根据您持有的FPGA开发板选择具体芯片型号。若无硬件,仅作仿真,可选择 Cyclone V 系列下的任意一款芯片。

EDA工具设置: 在 Simulation 部分,设置 Tool Name 为 ModelSim-Altera,Format(s) 为 VHDL。

完成创建: 检查摘要信息后,点击 Finish。

常见错误 1:新建项目向导未响应或卡退

原因: 权限不足或路径中含有非法字符(中文、空格等)。

解决方案:

以管理员身份运行Quartus Prime。

确保项目工作目录为纯英文、无空格的简洁路径。

三、 设计输入与编译#

项目创建后,即可开始编写设计代码。

3.1 编写VHDL代码#

通过 File -> New... -> VHDL File 创建一个新的VHDL源文件。

输入设计代码。以下为一个D锁存器(D-Latch)的示例:

library ieee;

use ieee.std_logic_1164.all;

entity d_latch_project is

port (

D : in std_logic;

Enable : in std_logic;

Q : out std_logic

);

end entity d_latch_project;

architecture behavioral of d_latch_project is

begin

process (D, Enable)

begin

if Enable = '1' then

Q <= D;

end if;

end process;

end architecture behavioral;

保存文件。文件名必须与 entity 名称完全一致,即 d_latch_project.vhd。

3.2 编译设计#

点击工具栏上的紫色“播放”按钮(▶️ Start Compilation)或按快捷键 Ctrl + L 开始编译。

编译流程包括分析与综合(Analysis & Synthesis)、布局布线(Fitter)等步骤。

常见错误 2:顶层实体未定义

报错信息: Error (12007): Top-level design entity "..." is undefined

原因: 项目设置中指定的顶层实体名称与VHDL代码中的 entity 名称不匹配。

解决方案:

推荐: 进入 Assignments -> Settings... -> General,将 Top-level entity 修改为代码中正确的实体名。

或者,修改VHDL代码,使 entity 名称与项目设置保持一致。

常见错误 3:VHDL语法错误,名称不匹配

报错信息: Error (10396): ...name used in construct must match previously specified name...

原因: VHDL代码中,成对的语句块(如 entity ... end entity)首尾名称不一致。

解决方案: 仔细检查报错信息提示的行号,确保所有成对的关键字名称完全匹配。

四、 功能仿真验证#

编译成功代表语法正确且可综合,但逻辑功能的正确性需要通过仿真来验证。

4.1 编写Testbench文件#

Testbench是一个独立的VHDL文件,用于生成激励信号并实例化被测设计。

新建一个VHDL文件,输入以下Testbench代码:

library ieee;

use ieee.std_logic_1164.all;

entity tb_d_latch is

end entity tb_d_latch;

architecture test of tb_d_latch is

component d_latch_project

port (

D : in std_logic;

Enable : in std_logic;

Q : out std_logic

);

end component;

signal s_D, s_Enable, s_Q : std_logic;

begin

uut : d_latch_project port map (

D => s_D, Enable => s_Enable, Q => s_Q

);

stimulus_proc : process

begin

s_D <= '0'; s_Enable <= '0'; wait for 10 ns;

s_Enable <= '1'; wait for 5 ns;

s_D <= '1'; wait for 10 ns;

s_D <= '0'; wait for 10 ns;

s_Enable <= '0'; wait for 5 ns;

s_D <= '1'; wait for 10 ns;

wait;

end process;

end architecture test;

保存文件,例如 tb_d_latch.vhd。

4.2 配置仿真任务#

进入 Assignments -> Settings... -> EDA Tool Settings -> Simulation。

点击 Test Benches... -> New...。

配置Testbench:

Test bench name: 自定义名称,如 sim1。

Top level module in test bench: 填入Testbench文件的实体名,即 tb_d_latch。

Test bench files: 添加 tb_d_latch.vhd 文件。

依次点击OK保存所有设置。

4.3 运行仿真#

点击 Tools -> Run Simulation Tool -> RTL Simulation。

常见错误 4:无法启动ModelSim

报错信息: Cannot launch the ModelSim-Altera software because you did not specify the path...

原因: Quartus未找到ModelSim的安装路径。这是一个常见的一次性配置问题。

解决方案:

进入 Tools -> Options... -> EDA Tool Options。

在 ModelSim-Altera 对应的路径框中,填入ModelSim的安装路径,通常为 [Quartus安装目录]\modelsim_ase\win32aloem。

常见错误 5:仿真波形输出为未知(红线)

现象: 输入信号正常,但输出信号 Q 始终为红色的 U 或 X 状态。

原因: Testbench中声明的 component 名称与待测设计的 entity 名称不匹配,导致实例化失败。

解决方案: 仔细检查Testbench文件中的 component 声明和 port map 实例化语句,确保其名称与设计文件的 entity 名称完全一致。

4.4 查看与分析波形#

成功运行后,ModelSim会自动启动。在 Wave 窗口中,可以看到所有信号的波形图。通过分析输出信号是否符合输入激励下的预期逻辑,即可完成对设计功能的验证。

总结

通过遵循以上步骤,一个初学者可以系统地完成从环境搭建到功能仿真的全过程。FPGA开发工具链虽然复杂,但其报错信息通常具有很高的参考价值。学会阅读和分析这些信息,是解决问题、提升能力的关键。希望本篇指南能为您的FPGA学习之旅扫清障碍。

相关文章