第二章 开发环境搭建:Quartus II / Lattice Diamond 安装、第一个CPLD工程、引脚分配与下载
好,咱们正式开始动手了。
这一章,说白了就是“磨刀”。刀磨快了,后面砍柴才不费劲。我见过不少新手,一上来就急着写代码,结果环境没配好,折腾半天连灯都点不亮,心态直接崩了。咱们别走那个弯路。
2.1 开发工具的选择:Quartus II 还是 Lattice Diamond?
做CPLD开发,主流就两家:Intel(原Altera)和 Lattice。我个人习惯,根据芯片选工具。
- Quartus II:对应 Intel 的 MAX 系列,比如 MAX II、MAX 10。如果你手头是这些片子,就用它。
- Lattice Diamond:对应 Lattice 的 MachXO、iCE40 系列。工业控制和通信接口里,MachXO 用得非常多。
其实两个工具的核心逻辑是一样的:建工程 -> 写代码 -> 综合 -> 布局布线 -> 生成烧录文件 -> 下载。只是界面和操作细节不同。
我的建议:初学者别贪多。先盯着一款芯片学透。我当年就是从 MAX II 开始的,一个工程反复改,直到把时序分析搞明白。工具只是手段,核心是逻辑。
2.2 安装避坑指南
安装过程其实不复杂,但有几个坑,我替你们踩过了。
2.2.1 Quartus II 安装要点
- 版本选择:Quartus II 13.0sp1 是个经典版本,稳定,对 MAX II 支持好。新版本虽然功能多,但体积大,启动慢。做CPLD,够用就行。
- 安装路径:不要有中文!不要有空格!我见过有人装在“D:\程序\Quartus”里,结果编译报错,查了半天是路径问题。
- 设备支持:安装时记得勾选“MAX II”或“MAX 10”系列。默认只装Cyclone系列,很多人装完发现找不到芯片,又得重装。
- License:Quartus II 需要 license 文件。网上有免费版,但注意对应版本号。我曾经因为 license 版本不对,折腾了一下午。
2.2.2 Lattice Diamond 安装要点
- 版本选择:Diamond 3.10 或 3.12 比较常用。Lattice 的软件相对轻量,但安装时同样注意路径无中文。
- License 管理:Lattice 的 license 是绑定网卡 MAC 地址的。如果你换了电脑或者用了虚拟机,记得重新申请。我有个同事,笔记本在公司用得好好的,回家连不上,就是因为家里网卡不一样。
- 驱动问题:下载器驱动有时需要手动安装。Windows 10/11 可能会自动禁用未签名驱动,记得进“高级启动”选项,禁用驱动签名强制。
注意:安装完成后,建议重启电脑。别问我为什么,这是玄学,但有效。
2.3 第一个CPLD工程:点亮一盏灯
好了,工具装好了。咱们来写第一个工程。目标很简单:让一个LED灯亮起来。
你想想看,这其实就是一个“Hello World”。虽然简单,但流程完整:建工程 -> 写代码 -> 分配引脚 -> 编译 -> 下载。
2.3.1 新建工程(以 Quartus II 为例)
- 打开 Quartus II,点击 File -> New Project Wizard。
- 输入工程名,比如
led_test。注意:工程名不要用中文,不要用数字开头。 - 选择芯片型号。比如 MAX II 系列的 EPM240T100C5。如果你不确定,看芯片表面,上面印着呢。
- 选择仿真工具和综合工具。新手直接用默认的就行。
- 完成。
2.3.2 写代码
新建一个 Verilog 文件:File -> New -> Verilog HDL File。输入以下代码:
module led_test (
input wire clk, // 时钟输入,假设是 50MHz
input wire rst_n, // 复位,低有效
output reg led // LED 输出
);
// 分频计数器,让 LED 以 1Hz 闪烁
reg [24:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
cnt <= 25'd0;
else
cnt <= cnt + 1'b1;
end
// 取最高位作为 LED 输出
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 1'b0;
else
led <= cnt[24]; // 约 0.3Hz 闪烁
end
endmodule
嗯,这里要注意:cnt[24] 是计数器的最高位。50MHz 时钟下,计数到 2^25 约 33.5 百万次,大约 0.67 秒翻转一次。所以 LED 会以约 0.75Hz 的频率闪烁。
小技巧:如果你想让 LED 常亮,直接把 led 赋值为 1'b1 就行。但闪烁更有成就感,对吧?
2.3.3 综合与编译
点击 Processing -> Start Compilation。Quartus 会帮你做综合、布局布线、生成烧录文件。
第一次编译可能会有点慢,耐心等。如果报错,多半是语法问题。检查一下分号、括号、模块名是否一致。
2.4 引脚分配:把逻辑和物理连起来
代码写好了,但芯片不知道哪个引脚是 clk,哪个是 led。这就需要引脚分配。
我个人习惯,先看原理图。找到芯片的引脚号,比如:
- 时钟:引脚 12
- 复位:引脚 33
- LED:引脚 56
然后打开 Assignments -> Pin Planner。在表格里,把 clk 的 Location 填上 PIN_12,rst_n 填 PIN_33,led 填 PIN_56。
注意:有些引脚是专用引脚,比如全局时钟引脚、JTAG引脚,不能随便分配。分配前,建议看看芯片的 datasheet。我曾经把时钟分配到一个普通 IO 上,结果芯片死活不工作。
分配完成后,重新编译一次。Quartus 会把引脚信息写入烧录文件。
2.5 下载:让代码跑起来
最后一步,把代码烧进芯片。
- 连接下载器。Quartus 用 USB-Blaster,Lattice 用 HW-USBN-2B。注意驱动要装好。
- 点击 Tools -> Programmer。
- 点击 Hardware Setup,选择你的下载器。
- 点击 Add File,选择生成的
.pof文件(Quartus)或.jed文件(Lattice)。 - 勾选 Program/Configure,点击 Start。
如果一切顺利,进度条走完,LED 开始闪烁。恭喜你,第一个 CPLD 工程跑起来了!
避坑指南:如果下载失败,先检查硬件连接。我曾经遇到过下载线接触不良,折腾了半小时才发现是线松了。另外,检查芯片是否供电,CPLD 需要 3.3V 和 1.8V 两路电源,缺一不可。
2.6 本章知识体系
为了让你更直观地理解整个流程,我画了一张图:
这张图把整个流程串起来了。从工具安装到最终验证,每一步都环环相扣。如果你在哪一步卡住了,回头看看这张图,就知道问题出在哪个环节。
2.7 小结
这一章,我们走完了CPLD开发的完整流程。从工具安装,到第一个工程,再到引脚分配和下载。你想想看,其实并不复杂,对吧?
环境搭建是基本功。我见过太多人,代码写得漂亮,但环境配不好,连灯都点不亮。记住:工具是死的,人是活的。多动手,多试错,慢慢就熟了。
下一章,咱们会深入CPLD的内部结构,看看那些逻辑单元到底是怎么工作的。嗯,到时候你会觉得,原来CPLD这么简单。