带有安全子系统的可编程IC的制作方法

文档序号:12071681阅读:298来源:国知局
带有安全子系统的可编程IC的制作方法与工艺

本公开大体涉及用于安全性关键应用(safety critical application)的电路和方法。



背景技术:

可编程集成电路(IC)是能够被编程以执行特定逻辑功能的设备。一种类型的可编程IC,也就是现场可编程门阵列(FPGA),典型地包括可编程单元块(tile)的阵列。这些可编程单元块可以包括多种类型的逻辑模块,其可以包括,例如,输入/输出模块(IOB)、可配置逻辑模块(CLB)、专用随机存取存储器模块(BRAM)、乘法器、数字信号处理模块(DSP)、处理器、时钟管理器、延迟锁定回路(DLL)、总线或诸如高速外围组件互连(PCI-e)和以太网等等的网络接口。

每个可编程单元块均典型地包括可编程互连和可编程逻辑。可编程互连典型地包括大量不同长度的互连线,互连线通过可编程互连点(PIP)互连。可编程逻辑通过使用可编程元件执行用户设计的逻辑,其中可编程元件包括,例如,函数发生器、寄存器、运算逻辑等等。

通过将配置数据的数据流加载到对如何配置可编程元件进行定义的内部配置存储单元中,能够典型地对可编程互连和可编程逻辑进行编程。可以从存储器(例如,从外部PROM)中读取配置数据,或者可以通过外部设备将配置数据写入FPGA。单个存储单元的共同状态于是确定了FPGA的功能。

一些可编程IC包括能够执行程序代码的嵌入式处理器。该处理器能够被制造成相同裸片(die)的一部分,其中该裸片包括可编程逻辑电路和可编程互连电路,其也被共同地称作IC的“可编程电路”。应当理解,在处理器内对程序代码的执行,不同于对在IC上可用的对可编程电路进行的“编程”和“配置”。对IC的可编程电路进行编程或配置的动作,会使可编程电路内的配置数据指定的不同的物理电路能够实施。



技术实现要素:

公开了一种可编程IC,其包括:可编程逻辑子系统、处理子系统和安全子系统。所述可编程逻辑子系统包括:响应于第一子集的配置数据而被配置的多个可编程逻辑电路。所述处理子系统包括一个或多个处理电路,所述一个或多个处理电路被配置成:响应于第二子集的配置数据执行软件程序。所述安全子系统被配置成执行安全功能,所述安全功能检测和/或减少可编程IC的电路中的错误。所述安全子系统包括:一组硬连线电路,其被配置成为所述可编程IC的第一子集的电路执行基于硬件的安全功能。所述安全子系统还包括:处理电路,其被配置成为所述可编程IC的第二子集的电路执行基于软件的安全功能。

可选地,所述可编程IC被配置成:响应于接收所述配置数据,存储包括在第三子集的配置数据中的安全策略;以及所述安全策略识别所述可编程IC的所述电路的优先级,所述第一子集的电路被识别作为较高优先级的电路,而所述第二子集的电路被识别作为较低优先级的电路。

可选地,所述第三子集的配置数据为所述可编程IC的所述电路中的每一个指定所执行的安全功能。

可选地,所述处理电路包括至少两个处理器,其被配置成以锁步方式执行所述基于软件的安全功能中的一个。

可选地,由所述一组硬连线电路执行的所述基于硬件的安全功能中的至少一个被配置成:确定所述两个处理器是否正确地以锁步方式进行操作。

可选地,所述可编程IC的所述电路包括存储电路;以及由所述安全子系统为所述存储电路执行的安全功能使用错误校正编码监视存储在所述存储电路中的数据的完整性。

可选地,由分离的电源域为所述可编程逻辑子系统、所述处理子系统和所述安全子系统供电。

