第3章 FPGA基础与选型
做伺服驱动这些年,我越来越觉得FPGA是个好东西。DSP负责算法运算,FPGA负责接口和逻辑,这种双核架构在高端伺服里几乎是标配。今天咱们就聊聊FPGA的基础知识和选型要点。
3.1 FPGA芯片概述
FPGA,全称是现场可编程门阵列。说白了,就是一块可以反复配置逻辑功能的芯片。你买回来的时候它啥也不是,你给它烧录一个配置文件,它就变成了你想要的电路。
我刚开始接触FPGA时,总觉得它和单片机差不多。后来发现完全不是一回事。单片机是软件执行,一条一条指令跑;FPGA是硬件并行,所有逻辑同时工作。你想想看,在伺服驱动里,编码器信号处理、电流环控制、PWM生成,这些任务如果都用FPGA做,延迟可以做到纳秒级。
FPGA内部主要由三部分组成:
- 可编程逻辑块(CLB):实现各种逻辑功能,比如与门、或门、触发器
- 可编程互连资源:把各个逻辑块连起来,形成复杂电路
- 输入输出块(IOB):和外部芯片通信的接口
现在的FPGA还集成了很多硬核资源,比如DSP单元、块RAM、高速收发器。这些硬核在伺服驱动里特别有用。DSP单元可以做乘法累加,块RAM可以存波形表,高速收发器可以接绝对值编码器。
核心观点:FPGA不是用来替代DSP的,而是和DSP互补。DSP做复杂算法,FPGA做实时控制和接口扩展。两者配合,才能发挥最大效能。
3.2 Xilinx与Altera系列对比
FPGA市场两大巨头,Xilinx和Altera(现在叫Intel FPGA)。这两家我都用过,各有千秋。
| 对比项 | Xilinx | Altera/Intel |
|---|---|---|
| 开发工具 | Vivado / ISE | Quartus Prime |
| 主流系列 | Spartan、Artix、Kintex、Virtex | Cyclone、Arria、Stratix |
| 编程语言 | VHDL/Verilog/SystemVerilog | VHDL/Verilog/SystemVerilog |
| IP核生态 | 非常丰富,有大量免费IP | 也很丰富,部分需要付费 |
| 适合场景 | 通信、工业、航空航天 | 工业、消费电子、汽车 |
我个人习惯用Xilinx的Artix系列做伺服驱动。为什么?因为性价比高。Artix-7系列有足够的逻辑资源和DSP单元,价格还比较亲民。我在一个项目中用过Spartan-6,资源有点紧张,后来换成Artix-7就舒服多了。
Altera的Cyclone系列也不错,特别是Cyclone V,集成了ARM硬核,适合做SoC方案。不过说实话,在伺服驱动领域,Xilinx的市场份额更大,参考资料也多一些。
我的建议:如果你是初学者,从Xilinx的Artix-7开始。开发工具Vivado功能强大,社区资源丰富,遇到问题容易找到答案。等你有经验了,再根据项目需求选择Altera或者其他品牌。
3.3 FPGA选型要点
选FPGA芯片,不是越贵越好,也不是资源越多越好。关键看你的需求。我总结了几条选型要点:
- 逻辑资源够用就行:先估算你的设计需要多少逻辑单元,留出30%的余量。别贪多,资源多了价格翻倍。
- DSP单元数量:伺服驱动里要做PID运算、坐标变换,DSP单元越多,并行处理能力越强。我一般选至少20个DSP单元的芯片。
- 块RAM大小:用来存波形表、缓存数据。伺服驱动里,至少需要几十KB的块RAM。
- IO引脚数量:看你需要接多少外设。编码器、ADC、DAC、PWM输出,这些都要占用IO。我建议选BGA封装的,引脚多,布线也方便。
- 速度等级:伺服驱动的主频一般在50MHz到200MHz之间,不用追求最高速度。速度等级高了,功耗和成本都上去了。
避坑指南:我曾经在一个项目中选了资源刚刚好的FPGA,结果后期加功能时发现逻辑单元不够用,只能换芯片,重新画板子。嗯,那次教训让我记住了:选型时一定要留余量,至少30%。
3.4 FPGA最小系统设计
FPGA最小系统,就是让芯片能正常工作的基本电路。包括电源、时钟、复位、配置电路。我画过很多次FPGA最小系统,踩过不少坑,这里分享一些经验。
电源设计:FPGA需要多路电源,核心电压、IO电压、辅助电压。上电顺序有要求,一般是先给核心供电,再给IO供电。我用过TI的电源芯片,比如TPS系列,专门为FPGA设计,带使能引脚,可以控制上电顺序。
时钟电路:FPGA需要一个稳定的时钟源。我习惯用有源晶振,频率50MHz或100MHz。注意时钟信号要短,走线要远离其他信号,避免干扰。
复位电路:FPGA上电后需要复位,让内部寄存器回到初始状态。我用RC复位电路,简单可靠。也可以加一个复位芯片,比如MAX811,带手动复位按钮。
配置电路:FPGA是SRAM结构,掉电就丢失配置。所以需要外挂一个配置芯片,比如Xilinx的Platform Flash或者Altera的EPCS。上电后,FPGA从配置芯片加载程序。
下面是一个典型的FPGA最小系统框图:
经验分享:画FPGA最小系统时,注意去耦电容的布局。每个电源引脚旁边放一个0.1uF的电容,靠近引脚放置。我见过不少板子因为电容放得太远,导致FPGA工作不稳定。
3.5 FPGA开发环境搭建
开发环境这块,Xilinx用Vivado,Altera用Quartus。两个工具我都用过,这里分别说说搭建要点。
Vivado搭建步骤:
- 去Xilinx官网下载Vivado WebPACK版本,免费,功能够用
- 安装时选择需要的器件系列,比如Artix-7
- 安装完成后,打开Vivado,新建工程
- 添加设计文件,写Verilog代码
- 综合、实现、生成比特流
- 下载到FPGA开发板
Quartus搭建步骤:
- 去Intel FPGA官网下载Quartus Prime Lite版本,也是免费的
- 安装时选择对应的器件系列,比如Cyclone V
- 安装完成后,打开Quartus,新建工程
- 添加设计文件,写Verilog代码
- 编译、布局布线、生成配置文件
- 下载到FPGA开发板
我个人习惯用Vivado。为什么?因为Vivado的IP核集成工具很方便,可以直接调用DSP IP、FIFO IP、PLL IP。在伺服驱动里,我经常用PLL IP生成不同频率的时钟,用FIFO IP做数据缓存。
一个小技巧:Vivado的仿真功能很强大。我每次写完代码,都会先做行为仿真,看看波形对不对。没问题了再综合实现。这样可以避免很多低级错误。
搭建开发环境时,注意电脑配置。Vivado和Quartus都比较吃资源,建议至少16GB内存,固态硬盘。我刚开始用8GB内存的电脑跑Vivado,综合一个中等规模的工程要十几分钟,后来升级到32GB,速度快了很多。
避坑指南:我曾经在安装Vivado时选了全部器件系列,结果安装包有几十GB,安装了一下午。后来学乖了,只选自己需要的器件系列,安装速度快很多。
好了,FPGA基础与选型就聊到这里。记住,选型要留余量,最小系统要稳,开发环境要顺手。这些基础打好了,后面做伺服驱动开发才能事半功倍。