FPGA资源之LUT


一、CLB资源简介

  Xilinx 7的FPGA可编程逻辑资源为CLB(Configurable Logic Block)
  下图白色高亮为CLB资源:
  在Xilinx的FPGA中,这样的CLB资源有很多个,组成可编程逻辑阵列;
在这里插入图片描述
  我们看到在CLB资源中,还有两个区域如下图:
  这些资源统称为SLICE,一个CLB中有两个SLICE,当然这两个SLICE片在名字与功能上也是有区别的;
  绿色(SLICEM),黄色(SLICEL)
  SLICEM的功能更偏向与组成DRAM(Distributed RAM,分布式RAM),SLICEL更偏向实现组合逻辑;
在这里插入图片描述
  每一个SLICE中,有以下的资源,4个LUT(Look Up Table,查找表)、3个MUX(多路选择器)、1个CARRY(进位单元)和8个DFF(触发器);
  其中一个SLICE中的MUX共3个,有2个是F7MUX(7输入多路选择器)1个是F8MUX(8输入多路选择器);
在这里插入图片描述在这里插入图片描述
  通过SLICE片中各个单元的组合、SLICE与SLICE之间的组合和CLB之间的组合,我们就能实现各种功能;

二、LUT查找表资源(SLICEM、SLICEL)

  LUT(Look Up Table)资源是FPGA中比较重要的一个资源,LUT资源也是构建组合逻辑的基本单元,可以说LUT资源越多,我们能够实现的功能就越复杂;
  在FPGA中的LUT分为两种,分别是SLICEM中的LUT和SLICEL中的LUT;
SLICEM中的LUT资源如下:
在这里插入图片描述
SLICEL中的LUT资源如下:
在这里插入图片描述
  这两种LUT资源之间最直观的区别是前者比后者多出了更多信号线;
  这是因为SLICEM中的LUT资源多了移位逻辑,它既可以当作普通的LUT使用,也可以通过多块LUT组合成分布式RAM或ROM(Distributed RAM/ROM);

三、LUT资源

3.1 LUT资源工作原理

  通过LUT资源我们可以实现不同组合逻辑,这是因为LUT本质上就是一个小RAM,我们以查找表资源来讲,这里的表其实就是实现的组合逻辑的真值表,而这个真值表则存储于LUT中;
  例:通过LUT2实现A&B逻辑
真值表:
在这里插入图片描述
  我们将上面真值表中的A与B看做地址线,O看做RAM中的初值;
  则LUT2资源如下:
在这里插入图片描述
  LUT2的初始化值为4’b1000(十六进制:0x08)
  当A = 1’b1 B = 1’b1 时,则此时寻址的是RAM的最高位,也就是1;

3.2 LUT资源内部结构

  在3.1节中,我们提到LUT本身就是一个RAM,以3.1节中LUT2的例子,其内部结构的简化图如下:
在这里插入图片描述

  最左侧为提前写入LUT资源的数据配置;
  通过上述例子,我们还能拓展出LUT4、LUT6的结构图;

3.3 LUT功能的拓展

  在FPGA中,若仅通过配置LUT资源的配置,是很难实现更多复杂应用的,因为LUT资源的功能有限,此时就需要一些其他资源来与LUT配合,拓展LUT资源的功能;
在这里插入图片描述

  上图是Xilinx家FPGA的SLICE内部结构,我们主要观察上图中,LUT6的输出,其分别接到了MUX、CARRY上,当然也可以将LUT资源直接输出;
  这些信号最终在CLICE输出的MUX上汇总;
在这里插入图片描述

  通过这一操作,我们可以拓展LUT6的功能,如通过两个LUT6与一个MUX实现LUT7,或者LUT6与CARRY组合,实现计算等等;
  以下给出在工具进行综合后,MUX8与LUT6组合的实现(绿色)在这里插入图片描述

3.4 LUT硬件原语

  在大多数情况下,我们只需用Verilog描述好电路逻辑,然后将其丢给编译器,进行分析综合,编译器就能自动将电路转换好,我们无需关注LUT资源的分配;但在某些情况下,我们需要直接例化LUT资源时,需要用到硬件原语;
  以Xilinx的FPGA中LUT6资源为例,其原语如下:

LUT6 #(
   .INIT(64'h0000000000000000)  // Logic function
)
LUT6_inst (
   .O(O),   // 1-bit output: LUT
   .I0(I0), // 1-bit input: LUT
   .I1(I1), // 1-bit input: LUT
   .I2(I2), // 1-bit input: LUT
   .I3(I3), // 1-bit input: LUT
   .I4(I4), // 1-bit input: LUT
   .I5(I5)  // 1-bit input: LUT
);

INIT: 提前写入LUT6的值;
I0~I5: LUT6寻址线;
O: LUT6寻址输出;
真值表:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例:例化LUT6实现与非门(~(a&b))
  根据与非门,我们得到以下真值表
