现场可编程门阵列(FPGA)作为一种高度灵活且可重构的集成电路,其核心优势在于能够通过软件配置来实现特定的数字逻辑功能,与专用集成电路(ASIC)不同,FPGA 在出厂后仍可通过重新编程来改变其内部连接和逻辑功能,这使得它在原型验证、小批量生产以及需要快速迭代的应用场景中具有不可替代的地位,理解 FPGA 的结构,关键在于把握其由可编程逻辑块、可编程互连资源以及可编程输入输出模块这三大核心部分组成的架构体系。

可编程逻辑块(CLB)
可编程逻辑块是 FPGA 执行逻辑运算的基本单元,通常被称为“逻辑岛”,在大多数现代 FPGA 架构中,CLB 内部包含了多个切片(Slice)或逻辑单元(LE),每个切片进一步由查找表(LUT)、触发器(FF)以及进位链逻辑组成。
查找表(LUT)是 FPGA 实现组合逻辑的核心组件,它本质上是一个小型的静态随机存取存储器(SRAM),用于存储真值表,一个 6 输入 LUT 可以存储 $2^6 = 64$ 位的配置数据,从而任意实现最多 6 个输入变量的布尔函数,通过配置 LUT 的内容,用户可以定义复杂的逻辑门、算术运算或状态机。
触发器(FF)则用于存储状态信息,实现时序逻辑,每个触发器通常与一个 LUT 配对,允许在同一个时钟边沿进行数据的采样和输出,为了优化算术运算性能,CLB 内部还集成了专用的进位链(Carry Chain)逻辑,这使得加法器、计数器等算术电路能够在 CLB 内部以极低的延迟进行高速运算,而无需依赖外部互连资源。
| 组件名称 | 主要功能 | 技术特点 |
|---|---|---|
| 查找表 (LUT) | 实现组合逻辑函数 | 基于 SRAM,可配置为任意真值表,灵活性极高 |
| 触发器 (FF) | 存储时序状态 | 支持同步复位/置位,与 LUT 紧密耦合以降低延迟 |
| 进位链 | 加速算术运算 | 专用硬件路径,实现低位到高位的高效进位传递 |
| 多路复用器 | 内部信号路由 | 在 CLB 内部选择 LUT 输出或触发器输出作为下一步输入 |
可编程互连资源
如果说 CLB 是 FPGA 的“大脑”,那么可编程互连资源就是连接各个“神经元”的“神经网络”,互连资源负责将 CLB 的输出连接到其他 CLB 的输入,或者连接到输入输出模块(I/O),FPGA 的互连结构通常采用分层设计,主要包括全局互连和局部互连两种类型。
全局互连通常具有较低的延迟和较高的带宽,用于连接距离较远的 CLB 或跨越芯片大部分区域的关键信号,局部互连则用于连接相邻的 CLB 或切片,提供高密度的短距离连接,互连资源由大量的可编程开关矩阵(Switch Boxes)和连线段(Interconnect Segments)组成,这些开关矩阵由传输门或多路复用器构成,通过配置 SRAM 位来建立或断开连接路径。

互连资源的复杂性直接影响了 FPGA 的性能和密度,互连延迟往往占 FPGA 总延迟的很大比例,因此先进的 FPGA 架构会采用非均匀布线结构,即不同长度的连线段以不同的概率分布出现,以平衡局部连接密度和全局连接能力。
可编程输入输出模块(I/O)
可编程输入输出模块(I/O Block)是 FPGA 芯片与外部世界进行数据交换的接口,它不仅负责电平转换,还支持多种通信协议和标准,现代 FPGA 的 I/O 模块高度可配置,能够适应从低速 GPIO 到高速串行接口(如 PCIe、Ethernet、JESD204B 等)的各种需求。
I/O 模块内部通常包含可编程的驱动强度控制、上下拉电阻、差分对支持以及输入/输出延迟调节电路,延迟调节电路尤为重要,它允许用户精确控制数据输出的时序,以满足高速接口协议严格的建立时间和保持时间要求,I/O 模块还集成了电源域隔离功能,允许 FPGA 的不同部分工作在不同的电压标准下,从而支持混合电压系统的集成。
嵌入式资源与专用硬件
除了上述通用结构外,现代 FPGA 还集成了大量的嵌入式专用资源,以加速特定类型的应用,这些资源包括:
- 嵌入式存储器块(Block RAM):用于存储数据、指令或作为 FIFO 缓冲区,Block RAM 具有固定的位宽和深度,访问速度远高于通用逻辑实现的存储器。
- 数字信号处理切片(DSP Slice):专为高速数字信号处理设计,内部包含乘法器、累加器和预加器,能够高效执行 FIR 滤波器、FFT 等算法。
- 处理器硬核:许多 FPGA 集成了 ARM Cortex-A 或 RISC-V 处理器内核,形成 SoC(片上系统)架构,用于运行操作系统和控制逻辑。
- 高速串行收发器(Transceivers):支持 Gbps 级别的高速串行通信,如 PCIe、SATA、USB 等,通常配备时钟数据恢复(CDR)电路和均衡器。
这些嵌入式资源通过专用的总线或互连网络与可编程逻辑块相连,极大地扩展了 FPGA 的功能边界,使其能够胜任从简单逻辑控制到复杂系统级设计的各种任务。

相关问题与解答
问题 1:为什么在 FPGA 中,互连延迟往往比逻辑门延迟更值得关注?
解答:
在 FPGA 架构中,逻辑功能主要由查找表(LUT)实现,LUT 的延迟相对固定且较小,FPGA 的可编程性依赖于庞大的互连网络,信号在 CLB 之间传输时需要经过多个可编程开关矩阵和不同长度的连线段,由于互连资源占据了 FPGA 芯片面积的很大一部分,且信号路径可能非常长,互连延迟往往成为制约 FPGA 最高工作频率的主要因素,特别是在大规模设计中,关键路径可能跨越多个 CLB,累积的互连延迟会显著影响整体性能,优化互连路径和选择合适的布线策略是 FPGA 设计中的关键环节。
问题 2:FPGA 的查找表(LUT)与 ASIC 中的标准单元库在实现逻辑功能时有何本质区别?
解答:
FPGA 的查找表(LUT)是一种通用的、基于 SRAM 的配置单元,它通过存储真值表来“模拟”任何逻辑函数,这意味着同一个 LUT 硬件结构可以通过重新配置来实现与门、或门、异或门甚至更复杂的组合逻辑,具有极高的灵活性,但同时也带来了 SRAM 访问延迟和静态功耗,相比之下,ASIC 使用标准单元库,其中包含针对特定逻辑功能(如反相器、NAND 门、触发器等)预先制造好的固定物理电路,ASIC 的逻辑门是硬连线(Hard-wired)的,没有配置过程,因此延迟更低、功耗更小、面积更紧凑,但一旦制造完成,其逻辑功能就无法更改,简而言之,LUT 是用“软件定义硬件”的方式实现逻辑,而标准单元是“硬件直接实现逻辑”。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/471266.html