用于可编程逻辑器件的快速启动系统和方法与流程

文档序号:18188212发布日期:2019-07-17 05:27阅读:205来源:国知局
用于可编程逻辑器件的快速启动系统和方法与流程

本专利申请要求于2017年12月29日提交的美国临时专利申请62/612,265的优先权和权益,其所有内容通过引用整体并入本文。

本发明一般地涉及可编程逻辑器件,并且更具体地涉及用于这种器件的快速启动技术。



背景技术:

可以利用用于实施所期望功能的各种用户设计来配置可编程逻辑器件(pld)(例如,现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)、现场可编程片上系统(fpsc)、或者其他类型的可编程器件)。通常,将用户设计被合成并且被映射到可配置资源中,通过非限制性示例的方式,包括:可编程逻辑门、查找表(lut)、嵌入式硬件、互连、和/或在特定pld中可用的其他类型的资源。然后可以确定针对被合成并且被映射的用户设计的物理布局和路由以生成针对特定pld的配置数据。所生成的配置数据被加载到pld的配置存储器中以实施可编程逻辑门、lut、嵌入式硬件、互连、和/或其他类型的可配置资源。加载的配置数据会花费相当大量的时间。因此,需要针对加载的配置数据和pld操作的改进技术。



技术实现要素:

根据各种实施例,提供了一种方法,包括:接收与可编程逻辑器件(pld)相关联的配置数据,其中pld包括配置存储器单元的阵列,配置存储器单元的阵列包括与pld的逻辑结构相关联的多个逻辑块存储器单元、以及与pld的输入/输出(i/o)结构相关联的多个i/o块存储器单元;利用配置数据的第一部分来对i/o块存储器单元的子集进行编程;提供用于唤醒与i/o结构的一部分相关联的功能的第一唤醒信号,i/o结构的一部分与i/o块存储器单元的子集相关联;利用配置数据的第二部分来对阵列的剩余配置存储器单元进行编程,其中剩余配置存储器单元包括逻辑块存储器单元的至少一个子集;以及提供用于唤醒与逻辑结构的至少一部分相关联的功能的第二唤醒信号,逻辑结构的一部分与逻辑块存储器单元的子集相关联。

根据各种实施例,该方法还包括:响应于第一唤醒信号,将i/o结构的一部分从配置模式转换为快速启动操作模式,以及响应于第二唤醒信号,将i/o结构的一部分从快速启动操作模式转换为系统操作模式,并且将逻辑结构的一部分从配置模式转换为系统操作模式。

根据各种实施例,该方法还包括:响应于第一唤醒信号,由i/o结构的一部分提供第一功能;在转换到系统操作模式之后的预定的时间量内,由i/o结构的一部分维持第一功能;以及在预定的时间量之后,由i/o结构的一部分提供第二功能。

根据各种实施例,该方法还包括:在的对剩余配置存储器单元进行编程被执行的同时操作i/o结构的一部分。

根据各种实施例,该方法还包括:其中逻辑块存储器单元的子集是逻辑块存储器单元的第一子集,其中逻辑结构的一部分是逻辑结构的第一部分,方法还包括:利用配置数据的第三部分来对逻辑块存储器单元的第二子集进行编程,其中的提供第一唤醒信号包括:提供用于唤醒与逻辑结构的第二部分相关联的功能的第一唤醒信号。

根据各种实施例,该方法还包括:其中与i/o结构的一部分相关联的功能是基于与逻辑结构的第二部分相关联的功能。

根据各种实施例,该方法还包括:其中:配置存储器单元的阵列被布置成行和列的形式,i/o块存储器单元的子集包括连续列的i/o块存储器单元的一个或多个集合,以及逻辑块存储器单元的第二子集包括连续列的逻辑块存储器单元的一个或多个集合,连续列的逻辑块存储器单元的一个或多个集合与连续列的i/o块存储器单元的一个或多个集合相邻。

根据各种实施例,该方法还包括:其中配置数据包括与i/o块存储器单元的子集相关联的第一认证信息,方法还包括:基于第一认证信息来执行与配置数据的第一部分相关联的第一认证,其中,当i/o块存储器单元的子集的第一认证成功时,的提供第一唤醒信号、的对剩余配置存储器单元进行编程、以及的提供第二唤醒信号被执行。

根据各种实施例,该方法还包括:其中的执行第一认证在的对子集进行编程之后被执行。

根据各种实施例,该方法还包括:其中配置数据包括与剩余配置存储器单元相关联的第二认证信息,方法还包括:基于第二认证信息来执行与配置数据的第二部分相关联的第二认证,其中,当对剩余配置存储器单元的第二认证成功时,的提供第二唤醒信号被执行。

根据各种实施例,该方法还包括:其中,在的对子集进行编程之后,i/o块存储器单元的子集中的每一个与驱动为0、驱动为1、或处于三态相关联。

根据各种实施例,该方法还包括:其中i/o块存储器单元的子集包括i/o块存储器单元的第一集合、以及i/o块存储器单元的第二集合,其中的对i/o块存储器单元的子集进行编程包括:将地址移位器和数据移位器配置为逐列地编程;使用地址移位器和数据移位器来逐列地对i/o块存储器单元的第一集合进行编程;将地址移位器和数据移位器转换为逐行地编程;以及在的转换之后,使用地址移位器和数据移位器来逐行地对i/o块存储器单元的第二集合进行编程。

根据各种实施例,还提供了一种可编程逻辑器件(pld),包括:配置存储器单元的阵列,包括与pld的逻辑结构相关联的多个逻辑块存储器单元、以及与pld的输入/输出(i/o)结构相关联的多个i/o块存储器单元;处理电路,被配置为:接收与pld相关联的配置数据;利用配置数据的第一部分来对i/o块存储器单元的子集进行编程;提供用于唤醒与i/o结构的一部分相关联的功能的第一唤醒信号,i/o结构的一部分与i/o块存储器单元的子集相关联;利用配置数据的第二部分来对阵列中的剩余配置存储器单元进行编程,其中剩余配置存储器单元包括逻辑块存储器单元的至少一个子集;以及提供用于唤醒与逻辑结构的至少一部分相关联的功能的第二唤醒信号,逻辑结构的至少一部分与逻辑块存储器单元的子集相关联。

根据各种实施例的pld,其中阵列被布置成行和列的形式,以及其中,多个i/o块存储器单元被定位在多个逻辑块存储器单元周围。

根据各种实施例的pld,其中逻辑块存储器单元的子集是逻辑块存储器单元的第一子集,其中逻辑结构的一部分是逻辑结构的第一部分,其中处理电路被进一步配置为:利用配置数据的第三部分来对逻辑块存储器单元的第二子集进行编程,其中处理电路被配置为提供用于唤醒与逻辑结构的第二部分相关联的功能的第一唤醒信号。

根据各种实施例的pld,其中:处理电路包括:地址逻辑电路,被配置为选择性地断言阵列的行或列;数据写入电路,被配置为将配置数据提供至阵列;以及唤醒电路,被配置为生成第一唤醒信号和第二唤醒信号;以及处理电路被配置为使用地址逻辑电路和配置数据写入电路来对阵列进行编程。

根据各种实施例的pld,其中:配置数据包括与子集相关联的认证信息,处理电路被进一步配置为:基于认证信息来执行子集的认证,以及处理电路被配置为:当子集的认证成功时,提供第一唤醒信号、对剩余配置存储器单元进行编程、以及提供第二唤醒信号。

