FPGA 硬件架构详解
FPGA的基本部件
- 可编程逻辑块
- 可编程互连
- 可编程 I/O
结构如下图所示,这是一个典型的传统同构 FPGA。橘色代表逻辑块,蓝色表示相互连接的选择器(开官)。逻辑块通过布线资源进行连接。
三个重要器件(基于SRAM的FPGA为例):
- 查找表,由 SRAM 的存储位构建得到
- 传输晶体管:由 SRAM 的存储位控制通断
- 多路复用选择器:由 SRAM 的存储位控制数据的输入,从而选择输入或输出。可以构建任意一个门电路。
下图为一个三输入的 LUT:一个 k 输入的查找表可以配置实现任意 k 输入1输出的组合逻辑。
- 个SRAM bits
- 逻辑函数的延时是独立的
逻辑单元——Logic Element
一个逻辑单元由查找表(组合逻辑)、触发器(时序逻辑)、Mux组成,触发器可以被旁路。有了组合逻辑和时序逻辑,我们就可以构建出任意的数字电路。
逻辑块——Logic Block
有了上面逻辑单元的概念,就可以得到逻辑块的定义。如下图所示:
- 一个逻辑块包含多个逻辑单元
在Xilinx 7 系列 FPGA 中,一个逻辑块(CLB)包含 2 个 slice
- 每个 Slice 都有独立的进位和输出
- 每个 Slice 包含4个LUT
现代异构FPGA架构
大多采取岛式可配置互连方式:
- 大量的定制化硬件模块
- 存储/乘法器,I/O,处理器
- 定制化导致高性能和低功耗
专用 DSP
为优化 DSP 应用嵌入的高速算术操作的单元
-
至少包含一个乘累加单元(MAC)
-
固定的逻辑和连接,可在运行时配置功能
-
比基于LUT的实现有更快的执行速度(ASIC v.s. LUT)
所以说,怎么充分的使用DSP资源是一个很重要的问题,不能什么运算都通过 LUT 综合得到。