JP2012169926A - Crc演算回路 - Google Patents

Crc演算回路 Download PDF

Info

Publication number
JP2012169926A
JP2012169926A JP2011030104A JP2011030104A JP2012169926A JP 2012169926 A JP2012169926 A JP 2012169926A JP 2011030104 A JP2011030104 A JP 2011030104A JP 2011030104 A JP2011030104 A JP 2011030104A JP 2012169926 A JP2012169926 A JP 2012169926A
Authority
JP
Japan
Prior art keywords
data
exclusive
circuit
bits
output
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
JP2011030104A
Other languages
English (en)
Inventor
Katsuhiro Yoda
勝洋 依田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011030104A priority Critical patent/JP2012169926A/ja
Publication of JP2012169926A publication Critical patent/JP2012169926A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

【課題】高速にCRC演算を行うことができるCRC演算回路を提供することを課題とする。
【解決手段】CRC演算回路は、データの末尾から複数ビット単位で入力データを同時処理するCRC演算回路であって、複数のレジスタ(D0〜D3)と、前記複数のレジスタの出力データ又はそれに応じたデータと複数ビットの入力データとの排他的論理和データを出力する複数の第1の排他的論理和回路(411〜415)とを有し、前記複数のレジスタは、前記複数の第1の排他的論理和回路の出力データ又はそれに応じたデータを記憶する。
【選択図】図4

Description

