对FPGA进行“编程”会发生什么?


13

据我了解,对FPGA进行编程的过程分为两个部分:

  1. 将硬件描述编码为FPGA可以理解的位(即编写一些HDL并进行编译)
  2. 将编译后的HDL加载到FPGA上。

我的问题是:“ FPGA对编译后的HDL有何作用?”。目前,我认为FPGA是“可模制的硬件”,可以在其中将导线和逻辑门模制为所需的任何东西。一件好事是可塑性是永久性的:FPGA可以重新编程。

FPGA如何解释编译后的HDL?如何实现永久成型性?


4
实际上这不是永久的-每次加电时都必须从EEPROM重新加载FPGA位流。CPLD没有这个问题,某些FPGA内置了EEPROM,可在每次上电时加载其比特流。
AngryEE 2012年

2
我认为他的意思是“可模塑性是永久的”,即程序本身不是永久的。
ajs410 2012年

Answers:


23

从另一个问题来看,您是Xilinx专家。因此,我强烈建议您获取Xilinx芯片的数据手册,并转到“功能说明”一章。对于我使用的Spartan 3芯片,有42页有趣的阅读内容。它详细说明了FPGA内部的哪些组件-IOB,CLB,切片,LUT,Block RAM,乘法器,数字时钟管理器,时钟网络,互连以及一些非常基本的配置信息。如果您想了解“已编译的HDL”的外观,则需要了解此信息。

熟悉FPGA的体系结构后,您就可以了解此过程。首先,您的HDL设计是通过综合引擎运行的,该引擎将您的HDL变成了基本的RTL。然后,映射器处理综合的结果,将其“映射”到可用的FPGA体系结构中。然后,路由器会进行“放置和布线(PAR)”,以找出这些部件的去向以及如何连接它们。最后,将来自PAR的结果转换为BIT文件。通常,然后以某种方式转换此BIT文件,以便可以将其加载到Flash芯片中,以便在FPGA加电时可以对其进行自动编程。

该位文件描述了整个FPGA程序。例如,Spartan 3中的CLB由切片组成,这些切片由LUT组成,而LUT只是16地址的1位SRAM。因此,BIT文件所包含的一件事就是将什么数据送入SRAM的每个地址。BIT文件包含的另一件事是LUT的每个输入如何连接到连接矩阵。BIT文件还将包含位于Block RAM内部的初始值。它将描述连接到每个片中每个触发器的置位和复位引脚的内容。它将描述进位链如何连接。它将描述每个IOB(LVTTL,LVCMOS,LVDS等)的逻辑接口。它将描述任何集成的上拉或下拉电阻器。基本上,一切。

对于Xilinx,在启动配置时(即PROG_B被声明),将清除FPGA的存储器。清除内存后,INIT_B会变高以指示该阶段已完成。然后通过JTAG或Flash芯片接口加载BIT文件。加载程序后,将触发全局设置/重置(GSR),将所有触发器重置为其初始状态。然后,DONE引脚变高,表示配置已完成。大约一个时钟周期后,全局三态信号(GTS)释放,从而允许驱动输出。大约一个时钟周期后,释放全局写使能(GWE),允许触发器响应其输入而开始更改状态。请注意,根据BIT文件中设置的标志,即使是此最终配置过程也可以稍微重新排序。

编辑:

我还应该补充一点,FPGA程序不是永久性的原因是因为逻辑结构由易失性存储器(例如SRAM)组成。因此,当FPGA掉电时,该程序就会被遗忘。这就是为什么他们需要例如Flash芯片作为FPGA程序的非易失性存储,以便在设备通电时可以加载它。


6

编译HDL会产生一个位模式,该位模式指示应激活FPGA内部的哪些连接。FPGA不再需要解释HDL。将位模式编程到串行加载器Flash / EEPROM中,并在启动时将该模式转移到FPGA中,进行必要的连接。


1
综合意味着三个短语:1.网表生成2.门级优化3.技术映射。
Standard Sandun

4

编译的结果是一个位流(字面上是位流),该位流在加电后被加载。这将通过存储在某些存储单元(锁存器)中的FPGA进行切换。这些单元连接到各种逻辑实体,多路复用器,查找表,RAM块,路由矩阵,并构成所谓的“配置”。加载比特流后,FPGA开始运行-配置锁存器中的位“告知” FPGA的每个小片段如何运行。

编辑2012年4月24日:我提到的触发器不是用于查找表或它们的配置的。正如@ ajs410所说的那样,它们位于RAM中,而晶体管更少。如果启用了存储,则触发器用于将数据存储在LUT之外。


典型的FPGA中有多少电路是实际的逻辑和路由,编程支持是多少?
supercat '04 -4-17

从技术上讲,“存储单元”是触发器,而不是锁存器。即它们是边缘触发的。
Brian Carlton 2012年

@BrianCarlton:触发器是否真的用于所有程序存储单元?据我了解,触发器每位需要约12-16个MOSFET。相比之下,用于锁存数据的其他全静态技术仅需要5-8。
supercat '04 -4-17

1
LUT通常由SRAM制成。触发器连接到SRAM的输出。
ajs410 2012年

1
@supercat:我听说90%的FPGA正在路由...其余是逻辑和配置-尽管无法快速找到参考:(
Martin Thompson

1

对于FPGA,标准术语是“配置”而不是“编程”。FPGA通常是基于SRAM的设备。SRAM存储一些位,这些位指示在设备的“逻辑结构”内部形成和断开了哪些连接。发生配置时,将比特流发送到FPGA并写入此SRAM。当基于SRAM的FPGA切换时,关闭SRAM数据将被擦除,而当FPGA开启时,则需要重新配置。

现在知道了,它们是用于“配置”和FPGA的各种方法,因此存在包含此“位流”的文件的不同格式。归根结底,这些文件的结构以及如何精确配置FPGA的细节是制造商专有的,并且永远不会共享此信息。但是,整个FPGA的一般原理保持不变。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.