零基础学FPGA(八):可编程逻辑单元(基本结构,Xilinx+Altera)

这篇具有很好参考价值的文章主要介绍了零基础学FPGA(八):可编程逻辑单元(基本结构,Xilinx+Altera)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

日常·唠嗑

      在写这篇文章之前,对这个专栏做一个补充解释。本来按我之前的想法是,把这个专栏写成一个比较层次化,一层一层慢慢深入的系统化专栏。但是,在工作的时候,刚好在做某一件事,在这个时间段,对这个知识点比较深刻,所以就提前把这篇文章写了,导致此专栏可能没有按一步一步深入来写,会有些跳动,大家可以根据自己情况看文章。
      在写零基础学FPGA(六):FPGA时钟架构(Xilinx为例,完整解读)这篇文章的时候,稍微提了一下FPGA基本结构,但是由于主题不同,所以没有深入去讲。
      本篇文章,结合软硬件,讲一下FPGA基本结构。以Xilinx及Altera为例。
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

一、概述

      可配置逻辑模块是可编程阵列的重要组成部分,是FPGA的核心部分,占据FPGA大部分的芯片面积,可编程逻辑单元是其中的基本模块。

      基于查找表(Look Up Table,LUT)的可编程逻辑单元主要由以下几部分组成:两个四输入的LUT,两个进位逻辑,两个可编程触发器,还包含配置用的SRAM、信号产生模块以及控制逻辑等。

      每个可编程逻辑单元中还包含一个与门资源,用来实现有效的乘法运算。LUT从本质上来说是四位地址的16×1的RAM,每个地址存放一个数值。对于任何四输入的函数,都可以写出它的真值表,然后根据它的真值表在其寄存器中对应的位置存放为“1”和“0”。这样对应不同的输入地址就得到不同的结果。(有点像卡若图那样子)可以看看这篇文章:查找表(LUT)。

      其中四输入的LUT用来实现任意四输入的函数,通过两个LUT的组合可以实现任意五输入的函数,同时每个LUT还可以实现16×1的RAM和16×1的移位寄存器。进位逻辑可以实现快速的算术运算、级联函数生成器,同时也作为LUT输出函数与触发器资源之间的通道。函数生成器的输出可以直接当作模块的输出,也可以送入D触发器,然后通过D触发器输出。其中,可配置模块中的储存单元也是可以被配置的,它可以被配置成D触发器,也可以被配置成电平敏感的锁存器。可编程触发器的输入可以是函数生成器的输出也可以是其他信号直接短接函数发生器的输出。存储器还包括同步置位信号和复位信号。置位信号在配置过程中强迫存储单元回到初始化状态。复位信号使触发器变为与初始状态相反的状态,它与置位信号相反。这些控制信号也可以被配置成异步的使能信号。这些信号都是独立可以颠倒的,它们被一个可配置逻辑单元中的两个D触发器所共享。

      在这里,有一篇文章,非常值得大家阅读: 你的fpga为什么不能正常工作——拆解第一款FPGA芯片分析原理。
      笔者第一次看这篇文章,也大受震撼,仔细阅读,会有一种遨游在芯片海洋里的感觉,海洋里的每种生物都栩栩如生。🐟 🐳 🐋 🐬

文章部分截图:
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

二、基于多路选择器的逻辑单元

      可编程逻辑单元是FPGA中实现各种逻辑的核心,逻辑单元的选择对FPGA的芯片面积、速度性能、CAD工具的开发都有重要影响。
      J.Rosel等人在FPGA结构研究领域做了许多开创性的工作,他们引入并定义逻辑单元的功能度为逻辑单元可实现不同布尔函数的个数。随着逻辑单元功能度的增加,每个模块的引脚和面积将增加,而实现一个电路所需的模块总数相应减少,这将影响芯片中布线面积的比例。
      FPGA的可编程逻辑单元主要分为三大类:基于多路选择器(MUX)或其他基本门的逻辑单元,基于PLD(Programmable Logic Device,可编程逻辑器件)结构的逻辑单元和基于LUT逻辑单元。

