首页 > 其他分享 >7系列可配置逻辑块(7 Series Configurable Logic Block,CLB)

7系列可配置逻辑块(7 Series Configurable Logic Block,CLB)

时间:2024-10-28 13:17:58浏览次数:8  
标签:Slice LUT FPGA Series CLB Configurable SLICEL SLICEM

背景

先前接触到的第一个FPGA架构相关的知识便是,
可配置逻辑块Configurable Logic Block,CLB),基于Xilinx的7系列FPGA,现在回过头来重新回顾一下。

系列目录与链接

基于Xilinx的7系列FPGA,笔者在对CLB进行学习、研究时,归纳并总结出了以下博文:
1、分篇1:《7系列 之 查找表(Look-Up Table,LUT)》
2、分篇2:《7系列 之 存储单元(Storage Elements)》
3、分篇3:《7系列 之 多路复用器(Multiplexers)》
4、分篇4:《7系列 之 进位逻辑(Carry Logic)》
5、分篇5:《7系列 之 分布式RAM(Distributed RAM)》
6、分篇6:《7系列 之 7系列 之 移位寄存器(Shift Registers)》
7、总纲 :《7系列 之 可配置逻辑块(7 Series Configurable Logic Block,CLB)》

说明1:本系列基于文档文档《ug474_7Series_CLB.pdf》而写,翻译和感悟,会出现中英文混合的情况。
说明2:虽然文中会出现一些原文的部分截图,但非常支持并推荐道友们去看原汁原味的官方文档
说明3:在查阅相关资料过程中,发现一些关于相关知识点的介绍零零散散,本系列会对其进行整合,力求详尽。
说明4:如果文章有误,欢迎道友们指出、讨论,笔者也会积极改正,希望一起进步!


文章目录


1 ··· CLB的构成

2 ··· CLB的Device视图

笔者用Vivado打开了一个设备名为 xc7a100tfgg676-2 (active) 的Device视图,从Device视图的角度对CLB进行了直观的观察,截取了两个左右相邻的CLB视图,如下所示。

在这里插入图片描述
上图可知,CLBLM_L_X20Y78是由SLICE_X30Y78(SLICEM)和SLICE_X31Y78(SLICEL)构成。

在这里插入图片描述
上图可知,CLBLM_R_X21Y78是由SLICE_X32Y78(SLICEL)和SLICE_X33Y78(SLICEL)构成。

总结下就是:在7系列中,CLB是由一个SLICEM和一个SLICEL,或者是由两个SLICEL构成。

3 ··· SLICEL 与 SLICEM

  • SLICEL结构:
    在这里插入图片描述
  • SLICEM结构:
    在这里插入图片描述

由上述两个图可以看出,SLICEM和SLICEL的大体结构相同。但是,SLICEM中每个LUT6的输入多了一个DI信号,并且CE信号中引入了WE控制。(两者区别,笔者并未在图中标出,不过仔细对比下两者的结构示意图,还是可以看出来的。)

同时,继续放大 xc7a100tfgg676-2 (active) 在Vivado的Device视图并对比,可以发现SLICEM和SLICEL在Device视图上明显的区别就在于两者的LUT有所不同。
在这里插入图片描述
上图,是对 SLICE_X30Y78(SLICEM)的Device视图中的LUT6放大截图。

在这里插入图片描述
上图,是对 SLICE_X31Y78(SLICEL)的Device视图中的LUT6放大截图。

将上述两种LUT的结构进行对比,可得:
1、 相同点:都具有地址输入线(A1-A6),两个输出口(O5-O6)。
2、不同点:SLICEM的LUT6具有写地址输入线(WA1-WA8),写数据端(DI1 DI2),写使能端(WE),而SLICEL的LUT6没有。

这是由于以上的不同,才使得:
SliceL的LUT只具有存储数据的能力,只能作为ROM使用;
而SliceM的LUT还具备了数据写入的功能,可以作为分布式RAM移位寄存器使用。

