CN1449120A - 循环移位寄存器的改进的进位输出字计算 - Google Patents

循环移位寄存器的改进的进位输出字计算 Download PDF

Info

Publication number
CN1449120A
CN1449120A CN03107976A CN03107976A CN1449120A CN 1449120 A CN1449120 A CN 1449120A CN 03107976 A CN03107976 A CN 03107976A CN 03107976 A CN03107976 A CN 03107976A CN 1449120 A CN1449120 A CN 1449120A
Authority
CN
China
Prior art keywords
word
tap
carryout
fdbk
feedback
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.)
Pending
Application number
CN03107976A
Other languages
English (en)
Inventor
匡文韬
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1449120A publication Critical patent/CN1449120A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

一种从一个移位寄存器,例如一个CRC编码器,解码器或错误设陷电路计算进位输出字的方法,该移位寄存器在由一个生成程序多项式确定的位置处具有多个反馈抽头,其中长度K的进位输出字由下列公式计算:carryout_word=select_word.top_word_matrix carryout_word是1xk行矢量,top_word_matrix是从该移位寄存器的顶部的K位计算的,而select.word是从该生成程序多项式确定的一个1xk行矢量。

Description

循环移位寄存器的改进的进位输出字计算
技术领域
本发明涉及对循环移位寄存器的进位输出字计算,例如CRC编码器,解码器和错误设陷电路。
背景技术
图1(a),1(b)和1(c)表示CRC编码器,解码器和错误设陷电路的例子。反馈抽头的位置是由相应于该代码的生成程序多项式(generator polynomial)确定的。
这样,图1表示具有生成多项式的CRC编解码器
G(X)=X3+X+1
图1(a)表示CRC编码器,而图1(b)表示解码器。在这些电路的一般操作中,移位寄存器的内容(对编码器称为奇偶位,而对解码器称为校正子(syndrome))是按逐位方式移位的。
对于校正子计算已提出逐字节地而不是逐位地移位该移位寄存器的内容。其公开在Jack Crenshaw的文章中,该文章发表在“EmbededSystems Programming,January 1992,Pages 34-40”上。
在我们的未决(未公布)的专利申请0116157.9中“多位移位”被扩展到处理错误设备和错误检测。此外,建议这些处理以逐字方式而不以逐字节方式执行。
该逐字CRC计算包括两个主要步骤,反馈字计算和寄存器内容更新。假定抽头数是L而字长度是K。该反馈字包括在电路左端丢失的第一个K位(见图1)。该反馈字可使用下列等式递归地计算:
fdbk_wordn=fdbk_wordn-1(fdbk_wordn-1>>tap1)(fdbk_wordn-1>>tap2)……
            (fdbk_wordn-1>>tapL)                            [1]
n=1,2,3……N取一个解码器例子:
  fdbk_word0=current_syndrome_word,
在上述内容中,syndrome_word是该移位寄存器的现存内容,而tapx可确定为相应抽头的阶和该生成程序多项式的最高阶之间的差。
例如,给定一个生成程序多项式,G(X)=X6+X5+X3+X2+X1+1,则抽头位置tap0-6被确定为:
Tap0=0(相应X6),Tap1=1(相应X5)
Tap2=3(相应X3),Tap3=4(相应X2)
Tap4=5(相应X1),Tap5=6(相应X0)递归数(N)可使用下列等式确定:
N=(K-1)/tap1                                                [2]
在取得该反馈字之后,该校正子字可使用下列公式更新:
new_sydrome=next_word[fdbk_word<<(K-tap1)][fdbk_word<<(K-tap2)]……
             [fdbk_word<<(K-tapL)]                         [3]