本発明は、CRC(巡回冗長検査:Cyclic Redundancy Check)演算回路に関する。
携帯電話通信方式は、WCDMA(Wideband Code Division Multiple Access:静止時2Mbps)からHSPA(High Speed Packet Access:下り14.4Mbps,上り5.76Mbps)へ、更にはLTE(Long Term Evolution)へと発展している。これに伴い、伝送レートが加速度的に高くなり、誤り検出処理も伝送レートに比例して高速化する必要がある。下記の特許文献1によれば、誤り検出の前段がビタビ復号である場合には、ビタビ復号は結果をデータの末尾から出力するため、通常はデータの先頭から行う誤り検出をデータの末尾から逆方向に行う装置が提案されている。それによれば、ビタビ復号と誤り検出の間にバッファを設けて待つ必要が無く高速化が可能である。
また、下記の特許文献2には、ビタビ復号を改良して一度に2ビット以上のデータを出力し、高速化する手法が提案されている。特許文献1では、この高速化と併用することができない。また、下記の特許文献3には、ビタビ復号の結果出力がデータの先頭からとなる手法が提案されている。
また、データの先頭から順方向に複数ビット一括処理するCRC演算回路が知られている(例えば、下記の特許文献4及び5参照)。
特開2000−269826号公報 特開2010−213225号公報 特開2010−118782号公報 特許第4416572号公報 特許第4303548号公報
本発明の目的は、高速にCRC演算を行うことができるCRC演算回路を提供することである。本発明の他の目的は、複数種類の生成多項式のCRC演算を行うことができるCRC演算回路を提供することである。
CRC演算回路は、データの末尾から複数ビット単位で入力データを同時処理するCRC演算回路であって、複数のレジスタと、前記複数のレジスタの出力データ又はそれに応じたデータと複数ビットの入力データとの排他的論理和データを出力する複数の第1の排他的論理和回路とを有し、前記複数のレジスタは、前記複数の第1の排他的論理和回路の出力データ又はそれに応じたデータを記憶する。
また、CRC演算回路は、データの末尾から1ビットずつ入力データを処理するCRC演算回路であって、複数のレジスタと、前記複数のレジスタの中の一のレジスタの出力データと入力データとの排他的論理和データを出力する第1の排他的論理和回路と、前記第1の排他的論理和回路の出力データと複数の係数との論理積データを出力する複数の論理積回路と、前記複数の論理積回路の中の一部の複数の論理積回路の出力データと前記複数のレジスタの中の一部の複数のレジスタの出力データとの排他的論理和データを出力し、次段の複数のレジスタに記憶させる複数の第2の排他的論理和回路とを有し、前記複数の係数に応じて複数種類の生成多項式のCRC演算を行う。
また、CRC演算回路は、データの先頭から複数ビット単位で入力データを同時処理するCRC演算回路であって、複数のレジスタと、複数ビットの入力データと複数のフィードバックデータとの排他的論理和データを出力する複数の第1の排他的論理和回路と、前記複数のフィードバックデータ及び係数の論理積データを出力する複数の論理積回路と、前記複数の論理積回路の出力データと前記第1の排他的論理和回路の出力データとの排他的論理和データを出力する複数の第2の排他的論理和回路と、前記論理積回路の出力データと前記レジスタの出力データとの排他的論理和データを出力する第3の排他的論理和回路と、前記複数の第1の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記レジスタに出力する第1のセレクタと、前記第2の排他的論理和回路及び前記第3の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記レジスタに出力する第2のセレクタとを有し、前記係数に応じて複数種類の生成多項式のCRC演算を行い、同時処理するビット数で前記入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができる。
複数ビット単位で入力データを同時処理することにより、高速にCRC演算を行うことができる。また、複数の係数に応じて複数種類の生成多項式のCRC演算を行うことができる。
第1の実施形態による無線通信システムの構成例を示す図である。 図1のCRC付加部の構成例を示す図である。 図3(A)は図1のCRC確認部の構成例を示す図であり、図3(B)は図1のCRC確認部の他の構成例を示す図である。 図4(A)は図1のCRC確認部の他の構成例を示す図であり、図4(B)は第1の実施形態によるCRC確認部の構成例を示す図である。 図4(B)のCRC確認部を含む受信回路の一部の構成例を示す図である。 図5の回路の動作例を示すタイミングチャートである。 第2の実施形態によるCRC確認部の構成例を示す図である。 図8(A)はデータの末尾から1ビットずつ入力データを処理するCRC演算回路の構成例を示す図であり、図8(B)は図7(A)の回路を用いて図8(A)の回路を実現するための説明図である。 第2の実施形態によるCRC確認部の他の構成例を示す図である。 第3の実施形態によるCRC確認部の構成例を示す図である。 第4の実施形態によるCRC確認部の構成例を示す図である。 第5の実施形態によるCRC確認部の構成例を示す図である。 第6の実施形態による演算回路の左部の構成例を示す図である。 第6の実施形態による演算回路の右部の構成例を示す図である。 図12のCRC確認部の処理例を示すフローチャートである。 図12の演算回路の構成例を示す図である。
(第1の実施形態)
図1は、第1の実施形態による無線通信システムの構成例を示す図である。無線通信システムは、送信装置101及び受信装置102を有する。送信装置101は、MAC(Media Access Control)部111、CRC付加部112、符号化部113、変調部114、デジタル/アナログ変換部115、RF(Radio Frequency)部116及びアンテナ117を有する。MAC部111は、送信データを出力する。CRC付加部112は、送信データに対してCRC演算を行い、誤り検出符号(剰余)を付加した送信データを出力する。CRC付加部112の詳細は、後に図2を参照しながら説明する。符号化部113は、CRC付加部112の出力データに対して誤り訂正の符号化又はインターリーブ処理を行い、出力する。変調部114は、符号化部113の出力データに対してOFDM方式又はCDMA方式等の変調を行い、出力する。デジタル/アナログ変換部115は、変調部114の出力データをデジタルからアナログに変換して出力する。RF部116は、デジタル/アナログ変換部115の出力データを低周波数信号(ベースバンド周波数信号)から所定の高周波数信号に変換し、アンテナ117を介して、無線送信する。
受信装置102は、アンテナ121、RF部122、アナログ/デジタル変換部123、復調部124、復号部125、CRC確認部126及びMAC部127を有する。RF部122は、アンテナ121を介して受信データを無線受信し、受信データを高周波数信号から低周波数信号(ベースバンド周波数信号)に変換して出力する。アナログ/デジタル変換部123は、RF部122の出力データをアナログからデジタルに変換して出力する。復調部124は、アナログ/デジタル変換部123の出力データに対してOFDM方式又はCDMA方式等の復調を行い、出力する。復号部125は、復調部124の出力データに対して逆インターリーブ処理又は誤り訂正処理の復号を行い、出力する。CRC確認部126は、誤り検出部であり、復号部125の出力データに対してCRC演算を行い、受信データに誤りがないか否かを検出する。MAC部127は、誤りの有無に応じて受信データの処理を行う。
図2は、図1のCRC付加部112の構成例を示す図である。CRC付加部112は、送信データを先頭から1ビットずつ入力データDTとして入力する。排他的論理和回路201は、入力データDTとレジスタD3の出力データとの排他的論理和データを出力する。レジスタD0は、排他的論理和回路201の出力データを記憶する。レジスタD1は、レジスタD0の出力データを記憶する。排他的論理和回路202は、レジスタD1の出力データとレジスタD3の出力データとの排他的論理和データを出力する。レジスタD2は、排他的論理和回路202の出力データを記憶する。レジスタD3は、レジスタD2の出力データを記憶する。レジスタD0〜D3は、シフトレジスタを構成し、入力データDTのビット入力毎にデータをシフトして記憶する。
CRC付加部112は、CRC演算を行う。具体的には、CRC付加部112は、入力データDTに対して所定の生成多項式Gでモジュロー2の除算を行い、剰余RSを入力データDTの後ろに付加することにより送信データ203を生成し、出力する。図2の場合、生成多項式Gは、G=1+D2+D4である。ここで、D=2である。すなわち、CRC演算は、DT÷G=Q・・・RSの演算を行う。ここで、Qは商である。書き換えると、DT=G×Q+RSで表される。入力データDTの全ビットの入力が終了した時点において、4個のレジスタD0〜D3に記憶されている4ビットのデータが剰余RSである。CRC付加部112は、剰余RSを入力データDTの後ろに付加することにより送信データ203を生成する。送信データ203は、DT+RSのビット列である。
図3(A)は、図1のCRC確認部126の構成例を示す図であり、データの先頭から1ビットずつ入力データを処理するCRC演算回路を示す。図3(A)のCRC確認部126は、図2のCRC付加部112と同じ構成を有する。すなわち、CRC確認部126は、CRC付加部112と同じCRC演算を行う。CRC確認部126は、上記のように、CRC付加部112からDT+RSの送信データ203を入力データINとして入力する。入力データINは、シリアルデータのビット列である。CRC確認部126は、CRC付加部112と同様のCRC演算を行う。具体的には、CRC確認部126は、入力データINに対して所定の生成多項式Gでモジュロー2の除算を行う。この生成多項式Gは、CRC付加部112で用いた生成多項式Gと同じである。モジュロー2の演算の場合、IN=DT+RS=DT−RSである。したがって、DT+RS=DT−RS=G×Qになり、IN÷G=Q・・・0になる。入力データINに誤りがなければ、CRC演算の剰余は0になる。CRC確認部126は、入力データINを先頭から1ビットずつ入力し、入力データINの全ビットの入力が終わった時点でレジスタD0〜D3に記憶されている4ビットの剰余が0であれば誤りなしの結果を出力し、4ビットの剰余が0でなければ誤りありの結果を出力する。
図3(B)は、図1のCRC確認部126の他の構成例を示す図であり、データの先頭から複数ビット(例えば4ビット)単位で入力データを同時処理するCRC演算回路を示す。図3(B)の回路は、図3(A)と同様に、G=1+D2+D4の生成多項式Gを用いたCRC演算を行う例を示す。CRC確認部126は、データの先頭から4ビット単位で入力データIN[0]〜IN[3]を同時処理する例を示す。入力データIN[0]は、1番目、5番目、9番目・・・のビットデータである。入力データIN[1]は、2番目、6番目、10番目・・・のビットデータである。入力データIN[2]は、3番目、7番目、11番目・・・のビットデータである。入力データIN[3]は、4番目、8番目、12番目・・・のビットデータである。まず、1番目〜4番目の4ビットデータIN[0]〜IN[3]をパラレル入力し、次に、5番目〜8番目の入力データIN[0]〜IN[3]をパラレル入力する。
排他的論理和回路301は、入力データIN[1]とレジスタD0の出力データとの排他的論理和データを出力する。排他的論理和回路302は、入力データIN[3]とレジスタD0の出力データとの排他的論理和データを出力する。排他的論理和回路303は、入力データIN[0]とレジスタD1の出力データとの排他的論理和データを出力する。排他的論理和回路304は、入力データIN[2]とレジスタD1の出力データとの排他的論理和データを出力する。排他的論理和回路305は、排他的論理和回路302の出力データとレジスタD2の出力データとの排他的論理和データを出力する。排他的論理和回路306は、排他的論理和回路304の出力データとレジスタD3の出力データとの排他的論理和データを出力する。レジスタD0は、排他的論理和回路305の出力データを記憶する。レジスタD1は、排他的論理和回路306の出力データを記憶する。レジスタD2は、排他的論理和回路301の出力データを記憶する。レジスタD3は、排他的論理和回路303の出力データを記憶する。入力データIN[0]〜IN[3]の全パラレルビットの入力が終了した時点で、レジスタD0〜D3に記憶されている4ビットデータが剰余である。剰余が0であれば誤りなし、剰余が0でなければ誤りありになる。入力データを4ビットずつ同時処理することにより、高速にCRC演算を行うことができる。
次に、図1の復号部125がビタビ復号を行う場合を説明する。復号部125は、ビタビ復号を行い、復号結果をデータの末尾から出力する。CRC確認部126は、復号部125からデータを末尾から入力するので、データの末尾から入力データをCRC演算することが好ましい。以下、そのようなCRC確認部126の構成例を説明する。
図4(A)は、図1のCRC確認部126の他の構成例を示す図であり、データの末尾から1ビットずつ入力データを処理するCRC演算回路を示す。CRC確認部126は、データの末尾から1ビットずつ入力データINを入力する。すなわち、剰余RSを入力し、その後にデータDTを入力する。CRC確認部126は、上記と同様に、G=1+D2+D4の生成多項式Gを用いたCRC演算を行う例を示す。
排他的論理和回路401は、入力データINとレジスタD0の出力データとの排他的論理和データを出力する。排他的論理和回路402は、排他的論理和回路401の出力データとレジスタD2の出力データとの排他的論理和データを出力する。レジスタD0は、レジスタD1の出力データを記憶する。レジスタD1は、排他的論理和回路402の出力データを記憶する。レジスタD2は、レジスタD3の出力データを記憶する。レジスタD3は、排他的論理和回路401の出力データを記憶する。入力データINの全ビットの入力が終了した時点で、レジスタD0〜D3に記憶されている4ビットデータが剰余である。剰余が0であれば誤りなし、剰余が0でなければ誤りありになる。CRC確認部126は、復号部125からデータを末尾から入力し、データの末尾からデータを効率的にCRC演算することができる。
図4(B)は、第1の実施形態によるCRC確認部126の構成例を示す図であり、データの末尾から複数ビット(例えば4ビット)単位で入力データを同時処理するCRC演算回路を示す。図4(B)の回路は、上記と同様に、G=1+D2+D4の生成多項式Gを用いたCRC演算を行う例を示す。CRC確認部126は、データの末尾から4ビット単位で入力データIN[0]〜IN[3]を同時処理する例を示す。
排他的論理和回路411は、入力データIN[0]とレジスタD0の出力データとの排他的論理和データを出力する。排他的論理和回路412は、入力データIN[1]とレジスタD1の出力データとの排他的論理和データを出力する。排他的論理和回路413は、入力データIN[2]とレジスタD2の出力データとの排他的論理和データを出力する。排他的論理和回路414は、排他的論理和回路411の出力データと排他的論理和回路413の出力データとの排他的論理和データを出力する。排他的論理和回路415は、入力データIN[3]とレジスタD3の出力データとの排他的論理和データを出力する。排他的論理和回路416は、排他的論理和回路412の出力データと排他的論理和回路415の出力データとの排他的論理和データを出力する。レジスタD0は、排他的論理和回路413の出力データを記憶する。レジスタD1は、排他的論理和回路415の出力データを記憶する。レジスタD2は、排他的論理和回路414の出力データを記憶する。レジスタD3は、排他的論理和回路416の出力データを記憶する。
入力データIN[0]〜IN[3]の全パラレルビットの入力が終了した時点で、レジスタD0〜D3に記憶されている4ビットデータが剰余である。剰余が0であれば誤りなし、剰余が0でなければ誤りありになる。図4(B)の回路は、図4(A)の回路の4サイクル分の処理を1サイクルで行うことができる。CRC確認部126は、入力データを4ビットずつ同時処理することにより、高速にCRC演算を行うことができる。また、CRC確認部126は、復号部125からデータを末尾から入力し、データの末尾からデータを効率的にCRC演算することができる。
図5は、図4(B)のCRC確認部126を含む受信回路102(図1)の一部の構成例を示す図であり、図1の復号部125及びCRC確認部126に対応する。図6は、図5の回路の動作例を示すタイミングチャートである。復号部125は、復号を終了すると、全体制御部501にハイレベルパルスの復号終了信号ENDを出力する。全体制御部501は、ハイレベルパルスの復号終了信号ENDを入力すると、ハイレベルの出力開始信号EN1を復号部125及びCRC演算回路502に出力し、ハイレベルパルスのカウント開始信号EN2をカウンタ504及びCRC演算回路502に出力する。復号部125は、ハイレベルの出力開始信号EN1を入力すると、データの末尾からサイクル毎に4ビットずつデータIN[0]〜IN[3]をCRC演算回路502に出力する。CRC演算回路502は、図4(B)の回路である。カウンタ504は、ハイレベルパルスのカウント開始信号EN2を入力すると、カウント値CNTを0にクリアし、サイクル毎にカウント値CNTを4ずつ増加させる。カウンタ504は、入力データIN[0]〜IN[3]のビット数をカウント値CNTとしてカウントする。CRC演算回路502は、ハイレベルパルスのカウント開始信号EN2を入力すると、図4の内部レジスタD0〜D3を0にクリアする。その後、サイクル毎に、復号部125はデータIN[0]〜IN[3]を4ビットずつCRC演算回路502に出力し、カウンタ504はカウント値CNTを4ずつカウントアップし、CRC演算回路502は4ビットずつCRC演算を行う。全体制御部501は、データのビット数を管理し、カウンタ504が全ビット数Mをカウントし終えると、カウンタ504及びCRC演算回路502は動作を停止し、全体制御部501はローレベルの出力開始信号EN1を出力する。CRC演算回路502は、レジスタD0〜D3に記憶されている4ビットの剰余(演算結果)を結果判定部503に出力する。全体制御部501は、ハイレベルパルスの判定指示信号INSを結果判定部503に出力する。結果判定部503は、ハイレベルパルスの判定指示信号INSを入力すると、CRC演算回路502が出力する剰余が0か否かを判定し、0であれば誤りなしの結果信号RLTを全体制御部501に出力し、0でなければ誤りありの結果信号RLTを全体制御部501に出力する。
(第2の実施形態)
図7は、第2の実施形態によるCRC確認部126の構成例を示す図であり、データの末尾から1ビットずつ入力データを処理するCRC演算回路を示す。このCRC演算回路は、複数種類の生成多項式GのCRC演算を行うことができる。CRC演算回路は、設定レジスタ720、n+1個のレジスタD0〜Dn、n+1個の排他的論理和回路700〜70n及びn+1個の論理積回路710〜71nを有する。ユーザは、バス等を介して設定レジスタ720に複数の係数α0〜αnを設定することができる。設定レジスタ720は、複数の係数α0〜αnを出力する。複数の係数α0〜αnは、CRC演算に使用する生成多項式Gを決定するための係数である。入力データINは、シリアルビット列である。排他的論理和回路700は、入力データINとレジスタD0の出力データとの排他的論理和データを出力する。論理積(AND)回路710は、排他的論理和回路700の出力データと係数α0との論理積データを出力する。論理積回路711は、排他的論理和回路700の出力データと係数α1との論理積データを出力する。同様に、論理積回路71n−1は、排他的論理和回路700の出力データと係数αn−1との論理積データを出力する。論理積回路71nは、排他的論理和回路700の出力データと係数αnとの論理積データを出力する。排他的論理和回路701は、レジスタD1の出力データと論理積回路710の出力データとの排他的論理和データを出力する。排他的論理和回路702は、レジスタD2の出力データと論理積回路711の出力データとの排他的論理和データを出力する。同様に、排他的論理和回路70nは、レジスタDnの出力データと論理積回路71n−1の出力データとの排他的論理和データを出力する。レジスタD0は、排他的論理和回路701の出力データを記憶する。レジスタD1は、排他的論理和回路702の出力データを記憶する。同様に、レジスタDn−1は、排他的論理和回路70nの出力データを記憶する。レジスタDnは、論理積回路71nの出力データを記憶する。
CRC演算回路は、単位ブロック730が繰り返し接続される。複数の係数α0〜αnは、ユーザが設定可能である。排他的論理和回路701〜70nを有効にするための係数α0〜αnを1にし、無効にするための係数α0〜αnを0にする。係数α0〜αnを1にすると、論理積回路710〜71nは排他的論理和回路700の出力データを出力し、排他的論理和回路701〜70nはそれぞれレジスタD1〜Dnの出力データと排他的論理和回路700の出力データとの排他的論理和データを出力する。これに対し、係数α0〜αnを0にすると、論理積回路710〜71nは0を出力し、排他的論理和回路701〜70nはそれぞれレジスタD1〜Dnの出力データをそのまま出力する。これにより、所望の生成多項式GのCRC演算を行うことができる。
以上のように、第1の排他的論理和回路700は、複数のレジスタD0〜Dnの中の一のレジスタD0の出力データと入力データINとの排他的論理和データを出力する。複数の論理積回路710〜71nは、第1の排他的論理和回路700の出力データと複数の係数α0〜αnとの論理積データを出力する。複数の第2の排他的論理和回路701〜70nは、複数の論理積回路710〜71nの中の一部の複数の論理積回路710〜71n−1の出力データと複数のレジスタD0〜Dnの中の一部の複数のレジスタD1〜Dnの出力データとの排他的論理和データを出力し、次段の複数のレジスタD0〜Dn−1に記憶させる。CRC演算回路は、複数の係数α0〜αnに応じて複数種類の生成多項式GのCRC演算を行うことができる。
図8(A)は、図4と同じく、データの末尾から1ビットずつ入力データを処理するCRC演算回路の構成例を示す図である。このCRC演算回路の生成多項式Gは、G=1+D2+D4である。図8(B)は、図7(A)の回路を用いて、図8(A)の回路を実現するための説明図である。図8(B)の回路は、図7(B)の回路の係数α0〜αnを設定した回路である。係数α0〜αnのうち、係数α1及びα3が1に設定され、その他の係数α0、α2、α4〜αnが0に設定される。係数α0及びα2は、図8(A)のレジスタD0,D1間及びレジスタD2,D3間に排他的論理和回路が無いため0を設定する。係数α2は、図8(A)のレジスタD1,D2間に排他的論理和回路402があるため1を設定する。係数α3は、図8(A)のレジスタD3が最後段であるため1を設定する。係数α4以降は0を設定する。使用する際は、レジスタD0〜Dnをすべて0に初期化する。すると、レジスタD0にはレジスタD1の出力データが記憶され、レジスタD1には排他的論理和回路402の出力データが記憶され、レジスタD2にはレジスタD3の出力データが記憶され、レジスタD3には排他的論理和回路401の出力データが記憶される。これは、レジスタD4からのパスはレジスタD4〜Dnがすべて0であり、フィードバックデータもすべてマスクされているため、排他的論理和回路704は論理積回路713の出力データをそのまま出力することになるためである。係数α0〜αnを上記のように設定することにより、図8(A)のG=1+D2+D4の生成多項式GのCRC演算を行うことができる。
以上のように、第1の排他的論理和回路700は、複数のレジスタD0〜Dnの中の一のレジスタD0の出力データと入力データINとの排他的論理和データを出力する。複数の論理積回路710〜71nは、第1の排他的論理和回路700の出力データと複数の係数α0〜αnとの論理積データを出力する。複数の第2の排他的論理和回路701〜70nは、複数の論理積回路710〜71nの中の一部の複数の論理積回路710〜71n−1の出力データと複数のレジスタD0〜Dnの中の一部の複数のレジスタD1〜Dnの出力データとの排他的論理和データを出力し、次段の複数のレジスタD0〜Dn−1に記憶させる。CRC演算回路は、複数の係数α0〜αnに応じて複数種類の生成多項式GのCRC演算を行うことができる。
図9は、第2の実施形態によるCRC確認部126の他の構成例を示す図であり、データの末尾から1ビットずつ入力データを処理するCRC演算回路を示す。図9の回路は、図7の回路に対して、設定レジスタ910及びn個の論理積回路900〜90n−1を追加したものである。以下、図9の回路が図7の回路と異なる点を説明する。設定レジスタ910は、複数の係数β0〜βn−1を記憶する。n個の論理積回路900〜90n−1は、それぞれn個のレジスタD1〜Dnの出力データとn個の係数β0〜βn−1との論理積データをn個の排他的論理和回路701〜70nに出力する。n個の排他的論理和回路701〜70nは、それぞれn個の論理積回路900〜90n−1の出力データとn個の論理積回路710〜71n−1の出力データとの排他的論理和データを出力する。使用するレジスタD1〜Dnに対応する係数β0〜βn−1を1にし、使用しないレジスタD1〜Dnに対応する係数β0〜βn−1を0にする。例えば、図8(B)の回路を実現する場合には、係数β0〜β2が1に設定され、係数β3〜βn−1が0に設定される。レジスタD3が終端であるため、係数β3〜βn−1が0に設定される。係数β0〜βn−1は、マスクするための係数である。係数α0〜αn及び係数β0〜βn−1を設定することにより、所望の生成多項式GのCRC演算を行わせることができる。
(第3の実施形態)
図10は、第3の実施形態によるCRC確認部126の構成例を示す図であり、データの末尾から複数ビット(例えば4ビット)単位で入力データを同時処理するCRC演算回路を示す。このCRC演算回路は、第2の実施形態と同様に、係数α0〜αnを設定することにより、複数種類の生成多項式GのCRC演算を行うことができる。
排他的論理和回路1001は、入力データIN[0]とレジスタD0の出力データとの排他的論理和データF1を1周目のフィードバックデータとして出力する。排他的論理和回路1002は、入力データIN[1]と排他的論理和回路1006の出力データとの排他的論理和データF2を2周目のフィードバックデータとして出力する。排他的論理和回路1003は、入力データIN[2]と排他的論理和回路1009の出力データとの排他的論理和データF3を3周目のフィードバックデータとして出力する。排他的論理和回路1004は、入力データIN[3]と排他的論理和回路1013の出力データとの排他的論理和データF4を4周目のフィードバックデータとして出力する。
レジスタD0は、排他的論理和回路1005の出力データを記憶する。レジスタD1は、排他的論理和回路1007の出力データを記憶する。レジスタD2は、排他的論理和回路1010の出力データを記憶する。レジスタD3は、排他的論理和回路1014の出力データを記憶する。
設定レジスタ720は、図7と同様に、係数α0〜αnを記憶する。論理積回路1051は、排他的論理和データF4と係数α0との論理積データを出力する。論理積回路1052は、排他的論理和データF1と係数α0との論理積データを出力する。排他的論理和回路1005は、論理積回路1051の出力データと排他的論理和回路1008の出力データとの排他的論理和データを出力する。排他的論理和回路1006は、論理積回路1052の出力データとレジスタD1の出力データとの排他的論理和データを出力する。
論理積回路1053は、排他的論理和データF4と係数α1との論理積データを出力する。論理積回路1054は、排他的論理和データF3と係数α1との論理積データを出力する。論理積回路1055は、排他的論理和データF1と係数α1との論理積データを出力する。排他的論理和回路1007は、論理積回路1053の出力データと排他的論理和回路1011の出力データとの排他的論理和データを出力する。排他的論理和回路1008は、論理積回路1054の出力データと排他的論理和回路1012の出力データとの排他的論理和データを出力する。排他的論理和回路1009は、論理積回路1055の出力データとレジスタD2の出力データとの排他的論理和データを出力する。
論理積回路1056は、排他的論理和データF4と係数α2との論理積データを出力する。論理積回路1057は、排他的論理和データF3と係数α2との論理積データを出力する。論理積回路1058は、排他的論理和データF2と係数α2との論理積データを出力する。論理積回路1059は、排他的論理和データF1と係数α2との論理積データを出力する。排他的論理和回路1010は、論理積回路1056の出力データと排他的論理和回路1015の出力データとの排他的論理和データを出力する。排他的論理和回路1011は、論理積回路1057の出力データと排他的論理和回路1016の出力データとの排他的論理和データを出力する。排他的論理和回路1012は、論理積回路1058の出力データと排他的論理和回路1017の出力データとの排他的論理和データを出力する。排他的論理和回路1013は、論理積回路1059の出力データとレジスタD3の出力データとの排他的論理和データを出力する。
以上のように、複数の第1の排他的論理和回路1001〜1004は、複数のレジスタD0〜D3の出力データ又はそれに応じたデータと複数ビットの入力データIN[0]〜IN[3]との排他的論理和データF1〜F4を出力する。複数のレジスタD0〜Dnは、複数の第1の排他的論理和回路1001〜1003の出力データ又はそれに応じたデータを記憶する。複数の論理積回路1051〜1059等は、複数の第1の排他的論理和回路1001〜1004の出力データと複数の係数α0〜αnとの論理積データを出力する。複数の第2の排他的論理和回路1006,1009,1013,1017等は、複数の論理積回路1051〜1059等の中の一部の論理積回路1052,1055,1059等の出力データと複数のレジスタD0〜Dnの中の一部のレジスタD1〜Dnの出力データとの排他的論理和データを出力する。複数の第1の排他的論理和回路1001〜1004の中の一部の複数の第1の排他的論理和回路1002〜1004は、複数の第2の排他的論理和回路1006,1009,1013の出力データと複数ビットの入力データIN[1]〜IN[3]との排他的論理和データを出力する。CRC演算回路は、複数の係数α0〜αnに応じて複数種類の生成多項式GのCRC演算を行うことができる。
本実施形態は、4ビット単位で入力データIN[0]〜IN[3]を同時処理する例を示したが、4ビット以外にも適用することができる。1周目のフィードバックデータF1は、1ビット処理を行ったときのフィードバックデータを表している。2周目のフィードバックデータF2は、2ビット処理を行ったときのフィードバックデータを表しており、1周目のフィードバックデータF1とレジスタD1の出力データと入力データIN[1]とを基に生成される。以下、3周目フィードバックデータF3及び4周目フィードバックデータF4も同様である。例えば、レジスタD0に記憶されるデータを説明する。排他的論理和回路1017は、レジスタD4の出力データと1周目フィードバックデータF1との排他的論理和データ(係数α3でマスクされたデータ)との排他的論理和データを1周目の結果として生成する。次に、排他的論理和回路1012は、排他的論理和回路1017の出力データと2周目フィードバックデータF2(係数α2でマスクされたデータ)との排他的論理和データを2周目の結果として生成する。次に、排他的論理和回路1008は、排他的論理和回路1012の出力データと3周目フィードバックデータF3(係数α1でマスクされたデータ)との排他的論理和データを3周目の結果として生成する。最後に、排他的論理和回路1005は、排他的論理和回路1008の出力データと4周目フィードバックデータF4(係数α0でマスクされたデータ)との排他的論理和データを4周目の結果として生成し、レジスタD0に記憶させる。他のレジスタD1〜Dnに記憶させるデータも同様である。このように見た場合、最後の4個のレジスタを考えると、4個先のレジスタの値が取れなくなってしまう。しかし、そこに問題は無く、4個先のレジスタの値は、例えばレジスタDn−3ならば1周目フィードバックデータF1が仮にレジスタDn+1があったとしたら、そこに入るデータに対応する。このように見ていくと、レジスタDn+2に相当するデータが3周目フィードバックデータF3となり、レジスタDn+3に相当するデータが4周目フィードバックデータF4となる。また、レジスタDn+1以降は、レジスタ自体が無いため、常に0と同じと考えると、排他的論理和回路は必要なくなる。
(第4の実施形態)
図11は、第4の実施形態によるCRC確認部126の構成例を示す図であり、データの末尾から複数ビット(例えば4ビット)単位で入力データを同時処理するCRC演算回路を示す。第3の実施形態(図10)の回路では、同時処理するビット数(例えば4ビット)で入力データの全ビット数が割り切れる場合のCRC演算回路である。第4の実施形態のCRC演算回路は、同時処理するビット数(例えば4ビット)で入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができる。図11の回路は、図10の回路に対して、n+1個のセレクタ1100〜110nを追加したものである。以下、本実施形態が第3の実施形態と異なる点を説明する。n+1個のセレクタ1100〜110nは、それぞれ剰余情報s2に応じてデータを選択し、n+1個のレジスタD0〜Dnに出力する。n+1個のレジスタD0〜Dnは、それぞれn+1個のセレクタ1100〜110nの出力データを記憶する。同時処理するビット数(例えば4ビット)で入力データの全ビット数が割り切れない場合、CRC演算回路は、通常、4ビット同時処理を行い、最終回の同時処理のみ3ビット以下のビット数の同時処理を行う。それに対応し、剰余情報s2は、通常時は0であり、最終回の処理時のみ、同時処理するビット数で入力データの全ビット数を割った剰余の値になる。
セレクタ1100は、剰余情報s2が0のときには排他的論理和回路1005の出力データを選択し、剰余情報s2が1のときには排他的論理和回路1006の出力データを選択し、剰余情報s2が2のときには排他的論理和回路1009の出力データを選択し、剰余情報s2が3のときには排他的論理和回路排他的論理和回路1013の出力データを選択し、出力する。
セレクタ1101は、剰余情報s2が0のときには排他的論理和回路1007の出力データを選択し、剰余情報s2が3のときには排他的論理和回路1008の出力データを選択し、剰余情報s2が2のときには排他的論理和回路1009の出力データを選択し、剰余情報s2が1のときには排他的論理和回路排他的論理和回路1013の出力データを選択し、出力する。
セレクタ1102〜110nは、図11の左から順に第1の信号、第2の信号、第3の信号、第4の信号を入力する。セレクタ1102〜110nは、セレクタ1101と同様に、剰余情報s2が0のときには第1の信号を選択し、剰余情報s2が3のときには第2の信号を選択し、剰余情報s2が2のときには第3の信号を選択し、剰余情報s2が1のときには第4の信号を選択し、出力する。
セレクタ1100〜110n−1は、少なくとも第2の排他的論理和回路1006,1009,1013,1017等の出力データを入力し、最終回の同時処理については、同時処理するビット数で入力データの全ビット数を割った剰余情報s2に応じて、入力したデータの中の1個のデータを選択して複数のレジスタD0〜Dn−1に出力する。これにより、CRC演算回路は、同時処理するビット数で入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができる。
本実施形態のCRC演算回路は、同時処理するビット数(例えば4ビット)で入力データの全ビット数が割り切れない場合のデータ長でもCRC演算を行うことができる。本実施形態は、第3の実施形態に対して、各レジスタD0〜Dnの入力端子に4to1セレクタ1100〜110nを設ける。セレクタ1100〜110nには、入力データのデータ長を4で割ったときの剰余情報s2(0,1,2,3)が入力される。剰余情報s2が0の場合は、図10と同じデータを選択する。剰余情報s2が3の場合には、レジスタD3は1つ前のレジスタD2が図10で入力すべきレジスタD6のデータを選択する。剰余情報s2が2の場合には、レジスタD3は2つ前のレジスタD1が図10で入力すべきレジスタD5のデータを選択する。剰余情報s2が1の場合には、レジスタD3は3つ前のレジスタD0が図10で入力すべきレジスタD4のデータを選択する。
また、本実施形態は、第3の実施形態と同様に、例えばデータの末尾から4ビット単位で入力データを同時処理することができ、係数α0〜αnに応じて複数種類の生成多項式GのCRC演算を行うことができる。本実施形態は、4ビット単位で処理する場合を例に示したが、4ビット以外のビット数であってもよい。
(第5の実施形態)
図12は、第5の実施形態によるCRC確認部126の構成例を示す図である。CRC確認部126は、プロセッサ1201、命令メモリ1202及びデータメモリ1203を有するCRC演算回路である。プロセッサ1201は、CRC演算命令を処理することにより、第4の実施形態のCRC演算回路(図11)の演算を実現する。CRC演算命令内のオペランドは、生成多項式Gを決定するための係数α0〜αn及び剰余情報s2を有する。CRC演算命令は、下記のニーモニックで表現され、命令メモリ1202に格納される。
RCRC s0,s1,s2,d3
ここで、「RCRC」は、データの末尾から処理する図11のCRC演算回路を実現するCRC演算命令のオペコードである。「s0,s1,s2,d3」は、CRC演算命令のオペランドである。「s0」は、入力データを示す。「s1」は、係数α0〜αnを示す。「s2」は、剰余情報を示す。「d3」は、レジスタD0〜Dnを示す。なお、「s0,s1,s2,d3」は、オペランドで記述したが、専用レジスタを別途持たせるようにしてもよい。
図16は、図12の演算回路1215の構成例を示す図である。演算回路1215は、図11のCRC演算回路と同じ構成を有し、図11のCRC演算回路に対して、入力データIN[0]〜IN[3]の代わりに入力データs0[0]〜s0[3]を設け、係数α0〜αnの代わりに係数s1[0]〜s1[n]を設け、剰余情報s2の代わりに剰余情報s2[1:0]を設け、レジスタD0〜Dnの代わりにレジスタd3[0]〜d3[n]を設けたものである。入力データs0[0]〜s0[3]は、CRC演算命令のオペランドの「s0」に対応する。係数s1[0]〜s1[n]は、CRC演算命令のオペランドの「s1」に対応する。2ビットの剰余情報s2[1:0]は、CRC演算命令のオペランドの「s2」に対応する。
図12において、プログラムカウンタ制御部1211は、図5の全体制御部501の指示により、プログラムカウンタ値のアドレスのCRC演算命令を命令メモリ1202から読み出し、命令デコード部1212に出力する。命令デコード部1212は、CRC演算命令をデコードし、命令情報を汎用レジスタ1213に記憶させる。汎用レジスタ1213は、命令情報を演算回路1215、算術論理ユニット(ALU)1216及びロードストアアドレス制御部1214に出力する。演算回路1215は、図16のCRC演算回路であり、汎用レジスタ1213から入力データs1[0]〜s1[3]、係数s1[0]〜s1[n]及び剰余情報s2[1:0]を入力し、図11のCRC演算回路と同じ処理を行い、演算結果を汎用レジスタ1213に書き込む。汎用レジスタ1213は、レジスタd3[0]〜d3[n](レジスタD0〜Dn)を有する。演算回路1215は、汎用レジスタ1213からレジスタd3[0]〜d3[n]のデータを入力し、演算を繰り返す。算術論理ユニット1216は、図5のカウンタ504及び結果判定部503を含み、処理結果を汎用レジスタ1213に書き込む。最後に、汎用レジスタ1213内のレジスタd3[0]〜d3[n]には、CRC演算の剰余が格納される。算術論理ユニット1216内の結果判定部503は、上記の剰余が0であれば誤りなし、0でなければ誤りありの結果を汎用レジスタ1213に書き込む。ロードストアアドレス制御部1214は、誤りあり/なしの結果を汎用レジスタ1213から読み出し、データメモリ1203に書き込む。
図15は、図12のCRC確認部126の処理例を示すフローチャートである。ステップS1501では、命令デコード部1212は、CRC演算命令をデコードすることにより、CRC演算回路の制御情報を取得し、汎用レジスタ1213に記憶させる。制御情報は、入力データs0、係数s1及び剰余情報s2を含む。入力データのデータ長、入力データのアドレス等は、図5の全体制御部501により設定される。CRC演算命令のオペランドは、制御情報のアドレスを示す。ロードストアアドレス制御部1214は、汎用レジスタ1213のアドレスを基にデータメモリ1203から入力データs0、係数s1及び剰余情報s2を読み出し、汎用レジスタ1213に書き込む。
次に、ステップS1502では、算術論理ユニット1216は、汎用レジスタ1213内にレジスタd3[0]〜d3[n]を割り当て、レジスタd3[0]〜d3[n](D0〜Dn)を0に初期化する。演算回路1215は、汎用レジスタ1213から係数s1(α0〜αn)を入力し、生成多項式Gの設定を行う。演算回路1215は、初期時に、汎用レジスタ1213から剰余情報s2として0を入力する。
その後、ステップS1521で、データの末尾から4ビット単位で入力データを同時処理する繰り返し処理を行い、ステップS1522で、剰余情報s2に応じて最終回の同時処理を行う。
ステップS1502の後、ステップS1503では、算術論理ユニット1216は、未処理の入力データのデータサイズが4以上であるか否かを判定する。4以上であればステップS1504に進み、4未満であればステップS1507に進む。
ステップS1504では、ロードストアアドレス制御部1214は、汎用レジスタ1213内のアドレスを基にデータメモリ1203から、次に処理すべき入力データを読み出し、汎用レジスタ1213に書き込む。
次に、ステップS1505では、演算回路1215は、汎用レジスタ1215から入力データs0及びレジスタd3のデータを入力し、図16のCRC演算回路の処理を行う。
次に、ステップS1506では、算術論理ユニット1216は、未処理の入力データのデータサイズを4減算する。その後、ステップS1503に戻り、上記の処理を繰り返す。
ステップS1507では、算術論理ユニット1216は、汎用レジスタ1213から入力データのデータ長を入力し、同時処理するビット数(例えば4)で入力データのデータ長の割った剰余情報s2を汎用レジスタ1213に書き込む。なお、CRC演算命令内の剰余情報s2をそのまま使用してもよいし、上記のように入力データのデータ長を基に剰余情報s2を計算してもよい。
次に、ステップS1508では、演算回路1215は、汎用レジスタ1213から剰余情報s2を入力し、図16のCRC演算回路の処理を行う。
次に、ステップS1509では、算術論理ユニット1216は、汎用レジスタ1213内のレジスタd3[0]〜d3[n]の値が0であるか否かを判定する。0であればステップS1510に進み、0でなければステップS1511に進む。
ステップS1510では、算術論理ユニット1216は、CRC演算の結果として誤りなしの情報を汎用レジスタ1213に書き込む。ステップS1511では、算術論理ユニット1216は、CRC演算の結果として誤りありの情報を汎用レジスタ1213に書き込む。
(第6の実施形態)
第6の実施形態は、第5の実施形態に対して、図12の演算回路1215が異なる。以下、本実施形態が第5の実施形態と異なる点を説明する。
図13及び図14は、第6の実施形態による演算回路1215(図12)の構成例を示す図であり、データの先頭から複数ビット(例えば4ビット)単位で入力データを同時処理するCRC演算回路を示す。図13はCRC演算回路の左部を示し、図14はCRC演算回路の右部を示す。図3(B)の回路も、データの先頭から複数ビット(例えば4ビット)単位で入力データを同時処理するCRC演算回路である。図13及び図14の回路は、複数の係数s1[0]〜s1[n−1]に応じて複数種類の生成多項式GのCRC演算を行うことができ、同時処理するビット数で入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算を行うことができる。
図12のプロセッサ1201は、CRC演算命令を処理することにより、図13及び図14のCRC演算回路の演算を実現する。CRC演算命令は、下記のニーモニックで表現され、命令メモリ1202に格納される。
CRC s0,s1,s2,d3
ここで、「CRC」は、データの先頭から処理する図13及び図14のCRC演算回路を実現するCRC演算命令のオペコードである。「s0,s1,s2,d3」は、CRC演算命令のオペランドである。「s0」は、入力データを示す。「s1」は、係数α0〜αnを示す。「s2」は、剰余情報を示す。「d3」は、レジスタD0〜Dnを示す。なお、「s0,s1,s2,d3」は、オペランドで記述したが、専用レジスタを別途持たせるようにしてもよい。
命令デコード部1212は、オペランド「s0,s1,s2,d3」を含むCRC演算命令をデコードし、オペランド「s0,s1,s2,d3」の情報を汎用レジスタ1213に記憶させる。演算回路1215は、汎用レジスタ1213内のオペランド「s0,s1,s2,d3」の情報を基にCRC演算を行う。
図13において、最上位ビット検出部1300は、係数s1[0]〜s1[n−1]の中で1になっている最上位ビットを検出し、図9と同様に、その最上位ビットのみを1にした係数β[0]〜β[n]を生成する。例えば、図3(B)の回路構成に設定する場合、s1=0101_0000(2進数)となる。このとき、βは1がある最上位ビットのみ1にするためβ=0001_0000(2進数)となる。図13では、係数βはnビット分存在すると仮定している。
排他的論理和回路1301は、入力データs0[0]と論理和(OR)回路1321の出力データとの排他的論理和データを出力する。論理積回路1311は、係数β[0]とレジスタd3[0]の出力データとの論理積データを出力する。論理和回路1321は、前段の論理和回路1321の出力データと論理積回路1311の出力データとの論理和データを出力する。論理積回路1331は、論理和回路1321の出力データと係数s1[0]との論理積データを出力する。排他的論理和回路1341は、論理積回路1331の出力データとレジスタd3[0]の出力データとの排他的論理和データを出力する。
排他的論理和回路1302は、入力データs0[1]と論理和回路1322の出力データとの排他的論理和データを出力する。論理積回路1312は、係数β[0]と排他的論理和回路1301の出力データとの論理積データを出力する。論理和回路1322は、前段の論理和回路1322の出力データと論理積回路1312の出力データとの論理和データを出力する。論理積回路1332は、論理和回路1322の出力データと係数s1[0]との論理積データを出力する。排他的論理和回路1342は、論理積回路1332の出力データと排他的論理和回路1301の出力データとの排他的論理和データを出力する。
排他的論理和回路1303は、入力データs0[2]と論理和回路1323の出力データとの排他的論理和データを出力する。論理積回路1313は、係数β[0]と排他的論理和回路1302の出力データとの論理積データを出力する。論理和回路1323は、前段の論理和回路1323の出力データと論理積回路1313の出力データとの論理和データを出力する。論理積回路1333は、論理和回路1323の出力データと係数s1[0]との論理積データを出力する。排他的論理和回路1343は、論理積回路1333の出力データと排他的論理和回路1302の出力データとの排他的論理和データを出力する。
排他的論理和回路1304は、入力データs0[3]と論理和回路1324の出力データとの排他的論理和データを出力する。論理積回路1314は、係数β[0]と排他的論理和回路1303の出力データとの論理積データを出力する。論理和回路1324は、前段の論理和回路1324の出力データと論理積回路1314の出力データとの論理和データを出力する。論理積回路1334は、論理和回路1324の出力データと係数s1[0]との論理積データを出力する。排他的論理和回路1344は、論理積回路1334の出力データと排他的論理和回路1303の出力データとの排他的論理和データを出力する。
セレクタ1350は、剰余情報s2が0のときには排他的論理和回路1304の出力データを選択し、剰余情報s2が3のときには排他的論理和回路1303の出力データを選択し、剰余情報s2が2のときには排他的論理和回路1302の出力データを選択し、剰余情報s2が1のときには排他的論理和回路1301の出力データを選択し、レジスタd3[0](D0)に記憶させる。
セレクタ1351は、剰余情報s2が0のときには排他的論理和回路1344の出力データを選択し、剰余情報s2が3のときには排他的論理和回路1343の出力データを選択し、剰余情報s2が2のときには排他的論理和回路1342の出力データを選択し、剰余情報s2が1のときには排他的論理和回路1341の出力データを選択し、レジスタd3[1](D1)に記憶させる。
セレクタ1350及び1351は、剰余情報s2が0のときには左から1番目の入力信号を選択し、剰余情報s2が3のときには左から2番目の入力信号を選択し、剰余情報s2が2のときには左から3番目の入力信号を選択し、剰余情報s2が1のときには左から4番目の入力信号を選択する。
まず、論理和回路1321等は、レジスタd3の最上位ビットから順に係数βでマスクした値の論理和を演算する。これは、図3(B)の回路のレジスタD3からのフィードバックの信号線を作成しているものである。nビットまでの任意の生成多項式Gの長さに対応可能であるため、どこからフィードバックしたものかを選択している回路である。論理積回路1331で、そのフィードバックデータを係数s1でマスクし、排他的論理和回路1341で、それと各レジスタd3の値との排他的論理和を演算したものを1ビットシフトさせた結果を1段下に送っている。また、0ビット目だけは、排他的論理和回路1301〜1304で、フィードバックデータを入力データとの排他的論理和の演算をしたものを結果としている。ここに、1サイクル分の処理した結果が生成される。以降は、同じ処理を行い、順次2サイクル目分、3サイクル目分、4サイクル目分を生成している。最後に、セレクタ1350及び1351が剰余情報s2に応じて選択し、レジスタd3に記憶させる。これは、同時処理するビット数で入力データの全ビット数が割り切れない場合に対応可能にするものである。
このCRC演算回路は、データの先頭から複数ビット(例えば4ビット)単位で入力データを同時処理する。4ビットに限定されず、8ビット等の他のビット数であってもよい。第1の排他的論理和回路1301〜1304は、複数ビットの入力データIN[0]〜IN[3]と複数のフィードバックデータとの排他的論理和データを出力する。複数の論理積回路1331〜1334は、複数のフィードバックデータ及び係数s1[0]の論理積データを出力する。複数の第2の排他的論理和回路1342〜1344は、複数の論理積回路1332〜1334の出力データと第1の排他的論理和回路1301〜1303の出力データとの排他的論理和データを出力する。第3の排他的論理和回路1341は、論理積回路1331の出力データとレジスタd3[0]の出力データとの排他的論理和データを出力する。第1のセレクタ1350は、複数の第1の排他的論理和回路1301〜1304の出力データを入力し、最終回の同時処理については、同時処理するビット数で入力データの全ビット数を割った剰余情報s2に応じて、入力したデータの中の1個のデータを選択してレジスタd3[0]に出力する。第2のセレクタ1351は、第2の排他的論理和回路1342〜1344及び第3の排他的論理和回路1341の出力データを入力し、最終回の同時処理については、同時処理するビット数で入力データの全ビット数を割った剰余情報s2に応じて、入力したデータの中の1個のデータを選択してレジスタd3[1]に出力する。
CRC演算回路は、複数の係数s1[0]〜s1[n−1]及び係数β[0]〜β[n]に応じて複数種類の生成多項式GのCRC演算を行うことができ、剰余情報s2を用いることにより、同時処理するビット数で入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができる。
なお、第5の実施形態及び第6の実施形態の両方の回路を含んだCRC演算回路を構成するようにしてもよい。また、ソフトウェア無線に対応したCRC演算回路では、複数ビット単位で高速に同時処理するCRC演算回路のメリットは大きい。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
データの末尾から複数ビット単位で入力データを同時処理するCRC演算回路であって、
複数のレジスタと、
前記複数のレジスタの出力データ又はそれに応じたデータと複数ビットの入力データとの排他的論理和データを出力する複数の第1の排他的論理和回路とを有し、
前記複数のレジスタは、前記複数の第1の排他的論理和回路の出力データ又はそれに応じたデータを記憶することを特徴とするCRC演算回路。
(付記2)
さらに、前記複数の第1の排他的論理和回路の出力データと複数の係数との論理積データを出力する複数の論理積回路と、
前記複数の論理積回路の中の一部の論理積回路の出力データと前記複数のレジスタの中の一部のレジスタの出力データとの排他的論理和データを出力する複数の第2の排他的論理和回路とを有し、
前記複数の第1の排他的論理和回路の中の一部の複数の第1の排他的論理和回路は、複数の前記第2の排他的論理和回路の出力データと複数ビットの入力データとの排他的論理和データを出力し、
前記複数の係数に応じて複数種類の生成多項式のCRC演算を行うことを特徴とする付記1記載のCRC演算回路。
(付記3)
さらに、少なくとも前記第2の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記複数のレジスタに出力するセレクタを有し、
前記同時処理するビット数で前記入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができることを特徴とする付記2記載のCRC演算回路。
(付記4)
さらに、前記複数の係数を含むCRC演算命令をデコードすることにより、前記複数の係数を出力する命令デコード部を有することを特徴とする付記2又は3記載のCRC演算回路。
(付記5)
付記1〜4のいずれか1項に記載のCRC演算回路を有することを特徴とするプロセッサ。
(付記6)
データの末尾から1ビットずつ入力データを処理するCRC演算回路であって、
複数のレジスタと、
前記複数のレジスタの中の一のレジスタの出力データと入力データとの排他的論理和データを出力する第1の排他的論理和回路と、
前記第1の排他的論理和回路の出力データと複数の係数との論理積データを出力する複数の論理積回路と、
前記複数の論理積回路の中の一部の複数の論理積回路の出力データと前記複数のレジスタの中の一部の複数のレジスタの出力データとの排他的論理和データを出力し、次段の複数のレジスタに記憶させる複数の第2の排他的論理和回路とを有し、
前記複数の係数に応じて複数種類の生成多項式のCRC演算を行うことを特徴とするCRC演算回路。
(付記7)
データの先頭から複数ビット単位で入力データを同時処理するCRC演算回路であって、
複数のレジスタと、
複数ビットの入力データと複数のフィードバックデータとの排他的論理和データを出力する複数の第1の排他的論理和回路と、
前記複数のフィードバックデータ及び係数の論理積データを出力する複数の論理積回路と、
前記複数の論理積回路の出力データと前記第1の排他的論理和回路の出力データとの排他的論理和データを出力する複数の第2の排他的論理和回路と、
前記論理積回路の出力データと前記レジスタの出力データとの排他的論理和データを出力する第3の排他的論理和回路と、
前記複数の第1の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記レジスタに出力する第1のセレクタと、
前記第2の排他的論理和回路及び前記第3の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記レジスタに出力する第2のセレクタとを有し、
前記係数に応じて複数種類の生成多項式のCRC演算を行い、
同時処理するビット数で前記入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができることを特徴とするCRC演算回路。
(付記8)
さらに、前記係数を含むCRC演算命令をデコードすることにより、前記係数を出力する命令デコード部を有することを特徴とする付記7記載のCRC演算回路。
(付記9)
付記7又は8記載のCRC演算回路を有することを特徴とするプロセッサ。
D0〜Dn レジスタ
125 復号部
411〜416 排他的論理和回路
501 全体制御部
502 CRC演算回路
503 結果判定部
504 カウンタ
1201 プロセッサ
1202 命令メモリ
1203 データメモリ
1211 プログラムカウンタ制御部
1212 命令デコード部
1213 汎用レジスタ
1214 ロードストアアドレス制御部
1215 演算回路
1216 算術論理回路