4 ··· ASMBL 结构

在这里插入图片描述
7系列FPGA 的CLB是按列排列的,是基于ASMBL™体系结构的第四代。

Advanced Silicon Modular Block (ASMBL):高级硅模块
Xilinx创建了高级硅模块(Advanced Silicon Modular Block,ASMBL)体系结构,使FPGA平台具有针对不同应用领域优化的不同功能组合。下图提供了基于列的不同类型的资源描述。

在这里插入图片描述
ASMBL通过使用独特的基于列的结构,实现了支持多专门领域应用平台的概念。每列代表一个专门功能的硅子系统,如逻辑资源,存储器,I/O,DSP处理,硬核IP和混合信号等。xilinx公司通过组合不同的功能列,组装成面向特定应用类别的专门FPGA(与专用不同,专门是指一项单一的应用)。典型的有逻辑密集型、存储密集型和处理器密集型等。例如,用与图像处理的处理器密集型芯片可能就包含有比较多的DSP功能列。

ASMBL架构突破了传统的设计障碍:

  • 消除几何布局约束,如 I/O count 和 array size 大小之间的依赖关系。
  • 通过允许电源和接地被排列在芯片上的任何位置,增强了芯片电源和接地分布。
  • 允许不同的集成IP块独立于彼此和周围资源进行扩展。

这部分说了很多,其实就是一句话:CLB在xilinx 7系类FPGA中根据ASMBL架构按列排布。

5 ··· CLB Slices 排布

一个CLB元素包含两个Slice(两个SLICEL,或者是,一个SLICEL和一个SLICEM),

  • SLICE(0) — 在CLB的左侧且靠近底部的位置上。
  • SLICE(1) — 在CLB的右侧且靠近顶部的位置上。

同一个CLB中的2个Slice之间没有直接的连接,
每个Slice为一列,且每列中的每个Slice都有一个独立的进位链。(可以从ASMBL架构图中体会下)

在这里插入图片描述

Xilinx工具使用以下定义来标明Slices:

  • “X”后面的数字,表示Slice的列位置。“X”数从数字序列的底部开始计数,0、1(表示第一个CLB列);2、3(表示第二个CLB列);从左到右,不同列的Slice(或CLB)的X值不一样,且从0开始递增。
  • “Y”后面的数字,一个数字表示Slice的一行,即行数。在同一CLB中,这个数字是不变的;从底部的CLB开始计数的开始,即从左到右,不同列的CLB的X值不一样,且从0开始递增。

“在之前我们在vivado中通过device直接观察时感觉似乎Slice之间是一左一右对称的形式存在的,但是在实际的硬件中却有所不同(device里只是示意图)”(《FPGA原理与结构(1)——可配置逻辑块CLB(Configurable Logic Block)》)

6 ··· CLB 总结

在这里插入图片描述
7系列可配置逻辑块(Configurable Logic Block,CLB)可以提供高级的、高性能的FPGA逻辑:

  • 六输入查找表
    ( 每次看这个文档的时候,都感觉很多人把 “Real” 翻译成 “真的” 有点刻意了,细品之下,感觉翻译成 “实际的” 可能会更好,虽然意思差不多。)
  • 双五输入查找表选项
    ( Dual,中文意思:adj,双的;双重的;二重的;两部分的;n,对偶;双数。笔者的理解是,这里可以简单认为,一个Lut6的功能可以通过两个Lut5通过级联组合而来。)
  • 分布式存储和移位寄存逻辑能力
  • 用于算术功能的专用高速进位逻辑
  • 高效利用的宽多路复用器

在这里插入图片描述
CLB是实现时序电路和组合电路的主要逻辑资源。
每个CLB单元包含一对Slice,并引出逻辑连线至开关矩阵(Switch Matrix,作为布线资源),
同时还包含着算术进位逻辑的功能(CIN,COUT,进位输入和输出)。

在这里插入图片描述