根据各种实施例,还提供了一种包括指令的非暂时性机器可读存储介质,指令在被执行时使得设备的一个或多个处理器执行以下操作,操作包括:接收待由可编程逻辑器件(pld)执行的设计识别操作,其中操作中的至少一个操作与快速启动相关联;将设计合成到与快速启动相关联的第一多个pld组件中以及到第二多个pld组件中;确定包括用于促进快速启动的第一多个pld组件的位置以及第二多个pld组件的位置的布局;基于所确定的布局来生成配置数据;以及提供配置数据以配置pld。其中操作还包括:生成与第一多个pld组件相关联的认证信息,其中的提供包括:提供配置数据和认证信息。其中与快速启动相关联的配置数据被提供以在剩余配置数据被提供之前来配置pld。其中第一多个pld组件包括第一配置存储器单元,而第二多个pld组件包括第二配置存储器单元,其中操作还包括:使用配置数据的第一部分来对第一配置存储器单元进行编程;提供用于激活与第一多个pld组件相关联的功能的第一唤醒信号;使用配置数据的第二部分来对第二配置存储器单元进行编程;以及提供用于激活与第二多个pld组件相关联的功能的第二唤醒信号。

根据各种实施例,还提供了一种系统,包括:上述的非暂时性机器可读存储介质;以及一个或多个处理器。

附图说明

图1图示了根据本公开的一个实施例的pld的框图。

图2图示了根据本公开的一个实施例的具有输入/输出结构和逻辑结构以及相关联的处理电路的pld的框图。

图3a和图3c图示了根据本公开的一个实施例的具有被指定用于快速启动的输入/输出部分的pld在配置和唤醒的各个阶段的框图。

图4图示了根据本公开的一个实施例的具有被指定用于快速启动的输入/输出部分的pld的框图。

图5和图6图示了根据本公开的一个实施例的具有被指定用于快速启动的输入/输出和逻辑核部分的pld的框图。

图7图示了根据本公开的一个实施例的用于激活并且提供输入/输出功能的输入/输出控制电路的框图。

图8图示了根据本公开的一个实施例的针对pld的示例设计过程的流程图。

图9图示了根据本公开的一个实施例的针对促进pld的快速启动功能的示例过程的流程图。

通过参照下面的详细描述,可以最好地理解本公开的实施例及其优点。应领会的是,相同的附图标记被用于标识在一个或多个附图中所图示的相同元件。

具体实施方式

提供了用于促进针对pld的快速启动的各种技术。在一些实施例中,可以利用允许pld的输入/输出(i/o)结构的至少一部分以提供i/o功能的快速启动能力来实施pld。快速启动还可以被称为快速唤醒、快速激活、提早启动、提早唤醒、提早激活、或者其变型。在一些情况下,备选地或另外地,可以指定逻辑结构的一部分和/或pld的其他组件以用于快速启动。为此,可以指定pld的某一功能(例如,i/o和/或逻辑功能)以用于快速启动。

在一个实施例中,为了促进快速启动,与被指定用于快速启动的i/o结构的一部分相关联的配置数据可以被加载到与i/o结构的该部分相关联的配置存储器单元中。一旦配置存储器单元已被配置(例如,已被编程,已被加载了配置数据),就可以提供用于唤醒(例如,也被称为激活)与i/o的该部分相关联的i/o功能的唤醒信号。在唤醒该i/o功能时,该i/o功能从配置模式转换为快速启动操作模式。

在i/o结构的该部分已被激活之后,可以利用对应的配置数据来配置pld的剩余配置存储器单元(这些pld的剩余配置存储器单元可以包括逻辑结构和i/o结构的任何剩余部分)并且将其激活。一旦将配置数据中的所有配置数据都被加载到pld中,pld就可以唤醒并且提供功能。在唤醒pld的剩余功能时,功能转换为全系统操作模式(例如,也被称为正常操作模式)。在一个方面,被指定用于快速启动的i/o功能可以从快速启动操作模式转换为全系统操作模式,而剩余功能(例如,未被指定用于快速启动的功能)可以从配置模式转换为全系统操作模式。备选地或者除了指定用于快速启动的至少一些i/o功能之外,可以指定pld的逻辑功能和/或其他组件以用于快速启动。

可以将配置数据提供为配置位流。用于配置pld(例如,将配置数据加载到pld中)的配置时间可以是基于配置方法、位流源、待被写入pld的位流(例如,包括配置位流)的链路速度、和/或其他因素。在使用配置位流来配置pld之前,pld的i/o结构和逻辑结构可以处于未知状态或三态状态(例如,除了通常在通电时处于已定义状态的pld的任何硬编码组件之外)。

在提供对i/o功能的快速启动时,pld可以在使器件上电之后不久提供可预测的i/o行为(例如,i/o功能),而无需在提供这种i/o行为之前等待整个pld被配置并且被激活。这种器件可以包括pld和/或可以由pld控制。器件的一个示例可以是风扇或发光二极管(led)。在这点上,被激活的i/o功能可以针对由pld控制的器件以期望的驱动器特性(例如,i/o类型、驱动强度、上拉/下拉特征等)来驱动合适的极性(例如,接通或关断,1或0)。

在一些用户所指定的应用中,与提供i/o行为相关联的延迟会不利地影响用户和/或消费者体验和/或是令人不悦的。例如,由pld控制的led可能具有未定义行为(例如,归因于未定义的i/o功能),在功能被激活(例如,被置于已定义状态)之前,该未定义行为会体现为闪烁或通常是led的任何不良行为。通过提供快速启动以允许提早唤醒与led相关联的pld的i/o行为,led可以接收用于定义led的行为的适当控制信号。在这些用户所指定的应用中,pld的其他功能会被认为没那么关键、时间敏感性较低、和/或不那么明显,因此会在稍后的时间被激活。作为一个示例,在数十或数百毫秒内配置并且激活整个pld的情况下,可以在微秒范围(例如,1μs至1,000μs)内配置并且激活被指定的用于快速启动的pld的部分。与针对快速启动操作的配置和激活相关联的时间可以至少部分地基于被指定用于快速启动的i/o和/或逻辑功能的量。

在一些方面,由pld提供的这种i/o功能可以被称为静态控制,并且对这种i/o功能的快速启动可以被称为快速启动静态控制。静态控制可以提供针对被耦合至pld的组件的控制,该被耦合至pld的组件通常独立于pld的逻辑结构。在一些情况下,可以针对控制i/o功能的pld的逻辑结构的一部分应用快速启动。在这些情况下,快速启动可以促进静态状态控制(例如,独立于逻辑结构的基于i/o结构的控制)和/或逻辑结构控制的i/o。

在一个实施例中,可以对配置数据的至少一部分使能安全性。为了使能安全性,可以生成一个或多个认证证书。在一些情况下,可以为与被指定用于快速启动的结构(例如,i/o和/或逻辑功能)相关联的配置数据提供一个或多个认证证书,和/或可以为未被指定用于快速启动的配置数据提供一个或多个认证证书。可以在对应的配置数据已经被加载到pld中之前或之后基于(一个或多个)认证证书来执行认证。例如,当i/o结构的一部分被指定用于快速启动时,配置数据的一部分可以被加载到与i/o结构的该部分相关联的配置存储器单元中。可以基于与配置数据的该部分相关联的(一个或多个)认证证书来执行认证。如果认证成功,则与i/o结构的该部分相关联的功能可以被激活并且剩余的配置数据被加载到pld中。如果认证不成功,则对pld的配置和激活可以被中止。

