从底层结构开始学习FPGA(1)----可配置逻辑块CLB(Configurable Logic Block)

这篇具有很好参考价值的文章主要介绍了从底层结构开始学习FPGA(1)----可配置逻辑块CLB(Configurable Logic Block)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

        系列目录与传送门

        一、CLB概述

        二、SLICEM与SLICEL

        三、查找表LUT

        3.1、移位寄存器SRL

        3.2、分布式DRAM 

        四、多路选择器MUX

        五、存储单元Storage Elements(FF)

        六、进位链CARRY4


系列目录与传送门

        《从底层结构开始学习FPGA》目录与传送门


一、CLB概述

        我们可以用vivado打开一个器件的device视图:

从底层结构开始学习fpga,从底层结构开始学习FPGA,fpga开发,CLB,FPGA底层结构,SLICE,xilinx

        可以看到这些花里胡哨的五颜六色就分别代表了FPGA的底层硬件单元,主要有:可编程输入输出单元(IOB)、可编程逻辑单元(CLB)、时钟管理单元(MMCM/PLL)、BRAM、布线资源、内嵌的底层功能单元和内嵌专用硬件模块。其中最为主要的是可编程输出输出单元(IOB)、可编程逻辑单元(CLB)和布线资源

        而我们今天的主角可编程逻辑单元CLB则在上图中蓝色的若隐若现的位置,我们需要把它放大才能更好地观察:

从底层结构开始学习fpga,从底层结构开始学习FPGA,fpga开发,CLB,FPGA底层结构,SLICE,xilinx

       

        蓝色框中的就是CLB,同时也可以发现,CLB是由两个不的元素组成,这个元素我们称之为SLICE。

        如果把FPGA实现的电路看做是积木拼成的摩天大楼,那么CLB就是实现大楼的最基本元素--砖块。 但是我们盖楼不可能只使用一种砖块,同样的为了实现各种功能的电路,我们也要把CLB切成了更小的块以便灵活组合实现更复杂的电路。

        所以,CLB实际上是四种基本元素的集合----查找表LUT,进位链CARRY4,多路选择器Multiplexer以及存储单元FF。有了这四种基本元素后,我们就可以灵活组合实现各种时序逻辑和组合逻辑了。


二、SLICEM与SLICEL

从底层结构开始学习fpga,从底层结构开始学习FPGA,fpga开发,CLB,FPGA底层结构,SLICE,xilinx

        

        一个CLB是由2个SLICE组成的,SLICE根据其中的LUT6能实现的功能可以分为以下两种:

  • SLICEM(M:Memory):其内部的LUT可以读也可以写,可以实现移位寄存器和DRAM等存储功能,还可以实现基本的查找表逻辑
  • SLICEL(L:Logic): 其内部的LUT只可以读,只能实现基本的查找表逻辑

        CLB的组成可以是上图的1个SLICEM + 1个SLICEL,或者是2个SLICEL,但是不会是2个SLICEM 。一般情况下,CLB中比例SLICEL:SLICEM = 2:1。

        总结一下:1个CLB = 2个SLICE = 2 ×(4个LUT + 3个MUX + 1个CARRY4 + 8个FF),这就是CLB和SLICE的架构了。


三、查找表LUT

        本章节只是大概阐述,详细内容强烈推荐阅读:从底层结构开始学习FPGA----LUT查找表

        查找表Look-up Table,本质上就是1个6输入,64深度的ROM(SLICEM中的则是RAM,因为可读)。通过将所有结果保存在其内部,使用时通过由输入构建的地址线对其进行查找,从而实现6输入的函数逻辑。

        比如,你要实现功能:y = a | b ^ c & d & e & f。输入一共6个,可能的结果就是2的6次方64个,我把这64个结果全部存到LUT里,只要在使用的时候根据输入(也就是地址),拿出存在对应位置的结果就行了,这就是LUT实现各种函数的原理。

        需要注意的是SLICEM中的查找表,除了读功能外还具备写功能,这就使得其内部的LUT由一个ROM变成了一个RAM,这也是其实现移位寄存器功能和分布式DRAM功能的原因。


