tag 标签: 查找表

相关博文
  • 热度 19
    2013-11-7 16:20
    1095 次阅读|
    0 个评论
    一.查找表(Look-Up-Table)的原理与结构 采用这种结构的PLD芯片我们也可以称之为FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。 查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。 目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。 下面是一个4输入与门的例子, 实际逻辑电路 LUT的实现方式 a,b,c,d 输入 逻辑输出 地址 RAM中存储的内容 0000 0 0000 0 0001 0 0001 0 .... 0 ... 0 1111 1 1111 1     二.基于查找表(LUT)的FPGA的结构   我们看一看xilinx Spartan-II的内部结构,如下图: xilinx Spartan-II 芯片内部结构 Slices结构 Spartan-II主要包括CLBs,I/O块,RAM块和可编程连线(未表示出)。在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。 Slices可以看成是SpartanII实现逻辑的最基本结构 (xilinx其他系列,如SpartanXL,Virtex的结构与此稍有不同,具体请参阅数据手册) altera的FLEX/ACEX等芯片的结构如下图: altera FLEX/ACEX 芯片的内部结构   逻辑单元(LE)内部结构 FLEX/ACEX的结构主要包括LAB,I/O块,RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构(altera其他系列,如APEX的结构与此基本相同,具体请参阅数据手册)   三. 查找表结构的FPGA 逻辑实现原理   我们还是以这个电路的为例: A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。 该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预) 这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。 由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。 也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。
  • 热度 17
    2012-8-25 11:36
    6373 次阅读|
    1 个评论
      第2章  FPGA原理        在上一讲中,我们了解到可编程逻辑器件的发展历史,从最开始的晶体管到第一块PROM存储器、SPLD与CPLD,再到我们这个FPGA以及基于FPGA的SOPC硬件平台。在叙述中,我们已经了解到,CPLD是可以等价于GAL的阵列,编程的数学模型是基于多项式的乘用与门电路实现,而多项式的加用或门电路实现。那么我们FPGA的编程机理是什么呢?它为什么能够实现我们任意的函数表达式呢?我们在上一讲中已经知道了FPGA就实现技术是可以分成几类的,那么它不同技术制造的FPGA实现编程逻辑的机理一样么?有什么区别呢? 带着这些问题,我们来学习这一章的内容,主要介绍三种不同FPGA的结构特点、实现的机理,这三种FPGA分别是基于SRAM技术、基于反熔丝技术、基于E2PROM/FLASH技术。 就电路结构来讲,FPGA可编程是指三个方面的可编程,一个是可编程逻辑块,一个是可编程IO,还有一个就是可编程布线资源。可编程逻辑块是FPGA可编程的核心,这一节里我们着重就这个方面可编程进行讨论。我们上面提到的三种技术也是针对可编程逻辑块的技术。至于其他两方面的可编程资源,在后面的章节中会穿插的讲解,在这里就不列专题进行叙述了。 2.1基于SRAM技术原理 2.1.1SRAM与DRAM 在前面我们提到过,最早出现的FPGA是基于SRAM技术的,它也是目前发展到现在发展的最快的,所谓走的早,走的路就越长。那么我们讲什么是SRAM技术呢?关于这个概念,可能有些初学者是很模糊的。        我们半导体RAM是有动态RAM和静态RAM之说,就是DRAM与SRAM。DRAM我们可能接触的更多一点,因为我们如果有自己组装机器或者选购电脑的时候,都会考虑一个内存大小的问题,目前市场上这个内存大部分都是动态的,从开始的DDR到DDR2,再到现在的DDR3。DRAM与SRAM的区别在于DRAM是要隔一段时间进行刷新的,而构成DRAM的最小单元如图xX所示,只需要一个晶体管一电容对构成,相对于SRAM来讲是非常节省硅片的。但是缺点就是DRAM需要额外的定时刷新电路,对于小规模的DRAM来讲,这种刷新电路的消耗是得不偿失的。有人疑问对于大规模来讲还是可以考虑的啊,的确是这样的,规模大了,总有一个界限,总体DRAM消耗的硅面积(包括刷新电路)会比SRAM消耗的硅面积要小。但是对于可编程来讲,还是有些不足,实现起来比较复杂。但也说不定将来技术提高了,关注更多的是硅面积的时候,会出现基于DRAM技术的FPGA出现。        相比之下,SRAM是不需要动态刷新的,但是它最小单元是一个消耗更多硅面积的多晶体管的结构。之所以不需要动态刷新,是因为一旦SRAM单元被载入数据后,它将保持不放电,但是如果整个供电系统断了的话,器件配置的数据将会丢失,这就是说这种器件在系统上电时需要重新配置。但是这种器件的特点是可迅速反复地编程,这也是当时选中SRAM技术实现FPGA的很大原因。 2.1.2 SRAM构成FPGA机理        我们知道了,SRAM是可以在系统不断电的情况下维持被载入的数据,那么基于SRAM是如何构成我们FPGA可编程的呢?        图XXX展现了基于SRAM实现FPGA可编程的模型,整个存储逻辑0或1的单元驱动着一个额外的控制晶体管,根据SRAM存储的0和1决定了晶体管的开还是关,也就是0和1的输出。 我们知道,从数学上任何一个逻辑都能用有限多项式来实现或逼近,CPLD是从具体多项式实现的角度考虑来从电路上映射实现。那么我们放大一些思维,直接从多项式结果上考虑,针对不同的输入组合,我们可以得到不同的多项式结果,如果我们将这些结果存起来,然后不同的输入组合进行索引结果,便可直接输出多项式结果了。当时基于SRAM技术的FPGA思想就是这个,把事先可能的输入组合带入多项式进行计算,把结果存在SRAM中,用输入进行索引得出结果。这个存放结果的SRAM我么称作查找表LUT,也有些地有说基于LUT技术的FPGA,其实我们基于SRAM技术的FPGA就是这个基于LUT技术的FPGA的本质,后面会提到基于E2PROM/FLASH技术的FPGA,它其实也是基于LUT技术的FPGA。 2.1.3查找表举例 为了更好有效的说明查找表的概念,这里举出了一个实现二选一多路器的例子,首先,按照我们要实现的功能,从数学表达式上得出:   然后把这个数学表达式和我们电路逻辑门映射起来得到图xxx电路图,由两个与门、一个反相器和一个或门组成,如果按照CPLD实现的话最终结果就是由晶体管构成的这样些的门电路组成,如果是时序电路的话,再在后面加一级寄存器。要在FPGA里通过查找表的方式实现,由于查找表里放的都是我们不同的组合电路输入得到的最终结果值,所以我们先来计算二选一多路选择器的真值表,结果如表x所示。                                   真值表 输入 输出 A B S y 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1        这个真值表的计算其实就是我们开发流程中综合的过程,这里暂且提一下,有了这个真值表,我们就可以按照LUT的结构对号入座了。图XX显示的是3输入LUT的结构,这里需要说明的是LUT中本身应用到了这个二选一多路器,也就是说硬件上本身存在二选一多路器,有人就会问,直接用这个二选一多路器不就可以了?需要强调的是我们这里实现的是输入是三个变量,同时这里只是举这个经典二选一多路器逻辑来叙述我们这个LUT实现逻辑的机理。          在上图中,由于是三输入的LUT,从真值表中看出不同的输入组合就有8种映射,我们这里就有8个这样的存储单元来存储这些结果。在图中我们标定0号至7号,至于综合器怎样将这些存储单元存放我们的8种结果的呢?假设这里的二选一多路器的选择真值关系如图:            S Y 1  A 0 B        按照上图约定的关系及要实现的功能的真值表,我们来试图填一下第0号存储器,从LUT结构图上,我们知道第0号应该填充的是当a=1,b=1,s=1时要实现功能的真值表中对应的结果,查表得到第0号应该填充1。换个角度,当a=0,b=1,s=0时,那么应该是第5号应该填充数据,查表得出应该填充逻辑0,相信其他的大家都会填了。        通过上面的例子,大家应该明白了基于LUT技术的FPGA实现机理了,通过综合器事先将所有可能的输入的进行换算得到所有可能的结果,然后把这些结果载入到LUT存储单元中,然后通过不同输入进行索引出相应的结果,这就是整个基于LUT技术的FPGA实现逻辑机理。 2.1.4 LUT的讨论        上面的例子中,我们看到所用的LUT是一个三输入,存储单元为8比特的规模,对于同一块面积来讲,是用越多的小规模的LUT好还是用少一点的规模大的LUT好呢?这是我们接下来要讨论的问题。        对于一个n输入查找表来说,它能够实现任何具有n输入组合函数功能,假如增加一位输入的话,它可以实现的函数复杂度是成倍增加的,当然使用的SRAM也是成倍增加的。在历史上第一片FPGA是基于3输入LUT的,后来也出现过的LUT有3输入、4输入、5输入、6输入以及片内混合型的(即兼有其中两种或两种以上类型的LUT)。无论怎样,需要知道的是查找表越小,它的配置使用率就越高,但是逻辑综合器的工作量就越大。经过一些性能和成本的最后衡量,于是市面上主流厂商的片子是基于4输入LUT的,但是一些高端的器件,比如Xilinx的V4及以上系列,即存在4输入LUT,也存在5输入的LUT。主要的考虑是随着面积的增大,全都采用4输入的,综合器的工作量很多,如果全部使用5输入的,那么有很大一部分LUT利用率不是很高,比如一个函数是4输入的功能规模,也得用一个5输入的LUT实现,剩下的1输入不能被重新利用,就浪费掉了。经过这么一综合,4输入和5输入的LUT都有了。随着技术的发展,多少输入的LUT来构成FPGA相信也会在目前大部分基于4输入的基础上有所改变。 对于我们逻辑开发者来说,在确定好开发平台后,明确了构成该型号FPGA的LUT后,编写逻辑时,要尽量充分利用LUT,如果构成该FPGA的LUT是4输入的,那么逻辑信号宽度尽量用4的倍数,比如你用到一个计数器是23位宽的,这里建议用24位宽的,一个是不浪费资源,二个是可以防止计数溢出,除非有目的的设计它为23位用来加1清零。 2.1.5基于SRAM优缺点 通过上面的了解,我们知道了基于SRAM技术的FPGA可编程机理,基于这种技术的FPGA的优缺点是什么?我接下来做个总结。 在前面叙述三种技术的时候,提到了一点,就是基于SRAM技术的FPGA 可反复的重新配置,这就意味着设计者可以不断的反复的下载设计的逻辑做验证,一次不行可以快速修改设计后重新配置,这是它的一个最大的特点,它的另一个优点是FPGA制造厂商可以依靠很大的致力于存储设备研发的公司的力量推动FPGA的发展,正式由于这一点,基于SRAM的FPGA比其他技术的要先进一代甚至几代。 世界上没有尽善尽美的东西,基于SRAM技术的FPGA也是,他既然有可重新配置的优势,带来的不利就是它每次在系统掉电后,之前载入的程序将丢失,系统上电后需要重新配置。配置是从外部专用的外部存储器件中引导配置的,这就带来了板级有关的花费和面积消耗。 另一个我们在使用基于SRAM技术的FPGA需要考虑的是安全问题。大家都知道,现在很多复杂一点的电路,抄板,其实80年代末90年代初的时候就开始了,只不过当时还是表测,高级一点的是抄板机。同样,FPGA设计需要考虑知识产权的保护。用来对基于SRAM技术的FPGA上电配置的数据文件是存储在外部存储器中的。虽然还没有什么商业工具可以读取存储的配置文件转换成相应的原理图和网标描述,但是这也是迟早的事。在培训当中接触过一批人,做逆向工程的,本着这个来参加培训的。所以对一些商业技术秘密有要求的产品或者军用技术保密的项目,用基于SRAM技术的FPGA还是有待考虑的。