使用各种实施例,pld的i/o和/或逻辑功能的部分可以被配置并且被激活为在配置并且激活其他功能之前提供稳定的受控状态。在一些情况下,至少一些i/o功能可以被指定用于快速启动以实现pld相对于这种i/o功能较少的i/o唤醒时间。在一些方面,一旦pld的其余部分被配置并且被激活,就可以提供从快速启动操作模式到全系统操作模式的无缝(例如,无低频干扰(glitchless))转换。

现在参照附图,图1图示了根据本公开的一个实施例的pld100的框图。pld100(例如,fpga、cpld、fpsc、或者其他类型的可编程器件)一般包括i/o块102和可编程逻辑块(plb)104。在一些情况下,pld100一般可以是具有分布式配置的任何类型的可编程器件(例如,可编程集成电路),该具有分布式配置的任何类型的可编程器件可以涉及:通过引脚来加载配置数据,移位至相关联的结构中的适当位置,以及对配置存储器单元配置。plb还可以被称为逻辑块、可编程功能单元(pfu)、或可编程逻辑单元(plc)。在一个方面,plb104可以共同地形成pld100的集成电路(ic)核或逻辑核。i/o块102为pld100提供i/o功能(例如,以支持一个或多个i/o和/或存储器接口标准),而plb104为pld100提供逻辑功能(例如,基于lut的逻辑)。可以通过串行器/解串器(serdes)块150和物理编码子层(pcs)块152来提供附加的i/o功能。pld100还可以包括用于提供附加功能(例如,在可以利用比plb104更少的编程来配置的硬件中所提供的基本上被预定的功能)的硬知识产权核(ip)块160。

pld100可以适当地包括存储器106的块(例如,可擦除可编程只读存储器(eeprom)的块、块静态ram(sram)、和/或闪速存储器)、时钟相关电路系统108(例如,时钟源、锁相环(pll)电路、和/或延迟锁定环(dll)电路)、和/或各种路由资源180(例如,用于提供用于在整个pld100中的路由信号的路径(诸如,用于时钟信号、数据信号、控制信号、唤醒信号、或其他信号)的互连和适当的开关电路)。pld100可以包括用于接收配置数据、用于配置pld100的各种可编程元件、以及用于激活与这些可编程元件相关联的功能的配置和激活逻辑。一般地,如本领域的技术人员将理解的,pld100的各种元件可以被用于执行它们对于期望应用的所预期的功能。

例如,某些i/o块102可以被用于对存储器106进行编程或者将信息(例如,各种类型的用户数据和/或控制信号)传递至pld100/从pld100传递信息(例如,各种类型的用户数据和/或控制信号)。其他i/o块102包括第一编程端口(该第一编程端口可以表示中央处理单元(cpu)端口、外围数据端口、串行外围接口(spi)端口、和/或sysconfig编程端口)、和/或第二编程端口(诸如,联合测试行动组(jtag)端口)(例如,通过采用诸如电气与电子工程师协会(ieee)1149.1或1532标准等的标准)。在各种实施例中,可以包括i/o块102以适当地接收用于将pld100配置为用于它的预期用途并且支持串行或并行器件配置以及与serdes块150、pcs块152、硬ip块160、和/或plb104的信息传递的配置数据和命令(例如,通过一个或多个连接)。

应理解的是,各种元件的数目和布局不是限制性的,并且可以取决于所期望的应用。例如,对于所期望的应用或设计规范(例如,对于所选择的可编程器件的类型),可能不需要各种元件。

此外,应理解的是,为了清楚起见,以方框的形式图示了元件,并且各种元件通常将分布在整个pld100中,诸如,分布在plb104、硬ip块160和路由资源180中以及分布在plb104、硬ip块160和路由资源180两两之间以执行它们的常规功能(例如,存储配置pld100的配置数据或者在pld100内提供互连结构)。例如,路由资源180可以被用于每个plb104内和/或在不同的plb104之间的内部连接。还应理解的是,如本领域的技术人员要理解的,本文所公开的各种实施例不限于可编程逻辑器件(诸如,pld100),而是可以被应用于各种其他类型的可编程器件。

外部系统130可以被用于创建pld100的期望用户配置或设计,并且生成用于对pld100进行编程(例如,配置pld100)的对应的配置数据。例如,为了配置pld100,系统130可以将这种配置数据提供至一个或多个i/o块102、plb104、serdes块150、和/或pld100的其他部分。在这点上,外部系统130可以包括连接至pld100的编程端口(例如,spi、jtag)的链路140以促进将配置数据从外部系统130传递至pld100。因此,i/o块102、plb104、各种路由资源180、以及pld100的任何其他适当的组件可以被配置为根据用户所指定的应用进行操作。在一些情况下,i/o块102或其一部分可以被指定用于快速启动。在一些情况下,plb104或其一部分可以被指定用于快速启动。

在所图示的实施例中,系统130被实施为计算机系统。在这点上,系统130包括:例如,可以被配置为执行在一个或多个存储器134中所提供的和/或以非暂时性形式在一个或多个非暂时性机器可读介质136中所存储的指令的一个或多个处理器132(例如,该一个或多个非暂时性机器可读介质136可以在系统130的内部或外部)。例如,在一些实施例中,系统130可以运行pld配置软件(诸如,可以从latticesemiconductorcorporation获得的latticediamondsystemplanner软件)以准许用户创建所期望的配置并且生成用于对pld100进行编程的对应的配置数据。

在一些实施例中,pld100的存储器106可以包括被利用以存储由外部系统130生成并且提供至存储器106的配置数据的非易失性存储器(例如,闪速存储器)。在配置pld100期间,非易失性存储器可以经由配置路径和相关联的数据线来提供配置数据以配置pld的各个部分(例如,i/o块102、plb104、serdes块150、路由资源180、和/或其他部分)。在一些情况下,配置数据可以被存储在pld100外部的非易失性存储器中(例如,在外部硬盘驱动器(诸如,系统130中的存储器134)上)。在配置期间,配置数据可以从外部非易失性存储器被提供(例如,被加载)到pld100中以配置pld100。

系统130还包括:例如,用于向用户显示信息的用户界面135(例如,屏幕或显示器)以及用于接收准备pld100的所期望的配置的用户命令或设计输入(designentry)的一个或多个用户输入设备137(例如,键盘、鼠标、轨迹球、触摸屏、和/或其他设备)。

图2图示了根据本公开的一个实施例的具有i/o结构和逻辑结构以及相关联的处理电路230的pld200的框图。可以通过i/o部分205、210、215和220来提供pld200的i/o结构。可以通过逻辑核225(例如,也被称为ic核)来提供pld200的逻辑结构。i/o部分205、210、215和/或220可以包括逻辑、资源(例如,路由资源)、可用于存储配置数据的配置存储器、和/或(一般地)与促进提供i/o结构的功能相关联的任何组件。同样地,逻辑核225可以包括逻辑、资源(例如,路由资源)、可用于存储配置数据的配置存储器、和/或(一般地)与促进提供逻辑结构的功能相关联的任何组件。

