(57)【特許請求の範囲】
【請求項１】
通信データを受信する受信回路と、
前記通信データを分割した複数の単位データの各々についてパリティビットを生成する複数のパリティ演算部と、
前記複数のパリティ演算部に対応して設けられ、対応するパリティ演算部が出力する前記パリティビットを用いてＣＲＣコードを生成し、前記ＣＲＣコードを用いたエラー検出を実行する複数のＣＲＣエラー検出部と、
前記通信データについてのチェックサムを生成し、前記チェックサムを用いたエラー検出を実行するチェックサムエラー検出部と、
前記複数のＣＲＣエラー検出部の各々における前記ＣＲＣコードを用いたエラー検出の結果と、前記チェックサムエラー検出部における前記チェックサムを用いたエラー検出の結果とに基づいて、前記通信データのエラーを検出する検出回路と、
前記複数のＣＲＣエラー検出部と前記チェックサムエラー検出部とを制御することにより、前記通信データについて、前記ＣＲＣコードを用いたエラー検出と前記チェックサムを用いたエラー検出とを繰返し実行させる周期制御部とを含み、
前記受信回路が、同一の前記通信データを繰返し受信し、
前記チェックサムエラー検出部が、前記周期制御部の制御に従って、現在の通信データのチェックサムと前記現在の通信データの１個前の通信データのチェックサムとを比較することにより、前記チェックサムを用いたエラー検出を実行し、
前記複数のＣＲＣエラー検出部が、前記周期制御部の制御に従って、現在の通信データのＣＲＣコードと前記現在の通信データの１個前の通信データのＣＲＣコードとを比較することにより、前記ＣＲＣコードを用いたエラー検出を実行する
ことを特徴とするエラーチェック回路。
【請求項２】
前記エラーチェック回路が、更に、
前記受信回路で受信した前記通信データを、前記複数の単位データに分割して前記複数のパリティ演算部に出力するバッファ回路を含む
ことを特徴とする請求項１に記載のエラーチェック回路。
【請求項３】
前記複数のＣＲＣエラー検出部が、各々、対応するパリティ演算部が出力する前記パリティビットを用いて前記ＣＲＣコードを生成するＣＲＣ演算部と、前記ＣＲＣコードを用いたエラー検出を実行するＣＲＣ結果保持比較部とを含む
ことを特徴とする請求項１に記載のエラーチェック回路。
【請求項４】
前記チェックサムエラー検出部が、前記通信データの各々についてのチェックサムを生成するサム演算部と、前記チェックサムを用いたエラー検出を実行するサム結果保持比較部とを含む
ことを特徴とする請求項１に記載のエラーチェック回路。
【請求項５】
前記複数のＣＲＣエラー検出部が、各々、対応するパリティ演算部が出力する前記パリティビットを用いて前記ＣＲＣコードを生成するＣＲＣ演算部と、前記ＣＲＣコードを用いたエラー検出を実行するＣＲＣ結果保持比較部とを含み、
前記チェックサムエラー検出部が、前記通信データの各々についてのチェックサムを生成するサム演算部と、前記チェックサムを用いたエラー検出を実行するサム結果保持比較部とを含み、
前記周期制御部が、複数の前記ＣＲＣ演算部と前記サム演算部とを制御することにより、前記通信データについて、前記ＣＲＣコードと前記チェックサムとを生成させる
ことを特徴とする請求項１に記載のエラーチェック回路。
【請求項６】
前記周期制御部が、複数の前記ＣＲＣ結果保持比較部と前記サム結果保持比較部とを制御することにより、予め定められた複数の前記通信データ毎に、前記ＣＲＣコードを用いたエラー検出と前記チェックサムを用いたエラー検出とを実行させる
ことを特徴とする請求項５に記載のエラーチェック回路。
【請求項７】
予め定められたビット数の通信データを受信するステップと、
前記通信データを分割した複数の単位データの各々についてパリティビットを生成するステップと、
前記複数の単位データの各々について生成された前記パリティビットを用いてＣＲＣコードを生成し、前記ＣＲＣコードを用いたエラー検出を実行するステップと、
前記通信データについてのチェックサムを生成し、前記チェックサムを用いたエラー検出を実行するステップと、
前記チェックサムを用いたエラー検出の結果と、前記ＣＲＣコードを用いたエラー検出の結果とに基づいて、前記通信データのエラーを検出するステップと、
前記通信データについて、前記ＣＲＣコードを用いたエラー検出と前記チェックサムを用いたエラー検出とを繰返し実行させるステップとを含み、
前記通信データを受信するステップにおいて、同一の前記通信データを繰返し受信し、
前記チェックサムを用いたエラー検出を実行するステップにおいて、現在の通信データのチェックサムと前記現在の通信データの１個前の通信データのチェックサムとを比較することにより、前記チェックサムを用いたエラー検出を実行し、
前記ＣＲＣコードを用いたエラー検出を実行するステップにおいて、現在の通信データのＣＲＣコードと前記現在の通信データの１個前の通信データのＣＲＣコードとを比較することにより、前記ＣＲＣコードを用いたエラー検出を実行する
ことを特徴とするエラーチェック方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エラーチェック回路及びエラーチェック方法に関する。
【背景技術】
【０００２】
データ処理装置の間又はＬＳＩ（Large Scale Integration）の間においては、数ギガバイトの大容量データが、高速で送信される。このようなデータ送信の信頼性を評価するために、大量のテストデータを高速でデータ送信し、データが正しく送信されたかをチェックする。
【０００３】
データ送信の信頼性を評価の方法として、チェックサムによるチェックが知られている。チェックサムによるチェックにおいては、送信装置において、データのチェックサムが算出され、データに付加されて送信される。この後、受信装置において、受信したデータから生成されたチェックサムが算出され、送信されたチェックサムと受信したデータのチェックサムとが比較され、比較の結果が評価される。
【０００４】
また、他のデータ送信の信頼性を評価の方法として、巡回冗長検査（Cyclic Redundancy Check、以下ＣＲＣという）によるチェックが知られている。ＣＲＣによるチェックにおいては、送信装置のＣＲＣ生成回路において生成されたＣＲＣコードがデータに付加されて送信される。この後、受信装置のＣＲＣチェック回路において、受信したデータから生成したＣＲＣコードと送信されたＣＲＣコードとが比較され、比較の結果が評価される。
【０００５】
また、更に他のデータ送信の信頼性を評価の方法として、比較によるチェックが知られている。比較によるチェックにおいては、送信装置から送信されたデータを受信し、受信したデータと記憶装置に予め保存してある期待値とが比較され、比較の結果が評価される。
【０００６】
なお、内部データの管理・確認方法において、表示デバイスに表示して書換え可能デバイスの素性を確認するための管理記号が格納される領域と、書き込み時に制御プログラムで正当性の確認のための領域を設け、パーソナルコンピュータよりの書き込み信号受信時に、前記制御プログラムで算出した値と比較し、正当性確認時にプログラムやデータを前記書換え可能デバイスの書き込み領域に格納すると共に、当該プログラムやデータの管理記号を前記管理記号格納領域に書き込む手段等が提案されている。
【０００７】
また、ＣＲＴ表示制御回路の試験方式において、ＣＲＴ表示制御回路と、該ＣＲＴ表示制御回路の出力する複数の信号のパリティビットを生成するパリティビット生成回路と、上記ＣＲＴ表示制御回路のクロックと同期したクロックを生成する同期クロック発生回路と、上記パリティビット生成回路の出力するパリティビット列のＣＲＣ演算を同期クロックに従って行うＣＲＣ演算回路等が提案されている。
【０００８】
また、多重通信装置において、送信時、１パケット毎に付加するＣＲＣチェックコード等の誤り検出用データとは別に、内容データに対し、この送信内容データのエラーを検出するための第２の誤り検出用データを付加して送信し、受信したデータフィールドの内容に対し、読み込んだデータに誤りがないか否かをデータフィールド内に含まれる第２の誤り検出用データを用いて判定し、メモリ異常やパラレルバス上のノイズ等によるデータ化けを検出する手段等が提案されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００３−１９６１１４号公報
【特許文献２】特開昭６１−１０７２８６号公報
【特許文献３】特開２０００−２９３４４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
例えば、図７（Ａ）に示すように、装置１０１Ａは、送信データファイル１０２に格納したテスト用データを、高速シリアル信号の伝送路１０５を介して、装置１０１Ｂに送信する。装置１０１Ｂは、装置１０１Ａから受信したテスト用データを、受信データファイル１０３に格納し、データ送信の信頼性を評価する。換言すれば、図７（Ｂ）に示すように、大容量のデータ送信処理２０１が実行された後に、何らかの比較チェック処理２０２が実行される。例えば、前述の比較によるチェックを用いてデータ送信の信頼性を評価する場合には、装置１０１Ｂは、受信し受信データファイル１０３に格納したテスト用データと、期待値ファイル１０４に予め格納された期待値とを比較する。
【００１１】
しかし、チェックサムによるチェックにおいては、テスト用データに付加されて送信されたチェックサムと受信したデータから生成されたチェックサムとが、本来は異なる値であるにも拘らず、偶然により又は桁上がりにより一致してしまう場合がある。この場合、本来は検出されるはずのエラーが検出されない。また、送信側の装置１０１Ａが、テスト用データにチェック専用データとしてのチェックサムを付加する必要がある。また、送信されたチェックサムそれ自体が、正しく送信されない場合がある。
【００１２】
また、ＣＲＣによるチェックにおいては、例えば６４ビットのように、ビット幅の大きいテスト用データについてデータ送信の信頼性を評価する場合、受信側の装置１０１ＢにおけるＣＲＣチェック回路の規模が相当に大きくなり、現実的ではない。換言すれば、ＣＲＣチェック回路の規模が大きくなり、ＣＲＣチェック回路をＦＰＧＡ（Field Programmable Gate Array）に搭載できない場合がある。また、送信側の装置１０１Ａが、テスト用データにチェック専用データとしてのＣＲＣコードを付加する必要がある。
【００１３】
また、比較によるチェックにおいては、図７（Ａ）に示すように、比較チェック処理２０２のための期待値を格納するための期待値ファイル１０４が必要である。データのサイズが数ギガバイトと大きい場合には、期待値を格納するための大規模な記憶領域が必要となる。換言すれば、データ送信の信頼性を評価するためだけに、コストが増加することになり、採用できない。また、データのサイズが大きい場合には、比較チェック処理２０２に時間を要するため、受信したデータの比較チェック処理２０２の実行中は、新たに受信したデータをチェックすることができない。換言すれば、比較チェック処理２０２のための時間が装置１０１Ｂの実際の運用時と異なる結果、装置１０１Ｂの実際の運用におけるデータ送信の信頼性の評価としては適切ではない。
【００１４】
本発明は、送信されるデータにチェック専用データを付加することなく、小規模の回路でデータ送信の正当性を確認することができるエラーチェック回路を提供することを目的とする。
【課題を解決するための手段】
【００１５】
開示されるエラーチェック回路は、受信回路と、複数のパリティ演算部と、複数のＣＲＣエラー検出部と、チェックサムエラー検出部と、検出回路と、周期制御部とを含む。受信回路は、通信データを受信する。複数のパリティ演算部は、通信データを分割した複数の単位データの各々についてパリティビットを生成する。複数のＣＲＣエラー検出部は、複数のパリティ演算部に対応して設けられ、対応するパリティ演算部が出力するパリティビットを用いてＣＲＣコードを生成し、ＣＲＣコードを用いたエラー検出を実行する。チェックサムエラー検出部は、通信データについてのチェックサムを生成し、チェックサムを用いたエラー検出を実行する。検出回路は、複数のＣＲＣエラー検出部の各々におけるＣＲＣコードを用いたエラー検出の結果と、チェックサムエラー検出部におけるチェックサムを用いたエラー検出の結果とに基づいて、通信データのエラーを検出する。周期制御部は、複数のＣＲＣエラー検出部とチェックサムエラー検出部とを制御することにより、通信データについて、ＣＲＣコードを用いたエラー検出とチェックサムを用いたエラー検出とを繰返し実行させる。受信回路が、同一の通信データを繰返し受信し、チェックサムエラー検出部が、周期制御部の制御に従って、現在の通信データのチェックサムと現在の通信データの１個前の通信データのチェックサムとを比較することにより、チェックサムを用いたエラー検出を実行し、複数のＣＲＣエラー検出部が、周期制御部の制御に従って、現在の通信データのＣＲＣコードと現在の通信データの１個前の通信データのＣＲＣコードとを比較することにより、ＣＲＣコードを用いたエラー検出を実行する。
【発明の効果】
【００１６】
開示されるエラーチェック回路によれば、パリティビットとＣＲＣコードの組み合わせを用いたチェックと、チェックサムを用いたチェックとにより、送信されるデータにチェック専用データを付加することなく、小規模の回路でデータ送信の正当性を確認することができる。
【図面の簡単な説明】
【００１７】
【図１】データ処理装置の構成の一例等についての説明図である。
【図２】エラーチェック回路の構成の一例を示す図である。
【図３】パリティ演算部の構成の一例を示す図である。
【図４】ＣＲＣ演算部の構成の一例を示す図である。
【図５】データのエラー検出処理の説明図である。
【図６】データのエラー検出処理の説明図である。
【図７】データ処理装置におけるデータ送信の説明図である。
【発明を実施するための形態】
【００１８】
図１は、データ処理装置の構成の一例等についての説明図である。
【００１９】
データ処理装置は、図１（Ａ）に示すように、第１の装置１Ａと、第２の装置１Ｂと、これらの間を接続するケーブル１５とを含む。第１の装置１Ａ及び第２の装置１Ｂは、例えば、大規模な信号処理を実行するデータ処理装置である。第１の装置１Ａ及び第２の装置１Ｂは、大規模な信号処理を実行する回路を搭載するＦＰＧＡ等の半導体装置であっても良い。ケーブル１５は、例えば、シリアル伝送を行うケーブルである。
【００２０】
図１（Ａ）においては、第１の装置１Ａが第２の装置１Ｂへ信号を送信し、第２の装置１Ｂが第１の装置１Ａから送信された信号を受信する。換言すれば、図１は、第１の装置１Ａが送信装置であり、第２の装置１Ｂが受信装置である場合について示す。
【００２１】
なお、第１の装置１Ａ及び第２の装置１Ｂが、相互にデータの転送を行うようにしても良い。この場合、ケーブル１５は、例えば、双方向にシリアル伝送を行うケーブルである。この場合、第１の装置１Ａ及び第２の装置１Ｂは、共に、信号を送受信する送受信装置であり、従って、第１の装置１Ａは、第２の装置１Ｂと同様の構成を含む。
【００２２】
第２の装置１Ｂは、受信回路２、エラーチェック回路３、信号処理回路４を含む。受信回路２は、ケーブル１５を介して、第１の装置１Ａから送信された信号を受信し、エラーチェック回路３及び信号処理回路４に入力する。エラーチェック回路３は、入力された信号についてのエラー検出処理を実行する。信号処理回路４は、受信回路２から入力された信号についてのデータ処理を実行する。
【００２３】
受信回路２は、図１（Ｂ）に示すように、装置１Ａから、複数のデータ送信処理＃１〜＃３を、予め定められたテスト周期で、繰り返し受信する。換言すれば、各々のデータ送信処理＃１〜＃３がテスト周期である。従って、各々のデータ送信処理＃１〜＃３の長さは等しい。エラーチェック回路３は、複数のデータ送信処理＃１〜＃３の受信に応じて、チェック処理＃１〜＃３を、予め定められたテスト周期で、繰り返し実行する。後述するように、チェック処理＃１〜＃３は、事実上、データ送信処理＃１〜＃３と並列して実行されるので、チェック処理＃１〜＃３の期間は無視でき、データ送信処理の後にチェック処理が実行されることは無い。
【００２４】
なお、エラーチェック回路３が、チェック処理の都度に、チェック処理の結果を出力するようにしても良い。この場合でも、チェック処理の結果の出力は、データ送信処理と並列に実行することができる。
【００２５】
図２は、主として、エラーチェック回路の構成の一例を示す図である。
【００２６】
受信回路２は、第２の装置１Ｂの外部から、換言すれば、第１の装置１Ａから、ケーブル１５を介して、通信信号として、シリアル信号を受信する。受信回路２は、シリアルパラレル変換回路において、シリアル信号を、パラレル信号に変換する。パラレル信号は、予め定められたビット幅とされ、例えば６４ビット幅とされる。パラレル信号のビット幅は６４ビットに限られない。受信回路２は、６４ビットのパラレル信号を、エラーチェック回路３のデータ受信バッファ５に入力する。
【００２７】
なお、受信回路２が、光ファイバケーブルを介して光信号（シリアル信号）を受信して、ＯＥ変換回路において光信号（シリアル信号）を電気信号（シリアル信号）に変換するようにしても良い。この場合、電気信号に変換されたシリアル信号が、パラレル信号に変換される。
【００２８】
また、受信回路２は、第１の装置１Ａから、ケーブル１５を介して、通信データの受信に先立って、テスト開始信号を受信する。テスト開始信号は、例えばテストの開始、換言すれば、通信データの送信の開始を指示する信号である。テスト開始信号により、テストの開始のタイミング、換言すれば、通信データの位置が定まる。これにより、受信回路２は、受信した複数の通信データを順次６４ビット幅のパラレル信号に変換し、受信した順にデータ受信バッファ５に格納することができる。
【００２９】
なお、テスト開始信号として、フレーム信号を用いるようにしても良い。フレーム信号は、例えばフレームの開始、換言すれば、通信データの送信の開始を指示する信号である。フレーム信号により、フレームの開始位置、換言すれば、通信データの位置が定まる。これにより、通信データが、テスト用のデータである場合に限らず、装置１Ａ及び装置１Ｂの運用中にこれらの間で送信されるデータについて、エラー検出を実行することができる。この場合、前述したように、チェック処理＃１〜＃３はデータ送信処理＃１〜＃３と並列して実行され、データ送信処理の後にチェック処理が実行されないので、エラー検出が、運用中の装置１Ａ及び装置１Ｂの間における通信の障害となることはない。従って、図１のデータ処理装置の運用中においても、通信データの送受信と並列して、当該通信データの正当性をチェックすることができる。
【００３０】
エラーチェック回路３は、データ受信バッファ５と、複数のパリティ演算部６と、複数のＣＲＣエラー検出部７と、チェックサムエラー検出部１０と、検出回路１４とを含む。複数のＣＲＣエラー検出部７は、各々、ＣＲＣ演算部８と、ＣＲＣ結果保持比較部９とを含む。チェックサムエラー検出部１０は、サム演算部１１と、サム結果保持比較部１２とを含む。
【００３１】
データ受信バッファ５は、受信回路２で受信した通信データを、複数の単位データに分割して、複数のパリティ演算部６に出力する。例えば、通信データのビット幅が６４ビットであるので、図２の例においては、８個の８ビットデータに分割される。従って、単位データのビット幅は８ビットであり、パリティ演算部６は８個設けられる。単位データのビット幅は８ビットに限られず、パリティ演算部６の数は８個に限られない。パリティ演算部６毎に、入力される単位データ、換言すれば、６４ビットの通信データにおけるビット位置が、予め定められる。
【００３２】
複数のパリティ演算部６は、各々、パリティ演算を実行する回路であり、通信データを分割した複数の単位データの各々についてパリティビットを生成する。図２の例において、パリティ演算部６は、８ｂｉｔ偶数パリティ演算を実行して、１ビットのパリティビットを出力する演算回路である。
【００３３】
図３は、パリティ演算部の構成の一例を示す図である。
【００３４】
パリティ演算部６は、７個の２入力の排他的論理和回路（以下、ＸＯＲゲートという）６１Ａ〜６１Ｇを含む。データ受信バッファ５から出力された第０ビット（ｂｉｔ０）〜第７ビット（ｂｉｔ７）の８ビットのデータであって、当該パリティ演算部６に対応するデータが、図３に示すように、パリティ演算部６に入力される。
【００３５】
具体的には、ｂｉｔ０及びｂｉｔ１がＸＯＲゲート６１Ａに入力され、ｂｉｔ２及びｂｉｔ３がＸＯＲゲート６１Ｂに入力される。ｂｉｔ４及びｂｉｔ５がＸＯＲゲート６１Ｃに入力され、ｂｉｔ６及びｂｉｔ７がＸＯＲゲート６１Ｄに入力される。ＸＯＲゲート６１Ａ及びＸＯＲゲート６１Ｂの出力が、ＸＯＲゲート６１Ｅに入力され、ＸＯＲゲート６１Ｃ及びＸＯＲゲート６１Ｄの出力が、ＸＯＲゲート６１Ｆに入力される。更に、ＸＯＲゲート６１Ｅ及びＸＯＲゲート６１Ｆの出力が、ＸＯＲゲート６１Ｇに入力される。
【００３６】
以上のような排他的論理和演算の組み合わせにより、ＸＯＲゲート６１の出力として、第０ビット（ｂｉｔ０）〜第７ビット（ｂｉｔ７）の８ビットのデータについての偶数パリティが得られる。パリティ演算部６が出力する偶数パリティは、１ビットである。パリティ演算部６は、１ビットの偶数パリティを、対応するＣＲＣエラー検出部７のＣＲＣ演算部８に入力する。換言すれば、パリティ演算部６により生成されるパリティは、パリティチェック用ではなく、エラーの有無を示す情報を加味した上で、受信した通信データを圧縮したデータである。
【００３７】
なお、パリティ演算部６が奇数パリティを生成するようにしても良い。また、パリティ演算部６が、８ビットの単位データ以外のビット幅の単位データについて、パリティビットを生成するようにしても良い。また、パリティ演算部６が、複数のビットを含むパリティビットを生成するようにしても良い。
【００３８】
図２に戻って、複数のＣＲＣエラー検出部７は、複数のパリティ演算部６に対応して設けられ、対応するパリティ演算部６が出力するパリティビットを用いてＣＲＣコードを生成し、ＣＲＣコードを用いたエラー検出を実行する。このように、ＣＲＣコードは受信装置である第２の装置１Ｂにおいて生成される。従って、送信装置である第１の装置１Ａは、ＣＲＣコードを生成して通信データに付加して送信する必要が無く、ＣＲＣコード生成回路を備える必要も無い。また、ＣＲＣコードは、エラーの有無を示す情報を加味した上で通信データを圧縮したパリティビットを用いて生成される。従って、ＣＲＣエラー検出部７の回路規模を小さくすることができ、かつ、エラーの有無を示す情報を含んだデータに基づいてＣＲＣコードを生成することができる。
【００３９】
複数のＣＲＣエラー検出部７は、各々、ＣＲＣ演算部８と、ＣＲＣ結果保持比較部９とを含む。ＣＲＣ演算部８は、対応するパリティ演算部６が出力するパリティビットを用いてＣＲＣコードを生成する。図２の例において、ＣＲＣ演算部８は、図４に示すように、ＣＲＣ−１６−ＣＣＩＴＴの演算を実行する演算回路である。ＣＲＣ結果保持比較部９は、ＣＲＣコードを用いたエラー検出を実行する。
【００４０】
図４は、ＣＲＣ演算部の構成の一例を示す図である。
【００４１】
ＣＲＣ演算部８は、３個の２入力のＸＯＲゲート８１Ａ〜８１Ｃと、５個のフリップフロップ回路（以下、ＦＦ回路）８２Ａと、７個のＦＦ回路８２Ｂと、４個のＦＦ回路８２Ｃとを含む。ＦＦ回路８２Ａ〜８２Ｃの各々の初期値は、「１」とされる。
【００４２】
具体的には、ＸＯＲゲート８１Ａに対応して、第１のシフトレジスタが設けられる。第１のシフトレジスタは、５個のＦＦ回路８２Ａを含む。ＸＯＲゲート８１Ｂに対応して、第２のシフトレジスタが設けられる。第２のシフトレジスタは、７個のＦＦ回路８２Ｂを含む。ＸＯＲゲート８１Ｃに対応して、第３のシフトレジスタが設けられる。第３のシフトレジスタは、４個のＦＦ回路８２Ｃを含む。
【００４３】
パリティ演算部６から出力された１ビットの偶数パリティが、図４に示すように、ＣＲＣ演算部８のＸＯＲゲート８１Ａに入力される。また、ＸＯＲゲート８１Ａには、第３のシフトレジスタの出力、換言すれば、後述するｂｉｔ１５が入力される。
【００４４】
ＸＯＲゲート８１Ａの出力は、５個のＦＦ回路８２Ａ、換言すれば、第１のシフトレジスタに入力される。また、ＸＯＲゲート８１Ａの出力は、ＸＯＲゲート８１Ｂ、及び、ＸＯＲゲート８１Ｃに入力される。第１のシフトレジスタの出力、換言すれば、後述するｂｉｔ４は、ＸＯＲゲート８１Ｂに入力される。第２のシフトレジスタの出力、換言すれば、後述するｂｉｔ１１は、ＸＯＲゲート８１Ｃに入力される。
【００４５】
以上のような演算により、１６ビットのＣＲＣコードが得られる。具体的には、第１のシフトレジスタの各桁の出力、換言すれば、５個のＦＦ回路８２Ａの出力が、ＣＲＣコードのｂｉｔ０〜ｂｉｔ４として出力される。第２のシフトレジスタの各桁の出力、換言すれば、７個のＦＦ回路８２Ｂの出力が、ＣＲＣコードのｂｉｔ５〜ｂｉｔ１１として出力される。第３のシフトレジスタの各桁の出力、換言すれば、４個のＦＦ回路８２Ｃの出力が、ＣＲＣコードのｂｉｔ１２〜ｂｉｔ１５として出力される。
【００４６】
これにより、ＣＲＣ演算部８において、Ｘ１６＋Ｘ１２＋Ｘ５＋１の演算が実行され、１６ビットのＣＲＣコードが得られる。ＣＲＣ演算部８は、１６ビットのＣＲＣコードを、対応するＣＲＣ結果保持比較部９に出力する。
【００４７】
なお、ＣＲＣ演算部８が、他の演算によって１６ビットのＣＲＣコードを生成する回路を含むようにしても良い。また、ＣＲＣ演算部８が、他のＣＲＣコードを生成する演算回路であっても良い。
【００４８】
図２に戻って、ＣＲＣ結果保持比較部９には、対応するＣＲＣ演算部８から出力された１６ビットのＣＲＣコードが、そのまま入力される。これにより、当該新たなＣＲＣコードに先行して直前に取込まれたＣＲＣコードではなく、ＣＲＣ結果保持比較部９には、当該新たなＣＲＣコード、換言すれば、最新の１６ビットのＣＲＣコードが入力される。この最新の１６ビットのＣＲＣコードは、例えば比較回路に入力される。なお、ＣＲＣ結果保持比較部９が、ＣＲＣ演算部８から新たなＣＲＣコードが入力される都度に、当該新たなＣＲＣコードを取り込むようにしても良い。
【００４９】
最新のＣＲＣコードに先行して取込まれたＣＲＣコードを保持しなくても、最新のＣＲＣコードは、それ以前に生成された全てのＣＲＣコードを引き継いでいる。換言すれば、最新のＣＲＣコードは、それ以前に生成された全てのＣＲＣコードが正しくない限り、正しい値とならない。従って、ＣＲＣ結果保持比較部９に最新のＣＲＣコードを入力することにより、最新のＣＲＣコードに対応する通信データとそれ以前の通信データとについて、ＣＲＣコードを用いたエラー検出を実行することができる。
【００５０】
更に、ＣＲＣ結果保持比較部９は、周期制御部１３からの指示に従って、予め定められたテスト周期で、その時点で入力されている最新のＣＲＣコードをレジスタに取込んで保持する。レジスタに保持されたＣＲＣコードは、次のテスト周期の最後に、その時点の最新のＣＲＣコードと比較される。換言すれば、レジスタに保持されたＣＲＣコードは、現在のテスト周期の１周期前のＣＲＣコードである。
【００５１】
レジスタに保持されたＣＲＣコードは、現在のテスト周期の１周期前のテスト周期における、最後のＣＲＣコードである。従って、例えばテスト周期が１万個の通信データを送信する期間に相当する場合、最後の１個の通信データに基づいて生成されたＣＲＣコードが、レジスタに保持される。残りの９９９９個の通信データに基づいて生成されたＣＲＣコードは、直接的には、エラー検出のために使用されない。しかし、前述したように、９９９９個の通信データが正しくない限り、最後の１個の通信データに基づいて生成されたＣＲＣコードも正しい値とならない。従って、最後の１個の通信データに基づいて生成されたＣＲＣコードを用いることにより、エラーを検出することができる。
【００５２】
テスト周期は予め定められる。図１（Ｂ）に示すデータ送信処理＃１〜＃３において、複数の通信データが連続して送信される。通信データは、前述したように、例えば６４ビットの固定長とされる。１テスト周期において送信される通信データの数は、予め定められ、例えば１万〜１０万個とされる。換言すれば、予め定められた数の通信データが連続して送信される期間が、１テスト周期である。
【００５３】
データ送信処理＃１〜＃３の各々において１万個の通信データが送信される場合、各々のデータ送信処理＃１〜＃３の各々において送信される１万個の通信データは、同一である。これにより、チェック処理＃１〜＃３において、現在のテスト周期のＣＲＣコードと、１周期前のテスト周期のＣＲＣコードとの比較により、通信データのエラーを検出することができる。
【００５４】
また、ＣＲＣ結果保持比較部９は、周期制御部１３からの指示に従って、前記テスト周期で、その時点で入力されている最新のＣＲＣコードと、レジスタに取込んで保持しているＣＲＣコードとを、比較回路において比較する。換言すれば、現在のテスト周期の最新のＣＲＣコードと、１周期前のテスト周期のＣＲＣコードとが比較される。
【００５５】
実際には、ＣＲＣ結果保持比較部９は、周期制御部１３からの指示に従って、その時点で入力されている最新のＣＲＣコードと、レジスタに取込んで保持している１周期前のテスト周期のＣＲＣコードとを比較し、その結果を比較回路から検出回路１４に出力する。その後、ＣＲＣ結果保持比較部９は、その時点で入力されている最新のＣＲＣコードを、レジスタに取込む。これにより、レジスタの内容は上書きされる。
【００５６】
各々のＣＲＣ結果保持比較部９は、その時点で入力されている最新のＣＲＣコードと、レジスタに保持している１周期前のテスト周期のＣＲＣコードとが一致した場合、一致信号を検出回路１４に出力する。また、各々のＣＲＣ結果保持比較部９は、その時点で入力されている最新のＣＲＣコードと、レジスタに取込んで保持している１周期前のテスト周期のＣＲＣコードとが一致しない場合、不一致信号を検出回路１４に出力する。
【００５７】
一方、チェックサムエラー検出部１０は、通信データの各々についてのチェックサムを生成し、チェックサムを用いたエラー検出を実行する。これにより、チェックサムは受信装置である第２の装置１Ｂにおいて生成される。従って、送信装置である第１の装置１Ａは、チェックサムを生成して通信データに付加して送信する必要が無く、チェックサム生成回路を備える必要も無い。
【００５８】
チェックサムエラー検出部１０は、サム演算部１１と、サム結果保持比較部１２とを含む。サム演算部１１は、通信データの各々についてのチェックサムを生成する。サム結果保持比較部１２は、チェックサムを用いたエラー検出を実行する。
【００５９】
具体的には、サム演算部１１は、データ受信バッファ５から複数のパリティ演算部６に出力された複数の単位データを取込む。具体的には、８個の８ビットデータが、サム演算部１１に取り込まれる。これにより、結果として、サム演算部１１は、データ受信バッファ５に入力された６４ビットの通信データを得る。なお、サム演算部１１が、データ受信バッファ５から６４ビットの通信データを取り込むようにしても良い。
【００６０】
サム演算部１１は、取り込んだ複数の単位データを２分割し、２分割した部分データを加算する。具体的には、サム演算部１１は、取り込んだ複数の単位データを、６４ビットの通信データの上位の３２ビット及び下位の３２ビットに対応するように２分割し、これらを加算する。そして、サム演算部１１は、加算結果を２分割し、加算結果の上位の３２ビットを廃棄し、下位の３２ビットをチェックサムとしてサム結果保持比較部１２に出力する。
【００６１】
なお、サム演算部１１が、他の演算によってチェックサムを生成するようにしても良い。また、サム演算部１１が、３２ビットのチェックサム以外のビット長のチェックサムを生成するようにしても良い。
【００６２】
サム結果保持比較部１２は、対応するサム演算部１１から新たなチェックサムが出力される都度に、加算回路において、その時点まで保持していたチェックサムに、新たなチェックサムを加算する。そして、サム結果保持比較部１２は、２個のチェックサムの加算結果を２分割し、加算結果の上位の３２ビットを廃棄し、下位の３２ビットを最新のチェックサムとして加算回路に保持する。
【００６３】
これにより、最新のチェックサムに先行して保持されていたチェックサムは破壊される。しかし、最新のチェックサムは、それ以前に生成された全てのチェックサムを引き継いでいる。換言すれば、最新のチェックサムは、それ以前に生成された全てのチェックサムが正しくない限り、正しい値とならない。従って、サム結果保持比較部１２に最新のチェックサムを保持することにより、最新のチェックサムに対応する通信データとそれ以前の通信データとについて、チェックサムを用いたエラー検出を実行することができる。
【００６４】
更に、サム結果保持比較部１２は、周期制御部１３からの指示に従って、前記テスト周期で、その時点で加算回路に保持している最新のチェックサムをレジスタに取込んで保持する。レジスタに保持されたチェックサムは、次のテスト周期の最後に、その時点の最新のチェックサムと比較される。換言すれば、レジスタに保持されたチェックサムは、現在のテスト周期の１周期前のチェックサムである。
【００６５】
レジスタに保持されたチェックサムは、現在のテスト周期の１周期前のテスト周期における、最終的なチェックサムである。従って、例えばテスト周期が１万個の通信データを送信する期間に相当する場合、最後の１個の通信データの加算に基づいて生成されたチェックサムが、レジスタに保持される。残りの９９９９個の通信データに基づいて生成されたチェックサムは、直接的には、エラー検出のために使用されない。しかし、前述したように、９９９９個の通信データが正しくない限り、最後の１個の通信データの加算に基づいて生成されたチェックサムも正しい値とならない。従って、最後の１個の通信データの加算に基づいて生成されたチェックサムを用いることにより、エラーを検出することができる。
【００６６】
サム結果保持比較部１２は、周期制御部１３からの指示に従って、前記テスト周期で、その時点で加算回路に保持されている最新のチェックサムと、レジスタに取込んで保持しているチェックサムとを比較する。換言すれば、現在のテスト周期の最新のチェックサムと、１周期前のテスト周期のチェックサムとが比較される。
【００６７】
実際には、サム結果保持比較部１２は、周期制御部１３からの指示に従って、その時点で加算回路に保持されている最新のチェックサムと、レジスタに取込んで保持している１周期前のテスト周期のチェックサムとを比較し、その結果を比較回路から検出回路１４に出力する。その後、サム結果保持比較部１２は、その時点で加算回路に保持されている最新のチェックサムを、レジスタに取込む。これにより、レジスタの内容は上書きされる。
【００６８】
各々のサム結果保持比較部１２は、その時点で加算回路に保持されている最新のチェックサムと、レジスタに取込んで保持している１周期前のテスト周期のチェックサムとが一致した場合、一致信号を検出回路１４に出力する。また、各々のサム結果保持比較部１２は、その時点で加算回路に保持されている最新のチェックサムと、レジスタに取込んで保持している１周期前のテスト周期のチェックサムとが一致しない場合、不一致信号を検出回路１４に出力する。
【００６９】
検出回路１４は、複数のＣＲＣエラー検出部７の各々からＣＲＣコードを用いたエラー検出の結果が出力されると、これらをそのまま取り込む。また、検出回路１４は、チェックサムエラー検出部１０からチェックサムを用いたエラー検出の結果が出力されると、これをそのまま取り込む。そして、検出回路１４は、複数のＣＲＣエラー検出部７の各々におけるＣＲＣコードを用いたエラー検出の結果と、チェックサムエラー検出部１０におけるチェックサムを用いたエラー検出の結果とに基づいて、当該テスト周期において受信された複数の通信データのエラーを検出する。
【００７０】
具体的には、検出回路１４は、全てのＣＲＣエラー検出部７から一致信号を受信し、かつ、チェックサムエラー検出部１０から一致信号を受信した場合に、一致フラグをレジスタの予め定められたビットに格納する。また、検出回路１４は、ＣＲＣエラー検出部７のいずれかから１個でも不一致信号を受信した場合、又は、チェックサムエラー検出部１０から不一致信号を受信した場合には、一致フラグをレジスタの予め定められたビットに格納しない。検出回路１４は、予め定められた制御信号に従って、レジスタの一致フラグを装置１Ｂの外部に出力する。
【００７１】
なお、一致フラグを格納しないことに代えて、不一致フラグをレジスタの予め定められたビットに格納するようにしても良い。また、検出回路１４が、レジスタに一致フラグを格納する以外の手段により、エラー検出の結果を出力するようにしても良い。
【００７２】
周期制御部１３は、複数のＣＲＣエラー検出部とチェックサムエラー検出部とを制御することにより、通信データについて、ＣＲＣコードを用いたエラー検出とチェックサムを用いたエラー検出とを実行させる。
【００７３】
具体的には、周期制御部１３は、複数のＣＲＣ演算部８とサム演算部１１とを制御することにより、通信データについて、ＣＲＣコードとチェックサムとを生成させる。周期制御部１３は、複数のＣＲＣ演算部８に、第１の制御信号を供給する。これにより、複数のＣＲＣ演算部８は、データ受信バッファ５から出力された単位データからパリティビットが生成されたタイミングで、パリティビットを取込む。また、周期制御部１３は、サム演算部１１に、第１の制御信号を供給する。これにより、サム演算部１１は、データ受信バッファ５から複数の単位データが出力されたタイミングで、複数の単位データを取込む。
【００７４】
このために、例えば、周期制御部１３は、データ受信バッファ５に入力された通信データの数をカウントし、１個の通信データが入力される都度に、第１の制御信号を形成して複数のＣＲＣ演算部８とサム演算部１１に供給する。なお、周期制御部１３が、通信データが同期する動作クロックをカウントするようにしても良い。
【００７５】
複数のＣＲＣ演算部８とサム演算部１１とは、同一のタイミングで制御される。従って、実際には、サム演算部１１は、データ受信バッファ５から複数の単位データが出力されたタイミングから遅れて、前記パリティビットが生成されたタイミングで、複数の単位データを取込む。これにより、複数のＣＲＣ演算部８及びサム演算部１１は、同一の通信データについて、各々、複数のＣＲＣコード及びチェックサムを生成する。
【００７６】
また、周期制御部１３は、複数のＣＲＣ結果保持比較部９とサム結果保持比較部１２とを制御することにより、予め定められた複数の通信データ毎に、ＣＲＣコードを用いたエラー検出とチェックサムを用いたエラー検出とを実行させる。周期制御部１３は、複数のＣＲＣ結果保持比較部９に、第２の制御信号を供給する。これにより、複数のＣＲＣ結果保持比較部９は、前記テスト周期で、現在のテスト周期の最新のＣＲＣコードとレジスタに保持した１周期前のテスト周期のＣＲＣコードとを比較し、両者が一致する場合には、一致信号を出力する。また、周期制御部１３は、サム結果保持比較部１２に、第２の制御信号を供給する。これにより、サム結果保持比較部１２は、前記テスト周期で、現在のテスト周期の最新のチェックサムとレジスタに保持した１周期前のテスト周期のチェックサムとを比較し、両者が一致する場合には、一致信号を出力する。
【００７７】
このために、例えば、周期制御部１３は、データ受信バッファ５に入力された固定長の通信データの数をカウントし、予め定められた数、例えば１万個の通信データが入力される都度に、第２の制御信号を形成して複数のＣＲＣ演算部８とサム演算部１１に供給する。なお、周期制御部１３が、通信データが同期する動作クロックをカウントするようにしても良い。
【００７８】
複数のＣＲＣ結果保持比較部９とサム結果保持比較部１２とは、同一のタイミングで制御される。例えば、複数のＣＲＣ結果保持比較部９とサム結果保持比較部１２とは、現在のテスト周期が終了したタイミングから予め定められた時刻だけ遅れて、比較処理を実行する。これにより、現在のテスト周期のＣＲＣコードとチェックサムとが確実に入力されたタイミングで、かつ、１周期後のテスト周期と並列して、比較処理を実行することができる。これにより、複数のＣＲＣ結果保持比較部９とサム結果保持比較部１２は、同一の現在のテスト周期の通信データと、同一の１周期前のテスト周期の通信データとについて、各々、ＣＲＣコードを用いたエラー検出とチェックサムを用いたエラー検出とを実行することができる。
【００７９】
図５は、データのエラー検出処理の説明図であり、特に、ＣＲＣコードを用いたエラー検出処理について示す。
【００８０】
受信回路２から出力された第６３ビット（ｂｉｔ６３）〜第０ビット（ｂｉｔ０）の６４ビットのデータは、データ受信バッファ５により、８ビット毎に分割される。従って、８個の単位データが得られる。８個の８ビットの単位データは、各々、予め定められた８個のパリティ演算部６に入力される。
【００８１】
８個のパリティ演算部６は、各々、１ビットの偶数パリティを生成する。１ビットの偶数パリティは、周期制御部１３からの第１の制御信号に従って、対応するＣＲＣ演算部８に入力される。
【００８２】
８個のＣＲＣ演算部８は、対応するパリティ演算部６からの入力に基づいて、ＣＲＣコードを生成する。通信データではなく、パリティビットに基づいてＣＲＣコードを生成することにより、ＣＲＣ演算部８の回路規模を小さくすることができる。ＣＲＣコードは、周期制御部１３からの第２の制御信号に従って、対応するＣＲＣ結果保持比較部９に入力される。
【００８３】
８個のＣＲＣ結果保持比較部９は、周期制御部１３からの第２の制御信号に従って、現在のテスト周期の最新のＣＲＣコードとレジスタに保持した１周期前のテスト周期のＣＲＣコードとを比較し、両者が一致する場合には、一致信号を出力する。なお、図５において、８個のＣＲＣ結果保持比較部９のレジスタに保持した１周期前のテスト周期のＣＲＣコードを、斜線を施して示す。
【００８４】
従って、８個のＣＲＣ結果保持比較部９は、８個の１６ビットのＣＲＣコードをレジスタに保持するのみで良い。これにより、ＣＲＣコードを保持するための記憶領域を設けることなく、レジスタに格納することができる。また、８個のＣＲＣ結果保持比較部９は、２個の８ビットのＣＲＣコードを比較するのみで良い。これにより、ＣＲＣコードを比較するための比較回路の回路規模を小さくすることができる。
【００８５】
図６は、データのエラー検出処理の説明図であり、特に、チェックサムを用いたエラー検出処理について示す。
【００８６】
受信回路２から出力された第６３ビット（ｂｉｔ６３）〜第０ビット（ｂｉｔ０）の６４ビットのデータは、前述したように、データ受信バッファ５を経て、サム演算部１１に入力される。
【００８７】
サム演算部１１は、６４ビットの通信データ、換言すれば、８個の単位データを２分割し、２分割した部分データを加算する。そして、サム演算部１１は、加算結果を２分割し、加算結果の上位の３２ビットを廃棄し、下位の３２ビットをチェックサムとする。チェックサムは、周期制御部１３からの第２の制御信号に従って、サム結果保持比較部１２に出力する。
【００８８】
サム結果保持比較部１２は、周期制御部１３からの第２の制御信号に従って、現在のテスト周期の最新のチェックサムとレジスタに保持した１周期前のテスト周期のチェックサムとを比較し、両者が一致する場合には、一致信号を出力する。なお、図６において、サム結果保持比較部１２のレジスタに保持した１周期前のテスト周期のチェックサムを、斜線を施して示す。
【００８９】
従って、サム結果保持比較部１２は、３２ビットのチェックサムをレジスタに保持するのみで良い。これにより、チェックサムの期待値を保持するための数ギガバイトの記憶領域を設けることなく、レジスタに格納することができる。また、サム結果保持比較部１２は、２個の３２ビットのチェックサムを比較するのみで良い。これにより、チェックサムを比較するための比較回路の回路規模を小さくすることができる。
【００９０】
図５及び図６から判るように、パリティビットとＣＲＣコードの組み合わせを用いたチェックと、サムチェックを用いたチェックにより、送信されるデータにチェック専用データを付加することなく、小規模の回路でデータ送信の正当性を確認することができる。具体的には、通信データのパリティビットを生成することにより、ＣＲＣコードの生成の元になるデータのサイズを小さくすることができ、回路を小さくすることができる。その上で、ＣＲＣコードを用いてエラー検出を実行することにより、小規模な回路で正確にエラー検出を実行することができる。一方、ＣＲＣコードの生成にパリティビットを用いることに対応するために、ＣＲＣコードを用いたエラー検出に合わせて、チェックサムを用いたエラー検出を実行することにより、エラー検出の精度を高くすることができる。更に、ＣＲＣコードを用いたエラー検出と同一のテスト周期で、チェックサムを用いたエラー検出を実行することにより、より一層エラー検出の精度を高くすることができる。
【符号の説明】
【００９１】
２    受信回路
３    エラーチェック回路
４    信号処理回路
５    データ受信バッファ
６    パリティ演算部
７    ＣＲＣエラー検出部
８    ＣＲＣ演算部
９    ＣＲＣ結果保持比較部
１０    チェックサムエラー検出部
１１    サム演算部
１２    サム結果保持比較部
１３    周期制御部
１４    検出回路
【図１】
0005761944.tif 000002
【図２】
0005761944.tif 000003
【図３】
0005761944.tif 000004
【図４】
0005761944.tif 000005
【図５】
0005761944.tif 000006
【図６】
0005761944.tif 000007
【図７】
0005761944.tif 000008