由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC 那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM 工艺的查找表结构。LUT本质上就是一个RAM。它把数据事先写入 RAM后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。
7系列FPGA中的函数发生器实现为六输入查找表(LUT)。slice的4个函数发生器(A,B,C和D)中的每一个都有六个独立输入(A输入A1至A6)和两个独立输出(O5和 06)。这篇短文中,我们通过一个简单的加法器来了解下LUT 如果实现加法器功能。
module ADDER(
input [0:0]A,
input [0:0]B,
output [1:0]Q
):
assign Q=A+B;endmodul
其原理图如下:
经过综合后如下:
A:LUT2初值位4'h6二进制表示位3’b110;B:LUT2初值位4'h8二进制表示位4'b1000
通过以上的简单举例,可以看到LUT实现逻辑单元功能的本质了。