在一个实施例中,pld200可以是pld100,可以包括pld100,或者可以是pld100的一部分。在一个方面,pld200的i/o结构可以包括i/o块102、serdes块150、pcs块152、以及相关联的电路系统(例如,路由资源180、时钟相关电路系统108、和/或至其的连接等)。在一个方面,逻辑结构可包括plb104、硬ip块160、以及相关联的电路系统。

pld200的配置存储器可以包括可用于存储配置数据的配置存储器单元的阵列(例如,每个配置存储器单元可以存储一个位)。该配置存储器单元的阵列可以被布置成行和列的形式。在一个方面,i/o部分205、210、215、和/或220、以及逻辑核225可以包括配置存储器单元(例如,被布置成行和列的形式)并且形成阵列的一部分。配置存储器单元可以是易失性存储器单元(例如,ram单元,诸如,sram单元)。在一些情况下,配置存储器单元可以被称为配置ram(cram)单元。虽然本公开一般地涉及对行和/或列所执行的各种操作,但是适当地,行可以被用作列,而列可以被用作行。在一个方面,与i/o相关联的配置存储器单元和与逻辑相关联的配置存储器单元可以被称为i/o块配置存储器单元和逻辑块配置存储器单元。

为了配置pld200(例如,i/o结构和逻辑结构)(例如,对pld200进行编程),配置数据可以被提供为被串行或被并行地加载到配置存储器单元中的配置位流。在一些情况下,可以串行地执行移位,诸如,使用jtag或者spix1模式。备选地或另外地,在一些情况下,移位可以并行,然后是在内部的并行/串行移位,诸如,使用spix4模式或例如,并行x8模式。pld200的处理电路230可以包括用于断言pld200的地址(例如,列地址)的地址逻辑电路235以及用于将对应的配置数据加载到与所断言的地址相关联的一个或多个配置存储器单元中的数据写入电路240。例如,地址逻辑电路235可以被利用来通过使用相应地址线(未示出)来选择性地断言阵列的列以允许使用数据写入电路240来使配置数据被加载到配置存储器单元中。

在图2中,地址逻辑电路235可以是(或者可以被利用来控制(例如,使用控制信号))地址移位器以实现跨pld200的列的逐列地址移位(例如,由地址移位250表示)。数据写入电路240可以是(或者可以被利用来控制(例如,使用控制信号))数据移位器以接收与所断言的列对应的配置数据的一部分并且将配置数据的该部分加载到pld200的对应的配置存储器单元中(例如,由数据移位255表示)。在这点上,配置数据可以通过以下方式来一次一列地被加载到pld200中:将待被写入的数据推送到由数据写入电路240控制的数据移位器中,使用地址逻辑电路235来断言列地址以允许待被写入的数据进入与所断言的列地址相关联的配置存储器单元中,以及将数据加载到这些配置存储器单元中。可以对pld200的每个后续列执行这种推送配置数据、断言列地址、以及加载配置数据,直到配置存储器的列已被加载了它们对应的配置数据。

在一些情况下,配置数据可以包括配置存储器帧,其中配置数据被逐帧写入配置存储器。例如,每个配置存储器帧可以包括pld200的一列的配置数据,其中每个配置存储器帧被移位到配置存储器的对应列中。

pld200的处理电路230可以包括用于在配置数据已被加载到与i/o结构和逻辑结构相关联的配置存储器单元(例如,被利用来实施i/o结构和逻辑结构)中之后唤醒(例如,激活)i/o结构和逻辑结构的功能的唤醒电路245。在一个方面,唤醒可以是指将pld200从配置模式(在该配置模式中,配置数据被加载到pld200)转换为功能模式(例如,也被称为操作模式)(在该功能模式中,pld200提供i/o和逻辑功能)。在这点上,在完成对pld200的唤醒之后,pld200被配置为使用它的i/o和逻辑结构来进行操作以根据用户所指定的应用提供i/o和逻辑功能。可以使用相关联的逻辑、资源(例如,路由资源)、所存储的配置数据、和/或其他相关联的组件来实现这种i/o和逻辑功能。在一些情况下,i/o结构的一部分可以提供静态控制,而i/o结构的另一部分可以由逻辑结构驱动(例如,由逻辑结构控制)。

在一个实施例中,处理电路230可以是配置和激活逻辑电路系统(可以包括配置和激活逻辑电路系统,或者可以是配置和激活逻辑电路系统的一部分)以:接收配置数据,配置pld200的配置存储器单元,以及激活与配置存储器单元相关联的i/o结构和/或逻辑结构的功能。在一些情况下,这种电路系统的至少一部分在pld200中被硬编码。例如,地址逻辑电路235、数据写入电路240和唤醒电路245可以在pld200中被硬编码。

在一个或多个实施例中,配置数据可以被加载到pld的一部分中,并且可以执行对pld的这些所配置部分的唤醒以促进对pld的一些功能的快速启动。在这点上,pld的配置部分(例如,也被称为编程部分)可以是指pld的配置存储器单元的阵列的、配置数据的对应部分已被加载到其中的部分。快速启动可以允许由pld的所配置部分提供所指定的功能,同时仍然配置pld的其他部分(例如,配置数据被加载到这些未配置部分中)。在一些方面,被指定用于快速启动的功能可以包括所指定的i/o功能并且在一些情况下,待由pld提供的所指定核心逻辑功能比在pld在唤醒pld的任何部分之前等待整个pld被配置的情况下更快。

在一些方面,pld的制造商可以限定被指定用于快速启动的pld的(一个或多个)部分(例如,物理位置)。被指定用于快速启动的pld的部分可以与pld的配置存储器单元的阵列的子集对应。因此,可以在配置存储器单元不是子集的一部分之前向子集中的配置存储器单元被加载了配置数据以允许提早配置并且唤醒与子集相关联的功能。在一些情况下,制造商可以指示(例如,在数据表上)pld的哪些部分被指定用于快速启动。用户(例如,设计者)可以根据来自制造商的这些指定来生成用户设计以利用快速启动能力。例如,对于给定的用户所指定的应用,用户可以识别用户认为是对时间最敏感的和/或最关键的功能的i/o和/或逻辑功能以使得生成具有在被指定用于快速启动的pld的部分(例如,在pld的其他部分之前配置并且激活)中所提供的这种功能的布局。

在实施快速启动时,pld的部分(诸如,i/o结构以及在一些情况下,逻辑结构的部分)可以被配置成已知状态,并且可以比在唤醒之前配置整个pld的情况下被更快地激活。在一些情况下,一旦配置位流的一些帧被加载到pld中并且相关联的唤醒被执行以激活相关联的功能,则被指定用于快速启动的pld的部分可以被配置成已知状态。例如,归因于快速启动而被激活的i/o结构的部分可以驱动到合适的极性并且具有期望的驱动器特性(例如,i/o类型、驱动强度、上拉/下拉特征等),以便通过pld实现对组件(例如,风扇、led)的控制。

图3a至图3c图示了根据本公开的一个实施例的具有被指定用于快速启动的i/o部分205和210的pld300在配置和唤醒的各个阶段的框图。pld300还包括未被指定用于快速启动的i/o部分215和220以及逻辑核225。在一个实施例中,除了被指定用于快速启动的i/o部分205和210之外,pld300可以与pld200相同。在一些情况下,i/o部分205和210可以被指定用于由pld200的制造商进行的快速启动。为了利用快速启动能力,用户可以基于标准(例如,时间敏感性和/或功能的重要性)将i/o功能与i/o部分205和/或210相关联并且将其他i/o功能(例如,时间敏感性较小的和/或没那么关键的)与i/o部分215和/或220相关联。