相关资源
  • 所需E币: 0
    时间: 2021-3-18 16:46
    大小: 331.89KB
    上传者: Argent
    FPGA是一个技术密集型的行业,没有坚实的技术功底,很难形成有竞争力的产品。从技术上来看FPGA未来的发展,至少在几年内还是遵循摩尔定律的规则,工艺不断升级,目前xilinx16nm工艺的FPGA已经成熟商用,xilinx下一代产品会升级到7nm,重点应该还是瞄准通信和可能出现的新兴行业如大数据处理等。有这方面需求的网友不妨来共同学习探讨。
  • 所需E币: 4
    时间: 2019-12-24 22:49
    大小: 229.58KB
    上传者: 微风DS
    摘要:DS1859的与众不同之处在于其内部校准及右移位(可扩展动态范围)特性。当结合使用时,这些特性可极大地提高DS1859器件中12位模数转换器(ADC)的性能,无需增加成本及尺寸即可达到16位ADC的精密度与准确度。此外,DS1859的内部校准还具有可编程增益及可编程偏移,从而可以省去大部分的外部信号调理电路。在ADC之前的模拟域中提供可编程增益,对输入信号进行放大/衰减,这样可以充分利用ADC的整个动态范围。然后,在数字域,通过右移再将数字输出同比缩小(除以某数),从而使所需的(或者SFF-8472所要求的)LSB保持不变,甚至对用户透明。本应用笔记旨在展示DS1859的内部校准及右移位功能给实际应用所带来的好处。并且还提供了一些对于实施内部校准及右移位操作非常有用的信息。最后,提供了一个实例,用以支持本文论点。DS1859内部校准及右移位(可扩展动态范围)Apr09,2004摘要:DS1859的与众不同之处在于其内部校准及右移位(可扩展动态范围)特性。当结合使用时,这些特性可极大地提高DS1859器件中12位模数转换器(ADC)的性能,无需增加成本及尺寸即可达到16位ADC的精密度与准确度。此外,DS1859的内部校准还具有可编程增益及可编程偏移,从而可以省去大部分的外部信号调理电路。在ADC之前的模拟域中提供可编程增益,对输入信号进行放大/衰减,这样可以充分利用ADC的整个动态范围。然后,在数字域,通过右移再将数字输出同比缩小(除以某数),从而使所需的(或者SFF-8472所要求的)LSB保持不变,甚至对用户透明。本应用笔记旨在展示DS1859的内部校准及右移位功能给实际应用所带来的好处。并且还提供了一些对于实施内部校准及右移位操作非常有用的信息。最后,提供了一个实例,用以支持本文论点。DS1859模拟监视输入在深入讨论之前,最好先看一下DS1859的MON输入框图(见图1)。为简明起见,只画出了其中一路输入,三路MON输入原理上是一致的。图1.DS1859MON输入框图如图所示,一个单端电压加于DS1859MON管脚上。在模拟域中,该电压被送入一个具有衰减及放大功能的可编程增益单元中。该增益单元可对MON通道进行校准,以获得需要的LSB或满量程电压。满量程电压是指数字输出达到最大(FFF8h)时的输入电压。此外,增益单元还可将小输入信号放大,以便最大限度利用ADC动态范围。稍后将对此进行详细说明。增益单元之后是12位ADC。12位转换结果以左对齐的2字节(16位)数字量形式输出。ADC可输出0000h至FFF8h的数字值。一旦进入数字域,DS185……