FPGA原理与结构(2)——查找表LUT(Look_Up_Table)

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

系列文章目录:FPGA原理与结构(0)——目录与传送门

目录

一、查找表(LUT)概述

二、LUT的性能权衡

1、面积效率

2、速度问题

3、权衡结果

 三、LUT的组成与应用

1、LUT的组成        

2、LUT的应用

3、LUT应用拓展

 本文参考xilinx官方手册ug474:ug474

一、查找表(LUT)概述

        LUT是CLB的重要组成部分,是FPGA中的重要资源,人们经常会说FPGA是基于查找表的可编程逻辑器件。其实所谓FPGA,也就是由最基本的三个要素构成的:(1)实现逻辑电路所需要的可编程逻辑要素(2)提供对外接口的可编程输入/输出要素(3)连接以上两种要素的可编程布线要素。然后在此基础上再嵌入其他硬件电路模块,如DSP,嵌入式内存,时钟所用的PLL/DLL,包括如今火热的嵌入式芯片构成soc等。LUT在FPGA中就是上述第一个要素(实现逻辑电路)的核心参与者。

        数电是学习FPGA的基础,数电又可以分成组合逻辑电路和时序逻辑电路。组合逻辑的前提是布尔逻辑,在电路上的体现就是逻辑门,理论上我们可以用逻辑门来实现任意的组合逻辑。而在FPGA中,我们就用LUT来取代了逻辑门的作用。我们把逻辑门构成的组合逻辑电路抽象成一个黑盒电路,现在我们知道了它所有的输入情况对应的输出(真值表),需要用一个器件来代替这个电路。对电路原件熟悉的人应该不难意识到,我们可以用一个存储器件来实现,把所有的输入作为存储器件的地址,把输出存储在对应的地址中,就完美取代了上述的电路功能。这就是我们的LUT,所以可以说LUT的本质就是一个RAM(可读可写,也有的是不可写的,相当于ROM)。

        但是我们为什么要进行这样的替换呢,使用逻辑门一样能实现相应的功能,也更加符合大家学习数电时最初的认知。设想一下如果FPGA里面不是LUT而是各式各样的门电路,那么即便我们在器件做了很多门,却有可能,导致最终的利用率十分的低下。因为在实际应用情况不确定的情况下,我们根本不可能知道用与门,或门,非门还是别的门单元,也不可能不知道会有多少位的输入,多少位的输出。最终将导致器件规模巨大,不具有灵活性。但是使用LUT就恰恰相反,LUT可以用来替代各种门,以及它们的结合,因此用LUT作为FPGA的基本单元可以确保更多的LUT可以用上,来达到提高利用率的目的。同时对于门级电路来说,彼此之间的连线也会使得EDA工具产生大的负担。可以说是LUT的应用,才使得FPGA有别于传统的可编程逻辑器件,逐渐成为如今时代的主流。

        我们在vivado中编写一个简单的组合逻辑来测试LUT的功能。

module logic(
    (*IO_BUFFER_TYPE="NONE"*) input din1,
    (*IO_BUFFER_TYPE="NONE"*) input din2,
    (*IO_BUFFER_TYPE="NONE"*) input din3,
    (*IO_BUFFER_TYPE="NONE"*) input din4,
    (*IO_BUFFER_TYPE="NONE"*) input din5,
    (*IO_BUFFER_TYPE="NONE"*) input din6,
    
    (*IO_BUFFER_TYPE="NONE"*) output dout);

    assign dout = din1 & din2 & din3 & din4 & din5 & din6;

endmodule

得到的综合结果如下:

fpga查找表,FPGA原理与结构,fpga开发

        可以看到这里的综合结果就是使用了一个LUT6(6输入的LUT)来实现了我们的逻辑功能。LUT中对应的INIT值也就是我们的真值表对应的值,输出逻辑与我们的设计一致,下为真值表(不全)。

fpga查找表,FPGA原理与结构,fpga开发

fpga查找表,FPGA原理与结构,fpga开发

       也可以从LUT的verilog原语来理解,INIT就是对应的真值表的值,O为输出,其他信号为对应的输入:

   // LUT6: 6-input Look-Up Table with general output
   //       Artix-7
   // Xilinx HDL Language Template, version 2018.3

   LUT6 #(
      .INIT(64'h0000000000000000)  // Specify LUT Contents
   ) LUT6_inst (
      .O(O),   // LUT general output
      .I0(I0), // LUT input
      .I1(I1), // LUT input
      .I2(I2), // LUT input
      .I3(I3), // LUT input
      .I4(I4), // LUT input
      .I5(I5)  // LUT input
   );

   // End of LUT6_inst instantiation

