☰
Quartus II与ModelSim安装配置实战:从版本选择到仿真跑通
2026/10/1 1:13:08 网站建设 项目流程

很多初学FPGA的朋友,第一次接触Quartus II和ModelSim这对组合时,往往会被安装过程劝退。网上搜到的教程要么版本太老,要么截图模糊,要么缺了关键的破解和联调步骤,跟着做完发现仿真波形还是出不来。我自己当初踩过不少坑,后来帮实验室新同学装了几十次环境,算是把这两个软件的脾性摸清了。这篇教程不绕弯子,直接告诉你选哪个版本、按什么顺序装、怎么激活、怎么把仿真跑通,以及最常见的“仿真波形是红线”到底怎么解决。

1. 安装前的准备:版本选择与系统要求

1.1 Quartus II和ModelSim到底怎么搭配

很多新手搞不清楚Quartus II和ModelSim之间的关系。简单说,Quartus II是FPGA厂商Intel(原Altera)出的综合、布局布线工具,负责把你写的Verilog/VHDL代码变成FPGA能跑的比特流文件。而ModelSim是Mentor公司出的仿真工具,负责验证你的逻辑对不对。两个软件各干各的活,但在FPGA开发流程里必须配合使用。

在实际开发中,通常有两种用法:

  • 第一种,在Quartus II里调用ModelSim作为第三方EDA工具,Quartus负责编译工程,把生成的网表或测试平台交给ModelSim做仿真;
  • 第二种,独立运行ModelSim,用命令行或者界面手动建立仿真工程、编译源文件和测试激励。

对于学习入门,我建议先掌握第二种,再回头理解第一种。因为先搞清楚ModelSim自己的工程结构、编译流程、波形查看操作,后面被Quartus调用时才不至于一脸懵。

1.2 版本选择:13.0、13.1、15.0还是18.1

网上搜索“Quartus II安装教程”,会看到13.0、13.1、15.0、18.1等各种版本,新手很容易挑花眼。我直接按使用场景给出建议:

  • 如果是学生,做课程设计、毕业设计,或者只是学习Verilog语法和仿真,强烈推荐Quartus II 13.1 + ModelSim-Altera 13.1的组合。这是最经典的搭配,网上资料最多,安装包里通常自带ModelSim SE版本的定制版,兼容性好,破解方案也成熟,对老电脑也非常友好。
  • 如果使用的FPGA芯片比较老,比如Cyclone系列的大部分型号,13.1完全够用。
  • 如果必须支持较新的器件,比如Cyclone 10、Arria 10等,那需要Quartus Prime 18.1或更高版本,对应的ModelSim版本也不同。但新手一般用不到。
  • 不建议一上来就追最新版,新的一年版本体积巨大,动辄十几个GB,安装时间极长,而且对电脑配置要求高,很多情况下还会出现版本兼容性问题。

这里重点说一下,很多教程提到的“ModelSim-Altera”,区别于独立安装的ModelSim SE。前者是Altera(Intel)从Mentor那边获得授权的定制版,只能仿真Altera器件相关的功能,但它和Quartus的联调最顺畅。后者是完整版,功能更全,但破解方式不同,配置联调也麻烦一些。入门阶段用ModelSim-Altera就够了。

1.3 系统要求与下载渠道

安装Quartus II 13.1之前,先确认你的电脑满足基本配置。我实测下来,Windows 10 64位系统,8GB内存,双核CPU,就能比较流畅地跑13.1版本。如果内存只有4GB,编译稍微大一点的工程会比较吃力,建议关闭其他占用内存的程序。Windows 11系统装13.1也是可以的,但偶尔会遇到USB-Blaster驱动签名的问题,这个我放在后面常见问题里讲。

下载方面,Altera官网现在已经不直接提供13.1的下载入口,需要到Intel的下载中心或者软件历史版本页面找。不过很多高校镜像站、网盘都存了完整的安装包,体积在3GB到6GB左右。下载时注意核对MD5值,避免下载到损坏的压缩包。

2. Quartus II 13.1完整安装流程

2.1 解压与安装目录规划

