3、FPGA开发板核心参数:逻辑单元、DSP Slice、BRAM/URAM、高速收发器、IO与时钟
选FPGA开发板,说白了就是选芯片。芯片的参数决定了你能做什么、做到什么程度。我见过不少新手,上来就盯着“多少万门”看,结果买回来发现接口不够用,或者跑不了高速信号。今天咱们就把这些核心参数掰开揉碎了讲清楚。
3.1 逻辑单元(LE/LC)—— 芯片的“肌肉”
逻辑单元是FPGA最基础的资源。你可以把它想象成一块块乐高积木。你要搭一个加法器?用几块。搭一个状态机?再用几块。芯片里有多少块这样的积木,就是逻辑单元的数量。
Xilinx叫它LC(Logic Cell),Altera(Intel)叫它LE(Logic Element)。名字不同,本质一样。每个逻辑单元通常包含一个查找表(LUT)和一个触发器(FF)。
关键点: 逻辑单元数量决定了你能实现多复杂的数字电路。但注意,不是所有设计都能100%利用这些单元。布线资源、扇出等因素会限制实际使用率。
我个人习惯,选型时留出30%的余量。比如你估算设计需要5万个LE,那就选7万以上的芯片。为什么?因为后期加功能、修bug都需要空间。我曾经在一个项目里把资源用到98%,结果想加个调试接口都塞不进去,那叫一个难受。
3.2 DSP Slice —— 数字信号处理的“加速器”
如果你要做乘法、乘累加、滤波这些运算,光靠逻辑单元去搭,效率低、速度慢。DSP Slice就是专门干这个的硬件模块。
每个DSP Slice通常包含一个乘法器、一个加法器/累加器,以及一些流水线寄存器。Xilinx的DSP48E2(7系列)可以支持18x25位乘法,还能级联起来做更宽的运算。
我的经验: 做图像处理或通信算法时,DSP Slice往往是瓶颈。我记得有个视频处理项目,逻辑单元用了不到40%,DSP却用掉了90%。所以别光看逻辑单元,DSP数量同样关键。
选型时,你可以这样估算:每个乘累加操作需要1个DSP Slice。如果你的算法需要并行做32个乘累加,那至少需要32个DSP。嗯,这里要注意,不同厂商的DSP结构略有差异,但基本思路一致。
3.3 BRAM/URAM —— 片内存储的“仓库”
FPGA内部需要存储数据,比如FIFO、缓存、查找表。BRAM(Block RAM)就是干这个的。Xilinx的7系列每个BRAM是36Kb,可以配置成两个18Kb独立使用。
URAM是更高端的存储块,每个容量288Kb,只在Ultrascale+系列里有。说白了,URAM就是大号的BRAM,适合做大容量缓存。
| 存储类型 | 单块容量 | 典型应用 |
|---|---|---|
| BRAM(7系列) | 36Kb | 小FIFO、寄存器文件 |
| BRAM(Ultrascale) | 36Kb | 中等缓存、查找表 |
| URAM | 288Kb | 大容量行缓存、帧缓存 |
避坑指南: 我曾经以为BRAM够用,结果设计里用了大量FIFO,每个FIFO深度2048、宽度64位,一个FIFO就吃掉好几个BRAM。最后BRAM不够,只能改用分布式RAM(用逻辑单元搭),速度直接掉了一半。所以,估算存储需求时,一定要把位宽和深度都算进去。
3.4 高速收发器(GTH/GTY)—— 数据的“高速公路”
现在的高速接口,比如PCIe、SFP+、HDMI,都是串行差分信号,速率动辄几Gbps甚至几十Gbps。FPGA内部集成了高速收发器来处理这些信号。
Xilinx的命名规则:GTP(6Gbps)、GTH(12.5Gbps)、GTY(28Gbps以上)。数字越大,能跑的速率越高。Intel那边叫Transceiver,道理一样。
选型时要注意三点:
- 数量: 你需要多少个高速通道?每个SFP+光口需要1个收发器,PCIe x4需要4个。
- 速率: 你的接口跑多快?10G光口需要至少GTH级别。
- 参考时钟: 收发器需要高质量的外部参考时钟,板上晶振要选对。
个人建议: 如果你只是做做低速接口,比如UART、SPI,那根本用不上高速收发器。别为了“有”而选带收发器的芯片,成本会高不少。我见过有人用Virtex-7做LED点阵屏控制,那真是杀鸡用牛刀。
3.5 IO数量与电平标准 —— 与外界的“握手”
IO就是芯片的引脚,用来连接外部器件。但IO不是简单的“有”或“没有”,它涉及数量、电平标准、bank划分。
电平标准决定了你能接什么电压的器件。3.3V、2.5V、1.8V、1.2V,还有差分标准如LVDS、HSTL。每个bank可以独立设置电压,但同一个bank里的IO必须用同一电平。
选型时,我习惯先列一个IO清单:
- 所有外部器件的接口类型(GPIO、DDR、LVDS等)
- 每个接口需要的IO数量
- 每个接口的电平标准
- 是否有高速信号需要特殊IO(比如DDR的DQ/DQS)
小技巧: 有些IO是专用的,比如配置引脚、JTAG、时钟输入。这些不能当普通IO用。我刚开始做设计时,把配置引脚当GPIO用了,结果板子死活下载不了程序。嗯,这个坑我替你们踩过了。
3.6 时钟资源 —— 系统的“心跳”
没有时钟,FPGA就是一堆死电路。时钟资源包括PLL、MMCM、全局时钟网络、区域时钟网络。
PLL(锁相环)和MMCM(混合模式时钟管理器)用来产生不同频率的时钟。比如你板子上有个50MHz晶振,但你的设计需要100MHz和200MHz,那就用PLL倍频。
全局时钟网络(Global Clock)能把时钟信号低抖动地送到芯片每个角落。区域时钟网络(Regional Clock)只覆盖部分区域,适合局部时钟域。
我曾经犯过的错: 在一个多时钟域设计里,我用了三个PLL分别产生三个时钟,结果没注意PLL的输入频率范围。其中一个PLL的输入频率太低,锁相环根本锁不住,导致整个系统工作不稳定。后来查了手册才发现,每个PLL对输入频率有严格要求。
选型时,看看芯片有多少个PLL/MMCM,够不够你用。一般中小型设计1-2个就够,大型多时钟域设计可能需要4个以上。
小结
这些核心参数,说白了就是FPGA的“硬件配置单”。逻辑单元是算力,DSP是专用加速器,BRAM是存储,收发器是高速接口,IO是外设连接,时钟是同步基础。选型时,别只看某一项,要综合评估。
我个人习惯,先确定接口需求(IO、收发器),再估算逻辑和存储,最后看时钟够不够。这样一圈下来,基本不会选错。下一章咱们聊聊开发板的外设和扩展接口,那又是另一门学问了。