Xilinx官方文档学习之7系列CLB资源解读(UG474)

2023-11-10 20:59

本文主要是介绍Xilinx官方文档学习之7系列CLB资源解读(UG474),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Xilinx官方文档学习之7系列CLB资源解读(UG474)

  • 一、写在前面
  • 二、CLB
    • 2.1 Slice(SliceM and SliceL)
      • 2.1.1 LUT
      • 2.2.2 触发器(Flip-Flop)
      • 2.1.2 DRAM(分布式RAM)
      • 2.1.3 移位寄存器
      • 2.1.4多路复用器
        • 4:1 MUX
        • 8:1 MUX
        • 16:1 MUX
      • 2.1.5进位逻辑
  • 三、写在后面

一、写在前面

  FPGA(Filed Programmable Gata Array)现场可编程门阵列,可以看作是一个积木套件,在这个积木套件里面,我们有很多种的基本模块,我们可以根据自己的想法去组装出来不同的物品,比如:别墅、轮船、飞机等。那么,不同的人根据自己想法组装出来的物品,即使是同一个东西,可能用的基础模块数量也不一致,但是我们依然可以看出两个人组装出来的物品是同一种物品。这时,用更少的基本模块搭建出来同一物品且可靠性一致的人,我们认为他积木玩的更好。

在这里插入图片描述

  那么,FPGA也是一样的,内部有很多基本单元构成,我们可以通过编写代码来告诉EDA软件,来组装能够实现我们所需要功能的硬件电路。而对于不同人,实现一个功能所用到的基本单元数量不一致,而使用更少的基本单元且时序上一致,我们认为这个更好。那么,FPGA的基本单元是什么?对于Xilinx公司的FPGA,其基本构成单元是可配置逻辑块(configurable Logic Block,CLB)。

二、CLB

  可配置逻辑块(Configurable Logic Block,CLB)是Xilinx FPGA中实现时序电路和组合逻辑电路的主要逻辑资源,每个CLB单元连接到一个交换矩阵,通过交换矩阵来选择CLB单元中的Slice单元。每个CLB单元由2个Slice单元组成,如下图。
在这里插入图片描述
  对于FPGA中的Slice单元,又分为SliceL和SliceM。有些CLB单元由两个SliceL单元组成,有些CLB单元则由1个SliceM和1个SliceL单元组成。SliceM除了基本的组合逻辑和时序逻辑功能以外,还可以用于实现RAM和移位寄存器。(Spartan-6系列FPGA中还有SliceX)。

2.1 Slice(SliceM and SliceL)

  每个Slice包含以下资源:

  • 4个LUT(Look-Up Table)
  • 8个触发器(Flip-Flop)
  • 宽多路复用器
  • 进位逻辑

  所有的Slice都有这些基本单元来提供逻辑、算术和ROM功能,另外,一些Slice还支持两个附加功能:构建分布式RAM和32-bit移位寄存器,这些Slice称为SliceM,其余的Slice称为SliceL。每个CLB单元有两个SliceL单元组成或者由1个SliceL和1个SliceM单元组成。SliceM和SliceL如下图所示。

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

2.1.1 LUT

  7系列的FPGA搭载的LUT为六输入的LUT,每个Slice中的4个LUT(可以作为函数生成器,输出A、B、C、D)各自有6个独立的输入(A1 ~ A6)和两个独立的输出(O5 ~ O6)。

  • 一个任意的6输入布尔函数
  • 两个任意的5输入布尔函数,只要这两个函数共享输入
  • 两个任意的3输入或者2输入甚至更小的布尔函数

  另外,对于Slice中的LUT单元,Slice还提供了3种多路复用器(F7AMUX、F7BMUX和F8MUX),这些多路复用器用于组合最多4个LUT,以在片中提供7输入的函数或者8输入的LUT。

  • F7AMUX:用于将Slice中的LUT A和LUT B组成1个7输入的函数(8输入的查找表);
  • F7BMUX:用于将Slice中的LUT C和LUT D组成1个7输入的函数(8输入的查找表);
  • F8MUX:用于将Slice中的所有LUT(LUT A、LUT B、LUT C、LUT D)组成一个8输入的函数(8输入的查找表);

  如果需要实现超过8个输入的LUT,可以通过多个Slice单元实现,但是在Slice之间没有像Slice内部一样,有固定的连线用于生成更大的LUT,这在FPGA布局布线时会根据设计进行布线。