拿到安装包后,第一步是解压。这里有一个非常关键的细节:整个安装路径中不能出现中文,也不能有空格,最好也不要用特殊符号。比如D:\altera\13.1\quartus就很好,D:\软件\Quartus 13.1这种路径极大概率会在后续使用中出问题。

还需要提前规划好两个安装目录:

  • Quartus主程序目录,比如D:\altera\13.1\quartus;
  • ModelSim-Altera仿真工具目录,比如D:\altera\13.1\modelsim_ae。

如果安装包里包含多个组件,建议把Quartus和ModelSim一起装,不要只选Quartus而漏掉ModelSim。

2.2 主程序安装步骤

以下步骤以Quartus II 13.1为例,其他版本流程大同小异:

  1. 进入解压后的文件夹,找到安装启动程序setup.bat或QuartusSetup-13.1.0.162.exe,右键选择“以管理员身份运行”。这一步不能省,否则后续写配置文件和注册表时可能无权限。
  2. 安装界面出来后,会先询问是否安装ModelSim-Altera,这里注意看安装选项,新手建议勾选,省得后面单独装。
  3. 接受许可协议,这一步没有悬念,直接Yes。
  4. 选择安装组件:对于新手,建议勾选Quartus II软件本体,其他可选组件先不装,等熟悉之后再按需添加。尤其是那些巨大的器件支持包(Device Support),全部勾选会让安装包膨胀到十几G,安装时间翻倍。建议只勾选Cyclone系列,因为大多数入门板子都是Cyclone IV或者Cyclone 10。
  5. 指定安装目录,务必保证纯英文路径。
  6. 等待安装完成。这个过程根据电脑性能,可能需要20到60分钟。期间不要取消或强杀进程,我就见过有人因为觉得卡住而关掉安装程序,结果系统残留一堆半成品文件。

2.3 USB-Blaster驱动安装的坑

Quartus装完之后,第一次插上USB-Blaster下载器,Windows会提示安装驱动。驱动文件在C:\altera\13.1\quartus\drivers\usb-blaster目录下,手动指定到这个目录安装即可。特别提醒,如果Windows 10以上系统提示“驱动无法验证发布者”,不要直接忽略,先去设备管理器里找到带黄色感叹号的USB-Blaster设备,右键更新驱动,选择“浏览我的电脑以查找驱动程序”,路径指到驱动目录。要是还是装不上,大概率是驱动签名问题,需要在系统启动时禁用驱动程序强制签名,具体方法搜索一下就有。

3. ModelSim的安装与激活

3.1 安装ModelSim-Altera

如果你在安装Quartus时勾选了ModelSim-Altera组件,那么安装完成后在开始菜单程序组里能找到ModelSim-Altera 13.1的快捷方式。如果没有安装,也可以单独安装目录下的modelsim_ae安装包。

安装ModelSim时同样要注意路径纯英文。装完之后,做一次简单启动测试:打开ModelSim,看是否弹出License对话框。如果只弹了一个“License not found”的错误窗口,说明还没有配置License文件。

3.2 License文件配置

ModelSim编译仿真必须要License,没有License,软件能打开但无法编译设计文件。配置License是关键步骤,建议如下操作:

  1. 打开Quartus II安装目录下C:\altera\13.1\modelsim_ae\win32aloem,查看是否有modelsim.ini这个配置文件,这个文件是ModelSim启动时读取的配置文件。
  2. 在环境变量里新建系统变量LM_LICENSE_FILE,变量值填你的License文件路径,例如D:\altera\license.dat。
  3. 回到Quartus开始菜单,运行“License Setup”工具,在License File栏填入同一个路径。
  4. 重新启动ModelSim,如果不再报License错误,就说明激活成功。

这里补充说明一下License文件的管理。License文件一定要放到一个稳定的目录,不要放在桌面或临时文件夹。因为重装系统或清理临时文件时,License经常被误删,导致软件突然用不了。我一般习惯把License文件统一放到D:\altera\licenses目录下集中管理。

3.3 配置环境变量的细节

