第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(需单独安装) |
1.2 安装避坑指南
安装这事儿,看着简单,其实坑不少。我曾经帮三个同事远程装过Vivado,每次都能遇到新问题。这里把常见问题列出来:
- 路径不要有中文——这是老生常谈了,但总有人犯。Vivado对中文路径支持很差,编译时会报一些莫名其妙的错误。
- 关闭杀毒软件——安装过程中会写注册表、解压大量文件,杀毒软件一拦截,安装就卡住了。
- 硬盘空间留够——Vivado完整版装完大概60GB,你至少得留100GB空闲。Quartus好一些,但也别低于50GB。
- 安装时选择“WebPACK”或“Lite”版本——别手滑选了“Enterprise”或“Pro”,那需要license的。
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类型。
1.5 硬件描述语言选择:Verilog还是VHDL?
这个问题,几乎每个初学者都会问。我的回答很直接:学Verilog。
为什么?三个原因:
- 市场占有率——现在90%以上的FPGA项目都用Verilog。你去招聘网站看看,要求VHDL的岗位少得可怜。
- 语法更灵活——Verilog的语法风格和C语言很像,学起来快。VHDL太严谨了,entity、architecture、signal、variable...写个简单的计数器都要好几行。
- 资源多——网上Verilog的教程、开源项目、论坛讨论,数量是VHDL的十倍不止。遇到问题,搜一下就有答案。
当然,VHDL也有它的优势。比如在军工、航天领域,VHDL用得比较多,因为它语法严格,不容易出错。但咱们做运动控制,用Verilog完全够了。
我的经验:语言只是工具,核心是数字电路设计的思想。你学会了Verilog,再去看VHDL,一周就能上手。反过来也一样。所以别纠结选哪个,先动手写起来。
1.6 本章知识体系
下面这张图,把本章的核心内容串起来了。你可以把它当作一个思维导图来看。
这张图把本章的五个核心模块串起来了。从工具选择到安装配置,再到开发板认识、第一个实验,最后是语言选择。每一步都是环环相扣的。你跟着这个流程走一遍,FPGA开发的基础就算打牢了。
嗯,环境搭建这部分就讲到这里。记住,别急着写复杂的代码,先把工具用熟。LED灯能点亮了,后面的事情就好办了。