1、基于多路选择器的逻辑单元(早期)

      FPGA较早的制造商之一Actel公司的FPGA产品主要采用基于MUX(多路选择器)的逻辑单元,时序电路也由该模块通过编程得到,采用一次编程的反熔丝(Anti.Fuse)编程技术。该公司的40MX中可编程逻辑单元结构如图所示。基于MUX的可编程逻辑单元的粒度较小、功能较弱不够灵活,但硬件面积较小,而且电路速度快。Actel公司的一些FPGA产品中(40MX/42MX等)主要采用了基于MUX的逻辑单元。
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

2、基于PLD结构的逻辑单元(类CPLD)

      以PLD为逻辑模块的CPLD在模块结构上与简单的PLD没有本质区别,基于PLD的基本模块如图所示。当然,商用CPLD器件一般还提供一些复杂的逻辑功能,如与平面共享输入端、输出可编程反相、可编程的触发器实现时序等功能。CPLD结构中的乘积项选择模块提供乘积项分配、共享、扩展的功能,是CPLD基本模块区别于简单PLD的主要特征,提高了CPLD与或阵列的灵活性。Altera的MAX系列和XilinX公司的XC7000/9500等系列都属于这种CPLD结构。
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

3、基于查询表的逻辑单元(目前主流)

      查找表类似于一个ROM,输入的查询表由2个SRAM单元组成,n个输入通过译码电路来决定从哪一个SRAM单元读出信息并送到唯一的输出端,而SRAM单元则按地址顺序记录函数的真值表。n输入的LUT可以实现任意n输入的逻辑函数。
      对于4输入的LUT,4个输入作为地址输入,存储的内容作为布尔代数的结果。所以,4输入的LUT可以实现任意四输入的布尔函数。当前两大主流的FPGA厂商Altera和Xilinx的高性能FPGA均采用基于查找表的可编程逻辑单元的结构。
      此可编程逻辑单元中还包含一个重要资源就是进位逻辑,其作用是方便加法器的实现。加法运算是FPGA设计中常用的功能,最常用且消耗资源最少的是行波加法器。这种加法器的关键路径(延时最大路径)在进位链上,因此为了提高加法器的工作频率,FPGA提供了专用的进位链。进位链贯穿了可编程逻辑阵列的每一行,以保证相互之间的连线最短,从而使加法器实现最短的关键路径,获得更高的工作频率。
      关于进位链,可以参考这篇文章:影响FPGA时序的进位链(Carry Chain), 你用对了么?,做FPGA开发的人,绕不开这东西的,涉及时序约束。
      在每个可编程逻辑单元中都有可编程的触发器资源,它可以根据用户需求配置成为锁存器或是上升沿触发以及下降沿触发的DFF。
与其他结构的FPGA相比,基于LUT结构具有以下的特点:

(1)逻辑分解简单。由于基于LUT结构的FPGA的可编程逻辑块都是同种类型的查找表,而k输入的查找表可以实现任意k个变量的布尔函数。因此对于电路中任意的不大于k输入并且单输出的子网络电路块均可以由一个k输入的LUT实现。在逻辑划分阶段,不必考虑特殊库单元的实现问题,只需将原始网图划分成不大于k的输入和单输出的子图就可以了。这样使得逻辑分解从一定程度上得到简化。

(2)工艺匹配简单。电路中任意的不大于k输入并且单输出的子网络电路块均可以由一个k输入的LUT实现。所以基于LUT结构的FPGA的工艺映射的工艺匹配阶段不存在选择特殊的库元素问题。

(3)通常是有输入限制的。由于k输入的LUT需要2k个单元来存贮函数的信息,当k取值增大时,LUT所需的单元数就会以指数特征上升。当k值取的较大时候,实现一个LUT所用的硅面积就会变得很大。同时较大的查找表将会影响查找时间,越大的查找表所需的查找时间也就越长。所以,通常k的取值不会超过5。在选择LUT输入数目时,要考虑面积和性能的平衡性。