Claims (5)

  1. データの末尾から複数ビット単位で入力データを同時処理するCRC演算回路であって、
    複数のレジスタと、
    前記複数のレジスタの出力データ又はそれに応じたデータと複数ビットの入力データとの排他的論理和データを出力する複数の第1の排他的論理和回路とを有し、
    前記複数のレジスタは、前記複数の第1の排他的論理和回路の出力データ又はそれに応じたデータを記憶することを特徴とするCRC演算回路。
  2. さらに、前記複数の第1の排他的論理和回路の出力データと複数の係数との論理積データを出力する複数の論理積回路と、
    前記複数の論理積回路の中の一部の論理積回路の出力データと前記複数のレジスタの中の一部のレジスタの出力データとの排他的論理和データを出力する複数の第2の排他的論理和回路とを有し、
    前記複数の第1の排他的論理和回路の中の一部の複数の第1の排他的論理和回路は、複数の前記第2の排他的論理和回路の出力データと複数ビットの入力データとの排他的論理和データを出力し、
    前記複数の係数に応じて複数種類の生成多項式のCRC演算を行うことを特徴とする請求項1記載のCRC演算回路。
  3. さらに、少なくとも前記第2の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記複数のレジスタに出力するセレクタを有し、
    前記同時処理するビット数で前記入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができることを特徴とする請求項2記載のCRC演算回路。
  4. データの末尾から1ビットずつ入力データを処理するCRC演算回路であって、
    複数のレジスタと、
    前記複数のレジスタの中の一のレジスタの出力データと入力データとの排他的論理和データを出力する第1の排他的論理和回路と、
    前記第1の排他的論理和回路の出力データと複数の係数との論理積データを出力する複数の論理積回路と、
    前記複数の論理積回路の中の一部の複数の論理積回路の出力データと前記複数のレジスタの中の一部の複数のレジスタの出力データとの排他的論理和データを出力し、次段の複数のレジスタに記憶させる複数の第2の排他的論理和回路とを有し、
    前記複数の係数に応じて複数種類の生成多項式のCRC演算を行うことを特徴とするCRC演算回路。
  5. データの先頭から複数ビット単位で入力データを同時処理するCRC演算回路であって、
    複数のレジスタと、
    複数ビットの入力データと複数のフィードバックデータとの排他的論理和データを出力する複数の第1の排他的論理和回路と、
    前記複数のフィードバックデータ及び係数の論理積データを出力する複数の論理積回路と、
    前記複数の論理積回路の出力データと前記第1の排他的論理和回路の出力データとの排他的論理和データを出力する複数の第2の排他的論理和回路と、
    前記論理積回路の出力データと前記レジスタの出力データとの排他的論理和データを出力する第3の排他的論理和回路と、
    前記複数の第1の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記レジスタに出力する第1のセレクタと、
    前記第2の排他的論理和回路及び前記第3の排他的論理和回路の出力データを入力し、最終回の同時処理については、前記同時処理するビット数で前記入力データの全ビット数を割った剰余に応じて、前記入力したデータの中の1個のデータを選択して前記レジスタに出力する第2のセレクタとを有し、
    前記係数に応じて複数種類の生成多項式のCRC演算を行い、
    同時処理するビット数で前記入力データの全ビット数が割り切れる場合と割り切れない場合の両方の場合でCRC演算をすることができることを特徴とするCRC演算回路。
