时间:2026-11-07 来源:FPGA_UCY 关于我们 0
1、fpga基础知识及其工作原理 高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列()。无论你用法图形化设计程序,ansi 还是语言,如此复杂的合成工艺会不禁让人去想fpga真切的运作状况。在这个芯片中的程序在这些可设置硅片间到底是如何工作的。本文会使非数字化设计人员明了fpga(现场可编程门阵列)的基础学问及其工作原理。此信息在用法高端设计工具时同样非常实用,希翼可以为理解这一特殊技术提供一些线索。1. fpga-现场可编程门阵列每一块fpga芯片都是由有限多个带有可编程衔接的预定义源组成来实现一种可重构数字。图1.fpga不同构成fpga芯片解释书中,包含了可编程规律
2、模块的数量、固定功能规律模块(如乘法器)的数目及存储器资源(如ram)的大小。fpga芯片中还有无数其它的部分,但是以上指标通常是为特定应用挑选和比较fpga时,最重要的参考指标。在最底层,可配置规律模块(如片或规律单元)有着两种最基本的部件:触发器和查找表(lut)。这很重要,由于各种fpga家族之所以各不相同,就是由于触发器和查找表组合的方式不同。例如,virtex-ii 系列的fpga ,它的片具有两个查找表和两个触发器,而virtex-5 fpga的片具有4个查找表和4个触发器。查找表本身的结构也可能各不相同(4输入或6输入)。关于查找表工作原理的更多信息将在后面的章节中给出。表1中列
3、出了在ni fpga硬件目标中用法的fpga的指标。规律门的数量是一种将fpga芯片与asic技术举行比较的传统办法,但是它并不能真切地表述fpga内部的自立单元的数量。这就是公司没有在新型virtex-5系列中指定规律门数量的缘由之一。表1.不同系列fpga源规格为了更好地理解这些规格的意义,将编码考虑为合成的数字电路模式。对任何一段合成代码,或图形化或文本形式,都有相应的反映规律组件该如何连线。通过一段容易布尔规律电路了解下相应的暗示图。图2表示的是传递5个布尔信号并且可图形化计算所得的二进制值的功能组。图2.载入5个信号的容易布尔规律在通常状况下(labview sctl单周期定时环路外
4、),图2所示相应电路图同图3所示相近。图3.为图2中布尔规律的相应电路图虽然很难明了,但是事实上这里创建了两个并行分支的电路。最上面的5条黑线被反馈到第一个分支,它在每个布尔操作间添加了触发器。最下面的5条黑线构成了其次个规律链。其中一支路在每步操作之间增强了同步寄存器,另一条规律链是确保执行数据流的。本电路图正常工作时总共需要12个触发器和12个查找表。上端分支和每个元件将在以后章节分析。2. 触发器图4.触发器符号触发器是二进制移位寄存器,用于同步规律以及保存时钟(脉冲)周期内的规律状态。在每个时光(脉冲)边沿,触发器在输入时锁定1(真)或0(假)值并且保存此值直到下次时钟(脉冲)边沿。在
5、正常状况下,labview fpga在每次操作之间都设置一个触发器,以保证有足够的时光来执行每步操作。对此律的例外只发生在sctl结构中写代码的状况。在这个特别的环路结构中,触发器只放置在闭环迭代的始末段,并且由编程者考虑定时因素来打算如何放置。对sctl内代码如何同步的更多内容将在以后章节中研究。图5表示的是图3的上端分支,触发器由红色高亮表示。图5.绘制由红色高亮表示出触发器的电路图3. 查找表图6.双四输入查找表图6所示暗示图中的其他规律电路通过用法少量查找表形式的随机存取存储器实现。我们可以容易地假定fpga中系统门的数量可参考与非门(nand)以及或非门(nor)的数量,但事实上,全
6、部的组合规律(与门、或门、与非门、异或门等)都是通过查找表存储器中的真值表来实现。真值表是输出对应于每个输入值组合的预定义表(现在卡诺图的重要性在你的头脑中可能会渐渐淡化)。以下是对数字规律电路课程的迅速回顾:比如,图7是布尔规律与门操作过程。这是对数字规律课程的迅速回顾:例如,图7中显示了布尔型and操作。图7.布尔型and操作表2.布尔与门操作的真值表你可以认为输入值是全部输出值的数字索引,如表3所示。表3.布尔与门擦操作的真值查找表实现virtex-ii和spartan-3系列fpga芯片有着4输入查找表来实现真正的4输入信号的16种组合。图8就是一个四输入电路实现的例子。图8.输入布尔
7、规律的四信号电路表4所示为用法双四输入查找表实现的相应的真值表。表4.图8中所示相应真值表virtex-5系列的fpga用法双六输入查找表,可以通过6个不同输入信号的64种组合来实现真值表。由于触发器之间的组合规律非常复杂,所以在labview fpga中用法sctl也越来越重要。下一节将叙述sctl如何优化利用labview中的fpga源。4. sctl上几节中用法的代码例子假定代码是设置在sctl外部,并为保证执行同步数据量也同步了附加电路。sctl是labview fpga中一个特别结构,生成一个更为优化的电路图,以期望达到在一个时钟(脉冲)周期内执行完全部规律电路分支。例如,若设置sc
8、tl在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下运行,这意味着在随
9、意触发器之间规律电路必需在25ns内完成执行。在电路中传扬的速度打算了代码执行的最大速度。关键路途是有最长传扬延迟的规律电路分支,它打算了该部分电路中理论最大时钟速率。virtex-5 fpga上的双六输入查找表不仅削减实现给定规律电路所需要的查找表总数,而且削减电子通过规律电路的传扬延迟(时光)。virtex-5系列fpga中的6输入查找表不仅可以削减实现特定规律而需要的查找表的数量,而且可以降低规律中的传输延时。这意味着,您可容易地通过挑选一个基于virtex-5的硬件指标设置相同的sctl,追求更快的时光速度。5. 乘数器和片图13.乘数器功能看起来容易的两数相乘运算在数字电路中实现起来
10、是非常复杂的,也是极为消耗资源的。为提供相关参考,图14所示是一种用法组合规律电路实现4×4字节乘数器的暗示图。图14.两个4字节输入相乘的电路图试想两个32字节的数字相乘要通过2000多步操作才干得到结果。因此,fpga预设了乘数器电路,在数学和信号处理应用中保存对查找表和触发器用法。virtex-ii和spartan-3 fpga拥有18×18bit乘法器,所以两个32字节数字相乘的运算需要三个乘法器来实现。许多信号处理算法都包括连乘运算结果的功能,因此virtex-5等高性能fpga都预设被称为dsp片的乘数器累加电路.这些预设处理组件,也被称为dsp48片,包括25
11、×18bit乘数器以及加法器电路,尽管您可单独用法乘数器功能。表5所示为不同fpga系列dsp决策。表5.不同fpga的dsp源6. 块随机存取存储器(ram)挑选fpga时,记忆源是另一个需要考虑的关键因素。嵌入fpga芯片中的用户自定义随机存取存储器(ram),对储存数据设置或平行环路之间传送数值很有协助。基于fpga系列,您可在16或36kb组件中设置板载ram,或者用法触发器以数组来执行数据设置;然而,对于fpga规律源来说,大型数组很快就变得非常“奢靡”。由100个32字节元素数组可消耗virtex-ii 1000 fpga中超过30的触发器,或者占用少于1的嵌入式块ram
12、。dsp算法通常需要追踪囫囵数据块或是复杂等式的系数,而在没有板载存储器状况下,许多处理功能在fpga芯片的硬件规律电路中都不适用。图16所示为用法块ram读写存储器的图形化功能。图15.用于读写存储器的块ram函数同样,你也可以用法内存块,将一段完整周期存储为数值和索引的挨次表,为板载存储周期性波形数据。输出信号的终于频率由检索数值的速度打算,这样您就可用此办法动态转变输出频率,而不需要输入波形中的急剧变幻。图17.用于先进先出缓冲器的块ram功能fpga固有的并行执行要求规律电路自立元件可在不用时光脉冲下驱动。在不同运行速度下的规律电路之间传递数据是很麻烦的。用法先进先出(fifo)缓冲器时,板载存储器可用来是传输越发平稳。16所示,用户可以将fifo缓冲器配置成不同大小以确保数据在fpga芯片的非同步部件间不会走失。表6所示为嵌入不同fpga系列的用户可设置快ram。表6.不同fpga的记忆源