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