CN102405598B - 可编程crc单元 - Google Patents
可编程crc单元 Download PDFInfo
- Publication number
- CN102405598B CN102405598B CN201080017255.9A CN201080017255A CN102405598B CN 102405598 B CN102405598 B CN 102405598B CN 201080017255 A CN201080017255 A CN 201080017255A CN 102405598 B CN102405598 B CN 102405598B
- Authority
- CN
- China
- Prior art keywords
- crc
- cyclic
- shift
- redundancy
- data
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6569—Implementation on processors, e.g. DSPs, or software implementations
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
一种循环冗余校验(CRC)单元具有:可编程CRC引擎;可变缓冲器存储器,其可操作以存储k个字,其中每一字包括n个位,其中k和n可变化;以及移位逻辑,其可操作以使数据从所述FIFO存储器移位到所述可编程CRC引擎中。
Description
相关申请案的交叉参考
本申请案主张2009年6月9日申请的标题为“32位可编程CRC引擎(32 BITPROGRAMMABLE CRC ENGINE)”的第61/185,257号美国临时申请案的权益,所述临时申请案的全文并入本文中。
技术领域
本发明涉及具有循环冗余校验(CRC)计算能力的集成电路装置,且更明确地说,涉及提供灵活的可编程性的集成电路装置。
背景技术
举例来说,CRC装置可用在微控制器中,以检验数据发射或数据存储的内容。CRC协议是此项技术中众所周知的。在CRC操作中,将数据移位到CRC引擎中以执行相应的校验,从而检验是否已正确地存储/发射数据。为此,明确地说,某些CRC协议使用固定移位方向。然而,某些发射方法可使用不同的存储和发射数据的方法。举例来说,归根于通用异步接收器/发射器(UART)技术的一般协议通常首先发射最低有效位(LSb),而归根于串行外围接口(SPI)技术的协议首先发射最高有效位(MSb)。因此,在可将此数据馈送到CRC引擎中之前,通常需要对此数据进行处理。
发明内容
需要一种较灵活的CRC引擎。根据一实施例,一种循环冗余校验(CRC)单元可包括:可编程CRC引擎;可变缓冲器存储器,其可操作以存储k个字,其中每一字包括n个位,其中k和n可变化;以及移位逻辑,其可操作以使数据从所述FIFO存储器移位到所述可编程CRC引擎中。
根据另一实施例,可变缓冲器存储器配置可为先入先出(FIFO)存储器。根据另一实施例,视控制信号而定,移位逻辑可执行左移位或右移位运算。根据另一实施例,所述移位逻辑可包括可控移位缓冲器,以及与移位寄存器耦合以用于设定移位方向的控制寄存器。根据另一实施例,所述控制寄存器可包括指示所述移位方向的单个位。根据另一实施例,所述移位逻辑可进一步包括多路复用器,所述多路复用器具有分别与所述移位缓冲器的左和右输出耦合的第一和第二输入且由所述控制寄存器控制。根据另一实施例,所述可变FIFO存储器中的每一n位字包括m个字节,其中m可从1变为Q,Q为大于1的整数,且根据又一实施例,可设定为Q=4。根据另一实施例,FIFO存储器可包括计数器,其内容指示可用的n个字节的数目。根据另一实施例,当所述计数器达到预定值时,所述计数器可产生中断信号。根据另一实施例,所述移位缓冲器可与所述FIFO存储器并联耦合。根据另一实施例,k可等于四,且n可等于32。
根据另一实施例,一种用于执行循环冗余校验(CRC)的方法可包括以下步骤:将数据存储在可变缓冲器存储器中,所述可变缓冲器存储器经配置为k个字深和n个位宽的存储元件,其中k和m可变化;以及使所述数据从所述缓冲器存储器移位到可编程CRC引擎中。
根据所述方法的另一实施例,可执行所述移位步骤,使得视控制信号而定,将所述移位执行为左移位或右移位运算。根据所述方法的另一实施例,可将所述可变缓冲器存储器配置为先入先出(FIFO)存储器。根据所述方法的另一实施例,所述方法可进一步包括以下步骤:将数据从所述缓冲器存储器加载到可控移位缓冲器中,以及控制所述移位缓冲器以将所述所加载的数据左移位或右移位到所述CRC引擎中。根据所述方法的另一实施例,所述方法可进一步包括对控制寄存器位进行编程以向所述移位缓冲器指示移位方向的步骤。根据所述方法的另一实施例,所述方法可进一步包括多路复用所述移位缓冲器的左和右输出的步骤。根据所述方法的另一实施例,所述可变FIFO存储器中的每一n位字可包括m个字节,其中m可从1变为Q,Q为大于1的整数,且根据另一实施例,可将Q设定为Q=4。根据所述方法的另一实施例,所述方法可进一步包括通过计数器对存储在所述FIFO存储器中的数据元素的数目进行计数的步骤。根据所述方法的另一实施例,所述方法可进一步包括在所述计数器达到预定值时产生中断信号的步骤。根据所述方法的另一实施例,k可等于四,且n可等于32。
根据又一实施例,一种循环冗余校验(CRC)单元可包括:可编程CRC引擎;可变先入先出(FIFO)存储器,其经配置为k个字深且n个位宽的存储元件,其中k和n可变化;以及与所述FIFO存储器并联耦合的可控移位缓冲器、与所述移位寄存器耦合以用于设定移位方向的控制寄存器,以及具有与所述CRC引擎耦合的输出和分别与所述移位缓冲器的左和右输出耦合的第一和第二输入且由所述控制寄存器控制的多路复用器。
附图说明
通过参考以下结合附图而进行的描述,可获得对本发明及其优点的更完整理解,其中:
图1是根据一实施例的可编程CRC单元的框图;
图2是图1中使用的示范性CRC引擎的框图;
图3和图4展示使用图1所示的实施例的各种步骤;
图5展示根据一实施例的控制寄存器;
图6展示示范性CRC计算;以及
图7展示一般CRC引擎的元件。
虽然已参考本发明的实例实施例描绘、描述且界定了本发明的实施例,但此些参考并不暗示对本发明的限制,且将推断不出此限制。如相关领域中且受益于本发明的技术人员将想到,所揭示的标的物的形式和功能能够具有相当大的修改、更改和等效物。本发明的所描绘和描述的实施例只是实例,且并不是本发明的范围的详述。
具体实施方式
CRC是各种数字通信系统中所使用的最通用的错误校验算法之一。CRC代表循环冗余码校验或简称循环冗余校验。大多数的流行通信协议(如CAN、USB、IrDASDLC、HDLC和以太网)使用CRC来进行错误检测。通常,对于数字通信系统中的错误检测,对需要发射的消息计算校验和。接着将所计算的校验和附加在消息流的尾部,并进行发射。在接收端处,计算消息流的校验和,并将其与所发射的校验和进行比较。如果两者相等,那么将所接收到的消息视为无错误。
CRC以类似方式工作,但其进行错误检测的能力比常规形式大。使用不同的CRC多项式来进行错误检测。CRC的大小取决于所选的多项式。可使用专用硬件模块来实施CRC。所有CRC计算是在GF(2)(用于2个元素的伽洛瓦字段)中进行;“字段”是在其中执行加法、减法、乘法和除法的事物,且“2个元素”指定仅具有两个值(“1”或“0”)的字段。这类似于二进制字段或模数2。模数2算术使用不具有进位的二进制加法或减法,其等效于XOR运算。乘法和除法分别类似于二进制乘法和除法。将待发射的消息视为多项式,且使其除以称为“生成器多项式”的不可约分(素数)多项式。生成器多项式的次数应小于消息多项式的次数。对于“n+1”位生成器多项式,余数将不大于“n”个位。数据的CRC校验和为除法之后的余数的二进制等效物。
如果考虑“x”个位的“M”的消息和“n+1”个位的生成器多项式“G”,那么使所述消息除以生成器将得到“n”个位的余数“R”。因此,M=GQ+R;其中Q是在M除以G时获得的商。
M=G.Q+R
M+R=GQ=M-R (1)
(由于加法和减法在模数2算术中是等效的。)现在,M+R=GQ,其中将校验和嵌入到消息(M+R)中。此处,通过使校验和与消息相加,消息的最后“n”个位被破坏。将校验和附加到消息来代替将校验和嵌入消息中,从而避免消息位的破坏。当将余数附加到消息以供发射时,其等效于使消息位移位所述数目个余数位。最初,消息流附加有零。在校验和计算之后,用所计算的实际校验和来取代零,其为除法的余数的二进制等效物。所附加的零的数目取决于生成器多项式的次数。
将“n”个零位附加到消息多项式等效于使所述多项式乘以2n。等式2阐释这种情况:
M=G·Q+R
M 2n=QI·G+RI
M 2n+RI=Q1·G (2)
从等式2可注意到,G是(M 2n+R′)的确切倍数。在接收端处,如果G是消息的确切倍数,那么消息不被破坏。
在二进制字段中,数据呈多项式的形式(即,如果数据字段为“11101”,那么其可通过写为X4+X3+X2+X0而以多项式形式表示)。
通常,生成器多项式是不可约分的,且最高有效位和最低有效位始终为“1”。下文在表1中展示一些生成器多项式及其解释。
表1
类型 | 多项式 | 二进制 | Hex |
CRC.12: | X12+X11+X3+X2+X+1 | 1100000001111 | :180Fh |
CRC.16: | X16+X15+X2+1 | 11000000000000101 | :11021h |
CRC.CCITT: | X16+X12+X5+1 | 10001000000100001 | :18005h |
如图6中的示范性计算中所示,以下假定消息多项式为“1100100111”,且生成器多项式为“10101”(n+1=5)。出于CRC计算的目的,将四(n)个零附加到消息多项式,且使所述消息多项式除以生成器多项式。
从图6可推断,在每个步骤中,使结果的最上部的位移出。这些移出的位形成多项式除法的商。多项式除法的余数为消息的CRC。对于给定的除法实例,可推断:
-如果消息多项式的最上部位为“1”,那么执行与生成器多项式的XOR。接着,使此消息多项式移位1个位。
-如果最上部位为“0”,那么对消息多项式执行1个位的移位运算(因为与零的XOR产生同一多项式)。
通过以上推断,可将CRC计算的算法定义为:
1.如果最高有效位为“1”,那么使消息位移位1个位置,且执行XOR运算。
2.如果最高有效位为“0”,那么使消息位移位1个位置。
3.如果仍有更多的位,那么从步骤1开始重复。
可注意,首先执行移位运算,且接着执行XOR运算。当生成器多项式为“n+1”个位时,最高有效位始终为“1”。由于最高有效位始终为“1”,因此可使其冗余,或无需指示。因此,实际上可使用“n”个位而不是“n+1”个位来表示生成器多项式。如果假定“10101”为生成器多项式,那么由于MSb为冗余位,因此实际位长度为4个位而不是5个位。当移位寄存器MSb为“1”时,应执行实际的XOR操作;由于不考虑第5个位,所以观察第4个位,且当第4个位为逻辑“1”时,使其再移位1个位,且执行XOR运算。因此,在XOR运算之前首先执行移位运算。
上述算法可用于硬件和软件中的CRC计算。在硬件中,使用线性反馈移位寄存器(LFSR)来进行CRC计算。LFSR构成例如图7中所示的D触发器和XOR门,移位寄存器的数目等于所选的生成器多项式的次数。XOR门形成来自LFSR寄存器的反馈以充当用于所述多项式的分接头控制器。在整个消息位已移出之后,已移出的位形成商,且移位寄存器中的剩余位形成余数。
CRC是通过在模数2算术中使用移位寄存器而实现的简单且稳健的运算。这是因为模数2计算仅通过对数字进行XOR来实现;因此,CRC非常流行。在这种类型的CRC运算中,可获得余数和商两者。由于不需要CRC计算中的商,因此其可被忽略,且仅从LFSR寄存器取得余数。在接收端处,将消息流加校验和视为用于CRC计算的消息。如果结果为零,那么接收到的消息(连同CRC)无错误,否则消息流被破环。
根据各种实施例,可将可编程CRC单元集成到微控制器中,且实现灵活的用途。可编程CRC单元可与直接存储器存取(DMA)控制器或多种串行发射接口组合。根据各种增强,在缓冲器存储器(例如可变FIFO存储器)与CRC引擎之间提供移位逻辑。移位逻辑通过不同的移位运算向CRC引擎提供来自缓冲器存储器的数据。视控制信号而定,执行左移位或右移位运算。因此,CRC引擎首先使用MSb或LSb来接收数据。此外,缓冲器存储器可经布置而以不同方式组织来容纳所存储的数据。在特定实施例中,缓冲器存储器(例如可变FIFO)可从以n字节方式组织切换,其中n可表示大于1的任何整数。举例来说,缓冲器存储器可容纳四个32位双字、八个16位字或16个字节。
图1展示可编程CRC单元100的实施例。寄存器110和120各自为16位寄存器,且含有如通过数据发射接收的高字和低字。此寄存器与可变缓冲器存储器130耦合。缓冲器存储器130可实现为可变FIFO存储器。然而,缓冲器存储器130的其它实施例是可能的。缓冲器存储器130可(例如)包括四个32位数据条目。术语“可变”将被理解为缓冲器存储器130可处置不同大小的数据字。其可用于四个32位字、八个16位字或十六个8位字。
根据一个实施例,缓冲器存储器为可变FIFO 130,其与移位逻辑耦合,以便以串行方式将数据馈送到CRC引擎170中。举例来说,移位逻辑可包括:移位缓冲器或寄存器140,其具有第一和第二移位输出;多路复用器160以及控制寄存器175。可例如借助于CRC控制寄存器175所提供的相应信号来控制移位缓冲器140左移位或右移位。控制寄存器175可控制CRC引擎170的其它功能。移位缓冲器140包括左和右输出,所述左和右输出与多路复用器160的第一和第二输入耦合,以实现左移位和右移位功能。多路复用器160的输出与CRC引擎170的串行数据输入耦合,CRC引擎170还与控制寄存器180、190耦合。其它移位逻辑可用于执行类似功能。控制寄存器180和190各自为分别存储高字和低字中的数据宽度的16位寄存器。CRC移位引擎170可产生馈送到多路复用器150的完整事件信号。多路复用器150还从FIFO 130接收FIFO空事件信号,以指示需要将新的数据存储到FIFO 130中。此外,提供移位时钟信号,其控制移位缓冲器140和CRC引擎170中的移位。
根据一实施例,循环冗余校验(CRC)模块100可(例如)集成在微控制器中所使用的DMA控制器100内或集成在微控制器中以作为单独外围单元。举例来说,CRC单元100可耦合在DMA引擎与数据发射总线之间以用于执行循环冗余校验,或可与任何类型的串行发射装置耦合。CRC模块可借助于控制寄存器来编程。因此,CPU可控制CRC单元100,且根据如下文将更详细阐释的CRC规范来对其进行编程。可经由例如可变FIFO存储器130等可变缓冲器存储器将数据间接地路由到CRC引擎170中。
如下文更详细地阐释,CRC引擎170可具有(例如)N到16个位的可编程CRC分接头,用户可实施通信协议所需的任何特定CRC算法。为此,CRC生成器可利用用于对CRC算法进行编程的TAP寄存器,其为可含有CRC值的初始预载和CRC运算之后的最终结果的读取/写入CRC寄存器。
图2展示可(例如)在微控制器内使用的CRC引擎170的实施例。TAP寄存器由通过时钟信号Clk和保持信号Hold控制的移位寄存器单元230a、240a、250a、…、270形成。图2中所示的实施例描绘32位CRC生成器的某些区段。然而,可容易地实现具有8个位或16个位或任何其它大小的其它配置。单元230a的输入与XOR门220的输出耦合,XOR门220接收串行数据输入信号225和来自多路复用器210的反馈输出信号。单元230a的输出与多路复用器210的第一输入、选择多路复用器X1的第一输入、XOR门230b的第一输入以及CRC读取总线280耦合。XOR门230b的第二输入与来自多路复用器210的反馈输出信号耦合,且XOR门230b的输出与选择多路复用器230c的第二输入耦合。选择多路复用器230c的输出与下一移位单元240a的输入且与CRC写入总线290耦合。下一移位单元240a…250a具备相应的XOR门240b…250b和选择多路复用器240c…260c,且以与单元230a相同的方式连接到多路复用器210的相应输入以及总线280和290。最后一个单元270的输出与多路复用器210的最后输入以及CRC读取和写入总线280和290耦合。多路复用器210由多项式长度寄存器215PLEN控制。多路复用器230c…260c由多项式寄存器235POLY控制。CRC读取总线280可与含有结果的寄存器285耦合,且CRC写入总线290可耦合到含有预载值的寄存器295。
多路复用器210用于通过寄存器PLEN来选择CRC生成器的反馈点和有效长度。寄存器215控制CRC生成器200的长度,且是用户可选择的。由多路复用器210的输出提供的反馈数据借助于XOR门230b…260c而与当前在CRC移位寄存器230a、240a、250a、270中的数据进行XOR。选择多路复用器230c、240c、250c和260c用于选择移位寄存器230a、240a、250a、270中的XOR数据或先前数据是否在下一时钟上移位。多项式寄存器235用于配置移位通过哪些位,且哪些位取得与含有多路复用器230c、240c、250c和260c的X1输入的CRC生成器中的先前数据进行XOR运算的反馈数据。CRC写入总线290可用于借助于预载寄存器295来预载CRC触发器230a、240a、250a、270。CRC读取总线280可用于读取CRC生成器的值。数据225由多路复用器160的输出提供,且通过XOR门220而被移位到CRC中。因此,图2中所示的布置基于反馈移位寄存器(LFSR)型链中的分接头/XOR位置而实现具有各种配置的线性LFSR。根据如图1中所示的一个实施例,当CRC运算完成时,可通过多路复用器150产生中断信号,以向中央处理单元指示CRC已完成。另外,可产生多种其它中断信号,例如FIFO 130可在所有内容已被传送到移位缓冲器140中时或在仅留下单个条目时产生此信号。
32位架构和独立的多项式长度/数据宽度提供CRC计算的更多强度和灵活性,而可编程移位方向避免必须重新格式化软件数据。CRC引擎可为如图2中所示的具有可通过多路复用器设定来配置的前馈和反馈点的标准串行移位CRC引擎。然而,可使用任何其它类型的CRC引擎。可使用32个位来对生成器多项式进行编程。将“1”写入到触发器230a、240a、250a、270中使XOR门220、230b、240b、250b与多项式的那个元素相关联。多项式长度寄存器215用信号通知多项式的长度,且切换多路复用器210以指定反馈所来自的分接头。数据宽度寄存器180、190配置数据字的宽度,且影响在此之后FIFO 130前进到下一数据字的时钟的数目。可通过经由CRC读取总线280读取保持触发器230a、240a、250a、270来获得CRC计算的结果,并将其存储在寄存器285中。
数据宽度
可使用(例如)图5中所示的数据宽度配置位来独立于多项式长度而配置数据宽度。不存在对数据宽度与多项式长度之间的关系的约束。如果数据比多项式长度宽,那么额外时钟将使较宽的数据移位通过多项式,且反之亦然。
数据FIFO
如上文所提到,FIFO 130可在物理上实施为具有字节写入能力的4深、32位宽的存储元件。与FIFO 130相关联的逻辑可含有5位计数器135,5位计数器135反映有多少个新的字留在FIFO 130中。CRC字的有效长度可由设定数据宽度的最终用户确定。尽管CRC字的长度可在1与32之间的任何地方,但所述逻辑可仅标记字节粒度(换句话说,8个位、16个位、32个位等)下的有效写入。因此,随之的,如果数据宽度为7或以下,那么FIFO逻辑上看起来为16个字节深,且计数器135的最大值为16。如果数据宽度介于8与15之间,那么FIFO看起来为8个字深,且有效字计数器135的最大值为8。如果数据宽度为16或更大,那么FIFO看起来为4个字深,且计数器135的最大值为4。计数器135与逻辑耦合,以产生中断信号“FIFO空事件”。当计数器135达到零时或者当其达到1或另一预定低计数值时产生此信号,以向CPU指示FIFO需要重填。
数据移位方向
为了适应各种CRC协议,可在CRC控制寄存器175中使用移位方向位(LENDIAN)来配置数据移位方向。当此位LENDIAN=0时,通过多路复用器160向CRC引擎170呈现数据字,其首先开始于最高有效位(大序法)。这也称为反映输入数据。当LENDIAN=1时,通过多路复用器160向CRC引擎170呈现数据字,其首先开始于最低有效位(小序法)。为此,移位缓冲器140包括与多路复用器160的第一和第二输入耦合的左和右输出。多路复用器160可由控制寄存器175的移位方向位LENDIAN控制。
图3展示其中由移位寄存器140的第一或左输出馈送CRC引擎170的实例。首先,下一可用数据并行地从FIFO 130传送到移位寄存器140中。接着如CRC计算所要求,使此数据左移位通过移位寄存器140的左输出,进入CRC引擎170中。图4展示使用移位寄存器140的右输出的同一程序。因此,根据各种实施例,在将相应数据存储在FIFO130中之前,用户不需要修改所述数据。取决于所接收到的数据的结构,用户仅需要对移位缓冲器140的移位方向进行编程。
图5展示配置为16位宽的另一CRC控制寄存器的实例。在此控制寄存器中,数据宽度和多项式长度各自存储为5个位。如可看到,六个位未用,且根据另一实施例,这些未用位中的一者可用于表示如上文所阐释的LENDIAN位。然而,可使用单独的寄存器来用于数据宽度和多项式长度以及移位方向位LENDIAN。
虽然已参考本发明的实例实施例描绘、描述且界定了本发明的实施例,但此些参考并不暗示对本发明的限制,且将推断不出此限制。如相关领域中且受益于本发明的技术人员将想到,所揭示的标的物的形式和功能能够具有相当大的修改、更改和等效物。所描绘和描述的本发明的实施例仅为实例,且不是本发明的范围的详述。
Claims (20)
1.一种循环冗余校验单元,其包括:
包括线性反馈移位寄存器的可编程循环冗余校验引擎;
可变缓冲器存储器,其可操作以存储k个字,其中每一字包括n个位,其中k和n可变化;以及
移位逻辑,其可操作以使数据从所述可变缓冲器存储器移位到所述可编程循环冗余校验引擎的所述线性反馈移位寄存器中,其中所述移位逻辑包括移位缓冲器,以及与所述移位缓冲器耦合以用于设定移位方向的控制寄存器,其中视控制信号而定,所述移位逻辑执行左移位或右移位运算。
2.根据权利要求1所述的循环冗余校验单元,其中所述可变缓冲器存储器为先入先出存储器。
3.根据权利要求1所述的循环冗余校验单元,其中所述控制寄存器包括指示所述移位方向的单个位。
4.根据权利要求1所述的循环冗余校验单元,进一步包括多路复用器,所述多路复用器具有分别与所述移位缓冲器的左和右输出耦合的第一和第二输入且由所述控制寄存器控制。
5.根据权利要求2所述的循环冗余校验单元,其中所述先入先出存储器中的每一n位字包括m个字节,其中m可从1变为Q,Q为大于1的整数。
6.根据权利要求5所述的循环冗余校验单元,其中Q=4。
7.根据权利要求5所述的循环冗余校验单元,其中所述先入先出存储器包括计数器,所述计数器的内容指示存储在所述先入先出存储器中的数据元素的数目。
8.根据权利要求7所述的循环冗余校验单元,其中当所述计数器达到预定值时,所述计数器产生中断信号。
9.根据权利要求1所述的循环冗余校验单元,其中所述移位缓冲器与所述可变缓冲器存储器并联耦合。
10.根据权利要求1所述的循环冗余校验单元,其中k等于四,且n等于32。
11.一种用于执行循环冗余校验的方法,其包括:
将数据存储在可变缓冲器存储器中,所述可变缓冲器存储器经配置为k个字深且n个位宽的存储元件,其中k和n可变化;以及
将数据从所述可变缓冲器存储器加载到移位缓冲器中,
基于控制信号,使所述数据从所述移位缓冲器左移位或右移位到可编程循环冗余校验引擎的线性反馈移位寄存器中。
12.根据权利要求11所述的方法,其中将所述可变缓冲器存储器配置为先入先出存储器。
13.根据权利要求11所述的方法,其进一步包括对控制寄存器位进行编程以向所述移位缓冲器指示移位方向的步骤。
14.根据权利要求11所述的方法,其进一步包括多路复用所述移位缓冲器的左和右输出的步骤。
15.根据权利要求12所述的方法,其中所述先入先出存储器中的每一n位字包括m个字节,其中m可从1变为Q,Q为大于1的整数。
16.根据权利要求15所述的方法,其中Q=4。
17.根据权利要求15所述的方法,其进一步包括通过计数器对存储在所述先入先出存储器中的数据元素的数目进行计数的步骤。
18.根据权利要求17所述的方法,其进一步包括在所述计数器达到预定值时产生中断信号的步骤。
19.根据权利要求11所述的方法,其中k等于四,且n等于32。
20.一种循环冗余校验单元,其包括:
可编程循环冗余校验引擎;
先入先出存储器,其经配置为k个字深且n个位宽的存储元件,其中k和n可变化;以及
与所述先入先出存储器并联耦合的移位缓冲器、与所述移位缓冲器耦合以用于设定移位方向的控制寄存器,所述控制寄存器提供控制信号来控制数据从所述移位缓冲器左移位或右移位到所述可编程循环冗余校验引擎中,以及具有与所述循环冗余校验引擎耦合的输出和分别与所述移位缓冲器的左和右输出耦合的第一和第二输入且由所述控制寄存器控制的多路复用器。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18525709P | 2009-06-09 | 2009-06-09 | |
US61/185,257 | 2009-06-09 | ||
US12/776,476 | 2010-05-10 | ||
US12/776,476 US8543888B2 (en) | 2009-06-09 | 2010-05-10 | Programmable cyclic redundancy check CRC unit |
PCT/US2010/037913 WO2010144539A1 (en) | 2009-06-09 | 2010-06-09 | Programmable crc unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102405598A CN102405598A (zh) | 2012-04-04 |
CN102405598B true CN102405598B (zh) | 2015-05-20 |
Family
ID=43301638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080017255.9A Active CN102405598B (zh) | 2009-06-09 | 2010-06-09 | 可编程crc单元 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8543888B2 (zh) |
EP (1) | EP2441174A1 (zh) |
KR (1) | KR101721449B1 (zh) |
CN (1) | CN102405598B (zh) |
TW (1) | TWI464578B (zh) |
WO (1) | WO2010144539A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010134197A1 (ja) * | 2009-05-22 | 2010-11-25 | 株式会社 東芝 | 乱数生成回路およびこれを用いた暗号回路 |
US8932510B2 (en) | 2009-08-28 | 2015-01-13 | Corning Incorporated | Methods for laser cutting glass substrates |
US8946590B2 (en) | 2009-11-30 | 2015-02-03 | Corning Incorporated | Methods for laser scribing and separating glass substrates |
CN101795175B (zh) * | 2010-02-23 | 2014-03-19 | 中兴通讯股份有限公司 | 数据的校验处理方法及装置 |
US9938180B2 (en) | 2012-06-05 | 2018-04-10 | Corning Incorporated | Methods of cutting glass using a laser |
US9610653B2 (en) | 2012-09-21 | 2017-04-04 | Electro Scientific Industries, Inc. | Method and apparatus for separation of workpieces and articles produced thereby |
US9639416B1 (en) * | 2012-11-18 | 2017-05-02 | Altera Corporation | CRC circuits with extended cycles |
US9524143B2 (en) * | 2014-06-26 | 2016-12-20 | Arm Limited | Apparatus and method for efficient division performance |
US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
US10073635B2 (en) * | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US11238334B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method of input alignment for efficient vector operations in an artificial neural network |
US11615297B2 (en) | 2017-04-04 | 2023-03-28 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network compiler |
US10812103B1 (en) * | 2018-02-23 | 2020-10-20 | Xilinx, Inc. | Cyclic redundancy check engine and method therefor |
KR102609758B1 (ko) | 2018-03-27 | 2023-12-04 | 삼성전자주식회사 | 데이터 통신 오류를 검출하는 순환 중복 검사 유닛 데이터 통신 장치 및 검출 방법 |
US11018694B2 (en) * | 2019-06-10 | 2021-05-25 | Hewlett Packard Enterprise Development Lp | Fast cyclic redundancy check code generation |
US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights safety mechanism in an artificial neural network processor |
US11237894B1 (en) | 2020-09-29 | 2022-02-01 | Hailo Technologies Ltd. | Layer control unit instruction addressing safety mechanism in an artificial neural network processor |
US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results safety mechanism in an artificial neural network processor |
US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
US11221929B1 (en) * | 2020-09-29 | 2022-01-11 | Hailo Technologies Ltd. | Data stream fault detection mechanism in an artificial neural network processor |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748652A (en) * | 1995-06-29 | 1998-05-05 | Hyundai Electronics Ind. Co., Ltd. | Apparatus for detecting and correcting cyclic redundancy check errors |
CN1679267A (zh) * | 2002-08-23 | 2005-10-05 | 因芬尼昂技术股份公司 | 接收移动无线信号时的译码及循环冗余校验的并行处理 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014276A (en) * | 1989-02-06 | 1991-05-07 | Scientific Atlanta, Inc. | Convolutional encoder and sequential decoder with parallel architecture and block coding properties |
US5381423A (en) * | 1989-07-25 | 1995-01-10 | Italtel Societa Italiana Telecomunicazioni S.P.A. | Process and device for the decoding of a shortened, cyclic binary code using error correction |
US5592404A (en) * | 1993-11-04 | 1997-01-07 | Cirrus Logic, Inc. | Versatile error correction system |
JP3249405B2 (ja) * | 1996-09-30 | 2002-01-21 | 株式会社東芝 | 誤り訂正回路および誤り訂正方法 |
US6192498B1 (en) * | 1997-10-01 | 2001-02-20 | Globepan, Inc. | System and method for generating error checking data in a communications system |
US6052815A (en) * | 1997-11-14 | 2000-04-18 | Cirrus Logic, Inc. | ECC system for generating a CRC syndrome over randomized data in a computer storage device |
US6427219B1 (en) * | 1998-06-24 | 2002-07-30 | Conexant Systems, Inc. | Method and apparatus for detecting and correcting errors using cyclic redundancy check |
US6751771B2 (en) * | 2000-02-11 | 2004-06-15 | Mediatek, Inc. | Method and apparatus for error processing in optical disk memories |
US6836869B1 (en) * | 2001-02-02 | 2004-12-28 | Cradle Technologies, Inc. | Combined cyclic redundancy check (CRC) and Reed-Solomon (RS) error checking unit |
US7216285B2 (en) * | 2001-11-09 | 2007-05-08 | Marvell International Ltd. | System and method for generating cyclic redundancy check |
KR100703307B1 (ko) * | 2002-08-06 | 2007-04-03 | 삼성전자주식회사 | 터보 복호화 장치 및 방법 |
WO2007034935A1 (en) * | 2005-09-21 | 2007-03-29 | Semiconductor Energy Laboratory Co., Ltd. | Cyclic redundancy check circuit and semiconductor device having the cyclic redundancy check circuit |
US7958436B2 (en) * | 2005-12-23 | 2011-06-07 | Intel Corporation | Performing a cyclic redundancy checksum operation responsive to a user-level instruction |
-
2010
- 2010-05-10 US US12/776,476 patent/US8543888B2/en active Active
- 2010-05-26 TW TW099116874A patent/TWI464578B/zh active
- 2010-06-09 KR KR1020117024142A patent/KR101721449B1/ko active IP Right Grant
- 2010-06-09 CN CN201080017255.9A patent/CN102405598B/zh active Active
- 2010-06-09 WO PCT/US2010/037913 patent/WO2010144539A1/en active Application Filing
- 2010-06-09 EP EP10726750A patent/EP2441174A1/en not_active Ceased
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748652A (en) * | 1995-06-29 | 1998-05-05 | Hyundai Electronics Ind. Co., Ltd. | Apparatus for detecting and correcting cyclic redundancy check errors |
CN1679267A (zh) * | 2002-08-23 | 2005-10-05 | 因芬尼昂技术股份公司 | 接收移动无线信号时的译码及循环冗余校验的并行处理 |
Also Published As
Publication number | Publication date |
---|---|
KR101721449B1 (ko) | 2017-03-30 |
TWI464578B (zh) | 2014-12-11 |
KR20120044922A (ko) | 2012-05-08 |
TW201104412A (en) | 2011-02-01 |
US20100313104A1 (en) | 2010-12-09 |
US8543888B2 (en) | 2013-09-24 |
WO2010144539A1 (en) | 2010-12-16 |
CN102405598A (zh) | 2012-04-04 |
EP2441174A1 (en) | 2012-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102405598B (zh) | 可编程crc单元 | |
US7191383B2 (en) | System and method for optimizing iterative circuit for cyclic redundancy check (CRC) calculation | |
US4450561A (en) | Method and device for generating check bits protecting a data word | |
EP0280013A1 (en) | Device for verifying proper operation of a checking code generator | |
KR20080040706A (ko) | 데이터 스트림에 주기적 덧붙임 검사(crc)를 수행하기위한 crc 생성 회로를 구성하는 방법 및 장치 | |
JPH09507118A (ja) | 巡回冗長検査方法および装置 | |
US9685979B2 (en) | Circuitry and method for generating cyclic redundancy check signatures | |
US7571370B2 (en) | Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data | |
JP2019110522A (ja) | バイト誤り位置信号の決定および使用 | |
US8775750B2 (en) | Interleaver with parallel address queue arbitration dependent on which queues are empty | |
US20060067365A1 (en) | Initialization seed to allow data padding for cyclic redundancy code calculation | |
US20140237013A1 (en) | Pseudo-random bit sequence generator | |
JP2000004169A (ja) | Crc演算方法及びcrc演算回路 | |
JPH03219725A (ja) | 誤り検査コード生成装置および伝送誤り検出装置 | |
US5671238A (en) | Method and circuitry for generating r-bit parallel CRC code for an l-bit data source | |
CN101351770B (zh) | 从装置和主装置、包含这些装置的系统和从装置操作方法 | |
CN113821370A (zh) | 一种用于数据传输错误校验的高速crc产生方法和装置 | |
US10033838B2 (en) | Method and apparatus for conversion between logical and physical frames for a serial link application | |
US7024618B2 (en) | Transmission error checking in result forwarding | |
US10033494B2 (en) | Arbiter for logical to physical frame conversion | |
CN114860651B (zh) | 一种基于分散聚合流水线实现mds阵列码的ip核系统 | |
JP6842098B1 (ja) | デバッグ装置及びデバッグ方法 | |
KR100505600B1 (ko) | 시어리얼 인터페이스 회로를 구비하는 프로그래머블 마이크로콘트롤러와 이의 데이터 기입 및 독출방법 | |
KR0164726B1 (ko) | 병렬 사이클릭 리던던시 체크 엔코더 | |
KR20020093262A (ko) | 비트 추출 장치 및 이를 이용하는 마이크로 프로세서 |
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 |