环境变量配置看似简单,但有个容易犯的错:Windows的环境变量分“用户变量”和“系统变量”,给当前用户配置就行,不要乱动系统变量。另外,如果同时装了多个版本的ModelSim,LM_LICENSE_FILE的值只能指到一个License文件,切换版本时要注意路径。我见过有人为了图省事,把所有License路径用分号串在一起,虽然ModelSim能识别多个路径,但一旦某个路径指向不存在或过期的License,反而会引起莫名其妙的报错。

4. Quartus II与ModelSim的联调设置

4.1 在Quartus II中指定ModelSim路径

装好两个软件之后,真正让它们协同工作的关键是联调设置。在Quartus II中执行以下操作:

  1. 打开Quartus II,点击菜单栏Tools -> Options。
  2. 在左侧Category树形目录中找到EDA Tool Options。
  3. 在右侧的ModelSim-Altera选项里,填入ModelSim的可执行文件路径,比如C:\altera\13.1\modelsim_ae\win32aloem\modelsim.exe。注意这里要精确到可执行文件,不是目录。
  4. 点击OK保存。

设置好之后,Quartus在编译工程时,如果想调用ModelSim做仿真,就会根据这个路径自动拉起ModelSim。这个路径非常容易配错,很多人把路径填成了ModelSim的安装根目录,Quartus找不到可执行文件,仿真时点了没反应,还以为是自己工程代码有问题。

4.2 工程中的仿真设置

新建或打开一个Quartus工程后,还需要在工程设置里指定仿真工具。操作路径是Assignment -> Settings -> EDA Tool Settings -> Simulation。在Tool name下拉框里选择ModelSim-Altera,语言选择Verilog或VHDL,取决于你写哪种语言。Test Benches区域可以添加你写的testbench文件,也可以在仿真时临时添加。

这里的Testbench配置建议提前做好。新建testbench文件时遵循固定的命名规范,比如tb_加模块名,编译时不容易乱。在Test Benches对话框中点击New,填入testbench文件名,然后在File name里选择对应的.v文件。有一个容易被忽视的地方:Testbench和设计文件最好放在同一个工程目录下,或者使用相对路径,否则工程移植到别的电脑时路径全部失效,编译直接报错。

4.3 从Quartus启动ModelSim仿真

设置完成后,可以在Quartus的Processing菜单下看到Start Simulation的命令,点击后Quartus会先编译当前设计,然后自动启动ModelSim并加载工程和testbench。

如果你是一个新手,刚开始建议先不要通过Quartus联调,而是用ModelSim独立仿真。因为Quartus在调用ModelSim时会生成一堆额外的编译脚本和映射库文件,一旦出错,那些报错信息对新手来说非常不友好。独立仿真虽然要手动添加源文件和testbench,但每步做什么都是自己控制的,出问题好排查。

5. 实操演示:用ModelSim完成一次完整仿真

5.1 创建一个简单的仿真工程

在ModelSim中创建一个工程,用来验证一个最简单的与门逻辑。这个过程虽然基础,但麻雀虽小五脏俱全,能让你掌握ModelSim的核心操作。

  1. 打开ModelSim,菜单File -> New -> Project,填写工程名字(必须是英文),指定工程目录。
  2. 点击完成按钮后,立刻弹出“Add items to the Project”对话框,点击Create New File,创建一个新的源文件。
  3. 同理创建一个testbench文件。注意testbench文件不要放在和源文件相同的目录下,建议单独建一个tb目录管理,工程文件多了以后便于区分。

有了工程和文件后,在ModelSim的Project窗口中双击对应的文件,会弹出编辑器,把以下代码贴进去:

