第二章:开发环境搭建——Quartus II 与 Lattice Diamond 的安装配置

说实话,很多初学者在学CPLD时,第一步就卡在了环境搭建上。我见过不少朋友下载了软件,装到一半报错,或者装好了发现驱动不识别,折腾一整天还没见到第一个工程长什么样。这一章,我就带你一步步搞定这件事。

2.1 选哪个工具?Quartus II 还是 Lattice Diamond?

这得看你手头的芯片是哪家的。目前主流CPLD主要来自两大厂商:Intel(原Altera)和Lattice。Intel的CPLD用Quartus II,Lattice的用Diamond。我个人习惯是,如果做小规模逻辑控制,Lattice的芯片性价比更高;如果后续想往FPGA方向走,Quartus II的生态更成熟。

对比项 Quartus II Lattice Diamond
适用芯片 MAX II、MAX 10、Cyclone系列等 MachXO、iCE40、ECP5系列等
软件大小 约3-5GB(含器件库) 约1.5-2.5GB
免费版本 Quartus II Web Edition(免费) Diamond Free(免费,有器件限制)
学习曲线 中等,资料多 较平缓,界面简洁

我的建议是:如果你是纯新手,从Lattice Diamond开始会友好一些。但如果你手头有Altera的开发板,那就用Quartus II。两个工具的核心操作逻辑是相通的,学会一个,另一个上手也快。

2.2 Quartus II 安装与配置

先讲Quartus II。我推荐下载13.0sp1或16.1版本,这两个版本稳定,网上资源也多。别追新,新版本对电脑配置要求高,而且有些破解工具不兼容。

2.2.1 下载与安装步骤

  1. 去Intel官网搜索"Quartus II Web Edition",找到对应版本下载。
  2. 运行安装程序,选择安装路径。注意:路径不要有中文或空格。
  3. 选择安装组件时,至少勾选"Quartus II software"和对应器件库(比如MAX II系列)。
  4. 安装完成后,不要急着打开。先安装USB Blaster驱动。
⚠️ 注意: 安装过程中如果杀毒软件弹出警告,请选择允许。我遇到过好几次因为杀毒软件拦截导致驱动安装失败的情况。

2.2.2 USB Blaster 驱动安装

USB Blaster是Altera的下载器。插上开发板后,电脑会提示安装驱动。驱动文件在Quartus安装目录下的drivers文件夹里。手动指定路径安装即可。

我曾经在Win10系统上折腾了半小时,发现驱动总是显示黄色感叹号。后来发现是Windows强制驱动签名的问题。解决办法是:重启电脑,按F8进入高级启动选项,选择"禁用驱动程序强制签名",再安装驱动就成功了。

💡 小技巧: 如果驱动安装失败,可以试试用zadig工具替换驱动。这个工具专门解决USB设备驱动问题,我用了好几年,很靠谱。

2.3 Lattice Diamond 安装与配置

Lattice Diamond的安装相对简单。我建议下载3.12或3.13版本,这两个版本对MachXO2支持最好。

2.3.1 安装步骤

  1. 从Lattice官网注册账号后下载Diamond Free版本。
  2. 运行安装包,选择"Full Installation"。
  3. 安装过程中会提示选择License文件。如果是免费版,选择"Node-locked Free License"。
  4. 安装完成后,桌面会出现Diamond和Programmer两个图标。

2.3.2 驱动安装(FTDI芯片)

Lattice的开发板大多使用FTDI芯片做USB转JTAG。插上板子后,系统会自动识别并安装驱动。如果没反应,可以去FTDI官网下载CDM v2.12.28驱动包手动安装。

嗯,这里要注意:有些山寨开发板用的FTDI芯片是假货,驱动会报"USB Device Not Recognized"。我踩过这个坑,后来换了一块正版板子就解决了。所以买开发板时尽量选正规渠道。

2.4 第一个工程创建(以Quartus II为例)

环境搭好了,我们来创建第一个工程。目标很简单:写一个LED闪烁程序,让CPLD的某个引脚输出方波。

2.4.1 新建工程

  1. 打开Quartus II,点击 File → New Project Wizard
  2. 输入工程名和路径。工程名不要用中文,比如led_blink
  3. 选择器件型号。比如我用的是MAX II EPM240T100C5,就在Family里选MAX II,在Device里选具体型号。
  4. 选择仿真工具和综合工具,新手保持默认即可。
  5. 点击Finish完成。

2.4.2 编写Verilog代码

新建一个Verilog文件:File → New → Verilog HDL File。输入以下代码:

module led_blink (
    input  wire clk,      // 系统时钟,假设50MHz
    input  wire rst_n,    // 复位,低有效
    output reg  led       // LED输出
);

reg [24:0] cnt;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        cnt <= 25'd0;
    else if (cnt == 25'd24_999_999)
        cnt <= 25'd0;
    else
        cnt <= cnt + 1'b1;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        led <= 1'b0;
    else if (cnt == 25'd24_999_999)
        led <= ~led;
    else
        led <= led;
end

endmodule

这段代码实现了一个0.5秒翻转一次的LED。为什么是24_999_999?因为50MHz时钟周期是20ns,0.5秒需要计数25000000次,从0开始所以最大值是24999999。

2.4.3 引脚分配

点击 Assignments → Pin Planner,在打开的界面中,将clk分配到开发板的时钟引脚,rst_n分配到按键引脚,led分配到LED引脚。分配完成后保存。

🔑 关键点: 引脚分配一定要对照开发板的原理图。我见过有人把LED接到了电源引脚上,结果一上电就冒烟了。

2.4.4 编译与下载

  1. 点击工具栏的 Start Compilation 按钮,等待编译完成。
  2. 编译成功后,打开 Tools → Programmer
  3. 点击 Hardware Setup,选择USB Blaster。
  4. 点击 Add File,选择工程目录下的.pof文件。
  5. 勾选 Program/Configure,点击 Start 下载。

下载成功后,你会看到LED开始闪烁。那一刻,说实话,挺有成就感的。

2.5 本章知识体系

下面这张图帮你梳理了本章的核心内容,从工具选择到工程创建,一目了然。

开发环境搭建知识体系 选择开发工具 Quartus II (Intel/Altera) Lattice Diamond Quartus II 安装流程 ① 下载Web Edition安装包 ② 安装软件 + 器件库 ③ 安装USB Blaster驱动 Lattice Diamond 安装流程 ① 注册账号下载Free版本 ② 选择Full Installation ③ 配置License + FTDI驱动 创建第一个工程:LED闪烁 新建工程 编写Verilog代码 引脚分配 编译下载

2.6 常见问题与避坑指南

  • 编译报错"Can't find device":检查工程中选的器件型号是否与开发板一致。我曾经选错了一个字母,查了半天才发现。
  • 下载时提示"Unable to open device":驱动没装好。重新安装USB Blaster驱动,或者换一个USB口试试。
  • LED不亮:先检查引脚分配是否正确,再用万用表测一下LED引脚电压。有时候是板子上的LED焊反了。
  • Diamond编译报License错误:确认License文件路径是否正确,或者重新申请免费License。
💡 我的经验: 第一次跑工程时,尽量用最简单的代码。先确保下载链路是通的,再慢慢加功能。这样出了问题,排查范围小很多。

好了,环境搭建和第一个工程就讲到这里。你跟着做一遍,应该能顺利点亮LED。如果卡住了,别急,回头看看驱动安装那一步,八成是那里出了问题。


公众号:蓝海资料掘金营,微信deep3321