3.1、移位寄存器SRL

        本章节只是大概阐述,详细内容强烈推荐阅读:从底层结构开始学习FPGA----移位寄存器

        SLICEM可以在不使用触发器的条件下配置为32位移位寄存器(注意:只能左移)。这样,每个LUT可以将串行数据延迟1到32个时钟周期。移位输入D(LUT DI1脚)和移位输出Q31(LUT MC31脚)可以进行级联,以形成更大的移位寄存器。一个SLICEM的4个LUT6级联可以实现128个时钟周期的延时。多个SLICEM也可以进行组合。但SLICEM之间没有直接连接以形成更长的移位寄存器,在LUT B/C/D处的MC31输出也没有。由此产生的可编程延迟可用于平衡数据pipeline的时间。

        那这种 Shifter Register 可以用来做什么呢?Xilinx Guide 中也给出了回答:

  • Delay or latency compensation
  • Synchronous FIFO
  • content addressable memory (CAM)

3.2、分布式DRAM 

        本章节只是大概阐述,详细内容强烈推荐阅读:从底层结构开始学习FPGA----分布式RAM(DRAM,Distributed RAM)

        SLICEM 中的 LUT 除了用作移位寄存器外,还可以被配置为Distributed RAM(DRAM)。DRAM 的 write 是同步的,read 则是异步的。注意这里所说的同步异步不是跨时钟域的概念,而是类似于组合逻辑和时序逻辑的概念。可以理解为,write 是时序逻辑,只有在时钟有效沿且 write enable 为1时,数据才会被写入。而 read 则和时钟无关,只要地址有效,数据就会在当前周期输出。如果想要同步输出,我们可以自己在输出端加 register。

        DRAM的概念是相对于BRAM来说的,BRAM是FPGA底层的固有的硬件单元,而DRAM则是使用LUT配置而成的,其位置和使用会稍微灵活一些,但是也有其他不足,两者的使用需要权衡。

        DRAM可以分为以下几种:

  • Single-port:Write 和 Read 共享一组地址线。也就是说 write 和 read 不能同时进行。
  • Dual-port:一个 port 用来 write 和 read,另一个 port 只有 read。
  • Simple dual-port:一个 port 用来 write,一个 port 用来 read

四、多路选择器MUX

        本章节只是大概阐述,详细内容强烈推荐阅读:从底层结构开始学习FPGA----MUX多路选择器(Multiplexer)

        多路选择器MUX是一个多输入、单输出的组合逻辑电路,一个n输入的多路选择器就是一个n路的数字开关,可以根据通道选择控制信号的不同,从n个输入中选取一个输出到公共的输出端。

        在FPGA底层,MUX也是作为一种基本的逻辑单元而存在,每一个SLICE中有3个MUX:2个F7MUX(F7AMUX + F7BMUX) + 1个F8MUX,这三个MUX本质上都是一个2选一的多路选择器,其都是作为LUT的辅助而存在。

        每个SLICE中都有2个MUXF7,其输入只能为LUT6的输出,而输出只能接到MUXF8;每个SLICE中都有1个MUXF8,其输入只能为MUXF7的输出。


五、存储单元Storage Elements(FF)

        本章节只是大概阐述,详细内容强烈推荐阅读:从底层结构开始学习FPGA----存储单元之触发器、寄存器与锁存器

        Slice中的存储单元便是我们前面提到的寄存器FF,FF是实现时序逻辑最基本的单元。需要注意的是,这些FF中的一半还可以被配置为锁存器Latch,但是一旦被配置后,则剩余的一半FF就不能使用了,会造成一定的资源浪费。

        FF可以通过不同的控制集(时钟使能、复位方式、复位电平)来配置成不同形式的寄存器:

  • 异步复位(FDCE)
  • 异步置位(FDPE)
  • 同步复位(FDRE)
  • 同步置位(FDSE)

六、进位链CARRY4

        本章节只是大概阐述,详细内容强烈推荐阅读:从底层结构开始学习FPGA----进位链CARRY4

        CARRY4是一种超前进位的加法器(或者说减法器),是FPGA内部用来实现加减法运算的基本运算单元,但同时也可以实现一些其他的函数功能。每个CLB Slice都有一个专用的加法器CARRY4,可以实现两个4bit数的加减法运算。文章来源地址https://www.toymoban.com/news/detail-785716.html