可选地,所述可编程IC包括电源管理单元,被配置成调节所述电源域中的电源,其被用于为所述可编程逻辑子系统、所述处理子系统和所述安全子系统供电;以及由所述安全子系统为所述电源管理单元执行的安全功能使用所述一组硬连线电路中包括的三模冗余错误检测电路监视所述电源管理单元在操作上的错误。

可选地,通过所述安全子系统执行的所述安全功能中的至少一个被配置成:响应于检测所述子系统中的错误,复位所述可编程IC的所述可编程逻辑或处理子系统中的一个。

可选地,所述安全子系统为所述可编程IC中的某一电路执行的所述安全功能中的至少一个将由所述某一电路使用的通信数据路径与由所述可编程IC的其它电路使用的通信数据路径隔离。

公开了一种用于操作可编程IC的方法。在可编程集成电路(IC)的可编程逻辑子系统中操作用户设计的硬件部分。在所述可编程IC的处理子系统上执行所述用户设计的软件部分。使用所述可编程IC的安全子系统的一组处理器以执行基于软件的安全功能。使用所述安全子系统的一组硬连线电路执行基于硬件的安全功能。所述基于软件的和基于硬件的安全功能被配置成检测和/或减少所述可编程IC的电路中的错误。

可选地,所述方法还包括:用一组配置数据配置所述可编程逻辑子系统,以形成所述用户设计的所述硬件部分;将包括在所述一组配置数据的子集中的安全策略存储在所述安全子系统的存储器中,所述安全策略指示所述基于硬件的或基于软件的安全功能中的至少一个。

可选地,所述安全策略将所述可编程IC的所述电路分类成高优先级或低优先级;所述基于软件的安全功能检测和/或减少所述可编程IC的被分类成低优先级的电路中的错误;以及所述基于硬件的安全功能检测和/或减少所述可编程IC的被分类成高优先级的电路中的错误,所述基于硬件的安全功能。

可选地,所述基于软件的安全功能中的至少一个被使用以锁步方式进行操作的所述一组处理器中的至少两个处理器执行。

可选地,所述基于硬件的安全功能中的至少一个被配置成确定所述至少两个处理器是否正确地以锁步方式进行操作。

可选地,所述可编程IC的所述电路包括存储电路;以及执行所述基于软件的或基于硬件的安全功能中的至少一个的步骤包括:使用错误校正编码监视存储在所述存储电路中的数据的完整性。

可选地,所述方法还包括:使用分离的电源域为所述可编程逻辑子系统、所述处理子系统和所述安全子系统供电。

可选地,所述方法还包括:使用所述可编程IC的电源管理单元以调节所述分离的电源域中的电源。执行所述基于硬件的安全功能的步骤包括:使用所述一组硬连线电路中包括的三模冗余错误检测电路以监视所述电源管理单元在操作上的错误。

可选地,所述基于软件的或基于硬件的安全功能中的至少一个被配置成:响应于检测所述子系统中的错误,复位所述可编程IC的所述可编程逻辑或处理子系统中的一个。

可选地,所述基于软件的或基于硬件的安全功能中的至少一个被配置成,将由所述某一电路使用的通信数据路径与由所述可编程IC的其它电路使用的通信数据路径隔离。

通过考虑具体实施方式和权利要求,能够了解其它特征,具体如下。

附图说明

通过审阅下面的具体实施方式并且参考附图,公开的方法和电路的各种方面和特征将变得更为清晰。

图1示出了根据一个或多个实施例的第一可编程IC;

图2示出了根据一个或多个实施例的用于操作可编程IC的示例性过程;

图3示出了根据一个或多个实施例的第二可编程IC;

图4示出了用于用户可配置错误处理的示例性系统,其中该用户可配置错误处理可以被包括在可编程IC的安全子系统中。

具体实施方式

