官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师
您的当前位置:主页 > FPGA行业资讯 >

FPGA内部原理|FPGA内部结构介绍-明德扬科教(mdy-edu.com)

发布时间:2019-12-10   作者:admin 浏览量:


明德扬专注于FPGA培训:设有 FPGA网络班FPGA就业班


逻辑单元

FPGA是从一个基本的“逻辑单元”,重复数百或数千次。逻辑单元基本上是一个小型查找表(“LUT”)、一个D触发器和一个2到-1的mux(如果需要的话,可以绕过触发器)。

LUT可以实现任何逻辑函数。它通常有几个输入(在上面的图中有4个),因此,例如,一个和门具有3个输入,其结果与另一个输入一起进行或编辑将适合于一个4输入LUT。

互连

每个逻辑单元可以通过互连资源(位于逻辑单元周围的线/mux)连接到其他逻辑单元。每个单元只能完成很少的工作,但是如果将它们连接在一起,就可以创建复杂的逻辑函数。

Io-细胞

互连线还连接到实现I/O单元并连接到FPGA的引脚的设备的边界。

专用路由/进位链

除了通用互连资源外,FPGA在相邻逻辑单元之间还有快速的专用线路.最常见的快速专用线路是“携带链”。进位链允许高效地创建算术函数(如计数器和加法器)(低逻辑使用率和高运算速度)。有关更多信息,请查看本页.

较老的可编程技术(PAL/CPLD)没有进位链,因此在需要算术运算时会很快受到限制。

除了逻辑,所有新的FPGA都有分布在逻辑元件之间并由逻辑元件控制的专用静态RAM块。

内部RAM操作

影响RAM操作的参数很多。主要参数是可以同时访问RAM的代理数。

  • “单端口”RAM:只有一个代理可以读写RAM。
  • “双口”或“四端口”RAMS:2或4个代理可以读写。伟大的数据跨时钟域(每个代理可以使用不同的时钟)。

以下是双口RAM的简化绘图。

若要计算可用代理的数量,请计算进入RAM的独立地址总线的数量。每个代理都有一个专用的地址总线。每个代理还具有读和/或写数据总线。

写入RAM通常是同步进行的。读取通常是同步进行的,但有时可以异步完成。

Blockram与分布式RAM

现在,在FPGA中有两种类型的内部RAMS:块RAMS和分布式RAMS。所需RAM的大小通常决定所使用的类型。

  • 大型RAM块是块,位于FPGA中的专用区域。每个FPGA都有限的数量,如果你不使用它们,你就会“松开”它们(它们只能用于RAM)。
  • 小型RAM块要么位于较小的块(Altera)中(Altera这样做),要么在“分布式RAM”中(Xilinx这样做)。分布式RAM允许使用FPGA逻辑单元作为微型RAM,它在FPGA中提供非常灵活的RAM分布,但在面积方面效率不高(逻辑单元实际上可以容纳很少的RAM)。Altera更喜欢在设备周围建造不同大小的块(面积效率更高,但不太灵活)。哪一个更适合您,取决于您的FPGA应用程序。

FPGA往往有很多引脚.。为了简单一点,让我们把它们放在两个箱子里:“用户引脚”和“专用引脚”。

用户引脚

用户引脚称为“IOS”,或“I/O”,或“用户IOS”,或“IO引脚”,或.你知道这个主意。
IO代表“投入-输出”。

  • 您通常完全控制用户IOS。它们可以编程为输入、输出或双向(即具有三状态缓冲区)。
  • 每个IO引脚连接到FPGA内的“IO单元”。“IO单元”由VCCIO引脚(IO电源引脚)供电-下面是更详细的信息。
专用销

“专用引脚”被硬编码成特定的功能。它们分为以下三个子类别。

  • 电源针。
  • 配置引脚:用于“下载”FPGA。
  • 专用输入或时钟引脚:它们能够在FPGA内驱动大网络,适合于具有大扇形的时钟或信号。