module and_gate ( input a, input b, output y ); assign y = a & b; endmodule
`timescale 1ns/1ps module tb_and_gate; reg a; reg b; wire y; and_gate uut ( .a(a), .b(b), .y(y) ); initial begin a = 0; b = 0; #10; a = 0; b = 1; #10; a = 1; b = 0; #10; a = 1; b = 1; #10; $stop; end endmodule

这段代码里,timescale是时间尺度定义,1ns/1ps表示仿真时间单位为1纳秒,精度为1皮秒。reg类型用于刺激信号,wire类型用于模块输出。initial块是一种一次性的初始化块,仿真从0时刻开始执行,每过一个#10延迟10ns,分别给a和b赋值不同的组合。

5.2 编译和仿真操作

写完代码后,在Project窗口里,右键点击源文件,选择Compile。这个操作会把Verilog源码翻译成ModelSim内部的事件驱动模型。只有编译成功后才能开始仿真。

  • 如果编译时报语法错误,根据Transcript窗口中提示的行号和错误信息修改代码。常见的错误包括缺少分号、模块名不匹配、端口气泡不匹配等。
  • 仿真开始前,需要先启动仿真库。在ModelSim库面板里,默认有一个work库,这是ModelSim为每个工程自动创建的工作库。在Project窗口选择testbench文件,右键点击Simulate。这里注意,如果你选错了文件,比如选了模块文件而不是testbench,仿真会运行但没有输入激励,波形自然也不会变化。
  • 点击Simulate后,ModelSim会自动加载testbench的顶层模块,打开一个Wave窗口。如果Wave窗口没有自动出现,可以在菜单View -> Wave中手动打开。

5.3 添加信号并运行仿真

波形窗口打开后,需要手动把要观察的信号添加进去。

  1. 在Simulation窗口中找到tb_and_gate这个实例。点击左侧的加法号展开,可以看到内部信号列表。
  2. 全选这些信号,右键选择Add Wave。此时Wave窗口会列出所有添加的信号。
  3. 在Wave窗口的工具栏里,点击Run按钮,或者直接输入快捷键run -all。ModelSim会一直运行到仿真结束,即到$stop这一行。
  4. 此时波形窗口中会出现a、b、y三条信号线,而且y是a和b做与运算的结果。如果逻辑正确,当a=1且b=1时,y输出为1,其他组合下y全部为0。

整个流程走通之后,“用ModelSim做仿真”这件事就算入门了。后续再学RTL仿真、门级仿真、时序仿真,都是在同一个操作框架上叠加不同的编译选项和库文件。

6. 常见问题与排查技巧实录

6.1 “仿真波形是红线”怎么解决

网上关于ModelSim仿真波形是红线的搜索量一直很高,这个问题太典型了。所谓红线,是指波形窗口中的信号状态为X(未知态),在默认配色下显示为红色。出现红线说明仿真器不知道这个信号当前是什么值,往往是因为驱动信号没有正确连接或者初始化缺失。

常见原因和解决办法如下:

  • 代码中有模块实例化,但端口连接不正确,例如漏连了输出端口。检查uut实例化的端口映射与模块定义是否一致。
  • testbench里的激励信号没有初始化。Verilog的reg类型变量默认是X态,如果你在initial块里只赋值了一部分信号,那其余信号会一直是X态。务必在initial块里给所有输入信号赋初值。
  • 模块的输出信号在代码中没有被赋值,比如状态机的某个状态缺少default,导致输出悬空。MODELSIM会在Transcript中提示类似“Signal X”的信息,可以回去查。
  • 时钟和复位信号冲突。比如设计中存在异步逻辑但没有处理好复位,仿真时可能出现X态传播。参考方式是给所有时序逻辑加上明确的同步复位或异步复位。

6.2 编译通过但仿真没有任何波形

这个问题也很常见,现象是编译没有问题,但点击Run之后Wave窗口里空荡荡的,既没有信号也没有波形。排除了代码问题之后,我首先会检查是否选错了仿真顶层。

ModelSim中仿真的顶层是testbench模块,而不是被测模块。如果你在Project窗口里直接对源文件点Simulate,而不是对testbench点,ModelSim会把被测模块当作顶层仿真。这个模块的所有输入都没有驱动源,输出自然也没有意义,甚至Wave里根本不会显示testbench中的信号。

解决办法是:确保Simulate的是tb_and_gate这个文件。如果已经误操作,需要点击菜单Simulate -> End Simulation,结束当前仿真,然后重新在Project窗口右键正确的testbench文件再点Simulate。

6.3 License报错与常见启动故障

ModelSim启动时报“Unable to checkout a license”是安装阶段最高频的问题。

  • 确认环境变量LM_LICENSE_FILE已经配置,并且变量值里没有多余空格。
  • 确认License文件路径准确无误,可以直接在资源管理器里打开该路径验证。
  • 确认License文件名是license.dat,不要改成其他名字。
  • 如果之前装过其他Mentor公司的工具,可能存在License冲突,此时需要把LM_LICENSE_FILE里的旧路径排查掉。
  • 杀毒软件拦截也可能导致License无法正常读取。Windows Defender或第三方杀毒经常对License工具的注册行为弹窗拦截,安装激活时建议暂时退出杀毒软件,或者把License文件和激活工具加入白名单。

6.4 USB-Blaster下载不成功

仿真正常、综合也正常,但程序下载到FPGA开发板时提示“USB-Blaster not found”或“Device chain broken”,这类问题出现在硬件联调环节。

  • 检查USB-Blaster驱动是否安装成功。设备管理器里如果显示USB-Blaster图标正常,没有黄色感叹号,说明驱动OK。
  • 检查开发板电源是否已经接通,下载线是否插稳。
  • 在Quartus的Hardware Setup里选择正确的硬件类型(USB-Blaster),并确认端口被正确识别。
  • 如果是笔记本电脑的USB口供电不足,换一个USB口或使用带外接电源的USB HUB试试。
  • Windows 11下驱动签名问题优先考虑,可尝试在高级启动选项里禁用驱动签名强制后再安装驱动。

7. 开发环境优化与个人经验总结

7.1 环境变量和目录规划进阶

在安装了多个版本的Quartus或ModelSim的情况下,环境变量管理就显得特别重要。建议进入系统环境变量编辑界面,把所有和Altera、ModelSim相关的变量统一整理。

我的习惯是单独建一个环境变量文件,记录当前激活的版本组合。切版本时只要改变量值即可,而不是去删改一堆系统路径。另外,ModelSim目录下会生成一个modelsim.ini文件,里面记录了库映射关系。如果你手动移动过工程目录,这个文件里的路径会自动更新,但偶尔会失效,导致打开工程时报库找不到,解决办法是删除旧的modelsim.ini,重新打开ModelSim让它自动生成。

7.2 工程目录组织的经验

实际开发中,一个FPGA工程目录不要所有的文件都堆在一起。我常用的目录结构如下:

  • rtl/:存放设计源文件,即模块代码。
  • tb/:存放testbench测试文件。
  • sim/:存放ModelSim工程文件和仿真脚本。
  • syn/:存放Quartus工程文件。
  • doc/:存放需求文档、引脚分配说明等。

这样分类的好处是,一个工程可以使用多个工具,但彼此的临时文件和工程文件互不干扰。Quartus工程文件(.qpf、.qsf)和ModelSim工程文件(.mpf)分开放在不同目录,万一哪个工程的工程文件损坏,不会影响另一个工具的工程。

7.3 个人折腾环境的一点心得

装了这么多遍Quartus和ModelSim之后,我最大的体会是:安装软件本身不难,难的是理解两个软件各自的作用和边界。很多人花大量时间折腾“完美破解”,却对仿真原理一窍不通,遇到波形不对就发懵。

我的建议是,在安装完环境、成功跑通一次仿真之后,不要急着去写复杂的代码,先老老实实把之前那个与门仿真的流程手动重复五遍以上,做到不看教程也能独立完成“创建工程、写代码、编译、添加到波形、运行、看结果”这套完整流程。等到这些基本操作形成肌肉记忆后再去碰状态机、FIFO、UART等复杂设计,你会发现多数问题的解决方案已经在掌握的基本操作之中。

最后再分享一个小技巧:在ModelSim的Transcript窗口里输入help可以查看全部命令;输入help run可以查看run命令的详细用法。很多人只盯着图形界面找按钮,却忽视了ModelSim最强的地方其实是它的命令行能力。学会几个常用命令,比如vlib、vlog、vsim、run,后面写自动化仿真脚本时就比别人从容多了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询