在一些关键任务应用(mission critical application)中,可编程IC可以被配置成执行可编程逻辑子系统或处理子系统中的一个或多个关键任务的功能。为了满足一些高安全性的认证标准,例如IEC 61508SIL3或者ISO-26262ASILC,分离的安全电路被连接至可编程IC,以确保关键任务的电路或功能的正确操作。安全电路可能需要符合严格的隔离、保护和诊断-覆盖(diagnostic-coverage)要求,以满足高安全认证标准。这些要求应用于整个可编程IC,并且被应用于包括安全电路的整个设备,以确保非关键任务电路的故障不会影响安全系统监视关键任务电路或功能的能力。这些要求可能造成重大的负担,并且可能延长设计过程。

在一个或多个实施例中,可编程IC包括与处理子系统和可编程逻辑子系统集成的安全子系统。可编程逻辑子系统包括多个可编程逻辑电路,其可以由第一子集的配置数据配置以形成用户设计的硬件部分。处理子系统包括被配置为执行用户设计的软件部分的一个或多个处理电路,其中第二子集的配置数据包括该用户设计的软件部分。安全子系统被配置为执行一个或多个安全功能。安全功能中的每一个均被配置为检测和/或减少(mitigate)可编程IC多个电路中的单独一个电路的错误。安全功能响应于检测到的错误来执行多个不同的动作,诸如电压调整,电源关闭,复位,错误信号生成,数据备份,切换到冗余/备用系统,内置自测试等。在一些实施例中,安全功能可以被配置为复位发生了局部错误的单个子系统。

安全子系统包括一组硬连线电路,其被配置为对多个电路的第一子集执行安全功能。硬连线电路被制造为实施可编程IC的可编程电路的裸片的一部分。安全子系统还包括处理电路,其被配置为执行程序代码,以实施用于可编程IC的多个电路的第二子集的一组安全功能。为了便于参考,由硬连线电路执行的安全功能可以被称为基于硬件的安全功能。相反,由处理电路执行的安全功能可以被称为基于软件的安全功能。

在各种实施例中,可以由用户全部或部分地指定要保护的多个电路和所采用的安全功能。例如,配置数据的一部分可以包括安全策略,其为可编程IC的多个电路中的每一个指定将被执行的安全功能。

安全功能可以为可编程IC的不同类型电路提供不同级别的保护。在一些实施例中,配置数据可以指示要保护的每个电路的优先级。安全子系统可以被配置为:为低优先级电路执行基于软件的安全功能,以及为高优先级电路执行基于硬件的安全功能。可选地或附加地,安全功能检查较高优先级电路是否正确操作的频率比较低优先级电路更高。可以通过安全子系统的冗余硬连线电路执行一些安全功能。例如,安全子系统的硬连线电路可以包括三模冗余电路,其被配置为监视可编程IC的电源管理单元。

在一些应用中,安全子系统的处理电路包括至少两个处理器,其被配置为:以锁步(lockstep)方式执行一组基于软件的安全功能。通过安全子系统中的硬连线电路执行的一个或多个安全功能可以被配置为:监视各种电路,以确保两个处理器能够以锁步方式正确地操作。

在一些实施例中,在不使用软件诊断的情况下,通过基于硬件的安全功能来保护第一组高优先级电路,该第一组高优先级电路对处理器的锁步操作起关键作用。该第一组电路例如可以包括:以锁步方式进行操作的处理器、由处理器使用的高速缓存、用于存储被(在锁步处理器上执行的)软件所引用的变量的片上存储器、以及对存储器和处理器之间的数据进行通信的互连。例如,用于存储器的安全功能可以使用错误校正编码来监视存储在存储器电路中的数据的完整性。作为另一示例,用于高速缓存的安全功能可以被配置为监视被处理器使用的高速缓存,以进行正确的锁步操作。

可以由基于硬件的安全功能和基于软件的安全功能的混合,来保护与可编程IC的基础结构相关的第二组中优先级电路。用于该第二组的一些安全功能可以监视操作参数,例如时钟频率、电压电平和/或温度。用于该第二组的一些其它安全功能可以促进安全性关键电路或功能与可编程IC的其它电路或子系统的隔离。