处理电路230通过向i/o部分205和210的配置存储器单元提供(例如,提供使用地址逻辑电路235和数据写入电路240)配置数据,并且在配置了i/o部分205和210之后使用唤醒电路245来激活与i/o部分205和210相关联的i/o结构的部分来实现快速启动。在唤醒了i/o结构的该部分之后,i/o结构的该部分可以提供它的相关联的i/o功能。在激活了与i/o部分205和210相关联的功能之后,处理电路230可以配置并且激活pld200的其他部分215、220和225。

作为一个示例,为了配置pld300,与i/o部分205相关联的地址可以被一次一个地断言(例如,从最左列开始)并且配置存储器帧被加载到所断言的列中,直到配置了i/o部分205的所有列。在一些情况下,列地址可以被断言成,使得连续的列从一次迭代到下一次迭代地被断言。与i/o部分210相关联的地址可以一次一个地被断言,并且配置存储器帧被加载到所断言的列中,直到配置了i/o部分210的所有列。在一些情况下,可以通过逐帧写入配置位流来促进与i/o部分205和210的配置相关联的配置时间(例如,使得更加节省时间)。例如,配置位流的第一组帧(例如,位流中较早的帧)可以被加载到i/o部分205中,而位流的最后一组帧(例如,朝着位流的末端的帧)可以被加载到i/o部分210中。

如在图中示出的,一旦配置了i/o部分205和210,唤醒电路245就可以生成并且提供用于唤醒与i/o部分205和210相关联的i/o结构的部分的唤醒信号,使得i/o结构的这些部分可以提供它们的功能。在唤醒i/o结构的这些部分时,i/o结构的这些部分从配置模式转换为快速启动操作模式,使得i/o结构的这些部分执行i/o功能(例如,如由用户定义的功能)。在这点上,这种i/o功能可以被称为快速启动静态控制。与这种i/o功能相关联的配置数据被存储在i/o部分205和210的配置存储器单元中。

作为一个示例,i/o功能可以包括:使得由pld300的i/o结构控制的led接通。在该示例中,通过指定用于快速启动的这种i/o功能,用于通过pld300来控制led的i/o功能可以比在配置了整个pld300之后提供i/o功能的情况下更早地定义,从而减少了在i/o功能被置于已定义状态以控制led之前led的任何闪烁或者不良行为。

为了配置pld300的剩余部分,处理电路230可以使用地址逻辑电路235和数据写入电路240来将配置数据加载到i/o部分215和220以及逻辑核225的配置存储器单元中。在一些情况下,与i/o部分205和210相关联的i/o功能可以处于被唤醒的过程中,同时配置数据开始被加载到pld300的剩余部分215、220和225的剩余配置存储器中。在其他情况下,在配置数据开始被加载到pld300的剩余配置存储器中之前完成唤醒i/o功能。

在一些实施例中,i/o部分215和220以及逻辑核225可以以任何顺序和/或使用任何定向(例如,逐行、逐列、或任何其他方式)来配置。作为一个示例,在配置逻辑核225时,地址逻辑电路235和数据写入电路240可以适当地被配置为断言行或列并且在逻辑核225中基于配置存储器单元的行数或列数来加载相关联的配置数据。在一些情况下,在图中,归因于共享在配置被指定用于快速启动的i/o部分205和210时所利用的地址和数据移位单元(例如,250、255),因此,逐列移位会更有效率(例如,更快、使用更少的地址移位等)。

在一些情况下,i/o部分215和220的配置可以被分割。例如,在图中,i/o部分205的一些列与i/o部分215和220的列重叠,并且同样地,i/o部分210的一些列与i/o部分215和220的列重叠。处理电路230可以使用地址逻辑电路235和数据写入电路240来逐列将配置数据加载到i/o部分215和220中。在一个示例中,可以使用地址移位250和数据移位255,使得i/o部分215和220的列被断言,并且对于所断言的列,相关联的配置数据被加载到i/o部分215和220的配置存储器单元(例如,而不是i/o部分205和210的配置存储器单元)中。在另一示例中,地址移位250和数据移位255可以被用于断言i/o部分215的每一列并且将相关联的配置数据加载到i/o部分215中,然后地址移位250和数据移位255可以被用于断言i/o部分220的每一列并且将相关联的配置数据加载到i/o部分215中。在其他情况下,地址逻辑电路235和数据写入电路240可以旋转它们的定向,使得地址逻辑电路235逐行断言i/o部分215和220,并且数据写入电路240加载所断言的行的配置数据。

可以利用通过配置剩余部分215、220和225的其他方式,并且可以基于标准(诸如,速度考虑、复杂性(例如,操作的数目)等)来选择配置剩余部分215、220和225的其他方式。可以使用不同定向(例如,旋转)的数据和地址移位和/或利用所分段的数据移位来配置pld300的不同部分。

如在图3c中示出的,在配置数据被加载到pld300的剩余部分215、220和225的配置存储器单元中之后,唤醒电路245生成并且为pld300提供允许唤醒pld300的i/o和逻辑功能的唤醒信号。在这点上,与快速启动相关联的i/o结构的该部分可以从快速启动操作模式转换为与pld300相关联的系统操作模式。逻辑结构和i/o结构的剩余部分可以从配置模式转换为pld300的全系统操作模式。在一些情况下,与快速启动相关联的i/o结构的该部分可以在快速启动相对于配置整个pld300的时间具有不同的功能。例如,i/o结构的一部分可以在快速启动操作模式下提供静态控制,然后在全系统操作模式下转换为逻辑控制的i/o。在这点上,i/o结构的这种部分可以基于从逻辑结构向i/o结构所提供的信号来提供i/o功能。

虽然上面关于将配置数据加载到用于快速启动配置和激活的i/o部分205和210,以及用于正常配置和激活的剩余部分215、220和225中给出了示例,但是配置数据可以以任何方式被加载到i/o部分205和210中,使得配置i/o部分205和210,并且随后配置数据可以以任何方式被加载到剩余部分215、220和225中,使得配置剩余部分215、220和225。例如,配置数据不需要一次一列或一行地被加载到这些部分205、210、215、220和225中。另外,虽然图3a至图3c示出了地址移位250和数据移位255,但是多个地址移位和多个数据移位可以被操作(例如,串行地或并行地、同步地或独立地)为配置用于快速启动的i/o部分205和210和/或之后的剩余部分215、220和225。

图4图示了根据本公开的一个实施例的具有被指定用于快速启动的i/o部分205、210、215和220的pld400的框图。对图3a至图3c的描述一般地应用于图4,其中本文中提供了不同的示例以及其他的描述。在一个实施例中,除了被指定用于快速启动的i/o部分205、210、215和220之外,pld400通常可以与pld200相同。

为了配置pld400以用于快速启动操作,可以利用各种地址移位和数据移位(由415、420、425、430、435、440、445和450表示)来配置i/o部分205、210、215和220。在配置i/o部分205、210、215和220时,pld200的i/o结构可以被激活以提供pld400的i/o功能,从而将pld400的i/o结构从配置模式转换为快速启动操作模式。结合激活i/o功能或在激活i/o功能之后,可以利用地址移位和数据移位(由405和410表示)来配置逻辑核225。与pld400的逻辑结构相关联的逻辑功能可以被激活以从配置模式转换为pld400的全系统操作模式。i/o功能可以从快速启动操作模式转换为全系统操作模式。

