FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)

这篇具有很好参考价值的文章主要介绍了FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文首先对 ASIC 和 FPGA 进行了一个对比,然后介绍了 FPGA 的基本结构,最后解释了 FPGA 实现可编程的基本原理。

ASIC vs. FPGA

这里先给出 ASIC 和 FPGA 的优缺点

ASIC FPGA
优点 性能优越
可靠性高
大批量下单位成本低
开发初期无投入资金壁垒
设计工具使用方便,设计简单快速
产品原型机开发时间短
管脚定义灵活,便于PCB布板
随时进行硬件功能设计修改
缺点 开发周期长:设计工具及设计流程复杂,快速进入市场的压力大
功能固定,不利修改和扩展
NRE费用高
设计工具及开发人员昂贵
单位成本高
可靠性低/功耗大
性能低
用途 设计规模大,复杂度高的芯片
成熟度高,产量大的产品
要求快速迭代或者小批量产品
作为ASIC的算法验证加速

FPGA 基本结构

基本介绍
可配置逻辑块 (Configurable Logic Block, CLB) 主要的逻辑资源,可用于实现组合逻辑、时序逻辑和存储单元,具体后面再介绍
可编程 I/O 模块 (Programmable I/O Block, IOB) 芯片与外部的接口,用于不同电气特性输入/输出信号的驱动和匹配,具体后面再介绍
可编程互连 (Programmable Interconnect) 用于 CLB 之间或 CLB 和 IOB 之间进行互连,具体后面再介绍
配置存储器 (Configuration Memory) 通过写配置存储器实现系统功能,如CLB实现的逻辑、CLB之间的互连、CLB和IOB之间互连,用户不可见,具体后面再介绍
Block RAM 增加片上存储资源,通过IP核方式调用,可用于实现单端口RAM、双端口RAM、FIFO等
专用 DSP 模块 如加法器、乘法器、累加器
嵌入式处理核 软核和硬核,Xilinx 的 ZYNQ系列上就集成了 ARM 硬核
外设接口 PCI-E接口、Ethernet结构等

FPGA 基本原理

下面是 CLB、IOB、Programmable Interconnect 和 Configuration Memory 的一个示意图,这四者共同实现了 FPGA 可编程的特点。

clb和iob,数字IC设计,fpga开发

CLB 是 FPGA 的主要逻辑资源,可用于实现组合逻辑、时序逻辑和存储单元。

IOB 是芯片与外部的接口,可以提供输入输出信号

通过往配置存储器中写入不同的内容,可以实现CLB的逻辑、CLB之间的互连、CLB和IOB之间互连,从而实现不同的功能。配置存储器对用户来说是不可见的

每个 CLB 由 1 个或 2 个 Slices 组成,Slices 有 SliceL 和 SliceM 这两种类型,下图是一个 SliceL 的结构图,其主要由查找表LUT、进位链和存储元素三部分组成。

clb和iob,数字IC设计,fpga开发

查找表(LUT)

实现组合逻辑

对于一个 n n n 输入的逻辑运算,不管是与、或、非运算还是异或运算,输入最多只有 2 n 2^n 2n 种组合情况,因此最多只可能存在 2 n 2^n 2n 种结果,如果事先将相应的结果存放于一个存储单元,就相当于实现了组合逻辑运算电路的功能,下图是使用一个三输入的LUT来实现 y = ( a & b ) ∣ ! c y=(a\&b)|!c y=(a&b)!c 的示意图

clb和iob,数字IC设计,fpga开发

Xilinx 7系列的FPGA采用6-输入LUT结构,可以实现任意6-输入逻辑功能(比如,4选1的多路选择器)

如果要实现更多输入的逻辑功能,就需要将多个LUT合在一起使用,这时候就需要用到多路选择器进行连接,我们从下面的 Slices 结构图可以看到有三个多路选择器将4个LUT拼接起来,可以实现任意8-输入的逻辑功能或者16选1的多路选择器

clb和iob,数字IC设计,fpga开发

为什么4个6输入的LUT只能实现任意8-输入的逻辑功能?可以这么理解,想要实现任意 n n n-输入的逻辑功能,那就需要 2 n 2^n 2n 个存储单元,由于4个6输入的LUT只有 4 ⋅ 2 6 = 2 8 4\cdot 2^6=2^8 426=28 个存储单元,因此只能实现任意8-输入的逻辑功能。举一个例子进一步解释,比如输入信号为 [ 7 : 0 ]  input [7:0]\text{ input} [7:0] input,可以令 AX 和 CX 等于 input [ 6 ] \text{input}[6] input[6](AX和CX是选择信号,详情见上面的 Slices 结构图),令 BX 等于 input[7] \text{input[7]} input[7],令这 4 个 LUT 的输入均为 input[5:0] \text{input[5:0]} input[5:0], 4 个 LUT 的存储单元中依次写入 input \text{input} input 等于 8’b00xxxxxx、8’b01xxxxxx、8’b10xxxxxx 和 8’b11xxxxxx时的结果

为什么4个6输入的LUT可以实现16选1的多路选择器?1个LUT可以实现1个4选1的多路选择器,4个LUT便可以实现4个4选1的多路选择器,4个由LUT实现的4选1的多路选择器,再加上上图中圈出来的3个2选1的多路选择器,便可以实现16选1的多路选择器

实现DRAM

上面讲的都是 SliceL,SliceM的不同点在于,它的LUT提供了写端口,包括写地址、写使能和写数据,所以我们可以访问 LUT 的存储单元,从而将 LUT 作为 RAM 使用,如下图所示