可以主要通过基于软件的安全功能,来保护第三组低优先级电路。该第三组低优先级电路例如可以包括:未被安全性关键的电路或功能利用的外围设备。基于硬件的安全功能可以用于为安全性关键电路或功能使用的外围设备提供保护。也可以为安全性关键外围设备提供多个I/O通道和/或I/O回送(loopback)能力。

在一些实施例中,可以在分离的电源域中对可编程逻辑子系统、处理子系统和安全子系统进行供电。通过使用分离的电源域,如果在处理子系统或可编程逻辑子系统中发生电源故障,安全子系统可以继续操作。在一些实施例中,一个或多个安全功能可以响应于处理子系统或可编程逻辑子系统中的电源故障而采取补救措施。此外,例如,使用分离的电源域可以允许处理子系统或可编程逻辑子系统响应于子系统中的不可恢复的错误而被独立地复位。

在下面的描述中,阐述了许多具体细节以描述本文给出的具体示例。然而,显而易见的是,可在没有下文给出的所有具体细节的情况下,实施这些实施例的一个或多个其它实施例和/或变体。在其它实例中,没有详细地描述公知的特征,以免混淆对本发明的实施例的描述。

现参考附图,图1示出根据一个或多个实施例进行配置的第一可编程IC。可编程IC 102包括处理子系统110、安全子系统120和可编程逻辑子系统130。可编程逻辑子系统130包括多个可编程逻辑电路132,其可以由第一子集的配置数据配置,以形成用户设计的硬件部分。处理子系统110包括一个或多个处理电路112,其被配置为执行被包括在第二子集的配置数据中的用户设计的软件部分的程序代码。

安全子系统120被配置为执行一个或多个安全功能,每个安全功能均被配置为检测和/或减少可编程IC的各个电路中的错误。安全子系统120包括一组硬连线电路122,其被配置为对可编程IC的第一组电路执行基于硬件的安全功能123。安全子系统还包括一个或多个处理电路124,其被配置为对可编程IC的第二组电路执行一组基于软件的安全功能125。如前所述,安全功能123和125响应于检测到的错误而执行多个不同的动作。不同的动作可以包括电压调整、电源关闭、子系统复位、错误信号生成、数据备份、切换到冗余/备份系统和/或内置自测试。在一些实施例中,在存储在子系统的存储器126中的安全策略128中,指定要执行的安全功能123和125以及要由安全功能保护的电路。在一些实施例中,存储器126可以是被配置为存储默认安全策略的非易失性存储器。在一些其它实施例中,安全策略128可以在可编程IC启动时被存储在存储器126中。在一些实施例中,安全策略128可以由用户提供或调整。例如,可以在用于配置可编程逻辑子系统130的可编程逻辑电路132的一组配置数据的一部分中全部或部分地提供安全策略128。

图2示出了根据一个或多个实施例的用于操作可编程IC的示例性过程。在框202,处理(PS)子系统被配置为:执行在一组配置数据的第一子集中指示的用户设计的软件部分。在框204,用该组配置数据的第二子集来编程可编程逻辑(PL)子系统的一组可编程逻辑电路,以实现用户设计的硬件部分。可选地,在框206,安全子系统可以被配置为执行一个或多个用户定义的安全功能,其中在该组配置数据的第三子集中包括的安全策略中指定所述一个或多个用户定义的安全功能。配置例如可以包括:将安全策略存储在安全子系统的存储器中。