各种地址移位和数据移位可以是地址逻辑电路235和数据写入电路240,或者可以由地址逻辑电路235和数据写入电路240控制。为了清楚起见,来自地址逻辑电路235和数据写入电路240的控制信号未在图4中示出。在图4中,各种地址移位和数据移位彼此垂直。可以针对地址移位和数据移位利用定向的不同组合。作为一个示例,移位415可以是地址移位(例如,列地址移位),而移位420可以是数据移位(例如,一次一列地移位数据)。作为另一示例,移位420可以是地址移位(例如,行地址移位),而移位415可以是数据移位(例如,一次一行的移位数据)。

在一些情况下,可以利用一个或多个地址移位器和数据移位器来配置i/o部分205、210、215和220以及逻辑核225。作为一个示例,当逐列配置i/o部分215和220时,可以通过单个列地址移位来实施移位435和445,并且移位440和450可以是用于加载所断言的列的配置数据的单个数据移位器。作为另一示例,当逐列配置i/o部分215和220时,可以通过两个(以上)列地址移位器来实施移位435和445,并且移位440和450可以是用于加载两个(以上)被同时断言的列的配置数据的两个(以上)数据移位器。在该后一示例中,移位435和445可以彼此独立地操作(例如,移位435和445可以是断言不同的列)。可以利用除了在图4中示出的那些移位之外的更少、更多和/或不同的移位。

图5图示了根据本公开的一个实施例的具有被指定用于快速启动的i/o部分205和210以及逻辑核部分505和510的pld500的框图。对图3a至图3c的描述一般地应用于图5,其中在本文中提供了不同的示例以及其他描述。在一个实施例中,除了被指定用于快速启动的i/o部分205和210以及逻辑核部分505和510之外,pld500可以一般地与pld200相同。

逻辑核225可以包括逻辑核部分505、510和515。为了配置pld500以用于快速启动,可以利用地址移位(例如,520)和数据移位(例如,525)来配置i/o部分205和210以及逻辑核部分505和510。在一个示例中,地址移位可以通过断言i/o部分205的最左列并且向右移动至逻辑核部分505的最右列来开始配置,并且然后开始i/o部分210和逻辑核部分510的配置。

在配置了部分205、210、505和510之后,pld500的i/o结构和逻辑结构的相关联的部分可以被激活以提供pld500的相关联的i/o和逻辑功能,从而将i/o结构和逻辑结构的该部分从配置模式转换为快速启动操作模式。在这种情况下,i/o结构的该部分可以提供静态控制和/或逻辑控制的i/o。结合唤醒i/o和逻辑功能的该部分或在唤醒i/o和逻辑功能的该部分之后,可以利用一个或多个地址移位和/或数据移位来将配置数据加载到逻辑核部分515和i/o部分215以及220的配置存储器单元中以配置部分215、220和515。pld500的i/o和逻辑功能可以被激活以转换为pld500的全系统操作模式。可以利用通过配置i/o部分205、210、215和220以及逻辑核部分505、510和515的其他方式(例如,顺序、定向)。

图6图示了根据本公开的实施例的具有被指定用于快速启动的i/o部分205、210、215和220以及逻辑核部分505、510、655和660的pld600的框图。对图3a至图3c的描述一般地应用于图6,其中示例具有差异并且本文提供了其他描述。在一个实施例中,除了被指定用于快速启动的i/o部分205、210、215和220以及逻辑核部分505、510、655和660之外,pld600可以一般地与pld200相同。

为了配置pld600以用于快速启动操作,可以利用各种地址移位和数据移位(由615、620、625、630、635、640、645和650表示)来配置i/o部分205、210、215和220以及逻辑部分655和660。结合唤醒与部分205、210、215、220、655和660相关联的i/o和逻辑功能的该部分或者在唤醒与部分205、210、215、220、655和660相关联的i/o和逻辑功能的该部分之后,可以利用移位605和610来配置逻辑核部分665。然后pld600的i/o和逻辑功能可以被激活以转换为pld600的全系统操作模式。

虽然图3a至图3c以及图4至图6示出了具有被指定用于快速启动的i/o部分和/或逻辑部分的pld的示例,但是在一些情况下,可以在pld中限定不同的i/o和逻辑部分。例如,i/o部分205可以包括被指定用于快速启动的第一部分和未被指定用于快速启动的第二部分。如先前所指示的,可以利用更多、更少和/或不同的地址移位和/或数据移位来配置pld。另外,虽然前面依据行和列(其中通过连续的行/列提供了被指定用于快速启动的配置存储器单元)描述了i/o部分和/或逻辑核部分的配置存储器单元,但是在一些情况下,可以以其他方式来分布被指定用于快速启动的配置存储器单元,并且这些配置存储器单元不需要在连续的列/行中。

图7图示了根据本公开的一个实施例的用于激活并且提供i/o功能的i/o控制电路700的框图。主要参照其中i/o部分205和210被指定用于快速启动的图3a至图3c的pld300来描述图7的i/o控制电路700,虽然也可以与i/o和/或控制功能的其他指定(诸如,图4至图6中的那些)一起利用i/o控制电路700。为了的讨论目的,i/o控制电路700与被指定用于快速启动的pld300的i/o结构的一部分相关联。

i/o控制电路700包括经由输出路径或输入路径被耦合至逻辑结构710的i/o焊盘705。在一个方面,可以通过逻辑核225来提供逻辑结构710。在一些情况下,i/o控制电路700的一部分可以被硬编码到pld200中,诸如,i/o启动控制逻辑电路715、输出驱动器740、和/或输入逻辑电路750的逻辑。

参照pld300,一旦配置了i/o部分205和210(例如,被加载了配置数据),i/o启动控制逻辑电路715就可以接收唤醒信号(例如,从唤醒电路245)并且响应于用于唤醒与i/o部分205和210相关联的i/o功能的唤醒信号而生成控制信号。控制信号可以被利用为用于控制多路复用器720和725的操作的选择器信号。在这点上,多路复用器720被耦合至以下四条输入线:三态直接数据(dd)线、触发器线、三态双倍数据速率(ddr)线、以及恒值线。多路复用器725被耦合至以下三条输入线:输出dd线、输出触发器线、以及输出ddr线。在一些情况下,多路复用器720和725的dd线和ddr线允许逻辑驱动的i/o功能。在图7中,i/o启动控制逻辑电路715的控制信号可以是用于选择多路复用器720的四条输入线中的一条输入线以及多路复用器725的三条输入线中的一条输入线的选择器信号。

在一些方面,为了促进快速启动操作,i/o启动控制逻辑电路715可以生成用于使得选择多路复用器720和725的触发器线或者多路复用器720的恒值线的控制信号。在触发器730和735中所存储的值(例如,0或1)被提供在触发器线上。在一些情况下,触发器730和/或735可以存储配置位流的位(例如,0或1值)。在其他情况下,触发器730和/或735可以存储被硬编码到pld300的存储器中的位(例如,0或1)。在一个方面,当配置了被指定用于快速启动操作的逻辑结构的一部分(例如,pld500和600)时,i/o启动控制逻辑电路715可以生成用于使得选择触发器线、恒值线(例如,用于多路复用器720)、ddr线、或dd线(诸如,基于由用于允许逻辑驱动的i/o功能的逻辑结构的该部分提供的逻辑)的控制信号。