如下列计算将指出的那样,如果CRC编解码器具有大量反馈抽头,则反馈字的计算可能是费时的而且复杂,并且还占去不少的处理电能。这样,只要这种处理有可能进行得比较快则可能是有益的。
发明内容
本发明提供一种计算来自如权利要求1中所描述的一个循环移位寄存器的长度K的一个进位输出字的方法。表示“长度K的进位输出字”意指从该移位寄存器输出的下一个K位。对于一个编码器或错误设陷电路的情况,该进位输出字将是用来更新该移位寄存器内容的反馈字。对于一个编码器的情况,输入二进制序列的下一个K位是加到该进位输出字的模2以形成一个反馈字(见权利要求4)。
事实上,定义“编码器”和“解码器”是有些任意的,因为它能用实例说明该两个移位寄存器在数学上是等效的,参见下列文章:Lin/Costello“Error Control coding:Fundamentals andApplication”Prentice Hall 1983,Pages100 and 101,figs 4.6and 4.7。
由于Select_word仅依赖于生成程序多项式,所以可以单独地计算(例如脱机)和储存它,和表示出有效的节省处理电能并因此节省时间。另一方面该top_word_matrix需要按照输入的二进制数据进行计算。
在从属权利要求中描述本发明的优选特征。
附图说明
现在将仅借助例子并参照附图描述本发明的一个实施例,其中:
图1(a)表示具有生成程序多项式的一个典型的CRC(循环冗余校验)编码器,该生成程序多项式为
G(X)=X3+X+1;
图1(b)表示相应于图1(a)的编码器的一个CRC解码器;
图1(c)表示相应于图1(b)的一个错误设陷电路;以及
图2借助后台表示逐位CRC计算的一个例子。
具体实施方式例1:
该例子用实例说明参照图2的一个逐字节(K=8)CRC解码器的工作原理。如上指出,在一个解码器中进位输出字和反馈字是相同的,并由此在以下将称作为反馈字。
给定生成程序多项式,
  G(X)=X6+X5+X3+X2+X1+1和一个接收到的二进制序列:
10011101101101如图2中所示,6位校正子是由逐位地计算从而给出结果111101。也可使用逐字节方法计算同样的校正子:反馈字节计算
使用等式[2],计算的递归数为:
Recursion_num=(8-1)/1=7
   fdbk_word1=fdbk_word0(fdbk_word0>>1)(fdbk_word0>>3)(fdbk_wordn-1>>4)
                 (fdbk_word0>>5)(fdbk_word0>>6)
              =100111010100111000010011000010010000010000000010
              =11001111重复以上计算,接着得到下列结果:fdbk_word2=10111000,fdbk_word3=11111111,fdbk_word4=10010100,fdbk_word5=11000011,fdbk_word6=10110011,fdbk_word7=11110000fdbk_word=fdbk_word7=11110000置换该fdbk_word于等式[3]中,寄存器内容被更新为:new_register_content=next_word[fdbk_word<<7][fdbk_word<<5][fdbk_word<<4]
           [fdbk_word<<3][fdbk_word<<2]
        =101101000000000000000000000000001000000011000000
        =11110100
该最高有效6位表示新的校正子。
该结果准确匹配图2中所指示的结果。
如在上例中所表示的,如果一个CRC编解码器包括大量反馈抽头,则进位输出字的计算可能相当地复杂和费时。为加速反馈字的运行时间计算,发明了一种新技术,从而能用一个步骤而不是许多递归计算该进位输出字。
通常该进位输出字是顶部字的一个函数(见图2),而且可用下列等式描述它们的关系carryout_word=select_word.top_word_matrix    [4]这里,carryout_word表示一个1×K行矢量,包括K个反馈位。Top_word_matrix是一个K×K矩阵,其包括K个右移位的顶部字,表示如下:
Figure A0310797600081
top_word表示一个1×K行矢量。Select_word是可以使用下列等式脱机计算的一个常数1×16行矢量。
Figure A0310797600082
    m=1,2,3……M,
   select_word0=generator_polynomial_word      [7]M是要求来估算选择字的递归数,它是使用下列等式计算的:
       M=((K-1)/tap1)-1                        [8]generator_polynomial_word也是代表生成程序多项式的一个1×K行矢量。例如,如果K等于8和生成程序多项式G(X)=X6+X5+X3+X2+X1+1,则generator_polynomial_word被确定为[11011110]。例2:
