1 分钟阅读 次阅读

FPGA(现场可编程门阵列)是一种高度灵活的半导体器件,其核心思想是通过可编程的硬件结构实现用户定义的电路功能。

1. 基本组成单元:可编程逻辑单元(CLB / LE)

FPGA的核心是可编程逻辑块(Configurable Logic Block, CLB,或称为Logic Element, LE),通常由以下两部分构成:

  • 查找表(LUT, Look-Up Table)
    • 功能:实现任意组合逻辑(如与、或、非等)。
    • 原理:一个N输入的LUT本质上是一个 (2^N \times 1) 的存储器,存储了所有可能的输入组合对应的输出值。
    • 例如,一个2输入LUT若存储值[0, 0, 0, 1],则等效于一个AND门。存储值[1, 1, 1, 0]则等效于一个NAND门。
    • 常见配置:4输入LUT(可表示任意4输入逻辑函数)、6输入LUT(现代FPGA如Xilinx UltraScale)。
  • 触发器(Flip-Flop, FF)
    • 功能:存储状态,实现时序逻辑(如寄存器、计数器、状态机)。
    • 与LUT的配合:LUT处理组合逻辑,FF存储结果,形成完整的时序电路。

示例:一个CLB可能包含多个LUT和FF的组合,例如:

  • Xilinx 7系列:每个Slice包含4个LUT + 8个FF。
  • Intel Cyclone V:每个Logic Element(LE)包含1个4输入LUT + 1个FF。

2. 布线资源(Routing Resources)

FPGA的逻辑单元之间通过可编程互连网络连接,布线资源决定了信号传输的路径和延迟。

  • 类型
    • 水平/垂直金属线:全局布线通道。
    • 开关矩阵(Switch Matrix):连接不同方向的金属线。
    • 可编程开关(如Pass Transistor、Multiplexer):控制信号路径的通断。
  • 关键问题
    • 布线延迟可能占电路总延迟的60%以上,是时序收敛(Timing Closure)的主要挑战。
    • 现代FPGA使用分层布线架构(局部布线、全局布线)优化延迟。

3. 输入输出块(IOB, Input Output Block)

  • 功能:连接FPGA内部逻辑与外部引脚。
  • 特性
    • 支持多种电平标准(LVCMOS、LVDS、HSTL等)。
    • 可配置为输入、输出或双向端口。
    • 包含缓冲器(Buffer)、施密特触发器(Schmitt Trigger)等电路,增强信号完整性。

4. 专用硬件模块

现代FPGA集成了多种专用硬件资源,用于加速特定任务并节省逻辑资源:

(1) 嵌入式存储器(Block RAM, BRAM)

  • 功能:提供片上高速存储,避免使用分布式RAM(由LUT实现)的资源浪费。
  • 配置
    • 容量:通常为18Kb或36Kb的块,支持多端口访问。
    • 用途:FIFO、缓冲区、查找表存储等。

(2) 数字信号处理块(DSP Slice)

  • 功能:高效执行乘加运算(如 (A \times B + C)),用于加速数字信号处理(滤波器、FFT等)。
  • 结构:包含乘法器、累加器、流水线寄存器。
  • 优势:比用LUT实现乘法器速度更快、资源更省。

(3) 时钟管理单元(Clock Management)

  • 锁相环(PLL)延迟锁相环(DLL)
    • 生成多路时钟(频率合成、相位调整)。
    • 消除时钟偏移(Clock Skew)。

(4) 高速串行接口(如Transceiver)

  • 功能:支持高速协议(PCIe、SATA、Ethernet)。
  • 速率:可达数十Gbps(如Xilinx UltraScale+ GTY Transceiver支持32.75 Gbps)。

(5) 硬核处理器(Hard Processor)

  • 示例
    • Xilinx Zynq:集成ARM Cortex-A9核。
    • Intel SoC FPGA:集成ARM Cortex-A53核。
  • 用途:实现软硬件协同设计(如运行Linux系统)。

5. 配置存储器

  • 功能:存储FPGA的配置信息(比特流文件),决定逻辑单元和布线的连接方式。
  • 类型
    • SRAM-based FPGA
      • 特点:上电时从外部Flash加载配置,断电丢失。
      • 代表:Xilinx大部分FPGA、Intel(Altera)FPGA。
    • Flash-based FPGA
      • 特点:配置信息存储在片内Flash,上电即用。
      • 代表:Microsemi(Microchip)ProASIC3系列。

6. 现代FPGA的层次化架构

以Xilinx 7系列FPGA为例,其结构从细粒度到粗粒度分为:

  1. 底层
    • LUT + FF → Slice(2个LUT + 2个FF为一对) → CLB(2个Slice)。
  2. 中层
    • CLB阵列 + 布线通道 → 构成逻辑区域。
  3. 顶层
    • 逻辑区域 + Block RAM、DSP、时钟模块等 → 通过全局布线互联。

FPGA vs. ASIC:结构差异

| 特性 | FPGA | ASIC | |——————|———————————–|—————————| | 可编程性 | 可重复编程 | 一次性固化 | | 逻辑密度 | 低(依赖预制资源) | 高(定制化晶体管) | | 性能 | 较低(受限于通用布线) | 高(优化路径) | | 功耗 | 较高(静态功耗来自配置资源) | 低(仅动态功耗) | | 成本 | 低(无需流片) | 高(NRE费用高) |


FPGA的设计映射示例

假设实现一个4位加法器:

  1. 逻辑实现
    • 每个1位全加器需要2个LUT(计算和与进位)。
    • 4位级联进位加法器共需8个LUT + 4个FF(存储进位链)。
  2. 布局布线
    • 工具自动将LUT和FF映射到相邻CLB,优化布线延迟。
  3. 资源占用
    • 占用约1个Slice(假设每个Slice含4个LUT)。

总结:FPGA的核心优势

  • 灵活性:通过配置实现任意数字电路。
  • 并行性:硬件电路天然支持并行处理。
  • 快速迭代:无需流片,适合原型验证和小批量生产。

理解FPGA内部结构有助于优化设计(如减少关键路径延迟、合理使用Block RAM),同时避免资源浪费和时序问题。

标签:

分类:

更新时间:

留下评论