二、LUT的性能权衡

        在如今的主流FPGA中,基本采用的都是6输入的LUT,为什么不是7输入或者5输入(其实是可配置实现的)呢,这是由于性能权衡方面的考虑。这部分内容的学习对于我们FPGA应用者来说作用并不大,不感兴趣的读者可以直接跳过。

        在早期FPGA的逻辑块结构中有些只包含查找表,但是大部分的逻辑块的基本元素都包含BLE(Basic Logic Element,基本逻辑单元),如下图:

fpga查找表,FPGA原理与结构,fpga开发           BLE由实现组合逻辑的LUT,实现时序逻辑的触发器FF以及数据选择器构成。数据选择器在存储单元M0的控制下决定直接是输出查找表的值还是输出FF中存储的值。     

         在确定逻辑块的结构的时候,存在面积效率,速度等相关的权衡。

1、面积效率

        面积效率用来衡量FPGA上实现的电路是否充分利用了逻辑块资源。在考虑面积效率时,需要对以下两点进行权衡:

        (1)如果增加每个逻辑块的功能,就可以以更少的逻辑块实现电路。

        (2)但逻辑块自身的面积和输入/输出数量会变大,所以可重复逻辑模块的面积就增大了。 

        对于逻辑块的功能影响最大的就是LUT的大小了。因为k输入的查找表(k-LUT)可以实现任意k输入的函数,较大的LUT有利于减少逻辑块的使用,但是,k-LUT需要个配置存储单元,因此逻辑块自身的面积就会增大。并且增加逻辑块的输入/输出引脚会导致布线面积增大,因此每个可重复逻辑模块的面积就增大。而FPGA的总面积是通过“逻辑块数单位可重复逻辑模块面积”计算的,因此查找表的大小与面积效率之间存在权衡关系。简单说就是你不能期望一个模块既具有强大的功能又有着小巧的面积,必须在两者之间找到一个平衡。    

2、速度问题

        速度上也受到以下两个方面的影响:

        (1)如果增加每个逻辑块的功能,所实现的电路的逻辑深度(logic depth)就更小。

        (2)但同时也会增加逻辑块自身的内部延迟。

        逻辑深度是指通过关键路径的逻辑块数量,它在FPGA设计过程环节中的技术映射(technology mapping)过程中决定。降低逻辑深度可以有效减少布线,从而提高电路速度。但是,增加逻辑块功能的同时就会增加内部的延迟,那么降低逻辑深度的效果就会大大折扣。所以查找表的大小与速度也存在权衡关系。简单说就是你不能期望外部延迟小的情况下,内部延迟也小。

3、权衡结果

        对于性能测试来说,除了产品本身的性能情况以外,评测的标准不同也会导致结果的不同。20世纪90年代,曾有研究对查找表的输入数量进行架构探索,结论表明4输出查找表最为高效。事实上在商用FPGA中,xilinx公司的Virtex 4和Altera 公司的Stratix 之前一直都使用4-LUT。

        文献:E.Ahmed,J.Rose.The Effect of LUT and Cluster Size on Deep-Submicron FPGA Performance and Density.IEEE Trans.  Very Large Scale Integration(VLSI) Systems,2014,12(3)

基于CMOS 0.18um 1.8V制造对FPGA架构进行了评测。结果表明,查找表输入数等于5或者6时面积和速度方面的性能最好。因此,最近的商用FPGA倾向于采用6-LUT。

 三、LUT的组成与应用

1、LUT的组成        

        xilinx公司的7系类FPGA中使用的是6-LUT,每个LUT有六个独立的输入(A1-A6),两个独立的输出(O5-O6)。一个Slice中的四个LUT分别以A,B,C,D编号。从组成结构来说,一个6-LUT由两个5-LUT组成和一个数据选择器组成。

fpga查找表,FPGA原理与结构,fpga开发

2、LUT的应用

这样的一个6-LUT可以被配置为:

        (1)一个任意6输入的布尔逻辑函数

        (2)两个任意5输入的布尔逻辑函数(需要这两个函数共享输入,即输入相同)

        (3)两个任意3或2或更少输入的布尔逻辑函数

        当具有6个输入时:使用I0-I5作为输入,使用O6作为输出(O5不使用)。

        当具有5个输入时:使用I0-I4作为输入,使用O5,O6作为输出,I5拉高(强制O6代表上面一个5-LUT的结果)。

        通过LUT的传播延迟与所实现的函数无关。