在框208,操作用户设计的软件和硬件部分。在框210,由在安全子系统中以锁步方式进行操作的一组处理器执行第一组安全功能。第一组安全功能例如可以包括:用户定义的安全功能(如果提供的话)。在框212,由安全子系统中的一组硬连线电路执行第二组安全功能。例如,第二组安全功能中的一个可以被配置为:确保安全子系统中的该组处理器以锁步方式进行正确地操作。在一些实施例中,一个或多个硬连线电路可以被配置为:实施一个或多个用户定义的安全功能(如果提供的话)。参考图4,其更详细地描述了被配置为执行用户定义的安全功能的硬连线电路。安全功能在框210和212被持续地执行,而用户设计的软件和硬件部分在框208被持续地操作。

图3示出了根据一个或多个实施例进行配置的可编程IC 302。可编程IC也可以被称为片上系统(SOC),其包括处理子系统310和可编程逻辑子系统330。处理子系统310可以被编程,从而通过执行用户程序以实现用户设计的软件部分。该程序可以被指定作为配置数据流的一部分,或者可以从片上或片下数据存储设备中取出。处理子系统310可以包括各种电路312、314、316和318,以执行一个或多个软件程序。电路312、314、316和318可以包括,例如,一个或多个处理器核心、浮点单元(FPU)、中断处理单元、片上存储器、存储器高速缓存和/或高速缓存一致性互连(cache coherent interconnect)。

可编程IC 302中的可编程逻辑子系统330可以被编程,以实现用户设计的硬件部分。例如,可编程逻辑子系统可以包括一些可编程逻辑电路332,其可以被编程以实现一组在配置数据流中指定的电路。可编程逻辑电路332包括可编程互连电路、可编程逻辑电路和配置存储单元。可编程逻辑使用可编程元件(包括例如,函数生成器(function generator)、寄存器、算术逻辑等)实施用户设计的逻辑。可编程互连电路可以包括大量各种长度的互连线路,其被可编程互连节点(PIP)互连。

可以通过向配置存储单元中加载配置数据流来对可编程逻辑电路332进行编程,配置存储单元定义了可编程互连电路和可编程逻辑电路的配置方式。单个存储单元的集合状态于是确定了可编程逻辑电路332的功能。可以从存储器(例如,从外部PROM)读取配置数据,或者可以通过外部设备将配置数据写入可编程IC 302。在一些实施例中,可以通过可编程逻辑子系统330中的配置控制器334将配置数据加载入配置存储单元中。在其它一些实施例中,可以通过处理子系统310执行的启动过程将配置数据加载入配置存储单元中。

可编程IC 302可以包括各种电路,以将处理子系统310互连至在可编程逻辑子系统330内实施的电路。在这个实施例中,可编程IC 302包括核心切换器326,其可以在处理子系统310和可编程逻辑子系统330的各种数据端口之间路由数据信号。核心切换器326也可以在可编程逻辑子系统310或处理子系统330和可编程IC的多种其它电路(比如内部数据总线)之间路由信号。可替换地或额外地,处理子系统310可以包括直接与可编程逻辑子系统连接的接口,从而绕过核心切换器326。可以使用例如ARM发行的AMBA AXI协议规范(AXI)来实施该接口。

在一些实施例中,处理子系统310和可编程逻辑子系统330也可以通过存储控制器321对片上存储器322或片下存储器(没有示出)的存储位置进行读或写。存储控制器321可以被实施以与一个或多个不同类型的存储电路通信,包括但不限于双倍数据速率(DDR)2、DDR3、低功率(LP)DDR2类型的存储器,不管是16比特、32比特、或是带纠错码(ECC)的16比特等。提供能够与存储控制器321进行通信的不同存储器种类的名单只是起说明作用,而不视为限制或是穷举性的。如图3所示,可编程IC 302可以包括存储器管理单元320以及转译后备缓冲器(translation look-aside buffer)324,以把子系统310和330使用的虚拟存储器地址转译为存储控制器321使用的物理存储器地址,从而访问特定的存储位置。

可编程IC可以包括输入/输出(I/O)子系统350,以用于与外部电路进行数据通信。I/O子系统350可以包括各种类型的I/O设备或接口,例如闪存型I/O设备、高性能I/O设备、低性能接口、调试I/O设备和/或RAM I/O设备。