到了这里,关于从底层结构开始学习FPGA(1)----可配置逻辑块CLB(Configurable Logic Block)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从底层结构开始学习FPGA(7)----进位链CARRY4

    文章目录 系列目录与传送门 一、半加器与全加器 1.1、半加器 1.2、全加器

    2024年01月17日
    浏览(40)
  • 从底层结构开始学习FPGA(4)----MUX多路选择器(Multiplexer)

            系列目录与传送门         一、什么是MUX         二、FPGA内部的MUX         

    2023年04月08日
    浏览(43)
  • 从底层结构开始学习FPGA(16)----PLL/MMCM IP的定制与测试

    目录 系列目录与传送门 1、PLL IP的定制 ①、第一页 ②、第二页  ③、第三页

    2024年02月02日
    浏览(62)
  • 从底层结构开始学习FPGA(6)----分布式RAM(DRAM,Distributed RAM)

    文章目录 系列目录与传送门 一、什么是RAM?什么是ROM? 二、块RAM和分布式RAM 2.1、BRAM

    2024年02月02日
    浏览(42)
  • 从底层结构开始学习FPGA(0)----FPGA的硬件架构层次(BEL Site Tile FSR SLR Device)

    《从底层结构开始学习FPGA》目录与传送门 Xilinx的FPGA,从硬件架构的角度可以划分为6个层次,从底层到顶层依次是: BEL(最底层单元) Site Tile FSR SLR Device(FPGA芯片) 接下来我们从最底层开始依次了解下各个层级。 BEL(Basic Element of Logic),即基本逻辑元素,是FPGA的最底层

    2024年03月20日
    浏览(47)
  • FPGA - 7系列 FPGA内部结构之CLB -02- CLB功能详解

    本文翻译自UG474第二章,主要对7系列FPGAs CLB结构进行详细介绍。这些细节对设计优化和验证很有帮助。 CLB 在 7 系列 FPGA 中按列排列。 7 系列是基于 ASMBL架构提供的独特柱状方法的第四代产品。ASMBL 架构 Xilinx 创建了高级硅模块块 (ASMBL) 架构,以支持具有针对不同应用领域优化

    2024年02月06日
    浏览(38)
  • FPGA - 7系列 FPGA内部结构之CLB -03- CLB相关原语以及应用

    本文节选UG474的第二章,进行整理翻译。CLB资源被FPGA综合工具自动有效地使用,不需要任何特殊的FPGA专用编码。一些HDL编码建议和技术可以帮助优化设计以获得最大效率。 这些指南是为有效使用7系列CLB的设计建议提供的快速核对表。7系列CLB的设计建议: 资源利用 使用通用

    2024年02月03日
    浏览(49)
  • Xilinx-7系列之可配置逻辑块CLB

    目录 一、概览 二、CLB结构 三、Slice内部结构 3.1 SliceM结构 3.2 SliceL结构 3.3 查找表LUT 3.4 多路复用器 3.5 存储单元 3.6 进位逻辑 四、应用 4.1 分布式RAM 4.2 ROM(只读存储器) 4.3 Shift Registers( 移位寄存器) 4.4 存储资源容量估算 五、参考资料     可配置逻辑块CLB(Configure Logic 

    2024年02月10日
    浏览(41)
  • 【从零开始学习Redis | 第八篇】认识Redis底层数据结构(下)

    目录 前言:   ZipList: Ziplist的特性: QucikList: QuicList特征: SkipList: 跳表特征: RedisObijct:  小心得: 总结:           在现代软件开发中,数据存储和处理是至关重要的一环。为了高效地管理数据,并实现快速的读写操作,各种数据库技术应运而生。其中,Redis作为一种

    2024年04月12日
    浏览(55)
  • JAVASE->数据结构|顺序表底层逻辑

    ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 目标: 1. 什么是 List 2. List 常见接口介绍 3. List 的使用 本章主要学习顺序表底层逻辑,大致是一样的,不差多少。 在集合框架中, List 是一个接口,继承自 Co

    2024年04月29日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包