多路复用器720的输出(例如,在触发器730中所存储的值)可以使得输出驱动器740能够将值驱动到i/o焊盘705上或者禁用(例如,置于三态)输出驱动器740。当启用输出驱动器740以用于驱动时,输出驱动器740将由多路复用器725的输出提供至输出驱动器740的值(例如,存储在触发器735中的值)驱动到i/o焊盘705上。例如,当触发器730存储1时,可以启用输出驱动器740,并且在触发器735中所存储的值(例如,0或1)被提供至输出驱动器740,并且通过输出驱动器740被驱动到i/o焊盘705上(例如,驱动到逻辑低或者逻辑高)。当触发器730存储0时,可以禁用输出驱动器740,并且由输出驱动器740从触发器735接收到的任何值没有通过输出驱动器740被驱动到i/o焊盘705上。在一个方面,当禁用输出驱动器740,输出驱动器740可以被称为处于三态或者高阻抗模式。

作为一个示例,i/o焊盘705可以被耦合至由pld300的i/o结构控制的组件(例如,风扇、led)。当值0(例如,被转换为逻辑低)被驱动到i/o焊盘705上时,组件可以被关断(例如,如果组件被接通,则组件被关断,或者如果组件已经被关断,则组件保持关断)。当值1(例如,被转换为逻辑高)被驱动到i/o焊盘705上时,组件可以被接通(例如,如果组件被关断,则组件被接通,或者如果组件已经被接通,则组件保持接通)。

在输入侧,i/o焊盘705可以从被连接至pld300的外部组件接收信号。输入缓冲器745可以经由i/o焊盘705从外部组件接收信号并且将该信号提供至输入逻辑电路750。该输入逻辑电路750可以处理所接收到的信号并且将该处理过的信号提供至逻辑结构710以执行相关联的逻辑。在一些情况下,诸如,当逻辑功能未被指定用于快速启动时,在快速启动操作期间,输入路径通常不被使用,因为由pld300提供的逻辑功能还未被激活。在其他情况下,诸如,当逻辑功能的一部分被指定用于快速启动时,可以利用输入路径来从外部组件接收信号并且将其提供至逻辑结构710以用于处理。

一旦配置了整个的pld300,唤醒电路245就可以提供唤醒信号以将i/o和逻辑结构转换为全系统操作模式。如在表1中所示的,在从快速启动操作模式转换为全系统操作模式时,i/o启动控制逻辑电路715可以生成用于使得多路复用器720和/或725根据用户所指定的应用从它们的相应输入线中选择一条输入线的控制信号。在这点上,i/o启动控制逻辑电路715可以但不必选择触发器输入线。

表1

在一种情况下,使用i/o焊盘705和i/o逻辑控制电路700的其他组件实现的i/o功能可以在快速启动操作模式与全系统操作模式之间保持不变。在这种情况下,例如,i/o启动控制逻辑电路715可以生成用于使得多路复用器720和725在快速启动操作模式和全系统操作模式期间选择触发器线的控制信号。这种i/o功能可以以快速启动操作模式和全系统操作模式来提供静态控制。

在另一种情况下,在快速启动操作模式与全系统操作模式之间,通过使用i/o焊盘705实现的i/o功能可以不同。在这种情况下,i/o启动控制逻辑电路715可以生成用于使得多路复用器720和/或725从选择触发器线转换为其他输入线中的一条输入线(诸如以下之一:dd、触发器、ddr、或恒值线)的控制信号。在一个实施例中,为了促进从快速启动操作模式转换到全系统操作模式(例如,无缝转换、无低频干扰转换),由多路复用器720和/或725的对应输入线上的逻辑结构710提供的dd或ddr值可以被重置为与在触发器730和735中所存储的那些值相同的值。在重置之后,逻辑结构710可以根据用户所指定的应用来将值提供到dd或ddr线上,其中dd或ddr线上的这种值可以与在触发器730和735中所存储的值不同。例如,可以在已经经过在转换到全系统操作模式之后的预定(例如,阈值)时间量之后实现这种逻辑控制的i/o以促进转换。

虽然关于被指定用于快速启动的i/o描述了图7,但是在一些情况下,可以与未被指定用于快速启动的i/o一起利用i/o控制电路700。在这种情况下,i/o启动控制逻辑电路715不接收或者不响应与快速启动相关联的唤醒信号。i/o启动控制逻辑电路715可以响应于在已经配置了整个pld之后所接收到的唤醒信号而生成用于控制多路复用器720和725(并且因此,控制输出侧和输入侧)的控制信号。

图8图示了根据本公开的一个实施例的针对pld的示例设计过程800的流程图。应注意,可以根据需要以不同的顺序组合、省略和/或执行一个或多个操作。例如,图8所的过程可以由运行latticediamond软件的外部系统130执行以配置pld。

在框805中,外部系统130接收指定pld(例如,300)的期望功能的设计。例如,用户可以与外部系统130交互(例如,通过用户输入设备137和表示设计的硬件描述语言(hdl)代码)以识别设计的各种特征(例如,高级逻辑操作、硬件配置、和/或其他特征)。例如,hdl表示可以利用基于寄存器传输级(rtl)的设计。在用户设计中,用户可以设置属性以指定i/o结构的快速启动部分、逻辑结构的部分、和/或其他组件。

在框810中,外部系统130将设计合成到可以被用于实施设计的一组网表组件中。例如,外部系统130可以提供通过pld来识别各种类型的组件及它们的相关联的信号的网表。外部系统130可以执行一次或多次规则检查以确认设计描述了pld的有效配置。例如,外部系统130可以适当地拒绝无效配置和/或请求用户提供新的设计信息。

在框815中,外部系统130执行映射过程,在该映射过程中,将网表组件的集合被分组(例如,被打包)在一起。在一些情况下,网表组件的集合可以包括与i/o功能相关联的集合以及与逻辑功能相关联的集合。

在框820中,外部系统130执行放置过程以将与i/o功能相关联的被分组网表组件分配至驻留在pld的特定物理位置处的特定物理组件。例如,参照图3a,放置过程可以将与快速启动i/o功能相关联的被分组网表组件放置在被指定用于i/o功能的快速启动的pld300的物理位置(例如,存储体)中,诸如,i/o部分205和210的物理位置。放置过程可以将不与快速启动i/o功能相关联的被分组网表组件放置在其他物理位置中,诸如,在i/o部分215和220中。

在框825中,外部系统130执行放置过程以将与逻辑功能相关联的被分组网表组件分配至驻留在pld的特定物理位置处的特定物理组件(例如,被分配至特定逻辑块和/或逻辑块内的特定物理组件)。例如,放置过程可以将与快速启动逻辑功能(如果有的话)相关联的被分组网表组件放置在被指定用于逻辑功能的快速启动的pld的物理位置(例如,存储体)中。

虽然在图8中框820和825被设置为分开的框,但是可以分开地或一起地执行框820和825。例如,i/o放置可以与逻辑放置一起发生。在另一示例中,可以在放置任何剩余的i/o和/或逻辑功能之前执行任何快速启动功能(例如,快速启动i/o和/或逻辑功能)的放置。

在框830中,外部系统130路由被分配的物理组件之间的连接(例如,使用路由资源)以实现物理互连。通过执行框820、825和835,外部系统130确定了(与所接收到的设计相关联的)布局,该布局包括待被配置并且被激活以提供功能(例如,i/o和逻辑功能)以及相关联的路由的pld组件的位置。