I/O子系统350可以包括一个或多个闪存接口360,以360A和360B表示。例如,一个或多个闪存接口360可以被实施为被配置用于4比特通信的四串行外围接口(QSPI)。一个或多个闪存接口360可以被实施为并行的8比特NOR/SRAM型接口。一个或多个闪存接口360可以被实施为被配置用于8比特和/或16比特的通信的NAND接口。可以理解,所描述的具体接口被提供用于例证而非限制。也可以使用其它具有不同比特宽度的接口。

I/O子系统350可以包括一个或多个接口362,其提供比闪存接口360更高级的性能。接口362A-362C中的每一个都可以被分别耦接至DMA控制器364A-364C。例如,一个或多个接口362可以被实施成通用串行总线(USB)型接口。一个或多个接口362可以被实施为千兆以太网类型的接口。一个或多个接口362可以被实施成安全数字(SD)型接口。

I/O子系统350还可以包括一个或多个接口366,如接口366A-366D,其提供比接口362低级的性能。例如,一个或多个接口366可以被实施成通用I/O(GPIO)型接口。一个或多个接口366可以被实施成通用异步接收器/发送器(UART)型接口。一个或多个接口366可以被实施成串行外围接口(SPI)总线型接口的形式。一个或多个接口366可以被实施成控制器局域网(CAN)型接口和/或I2C型接口的形式。

I/O子系统350可以包括一个或多个调试接口368,如处理器JTAG(PJTAG)接口368A和跟踪接口(trace interface)368B。PJTAG接口368A可以为可编程IC 302提供外部的调试接口。跟踪接口368B提供的端口能够接收来自处理子系统310或可编程逻辑子系统330的调试(例如追踪)信息。

如图所示,接口360、362、366和368中的每一个都可以被耦接至多路选择器370。多路选择器370提供多个输出,这些输出可以被直接路由或耦接至可编程IC 302的外部引脚,例如,封装的焊球,其中可编程IC 302被设置在该封装内。例如,可以在接口360、362、366和368之间共享可编程IC 302的I/O引脚。用户可以通过配置数据流来配置多路选择器370,从而选择使用接口360-368中的哪一个,并将其通过多路选择器370耦接至可编程IC 302的I/O引脚。I/O子系统350还可以包括结构多路选择器I/O(fabric multiplexer I/O,FMIO)接口(没有示出),以将接口362-368连接到可编程逻辑子系统的可编程逻辑电路。额外地或可替换地,可编程逻辑子系统330可以被配置为在可编程逻辑中实施一个或多个I/O电路。在一些实施例中,可编程IC 302还可以包括具有各种用于电源和/或安全管理电路的子系统340。例如,子系统340可以包括电源管理单元346,其被配置为监视并维持用来向可编程IC 302的各个子系统供电的一个或多个电压域。在一些实施例中,电源管理单元346可以禁用空闲子系统的电源以减少功率消耗,而不禁用在使用中的子系统的电源。

子系统340还可以包括安全电路,以监视子系统的状态,从而确保正确运行。例如,子系统340可以包括一个或多个硬连线的安全电路341,其被配置成为可编程IC的各种子系统或电路执行安全功能。子系统340还包括一个或多个实时处理器342,其被配置成为可编程IC的各种子系统或电路执行各种基于软件的安全功能。

子系统340可以包括一个或多个传感器或检测器349,其被配置为监视可编程IC的各种操作参数(例如,电压、温度、时钟和/或数据/控制信号),并将指示所监视的操作参数的状态的数值存储在在状态寄存器344中。可以通过硬连线安全电路341、实时处理器342或电源管理单元346访问状态寄存器344。

