什么是 FPGA 中的 LUT?

电器工程 FPGA
2022-01-17 13:50:45

我已经通过各种来源......但我不太确定它是什么。我想要一个与门,逻辑等价物是两个输入馈入一个门,对于 Y = AB',逻辑等价物是馈入一个非门和一和门。但对于 AND 和 Y=AB',它是相同的 LUT。我认为我们将所需的值存储在 LUT 中。有人详细说明了这一点

2个回答

LUT代表LookUp Table,一般来说基本上是一个表,它确定任何给定输入的输出是什么在组合逻辑的上下文中,它是真值表这个真值表有效地定义了组合逻辑的行为方式。

换句话说,通过互连任意数量的门(如 AND、NOR 等)而获得的任何行为,没有反馈路径(以确保它是无状态的),都可以由 LUT 实现。

FPGA 通常实现组合逻辑的方式是使用 LUT,当 FPGA 配置完成时,它只是填写表格输出值,称为“LUT-Mask”,物理上由 SRAM 位组成。所以同一个物理LUT可以实现Y=AB和Y=AB',但是LUT-Mask不一样,因为真值表不一样。

您还可以创建自己的查找表。例如,您可以为一个复杂的数学函数构建一个表,这比通过遵循算法实际计算值要快得多。该表将存储在 RAM 或 ROM 中。

这使我们将 LUT 简单地视为内存,其中输入是地址,相应的输出是存储在给定地址中的数据。

这是Altera的FPGA 架构的快照:

在此处输入图像描述

两个输入的 LUT(查找表)通常可以这样表示:

在此处输入图像描述

LUT 由一块 SRAM 组成,该块由 LUT 的输入索引。LUT 的输出是其 SRAM 中索引位置中的任何值。

尽管我们认为 RAM 通常被组织成 8、16、32 或 64 位字,但 FPGA 中的 SRAM 是 1 位深度的。例如,3 输入 LUT 使用 8x1 SRAM (2³=8)

由于 RAM 是易失性的,因此必须在芯片上电时初始化内容。这是通过将配置存储器的内容传输到 SRAM 来完成的。

LUT 的输出是您想要的任何内容。对于一个二输入与门,

Address In ([1:0])      Output

     0  0                 0
     0  1                 0
     1  0                 0
     1  1                 1

对于您的第二个示例,只有真值表会发生变化:

Address In ([1:0])      Output

     0  0                 0
     0  1                 1
     1  0                 0
     1  1                 0

最后,A xor B:

Address In ([1:0])      Output

     0  0                 0
     0  1                 1
     1  0                 1
     1  1                 0

所以在每种情况下它都不是同一个 LUT,因为 LUT 定义了输出。显然,LUT 的输入数量可能远不止两个。

LUT 实际上是使用 SRAM 位和 MUX 的组合来实现的:

这里顶部 0 1 0 0 0 1 1 1 的位表示此 LUT 的真值表的输出。左侧 MUX 的三个输入 a、b 和 c 选择适当的输出值。

在此处输入图像描述