第二章 开发环境搭建:工欲善其事,必先利其器

说实话,每次带新人入门FPGA,我最怕的就是环境搭建这一步。不是技术难,而是坑太多。我自己就曾经在Quartus安装上折腾了一整天,最后发现是路径里有中文。嗯,这种经历一次就够了。

这一章,咱们就把开发环境彻底搞定。从Vivado和Quartus的安装,到仿真工具配置,再到开发板选型,最后跑通第一个LED灯实验。一步到位,不走弯路。

2.1 Vivado与Quartus:两大主流工具的选择

目前FPGA市场基本是两家独大:Xilinx(现在叫AMD)的Vivado,和Intel(原Altera)的Quartus。我个人习惯两个都用,但如果你刚入门,我建议先选一个深耕。

对比项 Vivado (Xilinx/AMD) Quartus (Intel)
适用芯片 Artix、Kintex、Virtex、Zynq等 Cyclone、Arria、Stratix、MAX等
开发语言 VHDL/Verilog/SystemVerilog VHDL/Verilog/SystemVerilog
仿真工具 Vivado Simulator (内置) ModelSim/Questa (需单独安装)
综合风格 对RTL代码要求较严格 相对宽松,兼容性好
安装包大小 约30-50GB(完整版) 约10-20GB(完整版)
学习曲线 中等偏陡 相对平缓
我的建议:如果你手头有开发板,就按开发板的芯片选工具。没有的话,我推荐从Vivado开始。为什么?因为Vivado自带仿真器,省去你单独配置ModelSim的麻烦。而且现在Xilinx的生态更活跃,社区资源多。

2.2 Vivado安装实战

安装Vivado其实不复杂,但有几个关键点要注意。我曾经帮一个学生远程调试,他装了三次都失败,最后发现是硬盘空间不够。Vivado完整版装完要占50GB左右,你想想看,这可不是个小数目。

安装步骤

  1. 下载安装包:去AMD官网注册账号,下载Vivado HLx WebPACK或Design Edition。WebPACK是免费的,功能足够我们课程使用。
  2. 选择版本:我个人建议用最新的稳定版,比如2023.2或2024.1。别追最新版,bug多;也别用太老的,芯片支持不全。
  3. 安装路径:千万不要有中文路径! 不要有空格!我习惯用 C:\Xilinx\Vivado\2024.1 这样的结构。
  4. 选择组件:勾选Vivado HL Design Edition,还有对应的器件库。如果你用的是Artix-7,就勾选7系列。
  5. 安装时长:大概30分钟到1小时,取决于你的电脑配置。去泡杯咖啡吧。
避坑指南:安装过程中如果提示“Vivado License Manager”错误,别慌。先点“Cancel”,等安装完再手动配置license。我曾经因为这个重装了两次,后来发现根本没必要。

2.3 Quartus安装要点

Quartus的安装相对轻量一些,但它的坑在于ModelSim的配置。如果你只用Quartus自带的仿真器,那还好;但要做稍微复杂一点的仿真,ModelSim几乎是必须的。

安装步骤

  1. 下载Quartus Prime Lite:Intel官网免费版,功能足够。
  2. 安装ModelSim-Intel Edition:建议勾选这个组件,省得后面再单独装。
  3. 设置环境变量:安装完后,把ModelSim的bin目录加到系统PATH里。不然Quartus调用仿真器时会报错。
  4. 破解与License:Quartus Lite版不需要license,直接用。但ModelSim需要申请免费license,去Intel官网注册就能拿到。
小技巧:Quartus安装时,如果你只做Cyclone IV或Cyclone V的开发,可以只勾选对应的器件库,能省不少空间。我一般只装MAX 10和Cyclone V的库,够用了。

2.4 仿真工具配置

仿真,说白了就是让你的代码在电脑上先跑一遍。我见过太多人直接上板子调,结果烧一次芯片要几分钟,效率极低。正确的做法是:先在仿真环境里把逻辑调通,再上板验证。

Vivado自带仿真器配置

Vivado Simulator是集成在Vivado里的,不需要额外安装。你只需要在Project Manager里添加仿真文件,然后点击“Run Simulation”就行。