在框835中,外部系统130生成所确定的布局的配置数据(例如,放置和路由设计)。例如,参照图3a,配置数据可以包括用于与快速启动i/o相关联的i/o部分205和210的i/o配置数据、用于i/o部分215和220的i/o配置数据、以及用于逻辑核225的逻辑配置数据。

在框840中,外部系统130对配置数据启用安全性。在一个方面,外部系统130可以生成用于允许在配置数据被加载到配置存储器单元中之后对配置数据执行认证的一个或多个认证证书。在一些情况下,可以针对快速启动功能生成一个或多个认证证书,并且可以针对剩余的功能生成另一个或多个认证证书。在没有进行认证的情况下,不执行框840。

在一些方面,安全性可以是基于密钥哈希消息认证码(hmac)(例如,通常更快)、椭圆曲线数字签名算法(edcsa)(例如,非对称密钥)、和/或其他。在一些情况下,证书创建者具有私钥,而设备持有公钥。每个认证证书可以是或者可以包括基于配置位流或其部分所生成的位流摘要(digest)。作为一个示例,可以通过对配置位流或其部分操作安全哈希算法(sha)引擎(诸如,sha-256引擎)来生成位流摘要。在一种情况下,可以结合快速启动功能来生成一个或多个认证证书,并且可以结合剩余的功能来生成一个或多个认证证书。

在框845中,外部系统130提供所生成的配置数据以促进pld的配置和唤醒。在一个方面,配置数据可以作为配置位流被提供到待被写入对应的配置存储器单元(例如,配置sram单元)中的位线上。当配置pld时,配置数据可以被存储在非易失性存储器(例如,闪速存储器)中,然后从非易失性存储器被加载到pld的电压存储器中。非易失性存储器可以在pld中和/或在pld的外部(例如,外部硬盘驱动器、外部闪盘驱动器)。关于图9提供了配置并且唤醒pld的一个示例。

图9图示了根据本公开的一个实施例的针对促进pld的快速启动功能的示例过程900的流程图。为了进行说明,本文参照图3a至图3c的pld300描述了示例过程900,但是可以与其他pld一起利用示例过程900。应注意,可以根据需要以不同的顺序组合、省略、和/或执行一个或多个操作。

在框905中,处理电路230接收与pld300相关联的配置数据。配置数据可以由外部系统130生成。在一个方面,处理电路230可以从pld300的非易失性存储器获得配置数据(例如,通过外部系统130被加载到非易失性存储器中),pld300的非易失性存储器是在pld300中和/或在pld300的外部。处理电路230可以接收配置数据作为位流的一部分。在一些情况下,可以在配置位流之前立即提供前导码,或者作为配置位流的初始位序列的一部分提供前导码。前导码可以是利用作为对pld300的配置数据的开始的指示的预定位序列。当启用安全性时,可以连同配置数据一起或者作为配置数据的一部分提供认证证书。

在框910中,处理电路230对与快速启动功能相关联的pld300的配置存储器单元的子集进行编程。在断言地址并且加载与pld300的剩余功能(例如,非快速启动功能)相关联的配置数据之前,处理电路230可以使地址逻辑电路235断言与快速启动功能相关联的地址以及使得数据写入电路240加载相关配置数据。例如,在图3a中,在前导码之后,配置数据可以包括i/o部分205和210的配置数据帧。作为另一示例,在图5中,在前导码之后,配置数据可以包括用于i/o部分205、逻辑核部分505、逻辑核部分510、以及i/o部分210的配置数据帧。在一些情况下,顺序和/或移位定向(例如,逐行或者逐列)(其中配置数据帧被加载到各个部分(例如,205、210)中)可以是基于速度考虑、复杂性(例如,数据移位和/或地址移位操作的数目)和/或其他考虑。

在框915中,处理电路230基于(一个或多个)对应的认证证书来执行在存储器单元的子集中所存储的配置数据的认证。在一个方面,可以在框915之前(例如,在将配置数据存储在存储器单元的子集中之前)执行认证。例如,可以通过认证引擎运行输入位流(incomingbitstream),然后将配置数据写入存储器单元的子集来执行认证。在一些情况下,可以执行回读和认证(例如,重新认证),但是这种过程会增加延迟。在这点上,可以利用通过其可以确定被存储在存储器单元的子集中或者待被存储在存储器单元的子集中的配置数据是完整的任何技术来认证配置数据。在框920中,处理电路230确定认证是否成功。在未对配置数据启用安全性的情况下,不执行框915和920。

如果认证不成功,则过程900继续至框950。在框950中,处理电路230中止pld300的配置和唤醒。在一些情况下,可以向用户提供(例如,显示)指示以指示pld300的配置和唤醒已被中止。

如果认证成功,则过程900继续至框925。处理电路230提供用于激活快速启动功能的唤醒信号。该唤醒信号可以由处理电路230的唤醒电路245生成。当快速启动功能被激活时,pld300可以提供快速启动i/o功能,从而将pld300的相关联的i/o结构从配置模式转换为快速启动操作模式。在其他pld(诸如,图5所示pld500)中,当快速启动功能被激活时,pld500可以提供快速启动i/o和逻辑功能。在框930中,处理电路230对pld300的剩余配置存储器单元进行编程。这些剩余配置单元是不与快速启动功能相关联的那些配置单元。如在图3a至图3c中示出的,这些剩余配置存储器单元可以是在i/o部分215和220以及逻辑核225中的那些配置存储器单元。

在框935中,处理电路230基于(一个或多个)对应的认证证书来执行对这些剩余存储器单元中所存储的配置数据的认证。在一个方面,可以在框930之前(例如,在将配置数据存储在剩余存储器单元中之前)执行认证。更一般地,在一些情况下,如上面参照框915所描述的认证程序还可以应用于框935。在框940中,处理电路230确定认证是否成功。在未对配置数据启用安全性的情况下,不执行框935和940。

如果认证不成功,则过程900继续至框950。在框950中,处理电路230中止pld300的配置和唤醒。如果认证成功,则处理电路230提供用于激活pld300的功能的唤醒信号。快速启动i/o功能可以从快速启动操作模式转换为全系统操作模式。逻辑功能和剩余的i/o功能可以从配置模式转换为全系统操作模式。

在适用的情况下,可以使用硬件、软件、或者硬件和软件的组合来实施本公开所提供的各种实施例。在不脱离本公开的精神的情况下,同样在适用的情况下,本文所阐述的各种硬件组件和/或软件组件可以被组合成包括软件、硬件和/或两者的复合组件。在不脱离本公开的精神的情况下,在适用的情况下,本文所阐述的各种硬件组件和/或软件组件可以被分成包括软件、硬件和/或两者的子组件。另外,在适用的情况下,预期软件组件可以被实施为硬件组件,反之亦然。

根据本公开的软件(诸如,程序代码和/或数据)可以被存储在一个或多个非暂时性机器可读介质上。还预期可以使用一个或多个通用或专用计算机和/或计算机系统联网地和/或以其他方式来实施本文中所识别的软件。在适用的情况下,本文所描述的各种步骤的顺序可以被改变、被组合成复合步骤、和/或被分成子步骤,以提供本文所描述的特征。

上文所描述的实施例说明但没有限制本发明。还应理解的是,根据本发明的原理,许多修改和变化是可能的。因此,本发明的范围仅由以所附权利要求书限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1