FPGA结构:LUT(查找表)和 MUX(多路选择器)介绍

这篇具有很好参考价值的文章主要介绍了FPGA结构:LUT(查找表)和 MUX(多路选择器)介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

FPGA 系列文章

  • 如果你想学习有关FPGA的专业术语,可以参考这一篇:FPGA专业术语介绍


一、LUT(查找表)是什么

一句话概括,通过将函数的真值表存放在少量内存单元中来实现组合逻辑电路功能的模块称为LUT。

这里以简单的一个3-LUT(3输入查找表)为例,以下给出其示意图的简化描述:

输入1 ----┐
输入2 ----┼---- 3-LUT ----> 输出
输入3 ----┘

以下是 3-LUT 的真值表:

输入1 输入2 输入3 输出
0 0 0 INIT
0 0 1 INIT
0 1 0 INIT
1 0 0 INIT
1 1 0 INIT
1 0 1 INIT
0 1 1 INIT
1 1 1 INIT

即使是再复杂的3位以内输入,1位输出的门电路,都会存在一张真值表,通过修改 3-LUT 的INIT值,3-LUT的真值表可以包含所有3位以内输入,1位输出的门电路的真值表。依此类推,通过修改 X-LUT的INIT值,X-LUT可以表示所有X位以内输入,1位输出的门电路,二者实现的功能是相同的。在 FPGA中,只要逻辑表达式是6位以内输入1位输出,综合后的结果通常都会是一个6-LUT。对于更多位的输入,FPGA会采用级联6-LUT的方式实现,具体方法会在后文叙述。

为什么FPGA会选择使用LUT代替传统门电路实现?

这主要是由于传统门电路存在的一些缺点:

  • 传统门电路的复杂度与输入逻辑变量的个数有关。输入逻辑变量的个数越多,逻辑函数的组合和变化就会更多,这会增加电路的复杂度。

  • 逻辑门的延迟与传输线的延迟不可避免。复杂的门电路通常包含更多的逻辑门和信号路径,因而延迟较大。将延迟不相同的逻辑电路直接拼接在一起可能会导致电路的时钟频率下降,并引起时序相关问题。

使用LUT不会存在上述的问题,因为LUT本质上是一个RAM。它将输入数据作为RAM的地址,然后通过该地址找到对应的值,将该值作为结果输出。当输入变量为0、0,1时,就会将LUT中地址为0、0,1的存储单元中设定的INIT值输出,依此类推,每一次查找的延迟都是固定的。

除此之外,统一使用LUT的方式还使得FPGA具有灵活性和可重构性等优势。因此,FPGA会选择使用LUT代替传统门电路实现。

为什么大部分的FPGA会选择使用 6-LUT 而非其他LUT?

在决定逻辑块的结构时,除了查找表的输入大小之外,评测所用的面积模型,延迟,制程也是重要的考量因素。20世纪90年代初曾有研究表明,对查找表的输入数量进行架构探索,4输入查找表最为高效。在之前的商用FPGA中,Xilinx公司的Virtex 4和Altera公司的Stratix也都一直使用4输入查找表。

但在2004年,出现了基于CMOS 0.18 μm 1.8V 制程的新的评测结果(这里是论文链接)。论文的评测过程为:先进行晶体管级别的全定制设计,再通过SPICE仿真计算延迟。对 28 种基准电路布局布线后所得的平均数据表明,查找表输入等于5或6时面积和速度方面的性能最好。对于低功耗或资源受限的嵌入式应用,5-LUT是一种合适的选择,但由于 6-LUT 具备更高的逻辑密度,最近的商用 FPGA 都倾向于采用 6-LUT

这里以论文给出的表格为例,其能形象表明查找表的输入数与面积与延迟的关系:

mux多路,fpga开发,fpga,硬件架构
mux多路,fpga开发,fpga,硬件架构

LUT的其他用途:存储器

上文提到,LUT本质上是一个RAM。当逻辑块实现组合逻辑电路时,查找表中存储的真值表就可以作为小规模的存储器。通常来说,FPGA不可能将所有的查找表都用来实现组合逻辑电路。因此,利用查找表为用户电路实现存储器,既能实现芯片内部的存储功能,又能提高硬件资源使用率。

在Xilinx的FPGA架构中,只有SLICEM的逻辑块里的查找表才能被用作存储器,由查找表构成的存储器称为分布式RAM。分布式RAM能够实现异步访问,但如果使用分布式RAM实现大规模存储器,那么实现逻辑的查找表就会变少。因此,建议仅在需要小规模存储器时使用这种实现方法。

