Quartus II 13.0 MAX系列器件库缺失?完整补装与排障指南
1. 为什么你非要单独找 MAX 系列器件库先说个现象很多朋友下载了 Quartus II 13.0 的完整安装包装完以后打开 New Project Wizard在器件列表里翻半天发现 Cyclone 系列整整齐齐Stratix 也有唯独 MAX 系列要么是空的要么只有几个老掉牙的 MAX 3000 器件MAX II 家族的 EPM240、EPM570、EPM1270 一个都看不见。这时候你才反应过来原来所谓“完整版”其实并不完整器件库是拆开分发的。我当年第一次遇到这个问题也懵了明明安装的时候选的是全部器件支持为什么 MAX 系列会消失后来才搞清楚Quartus II 13.0 的安装界面里器件支持Device Support是分模块勾选的如果你用的是默认安装或者精简安装有些模块根本没被勾上。但还有另一种情况就是你下载的本身就是一个不带 MAX 器件库的版本需要单独把器件库文件补进去。这篇就专门聊这个事Quartus II 13.0 的 MAX 系列器件库到底怎么补、补完之后怎么验证、实际工程里选器件要注意什么以及我这些年用 13.0 踩过的那些坑。内容全部基于实际工程经验适合正在用 13.0 做 CPLD 开发、尤其是手上有 MAX II 或者 MAX V 芯片的朋友参考。2. Quartus II 13.0 的器件支持机制先弄明白再动手2.1 为什么器件库是“拆开”的Quartus II 从 9.x 版本开始就把器件支持拆成了若干个独立的库文件。每个器件系列对应一个或者多个 .qdz 后缀的压缩包其实是 Quartus Device Database 的缩写安装器在安装时会把这些 .qdz 文件解压到 Quartus 的 devices 目录里。你装的 Quartus II 13.0 主程序本质上只是编译器、综合器、编辑器这些工具链的集合体。它本身不认识任何具体的 FPGA 或者 CPLD 芯片全靠器件库提供芯片的时序模型、引脚定义、配置信息。所以如果你缺了 MAX 系列对应的 .qdz 文件那 Quartus 连“EPM570 是什么”都不知道更别提综合布线了。2.2 MAX 系列到底包含哪些器件族这里先理清一个概念很多人把“MAX 系列”理解成一个东西其实 Quartus II 13.0 里的 MAX 家族分了几个不同的族器件族典型型号说明MAX 3000AEPM3032、EPM3064、EPM3128老一代 CPLD5V/3.3V 时代的产品MAX 7000AE/BEPM7032、EPM7064、EPM7128经典 CPLD工业控制领域存量很大MAX IIEPM240、EPM570、EPM1270、EPM22103.3V CPLD内部带 Flash 配置应用最广MAX V5M40、5M80、5M160、5M240、5M570MAX II 的升级版功耗更低封装更小Quartus II 13.0 是最后一个完整支持 MAX II 全系列的版本之一对 MAX V 的支持也比较完善。如果你用的器件是 MAX II 或者 MAX V那 13.0 是一个很顺手的版本不需要往上追求 13.1更没必要去用 17.0 之后的版本——那些新版对老 CPLD 的支持反而在收缩。2.3 确认你的 Quartus 缺少什么在动手之前先打开 Quartus II 13.0 的安装目录一般默认路径是这样C:\altera\13.0sp1\quartus\接下来看一眼devices文件夹C:\altera\13.0sp1\quartus\devices\正常情况下这个目录下面应该有一堆以器件族命名的子文件夹比如cyclone、cycloneii、stratix、max、maxii、maxv等等。如果maxii或者maxv根本没有那说明你的安装确实缺了这部分器件库。还有一种情况是maxii文件夹存在但打开后发现里面是空的或者只有common一个子目录。这种情况往往是安装过程中器件库解压不完整造成的直接补一个完整的 MAX 器件库覆盖进去就行。3. MAX 系列器件库的获取与安装实操3.1 器件库去哪找先说明一点这里说的“免费下载”指的是从正规渠道获取 Altera/Intel 官方发布的器件库文件。最靠谱的路径是 Intel FPGA 官方的下载中心按产品线找 Quartus II 13.0 的 Archive 页面里面有完整的组件下载列表包括主程序和各个器件库的独立压缩包。如果你手头有 Quartus II 13.0 的完整安装 DVD 镜像也可以直接从镜像里提取。安装镜像的components目录里通常会有一堆quartus_13.0_devices_maxii.qdz这样的文件找名字里带max或者maxii的就行。我不建议去第三方论坛下载来路不明的 .qdz 文件因为器件库属于底层数据文件如果被人改动过轻则编译报错重则下载到芯片里的时序模型不对跑起来才出问题。这一点上还是稳妥为上。3.2 安装界面里的正确勾选方式如果你打算重新完整安装一次那么在安装器进行到 “Select Components” 这一步时注意看左边的器件列表树。默认情况下Arria、Cyclone、MAX、Stratix 这些大类前面的复选框可能是未全选状态。你需要手动展开 MAX 系列这一项MAX IIMAX VMAX 3000AMAX 7000AEMAX 7000B全部勾上然后再继续安装。但这里有个容易忽略的细节只要你对器件的勾选做了任何变动安装器会重新计算需要的磁盘空间而且 Quartus II 13.0 的安装器有个毛病有时候你勾了 MAX但因为之前已经装过一次主程序第二次安装时它只补了主程序文件器件库还是没有解压。所以如果你是补装器件库最好用控制面板把整个 Quartus 卸载干净再重装别图省事直接覆盖。3.3 手动解压 .qdz 文件的偏方如果你已经装好了 Quartus II 13.0 主程序实在不想再折腾一遍完整安装还有个取巧的办法拿到对应的 .qdz 文件后把它当压缩包解压然后把内容手动丢进devices目录的对应位置。具体操作我试过几次可行。以 MAX II 为例先把quartus_13.0_devices_maxii.qdz备份一份。改后缀名为.zip然后用解压工具解压。解压后会得到maxii文件夹。把整个maxii文件夹复制到C:\altera\13.0sp1\quartus\devices\下。注意这个办法的前提是你机器上已经装好了 Quartus II 13.0 的主程序。解压完以后打开 Quartus在器件列表里应该就能找到 EPM240 那些型号了。3.4 安装完成后必须做的一件事不管你用哪种方式补的器件库装完之后都别急着开工程。建议先做一次“刷新器件库”的操作打开 Quartus II 13.0点击菜单栏的Tools-License Setup确认 License 正常再点Assignments-Device在器件列表里随便选一个 MAX II 型号看能不能正常选中。如果能选中且左下角的状态栏没有报错那基本上就说明器件库已经生效了。我之前遇到过一次情况文件都放到位了但打开 Quartus 后器件列表还是空的。后来发现是 Quartus 启动时读取的是devices目录下的一个 cache 文件旧缓存没刷新导致的。解决办法是退出 Quartus删掉安装目录下的这个文件C:\altera\13.0sp1\quartus\bin64\qcache.dat再重新启动器件列表就正常了。4. 新建 MAX 系列工程时的关键设置4.1 建工程时选对器件型号器件库补好之后新建工程的流程也要注意。打开File-New Project Wizard在Family下拉框里选MAX II然后在Device列表里选你手上实际的芯片型号。这里有个细节MAX II 系列里EPM240 有普通版本和 T100 封装版本之分命名上会体现出来。比如EPM240T100C5NEPM240T100I7N后缀 C 代表商业级温度范围I 代表工业级。N 代表无铅封装。选错型号会导致引脚分配对不上编译出来的 JEDEC 文件下载到芯片里也可能不正常。建议直接对着你芯片丝印上的完整型号选一点都不能马虎。其实这个话题特别好聊因为很多初学者会遇到一个问题Quartus 里器件列表特别长怎么快速定位我自己的习惯是在Device列表上方的Name filter里直接键入型号的关键部分比如输入EPM570列表会自动过滤到这个名字相关的型号省得在一长串列表里翻。这个功能对 MAX 系列这种命名规则比较整齐的器件族来说特别顺手。4.2 MAX 系列工程的引脚分配要点选好器件以后进入 Pin Planner 之前有几个点必须清楚第一MAX II 和 MAX V 都是 Flash 型 CPLD不需要像 Cyclone FPGA 那样外挂配置芯片。下载用的是 JTAG 接口在 Quartus 里选择Programmer模式时注意勾选JTAG模式而不是Active Serial。这个坑我见过不少朋友踩用 AS 模式连不上 MAX II 芯片然后跑来问是不是芯片坏了其实只是下载模式选错了。AS 模式是给 Cyclone系列 FPGA 用的用于主动串行配置外部的 EPCS 配置芯片。MAX 系列 CPLD 内部自带 Flash根本不吃 AS 这一套只认 JTAG。第二MAX 系列的 I/O 分成好几个 bank每个 bank 的 VCCIO 电压决定了这个 bank 所有引脚的输出电平标准。如果你的设计里既有 3.3V 接口又有 1.8V 接口那必须把这两类信号分配到不同的 bank并在 Pin Planner 里给每个 bank 单独设置 VCCIO。这一点在画原理图的时候就得提前规划不然后期软件编译通过、板子焊完才发现电压配错了就是返工。第三MAX II 的 GND 引脚和 VCC 引脚不能悬空。我知道这话听起来像废话但真的有人在设计板子时为了省事把 EPM570 的某个 VCC 引脚直接扔那不管结果芯片发热、逻辑随机翻转。MAX 系列的电源引脚数量比较多布局时要仔细看 Datasheet 里的 Pin Table逐项核对。4.3 MAX 系列工程中容易误用的选项新建工程的时候Quartus 会让你选Device Family中具体的器件但这里我要单独提示一个隐藏得比较深的问题。在 New Project Wizard 的第 4 步界面上有一个Show in Available devices list的选项它下面还有一个下拉框可以选择Package、Pin count、Speed grade之类的过滤条件。很多人在这里会先把Package选成Any然后再看列表结果发现自己想找的型号并不在列表里。这个原因一般是前面的Family选错了。比如你的芯片是 MAX V 系列的结果 Family 选成了 MAX II那当然看不到 5M570 的型号。另外在Speed grade的选择上MAX 系列的 CPLD 速度等级通常只有一个或者两个不像 FPGA 那么多档位。编译时如果没有特殊时序需求直接选默认即可不用过度纠结。5. 编译、下载与老版本软件的兼容问题5.1 代码与编译问题Quartus II 13.0 对 Verilog-2001 和 VHDL-93 的支持已经很成熟了MAX 系列因为是 CPLD没有复杂的时钟管理模块和高速收发器所以代码层面基本不会遇到因为器件资源不够而报错的情况。但有一点容易忽略CPLD 的宏单元Macrocell资源比 FPGA 的逻辑单元金贵得多。EPM570 只有 570 个宏单元你写个稍微复杂点的状态机可能就占掉一大半。我在实际项目里就遇到过同样的 Verilog 代码编译 Cyclone IV 轻松通过换到 EPM570 直接报Cant fit design into device。这种时候的解决思路不是去优化代码而是要在工程设置里做取舍。打开Assignments-Device-Device and Pin Options切到Configuration标签页把Configuration Mode设置成Single Uncompressed或者Single Compressed有时候能省出一些资源。再到Compilation Process Settings里把Auto Packed Registers打开也能提升一定的资源利用率。但说句实在话如果资源用得实在太紧张与其在编译设置里折腾不如直接换大一号的芯片。MAX II 系列的 EPM1270 比 EPM570 资源多一倍多封装也兼容往往换个芯片比优化代码省事得多。5.2 在 Win10/Win11 上跑老版本 Quartus 的兼容性Quartus II 13.0 是 2013 年发布的软件Windows 7 时代的产品。在 Windows 10 或 Windows 11 上安装和运行它通常会碰到几类问题第一USB-Blaster 驱动装不上。Win10 和 Win11 对老版驱动的数字签名校验更严格Altera 早期的 USB-Blaster 驱动在 Win10 上很容易出现感叹号。解决的办法很直接打开 Windows 的“高级启动”选项选择“禁用驱动程序强制签名”然后重启再手动安装驱动。驱动装好以后Quartus 的 Programmer 才能识别到下载器。第二软件启动崩溃或者闪退。这个大概率跟 PATH 环境变量里的 Java 或者其它工具的版本冲突有关。Quartus II 13.0 自带的 JRE 版本比较老如果你的系统里装了新版的 Java 并把它加到了 PATH 的前面Quartus 启动时可能加载了错误的 JDK导致启动失败。解决方法是把 Quartus 安装目录下的jre路径提到 PATH 的最前面或者干脆把系统里额外的 Java 暂时移出 PATH等 Quartus 跑起来再说。第三Programmer 识别不到 JTAG 链。这个问题几乎所有人都遇到过。除了上面的驱动原因外还有一个常见因素USB-Blaster 的固件模式和 Quartus 13.0 的版本不匹配。老的 USB-Blaster 一代在 13.0 下一般没问题但那些仿制的、或者新出的 USB-Blaster II 在 13.0 下反而不一定稳定。我自己实际测试的结果用原装 USB-Blaster 一代或者基于 FT2232 方案的兼容下载器在 13.0 下最稳。5.3 烧写 MAX II 时的几个实际操作细节下载之前先连线JTAG 接口的顺序是 TCK、TMS、TDO、TDI 四条信号加上 GND 和 VCC。MAX II 的 JTAG 电平是 3.3V如果你的下载器是 5V 供电搭一个电平转换或者确认下载器支持 3.3V 输出不然很容易把芯片搞挂。打开 Quartus Programmer 之后点击Hardware Setup选择 USB-Blaster。如果你的 JTAG 链上挂了多个器件Programmer 会自动扫描出来。扫描到芯片以后点击Add File选择编译生成的.pof文件注意MAX II 应该选 .pof 而不是 .sof勾选Program/Configure然后再点Start。这里有个细节MAX II 的配置模式默认是 JTAG 直接烧写内部 Flash。如果你编译只生成了.sof文件而工程设置里没有允许生成.pof那你在 Programmer 里会找不到合适的文件。解决办法是在Assignments-Device-Device and Pin Options的Configuration标签页里勾上Generate compressed bitstreams旁边的Generate programming file相关选项重新编译一次就会生成 .pof 了。5.4 工程文件版本升级的坑有些朋友可能手头上还有老的 Quartus II 9.0 或者 11.0 工程打算拿到 13.0 里重新编译。这当然可以但要注意一个转换问题。Quartus II 13.0 打开旧版本工程时通常会弹出一个提示框问你是否要把工程升级到当前版本。如果你直接点击升级Quartus 会对工程文件进行格式转换转换之后的.qsf文件跟旧版本就不兼容了也就是说升级操作是不可逆的。我建议在升级之前先把原始工程目录整个备份一份避免升级后遇到问题想回退却回不去。另外旧版本工程里的引脚分配、时序约束文件.qsf里的相关条目在 13.0 里一般能正常导入但个别老工程里用到的 MegaWizard 生成的 IP 核可能需要重新生成。老版 IP 和 13.0 的 IP 接口通常不兼容连接信号名字对不上直接编译会出现 port not found 的错误。这种情况没有捷径只能针对报错的模块重新配置 IP。6. 常见问题速查表与排障心得这部分直接给一个速查表都是我实际遇到或者帮别人排查过的典型问题按症状排序一条条说清楚原因和处理办法。症状可能原因处理办法新建工程找不到 MAX 系列器件器件库没安装完整检查devices目录下是否有maxii、maxv文件夹缺失就按 3.3 节方法补装器件列表有 MAX 但选不了版本与器件库不匹配Quartus II 13.0 需要安装 13.0sp1 更新包有些新封装型号只在 sp1 中支持下载时报 JTAG chain brokenUSB-Blaster 驱动异常禁用驱动签名强制后重装驱动或者换一个 USB 接口不要用 USB Hub下载时识别到芯片但 Program 失败.pof 文件与器件型号不匹配在 Programmer 里对比显示的 Device 型号和芯片丝印确认完全一致编译报 fit 错误资源不足CPLD 宏单元不够开启 Auto Packed Registers或者换更大容量型号代码编译通过但引脚不输出Bank 电压设置错误检查 Pin Planner 中每个 bank 的 VCCIO 电压是否与硬件一致频繁出现 Final register undefined状态机编码方式问题在工程设置里把 State Machine Processing 改成 One-Hot 试试打开旧工程报版本不支持工程版本过旧用旧版 Quartus 另存为较低版本格式再在 13.0 中打开启动时闪退或报 Java 错误系统 JRE 版本冲突修改 PATH 环境变量优先使用 Quartus 自带 jre编译时间特别长工程设置里开启了全局优化在 Compiler Settings 中把 Optimization Mode 调回 Balanced6.1 关于 13.0 和 13.1 的选择问题热词里有人在搜 “quartus ii 13.1”这里顺便说几句我的看法。13.1 是 13.0 的后续小版本更新修了不少 13.0 的 BUG同时对 Cyclone V、Stratix V 这些器件的支持更完善。但如果你是纯做 MAX 系列 CPLD 开发13.0 和 13.1 差别不大13.0 加 sp1 补丁已经完全够用。13.1 在 Windows 10 上的兼容性并没有比 13.0 好多少所以不用抱着“新版本肯定更稳定”的想法。我自己 90% 的 MAX 工程都是在 13.0sp1 下完成的几乎没出过因为软件本身导致的严重问题。还有朋友纠结要不要用 Quartus II 13.0 做 Cyclone 系列的开发。说实话如果是新项目不建议。Cyclone V 和更新器件建议上 Quartus Prime 16.0 以上版本老版本对这些新器件的支持是半吊子。但 MAX II 和 MAX V 这种老 CPLD13.0 反而是最成熟稳当的选择。6.2 关于认证问题的提醒用 13.0 还会遇到一个 License 的问题。如果你的 License 不支持某些器件系列编译时会报错提示你的 license 不支持该器件。这时候不是器件库缺失而是授权文件的问题。解决办法有两种思路一是换用带扩展设备支持的 License 文件二是如果只是学习用途可以使用 Intel 官方提供的免费 Web Edition 许可。Quartus II 13.0 的 Web Edition 对 MAX 系列的支持是很宽松的EPM240、EPM570 这些主流型号都在免费支持范围内。安装时选 Web Edition 授权方式然后按提示申请一个免费的 License 文件导入后就能用了。这里强调一句网上那种破解版的 License 生成器不建议使用。且不说稳定性问题Quartus 对 License 的校验越来越严格用破解 License 编译的工程有时候会莫名其妙地进度条卡住或者报内部错误排查起来非常痛苦。直接走官方免费授权途径几分钟搞定省心太多。6.3 我这些年用 MAX 系列器件的心得做 CPLD 开发和 FPGA 开发心态上有一个很大的不同。FPGA 资源多你写代码的时候可以不那么抠门逻辑写重了也能勉强布下来。但 CPLD 不一样宏单元就那么几百个每个宏单元还同时承担着组合逻辑和时序逻辑的职责写代码的时候要有意识地去省资源。比如我在写 MAX 系列的状态机时通常会避免使用大量的计数器变量因为寄存器资源在 CPLD 里尤其珍贵。能用手写组合逻辑代替的计数功能尽量手写。这一点在代码风格上的体现就是尽量少用always块里的大段for循环那东西综合出来的资源量在 CPLD 上很吃不消。还有一个经验是用好 Quartus 的 RTL Viewer综合完以后切到 RTL 视图亲眼看一下你的代码被综合成了什么样的结构很多时候能发现明显浪费资源的写法。然后是引脚分配的问题。CPLD 的一个优势是引脚到逻辑单元之间的布线延迟非常确定且可预测但前提是你别把输入信号分配到头尾两端相距很远的引脚上那样内部的走线会绕一圈导致时序变差。我在做引脚分配时会优先把高速信号放在同一个 bank 且相邻的几个引脚上这个做法对编译结果确实有一些帮助。另外从系统稳定性来说MAX II 系列在工业环境下的可靠性口碑是很好的。它的 IOE 结构支持热插拔、支持 5V 容忍输入MAX II 的某些型号需要查手册确认这些特性让它在电机控制、电源管理等场景里很受欢迎。如果你正在用 CPLD 做类似的工控项目那 Quartus II 13.0 这套流程完全可以作为一个稳定可靠的生产工具一直用下去。回到器件库本身那个问题补好 MAX 系列器件库以后还有一个细节值得你做一下打开Tools-Options在General里找到Display a message when the device list is regenerated相关的选项把它打开。这样每次启动 Quartus 的时候如果检测到安装目录下的器件库发生变化它会弹出一个提示框让你确认。这个特性对排查器件列表不刷新的问题很有帮助。个人经验Quartus 偶尔会出现安装完新器件库后必须要手动触发一次器件再扫描才会加载的情况而这个选项能让这个过程变得明确且可控。真到了工厂里拿着下载器站在板子前面才发现软件层面有幺蛾子那才叫一个着急。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →