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 的主要资源与典型工业应用做了对应映射,帮助建立“看到资源就知道能干什么”的直觉。

PolarFire 资源结构与工业应用映射 PolarFire FPGA Fabric 逻辑单元 LE LUT4 + 进位链 + 寄存器 组合逻辑 / 状态机 / 计数器 DSP Math Block 18×18 乘法器 + 累加器 滤波 / 坐标变换 / FFT LSRAM 大容量块存储 帧缓存 / 数据池 / 查找表 uSRAM 分布式小容量存储 FIFO / 系数表 / 寄存器堆 时钟网络 全局 / 区域 / 专用输入 多时钟域同步与分配 I/O Bank 独立 VCCO 供电分组 LVCMOS / LVDS / SSTL SerDes 通道 SGMII / PCIe / XAUI / JESD204B / Aurora 高速串行收发,速率可达 12.7 Gbps 工业应用映射 协议解析 / 状态机控制 ← 逻辑单元 LE 电机电流环 / 数字滤波 ← DSP Math Block 采样缓存 / 帧存储 ← LSRAM 跨时钟域 FIFO / 小缓冲 ← uSRAM 多时钟域同步 / 时钟分配 ← 时钟网络 数字量 I/O / 差分接口 ← I/O Bank

资源规划的实际做法

在具体项目中,资源认知最终要落到引脚规划、时钟规划和模块划分三件事上。以一台工业边缘控制器为例,假设需要实现 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 的逻辑区域,减少跨列布线。
资源规划的顺序建议是“时钟 → I/O → 存储 → 运算 → 逻辑”。先锁定时钟和引脚这类物理约束,再安排存储和 DSP 的布局,最后用剩余逻辑资源实现控制与胶合逻辑,可以显著减少后期布线拥塞和时序违例。

常见误区与判断依据

初学者容易犯的错误包括:把 DSP 当普通逻辑用、把大缓冲全部塞进 uSRAM、忽略 I/O Bank 的电平约束、以及让跨时钟域信号直接打拍。判断资源使用是否合理,可以观察综合与布局布线报告中的几个指标:LUT 利用率是否超过 70%、DSP 是否被综合工具推断出来、LSRAM/uSRAM 的分配是否符合预期、以及时序报告中跨时钟域路径是否被正确约束。若发现大量 LUT 被用于实现乘法或大深度存储,说明资源映射策略需要调整。

归根结底,PolarFire 的资源认知不是背规格,而是建立一种“任务—资源”的对应直觉:看到协议解析想到 LE,看到乘加想到 DSP,看到缓冲想到 LSRAM 与 uSRAM,看到多时钟想到时钟网络,看到高速串行想到 SerDes,看到电平接口想到 I/O Bank。有了这种直觉,后续的架构设计与约束编写才能有的放矢。