二、MUX(多路选择器)是什么

一句话概括,MUX 是一种从多个输入信号中选择单个输出信号的组合逻辑电路。

在FPGA内部,MUX的实现方式主要有两种,一种是使用LUT实现,另一种是直接使用MUX基本逻辑单元实现,以下是使用6-LUT实现MUX4:1(4输入多路选择器)的方式,它将6个输入分为两组,4个输入(C0,C1,C2,C3)作为输入信号,另外两个输入(S1,S2)作为输入地址:

mux多路,fpga开发,fpga,硬件架构
以下是它的真值表:

输入1(C1) 输入2(C2) 输入3(C3) 输入4(C4) 地址1(S1) 地址2(S2) 输出(z)
X1 X2 X3 X4 0 0 X1
X1 X2 X3 X4 0 1 X2
X1 X2 X3 X4 1 0 X3
X1 X2 X3 X4 1 1 X4

当输入信号大于4时,一个6-LUT就不够用了,这时候会用到FPGA内部的MUX基本逻辑单元,具体方法会在后文叙述。

既然MUX可以由LUT表示,那为什么在fpga中保留MUX这个基本逻辑单元呢?

这主要是由于成本问题。MUX在数字电路中的使用频率很高,且MUX基本逻辑单元相较于6-LUT晶体管较少,所以MUX在这方面有着巨大的优势。

在SLICEL中,LUT与MUX的资源分布大概长这样:

mux多路,fpga开发,fpga,硬件架构

这种资源分布所带来的的一大好处就是可以使得整体的结构具有对称性。对称性保证了各个模块之间走线的延迟趋于一致,从而能够避免很多时序上的问题。

三、有关LUT和MUX的一些逻辑电路

6-LUT

6-LUT 是由两个5-LUT和一个MUX2:1构成的,以下是该电路的具体结构,当输出的信号数量为1时,一般会使用O6作为输出信号:

mux多路,fpga开发,fpga,硬件架构

这里由于真值表太大就不贴出来了,但通过修改两个5-LUT的INIT值,最终该电路能实现6-LUT的功能。依此类推,可以通过多个6-LUT与MUX的级联实现X-LUT(X>7),这种级联结构在 FPGA 架构中是很常见的。

有趣的一点是,假设将上面电路的A6置为1,那么该电路和下面的电路等效:

mux多路,fpga开发,fpga,硬件架构

因此, 6-LUT实际上可以实现两个功能:

  • 表示所有6位以内输入,1位输出的门电路

  • 表示所有5位以内输入,2位输出的门电路

由于第二个功能的存在,在 FPGA中,对逻辑表达式是5位以内输入2位输出的电路进行综合,结果也有可能会是一个6-LUT

MUX16:1

MUX16:1可以由4个6-LUT和3个MUX2:1构成,以下是该电路的具体结构:

mux多路,fpga开发,fpga,硬件架构

在该电路中,不使用6-LUT代替MUX的原因有二,除了上文提到的成本问题,还有一个原因就是这样做会产生延迟,以下是不使用6-LUT代替MUX(红色)和使用6-LUT代替MUX(蓝色)的走线示意图:

mux多路,fpga开发,fpga,硬件架构

可以看到,使用6-LUT代替MUX后的走线明显要长,这会带来时序问题。实际上,FPGA这样布局的原因也是为了鼓励开发者使用LUT与MUX组合的方式实现高位数的多路选择器。

专用进位逻辑

为了提高算术运算电路的性能,商用FPGA的逻辑块中含有专用的进位电路。虽然只用查找表也可以实现算数运算,但采用专用进位逻辑可以获得更高的集成度和运算速度。

这里以Xilinx公司 FPGA 的专用进位逻辑为例,Xilinx 使用了LUT和MUX组合的方式来实现加法。全加器的加法运算(Sum)使用两个 2 输入 EXOR 组成,而进位输出(Cout)电路由1个EXOR 和MUX组成。之前提到,X-LUT可以表示所有X位以内输入,1位输出的门电路,因此Xilinx公司将前一级的EXOR用查找表代替,并使用后专用电路实现后一级的EXOR和MUX 。依次类推,可以扩展实现多位加法器。

以下是Xilinx公司FPGA进位逻辑的电路图:

mux多路,fpga开发,fpga,硬件架构

以下为电路的真值表:

