第二章:开发环境搭建——Vivado/Quartus安装、开发板选择、第一个LED灯程序

说实话,很多初学者一上来就急着写代码,结果卡在环境搭建上大半天。我见过不少同学,软件装到一半报错,或者板子连上没反应,心态直接崩了。这一章,咱们就把这些坑一个个填平。

2.1 开发工具的选择:Vivado vs Quartus

目前主流的FPGA厂商就两家:Xilinx(现在叫AMD)和Intel(原Altera)。对应的工具分别是Vivado和Quartus Prime。你选哪个,基本取决于你手头有什么板子。

对比项 Vivado(Xilinx/AMD) Quartus Prime(Intel)
支持的器件 7系列、UltraScale、Versal等 Cyclone、Arria、Stratix等
安装包大小 约40-80GB(WebPack版较小) 约20-50GB(Lite版免费)
免费版本 Vivado HLx WebPACK Quartus Prime Lite
操作系统 Windows/Linux Windows/Linux
学习曲线 中等偏陡 相对平缓

我个人习惯:如果做高速接口或复杂SoC设计,我偏向Vivado,它的综合和布局布线能力确实强。但如果是入门学习,Quartus的界面更友好,而且Intel的Cyclone系列板子便宜,适合练手。

⚠️ 注意: 安装路径不要有中文!不要有空格!我曾经因为把Vivado装在“D:\程序\FPGA工具”下,结果编译时各种路径报错,折腾了两天才发现是中文目录的问题。

2.2 安装Vivado(以2023.1版本为例)

安装过程其实不复杂,但有几个关键点要注意。我建议你下载WebPACK版本,功能完全够用,还免费。

  1. 下载安装包:去AMD官网注册账号,下载Vivado HLx 2023.1 WebPACK。大概40GB,建议用下载工具,别用浏览器直接下。
  2. 解压并运行:解压后以管理员身份运行xsetup.exe。
  3. 选择版本:勾选“Vivado HL WebPACK”,这是免费版。
  4. 选择组件:至少勾选“Vivado”和“Vitis”(用于嵌入式开发)。如果你用Zynq,Vitis是必须的。
  5. 安装路径:比如D:\Xilinx\Vivado\2023.1,记住不要中文。
  6. 等待安装:这个过程大概30分钟到1小时,取决于你的电脑配置。去喝杯咖啡吧。
💡 小技巧: 安装时把杀毒软件关了,不然可能会拦截一些破解文件(如果你用正版就当我没说)。另外,安装完成后记得重启电脑。

2.3 安装Quartus Prime(以20.1 Lite版本为例)

Quartus的安装相对简单,但要注意版本兼容性。我遇到过Quartus 18.0不支持某些新器件的情况,所以尽量用较新版本。

  1. 下载:去Intel官网下载Quartus Prime Lite Edition 20.1。
  2. 运行安装程序:双击QuartusLiteSetup-20.1.0.711-windows.exe。
  3. 选择组件:至少勾选“Quartus Prime Lite Edition”和“Device Support”(根据你的板子型号选择,比如Cyclone V)。
  4. 安装路径:比如D:\intelFPGA\20.1。
  5. 等待安装:同样需要一些时间,但比Vivado快不少。
⚠️ 注意: Quartus的License管理比较麻烦。Lite版是免费的,但需要在线获取License文件。如果你在公司内网,可能无法直接获取,需要手动配置代理。

2.4 开发板选择:入门推荐

选板子这件事,说白了就是看预算和需求。我刚开始学的时候用的是Xilinx的Spartan-6,现在早停产了。目前入门推荐以下几款:

  • Xilinx/AMD:
    • Basys 3(Artix-7芯片):约1200元,适合纯逻辑设计,板载外设丰富。
    • Nexys A7(Artix-7芯片):约2000元,资源更多,适合做嵌入式系统。
    • Zynq-7020(如PYNQ-Z2):约1500元,带ARM核,适合软硬件协同设计。
  • Intel:
    • DE10-Lite(MAX 10芯片):约600元,性价比极高,适合入门。
    • Cyclone V GX Starter Kit:约1500元,带高速收发器,适合做通信实验。

我的建议:如果你预算有限,DE10-Lite是首选,600块钱就能玩起来。如果以后想做图像处理或深度学习加速,直接上Zynq系列,省得后面换板子。

