ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Quartus II 13.1 安装与首个工程实战:从下载到烧录全流程

Quartus II 13.1 安装与首个工程实战:从下载到烧录全流程 1. 为什么还有人坚持用 Quartus II 13.1如果你现在打开 Intel 官网会发现 Quartus 已经更新到二十多个版本了功能越来越全界面越来越现代。但如果你去问一圈还在做 FPGA 教学、老项目维护或者参加某些固定器件型号比赛的工程师会发现相当一部分人依然在用 Quartus II 13.1。这不是怀旧而是有非常现实的原因。最核心的一点是器件支持范围。Quartus II 13.1 是最后一个对 Cyclone II、Cyclone III、Cyclone IV 早期型号以及 MAX II、MAX V 等经典器件提供完整支持的版本之一。很多高校实验室的开发板——比如经典的 DE2、DE0、EP4CE 系列入门板——配套资料和引脚约束都是基于这个版本写的。你拿新版本打开老工程经常遇到 IP 核不兼容、器件库缺失、引脚分配文件格式变化等问题折腾半天不如直接用 13.1 省事。另一个原因是体积和运行速度。新版 Quartus Prime 动辄几十 GB 的安装包对电脑配置要求也高。13.1 的完整安装包大概在 5-6 GB 左右装在一台普通的办公笔记本上也能跑得动综合小规模逻辑的速度反而更快。对于只是做教学实验、跑跑流水灯和状态机的场景完全够用。还有一个很实际的因素网络上的学习资料和教程。你去搜 FPGA 入门教程大量经典视频和文档都是基于 Quartus II 13.1 录制的。跟着教程走版本一致能避免很多教程里有的菜单我找不到的尴尬。所以这篇文章的目标很明确帮你把 Quartus II 13.1 从下载到跑通第一个工程的全流程走一遍重点讲清楚那些教程里通常不写、但新手一定会卡住的细节。适合刚接触 FPGA 的学生、需要维护老工程的工程师以及想快速搭一套稳定开发环境的人。2. 安装前的准备工作别急着双击安装程序很多人拿到安装包就直接双击结果装到一半报错或者装完了发现器件库不全、License 用不了。安装前的准备工作其实决定了后面顺不顺利这一步花十分钟能省后面两小时。2.1 安装包的构成与版本选择Quartus II 13.1 的官方发布通常包含几个独立的组件你需要搞清楚每个是干什么的组件名称作用是否必装Quartus II Software主程序包含综合、布局布线、时序分析必装Device Support器件支持库不同器件系列分开打包必装按需选器件ModelSim-Altera仿真工具做功能验证用建议装Nios II EDS软核处理器开发环境按需DSP Builder数字信号处理建模工具按需这里有个关键点Device Support 是分开的。Quartus II 13.1 的器件库分为 Cyclone、Arria、Stratix 等几个大系列每个系列又是独立安装包。如果你只做 Cyclone IV 的开发就只需要下载对应的 Cyclone 器件库不用把全部器件都装上能省好几个 GB 的空间。提示下载时注意区分 32 位和 64 位版本。现在基本都用 64 位系统选 64 位主程序综合速度会快不少。但要注意某些老旧的第三方工具或 IP 可能只兼容 32 位这种情况才需要装 32 位版本。2.2 系统环境与依赖检查Quartus II 13.1 是 2013 年前后发布的软件对操作系统的兼容性有讲究。它在 Windows 7 上运行最稳定Windows 10 也能装但需要额外注意几点。Windows 11 官方没有明确支持实测大部分功能能用但偶尔会有界面渲染的小问题。安装前建议做这几件事关闭杀毒软件的实时防护。安装过程中会释放大量临时文件某些杀毒软件会误判并拦截导致安装中断或文件缺失。装完再打开就行。确认磁盘空间。主程序加器件库加仿真工具完整装下来大概需要 15-20 GB。建议装在系统盘以外的分区路径不要有中文和空格。检查系统用户名。如果你的 Windows 用户名包含中文某些组件安装时可能出问题。可以临时新建一个纯英文的用户账户来安装。准备好 License 文件。Quartus II 13.1 需要 License 才能正常使用完整功能。官方提供 30 天试用长期使用需要获取对应的授权文件。这一步在安装前就要想好否则装完了打不开工程。2.3 安装路径的命名讲究这一点特别容易被忽略。Quartus II 13.1 内部有些脚本和工具对路径中的空格和特殊字符处理不好。安装路径建议用纯英文、无空格的形式比如D:\altera\13.1\quartus。不要用D:\Program Files\Quartus II 13.1这种带空格和版本号的路径后面调用命令行工具时容易出问题。同样你的工程目录也建议放在纯英文路径下。我见过太多人把工程放在桌面上而桌面路径里带着中文用户名结果综合时报找不到文件的错误排查半天才发现是路径问题。3. 一步步走完安装流程每个界面的选择逻辑准备工作做完就可以开始安装了。这一节我按实际点击顺序来讲重点解释每个选择背后的原因而不是单纯告诉你点下一步。3.1 主程序安装的关键选项双击安装程序后前面几个界面是欢迎页和许可协议直接过。到了选择安装类型这一步会出现两个选项Complete和Custom。很多人图省事选 Complete结果把一堆用不到的器件库和工具全装上了白白占用空间。我的建议是选Custom然后手动勾选你需要的组件。具体勾什么取决于你手头的开发板用什么器件如果是 Cyclone IV E 系列比如 EP4CE6、EP4CE10勾选 Cyclone IV 相关支持。如果是 Cyclone II 或 III 的老板子对应勾选。ModelSim-Altera 建议勾上后面做仿真会用到。Nios II 如果暂时不碰软核可以先不装需要时再补装。安装路径就按前面说的选纯英文无空格的目录。接下来是等待安装的过程根据勾选组件的多少大概需要 20 分钟到 1 小时不等。安装过程中有一个界面会问你是否安装 USB-Blaster 驱动。这个一定要勾上。USB-Blaster 是 Altera 系列下载器的驱动你后面要把程序烧进 FPGA 板子全靠它。如果这里没装后面插上下载器电脑识别不了还得手动去设备管理器里装驱动麻烦。3.2 器件库的单独安装主程序装完后如果你在 Custom 里没有勾选全部器件可能需要单独运行器件库的安装程序。器件库的安装更简单基本就是选路径、点下一步。注意路径要和主程序保持一致或者让安装程序自动识别主程序位置。这里有个坑器件库的版本必须和主程序版本严格对应。13.1 的器件库不能用在 13.0 的主程序上反之亦然。下载时看清楚版本号。3.3 License 的配置与常见报错装完主程序和器件库第一次打开 Quartus II 时它会提示你 License 相关的问题。这一步是新手最容易卡住的地方。配置 License 的流程大致是在菜单里找到 License Setup指定你的 License 文件路径。License 文件里绑定了网卡 MAC 地址所以你需要确认自己电脑的网卡地址和 License 里写的一致。常见的报错和原因报错信息可能原因处理方向License file is invalid文件损坏或格式不对重新获取 License 文件MAC address mismatch网卡地址不匹配核对网卡地址或更换绑定的网卡License expired授权过期获取新的授权Feature not available该功能未包含在授权中确认授权包含的功能范围注意如果你用的是笔记本同时有有线和无线网卡License 绑定的可能是其中一个。如果换了网络环境导致网卡地址变化License 就会失效。这种情况可以尝试禁用不用的网卡或者重新申请绑定当前网卡的 License。配置好 License 后建议重启一次 Quartus II让设置完全生效。然后随便打开一个示例工程看看能不能正常综合确认环境没问题。4. 跑通第一个工程从建工程到烧录的完整链路环境装好了接下来用一个最简单的例子把整个流程走通。我选一个经典的流水灯工程因为它涵盖了 FPGA 开发的完整链路建工程、写代码、分配引脚、综合、布局布线、生成配置文件、烧录。每一步都跑通了你后面做复杂项目就有了基础。4.1 新建工程的几个必填项打开 Quartus II点 File 菜单里的 New Project Wizard。这个向导会引导你完成工程创建几个关键界面需要认真填第一页是工程目录、工程名和顶层实体名。工程名和顶层实体名建议保持一致比如都叫led_flow。工程目录就用你之前准备好的纯英文路径。第二页是添加已有文件。如果你是新建工程这里直接跳过。如果是从别处拷贝的工程可以在这里把源文件加进来。第三页是选择器件。这一步很重要必须和你手头的开发板型号完全一致。比如你的板子是 EP4CE6E22C8就在 Cyclone IV E 系列里找到这个具体型号。选错了器件后面引脚分配和烧录都会出问题。第四页是选择 EDA 工具。如果你要用 ModelSim 做仿真就在这里指定仿真工具为 ModelSim-Altera格式选 Verilog HDL 或 VHDL。如果暂时不仿真可以跳过。最后确认信息无误点 Finish工程就建好了。4.2 写一个能跑的 Verilog 模块工程建好后新建一个 Verilog 文件写一个简单的流水灯逻辑。核心思路是用一个计数器产生延时然后根据计数器的值控制 LED 的亮灭顺序。module led_flow( input clk, // 50MHz 时钟 input rst_n, // 复位低有效 output reg [3:0] led // 4 个 LED ); reg [24:0] cnt; // 分频计数器 always (posedge clk or negedge rst_n) begin if (!rst_n) cnt 0; else if (cnt 25d24_999_999) // 0.5 秒 cnt 0; else cnt cnt 1; end reg [1:0] state; always (posedge clk or negedge rst_n) begin if (!rst_n) state 0; else if (cnt 25d24_999_999) state state 1; end always (*) begin case (state) 2d0: led 4b0001; 2d1: led 4b0010; 2d2: led 4b0100; 2d3: led 4b1000; default: led 4b0001; endcase end endmodule这段代码的逻辑很直白50MHz 时钟经过 2500 万次计数得到 0.5 秒的间隔每 0.5 秒 state 加一根据 state 的值点亮不同的 LED形成流水效果。你可以根据自己板子的时钟频率和 LED 数量调整参数。写完代码后点工具栏的编译按钮Quartus 会先做语法检查。如果有错误下面的 Messages 窗口会提示具体行号和原因。常见的语法错误包括漏分号、模块名和文件名不一致、端口声明不匹配等。4.3 引脚分配新手最容易出错的地方代码编译通过后下一步是把代码里的端口和 FPGA 芯片的实际引脚对应起来。这一步叫引脚分配是新手翻车最多的地方。打开 Pin Planner在 Assignments 菜单里你会看到一个引脚列表。需要把clk、rst_n、led[3:0]这些端口分配到具体的引脚号上。引脚号从哪来从你开发板的原理图或用户手册里查。比如某块 Cyclone IV 开发板的引脚定义可能是端口引脚号说明clkPIN_2350MHz 晶振输入rst_nPIN_25复位按键led[0]PIN_114LED1led[1]PIN_115LED2led[2]PIN_116LED3led[3]PIN_117LED4在 Pin Planner 里逐个填入这些引脚号或者直接在工程目录下的.qsf文件里用set_location_assignment命令批量添加。后者更快适合引脚多的情况。提示引脚分配完成后一定要重新编译一次。因为引脚信息是在布局布线阶段生效的不重新编译的话生成的配置文件里还是旧的引脚映射。这里有个常见误区有人以为引脚可以随便分配。实际上 FPGA 的引脚有很多类型比如专用时钟引脚、普通 IO、电源引脚等。把时钟信号分配到普通 IO 上虽然可能也能跑但时序性能会差很多高速设计时容易出问题。所以尽量按开发板的设计来分配。4.4 综合、布局布线与烧录引脚分配好之后点全编译按钮Quartus 会依次执行 Analysis Synthesis、Fitter、Assembler、TimeQuest Timing Analyzer 几个阶段。全编译通过后会在工程目录的output_files文件夹里生成.sof文件这就是可以烧录到 FPGA 的配置文件。烧录步骤用 USB-Blaster 下载器连接电脑和开发板给开发板上电。打开 Programmer 工具Tools 菜单里。确认 Hardware 里识别到了 USB-Blaster。在文件列表里添加刚才生成的.sof文件。勾选 Program/Configure点 Start。如果一切正常你会看到 Progress 走到 100%然后开发板上的 LED 开始流水闪烁。到这一步整个链路就完全跑通了。如果烧录失败常见原因有下载器驱动没装好、开发板没上电、JTAG 接口接触不良、器件型号选错。逐个排查基本都能解决。5. 那些教程不写但一定会遇到的坑前面走的是顺利流程但实际操作中总会遇到各种意外。这一节我把这些年踩过的、以及被问得最多的坑整理出来你遇到问题时可以对照排查。5.1 编译报错Cant find design entity的排查思路这个报错的意思是 Quartus 找不到顶层模块。原因通常有几个顶层实体名和工程设置里的名字不一致、文件没有被添加到工程里、模块名拼写错误。排查顺序建议这样先看工程设置里的 Top-level entity 是什么再去代码里确认模块名是否完全一致Verilog 是区分大小写的。然后检查 Project Navigator 的 Files 列表里有没有你的源文件。如果文件在硬盘上但没在列表里右键添加即可。还有一种情况是文件扩展名不对。Quartus 认的 Verilog 文件扩展名是.v如果你存成了.txt或者.verilog它不会自动识别。改回.v就行。5.2 时序不满足时的处理策略当你的设计比较复杂或者时钟频率较高时全编译后 TimeQuest 可能会报时序违规Timing Violation。这时候不要慌先看报的是哪种违规。如果是 Setup Violation建立时间违规说明数据到达太晚。可以尝试的方法包括优化组合逻辑、插入流水线寄存器、降低时钟频率、调整布局布线策略。如果是 Hold Violation保持时间违规相对少见通常和时钟树或跨时钟域有关。对于初学者的小工程时序一般不会出问题。如果报了先检查是不是时钟约束没写对。Quartus II 13.1 里需要用 SDC 文件来约束时钟比如create_clock -name clk -period 20 [get_ports clk]。没有约束的话时序分析结果没有参考意义。5.3 USB-Blaster 识别不到的几种情况下载器识别不到是高频问题。按这个顺序排查设备管理器里有没有 USB-Blaster 设备没有的话是驱动问题重新安装驱动。有设备但带黄色感叹号驱动版本不对手动指定驱动路径到 Quartus 安装目录下的 drivers 文件夹。设备正常但 Programmer 里 Hardware 是空的点 Hardware Setup 手动添加或者检查 JTAG 线序。都正常但烧录报错检查开发板供电和 JTAG 接口是否插反。我遇到过最隐蔽的一种情况USB 线本身是充电线只有电源线没有数据线。换一根确认能传数据的线就好了。这种问题很难从软件层面看出来只能靠替换法排查。5.4 工程迁移到另一台电脑的注意事项把工程从一台电脑拷到另一台经常出现打不开或者编译报错的情况。原因是工程里包含了一些绝对路径的引用比如 IP 核的路径、SDC 文件的路径等。迁移工程时建议把整个工程目录一起拷贝包括.qpf、.qsf、.qip等所有文件。不要只拷.v源文件。到了新电脑上如果路径变了需要在工程设置里重新指定 IP 文件的位置。另外新电脑上的 Quartus 版本最好和原电脑一致。13.1 的工程用更高版本打开时会提示升级升级后可能引入不兼容的改动。如果只是看看代码用文本编辑器打开.v文件就行不用非得用 Quartus。6. 让 13.1 用起来更顺手的几个配置环境跑通之后可以做一些配置上的优化让日常开发效率更高。这些都是我用了多年之后固定下来的习惯供你参考。6.1 编辑器与字体设置Quartus 自带的文本编辑器功能比较基础但可以通过设置改善体验。在 Options 里的 Text Editor 部分可以调整字体、字号、Tab 宽度、自动缩进等。建议把字体换成等宽字体比如 Consolas 或 Courier New代码对齐看起来更舒服。如果你习惯用外部编辑器写代码比如 VS Code 或 Notepad也完全可以。Quartus 会自动检测文件变化你在外部改完保存回到 Quartus 重新编译就行。但要注意编码格式统一用 UTF-8 或者 GB2312避免中文注释乱码。6.2 常用快捷键与效率技巧几个我高频使用的操作CtrlR开始全编译比点按钮快。CtrlShiftN新建文件。在代码里选中一个信号名按CtrlF可以快速搜索它在工程里的所有引用。Messages 窗口里双击错误信息会自动跳转到对应代码行。还有一个很实用的功能SignalTap II 嵌入式逻辑分析仪。它可以把 FPGA 内部的信号抓出来看波形相当于一个内置的示波器。调试时序问题时特别有用不用额外接逻辑分析仪。在 Tools 菜单里打开添加要观察的信号重新编译烧录后就能实时看波形。6.3 工程模板与复用如果你经常新建工程可以做一个模板工程把常用的设置、引脚约束、SDC 文件都配好。新建工程时直接复制模板改改名字就能用省去重复配置的时间。具体做法建一个空工程配置好器件型号、仿真工具、常用的引脚分配然后把这个工程目录保存为模板。以后新工程就从这里拷贝一份用sed或者手动替换工程名。对于做系列实验或者多个相似项目的场景效率提升很明显。7. 关于版本选择的一点个人看法写到这里流程和坑基本都覆盖了。最后聊几句版本选择的事因为总有人问都什么年代了还用 13.1是不是太老了。我的看法是工具是为目标服务的不是越新越好。如果你做的是 Cyclone IV 及更早器件的教学实验、老项目维护13.1 就是最合适的选择没有之一。它的器件支持完整、资料丰富、体积可控、运行稳定这些优势在新版本上反而未必都有。但如果你用的是 Cyclone 10、Arria 10 这些新器件或者需要用到最新的 IP 核和高速接口那就必须上新版 Quartus Prime。这种情况下 13.1 帮不了你。所以不要纠结版本新旧先看你手头的板子和项目需求。器件决定了工具版本的下限个人习惯和资料生态决定了上限。对于绝大多数 FPGA 入门和经典器件开发场景Quartus II 13.1 依然是一个靠谱、省心的选择。把环境搭稳把流程跑通把时间花在逻辑设计和调试上这才是正经事。
返回列表