欢迎阅读“FPGA组件”系列文章中的第一篇扩展解释文章。这篇文章将描述一个可配置逻辑块(CLB)的体系结构和该组件在现场可编程门阵列(FPGA)中的功能。在任何特定的FPGA中,CLB的体系结构没有严格的标准,所以本文中的信息是专门关于在Xilinx 7系列FPGA中找到的CLB的。
CLB是FPGA的基本组件,允许用户在芯片中实现几乎任何逻辑功能。这是通过在一个块中使用两组类似的组件(称为片)来实现的。有两种不同类型的切片,称为SLICEM和SLICEL,每个CLB可以包含一个SLICEM和SLICEL,也可以包含两个SLICELs。在一个芯片上,SLICELs的数量大约是SLICEMs的两倍,尽管具体数字因设备而异。这些片包含四个查找表(LUTs)、八个触发器(FF)、一个进位逻辑网络和三种类型的多路复用器。为了避免在我们真正开始之前迷失方向,这里有一个粗略的图表来说明这个内部结构。
每一个CLB = 2片,每片= 4 LUTs + 8 FF。因此,1 CLB = 8 LUTs + 16FF。这个数值总结只是为了准确地描述CLB的具体内容。现在让我们更详细地描述每一块。
SLICEM和SLICEL
在此之后讨论的组件都作为一个片段中的片段存在。这一事实也不意思是整体仅仅是各部分的总和!片本身有一些独特的特性,允许FPGA扩展其功能。
首先,CLB中的片彼此之间没有连接。它们的物理定向方式与上面的图类似,因此它们可以在上面或下面的clb中与相同的切片类型(SLICEM或SLICEL)连接,创建列。这允许在一个列中的SLICEM或SLICEL之间进行互连,以创建大规模的函数。
这两种切片类型的显著特征是SLICEM的可配置性。可以对SLICEM进行配置,使其内部的查找表除了具有正常的逻辑功能外,还可以作为移位寄存器或数据存储(在芯片上创建分布式内存)。
在命名方面需要注意的是:“M”可能表示其作为分布式内存的能力,而“L”可能表示其专用逻辑功能。这只是推测,但它可以帮助记住哪个是哪个。
查表
查找表,计算的备忘单....好吧,这个说法可能有点强。然而,它确实说明了一点,LUT可以通过为给定的输入提供一个集合的输出来加快处理速度,而不需要对输入数据进行计算。
FPGA (Xilinx 7系列)中的lut设计有6个输入和2个输出。每个输入和输出都是独立的,并允许以多种方式实现的,比如一个six-input函数或两个函数的五个或更少的投入,虽然5和4个输入函数需要一个共同的输入,而三个和两个输入功能。
困惑吗?是的。插图吗?是的!
人字拖/门闩
触发器是一种基本的存储设备,它可以存储单个比特的信息。每个片包含8个这样的存储元素。其中四个可以作为触发器(同步存储),其他四个可以配置为标准触发器或锁存器(异步存储)。最后要注意的是,当可配置为锁存器的四个触发器失效时,该片中的其他四个触发器就不能使用了。
多路复用器(mux)
单片内的多路复用以一种有趣的方式处理。使用LUT的灵活功能,而不是大量固定输入的专用mux。每个LUT可以实现为一个4:1 Mux,使用6个输入中的两个作为其他4个输入的选择。更大的多路复用功能就是从这个起点开发出来的。以这种方式配置的两个lut被组合成一个专用的多路复用器(称为F7AMUX或F7BMUX,如果命名对您很重要),这允许您拥有一个8:1 MUX。所有四个lut,通过两个8:1 Mux,可以组合成第二种类型的专用多路复用器(F8MUX),在片中提供16:1 Mux功能。
把逻辑
进位超前逻辑是在CLB的每个片上实现的,它结合了专用的多路复用器和异或门,在进位链中使用。单个切片中的进位链逻辑是4位高的,是将一列切片直接连接在一起的电路。可以级联一个跨多个片为了快速进位链实现加法,减法,乘法运算的操作数太大需要处理由一个切片(就像如果你想加/减/乘两个数大于15或1111二进制扬声器)。
如果你能读到最后,感谢你的阅读!关于lut的分布式内存功能的更多细节将在“内存资源”和片上块RAM中讨论。有关逻辑组件和概念背景的详细信息可以在下面的链接中找到。


这是一个很好的帖子,但是对于真正的内容来说,Xilinx的官方文档做得很好。我推荐UG474的“可配置逻辑块(CLB)用户指南”https://www.xilinx.com/support/documentation/user_guides/ug474_7Series_CLB.pdf