电源引脚分为两类:“核心电压”和“IO电压”。

  • 核心电压被命名为“VCC”(Xilinx),“VCCINT”(Altera)。它是固定的(由您正在使用的FPGA模型设置)。它用于驱动FPGA内部的逻辑门和触发器.老一代FPGA的电压为5V,随着新一代的到来而下降(3.3V,2.5V,1.8V,1.5V,1.2V,甚至更低的是最新的设备)。
  • IO电压为“VCCO”表示Xilinx,“VCCIO”用于Altera。它用于驱动FPGA的I/O块(=引脚)。该电压应该与连接到FPGA的其他设备相匹配。

FPGA有许多VCCIO引脚,这些引脚都可以由相同的电压供电。但是新一代FPGA有一个“用户IO库”的概念:iOS被分成几个组,每个组都有自己的VCCIO引脚。这允许使用FPGA作为电压转换设备,例如,如果您的电路板的一个部分工作在3.3V逻辑,另一个使用2.5V。


FPGA的设计通常是“同步”的。简单地说,这意味着设计是基于时钟的,每一个时钟上升的边缘允许所有的D触发器同时采取一个新的状态。

在同步设计中,单个时钟可能会驱动大量的触发器.这会导致FPGA内部的时序和电气问题。为了使其正常工作,FPGA制造商提供了称为“全局路由”或“全局线路”的特殊内部线路。它们允许将时钟信号以低斜率分布在FPGA上(即时钟信号几乎同时出现在所有触发器上)。

大多数FPGA设计使用至少一个时钟,该时钟是在FPGA之外产生的,然后通过一个引脚送至FPGA。只需确保您使用时钟引脚(只有它们有能力驱动全局线)。

时钟域

FPGA可以使用多个时钟(使用多个全局线和时钟引脚)。每个时钟在FPGA内形成一个“时钟域”。

每个时钟域中的触发器和组合逻辑

对于FPGA内部的每一个触发器,其时钟域很容易确定.看一下触发器时钟输入。
但是,处于触发器之间的组合逻辑又如何呢?

  • 如果在“同一时钟域”触发器之间存在某种组合逻辑,则该逻辑也被称为时钟域的一部分。
  • 如果在“不同时钟域”触发器之间存在某种组合逻辑,则该逻辑不属于任何时钟域。但是在一个典型的FPGA设计中,没有这样的逻辑,来自不同时钟域的唯一路径是同步器。
时钟域速度

对于每个时钟域,fpga软件将分析所有触发器到触发器的路径,并为您提供一个具有最大允许频率的报告。在一般情况下,只分析每个时钟域中的路径。同步器路径(来自不同的时钟域)通常不重要,也不被分析。

一个时钟域可以工作在10 MHz,而另一个时钟域可以工作在100 MHz。只要每个时钟都使用一条全局线,并且你使用的时钟速度低于软件所报告的最大时钟速度,你就不必担心内部的计时问题,这样的设计就保证了在内部定时方面的工作。

但是,FPGA的输入和输出引脚可能仍然存在一些时序问题。这个软件会给你一个报告。另见下一节。

时钟域之间的信号

如果您需要跨不同的时钟域发送一些信息,则需要应用特殊的注意事项。

在一般情况下,如果您的时钟之间没有关系,您不能使用从一个时钟域生成的信号进入另一个时钟域。这样做将违反设置和保持触发器时间(在目标时钟域中),并造成亚稳态。

跨越时钟域需要特殊的技术,比如使用同步器(这很简单),或者FIFO(更复杂)。见交叉时钟域得到一些实际的想法,再加上两个时钟域的接口什么是亚稳态?.


FPGA供应商提供了许多“配置”(即下载)设备的方法。一种方法是用电缆将你的PC和FPGA板连接起来。这些电缆通常被称为“JTAG电缆”(因为它们可以连接到FPGA的JTAG引脚)。