三、Xilinx基本结构

Xilinx的官方文档在介绍FPGA的逻辑资源时通常是按照可配置逻辑块CLB(Configurable Logic Block)来介绍,把CLB作为FPGA里的最小逻辑单元。但是一个CLB是由2个slice构成,所以大家也常常把slice作为最小的逻辑单元。下面我们来介绍slice的组成:

V7系列FPGA的slice包含4个部分:

(1)LUT查找表,1个slice里包含4个6输入的查找表。

(2)存储单元,也就是常说的触发器,1个slice里包含8个触发器。每4个触发器为一组,可配置成D触发器或锁存器。

(3)多路复用器,也就是1位宽的数据选择器,数量非常多,足够使用。

(4)进位逻辑,它与本列的上下slice的进位逻辑相连,实现数据运算时的进位操作。

因此,许许多多的slice相结合,再加上全局时钟就能实现复杂的数字功能。另外,FPGA里的slice有2种,一种被称为sliceL,另一种被称为sliceM,有的CLB由2个sliceL构成,有的则是由1个sliceL和一个sliceM构成。SliceM除了基本功能外,可以实现RAM和移位寄存器的功能,这两种功能很有用,通过工具软件可以自动实现,不用咱们操心。
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
一个完整的slice:
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
两个slice组成一个CLB:

logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

讲完CLB跟slice,也许有人会问,那logic cells是什么:

      “logic cells” 是 Xilinx 创造提出来的一个市场说法,可以用来衡量不同内部结构甚至不同厂商的FPGA芯片的资源情况。(简单点理解,就是让你在行业里面有个统一的计量单位,让你能跟别的厂的芯片做对比)
      "logic cells"代表的是一个没有其他任何功能的4输入LUT,在老一些的Xilinx的FPGA中,他们使用LUT的数目乘以1.2来计算LC的数目,因为一个LUT中还有一个进位链和MUX,这样可以使一个LC比淡出的4输入LUT实现更多功能。

      在较新的FPGA中,Xilinx采用了6输入LUT,这时他们采用系数1.6。

      另外请记住一个LUT对应两个FF,也就是一个查找表对应两个寄存器。

具体的换算关系,可以看一下,下面这个图。

以XC7V585T为例:
LUT总数=Slices* 4=910504=364200
Logic cells总数=LUT
1.6=364200*1.6=582720

logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
见官方文档 ug474:
7 Series FPGAs Configurable Logic BlockUser Guide
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera

Xilinx 7系列芯片,在vivado软件上的视图:
完整芯片:
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
其中一个Bank:
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera
本节,因为时间问题,没有写的特别仔细,部分细节,可以看这篇文章进行补充:
浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))。

四、Altera 基本结构

Altera的基本结构参考这篇文章即可,写的不错:
FPGA中的基础逻辑单元–Altera。
Cyclone IV系列芯片,在Quartus ii软件上的视图:
完整芯片:
logic cells,零基础学FPGA,FPGA基本结构,逻辑单元,Xilinx,Altera文章来源地址https://www.toymoban.com/news/detail-789238.html

