3. PolarFire器件架构与资源认知
PolarFire 系列 FPGA 的架构设计目标非常明确:在中等密度逻辑规模下,提供低功耗、高可靠、带安全特性的工业级可编程平台。要真正用好这颗器件,不能只停留在“有多少个 LUT、多少个 DSP”的规格表层面,而应理解各类资源的物理组织方式、彼此之间的连接关系,以及它们分别适合承载哪类工业通信与边缘控制任务。本节从资源结构出发,逐层建立“资源—能力—应用”的映射认知。
逻辑单元与 fabric 组织
PolarFire 的可编程逻辑以 逻辑单元(Logic Element,LE) 为基本粒度。每个 LE 包含一个 4 输入查找表(LUT4)、一个进位链单元和一只可配置寄存器。LUT4 负责实现任意 4 变量组合逻辑,进位链用于高效构建加法器、计数器、比较器,寄存器则用于时序路径的暂存。多个 LE 按列与行组成逻辑块(Logic Block),再通过分段式布线资源互连成整个 fabric。
理解这一点对工业设计很关键:组合逻辑密集的译码、状态机、协议解析适合放在 LUT 中;而计数器、CRC 校验、时间戳累加这类算术路径,应尽量利用进位链,避免用 LUT 拼加法器造成资源浪费和时序恶化。在 PolarFire 中,逻辑资源与布线资源是分列分布的,跨列长距离布线会带来更大延迟,因此模块划分时应尽量让同一功能域的逻辑在物理上聚集。
DSP 与 LSRAM、uSRAM 的分工
DSP 块(Math Block) 是 PolarFire 中承担乘加运算的专用硬核,每个 DSP 块内含 18×18 乘法器、预加器、累加器和流水寄存器,可级联构成更宽的运算链。工业场景中,DSP 常用于电机电流环的坐标变换(Clarke/Park)、数字滤波器(FIR/IIR)、功率计算和 FFT 预处理。若把这些运算强行用 LUT 实现,不仅占用大量逻辑,还会显著抬高功耗与延迟。
存储资源分为两类:LSRAM(Large SRAM) 是大容量块存储,每块容量较大,适合做数据缓冲、帧缓存、查找表和批量采样存储;uSRAM(micro SRAM) 是分布在逻辑阵列中的小容量存储,深度浅、位宽灵活,适合做小型 FIFO、寄存器堆、系数表和跨时钟域的小缓冲。二者配合使用,可以形成“uSRAM 做近端小缓冲、LSRAM 做大块数据池”的层次化存储结构。
时钟网络与 I/O Bank
PolarFire 的时钟网络由全局时钟、区域时钟和专用时钟输入引脚构成。全局网络可低偏斜地驱动整个器件,适合系统主时钟;区域时钟只覆盖局部区域,功耗更低,适合局部模块的派生时钟。工业设备常同时存在多个时钟域,例如以太网 125 MHz、现场总线 50 MHz、采样时钟 25 MHz,设计时必须明确每个时钟的来源、是否走全局网络、跨域处是否使用异步 FIFO 或握手同步。
I/O Bank 是器件边缘按供电与电平标准分组的引脚集合。每个 Bank 有独立的 VCCO 供电,决定了该组引脚支持的 I/O 标准(LVCMOS、LVDS、SSTL 等)。这意味着同一 Bank 内不能混用不兼容的电平标准,规划引脚时必须先按电平分组,再分配功能。工业接口中常见的 3.3 V 数字量、1.8 V 差分、2.5 V 总线收发器,往往需要分布到不同 Bank。
SerDes 通道与工业应用映射
PolarFire 集成了多路 SerDes 通道,支持从数百 Mbps 到 12.7 Gbps 的串行速率,可配置为 PCIe、SGMII、XAUI、JESD204B 等协议。SerDes 是工业通信平台的核心高速通道:以太网 MAC 通过 SGMII 连接外部 PHY,工业相机或高速 ADC 通过 JESD204B 回传数据,背板互连则可用 Aurora 或自定义轻量协议。
下面这张图把 PolarFire 的主要资源与典型工业应用做了对应映射,帮助建立“看到资源就知道能干什么”的直觉。
资源规划的实际做法
在具体项目中,资源认知最终要落到引脚规划、时钟规划和模块划分三件事上。以一台工业边缘控制器为例,假设需要实现 EtherCAT 从站、三路模拟量采集和一路本地显示接口。合理的做法是:
- 先确定时钟树:EtherCAT 需要 25 MHz 参考时钟和 100 MHz 系统时钟,ADC 采样需要独立 50 MHz,显示接口需要像素时钟。三个时钟源分别接入专用时钟引脚,系统时钟走全局网络,采样时钟走区域网络以降低功耗。
- 再划分 I/O Bank:EtherCAT PHY 使用 1.8 V 差分,ADC 使用 3.3 V LVCMOS,显示接口使用 2.5 V。三组电平分别规划到不同 Bank,避免 VCCO 冲突。
- 然后分配存储与运算:ADC 采样数据先写入 uSRAM 构成的小 FIFO,再批量搬入 LSRAM 做帧缓存;电流环运算放入 DSP 块;协议状态机放在靠近 SerDes 的逻辑区域,减少跨列布线。
常见误区与判断依据
初学者容易犯的错误包括:把 DSP 当普通逻辑用、把大缓冲全部塞进 uSRAM、忽略 I/O Bank 的电平约束、以及让跨时钟域信号直接打拍。判断资源使用是否合理,可以观察综合与布局布线报告中的几个指标:LUT 利用率是否超过 70%、DSP 是否被综合工具推断出来、LSRAM/uSRAM 的分配是否符合预期、以及时序报告中跨时钟域路径是否被正确约束。若发现大量 LUT 被用于实现乘法或大深度存储,说明资源映射策略需要调整。
归根结底,PolarFire 的资源认知不是背规格,而是建立一种“任务—资源”的对应直觉:看到协议解析想到 LE,看到乘加想到 DSP,看到缓冲想到 LSRAM 与 uSRAM,看到多时钟想到时钟网络,看到高速串行想到 SerDes,看到电平接口想到 I/O Bank。有了这种直觉,后续的架构设计与约束编写才能有的放矢。