第1章:FPGA开发环境搭建

做FPGA开发,第一步就是把家伙事儿备齐了。我见过不少新手,一上来就急着写代码,结果环境没配好,折腾半天连个灯都点不亮。说实话,这挺打击信心的。所以咱们先把基础打牢。

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

目前主流的FPGA厂商就两家:Xilinx(现在叫AMD)和Intel(原Altera)。对应的工具分别是Vivado和Quartus。我个人习惯用Vivado多一些,因为工作中接触Xilinx的片子比较多。但说实话,两个工具的核心思想是一样的。

对比项 Vivado Quartus Prime
适用芯片 Xilinx 7系列及以后 Intel Cyclone/Arria/Stratix
安装包大小 约40-60GB(完整版) 约20-30GB(精简版)
免费版本 Vivado WebPACK(免费) Quartus Lite(免费)
综合引擎 Synplify-based Quartus自带综合器
仿真工具 Vivado Simulator(内置) ModelSim(需单独安装)
我的建议:如果你是学生或者个人学习,用免费版就够了。Vivado WebPACK和Quartus Lite都不限制代码量,只是支持的芯片型号少一些。我在项目中遇到过,有人花大价钱买了正版授权,结果发现免费版完全够用。

1.2 安装避坑指南

安装这事儿,看着简单,其实坑不少。我曾经帮三个同事远程装过Vivado,每次都能遇到新问题。这里把常见问题列出来:

  • 路径不要有中文——这是老生常谈了,但总有人犯。Vivado对中文路径支持很差,编译时会报一些莫名其妙的错误。
  • 关闭杀毒软件——安装过程中会写注册表、解压大量文件,杀毒软件一拦截,安装就卡住了。
  • 硬盘空间留够——Vivado完整版装完大概60GB,你至少得留100GB空闲。Quartus好一些,但也别低于50GB。
  • 安装时选择“WebPACK”或“Lite”版本——别手滑选了“Enterprise”或“Pro”,那需要license的。
特别注意:Vivado 2020.1之后的版本对Windows 7不再支持。如果你还在用Win7,建议装2019.2或更早的版本。我有个学生就是Win7系统装了2021版,结果打不开,折腾了两天才发现是系统不兼容。

1.3 开发板介绍

咱们这门课用的开发板是Xilinx Artix-7系列的,具体型号是XC7A35T。为什么选它?说白了,性价比高。Artix-7是Xilinx 7系列里最便宜的,但性能完全够用。我手头这块板子用了三年了,从LED灯到电机控制,啥都跑过。

开发板的核心资源:

  • FPGA芯片: XC7A35T-1CSG324C,33280个逻辑单元
  • 板载时钟: 50MHz有源晶振
  • LED灯: 4个用户可编程LED
  • 按键: 4个独立按键
  • 扩展接口: 40pin GPIO,可接电机驱动模块
  • 调试接口: USB-JTAG,支持在线调试

核心知识点:FPGA开发板和普通单片机开发板最大的区别是什么?FPGA没有“固化”的硬件功能。你写什么代码,它就变成什么电路。今天写个LED闪烁,它就是LED控制器;明天写个电机驱动,它就是运动控制芯片。这就是FPGA的魅力。

1.4 第一个LED灯实验

好了,环境装好了,板子也认识了。咱们来点实际的——点亮第一个LED。这个实验虽然简单,但能帮你走通整个开发流程。

先看代码。我用的是Verilog,原因后面会说。

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

// 分频计数器
reg [31:0] cnt;

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

// LED输出:取计数器最高位,实现闪烁
always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        led <= 4'b0000;
    else
        led <= cnt[31:28];  // 取高4位,约2.6秒变化一次
end

endmodule

代码很简单,但有几个点要注意:

  • 时钟是50MHz,周期20ns。计数器从0跑到2^32,大概需要85秒。但我们只取了高4位,所以LED变化频率大约是0.38Hz。
  • 复位是低电平有效,rst_n后面的_n就表示低有效。这是Xilinx的习惯写法。
  • led是reg类型,因为在always块里赋值。如果你用assign赋值,那就是wire类型。
调试技巧:第一次烧录时,如果LED不亮,先检查这几个地方:1)开发板供电正常吗?2)JTAG线插好了吗?3)Vivado里有没有选对芯片型号?我遇到过最奇葩的问题,是USB线只能充电不能传数据,换了根线就好了。

1.5 硬件描述语言选择:Verilog还是VHDL?

这个问题,几乎每个初学者都会问。我的回答很直接:学Verilog

为什么?三个原因:

  1. 市场占有率——现在90%以上的FPGA项目都用Verilog。你去招聘网站看看,要求VHDL的岗位少得可怜。
  2. 语法更灵活——Verilog的语法风格和C语言很像,学起来快。VHDL太严谨了,entity、architecture、signal、variable...写个简单的计数器都要好几行。
  3. 资源多——网上Verilog的教程、开源项目、论坛讨论,数量是VHDL的十倍不止。遇到问题,搜一下就有答案。

当然,VHDL也有它的优势。比如在军工、航天领域,VHDL用得比较多,因为它语法严格,不容易出错。但咱们做运动控制,用Verilog完全够了。

我的经验:语言只是工具,核心是数字电路设计的思想。你学会了Verilog,再去看VHDL,一周就能上手。反过来也一样。所以别纠结选哪个,先动手写起来。

1.6 本章知识体系

下面这张图,把本章的核心内容串起来了。你可以把它当作一个思维导图来看。

FPGA开发环境搭建 开发工具选择 Vivado Quartus 安装与配置 路径无中文 关闭杀毒 选免费版本 开发板介绍 Artix-7 XC7A35T 第一个LED实验 Verilog代码 烧录验证 硬件描述语言选择 Verilog VHDL

这张图把本章的五个核心模块串起来了。从工具选择到安装配置,再到开发板认识、第一个实验,最后是语言选择。每一步都是环环相扣的。你跟着这个流程走一遍,FPGA开发的基础就算打牢了。

嗯,环境搭建这部分就讲到这里。记住,别急着写复杂的代码,先把工具用熟。LED灯能点亮了,后面的事情就好办了。


专注资料整理