安全功能可以监视各种子系统的状态,并且执行各种动作以便检测、防止和/或减轻一个或多个子系统或电路中的错误。在一些实施例中,安全功能可以响应于状态寄存器具有指示错误的值,而采取动作。例如,安全功能可以响应于检测到错误而生成警报。作为另一示例,安全功能可以复位单个子系统,以尝试还原该子系统以对操作进行校正。

可以在存储器343中存储的安全策略中指定将要保护的子系统或电路以及将要执行的安全功能。安全策略可以为可编程IC 302的不同子系统或电路提供不同级别的保护。例如,高优先级的电路/功能(例如,可编程IC的用户)可以通过专用硬连线安全电路341或以锁步方式进行操作的两个实时安全处理器342所实施的安全功能进行保护。较低优先级的电路(例如,外围设备)可以由基于软件的测试来保护,该基于软件的测试被周期性地执行,以测试较低优先级电路的功能。

可以在非易失性存储器中对安全策略进行硬编码,或者可以在启动时将安全策略存储在存储器中。在一些实施例中,安全策略可以是用户可配置的,并且例如可以在一组配置数据的子集中提供安全策略。

子系统340包括可以用于互连各种子系统的互连交换网络348。例如,互连交换网络348可以被配置为将各种子系统310、330和340连接到I/O子系统350的各种接口。在一些应用中,互连交换网络348还可以被硬接线安全电路341或实时安全处理器342的一个或多个安全功能控制,以将实时处理器342与要监视的子系统隔离。这种隔离可能是特定的应用标准(例如,IEC-61508SIL3或ISO-26262标准)所要求的,以确保实时处理器342不受在其它子系统中发生的错误的影响。在一些应用中,互连交换网络348也可以被保护(例如,通过ECC或奇偶校验),以提供针对随机故障的保护。在一些应用中,互连交换网络348可以由基于软件的测试来保护,该基于软件的测试被周期性地执行,以对互连交换网络348进行测试。

在一些实施例中,可以由硬连线安全电路341的冗余硬连线电路执行一些安全功能。例如,可以由硬连线安全电路341的三模冗余电路所执行的安全功能来保护电源管理单元346。例如,安全子系统的硬连线电路可以包括三模冗余电路,其被配置为监视可编程IC的电源管理单元。作为另一示例,可编程IC可以包括配置安全单元,其被配置为防止可编程逻辑电路的非预期的重新配置(例如,在处理子系统310的复位期间)。配置安全单元可以类似地由三模冗余电路保护。

图4示出了用于用户可配置错误处理(user configurable error handling)的示例性系统,其中在一个或多个实施例中的安全系统中可以包括该用户可配置错误处理。该系统包括一组错误状态寄存器420,每个均被配置为接收一组状态信号410中各自的状态信号。错误状态寄存器420被配置为存储和维持由状态信号410指示的错误,直到错误被错误复位信号426消除。例如,在一些实施例中,如果没有错误,则每个状态信号可以均指示逻辑0值,并且如果存在错误,则指示逻辑1值。当由错误复位信号426复位时,所有错误状态寄存器的值均可被设置为逻辑0,以指示不存在错误。响应于状态信号410中的一个指示出错误,错误状态寄存器420中的相应的一个的值被设置为逻辑1。即使状态信号稍后返回到逻辑0值,该逻辑1值也能够被寄存器维持。通过维持错误状态寄存器420中的指示错误的值,错误可以更容易地由错误处理电路处理。例如,当错误状态寄存器420中的错误被维持时,错误处理电路可以以更小频率检索/接收错误状态寄存器420的值,且不会错过间歇性错误的发生。

