2. 开发环境搭建:Quartus II / ISE 安装与配置、驱动安装与下载器验证、第一个工程(点亮LED)
说实话,很多初学者在CPLD上栽跟头,不是电路没画对,而是开发环境没搭好。我见过太多人花了两天时间折腾驱动,结果发现是下载线接触不良。这一章,咱们就把这些坑提前填上。
2.1 开发工具的选择:Quartus II 还是 ISE?
先说说这两个工具的区别。Quartus II 是 Intel(原 Altera)家的,ISE 是 Xilinx 家的。你选哪个,取决于你手头的芯片。
我个人习惯用 Quartus II,因为它的界面更清爽,编译速度也快一些。但如果你用的是 Xilinx 的 XC9500 系列,那就得老老实实用 ISE。
| 对比项 | Quartus II | ISE |
|---|---|---|
| 适用芯片 | MAX 3000A / MAX II / MAX V 等 | XC9500 / CoolRunner / Spartan 等 |
| 最新版本 | Quartus II 13.0sp1(经典稳定版) | ISE 14.7(最后一个版本) |
| 操作系统兼容性 | Win7/Win10(需补丁) | Win7(Win10 需虚拟机) |
| 下载器 | USB-Blaster | Platform Cable USB II |
2.2 安装与配置:别让版本坑了你
安装过程其实不复杂,但有几个细节你得注意。
2.2.1 Quartus II 安装要点
我推荐用 13.0sp1 版本。为什么?因为这是最后一个支持 MAX II 系列且不需要 license 破解的版本(Web Edition 免费)。
- 下载安装包:去 Intel 官网找 Quartus II 13.0sp1 Web Edition
- 安装路径:不要有中文!不要有空格!我习惯用
C:\altera\13.0sp1 - 选择组件:勾选 Cyclone II / MAX II 器件支持,其他可以不选
- 安装 USB-Blaster 驱动:这一步很多人会忘
2.2.2 ISE 安装要点
ISE 14.7 是最后一个版本,之后 Xilinx 就全面转向 Vivado 了。如果你用的是老芯片,只能用它。
嗯,这里要特别提醒:ISE 在 Win10 上问题很多。我曾经折腾了一整天,最后发现还是虚拟机最省心。
- 推荐方案:VMware + Win7 虚拟机
- 安装顺序:先装 ISE,再装驱动
- 许可证:需要申请免费的 WebPack 许可证
2.3 驱动安装与下载器验证
环境装好了,下一步就是让电脑认识你的下载器。这一步卡住了很多人。
2.3.1 USB-Blaster 驱动安装
USB-Blaster 是 Altera/Intel 的下载器,市面上有原装的和山寨的。说实话,山寨的也能用,但驱动安装方式略有不同。
- 插上 USB-Blaster,打开设备管理器
- 找到带黄色感叹号的未知设备
- 右键 → 更新驱动程序 → 浏览我的电脑
- 路径指向:
C:\altera\13.0sp1\quartus\drivers\usb-blaster - 选择“始终安装此驱动程序”
2.3.2 山寨下载器的特殊处理
如果你用的是几十块钱的山寨 USB-Blaster,可能会遇到驱动签名问题。Win10 默认不允许安装未签名的驱动。
我曾经被这个问题卡了整整一个下午。后来发现解决方法很简单:
- 重启电脑,按 F8 进入“禁用驱动程序签名强制”模式
- 或者用 Zadig 工具替换驱动
bcdedit /set testsigning on,重启即可。
2.4 第一个工程:点亮 LED
环境搭好了,驱动也认了,咱们来写第一个程序。这是硬件工程师的“Hello World”——点亮一个 LED。
2.4.1 新建工程
以 Quartus II 为例,咱们一步步来:
- File → New Project Wizard
- 工程名:
led_test,路径不要有中文 - 选择器件:比如 EPM240T100C5(MAX II 系列)
- 选择仿真工具:None(咱们先不搞仿真)
- Finish
2.4.2 编写代码
新建一个 Verilog 文件:File → New → Verilog HDL File。输入以下代码:
module led_test (
input wire clk, // 时钟输入(如果有)
input wire rst_n, // 复位(低有效)
output reg led // LED 输出
);
// 简单的分频计数器
reg [23:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
cnt <= 24'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[23]; // 约 0.5 秒闪烁一次(50MHz 时钟)
end
endmodule
2.4.3 引脚分配
代码写完了,得告诉编译器 LED 接到了哪个引脚上。
- Assignments → Pin Planner
- 在 Location 列输入引脚号,比如 LED 接在 Pin 18 上
- 如果有时钟输入,也分配好引脚
- 关闭 Pin Planner,保存
2.4.4 编译与下载
引脚分配完,就可以编译了:
- Processing → Start Compilation(或者直接点那个紫色三角形)
- 等进度条跑完,看底部信息:如果显示“Full Compilation was successful”,就 OK 了
- Tools → Programmer
- 点击 Auto Detect,选择芯片型号
- 加载
.pof文件(在 output_files 文件夹里) - 勾选 Program/Configure,点击 Start
2.5 知识体系总览
这一章的内容比较多,我画了个图帮你理清思路:
说白了,这一章的核心就三件事:选对工具、装好驱动、跑通第一个程序。这三步走通了,后面的学习就顺了。
公众号:蓝海资料掘金营,微信deep3321