tag 标签: 乘法器

相关帖子
相关博文
  • 热度 19
    2015-8-13 14:56
    1212 次阅读|
    0 个评论
    高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA)。无论你使用图形化设计程序,ANSI C语言还是VHDL语言,如此复杂的合成工艺会不禁让人去想FPGA真实的运作情况。在这个芯片中的程序在这些可设置硅片间到底是如何工作的。本文会使非数字化设计人员明白FPGA(现场可编程门阵列)的基础知识及其工作原理。此信息在使用高端设计工具时同样十分有用,希望可以为理解这一特别技术提供一些线索。 1. FPGA-现场可编程门阵列 每一块FPGA芯片都是由有限多个带有可编程连接的预定义源组成来实现一种可重构数字电路。 图1.FPGA不同构成 FPGA芯片说明书中,包含了可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式RAM)的大小。FPGA芯片中还有很多其它的部分,但是以上指标通常是为特定应用选择和比较FPGA时,最重要的参考指标。 在最底层,可配置逻辑模块(如片或逻辑单元)有着两种最基本的部件:触发器和查找表(LUT)。这很重要,因为各种FPGA家族之所以各不相同,就是因为触发器和查找表组合的方式不同。例如,Virtex-II 系列的FPGA ,它的片具有两个查找表和两个触发器,而Virtex-5 FPGA的片具有4个查找表和4个触发器。查找表本身的结构也可能各不相同(4输入或6输入)。关于查找表工作原理的更多信息将在后面的章节中给出。 表1中列出了在NI LabVIEW FPGA硬件目标中使用的FPGA的指标。逻辑门的数量是一种将FPGA芯片与ASIC技术进行比较的传统方法,但是它并不能真实地表述FPGA内部的独立单元的数量。这就是Xilinx公司没有在新型Virtex-5系列中指定逻辑门数量的原因之一。 表1.不同系列FPGA源规格 为了更好地理解这些规格的意义,将编码考虑为合成的数字电路模式。对任何一段合成代码,或图形化或文本形式,都有相应的电路图反映逻辑组件该如何连线。通过一段简单布尔逻辑电路了解下相应的示意图。图2表示的是传递5个布尔信号并且可图形化计算所得的二进制值的功能组。 图2.载入5个信号的简单布尔逻辑 在通常情况下(LabVIEW SCTL—单周期定时环路外),图2所示相应电路图同图3所示相近。 图3.为图2中布尔逻辑的相应电路图 虽然很难明白,但是实际上这里创建了两个并行分支的电路。最上面的5条黑线被反馈到第一个分支,它在每个布尔操作间添加了触发器。最下面的5条黑线构成了第二个逻辑链。其中一支路在每步操作之间增加了同步寄存器,另一条逻辑链是确保执行数据流的。本电路图正常工作时总共需要12个触发器和12个查找表。上端分支和每个元件将在以后章节分析。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 2. 触发器 图4.触发器符号 触发器是二进制移位寄存器,用于同步逻辑以及保存时钟(脉冲)周期内的逻辑状态。在每个时间(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。在正常情况下,LabVIEW FPGA在每次操作之间都设置一个触发器,以保证有足够的时间来执行每步操作。对此律的例外只发生在SCTL结构中写代码的情况。在这个特殊的环路结构中,触发器只放置在闭环迭代的始末段,并且由编程者考虑定时因素来决定如何放置。对SCTL内代码如何同步的更多内容将在以后章节中讨论。图5表示的是图3的上端分支,触发器由红色高亮表示。 图5.绘制由红色高亮表示出触发器的电路图 3. 查找表 图6.双四输入查找表 图6所示示意图中的其他逻辑电路通过使用少量查找表形式的随机存取存储器实现。我们可以简单地假定FPGA中系统门的数量可参考与非门(NAND)以及或非门(NOR)的数量,但实际上,所有的组合逻辑(与门、或门、与非门、异或门等)都是通过查找表存储器中的真值表来实现。真值表是输出对应于每个输入值组合的预定义表(现在卡诺图的重要性在你的头脑中可能会慢慢淡化)。以下是对数字逻辑电路课程的快速回顾:比如,图7是布尔逻辑与门操作过程。 这是对数字逻辑课程的快速回顾: 例如,图7中显示了布尔型AND操作。 图7.布尔型AND操作 表2.布尔与门操作的真值表 你可以认为输入值是所有输出值的数字索引,如表3所示。 表3.布尔与门擦操作的真值查找表实现 Virtex-II和Spartan-3系列FPGA芯片有着4输入查找表来实现真正的4输入信号的16种组合。图8就是一个四输入电路实现的例子。 图8.输入布尔逻辑的四信号电路 表4所示为使用双四输入查找表实现的相应的真值表。 表4.图8中所示相应真值表 Virtex-5系列的FPGA使用双六输入查找表,可以通过6个不同输入信号的64种组合来实现真值表。因为触发器之间的组合逻辑十分复杂,所以在LabVIEW FPGA中使用SCTL也越来越重要。下一节将讲述SCTL如何优化利用LabVIEW中的FPGA源。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 4. SCTL 上几节中使用的代码例子假定代码是设置在SCTL外部,并为保证执行同步数据量也同步了附加电路。SCTL是LabVIEW FPGA中一个特殊结构,生成一个更为优化的电路图,以期望达到在一个时钟(脉冲)周期内执行完所有逻辑电路分支。例如,若设置SCTL在40MHZ运行,则所有逻辑电路分支将在25ns内执行完毕。 如果在SCTL中设置前例中同样的布尔逻辑电路(如图9所示),则生成如图10所示的相应电路示意图。 图9.附有STCL的简单布尔逻辑 图10.图9所示布尔逻辑相应的电路图 很明显,这种实现方法简单多了。在Virtex-II或Spartan-3系列FPGA中,触发器间的逻辑需要至少2个4输入查找表,如图11所示。 图11.图10中电路图的双四输入查找表实现 由于Virtex-5系列FPGA有着6输入的查找表,用户可以在一个查找表中实现相同数量的逻辑,如图12所示。 图12.图10中双六输入查找表实 本例中使用的SCTL(如图9所示)设置在40MHZ下运行,这意味着在任意触发器之间逻辑电路必须在25ns内完成执行。电子在电路中传播的速度决定了代码执行的最大速度。关键路线是有最长传播延迟的逻辑电路分支,它决定了该部分电路中理论最大时钟速率。Virtex-5 FPGA上的双六输入查找表不仅减少实现给定逻辑电路所需要的查找表总数,而且减少电子通过逻辑电路的传播延迟(时间)。Virtex-5系列FPGA中的6输入查找表不仅可以减少实现特定逻辑而需要的查找表的数量,而且可以降低逻辑中电流的传输延时。这意味着,您可简单地通过选择一个基于Virtex-5的硬件指标设置相同的SCTL,追求更快的时间速度。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 5. 乘数器和DSP片 图13.乘数器功能 看起来简单的两数相乘运算在数字电路中实现起来是十分复杂的,也是极为消耗资源的。为提供相关参考,图14所示是一种使用组合逻辑电路实现4×4字节乘数器的示意图。 图14.两个4字节输入相乘的电路图 试想两个32字节的数字相乘要通过2000多步操作才能得到结果。因此,FPGA预设了乘数器电路,在数学和信号处理应用中保存对查找表和触发器使用。Virtex-II和Spartan-3 FPGA拥有18×18bit乘法器,所以两个32字节数字相乘的运算需要三个乘法器来实现。许多信号处理算法都包括连乘运算结果的功能,因此Virtex-5等高性能FPGA都预设被称为DSP片的乘数器累加电路.这些预设处理组件,也被称为DSP48片,包括25×18bit乘数器以及加法器电路,尽管您可单独使用乘数器功能。表5所示为不同FPGA系列DSP决策。 表5.不同FPGA的DSP源 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 6. 块随机存取存储器(RAM) 选择FPGA时,记忆源是另一个需要考虑的关键因素。嵌入FPGA芯片中的用户自定义随机存取存储器(RAM),对储存数据设置或平行环路之间传送数值很有帮助。基于FPGA系列,您可在16或36kb组件中设置板载RAM,或者使用触发器以数组来执行数据设置;然而,对于FPGA逻辑源来说,大型数组很快就变得十分“奢侈”。由100个32字节元素数组可消耗Virtex-II 1000 FPGA中超过30%的触发器,或者占用少于1%的嵌入式块RAM。DSP算法通常需要追踪整个数据块或是复杂等式的系数,而在没有板载存储器情况下,许多处理功能在FPGA芯片的硬件逻辑电路中都不适用。图16所示为使用块RAM读写存储器的图形化功能。 图15.用于读写存储器的块RAM函数 同样,你也可以使用内存块,将一段完整周期存储为数值和索引的顺序表,为板载信号发生器存储周期性波形数据。输出信号的最终频率由检索数值的速度决定,这样您就可用此方法动态改变输出频率,而不需要输入波形中的急剧变化。 图17.用于先进先出缓冲器的块RAM功能 FPGA固有的并行执行要求逻辑电路独立元件可在不用时间脉冲下驱动。在不同运行速度下的逻辑电路之间传递数据是很棘手的。使用先进先出(FIFO)缓冲器时,板载存储器可用来是传输更加平稳。如图16所示,用户可以将FIFO缓冲器配置成不同大小以确保数据在FPGA芯片的非同步部件间不会丢失。表6所示为嵌入不同FPGA系列的用户可设置快RAM。 表6.不同FPGA的记忆源 7. 总结 随着高端技术的发展以及新概念的深入概括,FPGA技术地采用将不断增加。然而探究FPGA其中奥秘,感叹这硅片中在方框图间汇编出的变化,也是十分重要的。在发展阶段,如果您懂得如何利用和优化资源,比较和选择触发器、查找表、乘数器和块RAM等硬件指标是十分有帮助的。 这些基本的功能块并不是包含所有资源的完整清单,而且这篇白皮书并没有包含对所有FPGA部件的讨论。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM)
  • 热度 21
    2015-3-24 13:31
    986 次阅读|
    0 个评论
       引 言   人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。目前实现ANN还主要依靠软件程序.但是依靠程序很难达到实时性的要求。   神经网络在FPGA上实现是独立于冯·诺依曼架构,利用FPGA的并行性,在一些实时性要求很强的领域应用。通用计算机虽然编程容易,但是很多时间浪费在分析指令,读出写入数据等。于是人们想利用ASIC(专用计算芯片)完成神经网络的计算任务,但是由于资源有限,这种芯片只限于实现特定的算法结构和小规模网络,而且专用芯片的制作成本很高,只适合大批量生产。   可编程逻辑器件FPGA的出现给IC设计行业一个很强的工具,它可以小成本的开发一些专用芯片,如果开发是成功的可以考虑流片生产。用FPGA实现神经网络比ASIC神经计算单元更容易实现,利用可编程逻辑,FPGA可以实现像软件一样的设计灵活性,特别是对于复杂网络,设计周期大大缩短,其内部的重构逻辑模块(Configurable Logic Blocks,CLBs)包含若干逻辑单元,利用固有的可重构路径结构可以实现高效率的连接。此外,现在正在开发中的一种神经计算芯片为神经网络的实现提出了一种新的有效方法。    1 FPGA实现神经网络关键问题分析   (1)选择合适的神经网络及其拓扑结构   不同的神经网络有不同的应用,而且不同的网络完成知识表达的机理是不同的,某一个神经网络不是万能的.对于实际问题,首先要做的就是选择针对性的神经网络,如线性分类问题可以用简单的感知器,对于复杂的分类问题,函数逼近问题可以使用BP网络,对于一些聚类问题可以使用径向基(RBF)网络等。以BP网络结构为例,这种被广泛采用的架构由具有错误反向传播算法的多层感知器构成(Multilayer Perceptrons u-sing Back-Propagation,MLP-BP),训练一个BP网络主要的问题就在于:训练开始之前,对于网络拓扑结构缺乏一种明确的确定方法。而进行各种拓扑结构的实验并不那么容易,因为对于每一个训练周期都要消耗很长的时间,特别是复杂的网络,更是如此;其次,对于硬件而言,最合适的网络运算法则不仅在于它达到收敛有多么快,还要考虑是否容易在硬件上实现且这种实现代价和性能如何;另外,对于同一种NN(Neural Net-work)。其拓扑结构对网络的收敛特性以及知识表达特性都有影响,一般增加网络的神经元或者神经元的层数,是可以增加网络的逼近能力,但是可能会影响网络的学习收敛情况,而且还可能会因为过适应(Overfit)而失去泛化能力。    (2)正确选择数值表达形式   精度的选择对处理密度(与耗费的硬件资源成反比)有直接影响。其中浮点数可以在计算机中表达实数,它有相对高的精度和大的动态范围,使用浮点数使得计算更为精确,但是在FPGA上实现浮点数运算是一个很大的挑战,而且会耗费很多硬件资源。尽管如此,加拿大研究人员Medhat Moussa and Shawki Arei-bi仍然实现了浮点数的运算,并进行了详细的对比分析。   对于MLP-BP而言,Holt and Baker凭借仿真和理论分析指出16为定点(1位标志位,3位整数位和12位小数位)是最小可允许的精度表示(指可以达到收敛)。以逻辑XOR问题为例,文献 中表格2.5(见表1)表明与基于FPGA的MLP-BP浮点法实现相比,定点法实现在速度上高出12倍,面积上是浮点实现的1/13,而且有更高的处理密度。   同时数据也说明基于FPGA的16位定点MLP-BP实现在处理密度上高于基于软件方法的MLP-BP实现,这最好地证明可重构计算方法的处理密度优势。应该说,在这种应用中浮点数远不如定点数合适。但是定点数表示的缺点在于有限精度,尽管如此,对于不同的应用选择合适的字长精度,仍然可以得到收敛。因此,目前基于FPGA的ANN大多数是使用定点数进行计算的。    (3)门限非线性激活函数(Non-linear activationFunction)的实现   ANN的知识表达特性与非线性逼近能力,有很大部分源自门限函数。在MLP网络中,门限函数大部分是非线性函数(少数是线性函数,如输出层的门限函数),但是非线性传递函数的直接硬件实现太昂贵,目前实现门限函数的方法主要有:查表法(look-up ta-ble)、分段线性逼近、多项式近似法、有理近似法以及协调旋转数字计算机(Coordinated Rotation Digital Com-puter,CORDIC)法则,CORDIC法则实现函数的优点在于同一硬件资源能被若干个函数使用,但是性能相当差,因此较少使用。而高次多项式近似法尽管可以实现低误差近似,但是实现需要耗费较高硬件资源。相对而言,查找表法和分段线性逼近法(注意:查找表不易太大,否则速度会慢且代价也大)更适合FPGA技术实现。其中分段线性近似法以y=c1+c2x的形式描述一种线性连接组合(如图1所示),如果线性函数的系数值为2的幂次,则激活函数可以由一系列移位和加法操作实现,许多神经元的传递函数就是这样实现的,而查找表法则是将事先计算的数值依次存储在需要查询的存储器中来实现。    (4)面积节省及相关问题   为了最小化神经元实现的面积,组成每个神经元的各个HDL算法模块的面积也应该最小。乘法器以及基本的传递函数(例如,sigmoid激活函数tanh)是最占用面积的,这类问题非常依赖于所要求的精度,尽管神经网络常并不要求很精确的计算,但是不同的应用所要求的精度不同。一般来讲,浮点运算要比定点运算需要更大的面积,比如浮点运算中的并行加法器本质上是定点运算超前加法器加上必要的逻辑块,减法器、乘法器也类似如此,这在激活函数实现方面更加突出,文献 中面积优化对比显示,32位浮点运算要比16位定点运算大250倍。另外,对于小型网络,分布式存储器很适合权值存放,但是对于大型网络,权值存储器不应该被放置在FPGA中,因此当ANN得到有效实现的时候,就要认真考虑存储器的存取问题。其次,神经网络应用有一个显著的缺陷:在神经计算方面,不同运算的计算时间和实现面积并不平衡。在许多标准神经模式中,计算时间的大部分用在需要乘法器和加法器的矩阵向量运算中,而很多耗费面积的运算如激活函数,又必须被实现(它们占用很少的运算时间),而FPGA的面积是严格一定的,因此可将面积的相当一部分用来实现这些运算,以至于FPGA仅剩的一小部分却实现几乎所有的运算时间。    (5)资源和计算速度的平衡(Trade-off)   对于FPGA,科学的设计目标应该是在满足设计时序要求(包括对设计最高频率的要求)的前提下,占用最少的芯片资源,或者在所规定的占用资源下,使设计的时序余量更大,频率更高。这两种目标充分体现了资源和速度的平衡思想。作为矛盾的两个组成部分,资源和速度的地位是不一样的。相比之下,满足时序、工作频率的要求更重要一些,当两者冲突时,采用速度优先的准则。   例如,ANN的FPGA实现需要各种字长的乘法器,如果可以提出一种新的运算法则,从而用FPGA实现变字长的乘法器,则可以根据需要调整字长,从而提高运算速度的可能性,其中,基于Booth Encoded opti-mized wallence tree架构(见图2)就可以得到快速高效的乘法器,这种方式实现的乘法器比现在所用的基于FPGA的乘法器的处理速度快20%)。    (6)亟待解决的问题   FPGA凭借其如同软件实现一样的灵活性,集合了硬件实现高效和并行性的优点,好像非常适合神经实现的正常需要,但是,FPGA的二维拓扑结构不能处理标准神经网络规则但复杂的连线问题,而且FPGA仍然实现很有限的逻辑门数目,相反,神经计算则需要相当耗费资源的模块(激活函数,乘法器)。这样对于FP-GA,可用的CLBs中部分将被用来增加路径容量(连线),导致计算资源的丢失。一般的方法只能实现很小的低精度神经网络,连线问题不能依靠几个具有比特序列算法的可重构FPGA以及小面积模块(随机比特流或者频率)解决。    2 基于FPGA的ANN实现方法   经典实现方法有:    (1)可重构的RNN结构(Reconfigurable NeuraINetwork)   可重构计算是一种增加处理密度(每单元硅片面积的性能)的有效方法,且处理密度远大于用于通用计算方法,FPGA作为可重构计算的平台,可以提供如同软件一样的设计灵活性。该方法基于可扩展的脉动阵列结构、可重用的IP(Intellectual Properties)核及FPGA器件,即将要实现的神经网络算法分为几种基本运算,这些基本运算由可重构单元(Reconfigurable Cell,RC)完成,RC间以规则的方式相互连接,当神经网络变化时,只要增减Rc的数量或替换不同功能的RC就可重构成新的神经网络硬件;文献 中同时指出,考虑到硬件实现要以最少的硬件资源满足特定应用的性能需求,一般用神经元并行作为可重构部件的基本模式,即神经网络的各层计算可复用相同的阵列结构。    (2)RENCO结构   可重构网络计算机(Reconfigurable Network Computer,RENCO)是一种用于逻辑设计原型或可重构系统的平台,所设计的可重构系统对于工作在比特级的算法实现特别有效,比如模式匹配。RENCO的基本架构包括处理器、可重构部分(多为FPGA)以及存储器和总线部分,Altera公司提供的最新的RENCO在可重构部分包括近100万逻辑门,足够实现高复杂度的处理器。具体参见文献 。尽管如此,得到的可重构系统并非对所有的硬件实现都是优化的方法,比如不适合于浮点运算。    (3)随机比特流方法   随机比特流(Stochastic Bit Strearns)的方法是使用串行随机的方法实现一些运算操作,目的是为了节约资源和充分利用神经网络的实时性。随机算法的提出源于它的简易性,基本原理即首先将所有的输入转换成二进制随机比特流,就是任意化;然后,由数字电路组成的随机算法实现取代正常的算法;最后,随机比特流转回到正常的数值(文献 中有详细总结)。随机算法提供一种方法,用简单的硬件实现复杂的计算,同时又不失灵活性,而且随机实现又与现代VLSI设计和生产技术兼容。   FPNA实现方法:   凭借着简化的拓扑结构和独特的数据交换流图,FPNA(Field Programmable Neural Arrays)成功地解决了以简单的硬件拓扑结构有效地实现复杂的神经架构问题,是一种特别适合FPGA直接实现的神经计算范例。FPNA基于一种类似FPGA的结构:它包含一系列可以自由配置的资源,这些神经资源被定义用来实现标准神经元的计算功能,但是它们是一种自主的方式,这样通过有限的连接可以创造出许多虚拟的连线。利用这种新的神经计算理念,一个标准的但结构复杂的神经网络可以由一个简化的神经网络替代(文献 给出了详细的数学表示和说明)。   为了有个直观的理解,图3(a)表示一个简单的MLP结构;图3(b)说明通过节点间的直接连接建立虚拟连接。   文献 中的例证表明FPNA计算范例确实允许一系列给定的神经资源代替具有不同架构的标准神经网络。然而,从图4中可能并非如此,MLP架构并没有得到简化,原因在于如此简单的MLP完全没有必要,也不可能再简化。文献 描述了大型神经网络得到明显简化的实例。需要注意的是,FPNA是一个适应神经计算的硬件框架,而不是一种处理简化神经计算的实现方法(Field Programmable Neural Network,FPNN)。要设计一个FPNA,首先要选择一个针对应用的合适的标准神经架构,然后决定一个既适合于实现又在功能上等价于所选择神经网络的可配置FPNA,FPNA独特的计算方案在于在复杂神经网络和可用的硬件资源之间创造了一座桥梁,它适用于许多实现选择;最后,得到的FP-NA直接映射到硬件设备上,这将得益于完整的模块式实现,即对于每个神经资源,预先给定可配置模块,然后依照。FPNA硬件友好的架构进行组合。    3 基于FPGA的神经网络的性能评估及局限性   对于FPGA实现的ANN,最普遍的性能评估方法是每秒神经元乘累加的次数(Connections-Per-Sec-ond,CPS)和即每秒权值更新的次数(Connections-Updates-Per-Second,CPUS)。但是CPS和CPUS并不是适于所有的网络,如RBF径向基网络,另外,更大的CPS和CPUS值并不一定意味着更好的性能。因此,最好的性能测量方法是实际执行时间,但是仍有些问题要讨论。FPGA实现神经网络存在的一些缺点(相对于计算机软件而言):   (1)FPGA上实现的神经网络大多数是计算结构,而不是认知结构(虽然现在有些人试图在FPGA上实现BP算法。但是整个的结构和时序控制变得很复杂,并且无法达到计算机软件那样的计算精度);   (2)在FPGA上实现的神经网络通用性差。目前FPGA的使用者大多数都是在RTL级(寄存器传输级)编写VHDL/Verilog HDL实现数字系统,而正在兴起的Handel-CSystemC,可以使硬件编程者站在算法级角度,可能对以后的基于FPGA的神经网络的性能有所改善。    4 基于FPGA实现神经网络的发展方向   (1)一种基于REMAP-β实现神经网络汁算机的方法。REMAP-β可重构架构基于FPGA技术,RE-MAP-β并行计算机应用在嵌入式实时系统中,以有效提高ANN算法实现的效率,目前它的进一步发展RE-MAP-r正在探讨中。   (2)另一种基于FPGA实现神经网络的发展方向——系统C语言,直接在可编程硬件平台支持C/C++,使得编程更加容易。但是这个转换并不容易,因为:FPGA不是程序,而是电路。    5 结 语   详细总结了FPGA实现神经网络的方法及相关问题,这里要注意,基于FPGA实现神经网络,并不是要与基于计算机软件实现一比高低,相反,在很多情况下,采用计算机软件测试神经网络的收敛情况,计算出收敛时的权值,然后通过数据口线与FPGA模块通信,把权值交给FPGA中的神经网络,使用FPGA完成现实的工作。直到现在,软件方法仍然是实现神经网络的首选。另外,对于硬件设计者(指利用FPGA或者全定制、半定制ASIC实现设计)而言,mask ASICs提供首选的方法以得到大规模、快速和完全的神经网络。现在它已经开发出了所有的新型可编程器件的嵌入式资源,以得到可以实时训练的更有用的神经网络。
  • 热度 24
    2015-3-14 22:10
    1024 次阅读|
    0 个评论
    高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA)。无论你使用图形化设计程序,ANSI C语言还是VHDL语言,如此复杂的合成工艺会不禁让人去想FPGA真实的运作情况。在这个芯片中的程序在这些可设置硅片间到底是如何工作的。本文会使非数字化设计人员明白FPGA(现场可编程门阵列)的基础知识及其工作原理。此信息在使用高端设计工具时同样十分有用,希望可以为理解这一特别技术提供一些线索。 1. FPGA-现场可编程门阵列 每一块FPGA芯片都是由有限多个带有可编程连接的预定义源组成来实现一种可重构数字电路。 图1.FPGA不同构成 FPGA芯片说明书中,包含了可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式RAM)的大小。FPGA芯片中还有很多其它的部分,但是以上指标通常是为特定应用选择和比较FPGA时,最重要的参考指标。 在最底层,可配置逻辑模块(如片或逻辑单元)有着两种最基本的部件:触发器和查找表(LUT)。这很重要,因为各种FPGA家族之所以各不相同,就是因为触发器和查找表组合的方式不同。例如,Virtex-II 系列的FPGA ,它的片具有两个查找表和两个触发器,而Virtex-5 FPGA的片具有4个查找表和4个触发器。查找表本身的结构也可能各不相同(4输入或6输入)。关于查找表工作原理的更多信息将在后面的章节中给出。 表1中列出了在NI LabVIEW FPGA硬件目标中使用的FPGA的指标。逻辑门的数量是一种将FPGA芯片与ASIC技术进行比较的传统方法,但是它并不能真实地表述FPGA内部的独立单元的数量。这就是Xilinx公司没有在新型Virtex-5系列中指定逻辑门数量的原因之一。 表1.不同系列FPGA源规格 为了更好地理解这些规格的意义,将编码考虑为合成的数字电路模式。对任何一段合成代码,或图形化或文本形式,都有相应的电路图反映逻辑组件该如何连线。通过一段简单布尔逻辑电路了解下相应的示意图。图2表示的是传递5个布尔信号并且可图形化计算所得的二进制值的功能组。 图2.载入5个信号的简单布尔逻辑 在通常情况下(LabVIEW SCTL—单周期定时环路外),图2所示相应电路图同图3所示相近。 图3.为图2中布尔逻辑的相应电路图 虽然很难明白,但是实际上这里创建了两个并行分支的电路。最上面的5条黑线被反馈到第一个分支,它在每个布尔操作间添加了触发器。最下面的5条黑线构成了第二个逻辑链。其中一支路在每步操作之间增加了同步寄存器,另一条逻辑链是确保执行数据流的。本电路图正常工作时总共需要12个触发器和12个查找表。上端分支和每个元件将在以后章节分析。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 2. 触发器 图4.触发器符号 触发器是二进制移位寄存器,用于同步逻辑以及保存时钟(脉冲)周期内的逻辑状态。在每个时间(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。在正常情况下,LabVIEW FPGA在每次操作之间都设置一个触发器,以保证有足够的时间来执行每步操作。对此律的例外只发生在SCTL结构中写代码的情况。在这个特殊的环路结构中,触发器只放置在闭环迭代的始末段,并且由编程者考虑定时因素来决定如何放置。对SCTL内代码如何同步的更多内容将在以后章节中讨论。图5表示的是图3的上端分支,触发器由红色高亮表示。 图5.绘制由红色高亮表示出触发器的电路图 3. 查找表 图6.双四输入查找表 图6所示示意图中的其他逻辑电路通过使用少量查找表形式的随机存取存储器实现。我们可以简单地假定FPGA中系统门的数量可参考与非门(NAND)以及或非门(NOR)的数量,但实际上,所有的组合逻辑(与门、或门、与非门、异或门等)都是通过查找表存储器中的真值表来实现。真值表是输出对应于每个输入值组合的预定义表(现在卡诺图的重要性在你的头脑中可能会慢慢淡化)。以下是对数字逻辑电路课程的快速回顾:比如,图7是布尔逻辑与门操作过程。 这是对数字逻辑课程的快速回顾: 例如,图7中显示了布尔型AND操作。 图7.布尔型AND操作 表2.布尔与门操作的真值表 你可以认为输入值是所有输出值的数字索引,如表3所示。 表3.布尔与门擦操作的真值查找表实现 Virtex-II和Spartan-3系列FPGA芯片有着4输入查找表来实现真正的4输入信号的16种组合。图8就是一个四输入电路实现的例子。 图8.输入布尔逻辑的四信号电路 表4所示为使用双四输入查找表实现的相应的真值表。 表4.图8中所示相应真值表 Virtex-5系列的FPGA使用双六输入查找表,可以通过6个不同输入信号的64种组合来实现真值表。因为触发器之间的组合逻辑十分复杂,所以在LabVIEW FPGA中使用SCTL也越来越重要。下一节将讲述SCTL如何优化利用LabVIEW中的FPGA源。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 4. SCTL 上几节中使用的代码例子假定代码是设置在SCTL外部,并为保证执行同步数据量也同步了附加电路。SCTL是LabVIEW FPGA中一个特殊结构,生成一个更为优化的电路图,以期望达到在一个时钟(脉冲)周期内执行完所有逻辑电路分支。例如,若设置SCTL在40MHZ运行,则所有逻辑电路分支将在25ns内执行完毕。 如果在SCTL中设置前例中同样的布尔逻辑电路(如图9所示),则生成如图10所示的相应电路示意图。 图9.附有STCL的简单布尔逻辑 图10.图9所示布尔逻辑相应的电路图 很明显,这种实现方法简单多了。在Virtex-II或Spartan-3系列FPGA中,触发器间的逻辑需要至少2个4输入查找表,如图11所示。 图11.图10中电路图的双四输入查找表实现 由于Virtex-5系列FPGA有着6输入的查找表,用户可以在一个查找表中实现相同数量的逻辑,如图12所示。 图12.图10中双六输入查找表实 本例中使用的SCTL(如图9所示)设置在40MHZ下运行,这意味着在任意触发器之间逻辑电路必须在25ns内完成执行。电子在电路中传播的速度决定了代码执行的最大速度。关键路线是有最长传播延迟的逻辑电路分支,它决定了该部分电路中理论最大时钟速率。Virtex-5 FPGA上的双六输入查找表不仅减少实现给定逻辑电路所需要的查找表总数,而且减少电子通过逻辑电路的传播延迟(时间)。Virtex-5系列FPGA中的6输入查找表不仅可以减少实现特定逻辑而需要的查找表的数量,而且可以降低逻辑中电流的传输延时。这意味着,您可简单地通过选择一个基于Virtex-5的硬件指标设置相同的SCTL,追求更快的时间速度。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 5. 乘数器和DSP片 图13.乘数器功能 看起来简单的两数相乘运算在数字电路中实现起来是十分复杂的,也是极为消耗资源的。为提供相关参考,图14所示是一种使用组合逻辑电路实现4×4字节乘数器的示意图。 图14.两个4字节输入相乘的电路图 试想两个32字节的数字相乘要通过2000多步操作才能得到结果。因此,FPGA预设了乘数器电路,在数学和信号处理应用中保存对查找表和触发器使用。Virtex-II和Spartan-3 FPGA拥有18×18bit乘法器,所以两个32字节数字相乘的运算需要三个乘法器来实现。许多信号处理算法都包括连乘运算结果的功能,因此Virtex-5等高性能FPGA都预设被称为DSP片的乘数器累加电路.这些预设处理组件,也被称为DSP48片,包括25×18bit乘数器以及加法器电路,尽管您可单独使用乘数器功能。表5所示为不同FPGA系列DSP决策。 表5.不同FPGA的DSP源 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 6. 块随机存取存储器(RAM) 选择FPGA时,记忆源是另一个需要考虑的关键因素。嵌入FPGA芯片中的用户自定义随机存取存储器(RAM),对储存数据设置或平行环路之间传送数值很有帮助。基于FPGA系列,您可在16或36kb组件中设置板载RAM,或者使用触发器以数组来执行数据设置;然而,对于FPGA逻辑源来说,大型数组很快就变得十分“奢侈”。由100个32字节元素数组可消耗Virtex-II 1000 FPGA中超过30%的触发器,或者占用少于1%的嵌入式块RAM。DSP算法通常需要追踪整个数据块或是复杂等式的系数,而在没有板载存储器情况下,许多处理功能在FPGA芯片的硬件逻辑电路中都不适用。图16所示为使用块RAM读写存储器的图形化功能。 图15.用于读写存储器的块RAM函数 同样,你也可以使用内存块,将一段完整周期存储为数值和索引的顺序表,为板载信号发生器存储周期性波形数据。输出信号的最终频率由检索数值的速度决定,这样您就可用此方法动态改变输出频率,而不需要输入波形中的急剧变化。 图17.用于先进先出缓冲器的块RAM功能 FPGA固有的并行执行要求逻辑电路独立元件可在不用时间脉冲下驱动。在不同运行速度下的逻辑电路之间传递数据是很棘手的。使用先进先出(FIFO)缓冲器时,板载存储器可用来是传输更加平稳。如图16所示,用户可以将FIFO缓冲器配置成不同大小以确保数据在FPGA芯片的非同步部件间不会丢失。表6所示为嵌入不同FPGA系列的用户可设置快RAM。 表6.不同FPGA的记忆源 7. 总结 随着高端技术的发展以及新概念的深入概括,FPGA技术地采用将不断增加。然而探究FPGA其中奥秘,感叹这硅片中在方框图间汇编出的变化,也是十分重要的。在发展阶段,如果您懂得如何利用和优化资源,比较和选择触发器、查找表、乘数器和块RAM等硬件指标是十分有帮助的。 这些基本的功能块并不是包含所有资源的完整清单,而且这篇白皮书并没有包含对所有FPGA部件的讨论。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM)
  • 热度 14
    2015-1-30 19:48
    1221 次阅读|
    0 个评论
    高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA)。无论你使用图形化设计程序,ANSI C语言还是VHDL语言,如此复杂的合成工艺会不禁让人去想FPGA真实的运作情况。在这个芯片中的程序在这些可设置硅片间到底是如何工作的。本文会使非数字化设计人员明白FPGA(现场可编程门阵列)的基础知识及其工作原理。此信息在使用高端设计工具时同样十分有用,希望可以为理解这一特别技术提供一些线索。 1. FPGA-现场可编程门阵列 每一块FPGA芯片都是由有限多个带有可编程连接的预定义源组成来实现一种可重构数字电路。 图1.FPGA不同构成 FPGA芯片说明书中,包含了可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式RAM)的大小。FPGA芯片中还有很多其它的部分,但是以上指标通常是为特定应用选择和比较FPGA时,最重要的参考指标。 在最底层,可配置逻辑模块(如片或逻辑单元)有着两种最基本的部件:触发器和查找表(LUT)。这很重要,因为各种FPGA家族之所以各不相同,就是因为触发器和查找表组合的方式不同。例如,Virtex-II 系列的FPGA ,它的片具有两个查找表和两个触发器,而Virtex-5 FPGA的片具有4个查找表和4个触发器。查找表本身的结构也可能各不相同(4输入或6输入)。关于查找表工作原理的更多信息将在后面的章节中给出。 表1中列出了在NI LabVIEW FPGA硬件目标中使用的FPGA的指标。逻辑门的数量是一种将FPGA芯片与ASIC技术进行比较的传统方法,但是它并不能真实地表述FPGA内部的独立单元的数量。这就是Xilinx公司没有在新型Virtex-5系列中指定逻辑门数量的原因之一。 表1.不同系列FPGA源规格 为了更好地理解这些规格的意义,将编码考虑为合成的数字电路模式。对任何一段合成代码,或图形化或文本形式,都有相应的电路图反映逻辑组件该如何连线。通过一段简单布尔逻辑电路了解下相应的示意图。图2表示的是传递5个布尔信号并且可图形化计算所得的二进制值的功能组。 图2.载入5个信号的简单布尔逻辑 在通常情况下(LabVIEW SCTL—单周期定时环路外),图2所示相应电路图同图3所示相近。 图3.为图2中布尔逻辑的相应电路图 虽然很难明白,但是实际上这里创建了两个并行分支的电路。最上面的5条黑线被反馈到第一个分支,它在每个布尔操作间添加了触发器。最下面的5条黑线构成了第二个逻辑链。其中一支路在每步操作之间增加了同步寄存器,另一条逻辑链是确保执行数据流的。本电路图正常工作时总共需要12个触发器和12个查找表。上端分支和每个元件将在以后章节分析。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 2. 触发器 图4.触发器符号 触发器是二进制移位寄存器,用于同步逻辑以及保存时钟(脉冲)周期内的逻辑状态。在每个时间(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。在正常情况下,LabVIEW FPGA在每次操作之间都设置一个触发器,以保证有足够的时间来执行每步操作。对此律的例外只发生在SCTL结构中写代码的情况。在这个特殊的环路结构中,触发器只放置在闭环迭代的始末段,并且由编程者考虑定时因素来决定如何放置。对SCTL内代码如何同步的更多内容将在以后章节中讨论。图5表示的是图3的上端分支,触发器由红色高亮表示。 图5.绘制由红色高亮表示出触发器的电路图 3. 查找表 图6.双四输入查找表 图6所示示意图中的其他逻辑电路通过使用少量查找表形式的随机存取存储器实现。我们可以简单地假定FPGA中系统门的数量可参考与非门(NAND)以及或非门(NOR)的数量,但实际上,所有的组合逻辑(与门、或门、与非门、异或门等)都是通过查找表存储器中的真值表来实现。真值表是输出对应于每个输入值组合的预定义表(现在卡诺图的重要性在你的头脑中可能会慢慢淡化)。以下是对数字逻辑电路课程的快速回顾:比如,图7是布尔逻辑与门操作过程。 这是对数字逻辑课程的快速回顾: 例如,图7中显示了布尔型AND操作。 图7.布尔型AND操作 表2.布尔与门操作的真值表 你可以认为输入值是所有输出值的数字索引,如表3所示。 表3.布尔与门擦操作的真值查找表实现 Virtex-II和Spartan-3系列FPGA芯片有着4输入查找表来实现真正的4输入信号的16种组合。图8就是一个四输入电路实现的例子。 图8.输入布尔逻辑的四信号电路 表4所示为使用双四输入查找表实现的相应的真值表。 表4.图8中所示相应真值表 Virtex-5系列的FPGA使用双六输入查找表,可以通过6个不同输入信号的64种组合来实现真值表。因为触发器之间的组合逻辑十分复杂,所以在LabVIEW FPGA中使用SCTL也越来越重要。下一节将讲述SCTL如何优化利用LabVIEW中的FPGA源。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 4. SCTL 上几节中使用的代码例子假定代码是设置在SCTL外部,并为保证执行同步数据量也同步了附加电路。SCTL是LabVIEW FPGA中一个特殊结构,生成一个更为优化的电路图,以期望达到在一个时钟(脉冲)周期内执行完所有逻辑电路分支。例如,若设置SCTL在40MHZ运行,则所有逻辑电路分支将在25ns内执行完毕。 如果在SCTL中设置前例中同样的布尔逻辑电路(如图9所示),则生成如图10所示的相应电路示意图。 图9.附有STCL的简单布尔逻辑 图10.图9所示布尔逻辑相应的电路图 很明显,这种实现方法简单多了。在Virtex-II或Spartan-3系列FPGA中,触发器间的逻辑需要至少2个4输入查找表,如图11所示。 图11.图10中电路图的双四输入查找表实现 由于Virtex-5系列FPGA有着6输入的查找表,用户可以在一个查找表中实现相同数量的逻辑,如图12所示。 图12.图10中双六输入查找表实 本例中使用的SCTL(如图9所示)设置在40MHZ下运行,这意味着在任意触发器之间逻辑电路必须在25ns内完成执行。电子在电路中传播的速度决定了代码执行的最大速度。关键路线是有最长传播延迟的逻辑电路分支,它决定了该部分电路中理论最大时钟速率。Virtex-5 FPGA上的双六输入查找表不仅减少实现给定逻辑电路所需要的查找表总数,而且减少电子通过逻辑电路的传播延迟(时间)。Virtex-5系列FPGA中的6输入查找表不仅可以减少实现特定逻辑而需要的查找表的数量,而且可以降低逻辑中电流的传输延时。这意味着,您可简单地通过选择一个基于Virtex-5的硬件指标设置相同的SCTL,追求更快的时间速度。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 5. 乘数器和DSP片 图13.乘数器功能 看起来简单的两数相乘运算在数字电路中实现起来是十分复杂的,也是极为消耗资源的。为提供相关参考,图14所示是一种使用组合逻辑电路实现4×4字节乘数器的示意图。 图14.两个4字节输入相乘的电路图 试想两个32字节的数字相乘要通过2000多步操作才能得到结果。因此,FPGA预设了乘数器电路,在数学和信号处理应用中保存对查找表和触发器使用。Virtex-II和Spartan-3 FPGA拥有18×18bit乘法器,所以两个32字节数字相乘的运算需要三个乘法器来实现。许多信号处理算法都包括连乘运算结果的功能,因此Virtex-5等高性能FPGA都预设被称为DSP片的乘数器累加电路.这些预设处理组件,也被称为DSP48片,包括25×18bit乘数器以及加法器电路,尽管您可单独使用乘数器功能。表5所示为不同FPGA系列DSP决策。 表5.不同FPGA的DSP源 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 6. 块随机存取存储器(RAM) 选择FPGA时,记忆源是另一个需要考虑的关键因素。嵌入FPGA芯片中的用户自定义随机存取存储器(RAM),对储存数据设置或平行环路之间传送数值很有帮助。基于FPGA系列,您可在16或36kb组件中设置板载RAM,或者使用触发器以数组来执行数据设置;然而,对于FPGA逻辑源来说,大型数组很快就变得十分“奢侈”。由100个32字节元素数组可消耗Virtex-II 1000 FPGA中超过30%的触发器,或者占用少于1%的嵌入式块RAM。DSP算法通常需要追踪整个数据块或是复杂等式的系数,而在没有板载存储器情况下,许多处理功能在FPGA芯片的硬件逻辑电路中都不适用。图16所示为使用块RAM读写存储器的图形化功能。 图15.用于读写存储器的块RAM函数 同样,你也可以使用内存块,将一段完整周期存储为数值和索引的顺序表,为板载信号发生器存储周期性波形数据。输出信号的最终频率由检索数值的速度决定,这样您就可用此方法动态改变输出频率,而不需要输入波形中的急剧变化。 图17.用于先进先出缓冲器的块RAM功能 FPGA固有的并行执行要求逻辑电路独立元件可在不用时间脉冲下驱动。在不同运行速度下的逻辑电路之间传递数据是很棘手的。使用先进先出(FIFO)缓冲器时,板载存储器可用来是传输更加平稳。如图16所示,用户可以将FIFO缓冲器配置成不同大小以确保数据在FPGA芯片的非同步部件间不会丢失。表6所示为嵌入不同FPGA系列的用户可设置快RAM。 表6.不同FPGA的记忆源 7. 总结 随着高端技术的发展以及新概念的深入概括,FPGA技术地采用将不断增加。然而探究FPGA其中奥秘,感叹这硅片中在方框图间汇编出的变化,也是十分重要的。在发展阶段,如果您懂得如何利用和优化资源,比较和选择触发器、查找表、乘数器和块RAM等硬件指标是十分有帮助的。 这些基本的功能块并不是包含所有资源的完整清单,而且这篇白皮书并没有包含对所有FPGA部件的讨论。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM)
  • 热度 22
    2014-9-8 20:34
    960 次阅读|
    0 个评论
    高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA)。无论你使用图形化设计程序,ANSI C语言还是VHDL语言,如此复杂的合成工艺会不禁让人去想FPGA真实的运作情况。在这个芯片中的程序在这些可设置硅片间到底是如何工作的。本文会使非数字化设计人员明白FPGA(现场可编程门阵列)的基础知识及其工作原理。此信息在使用高端设计工具时同样十分有用,希望可以为理解这一特别技术提供一些线索。 1. FPGA-现场可编程门阵列 每一块FPGA芯片都是由有限多个带有可编程连接的预定义源组成来实现一种可重构数字电路。 图1.FPGA不同构成 FPGA芯片说明书中,包含了可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式RAM)的大小。FPGA芯片中还有很多其它的部分,但是以上指标通常是为特定应用选择和比较FPGA时,最重要的参考指标。 在最底层,可配置逻辑模块(如片或逻辑单元)有着两种最基本的部件:触发器和查找表(LUT)。这很重要,因为各种FPGA家族之所以各不相同,就是因为触发器和查找表组合的方式不同。例如,Virtex-II 系列的FPGA ,它的片具有两个查找表和两个触发器,而Virtex-5 FPGA的片具有4个查找表和4个触发器。查找表本身的结构也可能各不相同(4输入或6输入)。关于查找表工作原理的更多信息将在后面的章节中给出。 表1中列出了在NI LabVIEW FPGA硬件目标中使用的FPGA的指标。逻辑门的数量是一种将FPGA芯片与ASIC技术进行比较的传统方法,但是它并不能真实地表述FPGA内部的独立单元的数量。这就是Xilinx公司没有在新型Virtex-5系列中指定逻辑门数量的原因之一。 表1.不同系列FPGA源规格 为了更好地理解这些规格的意义,将编码考虑为合成的数字电路模式。对任何一段合成代码,或图形化或文本形式,都有相应的电路图反映逻辑组件该如何连线。通过一段简单布尔逻辑电路了解下相应的示意图。图2表示的是传递5个布尔信号并且可图形化计算所得的二进制值的功能组。 图2.载入5个信号的简单布尔逻辑 在通常情况下(LabVIEW SCTL—单周期定时环路外),图2所示相应电路图同图3所示相近。 图3.为图2中布尔逻辑的相应电路图 虽然很难明白,但是实际上这里创建了两个并行分支的电路。最上面的5条黑线被反馈到第一个分支,它在每个布尔操作间添加了触发器。最下面的5条黑线构成了第二个逻辑链。其中一支路在每步操作之间增加了同步寄存器,另一条逻辑链是确保执行数据流的。本电路图正常工作时总共需要12个触发器和12个查找表。上端分支和每个元件将在以后章节分析。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 2. 触发器 图4.触发器符号 触发器是二进制移位寄存器,用于同步逻辑以及保存时钟(脉冲)周期内的逻辑状态。在每个时间(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。在正常情况下,LabVIEW FPGA在每次操作之间都设置一个触发器,以保证有足够的时间来执行每步操作。对此律的例外只发生在SCTL结构中写代码的情况。在这个特殊的环路结构中,触发器只放置在闭环迭代的始末段,并且由编程者考虑定时因素来决定如何放置。对SCTL内代码如何同步的更多内容将在以后章节中讨论。图5表示的是图3的上端分支,触发器由红色高亮表示。 图5.绘制由红色高亮表示出触发器的电路图 3. 查找表 图6.双四输入查找表 图6所示示意图中的其他逻辑电路通过使用少量查找表形式的随机存取存储器实现。我们可以简单地假定FPGA中系统门的数量可参考与非门(NAND)以及或非门(NOR)的数量,但实际上,所有的组合逻辑(与门、或门、与非门、异或门等)都是通过查找表存储器中的真值表来实现。真值表是输出对应于每个输入值组合的预定义表(现在卡诺图的重要性在你的头脑中可能会慢慢淡化)。以下是对数字逻辑电路课程的快速回顾:比如,图7是布尔逻辑与门操作过程。 这是对数字逻辑课程的快速回顾: 例如,图7中显示了布尔型AND操作。 图7.布尔型AND操作 表2.布尔与门操作的真值表 你可以认为输入值是所有输出值的数字索引,如表3所示。 表3.布尔与门擦操作的真值查找表实现 Virtex-II和Spartan-3系列FPGA芯片有着4输入查找表来实现真正的4输入信号的16种组合。图8就是一个四输入电路实现的例子。 图8.输入布尔逻辑的四信号电路 表4所示为使用双四输入查找表实现的相应的真值表。 表4.图8中所示相应真值表 Virtex-5系列的FPGA使用双六输入查找表,可以通过6个不同输入信号的64种组合来实现真值表。因为触发器之间的组合逻辑十分复杂,所以在LabVIEW FPGA中使用SCTL也越来越重要。下一节将讲述SCTL如何优化利用LabVIEW中的FPGA源。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 4. SCTL 上几节中使用的代码例子假定代码是设置在SCTL外部,并为保证执行同步数据量也同步了附加电路。SCTL是LabVIEW FPGA中一个特殊结构,生成一个更为优化的电路图,以期望达到在一个时钟(脉冲)周期内执行完所有逻辑电路分支。例如,若设置SCTL在40MHZ运行,则所有逻辑电路分支将在25ns内执行完毕。 如果在SCTL中设置前例中同样的布尔逻辑电路(如图9所示),则生成如图10所示的相应电路示意图。 图9.附有STCL的简单布尔逻辑 图10.图9所示布尔逻辑相应的电路图 很明显,这种实现方法简单多了。在Virtex-II或Spartan-3系列FPGA中,触发器间的逻辑需要至少2个4输入查找表,如图11所示。 图11.图10中电路图的双四输入查找表实现 由于Virtex-5系列FPGA有着6输入的查找表,用户可以在一个查找表中实现相同数量的逻辑,如图12所示。 图12.图10中双六输入查找表实 本例中使用的SCTL(如图9所示)设置在40MHZ下运行,这意味着在任意触发器之间逻辑电路必须在25ns内完成执行。电子在电路中传播的速度决定了代码执行的最大速度。关键路线是有最长传播延迟的逻辑电路分支,它决定了该部分电路中理论最大时钟速率。Virtex-5 FPGA上的双六输入查找表不仅减少实现给定逻辑电路所需要的查找表总数,而且减少电子通过逻辑电路的传播延迟(时间)。Virtex-5系列FPGA中的6输入查找表不仅可以减少实现特定逻辑而需要的查找表的数量,而且可以降低逻辑中电流的传输延时。这意味着,您可简单地通过选择一个基于Virtex-5的硬件指标设置相同的SCTL,追求更快的时间速度。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 5. 乘数器和DSP片 图13.乘数器功能 看起来简单的两数相乘运算在数字电路中实现起来是十分复杂的,也是极为消耗资源的。为提供相关参考,图14所示是一种使用组合逻辑电路实现4×4字节乘数器的示意图。 图14.两个4字节输入相乘的电路图 试想两个32字节的数字相乘要通过2000多步操作才能得到结果。因此,FPGA预设了乘数器电路,在数学和信号处理应用中保存对查找表和触发器使用。Virtex-II和Spartan-3 FPGA拥有18×18bit乘法器,所以两个32字节数字相乘的运算需要三个乘法器来实现。许多信号处理算法都包括连乘运算结果的功能,因此Virtex-5等高性能FPGA都预设被称为DSP片的乘数器累加电路.这些预设处理组件,也被称为DSP48片,包括25×18bit乘数器以及加法器电路,尽管您可单独使用乘数器功能。表5所示为不同FPGA系列DSP决策。 表5.不同FPGA的DSP源 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM) 6. 块随机存取存储器(RAM) 选择FPGA时,记忆源是另一个需要考虑的关键因素。嵌入FPGA芯片中的用户自定义随机存取存储器(RAM),对储存数据设置或平行环路之间传送数值很有帮助。基于FPGA系列,您可在16或36kb组件中设置板载RAM,或者使用触发器以数组来执行数据设置;然而,对于FPGA逻辑源来说,大型数组很快就变得十分“奢侈”。由100个32字节元素数组可消耗Virtex-II 1000 FPGA中超过30%的触发器,或者占用少于1%的嵌入式块RAM。DSP算法通常需要追踪整个数据块或是复杂等式的系数,而在没有板载存储器情况下,许多处理功能在FPGA芯片的硬件逻辑电路中都不适用。图16所示为使用块RAM读写存储器的图形化功能。 图15.用于读写存储器的块RAM函数 同样,你也可以使用内存块,将一段完整周期存储为数值和索引的顺序表,为板载信号发生器存储周期性波形数据。输出信号的最终频率由检索数值的速度决定,这样您就可用此方法动态改变输出频率,而不需要输入波形中的急剧变化。 图17.用于先进先出缓冲器的块RAM功能 FPGA固有的并行执行要求逻辑电路独立元件可在不用时间脉冲下驱动。在不同运行速度下的逻辑电路之间传递数据是很棘手的。使用先进先出(FIFO)缓冲器时,板载存储器可用来是传输更加平稳。如图16所示,用户可以将FIFO缓冲器配置成不同大小以确保数据在FPGA芯片的非同步部件间不会丢失。表6所示为嵌入不同FPGA系列的用户可设置快RAM。 表6.不同FPGA的记忆源 7. 总结 随着高端技术的发展以及新概念的深入概括,FPGA技术地采用将不断增加。然而探究FPGA其中奥秘,感叹这硅片中在方框图间汇编出的变化,也是十分重要的。在发展阶段,如果您懂得如何利用和优化资源,比较和选择触发器、查找表、乘数器和块RAM等硬件指标是十分有帮助的。 这些基本的功能块并不是包含所有资源的完整清单,而且这篇白皮书并没有包含对所有FPGA部件的讨论。 【分页导航】 第1页: FPGA-现场可编程门阵列 第2页: 触发器、查找表 第3页: SCTL 第4页: 乘数器和DSP片 第5页: 块随机存取存储器(RAM)
