FPGA中的LUT是什么?


24

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


2
有什么原因您没有接受答案?
Ellen Spertus

Answers:


37

LUT,其代表查询表,一般地说是基本上确定输出是什么对于任何给定的输入(一个或多个)的表。在组合逻辑的上下文中,它是真值表。该真值表有效地定义了组合逻辑的行为方式。

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

FPGA通常使用LUT来实现组合逻辑的方式,并且在配置FPGA时,它仅填写表输出值(称为“ LUT掩码”),并在物理上由SRAM位组成。因此,相同的物理LUT可以实现Y = AB和Y = AB',但是由于真值表不同,因此LUT掩码也不同。

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

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

这是Altera的FPGA体系结构的快照:

在此处输入图片说明


23

两个输入的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的真值表的输出。左侧a,b和c的MUX的三个输入选择适当的输出值。

在此处输入图片说明


谢谢。。。但是我在这里有非常基本的问题。SRAM位?我知道SRAM ..但是SRAM位?配置内存?能否解释一下如何使用2输入LUT实现Y = AB,Y = AB'和Y = A xor B?如果您用MUX级别图进行解释会很有帮助?非常感谢您对LUT结构的帮助。图中的R是什么?
Muthu Subramanian

@MuthuSubramanian我已经更新了我的答案,该答案应该解决您的所有问题。
tcrosley
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.