JP2011030104A 2011-02-15 2011-02-15 Crc演算回路 Pending JP2012169926A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011030104A JP2012169926A (ja) 2011-02-15 2011-02-15 Crc演算回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011030104A JP2012169926A (ja) 2011-02-15 2011-02-15 Crc演算回路

Publications (1)

Publication Number Publication Date
JP2012169926A true JP2012169926A (ja) 2012-09-06

Family

ID=46973596

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011030104A Pending JP2012169926A (ja) 2011-02-15 2011-02-15 Crc演算回路

Country Status (1)

Country Link
JP (1) JP2012169926A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019135354A1 (ja) * 2018-01-05 2019-07-11 Nttエレクトロニクス株式会社 演算回路
US10771095B2 (en) 2016-06-07 2020-09-08 Mitsubishi Electric Corporation Data processing device, data processing method, and computer readable medium

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969836A (ja) * 1995-08-31 1997-03-11 Toshiba Corp Crc符号生成回路およびcrc符号生成回路設計方法
JP2000269826A (ja) * 1999-03-15 2000-09-29 Fujitsu Ltd 誤り検出装置及び方法
JP2001156647A (ja) * 1999-11-30 2001-06-08 Hitachi Kokusai Electric Inc 除算回路及びそれを用いた簡易復号器
JP2004208282A (ja) * 2002-12-09 2004-07-22 Sony Corp データ処理装置
WO2006013637A1 (ja) * 2004-08-04 2006-02-09 Hitachi, Ltd. 電子タグ、リーダ、及びその製造方法
WO2008023684A1 (fr) * 2006-08-22 2008-02-28 Panasonic Corporation Unité d'opération arithmétique de résidus en parallèle et procédé d'opération arithmétique de résidus en parallèle
JP2009117883A (ja) * 2007-10-17 2009-05-28 Oki Semiconductor Co Ltd 演算処理装置
JP2010068429A (ja) * 2008-09-12 2010-03-25 Nec Corp 巡回符号演算処理回路

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969836A (ja) * 1995-08-31 1997-03-11 Toshiba Corp Crc符号生成回路およびcrc符号生成回路設計方法
JP2000269826A (ja) * 1999-03-15 2000-09-29 Fujitsu Ltd 誤り検出装置及び方法
JP2001156647A (ja) * 1999-11-30 2001-06-08 Hitachi Kokusai Electric Inc 除算回路及びそれを用いた簡易復号器
JP2004208282A (ja) * 2002-12-09 2004-07-22 Sony Corp データ処理装置
WO2006013637A1 (ja) * 2004-08-04 2006-02-09 Hitachi, Ltd. 電子タグ、リーダ、及びその製造方法
WO2008023684A1 (fr) * 2006-08-22 2008-02-28 Panasonic Corporation Unité d'opération arithmétique de résidus en parallèle et procédé d'opération arithmétique de résidus en parallèle
JP2009117883A (ja) * 2007-10-17 2009-05-28 Oki Semiconductor Co Ltd 演算処理装置
JP2010068429A (ja) * 2008-09-12 2010-03-25 Nec Corp 巡回符号演算処理回路

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10771095B2 (en) 2016-06-07 2020-09-08 Mitsubishi Electric Corporation Data processing device, data processing method, and computer readable medium
WO2019135354A1 (ja) * 2018-01-05 2019-07-11 Nttエレクトロニクス株式会社 演算回路
JP2019121171A (ja) * 2018-01-05 2019-07-22 日本電信電話株式会社 演算回路
CN111615700A (zh) * 2018-01-05 2020-09-01 Ntt电子股份有限公司 运算电路
JP6995629B2 (ja) 2018-01-05 2022-01-14 日本電信電話株式会社 演算回路
US11360741B2 (en) 2018-01-05 2022-06-14 Ntt Electronics Corporation Arithmetic circuit
CN111615700B (zh) * 2018-01-05 2023-12-08 Ntt创新器件有限公司 运算电路