2.2.2 触发器(Flip-Flop)

  每个Slice上有8个触发器,其中4个可以配置为边沿触发的D触发器或者电平敏感的锁存器。剩余的4个存储单元只能配置为边沿触发的D触发器。这里需要注意:当一个Slice中的4个触发器被配置为锁存器时,剩余的4个触发器将不能使用。也就是说,一个Slice中的触发器虽然支持配置为D触发器,也支持配置为锁存器Latch,但是并不能将一个Slice中的4个触发器配置为D触发器,4个触发器配置为锁存器Latch,一个Slice中的触发器只能配置为同一类型的器件,要么8个全部配置为D触发器,要么4个配置为锁存器,而剩余的4个不用。
在这里插入图片描述

2.1.2 DRAM(分布式RAM)

  SliceM中的LUT可以配置为分布式RAM,一个SliceM中的LUT可以以各种方式进行组合,从而实现更大的存储空间。1个SliceM可以通过配置实现以下规格的分布式RAM:

  • Single-Port 32 x 1-bit RAM
  • Dual-Port 32 x 1-bit RAM
  • Quad-Port 32 x 2-bit RAM
  • Simple Dual-Port 32 x 6-bit RAM
  • Single-Port 64 x 1-bit RAM
  • Dual-Port 64 x 1-bit RAM
  • Quad-Port 64 x 1-bit RAM
  • Simple Dual-Port 64 x 3-bit RAM
  • Single-Port 128 x 1-bit RAM
  • Dual-Port 128 x 1-bit RAM
  • Single-Port 256 x 1-bit RAM
    在这里插入图片描述
      分布式RAM配置包括以下几种:
    (1)单端口(Single Port):只有1个端口,既用于同步写,也用于异步读;
    (2)双端口(Dual Port):1个端口用于同步写和异步读,1个端口用于异步读;
    (3)简单双端口(Simple Dual Port):1个端口用于同步写,1个端口用于异步读;
    (4)四端口(Quad Port):1个端口用于同步写和异步读,3个端口用于异步读;
      在这里需要注意的是,上面列举一个SliceM可以构造的所有规格的DRAM,其中最大深度为256,如果要实现深度大于256的分布式RAM,则需要多个SliceM来形成更大的分布式RAM。

2.1.3 移位寄存器

  暂不做介绍。

2.1.4多路复用器

  7系列的每个Slice中提供3个固定的二选一数据选择器:F7AMUX、F7BMUX和F8MUX,另外,7系列中的单个Slice可以还可以实现以下几种规格的宽多路复用器:
(1)4选1数据选择器(4:1 MUX):使用1个LUT,每个Slice可以生成4个4选1数据选择器;
(2)8选1数据选择器(8:1 MUX):使用2个LUT,每个Slice可以生成2个8选1数据选择器;
(3)16选1数据选择器(16:1 MUX):使用4个LUT,每个Slice可以生成1个16选1数据选择器;

4:1 MUX

  Slice中的每个LUT可以配置为1个4:1的MUX,一个Slice单元最多可以实现4个4:1的MUX,如下图所示。
在这里插入图片描述

8:1 MUX

  每个Slice单元中有1个F7AMUX和1个F7BMUX,这两个二选一数据选择器和两个LUT组合可以构造1个8:1 MUX,一个Slice单元最多可以构造2个8:1 MUX,如下图所示。
在这里插入图片描述

16:1 MUX

  每个Slice单元中都有1个F8MUX,结合另外两个二选一数据选择器F7AMUX、F7BMUX和4个LUT,可以构造1个16选1数据选择器,如下图所示。
在这里插入图片描述

  对于大于16:1的数据选择器,可以通过多个Slice之间的LUT和二选一数据选择器进行构建,但是每个Slice之间没有固定的连线,需要根据设计在布局布线阶段进行布线。

2.1.5进位逻辑

  在7系列FPGA的Slice中,还提供了专用的超前进位逻辑,用于执行快速的加减法运算。每个Slice单元中的进位链有4级,对于每一级,都有1个进位多路复用器MUXCY和1一个异或门相连,用于选择加/减法操作的进位,如下图所示。
在这里插入图片描述

三、写在后面

  在这里,我们学习了CLB单元的基本构造,CLB单元主要由Slice单元组成,由于Slice分为SliceM和SliceL,所以CLB可以分为两种:

  • CLB(1):由2个SliceL组成;
  • CLB(2):由1个SliceL和1个SliceM组成;

  Slice均由4个LUT、8个Flip-Flop、多路复用器和进位逻辑组成,而SliceM和SliceL的主要区别在于LUT,SliceM的LUT支持配置为DRAM,SliceL的LUT则不支持。可以用一张图总结本节的知识,如下图。
在这里插入图片描述

  好了,上面就是关于Xilinx FPGA中CLB资源的一些学习笔记,如果有疑义的地方欢迎评论区友好探讨学习!!!!!
在这里插入图片描述

这篇关于Xilinx官方文档学习之7系列CLB资源解读(UG474)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385209

相关文章

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%