(57)【特許請求の範囲】
【請求項１】
所定桁を有する送信データを通信する通信装置であって、
前記所定桁の内の一部を有効桁とし且つ前記有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値を前記グループ毎に保持する第１記憶部と、
所定の複数の値をそれぞれ前記所定値で除算した複数の剰余値を保持する第２記憶部と、
送信データを前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて送信チェックコードを生成する生成部と、
前記送信データを前記送信チェックコードとともに送信する送信部と、
を有することを特徴とする通信装置。
【請求項２】
所定桁を有する受信データを通信する通信装置であって、
前記所定桁の内の一部を有効桁とし且つ前記有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値を前記グループ毎に保持する第１記憶部と、
所定の複数の値をそれぞれ前記所定値で除算した複数の剰余値を保持する第２記憶部と、
受信データ及び前記受信データに対する受信チェックコードを受信する受信部と、
前記受信データに基づく値を前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて前記受信データ及び前記受信チェックコードを検証する検証部と、
を有することを特徴とする通信装置。
【請求項３】
所定桁を有する送信データ及び受信データを通信する通信装置であって、
前記所定桁の内の一部を有効桁とし且つ前記有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値を前記グループ毎に保持する第１記憶部と、
所定の複数の値をそれぞれ前記所定値で除算した複数の剰余値を保持する第２記憶部と、
送信データを前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて送信チェックコードを生成する生成部と、
前記送信データを前記送信チェックコードとともに送信する送信部と、
受信データ及び前記受信データに対する受信チェックコードを受信する受信部と、
前記受信データに基づく値を前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて前記受信データ及び前記受信チェックコードを検証する検証部と、
を有することを特徴とする通信装置。
【請求項４】
前記第２記憶部は、前記生成部及び前記検証部から前記複数のグループについて同時に参照可能である、請求項３に記載の通信装置。
【請求項５】
前記送信チェックコード及び前記受信チェックコードは、ＣＲＣである、請求項１〜４の何れか一項に記載の通信装置。
【請求項６】
前記第１記憶部及び前記第２記憶部は、マルチポートメモリである、請求項１〜５の何れか一項に記載の通信装置。
【請求項７】
前記グループは、前記所定桁の全てが何れかのグループで有効桁となるように設定される、請求項１〜６の何れか一項に記載の通信装置。
【請求項８】
第１記憶部及び第２記憶部を有し、所定桁を有する送信データ及び受信データを通信する通信装置の制御方法であって、
前記所定桁の内の一部を有効桁とし且つ前記有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値を前記グループ毎に前記第１記憶部に保持し、
所定の複数の値をそれぞれ前記所定値で除算した複数の剰余値を前記第２記憶部に保持し、
送信データを前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて送信チェックコードを生成し、
前記送信データを前記送信チェックコードとともに送信する、
ことを含むことを特徴とする制御方法。
【請求項９】
第１記憶部及び第２記憶部を有し、所定桁を有する送信データ及び受信データを通信する通信装置の制御方法であって、
前記所定桁の内の一部を有効桁とし且つ前記有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値を前記グループ毎に前記第１記憶部に保持し、
所定の複数の値をそれぞれ前記所定値で除算した複数の剰余値を前記第２記憶部に保持し、
受信データ及び前記受信データに対する受信チェックコードを受信し、
前記受信データに基づく値を前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて前記受信データ及び前記受信チェックコードを検証する、
ことを含むことを特徴とする制御方法。
【請求項１０】
第１記憶部及び第２記憶部を有し、所定桁を有する送信データ及び受信データを通信する通信装置の制御方法であって、
前記所定桁の内の一部を有効桁とし且つ前記有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値を前記グループ毎に前記第１記憶部に保持し、
所定の複数の値をそれぞれ前記所定値で除算した複数の剰余値を前記第２記憶部に保持し、
送信データを前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて送信チェックコードを生成し、
前記送信データを前記送信チェックコードとともに送信し、
受信データ及び前記受信データに対する受信チェックコードを受信し、
前記受信データに基づく値を前記複数のグループに分割し、前記複数のグループ毎に、前記第１記憶部を参照して前記剰余値を取得し、前記取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、前記第２記憶部を参照して前記乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて前記受信データ及び前記受信チェックコードを検証する、
ことを含むことを特徴とする制御方法。
【請求項１１】
前記第２記憶部は、前記生成及び前記検証において前記複数のグループについて同時に参照可能である、請求項１０に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び制御方法に関し、特に、チェックコードを送信し且つ検証する通信装置及びその通信装置の制御方法に関する。
【背景技術】
【０００２】
通信データの誤りを検出するために、ＣＲＣ（Cyclic Redundancy Check）を用いた誤り検出方式が利用されている。近年、記憶装置の大容量化、通信インタフェース及びバスインタフェースの高速化等に伴って、単位時間に処理される通信データの量が増大してきており、大量のＣＲＣを算出することが必要になっている。
【０００３】
通常、対象データを多項式に見立てて、予め定められた生成多項式で除算した剰余値がＣＲＣとして用いられる。一般に、ＣＲＣを算出するために、対象データを１ビットずつシフトさせながら所定の比較減算処理を実行することにより、対象データの剰余値を算出する方法が用いられている。しかしながら、この方法では、１ビットずつ比較減算処理を実行する必要があるため、剰余値を算出するために多大な時間が必要となる。
【０００４】
剰余値の算出時間を短くするために、対象データが取り得る全ての値をそれぞれ生成多項式で除算した剰余値を予め算出してテーブルに記憶しておき、そのテーブルを参照することにより、対象データの剰余値を求める方法も考えられる。しかしながら、対象データのサイズが増大する程、必要となるテーブルのサイズは指数関数的に増大するため、記憶装置のサイズ及びコストが増大するという問題がある。
【０００５】
入力情報列に対応する多項式を生成多項式で除算したときの剰余を計算する剰余計算装置が知られている（特許文献１を参照）。この剰余計算装置は、複数の単位情報列の値をインデクスとして、対応する剰余情報列の値をそれぞれ保持する複数の剰余テーブルを記憶しておく。剰余計算装置は、対象情報列を複数の単位情報列に分割して、それぞれの単位情報列の値をインデクスとして複数の剰余テーブルを参照し、複数の剰余情報列の値を取得し、得られた複数の剰余情報列の排他的論理和に基づいて剰余を計算する。
【０００６】
また、入力情報ビット列を生成多項式により除算する除算装置が知られている（特許文献２を参照）。この除算装置は、入力情報ビット列を複数のサブビット列に分割する。除算装置は、各サブビット列の最下位のビットに対応する入力情報ビット列内におけるビット位置を１とし、他のビットを０としたビット列を生成多項式で除算して得られる剰余値を保持しておく。そして、除算装置は、各剰余値と、対応するサブビット列の乗算結果をモジュロ２加算し、生成多項式で除算する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１１０２５号公報
【特許文献２】特開２００８−１６０６６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の剰余計算装置及び特許文献２に記載の除算装置では、効率良く入力情報列を生成多項式で除算することができる。
【０００９】
しかしながら、チェックコードを送信し且つ検証する通信装置では、高速にチェックコードを処理しつつ、記憶装置に格納しておくデータ量をより低減させることが求められている。
【００１０】
本発明の目的は、チェックコードを送信し且つ検証する通信装置において、高速にチェックコードを処理しつつ、記憶装置に格納しておくデータ量をより低減させることが可能な通信装置及び制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一側面に係る通信装置は、所定桁を有する送信データ及び受信データを通信する通信装置であって、所定桁の内の一部を有効桁とし且つ有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループに含まれる複数の値をそれぞれ所定値で除算した複数の剰余値をグループ毎に保持する記憶部と、送信データを複数のグループに分割し、複数のグループ毎に記憶部を参照して剰余値を取得し、取得した剰余値の総和に基づいて送信チェックコードを生成する生成部と、送信データを送信チェックコードとともに送信する送信部と、受信データ及び受信データに対する受信チェックコードを受信する受信部と、受信データに基づく値を複数のグループに分割し、複数のグループ毎に記憶部を参照して剰余値を取得し、取得した剰余値の総和に基づいて受信データ及び受信チェックコードを検証する検証部と、を有し、記憶部は、生成部及び検証部から同時に参照可能である。
【００１２】
また、本発明の他の側面に係る通信装置は、所定桁を有する送信データ及び受信データを通信する通信装置であって、所定桁の内の一部を有効桁とし且つ有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値をグループ毎に保持する第１記憶部と、所定の複数の値をそれぞれ所定値で除算した複数の剰余値を保持する第２記憶部と、送信データを複数のグループに分割し、複数のグループ毎に、第１記憶部を参照して剰余値を取得し、取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、第２記憶部を参照して乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて送信チェックコードを生成する生成部と、送信データを送信チェックコードとともに送信する送信部と、受信データ及び受信データに対する受信チェックコードを受信する受信部と、受信データに基づく値を複数のグループに分割し、複数のグループ毎に、第１記憶部を参照して剰余値を取得し、取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、第２記憶部を参照して乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて受信データ及び受信チェックコードを検証する検証部と、を有し、第２記憶部は、生成部及び検証部から複数のグループについて同時に参照可能である。
【００１３】
また、本発明の一側面に係る制御方法は、記憶部を有し、所定桁を有する送信データ及び受信データを通信する通信装置の制御方法であって、所定桁の内の一部を有効桁とし且つ有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループに含まれる複数の値をそれぞれ所定値で除算した複数の剰余値をグループ毎に記憶部に保持し、送信データを複数のグループに分割し、複数のグループ毎に記憶部を参照して剰余値を取得し、取得した剰余値の総和に基づいて送信チェックコードを生成し、送信データを送信チェックコードとともに送信し、受信データ及び受信データに対する受信チェックコードを受信し、受信データに基づく値を複数のグループに分割し、複数のグループ毎に記憶部を参照して剰余値を取得し、取得した剰余値の総和に基づいて受信データ及び受信チェックコードを検証することを含み、記憶部は、生成及び検証において同時に参照可能である。
【００１４】
また、本発明の他の側面に係る制御方法は、第１記憶部及び第２記憶部を有し、所定桁を有する送信データ及び受信データを通信する通信装置の制御方法であって、所定桁の内の一部を有効桁とし且つ有効桁以外の桁を０とする複数の値から構成されるグループを複数個設定し、各グループにおける最小値を所定値で除算した剰余値をグループ毎に第１記憶部に保持し、所定の複数の値をそれぞれ所定値で除算した複数の剰余値を第２記憶部に保持し、送信データを複数のグループに分割し、複数のグループ毎に、第１記憶部を参照して剰余値を取得し、取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、第２記憶部を参照して乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて送信チェックコードを生成し、送信データを送信チェックコードとともに送信し、受信データ及び受信データに対する受信チェックコードを受信し、受信データに基づく値を複数のグループに分割し、複数のグループ毎に、第１記憶部を参照して剰余値を取得し、取得した剰余値と各グループの有効桁の桁値の乗算値を算出し、第２記憶部を参照して乗算値に対応する剰余値を取得し、当該取得した剰余値の総和に基づいて受信データ及び受信チェックコードを検証することを含み、第２記憶部は、生成及び検証において複数のグループについて同時に参照可能である。
【発明の効果】
【００１５】
本発明によれば、チェックコードを送信し且つ検証する通信装置は、チェックコードの生成時及び検証時に、剰余値を算出するためのデータを共用できるため、高速にチェックコードを処理しつつ記憶装置に格納しておくデータ量をより低減させることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】実施形態に係る通信装置１００のハードウェア構成図示す図である。
【図２】複数のグループについて説明するための模式図である。
【図３】通信装置１００による送信処理の動作の例を示すフローチャートである。
【図４】通信装置１００による受信処理の動作の例を示すフローチャートである。
【図５】他の実施形態に係る通信装置２００のハードウェア構成図示す図である。
【図６】他の実施形態に係る通信装置２００のハードウェア構成図示す図である。
【図７】通信装置２００による送信処理の動作の例を示すフローチャートである。
【図８】通信装置２００による受信処理の動作の例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の一側面に係る通信装置及び制御方法について図を参照しつつ説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【００１８】
図１は、実施形態に係る通信装置のハードウェア構成図示す図である。
【００１９】
通信装置１００は、送信データを送信チェックコードとともに他の通信装置へ送信し、受信データを受信チェックコードとともに他の通信装置から受信する。以下では、ＣＲＣを送信チェックコード及び受信チェックコードの例として説明する。
【００２０】
図１に示すように、通信装置１００は、記憶装置１１０と、ＣＰＵ（Central Processing Unit）１２０と、生成回路１３０と、送信回路１４０と、受信回路１５０と、検証回路１６０とを有する。以下、通信装置１００の各部について詳細に説明する。
【００２１】
記憶装置１１０は、記憶部の一例であり、ＲＯＭ（Read Only Memory）等のメモリ装置を有する。記憶装置１１０は、マルチポートメモリであり、記憶装置１１０には、第１テーブル１１１、第２テーブル１１２、第３テーブル１１３及び第４テーブル１１４等が記憶される。記憶装置１１０では、複数のグループが設定され、第１テーブル１１１、第２テーブル１１２、第３テーブル１１３及び第４テーブル１１４には、それぞれ各グループに対応する剰余値が保持される。
【００２２】
図２は、複数のグループについて説明するための模式図である。
【００２３】
図２に示す例では、送信データ及び受信データが有する所定桁、即ち送信データ及び受信データの桁数を３２ビット（４バイト）としている。また、この例では、３２ビットの送信データ及び受信データを９ビット（但し最上位ビットが１）の除数値で除算することにより、８ビット（１バイト）の送信ＣＲＣ及び受信ＣＲＣが算出される。なお、通信装置１００において、送信データ、受信データ、除数値、送信ＣＲＣ及び受信ＣＲＣの桁数は上記に限定されず、何桁であってもよい。
【００２４】
図２に示すように、送信データ及び受信データが有する所定桁の内の一部を有効桁とし且つ有効桁以外の桁を０とする複数の値から構成されるグループが複数個設定される。図２に示す例では、第０〜第７ビットを有効桁とする第１グループと、第８〜第１５ビットを有効桁とする第２グループと、第１６〜第２３ビットを有効桁とする第３グループと、第２４〜第３１ビットを有効桁とする第４グループの４つのグループが設定される。即ち、第１グループは00000001(h)〜000000FF(h)の２５５個の値で構成される。第２グループは00000100(h)〜0000FF00(h)の２５５個の値で構成される。第３グループは00010000(h)〜00FF0000(h)の２５５個の値で構成される。第４グループは01000000(h)〜FF000000(h)の２５５個の値で構成される。このように各グループは、所定桁の全てが何れかのグループで有効桁となるように設定される。
【００２５】
第１テーブル１１１は、第１グループに含まれる各値をそれぞれ所定除数値で除算した複数の剰余値を、各値に対応する有効桁の桁値をインデックスとして保持する。なお、桁値とは、有効桁の中の最下位桁が１桁目となるように各値をシフトさせたときの値を意味する。即ち、桁値は、01(h)〜FF(h)の範囲の値である。同様に、第２テーブル１１２は、第２グループに含まれる各値をそれぞれ所定除数値で除算した複数の剰余値を、各値に対応する有効桁の桁値をインデックスとして保持する。同様に、第３テーブル１１３は、第３グループに含まれる各値をそれぞれ所定除数値で除算した複数の剰余値を、各値に対応する有効桁の桁値をインデックスとして保持する。同様に、第４テーブル１１４は、第４グループに含まれる各値をそれぞれ所定除数値で除算した複数の剰余値を、各値に対応する有効桁の桁値をインデックスとして保持する。所定除数値は、ＣＲＣの方式によって異なる値であり、例えばＣＲＣ−８では９ビットの1D5(h)が用いられている。なお、各テーブルは、さらにインデックス00(h)に対応して値0を保持する。即ち、各テーブルには、00(h)〜FF(h)をインデックスとして、２５６個の値が保持される。
【００２６】
ＣＰＵ１２０は、記憶装置１１０、生成回路１３０、送信回路１４０、受信回路１５０及び検証回路１６０と接続され、これらの各部を制御する。ＣＰＵ１２０は、通信装置１００全体の動作を制御する。
【００２７】
ＣＰＵ１２０は、他の通信装置へ送信する送信データを生成回路１３０及び送信回路１４０に出力する。また、ＣＰＵ１２０は、他の通信装置から受信した受信データを受信回路１５０から取得し、その受信データを受信ＣＲＣに基づいて検証した結果を検証回路１６０から取得する。
【００２８】
なお、図１において「()」で囲まれた数字はその矢印が示すバスのビット幅を示し、「[]」で囲まれた数字はその矢印が示すバスで伝送されるデータのビット番号を示す。
【００２９】
生成回路１３０は、生成部の一例であり、分割回路１３１及び加算回路１３２を有する。
【００３０】
分割回路１３１は、ＣＰＵ１２０から出力された送信データを複数のグループに分割し、各グループの有効桁の桁値を出力する。本実施形態では、分割回路１３１は、３２ビットの送信データを、図２に示した第１〜第４グループの４つのグループに分割し、第０〜第７ビットの桁値と、第８〜第１５ビットの桁値と、第１６〜第２３ビットの桁値と、第２４〜第３１ビットの桁値を出力する。
【００３１】
生成回路１３０は、分割回路１３１が出力した各グループの各桁値をそれぞれ記憶装置１１０の各テーブルに入力し、各グループ毎に記憶装置１１０の各テーブルを参照して、各グループに含まれる各値を所定除数値で除算した剰余値を取得する。
【００３２】
本実施形態では、生成回路１３０は、第１テーブル１１１を参照し、第０〜第７ビットの桁値をインデックスとして、送信データの内、第０〜第７ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。同様に、生成回路１３０は、第２テーブル１１２を参照し、第８〜第１５ビットの桁値をインデックスとして、送信データの内、第８〜第１５ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。同様に、生成回路１３０は、第３テーブル１１３を参照し、第１６〜第２３ビットの桁値をインデックスとして、送信データの内、第１６〜第２３ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。同様に、生成回路１３０は、第４テーブル１１４を参照し、第２４〜第３１ビットの桁値をインデックスとして、送信データの内、第２４〜第３１ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。
【００３３】
加算回路１３２は、各テーブルを参照して取得した各剰余値をモジュロ２加算し、各剰余値の総和を送信ＣＲＣとして生成し、送信回路１４０に出力する。本実施形態では、加算回路１３２は、８ビットの各剰余値をモジュロ２加算して８ビットの送信チェックコードを生成し、出力する。
【００３４】
送信回路１４０は、送信部の一例であり、送信データバッファ１４１、送信ＣＲＣバッファ１４２及び送信制御回路１４３を有する。
【００３５】
送信データバッファ１４１は、ＲＡＭ（Random Access Memory）等のメモリ装置を有し、ＣＰＵ１２０から出力された送信データを一旦格納する。
【００３６】
送信ＣＲＣバッファ１４２は、ＲＡＭ等のメモリ装置を有し、生成回路１３０から出力された送信ＣＲＣを一旦格納する。
【００３７】
送信制御回路１４３は、他の通信装置と通信可能なインタフェース回路を有し、他の通信装置又は中継装置とケーブルを用いて電気的に接続して各種のデータ及び情報を送信する。送信制御回路１４３は、例えばＰＣＩ  Ｅｘｐｒｅｓｓ等の規格に準じた通信を行うための回路を有する。なお、送信制御回路１４３は、ＵＳＢ（Universal Serial Bus）等のシリアルバスに準じるインタフェース回路を有し、ＵＳＢケーブルを用いて他の通信装置と電気的に接続してもよい。または、送信制御回路１４３は、イーサネット（登録商標）等に準じる回路を有し、ＬＡＮ（Local Area Network）ケーブルを用いて各通信装置と電気的に接続してもよい。
【００３８】
送信制御回路１４３は、送信データバッファ１４１から送信データを読み出すとともに、送信ＣＲＣバッファ１４２からその送信データに対する送信ＣＲＣを読み出す。送信制御回路１４３は、読み出した送信データ及び送信ＣＲＣを並べて、パラレル−シリアル変換し、他の通信装置へ送信する。
【００３９】
受信回路１５０は、受信部の一例であり、受信制御回路１５１、受信データバッファ１５２及び受信ＣＲＣバッファ１５３を有する。
【００４０】
受信制御回路１５１は、送信制御回路１４３と同様の、他の通信装置と通信可能なインタフェース回路を有し、他の通信装置又は中継装置とケーブルを用いて電気的に接続して各種のデータ及び情報を受信する。
【００４１】
受信制御回路１５１は、他の通信装置から送信された信号をシリアル−パラレル変換し、受信データ及びその受信データに対する受信ＣＲＣを受信する。受信制御回路１５１は、受信データを受信データバッファ１５２に書き込むとともに、受信ＣＲＣを受信ＣＲＣバッファ１５３に書き込む。
【００４２】
受信データバッファ１５２は、ＲＡＭ等のメモリ装置を有し、受信制御回路１５１から書き込まれた受信データを一旦格納する。
【００４３】
受信ＣＲＣバッファ１５３は、ＲＡＭ等のメモリ装置を有し、受信制御回路１５１から書き込まれた受信ＣＲＣを一旦格納する。
【００４４】
検証回路１６０は、検証部の一例であり、分割回路１６１、加算回路１６２及び一致回路１６３を有する。
【００４５】
分割回路１６１は、生成回路１３０の分割回路１３１と同様の回路であり、受信データバッファ１５２から受信データを読み出し、受信データに基づく値を複数のグループに分割し、各グループの有効桁の桁値を出力する。本実施形態では、分割回路１６１は、３２ビットの受信データを、図２に示した第１〜第４グループの４つのグループに分割し、第０〜第７ビットの桁値と、第８〜第１５ビットの桁値と、第１６〜第２３ビットの桁値と、第２４〜第３１ビットの桁値を出力する。
【００４６】
検証回路１６０は、分割回路１６１が出力した各グループの各桁値をそれぞれ記憶装置１１０の各テーブルに入力し、各グループ毎に記憶装置１１０の各テーブルを参照して、各グループに含まれる各値を所定除数値で除算した剰余値を取得する。
【００４７】
本実施形態では、検証回路１６０は、第１テーブル１１１を参照し、第０〜第７ビットの桁値をインデックスとして、受信データの内、第０〜第７ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。同様に、検証回路１６０は、第２テーブル１１２を参照し、第８〜第１５ビットの桁値をインデックスとして、受信データの内、第８〜第１５ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。同様に、検証回路１６０は、第３テーブル１１３を参照し、第１６〜第２３ビットの桁値をインデックスとして、送信データの内、第１６〜第２３ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。同様に、検証回路１６０は、第４テーブル１１４を参照し、第２４〜第３１ビットの桁値をインデックスとして、送信データの内、第２４〜第３１ビット以外のビットを０とした値を所定除数値で除算した剰余値を取得する。
【００４８】
上述したように、記憶装置１１０は、マルチポートメモリであり、送信ＣＲＣの生成時及び受信ＣＲＣの検証時に生成回路１３０及び検証回路１６０から同時に参照可能である。したがって、通信装置１００は、チェックコードの生成時及び検証時に各テーブルを共用できるため、記憶装置１１０に保持しておくテーブルのサイズを低減させることが可能となる。
【００４９】
加算回路１６２は、生成回路１３０の加算回路１３２と同様の回路であり、各テーブルを参照して取得した各剰余値をモジュロ２加算し、各剰余値の総和を算出し、一致回路１６３に出力する。本実施形態では、一致回路１６３は、８ビットの各剰余値をモジュロ２加算して８ビットの総和値を算出し、出力する。
【００５０】
一致回路１６３は、加算回路１６２から出力された各剰余値の総和に基づいて受信データ及び受信ＣＲＣを検証する。一致回路１６３は、受信ＣＲＣバッファ１５３から受信ＣＲＣを読み出し、加算回路１６２から出力された各剰余値の総和と比較する。一致回路１６３は、一致する場合、受信データに誤りがないことを示す値を、一致しない場合、受信データに誤りがあることを示す値を、それぞれ検証結果としてＣＰＵ１２０に出力する。
【００５１】
ＣＰＵ１２０は、受信データバッファ１５２から受信データを読み出すとともに、一致回路１６３から出力された、その受信データに対する検証結果に基づいて、受信データに誤りがあるか否かを判定する。
【００５２】
このように、検証回路１６０は、受信データから剰余値を算出し、算出した剰余値と受信ＣＲＣが一致するか否かによって受信データ及び受信ＣＲＣを検証する。
【００５３】
なお、検証回路１６０は、受信データに受信ＣＲＣを加算した加算値の剰余値を算出し、算出した剰余値が０であるか否かによって受信データ及び受信ＣＲＣを検証してもよい。その場合、検証回路１６０は、受信データと受信ＣＲＣを加算して出力する加算回路を更に有し、分割回路１６１は、受信データ及び受信ＣＲＣの加算値を複数のグループに分割する。検証回路１６０は、各グループ毎に記憶装置１１０の各テーブルを参照して、分割回路１６１が出力した各グループの各桁値に対応する剰余値を取得し、加算回路１６２は、各剰余値の総和値を算出する。一致回路１６３は、各剰余値の総和と０を比較し、一致する場合、受信データに誤りがないことを示す値を、一致しない場合、受信データに誤りがあることを示す値を、それぞれ検証結果としてＣＰＵ１２０に出力する。ＣＰＵ１２０は、検証結果に基づいて、受信データに誤りがあるか否かを判定する。
【００５４】
または、生成回路１３０は、送信データをＣＲＣの桁数（８ビット）分だけ桁上げし（即ち、ＣＲＣの桁数分だけ左シフトし、新たに追加された下位ビットに０を埋める）、その桁上げしたデータについて送信ＣＲＣを算出してもよい。その場合、生成回路１３０は、桁上げしたデータを複数のグループに分割し、各グループ毎に剰余値を取得し、取得した剰余値の総和に基づいて送信ＣＲＣを生成する。送信回路１４０は、桁上げしたデータと送信ＣＲＣのモジュロ２加算（桁上げした下位ビットへの加算）を行ったデータを他の通信装置へ送信する。一方、そのデータを受信した通信装置の検証回路１６０は、受信したデータ全体（即ち、桁上げしたデータと送信ＣＲＣの加算値）を複数のグループに分割し、各グループ毎に剰余値を取得し、取得した剰余値の総和を算出する。一致回路１６３は、各剰余値の総和と０を比較し、一致する場合、受信データに誤りがないことを示す値を、一致しない場合、受信データに誤りがあることを示す値を、それぞれ検証結果としてＣＰＵ１２０に出力する。ＣＰＵ１２０は、検証結果に基づいて、受信データに誤りがあるか否かを判定する。
【００５５】
以下、データを複数のグループに分割し、複数のグループ毎に除数値で除算した剰余値の総和に基づいて、そのデータの剰余値を算出できる理由及び効果について説明する。
【００５６】
例えば、３２ビットのデータX=AABBCCDD(h)を９ビットの除数値n（但し最上位ビットが1）で除算した８ビットの剰余値を算出する場合、モジュロ２除算による剰余計算では分配則が成立するため、以下の等式（１）が成立する。なお、等式（１）において、modはモジュロ２除算による剰余を求める演算子を表す。
X mod n = AABBCCDD(h) mod n
= (AA000000(h) + 00BB0000(h) + 0000CC00(h) + 000000DD(h)) mod n
= (AA000000(h) mod n) + (00BB0000(h) mod n) 
+ (0000CC00(h) mod n) + (000000DD(h) mod n)    （１）
【００５７】
したがって、データを複数のグループに分割し、複数のグループ毎に除数値で除算した剰余値の総和は、そのデータを除数値で直接除算した剰余値と等しくなる。
【００５８】
例えば、３２ビットのデータを９ビットの除数値で除算した８ビットの剰余値を予めテーブルに格納しておく場合、テーブルのサイズは、８ビット×（２の３２乗）＝約４ギガバイトとなる。ＣＲＣの生成と検証を行う通信装置では、このテーブルが２つ必要であるため、テーブルの全サイズは約８ギガバイトとなる。一方、本実施形態の通信装置１００では、８ビット×（２の８乗）＝２５６バイトのテーブルを４つ記憶しておけばよいため、テーブルの全サイズは１０２４バイトとなり、記憶装置１１０の記憶容量を大幅に低減させることができる。
【００５９】
なお、８ビットのデータを９ビットの除数値で除算した場合、その剰余値は、元の８ビットのデータと同一の値となる。したがって、第１グループの各値を９ビットの除数値で除算した剰余値は、第１グループの各値と同一の値となる。そこで、第１グループに対応する第１テーブル１１１を省略し、分割回路１３１又は１６１が出力した第１グループの各桁値を直接加算回路１３２又は１６２に入力させてもよい。これにより、記憶装置１１０の記憶容量をさらに低減させるとともに、通信装置１００の回路構成を単純化させることが可能となる。
【００６０】
また、通信装置１００が有する送信ポート及び受信ポートは、それぞれ１つのみに限定されず、複数でもよい。その場合、通信装置１００は、送信ポートの数だけ、生成回路１３０及び送信回路１４０を有し、受信ポートの数だけ受信回路１５０及び検証回路１６０を有する。一方、通信装置１００は、記憶装置１１０を一つのみ有し、その記憶装置１１０を全ての生成回路１３０及び検証回路１６０から同時にアクセス可能に構成する。その場合、各生成回路１３０及び各検証回路１６０は、一つの記憶装置１１０に格納された各テーブルを共用できる。したがって、通信装置１００は、記憶装置のサイズ及び数を増大させることなく、送信ポート及び受信ポートの数を増大させることが可能となる。
【００６１】
図３は、通信装置１００による送信処理の動作の例を示すフローチャートである。以下、図３に示したフローチャートを参照しつつ、送信処理の動作を説明する。なお、以下に説明する動作のフローは、主にＣＰＵ１２０により通信装置１００の各要素と協働して実行される。
【００６２】
最初に、ＣＰＵ１２０は、送信データを生成回路１３０及び送信回路１４０に出力する（ステップＳ１０１）。次に、分割回路１３１は、送信データを複数のグループに分割し、各グループの有効桁の桁値を出力する（ステップＳ１０２）。次に、生成回路１３０は、各グループの各桁値をそれぞれ各テーブルに入力し、各グループ毎に各テーブルを参照して、各グループに含まれる各値を所定除数値で除算した剰余値を取得する（ステップＳ１０３）。次に、加算回路１３２は、各剰余値をモジュロ２加算し（ステップＳ１０４）、各剰余値の総和を送信ＣＲＣとして生成し、送信回路１４０に出力する（ステップＳ１０５）。次に、送信制御回路１４３は、送信データを送信ＣＲＣとともに、他の通信装置へ送信し（ステップＳ１０６）、一連のステップを終了する。
【００６３】
図４は、通信装置１００による受信処理の動作の例を示すフローチャートである。以下、図４に示したフローチャートを参照しつつ、受信処理の動作を説明する。なお、以下に説明する動作のフローは、主にＣＰＵ１２０により通信装置１００の各要素と協働して実行される。
【００６４】
最初に、受信制御回路１５１は、他の通信装置から、受信データ及びその受信データに対する受信ＣＲＣを受信する（ステップＳ２０１）。次に、分割回路１６１は、受信データを複数のグループに分割し、各グループの有効桁の桁値を出力する（ステップＳ２０２）。次に、検証回路１６０は、各グループの各桁値をそれぞれ各テーブルに入力し、各グループ毎に各テーブルを参照して、各グループに含まれる各値を所定除数値で除算した剰余値を取得する（ステップＳ２０３）。次に、加算回路１６２は、各剰余値をモジュロ２加算し、各剰余値の総和を算出し、一致回路１６３に出力する（ステップＳ２０４）。次に、一致回路１６３は、各剰余値の総和と受信ＣＲＣを比較することにより、受信データ及び受信ＣＲＣを検証し、検証結果をＣＰＵ１２０に出力する（ステップＳ２０５）。次に、ＣＰＵ１２０は、受信データバッファ１５２から受信データを読み出すとともに、検証結果に基づいて、受信データに誤りがあるか否かを判定し（ステップＳ２０６）、一連のステップを終了する。
【００６５】
以上詳述したように、通信装置１００は、ＣＲＣの生成時及び検証時に、剰余値を算出するためのデータを共用できるため、高速にＣＲＣを処理しつつ、記憶装置に格納しておくデータ量をより低減させることが可能となった。これにより、記憶装置のサイズ及びコストを低減させることが可能となり、通信装置全体のサイズ及びコストを低減させることが可能となった。
【００６６】
記憶装置としてシングルポートメモリを利用した場合、同時にアクセス可能なアドレス及びデータは１セットのみであるため、ＣＲＣの生成と検証のタイミングが重なった場合に処理の遅延が発生する。一方、通信装置１００は、記憶装置１１０としてマルチポートメモリを利用することにより、同時に異なるアドレスから記憶装置１１０を参照することが可能となった。したがって、通信装置１００は、ＣＲＣの生成と検証のタイミングが重なった場合でも、処理の遅延が発生することを防止することが可能となった。
【００６７】
図５及び図６は、他の実施形態に係る通信装置のハードウェア構成図示す図である。なお、図５及び図６は、同じ通信装置２００のハードウェア構成図を示しており、図５では検証回路２７０の構成の表示を省略し、図６では生成回路２４０の構成の表示を省略している。
【００６８】
図５及び図６に示すように、通信装置２００は、第１記憶装置２１０と、第２記憶装置２２０と、ＣＰＵ２３０と、生成回路２４０と、送信回路２５０と、受信回路２６０と、検証回路２７０とを有する。以下、通信装置２００の各部について詳細に説明する。なお、ＣＰＵ２３０、生成回路２４０及び送信回路２５０は、それぞれ図１に示した通信装置１００のＣＰＵ１２０、生成回路１３０及び送信回路１４０と同様であるため、詳細な説明を省略する。
【００６９】
第１記憶装置２１０は、第１記憶部の一例であり、ＲＯＭ等のメモリ装置を有する。なお、第１記憶装置２１０は、レジスタにより構成されてもよい。第１記憶装置２１０は、マルチポートメモリであり、第１データ２１１、第２データ２１２、第３データ２１３及び第４データ２１４を保持する。第１記憶装置２１０では、図２に示したように、複数のグループが設定される。
【００７０】
第１データ２１１は、第１グループにおける最小値（00000001(h)）を所定除数値で除算した剰余値である。第２データ２１２は、第２グループにおける最小値（00000100(h)）を所定除数値で除算した剰余値である。第３データ２１３は、第３グループにおける最小値（00010000(h)）を所定除数値で除算した剰余値である。第４データ２１４は、第４グループにおける最小値（01000000(h)）を所定除数値で除算した剰余値である。このように、第１記憶装置２１０は、各グループにおける最小値を所定値で除算した剰余値をグループ毎に保持する。
【００７１】
第２記憶装置２２０は、第２記憶部の一例であり、ＲＯＭ等のメモリ装置を有する。第２記憶装置２２０は、マルチポートメモリであり、第２記憶装置２２０には、共通テーブル２２１が記憶される。
【００７２】
共通テーブル２２１は、所定の複数の値をそれぞれ所定除数値で除算した複数の剰余値を、その複数の値のそれぞれをインデックスとして保持する。所定の複数の値は、０から、各グループの桁値の最大値の２乗までの値である。即ち、３２ビットのデータを４つのグループに分割する場合、所定の複数の値は、0000(h)から(00FF(h)の２乗)までの65026個の値である。
【００７３】
生成回路２４０は、生成部の一例であり、分割回路２４１及び加算回路２４２を有する。さらに、生成回路２４０は、各グループ毎に、それぞれ第１乗算回路２４３、第２乗算回路２４４、第３乗算回路２４５及び第４乗算回路２４６を有する。
【００７４】
分割回路２４１は、図１に示した分割回路１３１と同様の回路であり、ＣＰＵ２３０から出力された送信データを複数のグループに分割し、各グループの有効桁の桁値を出力する。
【００７５】
第１〜第４乗算回路２４３〜２４６は、それぞれ、第１記憶装置２１０の各データを参照して各グループにおける最小値を所定除数値で除算した剰余値を取得する。第１〜第４乗算回路２４３〜２４６は、それぞれ、取得した剰余値と分割回路２４１が出力した各グループの各桁値をモジュロ２乗算することにより、乗算値を算出し、出力する。
【００７６】
生成回路２４０は、第１〜第４乗算回路２４３〜２４６が出力した各グループに係る乗算値をそれぞれ第２記憶装置２２０の共通テーブル２２１に入力し、第２記憶装置２２０の共通テーブル２２１を参照して、各乗算値に対応する剰余値を取得する。生成回路２４０は、共通テーブル２２１を参照し、各乗算値をインデックスとして、各乗算値を所定除数値で除算した剰余値を取得する。
【００７７】
加算回路２４２は、図１に示した加算回路１３２と同様の回路であり、共通テーブル２２１を参照して取得した各剰余値をモジュロ２加算し、各剰余値の総和を送信ＣＲＣとして生成し、送信回路２５０に出力する。
【００７８】
検証回路２７０は、検証部の一例であり、分割回路２７１、加算回路２７２及び一致回路２７３を有する。さらに、検証回路２７０は、各グループ毎に、それぞれ第５乗算回路２７４、第６乗算回路２７５、第７乗算回路２７６及び第８乗算回路２７７を有する。
【００７９】
分割回路２７１は、生成回路２４０の分割回路２４１と同様の回路であり、受信データバッファ２６２から受信データを読み出し、受信データに基づく値を複数のグループに分割し、各グループの有効桁の桁値を出力する。
【００８０】
第５〜第８乗算回路２７４〜２７７は、それぞれ、第１記憶装置２１０の各データを参照して各グループにおける最小値を所定除数値で除算した剰余値を取得する。第５〜第８乗算回路２７４〜２７７は、それぞれ、取得した剰余値と分割回路２７１が出力した各グループの有効桁の桁値をモジュロ２乗算することにより、乗算値を算出し、出力する。
【００８１】
上述したように、第１記憶装置２１０は、マルチポートメモリであり、送信ＣＲＣの生成時及び受信ＣＲＣの検証時に生成回路２４０及び検証回路２７０から同時に参照可能である。したがって、通信装置２００は、チェックコードの生成時及び検証時に各データを共用できるため、第１記憶装置２１０に保持しておくデータのサイズを低減させることが可能となる。
【００８２】
検証回路２７０は、第５〜第８乗算回路２７４〜２７７が出力した各グループに係る乗算値をそれぞれ第２記憶装置２２０の共通テーブル２２１に入力し、第２記憶装置２２０の共通テーブル２２１を参照して、各乗算値に対応する剰余値を取得する。検証回路２７０は、共通テーブル２２１を参照し、各乗算値をインデックスとして、各乗算値を所定除数値で除算した剰余値を取得する。
【００８３】
上述したように、第２記憶装置２２０は、マルチポートメモリであり、送信ＣＲＣの生成時及び受信ＣＲＣの検証時に生成回路２４０及び検証回路２７０から同時に参照可能である。さらに、第２記憶装置２２０は、生成回路２４０及び検証回路２７０から複数のグループについて同時に参照可能である。したがって、通信装置２００は、チェックコードの生成時及び検証時に各テーブルを共用できるため、第２記憶装置２２０に保持しておくテーブルのサイズを低減させることが可能となる。
【００８４】
加算回路２７２は、生成回路２４０の加算回路２４２と同様の回路であり、共通テーブル２２１を参照して取得した各剰余値をモジュロ２加算し、各剰余値の総和を算出し、一致回路２７３に出力する。
【００８５】
一致回路２７３は、図１に示した一致回路１６３と同様の回路であり、加算回路２７２から出力された各剰余値の総和に基づいて受信データ及び受信ＣＲＣを検証する。
【００８６】
以下、データを複数のグループに分割し、各グループにおける最小値を除数値で除算した剰余値と各グループの有効桁の桁値の乗算値を、除数値で除算した剰余値の総和に基づいて、そのデータの剰余値を算出できる理由及び効果について説明する。
【００８７】
例えば、３２ビットのデータX=AABBCCDD(h)を９ビットの除数値n（但し最上位ビットが1）で除算した８ビットの剰余値を算出する場合、モジュロ２除算による剰余計算では分配則が成立するため、以下の等式（２）が成立する。なお、等式（２）において、modはモジュロ２除算による剰余を求める演算子を表す。
X mod n = AABBCCDD(h) mod n
= (AA000000(h) + 00BB0000(h) + 0000CC00(h) + 000000DD(h)) mod n
= (AA000000(h) mod n) + (00BB0000(h) mod n)
+ (0000CC00(h) mod n) + (000000DD(h) mod n)
= ((AA(h) * 01000000(h)) mod n) + ((BB(h) * 00010000(h)) mod n)
+ ((CC(h) * 00000100(h)) mod n) + ((DD(h) * 00000001(h)) mod n)     （２）
【００８８】
ここで、データS,Tについて、S,Tをそれぞれ除数値nで除算した商をQs,Qtとし、剰余値をRs,Rtとすると、S = Qs * n + Rs、T = Qt * n + Qsと表せる。このSとTの乗算値を除数値nで除算した剰余値について、以下の等式（３）が成立する。即ち、SとTの乗算値を除数値nで除算した剰余値は、Sを除数値nで除算した剰余値とTを除数値nで除算した剰余値の乗算値を、除数値nで除算した剰余値と等しくなる。
(S * T) mod n = ((Qs * n + Rs) * (Qt * n + Rt)) mod n
= (((Qs * Qt * n + Qs * Rt + Rs * Qt) * n) + (Rs * Rt)) mod n
= (Rs * Rt) mod n
= ((S mod n) * (T mod n)) mod n    （３）
【００８９】
したがって、等式（２）は、以下の等式（４）のように変形できる。
X mod n = (((AA(h) mod n) * (01000000(h) mod n)) mod n)
+ (((BB(h) mod n) * (00010000(h) mod n)) mod n)
+ (((CC(h) mod n) * (00000100(h) mod n)) mod n)
+ (((DD(h) mod n) * (00000001(h) mod n)) mod n)    （４）
【００９０】
ここで、nは９ビットの除数値であるから、(AA(h) mod n)、((BB(h) mod n)、((CC(h) mod n)、((DD(h) mod n)は、それぞれAA(h)、BB(h)、CC(h)、DD(h)と等しくなる。したがって、等式（４）は、以下の等式（５）のように変形できる。
X mod n = ((AA(h) * (01000000(h) mod n)) mod n)
+ ((BB(h) * (00010000(h) mod n)) mod n)
+ ((CC(h) * (00000100(h) mod n)) mod n)
+ ((DD(h) * (00000001(h) mod n)) mod n)    （５）
【００９１】
したがって、データを複数のグループに分割し、各グループにおける最小値を除数値で除算した剰余値と各グループの有効桁の桁値の乗算値を除数値で除算した剰余値の総和は、そのデータを除数値で直接除算した剰余値と等しくなる。
【００９２】
上記したように、３２ビットのデータを９ビットの除数値で除算した８ビットの剰余値を予めテーブルに格納しておく場合、テーブルのサイズは、８ビット×（２の３２乗）＝約４ギガバイトとなる。ＣＲＣの生成と検証を行う通信装置では、このテーブルが２つ必要であるため、テーブルの全サイズは約８ギガバイトとなる。一方、本実施形態の通信装置２００では、テーブルのサイズは８ビット×（２の１６乗）＝約６５キロバイトとなり、第２記憶装置２２０の記憶容量を大幅に低減させることができる。
【００９３】
また、モジュロ２乗算は、シフト演算と排他的論理和演算により演算され且つ繰上がりがないため、上位桁の演算結果が下位桁の演算に影響を与えるモジュロ２除算より高速に処理される。したがって、通信装置２００は、ＣＲＣを、除算演算によって生成及び検証する場合よりも高速に、生成及び検証することができる。
【００９４】
なお、通信装置１００について示した各変形例は、通信装置２００に対しても同様に適用することが可能である。
【００９５】
特に、通信装置２００において、第１グループに対応する第１データ２１１を省略し、分割回路２４１又は２７１が出力した第１グループの各桁値を直接共通テーブル２２１のインデックスとして用いてもよい。これにより、第１記憶装置２１０の記憶容量をさらに低減させるとともに、通信装置２００の回路構成を単純化させることが可能となる。
【００９６】
また、共通テーブル２２１は、通信装置１００の第１〜第４テーブル１１１〜１１４と同様に、複数のグループに分割されてもよい。例えば、共通テーブル２２１は、第０〜第７ビットを有効桁とする第１’グループと、第８〜第１５ビットを有効桁とする第２’グループに分割される。
【００９７】
その場合、生成回路２４０は、第１〜第４乗算回路２４３〜２４６がそれぞれ出力した乗算値をそれぞれ二つのグループに分割し、各グループの有効桁の桁値を出力する分割回路を更に有する。生成回路２４０は、その各分割回路が出力した各グループの各桁値をそれぞれ第１’グループのテーブルと第２’グループのテーブルに入力し、各グループ毎に各テーブルを参照して、各グループに含まれる各値を所定除数値で除算した剰余値を取得する。そして、生成回路２４０は、取得した全ての剰余値を加算回路２４２に入力する。
【００９８】
検証回路２７０も生成回路２４０と同様に、第５〜第８乗算回路２７４〜２７７がそれぞれ出力した乗算値をそれぞれ二つのグループに分割し、各グループの有効桁の桁値を出力する分割回路を更に有する。検証回路２７０は、その各分割回路が出力した各グループの各桁値をそれぞれ第１’グループのテーブルと第２’グループのテーブルに入力し、各グループ毎に各テーブルを参照して、各グループに含まれる各値を所定除数値で除算した剰余値を取得する。そして、検証回路２７０は、取得した全ての剰余値を加算回路２７２に入力する。
【００９９】
この場合、通信装置２００は、２５６バイトのテーブルを２つ記憶しておけばよいため、テーブルの全サイズは５１２バイトとなり、第２記憶装置２２０の記憶容量をさらに低減させることができる。
【０１００】
さらに、第１’グループに対応するテーブルを省略し、新たに追加した各分割回路が出力した第１’グループの各桁値を直接、加算回路２４２又は２７２に入力してもよい。この場合、テーブルの全サイズは２５６バイトとなり、第２記憶装置２２０の記憶容量をさらに低減させることができ、通信装置２００の回路構成を単純化させることもできる。
【０１０１】
図７は、通信装置２００による送信処理の動作の例を示すフローチャートである。以下、図７に示したフローチャートを参照しつつ、送信処理の動作を説明する。なお、以下に説明する動作のフローは、主にＣＰＵ２３０により通信装置２００の各要素と協働して実行される。
【０１０２】
最初に、ＣＰＵ２３０は、送信データを生成回路２４０及び送信回路２５０に出力する（ステップＳ３０１）。次に、分割回路２４１は、送信データを複数のグループに分割し、各グループの有効桁の桁値を出力する（ステップＳ３０２）。次に、第１〜第４乗算回路２４３〜２４６は、それぞれ、第１記憶装置２１０の各データを参照して各グループにおける最小値を所定除数値で除算した剰余値を取得する（ステップＳ３０３）。次に、第１〜第４乗算回路２４３〜２４６は、それぞれ、取得した剰余値と分割回路２４１が出力した各グループの各桁値をモジュロ２乗算することにより、乗算値を算出する（ステップＳ３０４）。次に、生成回路２４０は、各グループに係る乗算値をそれぞれ共通テーブル２２１に入力し、共通テーブル２２１を参照して、各乗算値に対応する剰余値を取得する（ステップＳ３０５）。次に、加算回路２４２は、各剰余値をモジュロ２加算し（ステップＳ３０６）、各剰余値の総和を送信ＣＲＣとして生成し、送信回路２５０に出力する（ステップＳ３０７）。次に、送信制御回路２５３は、送信データを送信ＣＲＣとともに、他の通信装置へ送信し（ステップＳ３０８）、一連のステップを終了する。
【０１０３】
図８は、通信装置２００による受信処理の動作の例を示すフローチャートである。以下、図８に示したフローチャートを参照しつつ、受信処理の動作を説明する。なお、以下に説明する動作のフローは、主にＣＰＵ２３０により通信装置２００の各要素と協働して実行される。
【０１０４】
最初に、受信制御回路２６１は、他の通信装置から、受信データ及びその受信データに対する受信ＣＲＣを受信する（ステップＳ４０１）。次に、分割回路２７１は、受信データを複数のグループに分割し、各グループの有効桁の桁値を出力する（ステップＳ４０２）。次に、第５〜第８乗算回路２７４〜２７７は、それぞれ、第１記憶装置２１０の各データを参照して各グループにおける最小値を所定除数値で除算した剰余値を取得する（ステップＳ４０３）。次に、第５〜第８乗算回路２７４〜２７７は、それぞれ、取得した剰余値と各グループの有効桁の桁値をモジュロ２乗算することにより、乗算値を算出する（ステップＳ４０４）。次に、検証回路２７０は、各グループに係る乗算値をそれぞれ各テーブルに入力し、各グループ毎に各テーブルを参照して、各乗算値に対応する剰余値を取得する（ステップＳ４０５）。次に、加算回路２７２は、各剰余値をモジュロ２加算し、各剰余値の総和を算出し、一致回路２７３に出力する（ステップＳ４０６）。次に、一致回路２７３は、各剰余値の総和と受信ＣＲＣを比較することにより、受信データ及び受信ＣＲＣを検証し、検証結果をＣＰＵ２３０に出力する（ステップＳ４０７）。次に、ＣＰＵ２３０は、検証結果に基づいて、受信データに誤りがあるか否かを判定し（ステップＳ４０８）、一連のステップを終了する。
【０１０５】
以上詳述したように、通信装置２００は、ＣＲＣの生成時及び検証時に、剰余値を算出するためのデータを共用できるため、高速にＣＲＣを処理しつつ、記憶装置に格納しておくデータ量をさらに低減させることが可能となった。これにより、記憶装置のサイズ及びコストを低減させることが可能となり、通信装置全体のサイズ及びコストを低減させることが可能となった。
【０１０６】
以上、本発明の好適な実施形態について説明してきたが、本発明はこれらの実施形態に限定されるものではない。例えば、通信装置２００において、第１記憶装置２１０はマルチポートメモリとせずに、通信装置２００は、生成回路２４０用の第１記憶装置と、検証回路２７０用の第１記憶装置を別個に有してもよい。
【０１０７】
また、本発明を適用可能な装置は、通信装置に限定されず、本発明は、例えばハードディスクドライブ等を有し、データの書込みと読出しを同時に行う情報処理装置のように、チェックコードの生成と検証を同時に行う他の装置に適用することも可能である。
【符号の説明】
【０１０８】
１００、２００    通信装置
１１０    記憶装置
１２０、２３０    ＣＰＵ
１３０、２４０    生成回路
１４０、２５０    送信回路
１５０、２６０    受信回路
１６０、２７０    検証回路
２１０    第１記憶装置
２２０    第２記憶装置
【図１】
0006351530.tif 000002
【図２】
0006351530.tif 000003
【図３】
0006351530.tif 000004
【図４】
0006351530.tif 000005
【図５】
0006351530.tif 000006
【図６】
0006351530.tif 000007
【図７】
0006351530.tif 000008
【図８】
0006351530.tif 000009