CN100489797C - 可编程逻辑设备上的错误检测 - Google Patents

可编程逻辑设备上的错误检测 Download PDF

Info

Publication number
CN100489797C
CN100489797C CNB028033000A CN02803300A CN100489797C CN 100489797 C CN100489797 C CN 100489797C CN B028033000 A CNB028033000 A CN B028033000A CN 02803300 A CN02803300 A CN 02803300A CN 100489797 C CN100489797 C CN 100489797C
Authority
CN
China
Prior art keywords
value
configuration data
register
data
integrated device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB028033000A
Other languages
English (en)
Other versions
CN1529853A (zh
Inventor
尼赫·D.·尼勾
安迪·L.·李
凯利·维恩斯特拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Publication of CN1529853A publication Critical patent/CN1529853A/zh
Application granted granted Critical
Publication of CN100489797C publication Critical patent/CN100489797C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17764Structural details of configuration resources for reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Abstract

在可编程逻辑设备上提供错误检测电路。可编程逻辑设备配置数据被载入一个循环冗余校验(CRC)模块,在该模块中可以进行校验和计算。在一个实施例中,校验和可能与一个期望值进行比较,该期望值是在数据被写入可编程逻辑设备之前或正被写入可编程逻辑设备的时候预先计算出来的校验和。在另一个实施例中,期望值可以被包括在校验和计算中。可以根据校验和与期望值之间的关系或是根据校验和的值产生一个输出,该输出指示是否检测到了错误。该输出可以被送到一个输出管脚,该输出管脚可以由用户逻辑访问。

Description

可编程逻辑设备上的错误检测
对相关申请的引用
本申请要求获得2001年10月11日提交的美国临时专利申请60/328668号的权利,这里通过引用将该临时申请全部包括进来。
发明背景
本发明涉及可编程逻辑设备。更具体地说,本发明涉及提供可编程逻辑设备上的错误检测。
可编程逻辑设备是一种通用集成电路,可以对这种电路进行编程以执行多种逻辑任务。众所周知的可编程逻辑设备的例子包括可编程逻辑器件(PLDs)和现场可编程门阵列(FPGAs)。在可编程逻辑设备上提供了存储器模块,可用来储存和输出数据,或是执行用户所需的各种功能。
数据可以被储存在存储器模块中作为可编程逻辑设备配置数据。当数据被写入存储器模块中或是在数据已经被储存在存储器模块中时,可编程逻辑设备配置数据的表示中可能会出现错误。这种错误包括硬错误和软错误。硬错误是由可编程逻辑设备中的缺陷或是由可编程逻辑设备受到的物理损伤引起的。软错误则是在可编程逻辑设备工作期间,如有一个阿尔法粒子或是宇宙射线击中了可编程逻辑设备的硅,造成电子-空穴对结构改变从而改变了存储单元的内容时出现的。由于可编程逻辑设备中含有大量的小容量存储节点,因此这些设备特别容易受到软错误的影响。一个软错误会直接影响可编程逻辑设备的逻辑功能,从而造成逻辑故障。目前,还没有可行的方法可用于检测可编程逻辑设备中的这类错误。
综上所述,我们迫切需要提供用于检测可编程逻辑设备中的错误的系统和方法。
发明内容
因此本发明的一个目标是要提供用于检测可编程逻辑设备中的错误的系统和方法。
根据本发明,提供了错误检测电路,它能检测可编程逻辑设备配置数据中的错误。在将数据写入可编程逻辑设备上的存储器之前或是当数据正在被写入可编程逻辑设备上的存储器时,可以通过一个控制表达式去除数据并取余数来算得一个校验和。该计算可以在软件中实现或是借助于错误检测电路实现。控制表达式可以是任意合适的数据表示法,包括多项式,比如32位循环冗余校验(CRC-32)、电器和电子工程师协会(IEEE)802标准。该校验和,也被称为期望值,可以被储存在可编程逻辑设备上任意合适的位置中(例如,在一个专用寄存器中),并且可以在错误检测过程中被取出。
用户可以初始化一个标志—比如寄存器中的一个专用比特—来表示错误检测的开始。在数据被写入存储器之后,该标志可以被设置,并通过一个有限状态机来激活错误检测,该有限状态机控制将可编程逻辑设备配置数据载入错误检测电路。当可编程逻辑设备配置数据被载入错误检测电路中时,错误检测电路开始使用与计算期望值时所用的控制表达式相同或等价的表达式、结合载入的数据计算校验和。当所有的可编程逻辑设备配置数据被载入以后,有限状态机控制将期望值载入错误检测电路。
在本发明的一个实施例中,计算出了可编程逻辑设备配置数据的校验和,并将该校验和与期望值进行比较。如果校验和与期望值满足某些预定的关系(比如说,校验和与期望值相等,校验和与期望值相差一个预定的偏差量或是倍数),那么就不会检测到错误。
在本发明的另一个实施例中,可编程逻辑设备配置数据首先被载入一个异或(XOR)树。在可编程逻辑设备配置数据被载入之后,接着将期望值载入XOR树。XOR树根据控制表达式对载入的数据与期望值计算一个校验和。如果校验和等于某个预定值(比如说,校验和是0,校验和是一个预定的偏差量),那么就不会检测到错误。错误检测电路产生的输出被送到可编程逻辑设备的一个输出管脚上,该管脚可由用户逻辑进行查看。
附图说明
结合附图考虑下面的详细说明时,本发明的上述及其他目标以及优点会更加明显,附图中相同的附图标记指代类似的部件,其中:
图1示出了根据本发明一个实施例的带有错误检测电路的可编程逻辑设备的结构框图;
图2示出了根据本发明另一个实施例的带有错误检测电路的可编程逻辑设备的结构框图;
图3示出了图1中根据本发明一个实施例的带有错误检测电路的可编程逻辑设备的更详细的原理框图;
图4示出了根据本发明一个实施例的向一个多输入XOR树中输入数据的示意图;
图5示出了根据本发明一个实施例的可以被实现在错误检测电路中的一个示例性单输入XOR树的示意图;
图6示出了根据本发明一个实施例的可以被实现在错误检测电路中的一个示例性多输入XOR树的示意图;
图7示出了根据本发明一个实施例的展示了可编程逻辑设备配置数据是如何存储的结构框图;
图8示出了根据本发明一个实施例的展示了可编程逻辑设备配置数据是如何存储的示意图;
图9-15示出了根据本发明一个实施例的向错误检测电路载入可编程逻辑配置数据中所涉及的示例性步骤的流程图;
图16示出了根据本发明一个实施例的在一个可编程逻辑设备上实现错误检测中所涉及的示例性步骤的流程图;以及
图17示出了根据本发明一个实施例的一个使用了电路的示例性系统的简化框图。
具体实施方式
本发明提供了用于检测可编程逻辑设备中错误的系统和方法。可编程逻辑设备包括例如可编程逻辑器件、现场可编程门阵列,或是任何其他合适的可编程装置。错误则包括软错误、硬错误,或是两者都有。错误可能归因于电压脉冲、系统故障、包括线上传输错误和硬件故障在内的其他外部影响,或是任何其他会影响可编程逻辑设备中数据表示的事件。
一个可编程逻辑设备保存有一些数据用来对可编程逻辑设备进行编程,以实现一种或多种应用。这种数据在这里被称为可编程逻辑设备配置数据。可编程逻辑设备配置数据被表示为一组二进制数(也就是,二进制“1”和“0”),并且可以被储存在任何合适的存储器中,比如一个配置随机存取存储器(CRAM)。另外,可编程逻辑设备配置数据也可以被储存在任何其他合适的易失性或非易失性存储器中,包括例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、Rambus DRAM(RDRAM)、同步DRAM(SDRAM)、双倍数据率同步DRAM(DDR SDRAM)、可擦除可编程只读存储器(EPROM)、FLASH存储器,以及磁性RAM(MRAM)。
储存在存储器中的可编程逻辑设备配置数据可能与一个或多个应用相关联。举例来说,一些可编程逻辑设备配置数据可能被用来规定可编程逻辑设备中的可编程部件应该被如何设置(也就是实现某具体应用)。可编程逻辑设备配置数据中的一些二进制数位可以被用来表示数据(例如,一个控制表达式,一个期望值)。可编程逻辑设备配置数据的其他二进制数位可以被用作可编程逻辑设备所实现的一种应用的实时操作的一部分(比如说,如果应用指定了存储器的读写)。可编程逻辑设备配置数据可能被改变,使得某些二进制数位被错误地表示出来(比如说,原来是二进制“1”的一个二进制数位现在成了二进制“0”,反之亦然)。本发明提供了一种方法来检测这种错误。
这里主要根据循环冗余校验(CRC)校验和分析以检测可编程逻辑设备中错误的方法来讨论本发明,使说明具体和清晰,但是也可以使用任何其他合适的方法来检测可编程逻辑设备中的错误。在CRC校验和分析中,计算出一个校验和。该校验和可能是,例如从涉及数据与一个控制表达式的除法操作中得出的一个余数。另外,还可以利用任何其他合适的操作或是操作组合计算出校验和。控制表达式可以是任何合适的数据表示,该数据表示是被用来为可编程逻辑设备配置数据计算期望值的。
期望值是从某种操作中得到的校验和,在这种操作中,待写入的数据或是正在被写入可编程逻辑设备的数据以及控制表达式都是操作对象。这个期望值可以是用户定义的或是任何其他合适的实体。期望值可以被储存在可编程逻辑设备的一个寄存器或是存储器中,或是储存在任何其他合适的位置。
在一个实施例中,根据可编程逻辑设备配置数据计算出一个校验和,并将其与期望值对比。如果校验和与期望值满足某种预定的关系(比如说,校验和与期望值相等,校验和与期望值相差一个预定的偏差量或是倍数),那么就不会检测到错误。
在本发明的另一个实施例中,可编程逻辑设备配置数据首先被载入一个异或(XOR)树。在可编程逻辑设备配置数据被载入之后,接着将期望值载入XOR树。XOR树根据控制表达式对载入的数据与期望值计算一个校验和。如果校验和等于某个预定值(比如说,校验和是0,校验和是一个预定的偏差量),那么就不会检测到错误。
错误检测电路产生的输出被送到可编程逻辑设备的一个输出管脚上,该管脚可由用户逻辑进行查看。如果检测到了错误,那么可编程逻辑设备的用户有机会重新载入全部的或部分可编程逻辑设备配置数据,或是响应于错误检测来执行任何其他合适的操作。
可以使用一个CRC模块来执行CRC校验和分析。CRC模块可以用任何合适的结构来实现。举例来说,在一个实施例中,CRC模块可能是驻留在可编程逻辑设备上的硬线电路。在另一个实施例中,CRC模块可能被编程到一个可编程逻辑设备中。在另一个实施例中,CRC模块可能被实现为可编程逻辑设备外部的一个单独装置,在这种情况下,可以利用例如输入/输出(I/O)管脚将CRC模块连接到可编程逻辑设备上。在另一个实施例中,CRC模块可能被实现在软件中,该软件由一个微处理器(比如说在一台计算机上)执行。任何这种实施方式都可以依照本发明进行使用。为了简洁而又不产生局限性,这里主要按照布线在可编程逻辑设备上的CRC模块来说明本发明。
实现可编程逻辑设备上的错误检测可能还需要额外的信号、寄存器以及控制逻辑,下面将结合附图1-3对此进行详细说明。例如,某个特定寄存器中的一个数据比特可能被标记来指示错误检测的开始。可能还需要额外的信号来设置错误检测电路,包括例如用来清除寄存器的信号、预置计数器的信号、使能及禁用各种控制信号的信号。可能还需要额外的寄存器,包括例如一个地址寄存器用来索引可编程逻辑设备配置数据中的一个帧,以及一个数据寄存器用来在数据被载入错误检测电路之前临时储存索引帧。
在一种合适的方法中,可以使用一个有限状态机(FSM)来处理CRC模块与可编程逻辑设备之间的数据通信。更具体地说,FSM控制将CRAM中的数据载入并传送给CRC模块。另外,FSM也可以控制将CRAM中的数据载入并传送给一个临时数据寄存器,接着再从数据寄存器送入CRC模块。CRC模块中包括一个子模块,用来对可编程逻辑设备数据计算校验和,在某些例子中还要计算期望值。该子模块可以是用来执行校验和分析的任意合适的电路,它使用例如一个标准多项式(比如说,CRC-32 IEEE 802标准)、数据和,或是任何其他合适的数据表示来进行校验和分析。
计算得出的校验和接着就被送到比较电路,在比较电路中将校验和与期望值、或是任何合适的预定值进行比较。比较电路可以用一个比较器、一个OR门、一个XOR门或是任何合适的逻辑门或逻辑门的组合来实现。
图1示出了一个示例性可编程逻辑设备100的结构框图,该设备具有一个期望值102、可编程逻辑设备配置数据104、一个有限状态机(FSM)108以及一个CRC模块116。期望值102可以被储存在可编程逻辑设备100上的一个寄存器或是存储器中。可编程逻辑设备配置数据104可以被储存在可编程逻辑设备100上任何合适的存储器中,例如配置随机存取存储器(CRAM)。可编程逻辑设备配置数据104通过一条数据通路112向CRC模块116发送数据。通路112可以是用于串行、并行或是以两者组合方式传输数据的任何合适的通路。
FSM 108可以被用来控制CRC模块116与可编程逻辑设备100之间的数据通信。FSM 108发现错误检测启动之后,会生成并通过通路106发送一个时钟信号以及其他信号给可编程逻辑设备配置数据104,以便控制通过通路112向CRC模块116载入数据104。FSM108可以通过通路114来控制CRC模块116中的错误检测分析。通路106、112和114可以是用于发送数据和各种信号如时钟、预置信号或标志的任何合适的通路。
数据通路106、112和114可能是直接连接、可能包括中间电路,或是两者都有。这种中间电路可能包括例如寄存器、流水线电路、多路复用器或是任何其他合适的电路,这些电路允许各种信号在适当的时刻被声明/取消声明、使能/禁用、或同时进行两种操作,以便协调数据的载入与校验和的计算。
图2示出了一个示例性可编程逻辑设备200的结构框图,该设备在可编程逻辑设备配置数据104、FSM 108以及CRC模块116之间的通路中带有中间电路202。应该明白,这里所示出的用来辅助组件之间通信的通路都可以含有任何合适的中间电路。
参照图1,CRC模块116包括校验和计算电路118和比较电路122。校验和计算电路118通过通路112接收可编程逻辑设备配置数据104。校验和计算电路118对可编程逻辑设备配置数据计算一个校验和,该校验和可以被使用在CRC校验和分析中。可以使用任何合适的方法来对可编程逻辑设备配置数据104计算校验和。举例来说,可以用一个控制表达式来计算校验和,该控制表达式可以用以下CRC-32 IEEE 802标准这样的多项式来表示:
G(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1  (1)
在一个实施例中,可以利用控制表达式(1)对数据(比如说,可编程逻辑设备配置数据104)取模(mod)来算得一个校验和,该校验和是用数据除以控制表达式后得到的余数。在另一个实施例中,在对数据执行取模操作前,先对数据进行乘法或移位操作。应该明白,任何其他合适的控制表达式都可以依照本发明被用来生成校验和。
当可编程逻辑设备数据104被载入CRC模块116后,期望值102也被载入CRC模块116。可以从任何合适的来源取得期望值102。在一个实施例中,可以在向可编程逻辑设备100中写入数据的时候用软件计算出期望值。在另一个实施例中,可以在向可编程逻辑设备100中写入数据的时候用CRC模块116计算出期望值。举例来说,在数据被写入可编程逻辑设备100的时候,该数据同时也被发送给CRC模块116,在CRC模块116中计算出期望值。最好用和在CRC模块116中计算校验和所用的相同的校验和计算方法计算出期望值。
在本发明的一个实施例中,可编程逻辑设备配置数据104可以被送入校验和计算电路118,以产生一个校验和。计算得到的这个校验和经数据通路120被送入比较电路122。期望值102也被送到比较电路122。在比较电路122中,使用任意合适的逻辑门或是逻辑门组合(比如说,一个比较器,一个XOR门,一个减法器)来比较计算出的校验和与期望值102。如果校验和与期望值102满足某种预定的关系(比如说,校验和与期望值102相等,校验和与期望值相差一个预定的偏差量或是倍数),那么比较电路122就会产生一个表示没有检测到错误的输出(比如说,一个二进制“0”)。但是,如果校验和与期望值102不满足这种预定的关系(比如说,校验和与期望值102不相等,校验和与期望值102相差一个不同的偏差量),那么比较电路122就会产生一个不同的输出(比如说,一个二进制“1”)来表示已经检测到了一个错误。比较电路122的输出通过通路124被发送到CRC错误管脚126。CRC错误管脚126可以被用户访问,以查看可编程逻辑设备配置数据104中是否存在错误。
在本发明的另一个实施例中,可编程逻辑设备配置数据104和期望值102都被发送给校验和计算电路118来计算一个校验和。举例来说,可编程逻辑设备配置数据被乘以或是移位若干个比特,比特数等于控制表达式的次数(比如说,对于CRC-32 IEEE 802标准来说,次数就是最高阶单项式的指数32)。期望值102(用同样的计算方法计算得到)可以被附加在可编程逻辑设备配置数据104的最后(也就是说,代表了期望值102的比特可以被附加在代表可编程逻辑设备配置数据104的比特之后)并通过校验和计算电路118发送。
计算出来的校验和接着通过数据通路120被送到比较电路122。在比较电路122中,可以使用例如一个逻辑门或是逻辑门组合(比如说,一个比较器,一个OR门,一个加法器,等等)来对计算出的校验和进行逻辑操作。如果校验和等于某个预定值(比如说,校验和是0,校验和是一个预定的偏差量),那么比较电路122就会产生一个表示没有检测到错误的输出(比如说,一个二进制“0”)。但是,如果校验和是预定值以外的其他值(比如说,校验和不等于0,校验和不同于预定的偏差量),那么比较电路122就会产生一个不同的输出(比如说,一个二进制“1”)来表示检测到了一个错误。比较电路122可以产生任意合适的输出来表示是否检测到了错误。这个输出会通过通路124被送给CRC错误引脚126。
图3示出了一个示例性可编程逻辑设备300的结构框图。CRC模块320可能包括多路复用器322和332、一个XOR树324、寄存器326、328、330和334,以及一个或多个逻辑门,如OR门336。可编程逻辑设备配置数据104和期望值102可以被输入到多路复用器322中。多路复用器根据一个选择信号的值选择一个输入送到它的输出端,该选择信号是由FSM 108监控的。举例来说,FSM 108可以设置选择信号为第一二进制比特(比如说,一个二进制“0”),该信号指示多路复用器322选择第一个输入端发送给输出端,该输入端通过通路112接收可编程逻辑设备配置数据104。当可编程逻辑设备配置数据104被发送到输出端之后,FSM 108可以设置选择信号为第二二进制比特(比如说,一个二进制“1”),该信号指示多路复用器322选择第二个输入端发送给输出端,该输入端通过通路110接收期望值102。多路复用器322的输出被送往XOR树324,在那里计算出校验和。
在一个实施例中,XOR树324可以利用一个控制表达式如表达式(1)中的CRC-32 IEEE 802标准来计算校验和。尽管可以使用任何合适的控制表达式来计算期望值102,但最好用(与计算校验和所用的)一样的或等价的控制表达式。XOR树324接收到可编程逻辑设备配置数据104和随后的期望值102后,就会处理载入的数据。XOR树324的输出端连接到寄存器326上,寄存器中的数据可以在下一个周期中被发回XOR树324进行进一步处理。寄存器326可以是锁存器、触发器(比如说,D触发器,J-K触发器),或是任何由时钟机制控制的合适的存储装置。XOR树324和寄存器326可以构成校验和计算电路118的一部分。
数据可以通过多路复用器322发送,并被串行、并行或以两者相结合的方式载入XOR树324。在一个实施例中,每个时钟周期内都会向XOR树324载入一个数据比特并进行处理。在另一个实施例中,每个时钟周期内会向XOR树324载入多个(比如说,2、8、16)数据比特并进行处理。
图4示出了作为输入402而被送入XOR树324的数据序列。可编程逻辑设备配置数据104可以被划分为多个帧(比如说,M帧)406。数据104一次被载入一帧(比如说,帧1、帧2、...、帧M)。在各个帧406中,一次被载入多个比特(比如说,N比特)404。数据可以从最重要的比特到最次要的比特依次被载入。在每个时钟周期里,各个比特404通过不同的数据通路(比如说,I1、I2、...、IN)402被送入XOR树324。在数据104被载入之后,以相似的方式将期望值载入XOR树324。如果总比特数(比如说,配置数据104和期望值102的总比特数)不是输入(N)402的数量的倍数,那么就要向数据序列添加额外的比特(比如说,二进制的“1”或“0”)。这些额外的比特可以被添加到数据序列的头部、数据序列的尾部,或是任何合适的位置。
XOR树324和寄存器326可以用下列矩阵方程实现
Q=A*q+B*IN  (2)
一个矩阵中包含了按一行或多行及一列或多列形式排列的数据,其表示方法如下:
X RxC = ( 1,1 ) ( 1,2 ) · · · ( 1 , C ) ( 2,1 ) · · · · · · · · · · · · · · · ( R , 1 ) · · ( R , C ) - - - ( 3 )
其中R表示行数,C表示列数。
“A”是一个d×d的矩阵,它代表了寄存器326和控制表达式,其中d是控制表达式最高次单项式的阶数。“q”是一个d×1的矩阵,它代表了当前储存在寄存器326中的来自于前一个时钟周期的内容。“B”是一个d×1的矩阵,它代表了控制表达式中各个单项式的系数。“IN”是一个代表输入比特402的常数。“Q”是一个d×1的矩阵,它代表XOR树324在下一个周期中的输出(比如说,用上一个时钟周期储存在寄存器326中的内容去处理输入比特402而得到的结果)。
根据矩阵方程(2),每个时钟周期内用于处理N个输入比特的方程如下:
1input:Q1=Aq+BI1                        (4)
2inputs:Q2=A2q+ABI1+BI2                 (5)
3inputs:Q3=A3q+A2BI1+ABI2+BI3           (6)
.
.
.
Ninputs:QN=ANq+AN-1BI1+...+ABIN-1+BIN   (7)
图5示出了一个电路500的示例性实施例,该电路包括XOR树324和寄存器326(比如说,校验和计算电路118)。电路500每时钟周期处理一个输入比特(比如说,I1)。作为示例,控制表达式由下式表示:
G(X)=X5+X3+1                             (8)
因为表达式(8)中G(X)的阶数是5,所以有5个寄存器326被用来储存XOR树324的输出。电路500的输出由方程4表示,该方程中的矩阵如下:
A = 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 - - - ( 9 )
q = q 1 q 2 q 3 q 4 q 5 - - - ( 10 )
B = 1 0 0 1 0 - - - ( 11 )
“A”是一个5×5的矩阵,它的前4列代表寄存器326,最后一列代表控制表达式(8)中单项式的系数。“q”是一个5×1的矩阵,它代表了寄存器326中的内容(比如说,q1、q2、q3、q4、q5分别代表寄存器510、520、530、540和550的内容)。“B”是一个5×1的矩阵,它代表了控制表达式(8)中单项式的系数。将表达式(9)、(10)、(11)代入方程(3),产生如下输出:
Q = q 5 + I 1 q 1 q 2 q 3 + q 5 + I 1 q 4 - - - ( 12 )
Q1是一个5×1的矩阵,它代表了寄存器326在下一个周期中的内容,即:q5+I1,q1,q2,q3+q5+I1和q4。Q1的输出是二进制的(比如说,“0”或是“1”)并且可以用XOR门实现。
电路500包括XOR门502和504以及寄存器510、520、530、540和550,这些寄存器可以是寄存器326的一部分,它们受同一个时钟的控制。寄存器510的输入是XOR门502的输出,而XOR门502的输入是I1(来自多路复用器322的输出)和寄存器550当前的内容。在下一个周期中,寄存器510的内容是Q1(1,1)=q5+I1。寄存器520的输入是寄存器510当前的内容,因此在下一个周期中,寄存器520的内容是Q1(2,1)=q1。寄存器530的输入是寄存器520当前的内容,因此在下一个周期中,寄存器530的内容是Q1(3,1)=q2。寄存器540的输入是XOR门504的输出,而XOR门504的输入则是I1以及寄存器530和550当前的内容。XOR门504可以用一个3输入XOR门或是两个2输入XOR门来实现,其中的两个输入通过一个第一XOR门发送,而第一XOR门的输出以及第三个输入通过一个第二XOR门发送。在下一个周期中,寄存器540的内容是Q1(4,1)=q3+q5+I1。寄存器550的输入是寄存器540的当前内容,因此在下一个周期中,寄存器550的内容是Q1(5,1)=q4。尽管寄存器510、520、530、540和550的内容未示出,但它们也被作为输入发送给信号特征寄存器328。
图6示出了电路600的另一个示例性实施例,其中包括XOR树324和寄存器326。电路600使用相同的控制表达式(8),它在每个周期中处理三个输入比特(比如说,I1、I2、I3)。将表达式(9)、(10)、(11)代入方程(5)得到下列输出:
Q 3 = q 3 + q 5 + I 1 + I 3 q 4 + I 2 q 5 + I 1 q 1 + q 3 + q 5 + I 1 + I 3 q 2 + q 4 + I 2 - - - ( 13 )
电路600包括XOR门602、604、606、608和610,以及寄存器620、630、640、650和660,这些寄存器可以是寄存器326的一部分,受同一个时钟的控制。寄存器620的输入是XOR门602的输出,而XOR门602的输入是I1和I3(都来自多路复用器322的输出)以及寄存器640和660的当前内容。在下一个周期中,寄存器620的内容是Q3(1,1)=q3+q5+I1+I3。寄存器630的输入是XOR门604的输出,而XOR门604的输入是I2(来自多路复用器322的输出)以及寄存器650的当前内容。在下一个周期中,寄存器630的内容是Q3(2,1)=q4+I2。寄存器640的输入是XOR门606的输出,而XOR门606的输入是I1以及寄存器660的当前内容。在下一个周期中,寄存器640的内容是Q3(3,1)=q5+I1。寄存器650的输入是XOR门608的输出,而XOR门608的输入是I1、I3以及寄存器620、640和660的当前内容。在下一个周期中,寄存器650的内容是Q3(4,1)=q1+q3+q5+I1+I3。寄存器660的输入是XOR门610的输出,而XOR门610的输入是I2以及寄存器630和650的当前内容。在下一个周期中,寄存器660的内容是Q3(5,1)=q2+q4+I2。XOR门602、608和610可以用任何合适的XOR门或XOR门的组合来实现。尽管寄存器620、630、640、650和660的内容未示出,但它们也被作为输入发送给信号特征寄存器328。
以上是在根据控制表达式(8)来实现校验和计算的情况下对电路500和600进行说明的,这两个电路在每个时钟周期分别取入1比特和3比特作为输入,这里仅仅是为了举例的目的来说明这两个电路的。然而,XOR树324可以用任何合适的控制表达式(比如说,CRC-32 IEEE 802标准)来实现,每个时钟周期也可以有任意合适数量的输入比特。
当数据被作为输入402送往XOR树324时,寄存器326的内容就被更新。当可编程逻辑设备配置数据104和期望值102被处理以后,寄存器326的内容就保存了所得到的校验和。在一个实施例中,如果不存在错误,得到的校验和就是0,如以下证明所示。
令变量G(X)、M(X)、Q(X)、EV以及μ(X)代表下列各式:
G(X)=CRC-32 IEEE 802标准;
M(X)=可编程逻辑设备配置数据104;
Q(X)=商=M(X)/G(X;)
EV=期望值=M(X)(mod)G(X);
μV=作为输入402发送的数据。          (14)
在对M(X)执行校验和计算以计算期望值的时候,得出下式:
X32M(X)≡EV(mod)G(X)                 (15)
符号“≡”表示恒等,并且涉及与EV(mod)G(X)等价的一类余项(其中EV是该类中最小的成员)。M(X)如下定义:
X32M(X)≡Q(X)G(X)+EV                  (16)
XOR树324的输入402可以被如下表示:
μ(X)=X32M(X)+EV                      (17)
M(X)被乘以或是移位一个偏移量X32(也就是控制表达式G(X)的阶数),同时将期望值添加到M(X)中。对方程(17)进行代数运算,我们得到以下结论:
1.两边同时乘以X32
X32μ(X)=X32[X32M(X)+EV]
2.用方程(16)替代X32M(X)
X32μ(X)=X32[Q(X)G(X)+EV+EV]
3.以恒等形式写出
X32μ(X)≡X32[EV+EV]≡2EV≡0          (18)
X32Q(X)G(X)项是((mod)G(X))的倍数,因此在恒等式中不存在。取2EV的XOR在二进制中恒等于零(也就是说,2输入XOR门在两个输入为相等值的情况下输出为零)。
以下是一个简化的例子,它演示了XOR树324和寄存器326的一个实施例是如何工作的。假定要写入可编程逻辑设备的数据中包含数据比特序列b110110001,该序列可以被表示为以下的多项式:
M(X)=X8+X7+X5+X4+1        (19)
再假定控制表达式为数据比特序列b101001,它代表了控制表达式(8)。在将数据M(X)写入可编程逻辑设备之前,要计算出期望值。期望值(EV)是用数据M(X)除以控制表达式G(X)所得到的余数,计算中使用了与在XOR树324中计算校验和所用的相同方法。
EV=X5M(X)(mod)G(X)=X3+X2  (20)
(也就是,b10111)。因为XOR树324按控制表达式的阶数对可编程逻辑设备配置数据104进行相乘或移位,并将期望值102附到可编程逻辑配置数据104以计算校验和,因此数据M(X)同样被乘以或移位该阶数,以便计算出期望值102。
当数据被作为可编程逻辑设备配置数据104写入以后,可以置起一个标志来表示错误检测的开始。以下示出了处理没被改变过的可编程逻辑设备配置数据104的一个例子(也就是说,没有错误)。
P(X)=M(X)                   (21)
被写入的该数据被送入XOR树324,在后面将结合图7-15对此进行详细说明。当写入的数据被载XOR树324以后,期望值也如下被载入XOR树324:
X5P(X)+EV=X13+X12+X10+X9+X5+X3+X2
         =b11011000101100   (22)
用表达式(22)除以控制表达式G(X)所得的余数是0,这正是我们所期望的,因为没有错误发生。
(X5P(X)+EV)(mod)G(X)=b0    (23)
如果XOR树324每时钟周期接收一个输入(比如说,I1),那么XOR树324将被实现为图5中所示的形式(对于控制表达式(8))。表1示出了在电路500计算校验和的时候,寄存器510、520、530、540和550的内容。
 
I<sub>1</sub> 寄存器510    寄存器520    寄存器530    寄存器540    寄存器550   
0 0 0 0 0
1 1 0 0 1 0
1 1 1 0 1 1
0 1 1 1 1 1
1 0 1 1 1 1
1 0 0 1 1 1
0 1 0 0 0 1
0 1 1 0 1 0
0 0 1 1 0 1
1 0 0 1 1 0
0 0 0 0 1 1
1 0 0 0 0 1
1 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
表1
电路500的输出为0。
如果XOR树324每时钟周期接收3个输入(比如说,I1、I2、I3),那么XOR树324将被实现为图6中所示的形式(对于控制表达式(8))。因为发给XOR树324的总比特数不是每时钟周期发送给XOR树324的输入比特数(比如说,3),所以要在数据流的头部填充额外的比特(比如说,二进制“0”)。表2示出了在电路600计算校验和的时候,寄存器620、630、640、650和660的内容。
 
I<sub>1</sub> I<sub>2</sub> I<sub>3</sub> 寄存器620    寄存器630    寄存器640    寄存器650    寄存器660   
0 0 0 0 0
0 1 1 1 1 0 1 1
0 1 1 0 0 1 1 1
0 0 0 0 1 1 0 1
1 0 1 0 0 0 0 1
1 0 0 0 0 0 0 0
表2
电路600的输出为0。
以下是对已经被改变过的可编程逻辑设备配置数据104(也就是说,有错误的)进行处理的示例。
P(X)=X8+X7+X5+1                     (24)
P(X)中有一个比特被取反了。写入的数据以及期望值都如下被载入XOR树324中:
X5P(X)+EV=X13+X12+X10+X5+X3+X2
         =b11010000101100            (25)
用多项式(25)除以控制表达式(8)所得的余数不是0,表示有错误发生。
(X5P(X)+EV)%G(X)=b11101             (26)
表3示出了在电路600计算校验和的时候,寄存器620、630、640、650和660的内容。
 
I<sub>1</sub> I<sub>2</sub> I<sub>3</sub> 寄存器620 寄存器630 寄存器640 寄存器650 寄存器660
0 0 0 0 0
0 1 1 1 1 0 1 1
0 1 0 1 0 1 0 1
0 0 0 0 0 1 1 0
1 0 1 1 1 1 1 1
1 0 0 1 1 0 0 0
表3
寄存器620、630、640、650和660的输出中有一些不为0,表示有错误。
参照图3,在每个时钟周期后,寄存器326的内容被送入信号特征寄存器328。当可编程逻辑设备配置数据104以及期望值102在XOR树324中经过处理以后,信号特征寄存器就保存了算得的校验和。因为信号特征寄存器328的内容在每个时钟周期内都会被更新,所以FSM 108会控制更新寄存器330在信号特征寄存器328的内容有效的情况下(也就是说,当算得的校验和被储存到信号特征寄存器328中之后)保存其中的内容。
用户可以查看计算得到的校验和或是期望值102。通过监测计算得到的校验和,用户能够确定任何检测到的错误的特性。举例来说,用户可以确定错误是否是随机的(比如说,多次计算产生不同的校验和)或者相同的错误是否会重复出现(比如说,多次计算产生相同的校验和)。
用户可以利用任何合适的方法来查看计算得到的校验和或是期望值102。在一个实施例中,每个多路复用器332从更新寄存器330中取一个比特再从期望值102中取一个比特作为输入。根据用户想要查看哪个值,FSM 108能控制多路复用器332从更新寄存器330或是期望值102中选取数据。各个多路复用器332的输出被送入移位寄存器334。移位寄存器334可以被可编程逻辑设备300访问,而且允许它的内容被用户逻辑读取。
在从移位寄存器334中读取数据的时候,可能会发生错误而影响算得的校验和。在一种更为精确的检测错误的方法中,一旦算得的校验和储存到了信号特征寄存器328中,就要把信号特征寄存器328中的每个比特发送到一个OR门336的单独输入端。OR门336可能包括一个带有与信号特征寄存器比特数相等数量输入端的门,或是包括一组级联的门,其中每个门带有较少数量的输入端,或是任何其他用于比较信号特征寄存器比特的合适方法。如果所有的信号特征寄存器比特都是二进制“0”,那么OR门336的输出就是二进制“0”,表示没有检测到错误。如果一个或多个信号特征寄存器比特是二进制“1”,那么OR门336的输出就是二进制“1”,表示检测到了错误。OR门336的输出被发送到CRC错误引脚338,该引脚可以由用户逻辑进行监测。CRC错误引脚338能保存一个数据比特,该数据比特的一个值表示没有检测到错误,而另一个值则表示检测到了错误。另外,CRC错误引脚338也可以是一个指示器,例如,一个发光二极管(LED),它能在检测到错误的时候发出信号(比如说,点亮LED)。任何其他合适的方法都可以被用来指示错误。
FSM 108发送信号给CRC模块320中的各种寄存器,以协助对信号进行采样。举例来说,当XOR树324完成处理并且信号特征寄存器328中保存了校验和之后,FSM 108向更新寄存器330发送一个时钟使能信号。该时钟使能信号使得更新寄存器330不会在信号特征寄存器328从寄存器326读取数据的同时读取信号特征寄存器328的内容。只有当用户请求查看校验和或是期望值102的时候,数据才会通过多路复用器332被发送给移位寄存器334。
图7示出了符合本发明的可编程逻辑设备中的一个存储器内核700。存储器内核700包括一个地址寄存器706、一个控制逻辑712、可编程逻辑设备配置数据714,以及一个数据寄存器722。数据714可以被放置在一个阵列中,该阵列包括数据单元716的行与列,其中每个数据单元716中含有一个二进制数。对于被放置在阵列中的数据714来说,一条数据线718可以与各行单元716相连,而一条地址线720则可以与各列单元716相连。
可编程逻辑设备配置数据714可以被组织成任意合适的结构,而且可以用任何合适的结构将它的数据单元716与数据线和地址线相连。为了表达的简单清楚,这里主要把数据714描述为数据单元716的一个阵列,数据线718穿过数据单元716的各行,而地址线720穿过数据单元716的各列,从而保证了特殊性与明确性。
地址寄存器706可以被用来选取一条地址线720,用于载入相应的一列数据单元716。每一列单元716可能代表一个帧,并且与地址寄存器706中一个不同的地址比特相关联。地址寄存器706可能含有与帧数相等数量的比特,其中地址寄存器706的每个比特对应于一条地址线720。
地址寄存器706有两个输入信号:一个地址寄存器输入(AINPUT)信号702和一个地址寄存器时钟(ACLOCK)信号704。输入信号702可以由地址寄存器时钟信号704用一个第一脉冲进行声明(比如说,设置成二进制“1”),从而使得地址寄存器706中的一个第一比特位置—它对应于第一帧—被设置为二进制“1”。当地址寄存器时钟信号704的第一个脉冲过去后,输入信号702可以被取消声明(比如说,设置成二进制“0”)。随着地址寄存器时钟信号704接下来的各个脉冲,地址寄存器706中的二进制“1”被移位一个比特,以便指向下一个帧。地址寄存器706的输出通过数据通路708被发送给控制逻辑712。控制逻辑712由一个地址使能(AENABLE)信号710控制,该使能信号允许在适当的时刻选取一条地址线720。
当一个帧被选取后,储存在被选取的数据单元716中的二进制数被写到相应的数据线718上,当数据寄存器时钟(DCLOCK)信号724发出脉冲时,数据线上的数据就被载入数据寄存器722中。数据寄存器722可以是一个专用寄存器,仅在载入帧的时候才被用到,或者也可以是一个共享寄存器,在不同时刻用作不同的功能(比如说,数据寄存器722可以是在把可编程逻辑设备配置数据714写入可编程逻辑设备时所用的同一个寄存器)。数据寄存器722中的内容相继通过数据通路726被载入错误检测电路。
图8示出了符合本发明一个实施例的可编程逻辑设备中的一个更详细的存储器内核800。存储器内核800包括一个地址寄存器806,该寄存器带有下列输入端:地址寄存器输入(AINPUT)信号802以及地址寄存器时钟(ACLOCK)信号804。地址寄存器806中的每个比特位沿通路808向一个输入AND门812发送它的比特值,输入AND门812可以是控制逻辑712的一部分。各个AND门812的第二个输入是地址使能信号810。当两个输入都是二进制“1”时,输出就是二进制“1”。各个AND门812的输出沿一条相应的地址线826送出。因为在每个周期里,地址寄存器806中至多只有一个比特值被置为二进制“1”,因此在任何一个时钟周期中最多只有一条地址线被激活。连接到各条地址线826上的是一帧数据单元814,数据单元814可以是,例如,配置随机存取存储器(CRAM)单元,或是任何其他合适的存储器单元。连接到各条数据线824上的是一行数据单元814。
每个CRAM单元814包括,例如,两个晶体管816和822,以及两个反向器818和820。晶体管816和822可以是任何合适的晶体管,包括双极结型晶体管(BJTs)、场效应晶体管(FETS),以及金属氧化物半导体场效应晶体管(MOSFETS)。举例来说,晶体管816可以是一个MOSFET,它的源极连接到一条相应的数据线824,门极连接到一条相应的地址线826,漏极则连接到反向器818和820。反向器818和820的输入分别被连接到其他反向器820和818的输出。举例来说,晶体管822可以是一个MOSEET,它的源极连接到反向器818和820,门极连接到一个清除(CLR)信号,漏极则连接到一个共用接地点。清除信号可以被用来向单元814写入数据比特,但通常不用来读取数据比特。
各个数据单元814中的二进制数被表示在节点A上。当一条数据线824被置为二进制“1”(也就是说,被预先充电到一个预定的电压)并且一条地址线826也被置为二进制“1”时,相应的CRAM单元814中的值就被读取出来。如果节点A表示一个二进制“1”,那么那条数据线824就被放电(也就是说,被改变为二进制“0”)。如果节点A表示一个二进制“0”,那么那条数据线824就保持预充电(也就是说,置为二进制“1”)。当数据寄存器时钟(DCLOCK)信号830发出脉冲时,读到各条数据线824上的值被发送给数据寄存器828。一个反向器可以被连接到各条数据线824上,以便在数据被送往数据寄存器828之前将数据的二进制表示反向。可以通过数据通路832从数据寄存器828中读取数据。数据通路832可以是任何用于传输数据的合适路径,包括串行总线、并行总线,或是两者的组合形式。数据寄存器828的全部内容或是数据的一个子集(比如说,1数据比特,8数据比特,16数据比特,32数据比特)可以在一个给定的周期中被发送到通路832。
图9-15示出了向错误检测电路如CRC模块320载入数据的示例性步骤的流程图。每个帧可以包含一列数据比特、一行数据比特、一块数据比特,或是任何其他合适的结构形式的数据比特,但是这里为了清楚和特定起见,主要按一列数据比特的情况加以说明。地址寄存器中的一个地址比特可以与每个帧相关联,使得当一个特定的地址比特被置起时(比如说,被置为二进制“1”),相应的帧被选取。储存在存储器—例如CRAM中的可编程逻辑设备配置数据104可以一次被读取一帧,并被保存在一个临时数据寄存器中,该临时寄存器中的数据接着会被载入CRC模块320。
流程900从处于闲置状态的步骤910开始。然后,在步骤920处,流程900判定错误检测是否已经开始,这可以由一个标志来表示。当一个需要访问CRAM中的数据的应用程序(比如说,一个错误检测应用程序或是任何其他合适的应用程序)要运行时,该标志可以被置起。可以在系统处于用户模式当中时,通过将寄存器中的一个专用比特声明为二进制“1”来表示这种情况。如果该标志没有被置起,那么流程900仍停留在步骤920。如果该标志被置起了,那么流程900就会前进到步骤1000,在步骤1000中,流程900准备将第一帧载入数据寄存器中。
图10示出了步骤1000的详细流程图。在步骤1002中,CRC模块320被预先设置。举例来说,计数器被复位为0,并且寄存器(比如说,寄存器326,信号特征寄存器328,更新寄存器330以及移位寄存器334)被清空。在步骤1002中,一个地址寄存器时钟被使能(比如说,ACLOCK信号704发出脉冲),一个地址寄存器输入被声明(比如说,AINPUT信号702被置为二进制“1”),并且一个预充电计数器被使能(比如说,PCOUNTER被激活)。预充电计数器指示了数据线718在何时被充分预充电到了某个预定的电压(比如说,一个源电压)。
接着,在步骤1004中,所有的数据线618都被预充电。同样在步骤1004,地址寄存器时钟信号704被禁用,并且地址寄存器输入信号702被取消声明。在步骤1006中,流程1000判定预充电计数器是否已经被置为二进制“1”。当数据线718已经被充分预充电的时候(比如说,在16个周期之后),预充电计数器就被置为二进制“1”。如果预充电计数器保持二进制“0”,那么流程1000就返回步骤1004。
如果预充电计数器被置为二进制“1”,那么流程1000就前进到步骤1008,在步骤1008中,数据线预充电被关闭,预充电计数器被禁用,并且一个读取计数器被使能(比如说,RCOUNTER被激活)。读取计数器指示了对应于一个被选取地址的数据何时被完全读取到相应的数据线718上(比如说,在16个周期之后)。
在步骤1010中,对应于第一帧(比如说,对应于地址线1的第一列数据单元716)的地址线被使能(比如说,AENABLE信号710被置为二进制“1”),并且相应的单元内容被读取到相应的数据线718上。在步骤1012中,流程1000判定读取计数器是否已经被置为二进制“1”。如果读取计数器仍然是二进制“0”,那么流程1000就返回步骤1010,在步骤1010中,地址使能信号710保持使能并且数据继续被读取到数据线718上。举例来说,对于图8中所示的CRAM数据单元来说,如果一个二进制“0”被表示在一个CRAM数据单元814中(比如说,在节点A上),那么相应的数据线824就会保持预充电状态。如果一个二进制“1”被表示在一个CRAM数据单元814中,那么相应的数据线824就会被放电。为了确保数据线824被充分放电到0伏特,数据在多个周期内被读取到数据线824上(比如说,在16个周期内)。如果读取计数器被置为二进制“1”,那么流程1000就前进到步骤1014,在步骤1014中,读取计数器被禁用,并且数据寄存器时钟被使能(比如说,DCLOCK信号724被激活)。
重新参照图9,当第一帧已经被载入数据寄存器722后,流程900前进到步骤1100,在步骤1100中,除了最后一帧以外的所有帧都被载入数据寄存器722。
图11-12是一组流程图,它们更详细地示出了在步骤1100中向CRC模块320载入帧的过程。在步骤1102中,来自第一帧的数据当前正处在数据线718上,它被载入数据寄存器722。同样在步骤1102中,地址使能信号710被禁用,CRC模块320被使能,并且一个数据寄存器计数器也被使能(比如说,DCOUNTER被激活)。数据寄存器计数器指示了数据寄存器722中预定数量的数据比特何时已经被载入CRC模块320中(比如说,在何时除了剩余比特之外的所有比特,比如说34比特,已经都被载入了)。这个预定的数量可以是任何合适的数量,并配合各种被使能和声明的信号,以便向数据寄存器722载入各个帧,随后再载入CRC模块320。
在步骤1104中,来自第一帧的数据当前被储存在数据寄存器722中,它被载入CRC模块320中(比如说,被发送到多路复用器322,接着被送到XOR树324以开始计算校验和)。预定数量的比特(比如说,8比特,16比特,或是任何其他合适数量的比特)在每个时钟周期中被从数据寄存器722发送到CRC模块320。接着,在步骤1106中,流程1000判定数据寄存器计数器是否被置为二进制“1”。如果数据寄存器计数器为二进制“0”,那么流程1100就返回到步骤1104,在步骤1104中,下一组预定数量的比特被载入到CRC模块320。
如果数据寄存器计数器被置为二进制“1”,那么流程1100就前进到步骤1108,在步骤1108中,数据寄存器计数器被禁用,并且地址寄存器时钟信号704被使能,预充电计数器也被使能(比如说,被复位到二进制“0”并激活),以准备载入下一个帧。地址寄存器时钟信号704将指向第一条地址线720的二进制“1”移位,来指向下一条地址线720。同样在步骤1108中,来自数据寄存器722的下一组预定数量的比特被载入CRC模块320。
在步骤1110中,所有的数据线718都被预充电,地址寄存器时钟信号704被禁用,并且来自数据寄存器722的下一组预定数量的比特被载入CRC模块320。在步骤1112中,流程1100判定预充电计数器是否被置为二进制“1”。如果预充电计数器为二进制“0”,那么流程1100就返回到步骤1110。由于数据是在预定数量的周期内(比如说,16个周期)被载入CRC电路320的,因此这下一组预定数量的比特是在预定数量的周期范围内的任意一个周期中或是在某个范围内被载入CRC电路320的。这些比特可以在一个周期或是多个周期中被并行读取,在预定数量的周期内被串行读取,或是以串并行相结合的方式读取。
如果预充电计数器被置为二进制“1”,那么流程1100就前进到步骤1114,在步骤1114中,数据线预充电被关闭,预充电计数器被禁用,并且读取计数器被使能(比如说,RCOUNTER被复位到二进制“0”并激活)。在步骤1116中,对应于下一帧的地址线被使能(比如说,AENABLE信号710被置为二进制“1”),并且下一帧中的单元716的内容被读取到相应的数据线718上。同样在步骤1116中,来自数据寄存器722的下一组预定数量的比特被载入CRC模块320。在步骤1118中,流程1100返回到步骤1116。由于数据是在预定数量的周期内(比如说,16个周期)被读取到数据线618上的,因此这下一组预定数量的比特可以在预定数量的周期范围内的任意一个周期中或是在某个范围内从数据寄存器722中被读取出来。
如果读取计数器被置为二进制“1”,那么流程1100就前进到步骤1120,在步骤1120中,数据寄存器722中当前帧的下一个到最后一个比特都被载入CRC模块320,帧计数器被加1(用N++表示,其中N是载入到数据线618上的当前帧),并且读取计数器被禁用。在步骤1122中,流程1100判定该帧是否为最后一帧。如果该帧不是最后一帧,那么流程1100就前进到步骤1124,在步骤1124中,当前处在数据寄存器722中的帧(比如说,帧N-1)的最后一个比特被移动到CRC模块320中,数据已经处在数据线718上的下一帧被载入数据寄存器722,地址使能信号710被禁用,并且数据寄存器计数器被使能(比如说,DCOUNTER被复位到二进制“0”并激活)。然后流程1100返回步骤1104,在步骤1104中,当前处在数据寄存器722中的帧被载入CRC模块320,同时下一帧也准备好要被载入数据寄存器722。
参照图9,如果该帧是最后一帧,那么流程900就前进到步骤1300来把最后一帧载入CRC模块320。图13-14是一组流程图,它们更详细地示出了步骤1300中载入最后一帧的过程。在步骤1302中,当前处在数据寄存器722中的帧(也就是说,最后一帧的前一帧)的最后1比特被载入CRC电路320。同样在步骤1302中,来自最后一帧的数据从数据线718被载入数据寄存器722,地址使能信号710被禁用,并且数据寄存器计数器被使能。
流程1300接着前进到步骤1304,在步骤1304中,最后一帧中一组预定数量的数据比特被载入CRC电路320。在步骤1306中,如果数据寄存器计数器为二进制“0”,那么流程1300就返回步骤1304。如果数据寄存器计数器被置为二进制“1”,那么流程1300就前进到步骤1308,在步骤1308中,数据寄存器计数器被禁用,地址寄存器时钟信号704被使能,预充电计数器被使能,并且最后一帧中一组预定数量的数据比特被载入CRC电路320。
在步骤1310中,所有的数据线718都被预充电,地址寄存器时钟信号704被禁用,并且最后一帧的下一个比特被载入CRC电路320。接着,在步骤1312中,流程1300判定预充电计数器是否被置为二进制“1”。如果预充电计数器保持为二进制“0”,那么流程1300就返回到步骤1310。如果预充电计数器被置为二进制“1”,那么流程1300就前进到步骤1314,在步骤1314中,数据线预充电被关闭,预充电计数器被禁用,读取计数器被使能,并且最后一帧的下一个比特被载入CRC模块320。在步骤1316中,最后一帧的下一个比特被载入CRC模块320。接着,在步骤1318中,流程1300判定读取计数器是否被置为二进制“1”。如果读取计数器保持二进制“0”,那么流程1300就返回步骤1316。如果读取计数器被置为二进制“1”,那么流程1300就前进到步骤1320,在步骤1320中,读取计数器被禁用,并且最后一个比特之前的比特被载入CRC模块320。在步骤1322中,最后一帧的最后一个比特被载入CRC模块320,并且一个载入CRC信号被声明。
参照图9,当可编程逻辑设备配置数据104的所有帧都被载入CRC模块320后,流程900就前进到步骤1500,在步骤1500中,期望值被载入CRC模块320。
图15是一张流程图,它更详细地示出了将一个32比特期望CRC值102载入CRC模块320的过程,其中CRC模块320每时钟周期接收8个数据比特作为输入。在步骤1502中,期望CRC值102的第一个字节被载入CRC模块320。第一个字节涉及最重要的字节,从最重要的比特到最不重要的比特。多路复用器322被用来选取要发送到XOR树324的期望值102,以便计算校验和。在步骤1504中,期望CRC值102的下一个字节被载入,而在步骤1508中,期望CRC值102的第四个字节被载入。
图9-15仅仅是为了示例性的目的而说明的,这些说明是针对32比特生成多项式以及每时钟周期从数据寄存器722或是期望值102中的一个接收8个数据比特作为输入的CRC模块320而展开的。可以理解,任何合适数量的比特都可以被用来表示生成多项式,并且任何时钟周期内都可以把任意数量的比特载入CRC模块320。但是要注意到的是,根据上述的两个特点,向数据寄存器722载入数据以及将数据从数据寄存器722移动到CRC模块的时序安排可能会变化。
重新参照图9,当在步骤1500中将期望CRC值102载入CRC模块320之后,流程900就返回步骤920。
图16示出了在可编程逻辑设备上执行错误检测所包含的示例性步骤的流程图。流程1600从步骤1602开始,由一个信号来表示开始对可编程逻辑设备配置数据104进行错误检测。在步骤1604中,可编程逻辑设备配置数据104被载入CRC模块320,如图9-15中所示。在步骤1606中,流程1600判定是否所有的配置数据104都已经被载入CRC电路模块320。如果并非所有的配置数据104都已经被载入,那么流程1600就返回步骤1604。流程1600还会前进到步骤1608,在步骤1608中开始对数据进行校验和计算。如果所有的配置数据104都已经被载入,那么流程1600就前进到步骤1608和1610。在步骤1610中,期望值102被载入CRC模块320,然后流程1600就前进到步骤1608。在步骤1608中,当配置数据104的最后部分以及期望值102被载入CRC模块320的时候,XOR树324不断地计算出校验和。每个时钟周期都会在步骤1612中将校验和计算的结果载入信号特征寄存器328。
当在步骤1612中把求得的校验和载入信号特征寄存器328之后,流程1600接着就前进到步骤1614,在步骤1614中对信号特征寄存器328中的每个比特执行逻辑“OR”。在步骤1616中,“OR”操作的结果被输出到一个CRC错误管脚上。然后流程1600就返回步骤1604。
图17示出了数据处理系统1700中的一个示例性可编程逻辑设备1702或是多芯片模块1704,1702或1704中包含了本发明的实施例。数据处理系统1700中可以包括一个或多个下列组件:一个处理器1706;一个存储器1708;I/O电路1710;以及外围设备1712。这些组件由一条系统总线或是其他互连线路1720连接在一起,并且被安装在一块电路板1730上,该电路板是一个终端用户系统1740的一部分。
系统1700可以被使用在许多应用场合,比如计算机联网、数据联网、测量仪表、视频处理、数字信号处理,或是任何其他应用,在这些应用中需要利用到可编程或是可重复编程逻辑设备的优点。可编程逻辑设备或模块1702/1704可以被用来执行各种不同的逻辑功能。举例来说,可编程逻辑设备或模块1702/1704可以被设置成一个处理器或控制器来与处理器1706协同工作。可编程逻辑设备或模块1702/1704还可以被用作判定器,用来判决对系统1700中共享设备的访问。在另一个例子中,可编程逻辑设备或模块1702/1704可以被设置成处理器1706与系统1700中另一个组件之间的接口。应该注意的是,系统1700仅仅是示范性的,而本发明真正的范围与指导思想应该由下面的权利要求来指出。
多种不同的技术可以被用来实现具有本发明特点的可编程逻辑设备1702或多芯片模块1704,以及那些设备的各种组件(比如说,可编程逻辑连接器(“PLCs”)以及控制PLCs的可编程功能控制元件(“FCEs”))。举例来说,每个PLC可以是一个相对简单的可编程连接器,比如一个开关或是多个开关,用来将若干个输入端中的任意一个连接到一个输出端。另外,每个PLC也可以是一个稍复杂的元件,它能够执行逻辑功能(比如说,在逻辑上组合若干个输入)以及产生连接。在后一种情况下,举例来说,每个PLC可以是一个乘积项逻辑,它能实现诸如AND、NAND、OR或是NOR这些功能。适合用来实现PLCs的元件例子包括上述任何类型的易失性或非易失性存储器,比如EPROMs、EEPROMs、传递晶体管、传输门、反熔断器、激光熔断器、金属可选择性接线等等,这些存储器可以被用来储存可编程逻辑设备配置数据。PLCs以及其他电路元件可以由各种可编程功能控制元件(“FCEs”)进行控制。举例来说,FCEs可以是上述任何类型的易失性或非易失性存储器,这些存储器可以被用来储存可编程逻辑设备配置数据。FCEs也可以是先入先出(“FIFO”)存储器,比如EPROMs、EEPROMs、功能控制寄存器、铁电存储器、熔断器、反熔断器,等等。由上述的各种例子可见,本发明既可以应用在一次性可编程设备中,也可以应用在可重复编程的设备中。
至此可见,我们在可编程逻辑设备上提供了错误检测电路。精通本技术的人应该能够理解,本发明可以用上述实施例之外的其他实施例加以实现,上述的实施例是为说明性的而不是限制性的目的而提供的,本发明仅受下列权利要求的限制。

Claims (31)

1.一种集成电路设备,包括:
一个第一存储器,配置数据被储存在其中;
第二存储器,其中存储一个期望值,其中所述期望值是根据所述配置数据计算出来的;
检验电路,其连接到所述第一和第二存储器,用于分析包含所述配置数据与所述期望值的比特流,以确定在第一存储器的最初设置之后所述配置数据中是否有任何值发生了变化,从而根据所述分析来检测错误,并且该检验电路输出指示是否检测到错误的信号。
2.根据权利要求1所述的集成电路设备,其中所述的第一存储器是随机存取存储器。
3.根据权利要求1所述的集成电路设备,其中所述的检验电路包括:
校验和电路,它根据配置数据计算出一个值;以及
连接到校验和电路的比较电路,它将所述算得的值与所述期望值进行比较。
4.根据权利要求3所述的集成电路设备,其中所述算得的值是用基于配置数据的一个值除以一个预定的值所得到的余数。
5.根据权利要求3所述的集成电路设备,其中所述的期望值是用基于配置数据的一个值除以一个预定的值所得到的余数,其中所述期望值是由校验和电路在所述配置数据被编程到所述第一存储器上时计算得出的。
6.根据权利要求3所述的集成电路设备,其中所述的比较电路提供以下信号之一:
第一信号,表示没有检测到错误;以及
第二信号,表示检测到了错误。
7.根据权利要求1所述的集成电路设备,其中所述的检验电路包括:
计算电路,它根据所述配置数据和所述期望值计算一个值;以及
连接到计算电路的比较电路,它比较所述算得的值和另一个值。
8.根据权利要求7所述的集成电路设备,其中所述的算得的值是用基于配置数据和期望值的一个值除以一个预定的值所得到的余数。
9.根据权利要求8所述的集成电路设备,其中所述的期望值是用基于所述配置数据的一个值除以所述预定的值所得到的余数,其中所述期望值是由所述计算电路在所述配置数据被编程到所述第一存储器上时计算得出的。
10.根据权利要求7所述的集成电路设备,其中所述的比较电路生成以下信号之一:
第一信号,表示没有检测到错误;以及
第二信号,表示检测到了错误。
11.根据权利要求1所述的集成电路设备,还包括:
一个连接到所述第一存储器上的第三存储器,其中的第三存储器储存所述配置数据的一部分。
12.根据权利要求11所述的集成电路设备,其中所述的检验电路被连接到第三存储器上,并对所述配置数据的一部分执行部分分析。
13.根据权利要求1所述的集成电路设备,其中所述的期望值是根据用来设置所述第一存储器的配置数据计算出来的。
14.根据权利要求1所述的集成电路设备,其中所述的期望值是用基于该配置数据的一个值除以一个预定值而得到的余数,其中所述期望值是在所述配置数据被编程到所述第一存储器上之前被计算的。
15.根据权利要求1所述的集成电路设备,其中所述的期望值是用基于该配置数据的一个值除以一个预定值而得到的余数,其中所述期望值是由所述检验电路在所述配置数据被编程到所述第一存储器上时计算得出的。
16.根据权利要求1所述的集成电路设备,还包括连接到检验电路上的输出电路,用于输出一个指示了是否检测到错误的信号。
17.根据权利要求1所述的集成电路设备,其中该集成电路设备被包括在数字信号处理系统中,其中该数字信号处理系统还包括:
处理电路;和
连接到所述处理电路上的一个第三存储器。
18.根据权利要求1所述的集成电路设备,其中该集成电路设备被安装在一块电路板上。
19.根据权利要求18所述的集成电路设备,其中所述电路板还包括:
一个第三存储器,它被安装在所述电路板上并连接到所述集成电路设备上。
20.根据权利要求19所述的集成电路设备,其中所述的第三存储器包含非易失性存储器,用于储存被编程到所述集成电路设备中的配置数据。
21.根据权利要求1的集成电路设备,其中所述检验电路包括:
一个XOR树,用于实现多项式校验和计算;
一个连接到XOR树上的信号特征寄存器;以及
一个连接到信号特征寄存器上的逻辑门,其中逻辑门取信号特征寄存器的内容作为逐位输入。
22.根据权利要求21所述的集成电路设备,其中所述的XOR树包括寄存器,该寄存器在每个时钟周期储存多项式校验和计算的结果,并在下一个时钟周期将结果发送给XOR树作为输入。
23.根据权利要求22所述的集成电路设备,其中所述的储存在寄存器中的结果在下一个时钟周期里被送往并储存到信号特征寄存器中。
24.根据权利要求21所述的集成电路设备,其中所述的XOR树计算出一个余数,该余数是用基于配置数据和期望值的一个值除以一个预定值而得到的。
25.根据权利要求21所述的集成电路设备,其中所述的逻辑门发送下列比特中的一种作为输出:
第一比特,当信号特征寄存器的内容是一个预定值的时候;以及
第二比特,当信号特征寄存器的内容不是所述预定值的时候。
26.一种用来检测错误的方法,包括:
在可编程资源的第一存储器上存储配置数据;
在所述可编程资源的第二存储器上存储一个基于所述配置数据的期望值,其中所述期望值是根据所述配置数据计算的;
在所述可编程资源上分析包含存储在所述第一存储器中的所述配置数据和存储在第二存储器中的期望值的比特流,以确定所述第一存储器的最初设置之后所述配置数据中是否有任何值发生了变化,从而根据所述分析来检测错误;以及
输出指示是否检测到错误的信号。
27.根据权利要求26所述的方法,还包括计算所述期望值,所述的期望值是用基于该配置数据的一个值除以一个预定值而得到的余数,其中所述计算是在所述配置数据被编程到所述第一存储器上之前进行的。
28.根据权利要求26所述的方法,还包括计算所述期望值,所述的期望值是用基于该配置数据的一个值除以一个预定值而得到的余数,其中所述计算是在所述配置数据被编程到所述第一存储器上时进行的。
29.根据权利要求26所述的方法,其中分析比特流的步骤包括:
根据所述比特流计算一个值;以及
比较算得的值和另一个值。
30.根据权利要求26所述的方法,还包括输出一个分析结果,该结果表示是否检测到了错误。
31.根据权利要求30所述的方法,其中输出结果的步骤包括以下之一:
送出一个第一信号,表示没有检测到错误;以及
送出一个第二信号,表示检测到了错误。
CNB028033000A 2001-10-11 2002-10-10 可编程逻辑设备上的错误检测 Expired - Fee Related CN100489797C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US32866801P 2001-10-11 2001-10-11
US60/328,668 2001-10-11

Publications (2)

Publication Number Publication Date
CN1529853A CN1529853A (zh) 2004-09-15
CN100489797C true CN100489797C (zh) 2009-05-20

Family

ID=23281914

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028033000A Expired - Fee Related CN100489797C (zh) 2001-10-11 2002-10-10 可编程逻辑设备上的错误检测

Country Status (5)

Country Link
US (4) US7310757B2 (zh)
EP (1) EP1438662A2 (zh)
JP (3) JP4856848B2 (zh)
CN (1) CN100489797C (zh)
WO (1) WO2003032159A2 (zh)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6661253B1 (en) 2000-08-16 2003-12-09 Altera Corporation Passgate structures for use in low-voltage applications
US7310757B2 (en) 2001-10-11 2007-12-18 Altera Corporation Error detection on programmable logic resources
AU2003271594A1 (en) * 2002-09-11 2004-04-23 Giesecke And Devrient Gmbh Protected cryptographic calculation
JP4949037B2 (ja) * 2003-11-18 2012-06-06 スカラド、アクチボラグ ディジタル画像を処理するための方法および画像表現形式
US7328377B1 (en) 2004-01-27 2008-02-05 Altera Corporation Error correction for programmable logic integrated circuits
US7425841B2 (en) 2004-02-14 2008-09-16 Tabula Inc. Configurable circuits, IC's, and systems
US7167025B1 (en) 2004-02-14 2007-01-23 Herman Schmit Non-sequentially configurable IC
US7340667B2 (en) * 2004-05-10 2008-03-04 Via Telecom Co., Ltd. Method and/or apparatus implemented in hardware to discard bad logical transmission units (LTUs)
US7292065B2 (en) * 2004-08-03 2007-11-06 Altera Corporation Enhanced passgate structures for reducing leakage current
JP2004327036A (ja) * 2004-08-06 2004-11-18 Matsushita Electric Ind Co Ltd 半導体集積回路および半導体集積回路の検査方法
US7301242B2 (en) * 2004-11-04 2007-11-27 Tabula, Inc. Programmable system in package
US7317331B2 (en) 2004-11-08 2008-01-08 Tabula, Inc. Reconfigurable IC that has sections running at different reconfiguration rates
JP4643977B2 (ja) * 2004-11-30 2011-03-02 富士通株式会社 プログラマブル・ロジック・デバイス、情報処理装置、プログラマブル・ロジック・デバイスの制御方法
US7363573B1 (en) * 2005-01-10 2008-04-22 Xilinx, Inc. Method and apparatus for a dedicated cyclic redundancy check block within a device
US7230869B1 (en) 2005-03-15 2007-06-12 Jason Redgrave Method and apparatus for accessing contents of memory cells
US8201124B1 (en) 2005-03-15 2012-06-12 Tabula, Inc. System in package and method of creating system in package
CN100406903C (zh) * 2005-03-28 2008-07-30 大唐移动通信设备有限公司 一种可编程逻辑器件配置的检测方法
US9459960B2 (en) 2005-06-03 2016-10-04 Rambus Inc. Controller device for use with electrically erasable programmable memory chip with error detection and retry modes of operation
US7831882B2 (en) 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
US7620876B2 (en) * 2005-06-08 2009-11-17 Altera Corporation Reducing false positives in configuration error detection for programmable devices
DE102006028695B4 (de) * 2005-06-23 2017-11-30 Denso Corporation Elektronisches Steuersystem mit Fehlfunktionsüberwachung
US7996731B2 (en) * 2005-11-02 2011-08-09 Advanced Micro Devices, Inc. Error detection in high-speed asymmetric interfaces
US7761776B1 (en) 2005-11-03 2010-07-20 Xilinx, Inc. Method and apparatus for a modular, programmable cyclic redundancy check design
US7568136B2 (en) * 2005-11-08 2009-07-28 M2000 Sa. Reconfigurable system and method with corruption detection and recovery
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7562285B2 (en) 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
US7339816B1 (en) * 2006-01-27 2008-03-04 Altera Corporation Soft error tolerance for configuration memory in programmable devices
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7669097B1 (en) * 2006-03-27 2010-02-23 Tabula, Inc. Configurable IC with error detection and correction circuitry
US7529992B1 (en) * 2006-03-27 2009-05-05 Tabula, Inc. Configurable integrated circuit with error correcting circuitry
US8024639B2 (en) 2006-06-23 2011-09-20 Schweitzer Engineering Laboratories, Inc. Software and methods to detect and correct data structure
US20080080114A1 (en) * 2006-09-29 2008-04-03 Schweitzer Engineering Laboratories, Inc. Apparatus, systems and methods for reliably detecting faults within a power distribution system
US20080155293A1 (en) * 2006-09-29 2008-06-26 Schweitzer Engineering Laboratories, Inc. Apparatus, systems and methods for reliably detecting faults within a power distribution system
US7508231B2 (en) * 2007-03-09 2009-03-24 Altera Corporation Programmable logic device having redundancy with logic element granularity
US8316158B1 (en) 2007-03-12 2012-11-20 Cypress Semiconductor Corporation Configuration of programmable device using a DMA controller
US7610566B1 (en) 2007-03-22 2009-10-27 Tabula, Inc. Method and apparatus for function decomposition
US8001446B2 (en) * 2007-03-26 2011-08-16 Intel Corporation Pipelined cyclic redundancy check (CRC)
US8060661B1 (en) 2007-03-27 2011-11-15 Cypress Semiconductor Corporation Interface circuit and method for programming or communicating with an integrated circuit via a power supply pin
US7636802B1 (en) * 2007-04-11 2009-12-22 Xilinx, Inc. Data transfer using the configuration port of a programmable logic device
US7644344B2 (en) * 2007-05-15 2010-01-05 Intel Corporation Latency by offsetting cyclic redundancy code lanes from data lanes
US7535787B2 (en) * 2007-06-06 2009-05-19 Daniel Elmhurst Methods and apparatuses for refreshing non-volatile memory
WO2009035586A1 (en) * 2007-09-06 2009-03-19 Tabula, Inc. Configuration context switcher
FR2928769B1 (fr) * 2008-03-14 2012-07-13 Airbus France Dispositif permettant l'utilisation d'un composant programmable dans un environnement radiatif naturel
US8116115B2 (en) 2008-11-06 2012-02-14 Micron Technology, Inc. Multilevel phase change memory operation
US7948792B1 (en) 2009-04-15 2011-05-24 Altera Corporation Memory and techniques for using same
US8370705B1 (en) * 2009-09-23 2013-02-05 Nvidia Corporation System and method for calculating a checksum address while maintaining error correction information
CN102169711A (zh) * 2010-02-25 2011-08-31 复旦大学 带电阻随机存储器模块的单芯片结构可编程逻辑器
US8441768B2 (en) 2010-09-08 2013-05-14 Schweitzer Engineering Laboratories Inc Systems and methods for independent self-monitoring
US8437200B1 (en) * 2011-02-07 2013-05-07 Altera Corporation Zeroization verification of integrated circuit
US20130046912A1 (en) * 2011-08-18 2013-02-21 Maxeler Technologies, Ltd. Methods of monitoring operation of programmable logic
CN103890856B (zh) 2011-10-27 2017-07-11 慧与发展有限责任合伙企业 支持内存储数据结构的可移位存储器
CN103907157B (zh) * 2011-10-28 2017-10-17 慧与发展有限责任合伙企业 进行行移位的可移位存储器
US9235460B2 (en) 2012-02-27 2016-01-12 Altera Corporation Methods and apparatus for automatic fault detection
US9007731B2 (en) 2012-03-26 2015-04-14 Schweitzer Engineering Laboratories, Inc. Leveraging inherent redundancy in a multifunction IED
US9230683B2 (en) 2012-04-25 2016-01-05 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and driving method thereof
CN103825649A (zh) * 2012-11-16 2014-05-28 华为技术有限公司 光模块信息的修复方法和装置
JP6038706B2 (ja) * 2013-03-29 2016-12-07 大同信号株式会社 二線式検査回路搭載fpga
US9348690B2 (en) * 2013-08-21 2016-05-24 Via Alliance Semiconductor Co., Ltd. Correctable configuration data compression and decompression system
US9223715B2 (en) 2013-08-21 2015-12-29 Via Alliance Semiconductor Co., Ltd. Microprocessor mechanism for decompression of cache correction data
US8982655B1 (en) 2013-08-21 2015-03-17 Via Technologies, Inc. Apparatus and method for compression and decompression of microprocessor configuration data
DE102013225131A1 (de) * 2013-12-06 2015-06-11 Robert Bosch Gmbh Verfahren zur Fehlerüberprüfung einer hardware-konfigurierbaren Logikschaltung
CN103678028A (zh) * 2013-12-16 2014-03-26 重庆川仪自动化股份有限公司 一种ram内存检测方法及装置
US9641809B2 (en) * 2014-03-25 2017-05-02 Nxp Usa, Inc. Circuit arrangement and method for processing a digital video stream and for detecting a fault in a digital video stream, digital video system and computer readable program product
US9712186B1 (en) 2014-04-18 2017-07-18 Altera Corporation Serial memory interface circuitry for programmable integrated circuits
US9665490B2 (en) 2014-05-22 2017-05-30 Via Alliance Semiconductor Co., Ltd. Apparatus and method for repairing cache arrays in a multi-core microprocessor
US9606933B2 (en) 2014-05-22 2017-03-28 Via Alliance Semiconductor Co., Ltd. Multi-core apparatus and method for restoring data arrays following a power gating event
US9524241B2 (en) 2014-05-22 2016-12-20 Via Alliance Semiconductor Co., Ltd. Multi-core microprocessor power gating cache restoral mechanism
US9395802B2 (en) 2014-05-22 2016-07-19 Via Alliance Semiconductor Co., Ltd. Multi-core data array power gating restoral mechanism
JP2016009893A (ja) * 2014-06-23 2016-01-18 Necエンジニアリング株式会社 データ不正検出装置及びデータ不正検出方法
US9826252B2 (en) 2014-07-29 2017-11-21 Nxp Usa, Inc. Method and video system for freeze-frame detection
CN104635190B (zh) * 2014-12-31 2017-05-03 漳州科能电器有限公司 一种计量芯片抗干扰检测及纠错方法和装置
JP2016167669A (ja) * 2015-03-09 2016-09-15 富士通株式会社 プログラマブル論理回路装置及びそのエラー検出方法
US10481972B1 (en) 2015-08-10 2019-11-19 Google Llc File verification using cyclic redundancy check
US9576625B1 (en) * 2015-10-08 2017-02-21 Altera Corporation Register initialization using multi-pass configuration
JP6718294B2 (ja) * 2016-04-25 2020-07-08 アズビル株式会社 レジスタ異常検出装置
JP6880795B2 (ja) * 2017-02-08 2021-06-02 オムロン株式会社 制御装置およびその制御方法
CN108628694B (zh) * 2017-03-20 2023-03-28 腾讯科技(深圳)有限公司 一种基于可编程硬件的数据处理方法以及装置
US10203967B1 (en) 2017-04-18 2019-02-12 Amazon Technologies, Inc. Client configurable hardware logic and corresponding data
US10825541B1 (en) * 2018-10-02 2020-11-03 Xilinx, Inc. Built in configuration memory test
CN113094308B (zh) * 2020-01-08 2023-01-31 株洲中车时代电气股份有限公司 一种变频器的通信管理方法及系统
US11323362B2 (en) 2020-08-07 2022-05-03 Schweitzer Engineering Laboratories, Inc. Resilience to single event upsets in software defined networks
NO346155B1 (en) * 2020-10-26 2022-03-28 Kongsberg Defence & Aerospace As Configuration authentication prior to enabling activation of a FPGA having volatile configuration-memory
US11604692B2 (en) 2021-08-19 2023-03-14 Wuxi Esiontech Co., Ltd. Field programmable gate array (FPGA) with automatic error detection and correction function for programmable logic modules
CN113608918B (zh) * 2021-08-19 2023-04-28 无锡中微亿芯有限公司 具有对可编程逻辑模块自动检纠错功能的fpga

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0291167A2 (en) * 1987-04-14 1988-11-17 Matsushita Electric Industrial Co., Ltd. A code error detecting method
US5598530A (en) * 1993-02-16 1997-01-28 Fujitsu Limited Method and apparatus for controlling using checksums execution of object programs
US5629949A (en) * 1993-09-21 1997-05-13 Cirrus Logic, Inc. Error correction verification method and apparatus using CRC check remainders
US5844923A (en) * 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
CN1300395A (zh) * 1999-04-22 2001-06-20 松下电器产业株式会社 处理器

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4005405A (en) 1975-05-07 1977-01-25 Data General Corporation Error detection and correction in data processing systems
US4371930A (en) 1980-06-03 1983-02-01 Burroughs Corporation Apparatus for detecting, correcting and logging single bit memory read errors
US4866717A (en) 1986-07-29 1989-09-12 Matsushita Electric Industrial Co., Ltd. Code error detecting and correcting apparatus
US5717440A (en) * 1986-10-06 1998-02-10 Hitachi, Ltd. Graphic processing having apparatus for outputting FIFO vacant information
JPH0232620A (ja) * 1988-07-22 1990-02-02 Fujitsu Ltd プログラマブル・ロジック・アレイ
US4930107A (en) 1988-08-08 1990-05-29 Altera Corporation Method and apparatus for programming and verifying programmable elements in programmable devices
US5511211A (en) 1988-08-31 1996-04-23 Hitachi, Ltd. Method for flexibly developing a data processing system comprising rewriting instructions in non-volatile memory elements after function check indicates failure of required functions
US4930098A (en) 1988-12-30 1990-05-29 Intel Corporation Shift register programming for a programmable logic device
US4940909A (en) 1989-05-12 1990-07-10 Plus Logic, Inc. Configuration control circuit for programmable logic devices
US4918378A (en) * 1989-06-12 1990-04-17 Unisys Corporation Method and circuitry for enabling internal test operations in a VLSI chip
US5111464A (en) 1989-12-01 1992-05-05 Mips Computer Systems, Inc. Interrupt reporting for single-bit memory errors
US5200920A (en) 1990-02-08 1993-04-06 Altera Corporation Method for programming programmable elements in programmable devices
US5349691A (en) 1990-07-03 1994-09-20 Xilinx, Inc. Programming process for 3-level programming logic devices
US5305324A (en) 1990-09-26 1994-04-19 Demografx Data scrambling interface for correcting large burst errors in high speed, high capacity tape drives
US5321704A (en) 1991-01-16 1994-06-14 Xilinx, Inc. Error detection structure and method using partial polynomial check
US5307056A (en) * 1991-09-06 1994-04-26 Texas Instruments Incorporated Dynamic memory allocation for frame buffer for spatial light modulator
JPH05102056A (ja) * 1991-10-11 1993-04-23 Rohm Co Ltd ウエハー支持具
US5237219A (en) 1992-05-08 1993-08-17 Altera Corporation Methods and apparatus for programming cellular programmable logic integrated circuits
JPH05327477A (ja) * 1992-05-26 1993-12-10 Fuji Facom Corp フィールドプログラム可能なゲートアレイの誤り検査方法及び装置
JPH0636600A (ja) * 1992-07-16 1994-02-10 Fujitsu Ltd 半導体記憶装置
US5291079A (en) 1992-07-23 1994-03-01 Xilinx, Inc. Configuration control unit for programming a field programmable gate array and reading array status
GB9223226D0 (en) 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5588112A (en) 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
US5495491A (en) 1993-03-05 1996-02-27 Motorola, Inc. System using a memory controller controlling an error correction means to detect and correct memory errors when and over a time interval indicated by registers in the memory controller
US5466117A (en) 1993-06-10 1995-11-14 Xilinx, Inc. Device and method for programming multiple arrays of semiconductor devices
US5682064A (en) * 1993-08-16 1997-10-28 Micron Technology, Inc. Repairable wafer scale integration system
US5473620A (en) * 1993-09-21 1995-12-05 Cirrus Logic, Inc. Programmable redundancy/syndrome generator
US5590305A (en) 1994-03-28 1996-12-31 Altera Corporation Programming circuits and techniques for programming logic
US5430687A (en) 1994-04-01 1995-07-04 Xilinx, Inc. Programmable logic device including a parallel input device for loading memory cells
GB2289779B (en) 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US5426379A (en) 1994-07-29 1995-06-20 Xilinx, Inc. Field programmable gate array with built-in bitstream data expansion
US5606276A (en) 1994-10-05 1997-02-25 Altera Corporation Method and apparatus for creating a large delay in a pulse in a layout efficient manner
US6279128B1 (en) 1994-12-29 2001-08-21 International Business Machines Corporation Autonomous system for recognition of patterns formed by stored data during computer memory scrubbing
US5581198A (en) 1995-02-24 1996-12-03 Xilinx, Inc. Shadow DRAM for programmable logic devices
US5543730A (en) 1995-05-17 1996-08-06 Altera Corporation Techniques for programming programmable logic array devices
US5640106A (en) 1995-05-26 1997-06-17 Xilinx, Inc. Method and structure for loading data into several IC devices
DE19519946A1 (de) * 1995-06-02 1996-12-05 Thomson Brandt Gmbh Verfahren zur Synchronisation eines aus Informationsdaten und einem anschließenden Prüfsummenfeld bestehenden empfangenen Datenblocks sowie Vorrichtung zur Durchführung des Verfahrens
EP0747826B1 (en) * 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation Cache system with simultaneous tag comparison
US5734868A (en) 1995-08-09 1998-03-31 Curd; Derek R. Efficient in-system programming structure and method for non-volatile programmable logic devices
US5608342A (en) 1995-10-23 1997-03-04 Xilinx, Inc. Hierarchical programming of electrically configurable integrated circuits
US5650734A (en) 1995-12-11 1997-07-22 Altera Corporation Programming programmable transistor devices using state machines
US5767734A (en) 1995-12-21 1998-06-16 Altera Corporation High-voltage pump with initiation scheme
JP3635757B2 (ja) * 1995-12-28 2005-04-06 昭和電工株式会社 AlGaInP発光ダイオード
US6023565A (en) 1996-03-29 2000-02-08 Xilinx, Inc. Method for configuring circuits over a data communications link
US5694056A (en) 1996-04-01 1997-12-02 Xilinx, Inc. Fast pipeline frame full detector
US5694399A (en) 1996-04-10 1997-12-02 Xilinix, Inc. Processing unit for generating signals for communication with a test access port
US5961576A (en) 1996-05-03 1999-10-05 Xilinx, Inc. Configurable parallel and bit serial load apparatus
US5742531A (en) 1996-05-03 1998-04-21 Xilinx Inc Configurable parallel and bit serial load apparatus
US6024486A (en) 1996-06-05 2000-02-15 Compaq Computer Corporation Data error detection and correction
US6023564A (en) 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
US5821772A (en) 1996-08-07 1998-10-13 Xilinx, Inc. Programmable address decoder for programmable logic device
US5754566A (en) 1996-09-06 1998-05-19 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using interleaving
JPH1082839A (ja) * 1996-09-06 1998-03-31 Hitachi Telecom Technol Ltd Fpgaを使用した電子装置の診断方式
US5844854A (en) 1996-09-18 1998-12-01 Altera Corporation Programmable logic device with two dimensional memory addressing
US5873113A (en) 1996-09-24 1999-02-16 Altera Corporation System and method for programming eprom cells using shorter duration pulse(s) in repeating the programming process of a particular cell
US5773993A (en) 1996-09-26 1998-06-30 Xilinx, Inc. Configurable electronic device which is compatible with a configuration bitstream of a prior generation configurable electronic device
GB9621540D0 (en) * 1996-10-16 1996-12-04 British Gas Plc An electric power generation system
TW382705B (en) 1996-10-21 2000-02-21 Texas Instruments Inc Error correcting memory
US5841867A (en) * 1996-11-01 1998-11-24 Xilinx, Inc. On-chip programming verification system for PLDs
US5978952A (en) 1996-12-31 1999-11-02 Intel Corporation Time-distributed ECC scrubbing to correct memory errors
US5943490A (en) * 1997-05-30 1999-08-24 Quickturn Design Systems, Inc. Distributed logic analyzer for use in a hardware logic emulation system
US6314550B1 (en) 1997-06-10 2001-11-06 Altera Corporation Cascaded programming with multiple-purpose pins
US6018250A (en) 1997-06-26 2000-01-25 Xilinx, Inc. Programming method to enable system recovery after power failure
US5812472A (en) * 1997-07-16 1998-09-22 Tanisys Technology, Inc. Nested loop method of identifying synchronous memories
JP3597972B2 (ja) * 1997-07-25 2004-12-08 富士通株式会社 プログラマブルロジックデバイス及びその試験方法並びに試験用データ作成方法
US6128215A (en) 1997-08-19 2000-10-03 Altera Corporation Static random access memory circuits
US6078736A (en) 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US5999014A (en) 1997-09-17 1999-12-07 Xilinx, Inc. Method for concurrently programming or accessing a plurality of in-system-programmable logic devices
US6011406A (en) 1997-10-28 2000-01-04 Altera Corporation Ultra-fast configuration mode for a programmable logic device
US5995744A (en) 1997-11-24 1999-11-30 Xilinx, Inc. Network configuration of programmable circuits
US5995988A (en) 1997-12-04 1999-11-30 Xilinx, Inc. Configurable parallel and bit serial load apparatus
US5848026A (en) * 1997-12-08 1998-12-08 Atmel Corporation Integrated circuit with flag register for block selection of nonvolatile cells for bulk operations
US6057704A (en) 1997-12-12 2000-05-02 Xilinx, Inc. Partially reconfigurable FPGA and method of operating same
US6028445A (en) 1997-12-30 2000-02-22 Xilinx, Inc. Decoder structure and method for FPGA configuration
US6049222A (en) 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
US6237124B1 (en) 1998-03-16 2001-05-22 Actel Corporation Methods for errors checking the configuration SRAM and user assignable SRAM data in a field programmable gate array
US6772387B1 (en) * 1998-03-16 2004-08-03 Actel Corporation Cyclic redundancy checking of a field programmable gate array having an SRAM memory architecture
EP1068716B1 (en) * 1998-03-31 2012-05-02 BRITISH TELECOMMUNICATIONS public limited company Call distribution
US6242941B1 (en) 1998-05-29 2001-06-05 Altera Corporation Reducing I/O noise when leaving programming mode
US6137307A (en) 1998-08-04 2000-10-24 Xilinx, Inc. Structure and method for loading wide frames of data from a narrow input bus
US6069489A (en) 1998-08-04 2000-05-30 Xilinx, Inc. FPGA having fast configuration memory data readback
US6097210A (en) 1998-08-04 2000-08-01 Xilinx, Inc. Multiplexer array with shifted input traces
US6223309B1 (en) 1998-10-02 2001-04-24 International Business Machines Corporation Method and apparatus for ECC logic test
FR2784475B1 (fr) 1998-10-12 2000-12-29 Centre Nat Etd Spatiales Procede de traitement d'un systeme electronique soumis a des contraintes d'erreurs transitoires
US6128760A (en) * 1998-10-13 2000-10-03 Lsi Logic Corporation Method and apparatus for calculating a CRC remainder
US6349390B1 (en) 1999-01-04 2002-02-19 International Business Machines Corporation On-board scrubbing of soft errors memory module
US6044025A (en) 1999-02-04 2000-03-28 Xilinx, Inc. PROM with built-in JTAG capability for configuring FPGAs
US6191614B1 (en) 1999-04-05 2001-02-20 Xilinx, Inc. FPGA configuration circuit including bus-based CRC register
US6262596B1 (en) 1999-04-05 2001-07-17 Xilinx, Inc. Configuration bus interface circuit for FPGAS
US6204687B1 (en) 1999-08-13 2001-03-20 Xilinx, Inc. Method and structure for configuring FPGAS
US6684358B1 (en) * 1999-11-23 2004-01-27 Janusz Rajski Decompressor/PRPG for applying pseudo-random and deterministic test patterns
EP1630685B1 (en) * 2000-01-07 2008-04-09 Nippon Telegraph and Telephone Corporation Function reconfigurable semiconductor device and integrated circuit configuring the semiconductor device
US6832340B2 (en) 2000-01-26 2004-12-14 Hewlett-Packard Development Company, L.P. Real-time hardware memory scrubbing
US6701480B1 (en) 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
US6510534B1 (en) * 2000-06-29 2003-01-21 Logicvision, Inc. Method and apparatus for testing high performance circuits
US6651155B1 (en) * 2000-07-28 2003-11-18 Altera Corporation Apparatus and method for translating a programmable logic device programmer object file
US6678861B1 (en) * 2000-08-21 2004-01-13 Cypress Semiconductor Corp. FIFO with CRC in a PLD
US6766429B1 (en) 2000-08-31 2004-07-20 International Business Machines Corporation Low cost and high RAS mirrored memory
US6981153B1 (en) * 2000-11-28 2005-12-27 Xilinx, Inc. Programmable logic device with method of preventing readback
US6441641B1 (en) * 2000-11-28 2002-08-27 Xilinx, Inc. Programmable logic device with partial battery backup
US6366117B1 (en) * 2000-11-28 2002-04-02 Xilinx, Inc. Nonvolatile/battery-backed key in PLD
US7036059B1 (en) * 2001-02-14 2006-04-25 Xilinx, Inc. Techniques for mitigating, detecting and correcting single event upset effects in systems using SRAM-based field programmable gate arrays
US6651238B1 (en) * 2001-04-17 2003-11-18 Xilinx, Inc. Providing fault coverage of interconnect in an FPGA
US6859904B2 (en) 2001-05-11 2005-02-22 Sun Microsystems, Inc. Apparatus and method to facilitate self-correcting memory
DE60202152T2 (de) * 2001-08-07 2005-12-01 Xilinx, Inc., San Jose Anwendungsspezifische Testmethoden für programmierbare Logikbauelemente
US7170891B2 (en) * 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US6636935B1 (en) * 2001-09-10 2003-10-21 Rambus Inc. Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules
US7310757B2 (en) * 2001-10-11 2007-12-18 Altera Corporation Error detection on programmable logic resources
US7051264B2 (en) 2001-11-14 2006-05-23 Monolithic System Technology, Inc. Error correcting memory and method of operating same
US6848063B2 (en) 2001-11-20 2005-01-25 Hewlett-Packard Development Company, L.P. System and method for scrubbing errors in very large memories
US6545501B1 (en) * 2001-12-10 2003-04-08 International Business Machines Corporation Method and system for use of a field programmable function within a standard cell chip for repair of logic circuits
US6861867B2 (en) * 2002-03-07 2005-03-01 Lightspeed Semiconductor Corporation Method and apparatus for built-in self-test of logic circuits with multiple clock domains
US7007203B2 (en) 2002-08-02 2006-02-28 Motorola, Inc. Error checking in a reconfigurable logic signal processor (RLSP)
JP3969240B2 (ja) 2002-08-02 2007-09-05 ソニー株式会社 半導体記憶装置
US7103743B2 (en) * 2002-08-23 2006-09-05 Intel Corporation System and method of accessing vital product data
US6938201B2 (en) * 2002-09-05 2005-08-30 Agilent Technologies, Inc. Error detection system for a FIFO memory
US6944836B1 (en) * 2002-11-15 2005-09-13 Xilinx, Inc. Structures and methods for testing programmable logic devices having mixed-fabric architectures
US6838899B2 (en) 2002-12-30 2005-01-04 Actel Corporation Apparatus and method of error detection and correction in a radiation-hardened static random access memory field-programmable gate array
WO2004072660A2 (en) * 2003-02-13 2004-08-26 Mentor Graphics Corporation Compressing test responses using a compactor
US7278128B1 (en) * 2003-04-11 2007-10-02 Xilinx, Inc. Method of altering a bitstream
US20050071730A1 (en) * 2003-09-30 2005-03-31 Lattice Semiconductor Corporation Continuous self-verify of configuration memory in programmable logic devices
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7370260B2 (en) 2003-12-16 2008-05-06 Freescale Semiconductor, Inc. MRAM having error correction code circuitry and method therefor
US7509560B2 (en) 2003-12-29 2009-03-24 Intel Corporation Mechanism for adjacent-symbol error correction and detection
US7461312B2 (en) * 2004-07-22 2008-12-02 Microsoft Corporation Digital signature generation for hardware functional test
US7627798B2 (en) * 2004-10-08 2009-12-01 Kabushiki Kaisha Toshiba Systems and methods for circuit testing using LBIST
EP2677328B1 (en) * 2006-02-17 2015-07-29 Mentor Graphics Corporation Multi-stage test response compactors
US7701254B2 (en) * 2007-03-13 2010-04-20 Oracle America, Inc. Reconfigurable circuits

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0291167A2 (en) * 1987-04-14 1988-11-17 Matsushita Electric Industrial Co., Ltd. A code error detecting method
US5598530A (en) * 1993-02-16 1997-01-28 Fujitsu Limited Method and apparatus for controlling using checksums execution of object programs
US5629949A (en) * 1993-09-21 1997-05-13 Cirrus Logic, Inc. Error correction verification method and apparatus using CRC check remainders
US5844923A (en) * 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
CN1300395A (zh) * 1999-04-22 2001-06-20 松下电器产业株式会社 处理器

Also Published As

Publication number Publication date
US20030097628A1 (en) 2003-05-22
JP5290370B2 (ja) 2013-09-18
JP2005505827A (ja) 2005-02-24
CN1529853A (zh) 2004-09-15
US7577055B2 (en) 2009-08-18
WO2003032159A3 (en) 2004-04-01
JP4856848B2 (ja) 2012-01-18
US7907460B2 (en) 2011-03-15
WO2003032159A2 (en) 2003-04-17
JP2012027927A (ja) 2012-02-09
US20110138240A1 (en) 2011-06-09
JP2013149290A (ja) 2013-08-01
US8130574B2 (en) 2012-03-06
US20080052569A1 (en) 2008-02-28
US7310757B2 (en) 2007-12-18
JP5696175B2 (ja) 2015-04-08
EP1438662A2 (en) 2004-07-21
US20090282306A1 (en) 2009-11-12

Similar Documents

Publication Publication Date Title
CN100489797C (zh) 可编程逻辑设备上的错误检测
US7143329B1 (en) FPGA configuration memory with built-in error correction mechanism
Carmichael et al. Correcting single-event upsets through Virtex partial configuration
Campobello et al. Parallel CRC realization
US9823960B2 (en) Apparatus and method for parallel CRC units for variably-sized data frames
Fisher et al. Design of the PSC: A programmable systolic chip
US20130139039A1 (en) Error-Correcting Code and Process for Fast Read-Error Correction
TWI518697B (zh) 記憶體頁緩衝器
Braun et al. Parallel CRC computation in FPGAs
CN101425875B (zh) 一种解码器
CN109408839B (zh) 一种通过局部冗余减少敏感配置比特的抗辐射容错fpga电路设计方法
CN100414510C (zh) 实时差错检测与纠错芯片
CN114884517A (zh) 一种crc硬件计算系统及芯片
Arifin et al. Design and implementation of high performance parallel crc architecture for advanced data communication
JP4436830B2 (ja) 構成可能なマルチステップ線形フィードバックシフトレジスタ
EP0663119A1 (en) Ram based architecture for ecc circuits
CN102811066A (zh) 伴随式计算装置及解码器
US20180131388A1 (en) Method of arrangement of an algorithm in cyclic redundancy check
CN108242973A (zh) 一种数据纠错方法及装置
Cerny et al. Functional description of connector-switch-attenuator networks
Sait et al. VLSI layout generation of a programmable CRC chip
Kent et al. Using instance-specific circuits to compute autocorrelation coefficients
Rodzin Design of test generator for embedded self-testing
SU711578A2 (ru) Устройство дл вычислени экспоненциальной функции
CN105049062B (zh) 钱式搜索装置、存储装置以及钱式搜索方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090520

Termination date: 20181010