不知道为什么,在嵌入式开发中,存在一条隐式的鄙视链:做 51 单片机的看不起做基本电路的,而做 STM32 开发的看不起 51 单片机的,而做 FPGA 的开发的看不起 STM32 开发的。今天,我们的主角就是 FPGA!
什么是 FPGA?
FPGA(现场可编程门阵列)是一种可配置的集成电路,在制造后可以反复编程。
许多用户更青睐 FPGA 而不是 MCU,因为 FPGA 的可编程性和灵活性允许用户根据自己的需求定制电路。此外,FPGA 拥有更高的性能,因为其并行结构使其能够在一个时钟周期内处理比 MCU 更多的数据。因此,FPGA 芯片通常比 MCU 更昂贵。
工作原理
-
布尔代数
在逻辑中,我们通常使用 真 (1) 或 假 (0) 来判断某个事件是否发生。例如,我们可以用变量 A 表示明天是否下雨。如果下雨,A 等于 1,表示事件发生;否则,A 等于 0。
这种逻辑与电路中使用的 高电平 (1) 和 低电平 (0) 类似,用来检测特定事件是否发生,并使电路做出相应反应。
为了执行这些逻辑操作,电路依赖于 逻辑门。逻辑门的等效布尔代数操作如下:
- 或门 (Or Gate):执行布尔加法
- 与门 (And Gate):执行布尔乘法
或门:

与门:

-
积之和 (Sum of Products)
本质上,或门(布尔加法) 和 与门(布尔乘法) 可以组合起来检测多种事件。这种组合逻辑表示为 积之和 的形式,其中函数由一系列 与操作(积) 通过 或操作(和) 组合在一起。例如:
F = (A AND B) OR (B AND C AND D) OR (A AND C)。

理想情况下,只要资源足够,我们可以设计电路来将现实世界表示为 0 和 1。这是计算机工作原理的基本概念。

-
真值表 (Truth Table)
真值表是一个列出所有可能输入组合及其对应输出的表格,用于理解和验证逻辑电路或功能的行为。
例如,考虑一个具有两个输入 A 和 B、一个输出 F 的简单与门。其真值表如下:
A B F (A AND B) 0 0 0 0 1 0 1 0 0 1 1 1 真值表不仅有助于分析单个逻辑门,还可以作为设计和验证 FPGA 中更复杂功能的蓝图。当电路变得庞大且复杂时,像 LUT(查找表)这样的工具被用来高效处理这些真值表映射。
-
查找表 (LUTs)
查找表 (LUTs) 是 FPGA 中真值表的直接硬件实现。它们是存储逻辑函数所有可能输入组合输出值的小型存储单元。这意味着 LUT 本质上是将真值表映射到可编程电路中。
例如,考虑前面提到的与门。该门的 LUT 将存储真值表的输出列:
地址(输入组合) 存储值(输出) 00 0 01 0 10 0 11 1 其中:
- 地址 对应于输入组合(例如,A=0,B=1 对应二进制的 01)。
- 存储值 表示该组合的对应输出。
真值表和 LUT 的关系使 FPGA 能够高效实现逻辑功能:
- 真值表作为蓝图:真值表定义了逻辑电路的期望行为。
- LUT 作为硬件实现:LUT 通过存储所有可能输入的输出,将这种行为转换为物理实现。

通过利用 LUT,FPGA 可以动态重新编程其硬件来实现多种功能,从而展现出极大的灵活性。对于较大的设计,多组 LUT 通过 FPGA 的可编程互连 (Interconnects) 连接在一起,从而无需定制硬件即可实现复杂的逻辑电路。
-
互连 (Interconnects)
互连是 FPGA 的可编程布线网络的核心。它们连接查找表 (LUT)、寄存器和其他逻辑元件,使 FPGA 能够根据用户设计形成自定义电路。没有互连,单独的 LUT 将是孤立的,无法组成更大的功能设计。
互连与 LUT 的关系
虽然 LUT 实现了单个真值表的逻辑,但互连负责将一个 LUT 的输出连接到另一个 LUT 的输入。这种连接性使 FPGA 能够扩展简单的逻辑操作为复杂的系统。
例如:
- 单个 LUT 可能实现一个简单的逻辑函数,如
A AND B。 - 通过互连,该 LUT 的输出可以作为输入连接到另一个实现函数
(A AND B) OR C的 LUT。
- 单个 LUT 可能实现一个简单的逻辑函数,如

FPGA 中的互连系统由多种可编程元素组成,允许信号在芯片中传输:
- 全局路由资源:用于在 FPGA 芯片的远距离部分之间传递信号。
- 开关矩阵:一个可编程开关网格,用于控制信号在不同路由路径之间的流动。用户通过配置这些开关来创建所需连接。
- 局部路由资源:短距离布线,用于连接相邻的逻辑元件,例如将一个 LUT 与其邻近的 LUT 连接起来。
- 专用线路:用于高速或特定连接的直接高效通路,可以绕过通用路由。
可编程性和优势
FPGA 互连的可编程性赋予了它极大的灵活性:
- 动态连接:互连可以重新配置,以连接 FPGA 的不同部分以实现新的设计。
- 扩展性:支持从简单逻辑到复杂电路的设计。
- 优化:FPGA 工具在设计综合和实现过程中优化互连的使用,确保高效的时序和资源利用。
尽管存在一定的延迟和功耗开销,互连系统是 FPGA 灵活性和多功能性的关键,使其能够适应多样化的应用需求。
。
- 优化:FPGA 工具在设计综合和实现过程中优化互连的使用,确保高效的时序和资源利用。
尽管存在一定的延迟和功耗开销,互连系统是 FPGA 灵活性和多功能性的关键,使其能够适应多样化的应用需求。
841

被折叠的 条评论
为什么被折叠?