FPGA电缆是厂商专用的

来自所有FPGA供应商的FPGA配置接口非常相似。这并不妨碍每个供应商都有自己的专有连接器和电缆。

Xilinx电缆
Altera电缆

平行电缆

并行电缆连接到PC机的并行(打印机)端口。它们不像USB电缆那么受欢迎,但由于它们的简单性,它们仍然很有趣。它们缓冲了PC并行接口的几个引脚,并使用平面电缆或飞行引线连接到目标板。并联电缆是有源设备,需要电源,但通常由目标FPGA板供电。

FPGA供应商有时会提供电缆的原理图,如果您想了解它们是如何工作或自己构建电缆的话,这是很有价值的。


FPGA可以分为两种状态:“配置模式”或“用户模式”。
当FPGA在断电后醒来时,它处于配置模式,它的所有输出都处于闲置状态。你需要配置它。

配置FPGA意味着通过一些特殊的引脚下载0和1的流。一旦FPGA被配置,它就进入“用户模式”并成为活动状态。

配置FPGA有三种经典方法:

  • 您使用“JTAG电缆”从您的PC到FPGA,并运行一个软件在您的PC上发送数据通过电缆。
  • 你在你的板上使用一个微控制器,有足够的固件将数据发送到FPGA。
  • 您在您的板上使用一个“启动-PROM”,连接到FPGA,它在POWER上自动配置FPGA(FPGA供应商在他们的目录中有这样的特殊引导-Prom)。

在开发过程中,第一种方法是最简单和最快的。一旦您的FPGA设计工作,您可能不再需要PC,所以其他两种方法开始使用。

配置在Xilinx和Altera设备之间以惊人的相同方式工作。不同之处主要在于命名(引脚名称和操作模式的命名不同),但功能是相似的。

大多数FPGA有两组专用于配置的引脚:

  • JTAG接口。
  • “同步串行”接口。

FPGA配置可以很快成为一个复杂的主题,所以您可能想跳过这一节,特别是如果您打算使用一个已经制作的FPGA开发板。开发板通常带有JTAG电缆,或者您可以在不了解底层接口的情况下使用的特殊电缆。但如果你想多学一点,继续读。

JTAG接口(或JTAG“端口”)

FPGA能够通过JTAG(使用专有的JTAG命令)进行配置。注意,JTAG最初是为测试和制造目的而设计的(允许计算机控制设备引脚)。FPGA当然是JTAG-测试也是可以的。

看见这里想了解更多信息。

“同步串行”接口

它是一个简单的数据/时钟接口。它是同步的,您通常一次向FPGA提供一位。

下面是对这个接口中最重要的五个引脚的描述:

Xilinx引脚名 Altera别针名 方向 引脚功能
数据 数据0 FPGA输入 配置数据位
CLK 德克 FPGA输入 配置时钟(配置数据位在fpga中的时钟上升边缘移动)
PROG_b nConfig FPGA输入 当断言(即,当它变低-这是一个活动的低引脚),FPGA被重置和放松其配置。如果FPGA处于用户模式,它会立即停止操作,所有IOS都会变得不活跃.
init_b nStatus FPGA输出 此引脚指示FPGA何时准备启动配置过程(FPGA需要几毫秒才能准备好)。
已完成 ConfDone FPGA输出 高时,表示FPGA被配置(即在用户模式下)。

注意:init_b和已完成的引脚实际上是开式集电极引脚,因此这些引线电阻是必需的。此外,如果要配置多个FPGA,这些引脚通常连接在一起,以便所有FPGAs一起切换到“用户模式”。还有更多的细节,因此要获得完整的描述,请查看您的FPGA数据表。




  •   
  •   
  •   
  •  
  • FPGA教育领域第一品牌
  • 咨询热线:020-39002701
  • 技术交流Q群:544453837