相关资源
  • 所需E币: 0
    时间: 2023-4-20 14:10
    大小: 107.39KB
    上传者: 木头1233
    基于FPGA的乘法器设计资料源代码
  • 所需E币: 5
    时间: 2021-9-19 20:40
    大小: 324.1KB
    上传者: ZHUANG
    基于乘法器的模拟电路参数测量系统的设计与实现
  • 所需E币: 5
    时间: 2021-9-19 20:40
    大小: 243.99KB
    上传者: ZHUANG
    基于乘法器的模拟电路参数测量方法
  • 所需E币: 5
    时间: 2021-9-7 21:48
    大小: 12.64MB
    上传者: czd886
    NAND+Flash控制器的FPGA实现及有限域乘法器的优化
  • 所需E币: 0
    时间: 2021-4-8 14:59
    大小: 9.67MB
    上传者: czd886
    集成电路设计中乘法器的低功耗算法与实现技术研究
  • 所需E币: 0
    时间: 2021-3-22 18:17
    大小: 352.39KB
    上传者: Goodluck2020
    三种高速乘法器的FPGA实现及性能比较.zip
  • 所需E币: 1
    时间: 2021-3-17 10:28
    大小: 4.6MB
    上传者: ZHUANG
    高速DSP芯片中乘法器的研究和设计
  • 所需E币: 1
    时间: 2021-3-16 09:30
    大小: 2.85MB
    上传者: ZHUANG
    基于0.35μm+SiGe工艺的低功耗复数乘法器ASIC芯片设计
  • 所需E币: 1
    时间: 2021-3-15 17:14
    大小: 161.32KB
    上传者: ZHUANG
    32位DSP乘法器分析与设计
  • 所需E币: 1
    时间: 2020-12-18 16:33
    大小: 93KB
    上传者: zendy_731593397
    4089CMOS二进制系数乘法器
  • 所需E币: 1
    时间: 2020-12-18 16:39
    大小: 102KB
    上传者: zendy_731593397
    4527CMOSBCD系数乘法器
  • 所需E币: 1
    时间: 2020-12-18 16:42
    大小: 171KB
    上传者: zendy_731593397
    4554CMOS2×2并行二进制乘法器
  • 所需E币: 0
    时间: 2020-12-22 16:15
    大小: 394.82KB
    上传者: samewell
    乘法器与调制器虽然许多有关调制的描述都将其描绘成一种乘法过程,但实际情况更为复杂。首先,为清晰起见,若信号Acos)和未调制载波cos(ω...
  • 所需E币: 3
    时间: 2020-11-8 21:28
    大小: 347.27KB
    上传者: kaidi2003
    三种高速乘法器的FPGA实现及性能比较
  • 所需E币: 0
    时间: 2020-9-22 22:46
    大小: 394.32KB
    上传者: bwj312
    三种高速乘法器的FPGA实现及性能比较.pdf
  • 所需E币: 2
    时间: 2020-6-19 22:23
    大小: 420.79KB
    上传者: Goodluck2020
    乘法器与调制器.pdf
  • 所需E币: 4
    时间: 2019-12-25 11:58
    大小: 732.9KB
    上传者: wsu_w_hotmail.com
    在FPGA中实现乘法器ImplementingMultipliersinFPGADevicesJuly2004,ver.3.0ApplicationNote306IntroductionStratixII,Stratix,StratixGX,CycloneII,andCyclonedeviceshavededicatedarchitecturalfeaturesthatmakeiteasytoimplementhigh-performancemultipliers.StratixII,Stratix,andStratixGXdevicesfeatureembeddedhigh-performancemultiplier-accumulators(MACs)indedicateddigitalsignalprocessing(DSP)blocks.DSPblockscanoperateatdataratesabove300millionsamplespersecond(MSPS),making……
  • 所需E币: 4
    时间: 2020-1-4 11:56
    大小: 742.27KB
    上传者: quw431979_163.com
    模拟乘法器是具有两个输入端口和一个输出端口的一种器件。输出端的信号为两个输入信号之积。如果输入和输出信号均为电压,则传输特性为两个电压之积与一个比例因子K的比值,而K则拥有电压的一个维度.MT-079指南模拟乘法器模拟乘法器基础知识模拟乘法器是具有两个输入端口和一个输出端口的一种器件。输出端的信号为两个输入信号之积。如果输入和输出信号均为电压,则传输特性为两个电压之积与一个比例因子K的比值,而K则拥有电压的一个维度(如图1所示)。图1:基础模拟乘法器与乘法器象限的定义从数学角度来看,乘法是一种“四象限”运算――换言之,两个输入可能为正,也可能为负,输出亦是如此。然而,用于生产电子乘法器的某些电路仅支持单极性信号。如果两个信号都必须是单极性的,结果形成一个“单象限”乘法器,输出同样也会是单极性的。如果其中一个信号为单极性,而其他信号可能为正或负,则乘法器就是一个“二象限”乘法器,输出可能为两个极性之一(因而为“双极性”)。用于产生一象限或二象限乘法器的电路可能比四象限乘法器所需电路要简单,由于许多应用并不需要全四象限乘法,因此,常用的是仅支持一象限或二象限的精密器件。一个示例是AD539,这是一款宽带双通道二象限乘法器,具有一个单极性Vy输入,其相对受限带宽为5MHz,还有两个双极性Vx输入,每个乘法器各一个,带宽为60MHz。图2显示的是AD539的框图。Rev.0,10/08,WKPage1of8……
  • 所需E币: 4
    时间: 2020-1-4 12:50
    大小: 257.26KB
    上传者: 16245458_qq.com
    基于改进波兹编码的乘法器设计中,在处理部分积累加时,为了提高速度、减小面积,可以单独对符号位扩展部分进行优化处理.本文就符号位扩展运算提出了一种使用'或'-'异或'处理的快速算法.该方法有效地减少了门的使用数量,提高了处理速度.……
  • 所需E币: 4
    时间: 2019-12-25 03:47
    大小: 261.17KB
    上传者: 微风DS
    几种常用的乘法器的设计……