7 ··· 7系列FPGA设备中的资源

在这里插入图片描述

  • 器件容量通常用逻辑单元来衡量,逻辑单元相当于一个经典的四输入LUT和一个触发器。7系列FPGA中的CLB有六输入LUT、大量的触发器和锁存器、进位逻辑,以及在SLICEM中创建分布式RAM或移位寄存器的能力,增加了有效容量。逻辑单元与六输入LUT的数量比为 1.6 :1 。

  • 7 Series FPGA CLB Resources
    表格1-1至1-4展示了Spartan®-7、Artix®-7、Kintex®-7 和 Virtex®-7等FPGA的可用CLB资源。

在这里插入图片描述在这里插入图片描述
一个LUT6可实现64x1bit的分布式RAM,则
一个SliceM可实现的容量为464 bit=256bit,4个SliceM可实现4256bit=2^10bit=1Kb。
以7A12T为例,如果要实现 171kb 的 Distributed RAM,则需要 171*4 个SliceM。
因此,SliceM的数量为分布式RAM容量的大小的4倍。

在这里插入图片描述
换个角度,继续以7A12T为例,
Slices = SLICEL + SLICEM => 2000 = 1316 + 684
SLICEL ~ 2 * SLICEM => 1316 ~ 2 * 684
6-input LUTs = Slices * 4 => 8000 = 4 * 2000
SLICEM 中的LUT数量为:684 / 2000 * 8000 = 2736
SLICEM 中的LUT容量为:2736 * 2^6 / 1024 = 171 kb,正好对应了 Distributed RAM 的数量。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 注:
    1.每个7系列FPGA的Slice包含4个LUT和8个触发器。
    – 只有SLICEMs能将自身的LUTs用作为 distributed RAM 或 SRLs.
    2.设备中的Slice的数量对应着LUT与触发器的数量。

  • 综合上述,SliceM、 LUT6、Distributed RAM、Shift Register 和 Flip-Flops 之间的数量存在一定的联系,是可以相互推导。

8 ··· Recommended Design Flow

  • 官方推荐的设计流程
    1、CLB触发器同时有 set 和 reset,但设计者不能同时使用 set 和 reset 。
    2、触发器的数量充足,应该考虑使用流水线来提升性能。
    3、控制类输入信号在一个Slice或者CLB中是会被共用的,所以设计中的独特的控制类输入数量应该最小化。控制输入信号包括时钟、时钟使能、置位/复位信号,和写使能。
    4、一个6输入LUT可以被用作为一个32位移位寄存器来提高布线效率。
    5、一个6输入LUT可以被用作为一个64x1的分布式存储,用于满足小规模存储需求。
    6、专用进位逻辑可高效地实现算术功能。

  • 设计指南
    1、CLB的FF只能使用Set或Reset一种,不能在设计中同时使用Set和Reset。
    2、FF数量充足,可以考虑利用流水线提升设计性能。
    3、在CLB的不同资源共用控制信号,在设计中尽量减少不同控制信号的使用。控制信号包括时钟,时钟使能,Set/Reset和写使能。
    4、为了利用LUT实现移位寄存器,避免在移位寄存器中引入复位信号。
    5、对于少量的存储需求,考虑使用LUT。
    6、标准的数学函数可以利用进位逻辑高效实现。

参考文献

1、《ug474_7Series_CLB.pdf》
2、《FPGA原理与结构(1)——可配置逻辑块CLB(Configurable Logic Block) 》
3、《【UG474】可配置逻辑块(configurable logic block,CLB)资源学习》
4、《从底层结构开始学习FPGA(3)----存储单元之触发器、寄存器与锁存器》
5、《浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))》
6、《FPGA从入门到精通(6) - 存储单元&CLB总结》

标签:Slice,LUT,FPGA,Series,CLB,Configurable,SLICEL,SLICEM
From: https://blog.csdn.net/UmbrellaCorporation/article/details/140801986

相关文章