// 一个简单的仿真激励示例
`timescale 1ns / 1ps

module led_tb();
    reg clk;
    reg rst_n;
    wire led;

    // 实例化待测模块
    led_top uut (
        .clk(clk),
        .rst_n(rst_n),
        .led(led)
    );

    // 生成时钟
    initial begin
        clk = 0;
        forever #10 clk = ~clk;  // 50MHz时钟
    end

    // 生成复位
    initial begin
        rst_n = 0;
        #100;
        rst_n = 1;
        #2000;
        $finish;
    end

endmodule

ModelSim/Questa配置

如果你用Quartus,我建议单独安装ModelSim。配置步骤:

  1. 在Quartus中设置仿真工具路径:Assignments -> Settings -> EDA Tool Settings -> Simulation。
  2. 选择ModelSim-Altera,指定安装路径。
  3. 编译器件库:Tools -> Launch Simulation Library Compiler。
核心要点:仿真时一定要加`timescale,不然仿真时间单位会乱。我刚开始学的时候忘了加,结果仿真波形怎么看都不对,折腾了两小时才发现是这个问题。

2.5 FPGA开发板选型建议

选开发板这件事,我踩过不少坑。第一次买板子,贪便宜买了个没资料的,结果连LED都点不亮。后来学乖了,选板子就看三点:芯片型号、外设资源、社区支持。

开发板型号 芯片 适合场景 参考价格
Nexys A7 (Digilent) Artix-7 XC7A100T 入门到进阶,图像处理 约¥1500
Basys 3 (Digilent) Artix-7 XC7A35T 入门,基础实验 约¥800
DE10-Lite (Terasic) MAX 10 10M50DAF 入门,Altera生态 约¥600
Zynq-7020 (黑金/米联) Zynq-7020 (ARM+FPGA) 图像加速,嵌入式系统 约¥1000
我的推荐:如果你预算充足,直接上Nexys A7。这块板子有HDMI接口、以太网、DDR3,做图像处理完全够用。如果预算有限,Basys 3也能跑大部分实验,就是资源少点。我个人第一块板子就是Basys 3,用了两年才换。

2.6 第一个LED灯实验

好了,环境搭好了,板子也选好了。咱们来跑第一个实验——点亮LED。这个实验虽然简单,但能验证你的整个开发流程是否通畅。

实验目标

让开发板上的LED以1秒为周期闪烁。说白了就是:亮1秒,灭1秒,循环。

Verilog代码

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

    // 50MHz时钟,1秒需要计数50,000,000次
    // 我们用27位计数器就够了(2^27 = 134,217,728)
    reg [26:0] cnt;

    // 计数器逻辑
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n)
            cnt <= 27'd0;
        else if (cnt == 27'd49_999_999)
            cnt <= 27'd0;
        else
            cnt <= cnt + 1'b1;
    end

    // LED输出:每1秒翻转一次
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n)
            led <= 1'b0;
        else if (cnt == 27'd49_999_999)
            led <= ~led;
        else
            led <= led;
    end

endmodule

引脚约束(XDC文件)

# 以Nexys A7为例
set_property PACKAGE_PIN E3 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]

set_property PACKAGE_PIN C12 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

set_property PACKAGE_PIN H17 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]

上板步骤

  1. 在Vivado中创建新工程,选择对应的芯片型号。
  2. 添加上述Verilog代码和XDC约束文件。
  3. 点击“Generate Bitstream”,综合、实现、生成比特流。
  4. 连接开发板,打开Hardware Manager,下载比特流。
  5. 按下复位键,观察LED是否闪烁。
注意:如果LED不亮,先检查约束文件里的引脚号对不对。不同开发板的LED引脚不一样,一定要查原理图。我有个学生就是直接复制网上的约束,结果LED死活不亮,查了半天才发现引脚不对。

2.7 本章知识体系

为了让你更直观地理解本章的内容结构,我画了一张流程图。它展示了从工具选择到第一个实验的完整路径。

开发环境搭建知识体系 选择开发工具 Vivado (Xilinx/AMD) Quartus (Intel) 安装Vivado + 配置仿真器 (自带Vivado Simulator) 安装Quartus + 配置ModelSim (需单独安装仿真工具) 开发板选型:Nexys A7 / Basys 3 / DE10-Lite / Zynq-7020 🎯 第一个LED灯实验

这张图把本章的脉络理得很清楚。从工具选择开始,到安装配置,再到板子选型,最后用LED实验收尾。每一步都是环环相扣的。

总结一下:环境搭建这件事,看起来琐碎,但它是你后续所有实验的基础。我见过太多人因为环境没配好,卡在第一步就放弃了。其实只要按部就班,别跳步骤,最多半天就能搞定。LED灯亮起来的那一刻,你会觉得一切都值了。

可可精品资料库