专栏名称: 猎芯头条
让电子产业链更简单!
目录
相关文章推荐
陕西司法  ·  《我是法律明白人》融媒体栏目开播了! ·  17 小时前  
内蒙古教育发布  ·  新学期,5条健康实用小贴士请查收 ·  昨天  
内蒙古教育发布  ·  新学期,5条健康实用小贴士请查收 ·  昨天  
中国法律评论  ·  【国际传播力】《中国法律评论》2024年这些 ... ·  3 天前  
最高人民法院  ·  全国人大代表谢丽——护航海岛旅游高质量发展 ·  3 天前  
上海社区发布  ·  减肥变厌食症!上海一成年女子体重只剩40余斤 ... ·  3 天前  
上海社区发布  ·  减肥变厌食症!上海一成年女子体重只剩40余斤 ... ·  3 天前  
51好读  ›  专栏  ›  猎芯头条

工程小白逆袭牛人:6招教你玩转FPGA

猎芯头条  · 公众号  ·  · 2019-03-19 16:30

正文

1.FPGA-现场可编程门阵列


每一块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个查找表。上端分支和每个元件将在以后章节分析。


2.触发器


图4.触发器符号


触发器是二进制移位寄存器,用于同步逻辑以及保存时钟(脉冲)周期内的逻辑状态。在每个时间(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。


在正常情况下,LabVIEWFPGA在每次操作之间都设置一个触发器,以保证有足够的时间来执行每步操作。对此律的例外只发生在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种组合来实现真值表。因为触发器之间的组合逻辑十分复杂,所以在LabVIEWFPGA中使用SCTL也越来越重要。下一节将讲述SCTL如何优化利用LabVIEW中的FPGA源。


4.SCTL


上几节中使用的代码例子假定代码是设置在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,追求更快的时间速度。


5.乘数器和DSP片


图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决策。








请到「今天看啥」查看全文