clb和iob,数字IC设计,fpga开发

基于LUT实现的RAM,称之为 DRAM(Distributed Random Access Memory)

BRAM 和 DRAM 的区别如下:

  1. Block RAM是内嵌的专用RAM,而Distributed RAM需要消耗珍贵的逻辑资源(SLICEM)组成
  2. Block RAM具有更高的时序性能,而Distributed RAM由于分布在不同的位置,延迟较大
  3. Distributed RAM的使用更灵活
  4. 较大容量的存储部件,用Block RAM
  5. 零星小容量的存储部件,用Distributed RAM

进位链

用于实现超前进位加法,代码中的加法逻辑会使用进位链实现,用于提高加法器、减法器和比较器的速度

一个CARRY4模块支持4位加法,其原理图如下所示

clb和iob,数字IC设计,fpga开发

通过级联可以支持更多位宽的加法

存储元素

其结构如下所示,这部分用于实现触发器或者锁存器,配合 LUT 和进位链可以实现时序电路

clb和iob,数字IC设计,fpga开发

一个6-输入的LUT最多可以生成8个触发器,可以是同步复位或者异步复位,有关类型如下表所示

复位类型 原语 行为
异步复位 FDCE 复位后Q输出0
FDPE 复位后Q输出1
同步复位 FDRE 复位后Q输出0
FDSE 复位后Q输出1

一个6-输入的LUT最多可以生成4个锁存器,异步复位,有关类型如下表所示文章来源地址https://www.toymoban.com/news/detail-829981.html

复位类型 原语 行为
异步复位 LDCE 复位后Q输出0
LDPE 复位后Q输出1

到了这里,关于FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

    文章目录         系列目录与传送门         一、CLB概述         二、SLICEM与SLICEL         三、查找表LUT         3.1、移位寄存器SRL         3.2、分布式DRAM          四、多路选择器MUX         五、存储单元Storage Elements(FF)         六、进

    2024年02月02日
    浏览(34)
  • 阿里云培训-负载均衡(CLB/ALB)

    传统型负载均衡CLB(Classic Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。CLB扩展了应用的服务能力,增强了应用的可用性。 CLB通过设置虚拟服务地址,将添加的同一地域的多台ECS实例虚拟成一个高性能和高可用的后端服务池

    2024年02月02日
    浏览(29)
  • 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日
    浏览(29)
  • 如何将弹性公网IP绑定到负载均衡CLB

    创建的CLB实例为私网类型,没有公网IP,无法通过公网访问,如果需要让其网站能够通过公网访问,只需要绑定前面创建的EIP即可。 第一步 如果弹性公网IP已经绑定了资源,需要先解绑 第二步 将私网CLB实例绑定到弹性公网IP 第三步 测试绑定后是否能够通过弹性公网IP访问到

    2024年02月03日
    浏览(36)
  • 阿里云SLB负载均衡ALB、CLB和NLB有什么区别?

    阿里云负载均衡SLB分为传统型负载均衡CLB(原SLB)、应用型负载均衡ALB和网络型负载均衡NLB,三者有什么区别?CLB是之前的传统的SLB,基于物理机架构的4层负载均衡;ALB是应用型负载均衡,7层负载均衡;NLB是网络型负载均衡,基于NFV虚拟化平台的4层负载均衡。阿里云百科来

    2024年02月14日
    浏览(32)
  • FPGA中的LUT查找表工作原理。

    在RAM中填入1110,后续的不同AB组合选通对应RAM,Y输出对应RAM存储的值,实现上面逻辑表达式的功能。

    2024年02月07日
    浏览(28)
  • FPGA原理与结构(7)——进位链CARRY

    系列文章目录:FPGA原理与结构(0)——目录与传送门         进位链CARRY在FPGA中本质上就是解决加减法进位问题的元器件,在学习进位链之前,我们需要对数字电路的加减法做一个简单的回顾。 1.1半加器         在学习组合电路的时候,半加器作为一个非常经典的电路设

    2024年02月06日
    浏览(28)
  • FPGA结构:LUT(查找表)和 MUX(多路选择器)介绍

    如果你想学习有关FPGA的专业术语,可以参考这一篇:FPGA专业术语介绍 一句话概括,通过将函数的真值表存放在少量内存单元中来实现组合逻辑电路功能的模块称为LUT。 这里以简单的一个3-LUT(3输入查找表)为例,以下给出其示意图的简化描述: 输入1 ----┐ 输入2 ----┼---

    2024年02月04日
    浏览(37)
  • FPGA原理与结构(2)——查找表LUT(Look_Up_Table)

    系列文章目录:FPGA原理与结构(0)——目录与传送门 目录 一、查找表(LUT)概述 二、LUT的性能权衡 1、面积效率 2、速度问题 3、权衡结果  三、LUT的组成与应用 1、LUT的组成         2、LUT的应用 3、LUT应用拓展  本文参考xilinx官方手册ug474:ug474         LUT是CLB的重要组成

    2024年02月08日
    浏览(25)
  • FPGA基础设计(八):串口收发之RAM存储

    实现上位机通过串口发送数据到FPGA,FPGA接收到数据后将其存储在RAM的一段连续空间中,然后通过按键触发读出RAM数据,再通过串口发送到上位机。 1、串口接收模块; 2、按键消抖模块 3、创建RAM IP核模块 4、RAM IP核控制模块; 5、串口发送模块。 前面已经设计好了串口发送模

    2024年02月03日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包