教你如何使用FPGA中LUT表实现组合逻辑

LUT,全称Look Up Table,查找表。目前主流FPGA实现的是6输入查找表。这里我们以4输入查找表为例,解释一下FPGA如何使用LUT表实现组合逻辑。

如上图所示,4输入查找表,包含4个输入端口I[3:0],包含一个输出端口O,还包含存储初始值的16个DFF触发器。

可以看到四个输入信号,实际上是4级选择器。每个输入位会控制一列选择器的选择。如I[0]值为0,则选通,第一级选择器的上通路。如I[0]值为1,则选通,第一级选择器的下通路。

I是4bit的二进制,其构成的输入的值一共有16种情况。这里每个输入值,对应一个DFF。我们提前把值对应的输出值初始化在DFF内。这样就构建了一张16X1的表格。根据输入值,选择某个DFF输出到O端。进而实现了4输入的所有逻辑组合。

举例:I[3:0]=4'b0101,其对应的选择通路为:

图片

我们可以直接使用Verilog语言描述LUT表。代码片段来自:Vivado Design Suite 7 Series FPGA and Zynq 7000 SoC Libraries Guide (UG953)。四输入LUT表的verilog实例化模板:

// LUT4: 4-input Look-Up Table with general output (Mapped to a LUT6)//       7 Series// Xilinx HDL Language Template, version 2023.1
LUT4 #(   .INIT(16'h0000)  // Specify LUT Contents) LUT4_inst (   .O(O),   // LUT general output   .I0(I0), // LUT input   .I1(I1), // LUT input   .I2(I2), // LUT input   .I3(I3)  // LUT input);
// End of LUT4_inst instantiation

如果需要实现一个4输入的与逻辑;

O = I[3] & I[2] & I[1] & I[0];

实例化代码为:

// LUT4: 4-input Look-Up Table with general output (Mapped to a LUT6)//       7 Series// Xilinx HDL Language Template, version 2023.1
LUT4 #(   .INIT(16'h8000)  // Specify LUT Contents) LUT4_inst (   .O(O),   // LUT general output   .I0(I0), // LUT input   .I1(I1), // LUT input   .I2(I2), // LUT input   .I3(I3)  // LUT input);
// End of LUT4_inst instantiation

是不是很简单,你学会了吗?

FPGA中,实现逻辑的基本单元是查找表LUT)而非基本门电路。目前的FPGA中,单一LE或者Cell通常能实现至少4输入查找表逻辑功能。   4输入查找表可以看成是具有4位地址1位数据的存储器,能够存储16bit数据,这也是LUT能被用于组建分布式RAM的原因。   如果要构成一个6输入1输出MUX,可以通过两片4输入查找表级联,也可直接用一片完整的6输入查找表,两片4输入的查找表的存储容量是32,而一片完整的6输入查找表的存储容量是64;若使用6输入查找表(存储容量为64)实现4输入(存储容量为16)的逻辑功能,则浪费了75%的存储容量。也就是说,采用较少输入的查找表实现较多输入查找表的功能,在面积上有更高的利用率。   但是并非只需要考虑面积利用率,还应考虑到时序和布线问题,按照输入越少面积利用率越高的说法,岂不是2输入查找表更具有优势?但是各个FPGA厂商都不提供2输入查找表,因为如果FPGA都以2输入查找表为基本逻辑单元,那么实际应用中,几乎所有的逻辑都需要查找表级联实现,但是FPGA中的布线资源并不足以支撑这样的设计,同时,这样的设计也将导致时序问题。   因此,使用多少输入作为基本的查找表是一个重要的问题,目前在一般的FPGA中,为了平衡查找表扩展和面积使用率,4输入查找表受到广泛应用;在复杂的FPGA中,可能采用混合查找表,比如同时使用3输入和4输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值