在下列例子中,应用了以上表示的新技术,使得能够仅仅在一个步骤中完成一个逐字节校正子更新:
给定生成程序多项式,G(X)=X6+X5+X3+X2+X1+1(如例1),则generator_polynomial_word被确定为[11011110]。
使用等式[6],[7]和[8],相应于该特定的生成程序多项式的select_word如下计算:M=((8-1)/1)-1=6 select _ word 1 = [ 11011110 ] · 11011110 01101111 00110111 00011011 00001101 00000111 00000011 00000001 = [ 10100010 ] 接着,select_word2=[10100010],select_word3=[11101010],select_word4=[10001000],select_word5=[11100100],以及,select_word=select_word6=[11100100]。使用和例1中相同的接收的序列,10011101101101,使用等式[4]能够仅仅在一个步骤中计算该反馈字。 fdbk _ word = [ 11100100 ] · 10011101 01001110 00100111 00010011 00001001 00000100 00000010 00000001 = [ 11110000 ]
以上所示结果准确地匹配例1中计算的fdbk_word。
已出现一种新技术,允许用一个预计算的select_word仅仅在一个步骤中计算反馈字或更一般地计算一个进位输出字。
在逐字CRC编码解码器中,可能正常地使用一种递归操作计算该反馈字。如果该编解码器具有大量的反馈抽头,则这样的操作将变得复杂和费时。
考虑一个特定的CRC编解码器,它具有P个反馈抽头,而第一个抽头的位置是tap1,则对反馈字计算要求的逻辑操作(包括逐字移位和XOR)的数(N)估算如下 N = 2 × P × M = 2 × P × ( K - 1 ) tap 1
其中,P≤K,tap1≥1,N的最大值估算为 N max = 2 × K × ( K - 1 ) 1 = 2 K ( K - 1 ) - - - - [ 9 ] 这里,K是字长度。假定K恒大于1,得出:
Nmax≈2K2      [10]另一方面,如果使用新技术,用等式[4],则所要求的最大逻辑操作数N’max仅为:
     N′max=2K,      [11]对于最坏情况,该select_word只包含1s。
如上所述,新技术要求很少的逻辑操作,因此,通过在一个逐字CRC编解码器中使用该技术,能获得处理速度的显著的改善。

Claims (6)

1.一种从一个循环移位寄存器计算长度K的进位输出字的方法,该循环移位寄存器在由一个生成程序多项式确定的位置具有反馈抽头,其中该进位输出字是使用下列等式计算的
           carryout_word=select_word.top_word_matrix其中
Figure A0310797600021
其中该top_word包括一个1×K行矢量和其中:with m=1,2,3,…………M其中m=1,2,3,……M和M=(K-1/tap1)-1,其中tap1是在该生成程序多项式中最高和次高阶项的阶之间的差并且>>表示在对该移位寄存器的移位方向相反方向的移位。
2.如权利要求1的方法,其中select_word由该生成程序多项式计算,并先于计算进位输出字储存。
3.如权利要求1或2的方法,用于形成包括附加该进位输出字到一个输入二进制序列的下一个K位的模2的循环代码字,以形成一个反馈字,和施加该反馈字到该移位寄存器的反馈抽头。
4.如权利要求1或2的方法,用于编码一个输入二进制序列,其中移位寄存器的更新内容由下列公式计算:
  fdbk_word=carryout_wordnext K bits of input binary sequence
          new_register_content=
          [fdbk_word<<(K-tap1)][fdbk_word<<(K-tap2)]………………
          [fdbk_word<<(K-tapL)]其中L是抽头数。
5.如权利要求1或2的方法,用于计算一个校正子形成一个循环代码字,其中一个新校正子由下列公式计算:
new_syndrome=next_word[carryout_word<<(K-tap1)]
[carryout_word<<(K-tap2)]…[carryout_word<<(K-tapL)]其中next_word是输入到移位寄存器的循环代码字的下一个K位和L是抽头数。
6.使用权利要求1或2的方法,用于更新一个错误设陷电路的内容,其中新寄存器内容使用下列公式计算:
new_register_content=[carryout_word<<(K-tap1)][carryout_word<<(K-tap2)]
              ……[carryout_word(K-tapL)]这里L是抽头数。
CN03107976A 2002-03-28 2003-03-28 循环移位寄存器的改进的进位输出字计算 Pending CN1449120A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0207492A GB2387089B (en) 2002-03-28 2002-03-28 Improved carryout word calculation for cyclic shift registers
GB0207492.0 2002-03-28

Publications (1)

Publication Number Publication Date
CN1449120A true CN1449120A (zh) 2003-10-15

Family

ID=9934019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03107976A Pending CN1449120A (zh) 2002-03-28 2003-03-28 循环移位寄存器的改进的进位输出字计算

Country Status (5)