2.5 第一个LED灯程序(以Vivado + Basys 3为例)

好了,环境装好了,板子也到手了。咱们来点亮第一个LED。这个程序虽然简单,但包含了FPGA开发的完整流程:设计输入→综合→实现→下载。

2.5.1 创建工程

  1. 打开Vivado,点击“Create Project”。
  2. 输入工程名,比如led_test,路径不要有中文。
  3. 选择“RTL Project”,勾选“Do not specify sources at this time”。
  4. 选择器件:Basys 3用的是xc7a35tcpg236-1。你可以在“Parts”里搜索。
  5. 点击Finish。

2.5.2 编写Verilog代码

在工程中新建一个设计源文件(Add Sources → Create File),命名为led_top.v。代码如下:

module led_top(
    input   wire        clk,        // 100MHz 板载时钟
    input   wire        rst_n,      // 复位按键,低电平有效
    output  reg  [3:0]  led         // 4个LED
);

    // 计数器,用于分频
    reg [27:0] cnt;

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

    // 取计数器最高4位驱动LED,实现流水灯效果
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n)
            led <= 4'b0001;
        else
            led <= cnt[27:24];
    end

endmodule

这段代码的逻辑很简单:用28位计数器对100MHz时钟分频,然后取高4位驱动LED。因为计数器一直在累加,所以LED会以流水灯的形式闪烁。

🔑 关键点: 这里用了两个always块。第一个是纯粹的计数器,第二个是输出赋值。我习惯把时序逻辑和组合逻辑分开写,这样代码可读性更好,也方便后期调试。

2.5.3 添加约束文件

新建一个约束文件(Add Sources → Add or Create Constraints),命名为basys3.xdc。内容如下:

# 时钟引脚
set_property PACKAGE_PIN W5 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]

# 复位引脚
set_property PACKAGE_PIN U18 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

# LED引脚
set_property PACKAGE_PIN U16 [get_ports {led[0]}]
set_property PACKAGE_PIN E19 [get_ports {led[1]}]
set_property PACKAGE_PIN U19 [get_ports {led[2]}]
set_property PACKAGE_PIN V19 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]

这些引脚定义可以从Basys 3的原理图里找到。嗯,这里要注意,不同板子的引脚定义不一样,千万别照抄。

2.5.4 综合、实现、生成比特流

  1. 点击“Run Synthesis”,等待综合完成。
  2. 综合完成后,点击“Run Implementation”。
  3. 实现完成后,点击“Generate Bitstream”。

这个过程可能需要几分钟。如果报错,多半是语法问题或约束文件写错了。检查一下代码里的端口名和约束文件里的get_ports是否一致。

2.5.5 下载到板子

  1. 用USB线连接Basys 3和电脑。
  2. 打开“Hardware Manager”,点击“Open Target” → “Auto Connect”。
  3. 选择生成的.bit文件,点击“Program”。

如果一切顺利,你会看到板子上的4个LED开始循环闪烁。那一刻,说实话,还是挺有成就感的。

💡 小技巧: 如果下载失败,检查一下USB驱动是否安装。Vivado安装时一般会自动安装驱动,但有时候会漏掉。你可以去设备管理器里看看有没有“Digilent USB Device”,如果没有,手动安装一下。

2.6 知识体系总览

下面这张图概括了本章的核心内容,从工具选择到第一个程序跑通,每一步都环环相扣。

开发环境搭建知识体系 工具选择 开发板选择 环境安装 Vivado vs Quartus 免费版 vs 付费版 器件支持对比 Basys 3 / Nexys A7 DE10-Lite / Cyclone V 预算与需求匹配 Vivado安装步骤 Quartus安装步骤 License与驱动 第一个LED灯程序 创建工程 编写代码 添加约束 综合实现 下载验证

你看,整个流程其实就这几步。很多同学卡在综合或实现阶段,其实多半是代码语法问题,或者约束文件写错了。我建议你每写完一段代码,先检查一下有没有拼写错误,比如posedge写成posedage,这种低级错误我犯过不止一次。

好了,到这里你已经成功搭建了开发环境,并且跑通了第一个程序。接下来就可以开始玩更复杂的设计了。

可可精品资料库