错误状态寄存器420的值被并行输出,以通过系统中可能包括的各种电路对这些值进行错误处理和/或监视。例如,错误状态寄存器420的值作为并行错误信号462被提供给可编程逻辑子系统,以通过其中实施的用户定义电路对其进行处理。用户可以经由一组配置数据对可编程逻辑进行编程,以实施定制的错误处理电路。错误处理电路可以由用户配置,以响应于由错误状态寄存器420指示的错误的各种组合来执行多个不同的动作。例如,由用户定义的错误处理电路可以触发一个或多个系统范围的动作,诸如复位、关机和/或警报。可选地或替代地,由用户定义的错误处理电路可以使得在可编程逻辑中实施的用户定义的电路执行一个或多个动作。例如,响应于错误,错误处理电路可以触发在可编程逻辑中实施的电路,以执行内置自测试(built-in-self-test)来确定电路是否正确地操作。类似地,在一些实施例中,可以将并行的错误信号462提供给在系统的处理器上执行的基于软件的错误处理例程。

可选地或替代地,错误状态寄存器420的值可以作为并行信号460被提供给电源管理单元。电源管理单元可以被配置为,例如,关闭或复位单个子系统或整个系统,和/或调整各种电源域的电压。在一些实施例中,电源管理单元的固件可以由用户进行编程,以响应于由错误状态寄存器指示的错误的各种组合来执行用户定义的动作。

在一些实施例中,系统可以包括掩蔽电路(masking circuit)430,其可以用于实施一个或多个用户定义的基于硬件的安全功能。掩蔽电路430可以用于,例如,过滤由错误状态寄存器420指示的错误。例如,该电路可以使用用户定义的掩码(mask)来过滤由错误状态寄存器420指示的错误,以产生一组用户感兴趣的被掩蔽的信号。例如,可以在用于可编程逻辑子系统的配置的一组配置数据内指定用户定义的掩码。用户定义的掩码可以隔离一组错误,该组错误可以单独或一起使用以触发某些动作。例如,掩蔽的错误信号可以用于设置由可编程IC中的一个或多个硬连线电路(例如复位电路)使用的控制信号。例如,如果掩蔽的信号中的任何一个指示了错误,则逻辑“或”门可以用于触发动作。只有当所有掩蔽的信号均指示错误时,逻辑“与”门才可用于触发动作。各种逻辑门的组合可以用于创建更复杂的触发。

如图4所示,掩蔽电路430可以包括第一用户可配置掩码432,其产生第一组掩蔽的错误信号435。如果掩蔽的误差信号435中任何的一个指示错误,或者如果SW错误状态信号434指示错误,那么逻辑“或”门436将错误信号438设置为指示错误的值。作为另一示例,掩蔽电路430可以包括第二用户可配置掩码440,其能够识别一组误差信号443,该组误差信号443能够触发系统的上电复位。如果掩蔽信号443中的任何一个指示错误,或者如果SW复位请求442被设置为逻辑1,那么逻辑“或”门444可通过将上电复位(POR)请求信号446设置为逻辑1,以触发系统的POR。作为又一示例,掩蔽电路430可以包括用户可配置掩码450,其能够识别一组误差信号452,该组误差信号452能够触发系统的软件复位。如果掩蔽信号452中的任何一个指示错误,或者如果SW复位请求442被设置为逻辑1,那么逻辑“或”门454通过将SW复位请求信号456设置为逻辑1,以触发软件复位。

在一些实施方式中,错误状态寄存器可以包括移位电路422,其被配置为串行移出所有寄存器的值,以产生指示每个错误状态寄存器420的值的串行状态信号424。可以从该系统输出串行状态信号424,或者串行状态信号424可以被提供给用于错误处理的各种电路。例如,在一些实施例中,可以将串行状态信号424提供给可编程逻辑中的错误处理电路,以代替并行信号462。

所述方法和电路被认为能够适用各种系统和应用。通过考虑说明书,其它方面和特征对于本领域技术人员都是显而易见的。例如,虽然在一些情况下只在个别附图中描述方面和特征,但是应当理解,来自某一附图的特征可以与另一附图的特征相结合,就算该结合没有被明确地显示,或者没有被明确地描述成一种结合。说明书和附图只意图被当作示例,本发明真正的保护范围由权利要求书指定。

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