在这里插入图片描述
  假设我们把LUT6的I0作为信号b,I1作为信号a,I2~I5作为保留位(默认为1),则真值表可以拓展为;
在这里插入图片描述
则需要初始化的值为
  第60位:1’b1
  第61位:1’b1
  第62位:1’b1
  第63位:1’b0
最终INIT值为64’h7000000000000000
则Verilog如下:

module nand(
    input  wire   a,
    input  wire   b,
    output wire   o
);

LUT6 #(
   .INIT(64'h7000000000000000)  // Logic function
)
LUT6_inst0 (
   .O(o),   // 1-bit output: LUT
   .I0(b), // 1-bit input: LUT
   .I1(a), // 1-bit input: LUT
   .I2(1'b1), // 1-bit input: LUT
   .I3(1'b1), // 1-bit input: LUT
   .I4(1'b1), // 1-bit input: LUT
   .I5(1'b1)  // 1-bit input: LUT
);

endmodule

  • 12
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: KC705是一款Xilinx的FPGA开发板,它搭载了Virtex-7 XC7VX485T FPGA芯片,具有丰富的资源开发者使用。 在KC705开发板上,LUT(Look-Up Table,查找表)是其中的一种资源。在FPGA中,LUT是一种最基本的可编程逻辑单元,用于实现各种布尔逻辑功能。 KC705开发板中的XC7VX485T FPGA拥有大量的LUT资源。准确的说,XC7VX485T共有555,200个逻辑单元,每4个LUT包含一个触发器。这意味着,开发者可以非常灵活地使用这些LUT资源来实现复杂的逻辑功能或者存储器。 借助于LUT资源开发者可以实现各种基本逻辑门,如与门、或门、非门、异或门等。此外,LUT还可以进行复杂的逻辑运算,如加法、减法、乘法等,可以用于实现算术运算器。此外,LUT还可以用于存储分布式RAM,实现存储器的功能。 利用KC705开发板上丰富的LUT资源开发者可以实现各种复杂的数字逻辑设计,例如图像处理、信号处理、通信等应用。借助于Xilinx的开发工具,开发者可以轻松地对这些LUT资源进行配置和编程,从而实现各种功能的设计。总之,KC705开发板上的LUT资源开发者提供了强大的逻辑实现能力。 ### 回答2: KC705是一款赛灵思(Xilinx)公司生产的开发板,它内部包含了丰富的资源。其中,查找表(Look-Up Table,简称LUT)是KC705开发板上的重要资源之一。 LUTFPGA中的基本逻辑单元,它可以实现逻辑函数的实现和组合逻辑电路的编程。在KC705中,LUT资源可以用于实现各种功能,如逻辑运算、数据处理、计数器等。它是FPGA中最基本、最常用的资源,可以根据设计的需求进行配置和编程。 KC705开发板上包含了很多个LUT资源,具体数量会根据开发板的规格不同而有所区别。这些LUT资源可以通过编程工具对其进行灵活地配置和使用。通过使用LUT资源,我们可以实现复杂的逻辑功能,并可以根据需求进行组合和连接,以实现更复杂的电路设计。开发人员可以通过编写HDL代码(如VHDL或Verilog)来描述逻辑电路,并将其映射到LUT资源上,从而实现所需的功能。 总之,KC705开发板上的LUT资源是非常重要的,它提供了实现逻辑电路的基本单元,可以通过编程工具进行配置和使用。通过合理利用这些资源开发人员可以设计出功能丰富、高性能的电路,并满足各种应用需求。 ### 回答3: KC705是一款主要用于开发和验证Xilinx FPGA芯片的开发板。它提供了丰富的资源和功能,包括大量的Look Up Tables(LUTs)。 Look Up Tables(LUTs)是FPGA中的一种重要组件,它提供了一种灵活的逻辑实现方式。每个LUT由一个输入寄存器和对应的输出表组成。通过配置LUT的输入表,我们可以实现不同的逻辑功能,并将其组合成一个复杂的电路。因此,LUT可以看作是FPGA中的基本逻辑单元。 KC705开发板提供了较大数量的LUT资源,可以满足各种各样的逻辑设计需求。对于简单的逻辑功能,我们可以利用一个或几个LUT来实现;而对于更复杂的逻辑功能,可以将多个LUT进行级联和组合,以实现更复杂的计算。 利用KC705上丰富的LUT资源,我们可以进行各种逻辑设计实验,如数字电路实现、算法设计、信号处理等。同时,KC705还提供了很多其他的资源,如可编程逻辑门阵列(PL)、片上存储器(BRAM)、时钟资源等,可以满足不同的设计需求。 总之,KC705资源丰富,其中包括大量的LUT。我们可以利用这些LUT来实现不同的逻辑功能,并通过组合和级联来实现复杂的电路。通过使用KC705进行逻辑设计实验,我们可以加深对FPGA的理解,并且实践各种数字电路设计和算法实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PPRAM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值