3、LUT应用拓展

        单个的6-LUT有时候还是不能满足设计者的应用需求,所以LUT之间的拓展就至关重要:

fpga查找表,FPGA原理与结构,fpga开发

        我们主要观察图中的MUXF7和MUXF8。除了基本的lut外,slice还包含三个多路选择器(F7AMUX、F7BMUX和F8MUX)。这些多路选择器用于组合4个函数生成器,以提供任何slice中7或8个输入的任何函数。

        F7AMUX: 用于从LUT A和B生成7个输入函数
        F7BMUX: 用于从LUT C和D生成7个输入函数
        F8MUX: 用于组合所有LUT生成8个输入函数。
        具有八个以上输入的函数可以使用多个slice来实现。在CLB中,slice之间没有直接连接以形成大于8个输入的函数生成器。 

         但是级联的LUT越多,潜在的组合逻辑时延就越严重,对于系统时延的要求就越苛刻,一般采用寄存器来同步后再将结果输出,以确保输出结果正确。文章来源地址https://www.toymoban.com/news/detail-715651.html

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

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

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

相关文章

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

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

    2024年02月20日
    浏览(38)
  • OpenCV(九):LUT查找表

    LUT(Look-Up Table)查找表是OpenCV中一种常用的图像处理方法,用于对图像进行像素级别的颜色映射或图像增强操作。LUT查找表可以实现快速、高效的颜色转换和像素操作,尤其在处理大量像素的情况下具有优势。以下是关于OpenCV LUT查找表的一些重要知识点: 1.LUT数据结构:在

    2024年02月10日
    浏览(32)
  • Opencv-图像插值与LUT查找表

    图像像素的比较 白色是255,黑色是0 src1:第一个图像矩阵,通道数任意 src2:第二个图像矩阵,尺寸和通道数以及数据类型都需要与src1一致 dst:保留对应位置较大(较小)灰度值后的图像矩阵,尺寸、通道数和数据类型与src1一致 LUT查找表 LUT查找表实际上就是一种映射规则

    2024年02月20日
    浏览(36)
  • verilog 学习笔记(3)输入查找表(LUT)

    今天做了一个关于输入查找表(LUT)的题目,里面关于8-1 MUX的处理方式让我觉得非常的新奇。 题目很简单,大意就是要求设计一个8位的移位寄存器,同时附加随机访问功能。也就是通过输入的ABC三个数字对应的二进制数转换为一个地址(很像存储中的方式),然后访问移位

    2024年02月13日
    浏览(39)
  • FPGA资源之LUT

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

    2024年01月18日
    浏览(41)
  • FPGA的可编程逻辑单元(LUT和寄存器)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 1.根据PLD器件单片集成度的高低,可将PLD分为低密度可编程逻辑器件和高密度可编程逻辑器件。 2.按器件结构类型划分      

    2024年02月19日
    浏览(48)
  • FPGA原理和结构

    由逻辑块,IO块,开关块,布线要素组成 查找表的性能权衡 对逻辑块功能影响最大的是查找表的大小。查找表的输入大小对逻辑块和FPGA的面积和延迟有着密切的关系。 增加查找表的输入可以降低逻辑深度,增加电路速度,但输入数小于查找表的输入数会造成资源的浪费。,

    2024年02月13日
    浏览(29)
  • FPGA原理与结构——时钟资源

    系列文章目录:FPGA原理与结构(0)——目录与传送门         时钟,即clock信号,是由晶体经过激发产生的振荡电路。模拟端通过各种技术(PLL,DPLL)产生规律、周期性变化的信号给数字端,数字端使用该信号的边沿进行过赋值(procedural assignment)操作。         7系

    2024年02月12日
    浏览(39)
  • FPGA原理与结构——时钟IP核原理学习

    系列文章目录:FPGA原理与结构(0)——目录与传送门         在之前的文章中,我们介绍了FPGA的时钟结构 FPGA原理与结构——时钟资源 https://blog.csdn.net/apple_53311083/article/details/132307564?spm=1001.2014.3001.5502         在本文中我们将学习xilinx系列的FPGA所提供的时钟IP核,来帮助我

    2024年02月10日
    浏览(35)
  • FPGA原理与结构——FIFO IP核原理学习

    系列文章目录:FPGA原理与结构(0)——目录与传送门         FIFO是英文First-In-First-Out的缩写,是一种先入先出的数据缓冲器,与一般的存储器的区别在于没有地址线, 使用起来简单,缺点是只能顺序读写数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器

    2024年02月11日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包