Similar Documents

Publication Publication Date Title
CA3069482C (en) Blockwise parallel frozen bit generation for polar codes
CN101296053A (zh) 计算循环冗余校验码之方法及系统
US8397150B1 (en) Method, apparatus and computer program for calculating a branch metric
EP3202045A1 (en) Method and device for calculating a crc code in parallel
JP2012169926A (ja) Crc演算回路
CN108809323B (zh) 循环冗余校验码的生成方法和装置
WO2012109872A1 (zh) 通信系统中的循环冗余校验处理方法、装置和lte终端
JP7314359B2 (ja) インターリービング深度を調整するための装置及び方法
CN108574490B (zh) 计算循环冗余校验crc编码的方法及装置
US20220352901A1 (en) Cyclic redundancy check, crc,decoding using the inverse crc generator polynomial
US11748190B2 (en) Cyclic redundancy check computation circuit, communication unit, and method therefor
JP2010130271A (ja) 復号器および復号方法
US20170134121A1 (en) Method and Apparatus for Determining Forward Error Correction Frame Boundary, and Decoding System
JP2005006188A (ja) Crc演算方法およびcrc演算装置
CN111431541B (zh) 一种获得crc码的方法及装置
JP5724601B2 (ja) Crc演算回路及びプロセッサ
US20130266096A1 (en) Viterbi decoder for decoding convolutionally encoded data stream
US8417757B2 (en) Method and apparatus for modulo N calculation wherein calculation result is applied to match speeds in wireless communication system
JP5275398B2 (ja) リードソロモン復号器及び受信装置
JP2015142343A (ja) 通信装置および巡回冗長検査プログラム
CN117749197A (zh) 一种ca-scl译码的crc并行计算方法及装置
JP6229437B2 (ja) 復調方法、受信装置、及び通信システム
JP2010021886A (ja) データ復号装置、受信装置およびデータ復号方法
KR20130068213A (ko) 순환반복검사 연산 장치 및 방법
US20150081987A1 (en) Data supply circuit, arithmetic processing circuit, and data supply method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140501

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140625

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141216