到了这里,关于零基础学FPGA(八):可编程逻辑单元(基本结构,Xilinx+Altera)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 可编程逻辑阵列PLA

    一、集成电路的发展和现状        随着电子技术的发展,人类社会已进入数字时代,数字系统广泛应用于计算机、数据处理、通信与测量等领域,在我们日常生活中起着越来越重要的作用。由于数字系统比模拟系统有更高的精确度和可靠性,以前用模拟系统完成的许多任务

    2023年04月08日
    浏览(40)
  • 可编程逻辑器件之数码管显示实验

    一、实验目标 能够熟练的进行可编程逻辑器件开发,能够通过具体工程需求进行需求分析、模块划分、代码编写、功能仿真、综合分析、板级验证,能够独立正确的进行实验操作,培养学生的工程实践研究能力和动手实践能力,具备借助可编程逻辑器件开发平台和仿真工具科

    2024年02月02日
    浏览(133)
  • 什么是 FPGA(现场可编程门阵列)?

    现场编程门阵列是一种由半导体材料制成的集成电路,用户购买后可以重新编程或配置,而不是单独由原始设备制造商(OEM)进行。 现场可编程门阵列 (FPGA) 是一种半导体器件,由与可编程互连相结合的可配置逻辑块 (CLB) 网格构成。制造完成后,FPGA 可以重新编程以满足特定

    2024年02月19日
    浏览(50)
  • 【ARM微控制器】STM32L486VGT6【FPGA】XC3S700A-4FTG256I现场可编程门阵列基本介绍

    STM32L486VGT6是超低功耗微控制器,基于高性能的 ARM®Cortex®-M4 32 位 RISC 内核,工作频率高达 80MHz。Cortex-M4 内核具有单浮点单元(SFPU)精度,支持所有 ARM 单精度数据处理指令与数据类型。同时执行全套 DSP 指令和存储保护单元(MPU),增强应用安全性。 核心处理器:ARM® Cort

    2023年04月09日
    浏览(46)
  • 钡铼技术集IO数据采集可编程逻辑控制PLC无线4G环保物联网关

    背景        数据采集传输对于环保企业进行分析和决策是十分重要的,而实时数据采集更能提升环保生产的执行力度,从而采取到更加及时高效的措施。因此实时数据采集RTU成为环保企业的必备产品之一。 产品介绍 在推进环保行业物联网升级过程中,环保RTU在环保方面发

    2024年02月03日
    浏览(47)
  • Verilog实现FPGA可编程电路中的RAM存储器

    Verilog实现FPGA可编程电路中的RAM存储器 在FPGA可编程电路的设计中,RAM存储器通常被广泛使用。而手写RAM存储器则可以提供更加灵活、高效的设计方案。本文将介绍如何使用Verilog语言来手写FPGA中的RAM存储器。 首先,我们需要确定RAM存储器的大小和宽度。假设我们需要实现一个

    2024年02月04日
    浏览(57)
  • XILINX XC7A200T-2FBG676C PLC可编程逻辑控制器

    FPGA, Artix-7, MMCM, PLL, 400 I/O, 628 MHz, 215360单元, 950 mV至1.05 V, FCBGA-676 XILINX Artix®-7 FPGA系列是一款高性价比FPGA,提供高性能/功耗比, 高收发器线路速率, DSP处理,集成AMS。该系列具有MicroBlaze™软处理器, 支持1066Mb/s DDR3,是成本和功耗敏感应用的最佳选择,例如软件定义无线电

    2024年02月07日
    浏览(48)
  • 7.【可编程串行接口8251A】:用处、内部结构、各引脚的解释、工作方式

    微机 内部的数据传送 方式为 并行方式 。 若外设采用串行方式,则微机与外设之间需加串行接口。 串行接口基本功能就是: 输入数据时,进行串/并转换;输出数据时,进行并/串转换。 Intel8251A是一种可编程的通用同步/异步接收发送器 各引脚的解释: A1即代表C/#D 8251A在工

    2024年02月09日
    浏览(51)
  • 7. 【可编程并行接口8255】:接口特点、结构、引脚、三种工作方式、控制字、方式0应用、设计简易安全报警系统

    基本输入/输出方式 (方式0) 选通工作方式 (方式1) 双向传送方式 (方式2) 相当于三个独立的8位简单接口,可输入或输出 各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出 C端口可以是一个8位的简单接口,也可以分为两个独立的4位端口 常用于

    2024年02月06日
    浏览(52)
  • DPU — 完全可编程网络

    类比的,完全可编程平台就像 “智能手机” 一样,手机(硬件)是一个平台,上面的 APP(业务)完全由用户自己决定。 完全可编程的原则: 软件定义一切,硬件加速一切。 业务逻辑可实现。 抽象硬件,编程接口统一。 但实际上,目前的 DPU 产品仍处于 “功能机” 的阶段

    2023年04月08日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包