7 Series FPGAs Configurable Logic Block-CLB
2026/7/31 15:11:30 网站建设 项目流程

一、什么是CLB

1、CLB简介

CLB (Configurable Logic Block)可配置逻辑块是xilinx系列FPGA的基本逻辑单元CLB是用于实现时序逻辑电路和组合逻辑电路的主要逻辑资源。CLB的作用:主要使用实现组合逻辑和时序逻辑,如果我们的代码没有调用硬核资源,那么代码就会被综合成DFF(D flip-flop)和LUT(Look-Up Table)。

2、CLB的组成

每个CLB被划分成两个Slice,并引出逻辑连线至开关矩阵(Switch Matrix,作为布线资源),同时还包含着算术进位逻辑功能(CIN,COUT,进位输入和输出)。如下图所示:

Slice是构成CLB的基本单元,Slice有两种类型分别是SliceM和SliceL。一个CLB可以由两个SliceL组成或者由一个SliceL和一个SliceM组成,但是不会由两个SliceM组成。

SliceL和SliceM内部都包含4个6输入查找表(LUT6)3个数据选择器(MUX)1个进位链(Carry Chain)8个触发器(Flip-Flop)。只有SLICEM可以将其LUT用作分布式RAM或SRL。

3、SLICEM与SLICEL的区别

下面是官方手册提供的SLICEM和SLICEL的内部结构示意图。

从图中可以看到SLICEM和SLICEL的LUT不同。

SLICEM(M:Memory):其内部的LUT可以读也可以写,可以实现32bit移位寄存器和64bit的分布式RAM(DRAM)等存储功能,还可以实现基本的查找表逻辑。

SLICEL(L:Logic):其内部的LUT只可以读,只能实现基本的查找表逻辑。

大部分情况下,FPGA中SLICEL和SLICEM的数量比例为SLICEL:SLICEM=2:1.

由ug474手册可知:大约三分之二的切片是 SLICEL 逻辑切片,其余是 SLICEM,这些切片也可以将它们的 LUT 用作分布式 64 位 RAM 或 32 位移位寄存器(SRL32)或两个 SRL16。设备容量通常以逻辑单元的数量来衡量。7系列FPGA的逻辑单元与六输入LUT的比例为1.6:1。

4、官方推荐的设计流程

我们学习硬件底层有时候最终还是为了优化我们的代码设计,基于此官方在手册中也给出了

几条推荐的HDL设计:

(1)CLB中的触发器有一个置位(set)和一个复位(reset),设计者禁止同时使用这两者

(2)硬件中有着大量的触发器,所以推荐使用流水线的方式来提高效率。

(3)控制类输入信号在一个slice或者CLB中是被共享的,所以设计中的唯一控制类输入信号的数量

应该减少。控制类输入信号包括时钟信号,时钟使能信号,使能信号,置位复位信号。

(4)6输入LUT可以被设计成32位移位寄存器来提高布线效率。

(5)6输入LUT 可以被设计成64*1的DRAM来完成小规模存储需求,

(6)专用进位逻辑有效地实现了算术函数。

经典操作:(1)串转并 (2)并转串(3)乒乓操作(4)流水线操作

二、CLB在FPGA中的分布

CLB在xilinx 7系类FPGA芯片中按列分布的。

三、Look-Up Table查找表

查找表LUT主要用于实现组合逻辑。传统的门电路与或非门等,延时是比较长的。而对于LUT查找表来说,就是一个“映射表”。它通过预先存储“输入”与“输出”的对应关系,当输入到来时,直接就可以“查”出结果,而不必临时重新计算或进行复杂逻辑判断,所以时延小。

LUT是CLB的重要组成部分,其本质就是一个RAM,用来实现数字电路中逻辑门的功能,把输入映射成存储地址,再输出对应地址(输入)存储的值作为输出来实现所需的逻辑功能。7系类的FPGA中使用6-LUT,它通过2个5-LUT组成,也可以通过三个选择器进行级联6-LUT来实现7/8输入。

我们知道slice有SLICEM和SLICEL两种,其区别就在于他们的LUT不同,SLICEM的LUT既可以读,又可以写;SLICEL的LUT只能读。由于SLICEM的LUT具有可以读写的特性,所以它还可以被配置成DRAM或者移位寄存器来使用。

四、多路选择器MUX(multiplexer)

我们知道除了基本的LUT外,Slice还包含三个多路选择器(F7AMUXF7BMUX和F8MUX)。这三个选择器的作用如下:

F7AMUX:用于从LUTA和B生成7个输入函数

F7BMUX:用于从LUTC和D生成7个输入函数

F8MUX:用于组合所有LUT生成8个输入函数,

五、触发器FF(flip-flop)

在CLB中主要有2种类型的存储单元,一种只能被配置成触发器(FF),另一种既可以被配置成触发器(FF),也可以被配置成锁存器(Latch),然后他们根据复位方式的不同,复位后输出结果的不同可以被配置成不同类型的触发器/锁存器。

每个LUT的输出通常直接连接到一个专用的D触发器(DFF)。其作用就是用于存储状态(单bit数据),实现同步时序逻辑。它的内部结构如下图:

复位是将DFF内部寄存器清0,置位可将DFF内部寄存器置为1/0.

六、进位链(Carry Chain)

进位逻辑在FPGA中有着非常广泛的应用,其功能主要是实现二进制的加减法运算。在CLB中,以slice中执行快速算术加法和减法,进位链还可级联以形成更宽的加/减逻辑。(痛点)如果用普通LUT级联来实现加法器,进位信号需要逐级经过LUT和布线,延迟极大,速度极慢。

(方案)CLB内部设计了专用的硬连线进位链。进位信号不需要经过通用布线资源,而是直接在相邻的LUT/FF之间通过专用的高速通路传递。使得FPGA能够实现极高速度(几百MHz甚至GHz)的加法、减法、计数器和比较器运算。这是DSP应用的基础。

七、Distributed RAM / Shift Register

SLICEM中的LUT可以实现分布式RAM。SLICEM中的多个LUT也可以以多种方式组合,也就是说可以将多个CLB串联起来形成较大的存储器(分布式RAM),以存储更大数量的数据。适合小深度、大宽度的缓存。

SLICEM中的LUT还可以实现32位移位寄存器,而无需使用SLICEM中可用的触发器。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询