输入1(ln0) 输入2(ln1) 进位(Cin) 高位输出(Cout) 低位输出(Sum)
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
1 0 0 0 1
1 1 0 1 0
1 0 1 1 0
0 1 1 1 0
1 1 1 1 1

参考文档

FPGA从入门到精通(2) - LUT

FPGA基础之LUT详解

FPGA从入门到精通(4) - MUX

《FPGA原理和结构》,天野英晴著文章来源地址https://www.toymoban.com/news/detail-756161.html

到了这里,关于FPGA结构:LUT(查找表)和 MUX(多路选择器)介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA中的LUT查找表工作原理。

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

    2024年02月07日
    浏览(40)
  • FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)

    本文首先对 ASIC 和 FPGA 进行了一个对比,然后介绍了 FPGA 的基本结构,最后解释了 FPGA 实现可编程的基本原理。 这里先给出 ASIC 和 FPGA 的优缺点 ASIC FPGA 优点 性能优越 可靠性高 大批量下单位成本低 开发初期无投入资金壁垒 设计工具使用方便,设计简单快速 产品原型机开发

    2024年02月20日
    浏览(40)
  • FPGA四选一多路选择器

    目录 前言 一、四选一多路选择器原理 二、原代码 1.Verilog源码 2.测试文本 3、仿真结果 总结 这里是小白新手的课后作业之—— 基于FPGA的四选一数据选择器的设计!! 四选一多路选择器共由四个1位的输入端口(int0、int1、int2、int3)、一个2位控制端口(sel)和一个输出端口

    2024年02月08日
    浏览(45)
  • [FPGA 学习记录] 简单组合逻辑——多路选择器

    封面来源:Multiplexer 在本小节中,我们将使用 Verilog 语言描述一个具有多路选择器功能的电路,目的是学会使用 Verilog 语言实现简单的组合逻辑 本小节的主要内容分为两个部分:一个部分是理论学习,在这一部分我们会对本小节涉及到的理论知识做一个讲解;另一个部分是实

    2024年02月03日
    浏览(35)
  • FPGA 中的多路选择器综述:实现八选一功能

    FPGA 中的多路选择器综述:实现八选一功能 多路选择器是FPGA中常见的基础电路之一,也叫做数据选择器,用于从多个输入信号中选择一个输出信号。选择器的输入端通常有一个选择控制端,来决定哪一个输入信号会被输出。在本文中,我们将详细介绍FPGA中的多路选择器实现

    2024年02月08日
    浏览(103)
  • FPGA的verilog关于多路选择器(2选1)的设计

    ​​​​​​​ 实验目的 实现一个多路选择器,进行“2选1”。也就是对2个信号进行1个特定条件的筛选,满足这个特定条件的话,其中一个的数值或信息就成为输出信号的数值或信息。不满足此条件的,就输出另一个信号的数值和信息。 实验原理 理论原理 2个输入信号,选

    2024年02月07日
    浏览(46)
  • FPGA四选一的多路选择器(用三元运算符?:解决)

           ?:符号通常用于条件运算符,表示条件判断。它类似于C语言中的三元运算符,用于根据条件选择不同的操作或值。         例如,在Verilog中,条件运算符?:可以用于if-else语句的简写形式。它的一般语法格式如下:         如果表达式为真,则结果为结果1;否

    2024年01月21日
    浏览(51)
  • 华为复合vlan(mux vlan)

    一、概念:       Multiplex vlan:实现网络资源控制的的机制。    / Principle vlan:port 可以和mux vlan内所有接口进行通信,限制128个                                    /Separate vlan:隔离型从vlan,只能和Principal port进行通信,限制1个     Subordinate vlan         

    2024年02月11日
    浏览(35)
  • FPGA资源之LUT

      Xilinx 7的FPGA可编程逻辑资源为CLB(Configurable Logic Block)   下图白色高亮为CLB资源:   在Xilinx的FPGA中,这样的CLB资源有很多个,组成可编程逻辑阵列;   我们看到在CLB资源中,还有两个区域如下图:   这些资源统称为SLICE,一个CLB中有两个SLICE,当然这两个SLICE片在

    2024年01月18日
    浏览(43)
  • Simulink常用模块库(Bus与Mux)

    ​​ 图1 常用模块库图示 中文译名: 根据输入元素创建总线 / 从传入总线中选择元素 图标: ​​ 图2  总线模块 模块参数: 双击打开 ​​ 图3  总线模块参数   窗口信息:     · 在 ‘输入的数目’ 中,可以选择合并多少路信号,并且可以 ‘按名称进行筛选查找’ ,进

    2024年02月06日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包