每一块FPGA芯片都是由有限多个带有可编程连接的预定义源组成来实现一种可重构数字电路。
图1.FPGA不同构成
FPGA芯片解释书中,包含了可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式RAM)的大小。FPGA芯片中还有很多其它的部分,但是以上指标常日是为特定运用选择和比较FPGA时,最主要的参考指标。

在最底层,可配置逻辑模块(如片或逻辑单元)有着两种最基本的部件:触发器和查找表(LUT)。这很主要,由于各种FPGA家族之以是各不相同,便是由于触发器和查找表组合的办法不同。例如,Virtex-II系列的FPGA,它的片具有两个查找表和两个触发器,而Virtex-5FPGA的片具有4个查找表和4个触发器。查找表本身的构造也可能各不相同(4输入或6输入)。关于查找表事情事理的更多信息将在后面的章节中给出。
表1中列出了在NILabVIEWFPGA硬件目标中利用的FPGA的指标。逻辑门的数量是一种将FPGA芯片与ASIC技能进行比较的传统方法,但是它并不能真实地表述FPGA内部的独立单元的数量。这便是Xilinx公司没有在新型Virtex-5系列中指定逻辑门数量的缘故原由之一。
表1.不同系列FPGA源规格
为了更好地理解这些规格的意义,将编码考虑为合成的数字电路模式。对任何一段合成代码,或图形化或文本形式,都有相应的电路图反响逻辑组件该如何连线。通过一段大略布尔逻辑电路理解下相应的示意图。图2表示的是通报5个布尔旗子暗记并且可图形化打算所得的二进制值的功能组。
图2.载入5个旗子暗记的大略布尔逻辑
在常日情形下(LabVIEWSCTL—单周期定时环路外),图2所示相应电路图同图3所示附近。
图3.为图2中布尔逻辑的相应电路图
虽然很难解白,但是实际上这里创建了两个并行分支的电路。最上面的5条黑线被反馈到第一个分支,它在每个布尔操作间添加了触发器。最下面的5条黑线构成了第二个逻辑链。个中一岔路支路在每步操作之间增加了同步寄存器,另一条逻辑链是确保实行数据流的。本电路图正常事情时统共须要12个触发器和12个查找表。上端分支和每个元件将在往后章节剖析。
图4.触发器符号
触发器是二进制移位寄存器,用于同步逻辑以及保存时钟(脉冲)周期内的逻辑状态。在每个韶光(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。
在正常情形下,LabVIEWFPGA在每次操作之间都设置一个触发器,以担保有足够的韶光来实行每步操作。对此律的例外只发生在SCTL构造中写代码的情形。在这个分外的环路构造中,触发器只放置在闭环迭代的始末段,并且由编程者考虑定时成分来决定如何放置。对SCTL内代码如何同步的更多内容将在往后章节中谈论。图5表示的是图3的上端分支,触发器由赤色高亮表示。
图5.绘制由赤色高亮表示出触发器的电路图
图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种组合来实现真值表。由于触发器之间的组合逻辑十分繁芜,以是在LabVIEWFPGA中利用SCTL也越来越主要。下一节将讲述SCTL如何优化利用LabVIEW中的FPGA源。
上几节中利用的代码例子假定代码是设置在SCTL外部,并为担保实行同步数据量也同步了附加电路。
SCTL是LabVIEWFPGA中一个分外构造,天生一个更为优化的电路图,以期望达到在一个时钟(脉冲)周期内实行完所有逻辑电路分支。例如,若设置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-5FPGA上的双六输入查找表不仅减少实现给定逻辑电路所须要的查找表总数,而且减少电子通过逻辑电路的传播延迟(韶光)。Virtex-5系列FPGA中的6输入查找表不仅可以减少实现特定逻辑而须要的查找表的数量,而且可以降落逻辑中电流的传输延时。这意味着,您可大略地通过选择一个基于Virtex-5的硬件指标设置相同的SCTL,追求更快的韶光速率。
图13.乘数器功能
看起来大略的两数相乘运算在数字电路中实现起来是十分繁芜的,也是极为花费资源的。为供应干系参考,图14所示是一种利用组合逻辑电路实现4×4字节乘数器的示意图。
图14.两个4字节输入相乘的电路图
试想两个32字节的数字相乘要通过2000多步操作才能得到结果。因此,FPGA预设了乘数器电路,在数学和旗子暗记处理运用中保存对查找表和触发器利用。Virtex-II和Spartan-3FPGA拥有18×18bit乘法器,以是两个32字节数字相乘的运算须要三个乘法器来实现。
许多旗子暗记处理算法都包括连乘运算结果的功能,因此Virtex-5等高性能FPGA都预设被称为DSP片的乘数器累加电路.这些预设处理组件,也被称为DSP48片,包括25×18bit乘数器以及加法器电路,只管您可单独利用乘数器功能。表5所示为不同FPGA系列DSP决策。
表5.不同FPGA的DSP源
选择FPGA时,影象源是另一个须要考虑的关键成分。嵌入FPGA芯片中的用户自定义随机存取存储器(RAM),对储存数据设置或平行环路之间传送数值很有帮助。基于FPGA系列,您可在16或36kb组件中设置板载RAM,或者利用触发器以数组来实行数据设置;然而,对付FPGA逻辑源来说,大型数组很快就变得十分“奢侈”。
由100个32字节元素数组可花费Virtex-II1000FPGA中超过30%的触发器,或者占用少于1%的嵌入式块RAM。DSP算法常日须要追踪全体数据块或是繁芜等式的系数,而在没有板载存储器情形下,许多处理功能在FPGA芯片的硬件逻辑电路中都不适用。图16所示为利用块RAM读写存储器的图形化功能。
图15.用于读写存储器的块RAM函数
同样,你也可以利用内存块,将一段完全周期存储为数值和索引的顺序表,为板载旗子暗记发生器存储周期性波形数据。输出旗子暗记的终极频率由检索数值的速率决定,这样您就可用此方法动态改变输出频率,而不须要输入波形中的急剧变革。
图16.用于前辈先出缓冲器的块RAM功能
FPGA固有的并行实行哀求逻辑电路独立元件可在不用韶光脉冲下驱动。在不同运行速率下的逻辑电路之间通报数据是很棘手的。利用前辈先出(FIFO)缓冲器时,板载存储器可用来是传输更加平稳。
如图16所示,用户可以将FIFO缓冲器配置身分歧大小以确保数据在FPGA芯片的非同步部件间不会丢失。表6所示为嵌入不同FPGA系列的用户可设置快RAM。
表6.不同FPGA的影象源
以上图文内容均转载自订阅号:电子工程天下(微信搜索 eeworldbbs 关注)
欢迎微博@EEWORLD
如果您也写过此类原创干货欢迎将您的原创发至:bbs_service@eeworld.com.cn,一经入选,我们将帮你登上头条!
聚焦行业关注热点, 理解科技最新前沿
敬请关注EEWorld电子头条
手机访问:http://www.eeworld.com.cn/mp/wap
电脑访问:http://www.eeworld.com.cn/mp
与更多行业内网友进行互换请上岸EEWorld论坛。