Country Link
US (1) US20030215050A1 (zh)
EP (1) EP1353272A3 (zh)
JP (1) JP2003318743A (zh)
CN (1) CN1449120A (zh)
GB (1) GB2387089B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104486068A (zh) * 2014-12-12 2015-04-01 苏州中科启慧软件技术有限公司 基于非线性循环移位寄存器的流密码算法snrr
CN109841252A (zh) * 2017-11-27 2019-06-04 慧荣科技股份有限公司 闪存控制器和设置在闪存控制器中的编码器和编码器

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070016842A1 (en) * 2005-07-13 2007-01-18 Microchip Technology Incorporated Method and apparatus for configuring a cyclic redundancy check (CRC) generation circuit to perform CRC on a data stream
JP5840086B2 (ja) * 2012-07-17 2016-01-06 日本電信電話株式会社 縮約装置、縮約方法、およびプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1492260A (en) * 1974-10-29 1977-11-16 Int Computers Ltd Data processing systems
US4001779A (en) * 1975-08-12 1977-01-04 International Telephone And Telegraph Corporation Digital error correcting decoder
US4404673A (en) * 1981-02-09 1983-09-13 National Semiconductor Corporation Error correcting network
JPH01265332A (ja) * 1988-04-18 1989-10-23 Fujitsu Ltd Crc並列演算回路の行列式生成方法
JP2002056671A (ja) * 2000-08-14 2002-02-22 Hitachi Ltd ダイナミック型ramのデータ保持方法と半導体集積回路装置
US6779011B2 (en) * 2001-02-28 2004-08-17 Maxtor Corporation System for performing multiplication and division in GF(22M)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104486068A (zh) * 2014-12-12 2015-04-01 苏州中科启慧软件技术有限公司 基于非线性循环移位寄存器的流密码算法snrr
CN109841252A (zh) * 2017-11-27 2019-06-04 慧荣科技股份有限公司 闪存控制器和设置在闪存控制器中的编码器和编码器
US10958292B2 (en) 2017-11-27 2021-03-23 Silicon Motion, Inc. Encoder, associated encoding method and flash memory controller utilizing divided partial parity blocks for circulant convolution calculations

Also Published As

Publication number Publication date
EP1353272A2 (en) 2003-10-15
GB2387089A (en) 2003-10-01
JP2003318743A (ja) 2003-11-07
EP1353272A3 (en) 2005-07-13
GB2387089B (en) 2004-12-22
US20030215050A1 (en) 2003-11-20
GB0207492D0 (en) 2002-05-08

Similar Documents

Publication Publication Date Title
US8533555B2 (en) Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
US7472334B1 (en) Efficient method for the reconstruction of digital information
US8209577B2 (en) Optimizing XOR-based codes
JP5524287B2 (ja) さまざまな符号クラスの符号化および復号化への応用を有するインプレース変換
US7161507B2 (en) Fast, practically optimal entropy coding
CN1227816C (zh) 有效的格子结构状态量度归一化
Olshevsky et al. A displacement approach to efficient decoding of algebraic-geometric codes
CN107786211B (zh) 一种ira-qc-ldpc码的代数结构获取方法、编码方法和编码器
CN101032082A (zh) 编码和解码数据的方法和设备
CN1535505A (zh) 编码和解码数据的方法和装置
CN1146116C (zh) 截短法尔码的差错捕获译码方法和装置
CN1855732A (zh) 一种咬尾卷积码的译码方法及其译码器
KR100669152B1 (ko) 저밀도 패리티 검사 코드의 부호화 장치 및 방법
CN1136662C (zh) 寻找卷积反馈编码器起始状态的技术
CN1449120A (zh) 循环移位寄存器的改进的进位输出字计算
US20060010363A1 (en) Method and system for correcting low latency errors in read and write non volatile memories, particularly of the flash type
CN108628698B (zh) 计算crc编码的方法和装置
US6760880B1 (en) Scalar product and parity check
CN1750411A (zh) 用于测试循环冗余码算法的测试数据模式
Feygin et al. Minimizing error and VLSI complexity in the multiplication free approximation of arithmetic coding
CN1599262A (zh) 宽带无线接入系统中里德索洛门卷积级联码的实现方法
CN1112778C (zh) 一种数字通信系统中的信道循环冗余码校验的方法
CN1300391A (zh) 运算处理装置
CN110990188A (zh) 一种基于Hadamard矩阵的部分重复码的构造方法
CN101321035B (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication