(57)【要約】  領域指定部（１００２）は、送信フレーム内で定型ビット列が出現する第１の領域と、規定ビット列に類似するビット列が出現する第２の領域と、非定型ビット列が出現する第３の領域とを指定し、第２の領域のビット列と規定ビット列との差分を抽出する。第１のＣＲＣ取得部（１００３）は、定型ビット列に対応する第１のＣＲＣをＣＲＣテーブルから取得する。第２のＣＲＣ取得部（１００４）は、規定ビット列に対応する第２のＣＲＣをＣＲＣテーブルから取得する。差分ＣＲＣ取得部（１００５）は、抽出された差分に対応する差分ＣＲＣをＣＲＣテーブルから取得する。第３のＣＲＣ生成部（１００６）は、第３の領域のビット列に対応する第３のＣＲＣを生成する。フレームＣＲＣ生成部（１００７）は、第１のＣＲＣと第２のＣＲＣと差分ＣＲＣと第３のＣＲＣとを用いて、送信フレームのＣＲＣを生成する。
2017212547.tif 000002
【特許請求の範囲】
【請求項１】
送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で規定ビット列に類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出する領域指定部と、
前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得する第１のＣＲＣ取得部と、
前記第２の領域に対して、前記規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得する第２のＣＲＣ取得部と、
前記領域指定部により抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得する差分ＣＲＣ取得部と、
前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成する第３のＣＲＣ生成部と、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するフレームＣＲＣ生成部とを有するデータ処理装置。
【請求項２】
前記第１のＣＲＣ取得部は、
前記送信フレームと同じフレーム長であり、前記第１の領域に対応する領域が前記定型ビット列で構成され、前記第１の領域に対応する領域以外の領域のビット値が０であるフレームのＣＲＣを、前記第１のＣＲＣとして、前記ＣＲＣテーブルから取得し、
前記第２のＣＲＣ取得部は、
前記送信フレームと同じフレーム長であり、前記第２の領域に対応する領域が前記規定ビット列で構成され、前記第２の領域に対応する領域以外の領域のビット値が０であるフレームのＣＲＣを、前記第２のＣＲＣとして、前記ＣＲＣテーブルから取得し、
前記差分ＣＲＣ取得部は、
前記送信フレームと同じフレーム長であり、前記差分に対応する位置のビット値が１であり、前記差分に対応する位置以外の領域のビット値が０であるフレームのＣＲＣを、前記差分ＣＲＣとして、前記ＣＲＣテーブルから取得し、
前記フレームＣＲＣ生成部は、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣの排他的論理和演算を行って前記送信フレームのＣＲＣを生成する請求項１に記載のデータ処理装置。
【請求項３】
前記領域指定部は、
前記送信フレームが準拠している通信プロトコルに基づき、前記第１の領域と、前記第２の領域と、前記第３の領域とを指定する請求項１に記載のデータ処理装置。
【請求項４】
コンピュータが、送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で規定ビット列に類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出し、
前記コンピュータが、前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得し、
前記コンピュータが、前記第２の領域に対して、前記規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得し、
前記コンピュータが、抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得し、
前記コンピュータが、前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成し、
前記コンピュータが、前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するデータ処理方法。
【請求項５】
送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で規定ビット列に類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出する領域指定処理と、
前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得する第１のＣＲＣ取得処理と、
前記第２の領域に対して、前記規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得する第２のＣＲＣ取得処理と、
前記領域指定処理により抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得する差分ＣＲＣ取得処理と、
前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成する第３のＣＲＣ生成処理と、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するフレームＣＲＣ生成処理とをコンピュータに実行させるデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法及びデータ処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、簡易な演算によりＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）を生成する方法が開示されている。以下に、特許文献１のＣＲＣ算出の原理を説明する。
送信対象の第２のデータは第１のデータに対して特定のビットの値のみが異なっている。第１のデータのＣＲＣは算出済みである。
特許文献１では、前記特定のビットに対応するビットのみ値が１であり、他の全てのビットの値が０である第３のデータのＣＲＣをあらかじめ求め、第３のデータのＣＲＣをテーブルに保持しておく。そして、特許文献１では、第１のデータのＣＲＣと、第３のデータのＣＲＣとの排他的論理和演算を行うことにより、第２のデータのＣＲＣを求める。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４８９６９３１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
機能安全通信など信頼性の要求される分野では、規定時間内に処理が完了しなければ障害に繋がってしまうため、ＣＲＣ演算時間は最悪実行時間を考慮しなければならない。従って、こうした分野でＣＲＣ演算時間を短縮したい場合は、最悪実行時間を短縮することが必須となる。
特許文献１の方法では、第１のデータと第２のデータとの間の差が小さい場合にＣＲＣ演算時間を短縮できる。しかし、第１のデータと第２のデータとの間の差が小さくない場合はＣＲＣ演算時間を短縮することはできない。具体的には、第１のデータと第２のデータとの差を１ビットずつ求めて第２のデータのＣＲＣを求める場合は、ＣＲＣを保持するテーブルのサイズは相対的に小さいものの、テーブルの参照回数が多くなる。このため、ＣＲＣ演算時間が長くなる。
また、代替方法として、第１のデータと第２のデータとの差に対応する全てのＣＲＣをテーブルに保持しておくことが考えられる。この場合は、テーブル参照回数は少なくなるが、テーブルのサイズが膨大になり、テーブルを格納するために多くの記憶領域が必要になってしまう。【０００５】
本発明は、テーブルのサイズを抑えながら、ＣＲＣ演算時間を短縮することを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るデータ処理装置は、
送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で規定ビット列に類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出する領域指定部と、
前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得する第１のＣＲＣ取得部と、
前記第２の領域に対して、前記規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得する第２のＣＲＣ取得部と、
前記領域指定部により抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得する差分ＣＲＣ取得部と、
前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成する第３のＣＲＣ生成部と、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するフレームＣＲＣ生成部とを有する。
【発明の効果】
【０００７】
本発明によれば、定型ビット列に対応する第１のＣＲＣと、規定ビット列に対応する第２のＣＲＣと、規定ビット列と第２の領域のビット列との差分に対応する差分ＣＲＣのみをテーブルに保持すればよい。また、テーブルから第１のＣＲＣと第２のＣＲＣと差分ＣＲＣを取得し、取得した第１のＣＲＣと第２のＣＲＣと差分ＣＲＣと、第３のＣＲＣとに基づいて、送信フレームのＣＲＣを生成することができる。このように、本発明によれば、テーブルのサイズを抑えながら、ＣＲＣ演算時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係る制御装置のハードウェア構成例を示す図。
【図２】実施の形態１に係る制御装置の機能構成例を示す図。
【図３】実施の形態１に係る制御装置の動作例を示すフローチャート図。
【図４】実施の形態１に係るフレームとＣＲＣの関係を示す図。
【図５】実施の形態１に係る基準フィールド及び差分ビットの関係を決定する手順を示すフローチャート図。
【図６】実施の形態１に係る基準フィールド及び差分ビットの関係を決定する手順を示すフローチャート図。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
【００１０】
実施の形態１．
本実施の形態では、テーブルのサイズを抑えながら、ＣＲＣ演算時間を短縮することが可能な制御装置１０を説明する。
本実施の形態に係る制御装置１０は、図１に示すハードウェア構成を有し、また、図２に示す機能構成を有する。図１及び図２については、詳細は後述する。
【００１１】
本実施の形態に係る制御装置１０は、送信する送信フレームが対象とする通信プロトコルに従って、送信フレームを論理的に複数の領域に分割し、領域ごとにＣＲＣを求める。制御装置１０は、一部の領域を除いて各領域のＣＲＣを、ＣＲＣテーブルから取得する。ＣＲＣテーブルには、複数のＣＲＣが格納されている。そして、制御装置１０は、得られた各領域のＣＲＣの排他的論理和演算を行い、送信フレームのＣＲＣを生成する。
【００１２】
制御装置１０は、送信フレームの領域を、以下のように分割する。
（１）定型ビット列が出現する第１の領域、
（２）規定ビット列に類似するビット列が出現する第２の領域
（３）非定型ビット列が出現する第３の領域
通信プロトコルごとに、固定ビット列である定型ビット列が出現する領域、半固定的なビット列が出現する領域、ランダムな非定型ビット列が出現する領域は決まっている。
本実施の形態に係る制御装置１０は、送信フレームが準拠する通信プロトコルに基づいて、送信フレーム内で定型ビット列が出現する第１の領域と、規定ビット列に類似するビット列（半固定的なビット列）が出現する第２の領域と、非定型ビット列が出現する第３の領域とを指定する。
第２の領域に出現するビット列は、規定ビット列と、例えば７０％以上で一致することが望ましいが、第２の領域として、規定ビット列との一致率をどの程度要求するかは任意に決定することができる。つまり、第２の領域のビット列が規定ビット列とどの程度「類似」するかは、任意に決定することができる。
ＣＲＣテーブルには、通信プロトコルごとに、定型ビット列に対応するＣＲＣ、規定ビット列に対応するＣＲＣが予め格納されている。なお、第３の領域のビット列に対応するＣＲＣはＣＲＣテーブルに格納されていない。
なお、送信フレームの第２の領域のビット列は規定ビット列に一致しない可能性がある。このため、制御装置１０は、送信フレームの第２の領域のビット列と規定ビット列との差分を抽出する。なお、ＣＲＣテーブルには、差分のビット位置ごとに、対応するＣＲＣが予め格納されている。
【００１３】
制御装置１０は、定型ビット列に対応するＣＲＣ（第１のＣＲＣに相当）と規定ビット列に対応するＣＲＣ（第２のＣＲＣに相当）と差分に対応するＣＲＣ（差分ＣＲＣに相当）をＣＲＣテーブルから取得する。また、制御装置１０は、第３の領域のビット列に対応するＣＲＣ（第３のＣＲＣに相当）を算出する。
そして、制御装置１０は、これらＣＲＣの排他的論理演算を行って、送信フレームのＣＲＣを生成する。
【００１４】
従来手法では最悪実行時間を短縮するために、必要なテーブルのパターン数が膨大になるという問題があったが、本実施の形態では階層分けしたテーブルエントリの組み合わせによってデータの全パターンを表現することで、テーブルサイズの増加を抑えながら最悪実行時間も短縮可能となる。
【００１５】
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係る制御装置１０のハードウェア構成例を示す。また、図２は、制御装置１０の機能構成例を示す。制御装置１０は、データ処理装置に相当する。また、制御装置１０により行われる動作は、データ処理方法に相当する。
【００１６】
図１に示すように、制御装置１０は、入出力インタフェース１０１、通信インタフェース１０２、プロセッサ１０３及び記憶装置１０４が、バス１０５で接続されているコンピュータである。
【００１７】
入出力インタフェース１０１は、信号の入出力に用いられる。具体的には、入出力インタフェース１０１は、制御装置１０に接続しているセンサやスイッチなどからの信号入力に用いられる。また、入出力インタフェース１０１は、制御装置１０に接続しているアクチュエータやランプなどへの信号出力に用いられる。
【００１８】
通信インタフェース１０２は、他の制御装置との間で制御データを交信するための通信を行う。具体的には、通信インタフェース１０２は、制御データとして、ＣＲＣが付加された送信フレームを送信する。
【００１９】
プロセッサ１０３は、プログラムを実行する。具体的には、プロセッサ１０３は、図２に示すフレーム生成部１００１、フレーム構成決定部１００２、基準フレームＣＲＣ取得部１００３、基準フィールドＣＲＣ取得部１００４、差分ビットＣＲＣ取得部１００５、可変フィールドＣＲＣ生成部１００６、演算部１００７及びフレーム連結部１００８の機能を実現するプログラムを実行する。フレーム生成部１００１、フレーム構成決定部１００２、基準フレームＣＲＣ取得部１００３、基準フィールドＣＲＣ取得部１００４、差分ビットＣＲＣ取得部１００５、可変フィールドＣＲＣ生成部１００６、演算部１００７及びフレーム連結部１００８の機能を実現するプログラムは、データ処理プログラムに相当する。
【００２０】
記憶装置１０４は、プロセッサ１０３が実行する前述のプログラムを記憶する。また、記憶装置１０４は、ＣＲＣテーブルを記憶する。
【００２１】
なお、制御装置１０の可用性を高めるため、プロセッサ１０３及び記憶装置１０４は冗長化されていてもよい。
【００２２】
図２において、フレーム生成部１００１は、通信プロトコルの仕様に準拠して、送信すべき送信フレームのヘッダ及びペイロードを生成する。前述したように、送信フレームが準拠する通信プロトコルによって、送信フレームの構成が定まる。このため、フレーム生成部１００１は、送信フレームと通信プロトコルの情報をフレーム構成決定部１００２に出力する。
【００２３】
フレーム構成決定部１００２は、フレーム生成部１００１から出力された通信プロトコルの情報をもとに、フレーム生成部１００１により生成された送信フレームに対して第１の領域と第２の領域と第３の領域とを指定する。また、フレーム構成決定部１００２は、第２の領域のビット列と規定ビット列との差分を抽出する。
フレーム構成決定部１００２は、領域指定部に相当する。また、フレーム構成決定部１００２により行われる処理は領域指定処理に相当する。
【００２４】
基準フレームＣＲＣ取得部１００３は、第１の領域に対するＣＲＣをＣＲＣテーブルから取得する。
基準フレームＣＲＣ取得部１００３は、第１のＣＲＣ取得部に相当する。また、基準フレームＣＲＣ取得部１００３により行われる処理は第１のＣＲＣ取得処理に相当する。
【００２５】
基準フィールドＣＲＣ取得部１００４は、第２の領域に対するＣＲＣをＣＲＣテーブルから取得する。
基準フィールドＣＲＣ取得部１００４は、第２のＣＲＣ取得部に相当する。また、基準フィールドＣＲＣ取得部１００４により行われる処理は第２のＣＲＣ取得処理に相当する。
【００２６】
差分ビットＣＲＣ取得部１００５は、差分ビットに対するＣＲＣをＣＲＣテーブルから取得する。
差分ビットＣＲＣ取得部１００５は、差分ＣＲＣ取得部に相当する。また、差分ビットＣＲＣ取得部１００５により行われる処理は差分ＣＲＣ取得処理に相当する。
【００２７】
可変フィールドＣＲＣ生成部１００６は、第３の領域のＣＲＣを生成する。可変フィールドＣＲＣ生成部１００６は、例えば、任意のフィールド値に対応可能な、上位ビットからの逐次的な排他的論理和演算による既存手法を適用する。
可変フィールドＣＲＣ生成部１００６は、第３のＣＲＣ生成部に相当する。また、可変フィールドＣＲＣ生成部１００６により行われる処理は第３のＣＲＣ生成処理に相当する。
【００２８】
演算部１００７は、全てのＣＲＣの排他的論理和を行って、送信フレームのＣＲＣを生成する。
演算部１００７は、フレームＣＲＣ生成部に相当する。また、演算部１００７により行われる処理はフレームＣＲＣ生成処理に相当する。
【００２９】
フレーム連結部１００８は、フレーム生成部１００１が生成した送信フレームの末尾に、演算部１００７が生成したＣＲＣを結合する。この結果、ＣＲＣが付加された送信フレームが出力される。
【００３０】
＊＊＊動作の説明＊＊＊
以下、図３及び図４を参照して、本実施の形態に係る制御装置１０でのＣＲＣ生成の流れを説明する。
図３は、制御装置１０の動作例を示すフローチャートである。図４は、フレームとＣＲＣとの関係を示す。図４では、送信フレーム２０１に付加するＣＲＣ２１０を生成する過程が示される。
【００３１】
ステップＳ０１では、フレーム生成部１００１が、送信フレーム２０１を生成する。ここでは、フレーム生成部１００１は、通信プロトコルαに基づき、図４の送信フレーム２０１を生成するものとする。
図４の送信フレーム２０１では、領域２０１ａ及び領域２０１ｃが第１の領域に相当し、領域２０１ｂが第２の領域に相当し、領域２０１ｄが第３の領域に相当する。つまり、領域２０１ａ及び領域２０１ｃには定型ビット列が含まれている。領域２０１ｂには、規定ビットに類似するビット列が含まれている。領域２０１ｄには、非定型ビット列が含まれている。
フレーム生成部１００１は、送信フレーム２０１と通信プロトコルαを通知する情報をフレーム構成決定部１００２に出力する。
【００３２】
次に、ステップＳ０２では、フレーム構成決定部１００２が、送信フレーム２０１が準拠している通信プロトコルαに基づき、送信フレーム２０１の第１の領域、第２の領域、第３の領域を指定する。フレーム構成決定部１００２は、この結果、領域２０１ａ及び領域２０１ｃを第１の領域に指定し、領域２０１ｂを第２の領域に指定し、領域２０１ｄを第３の領域に指定する。また、フレーム構成決定部１００２は、領域２０１ｂに含まれるビット列と規定ビット列との差分ビットを求める。
また、フレーム構成決定部１００２は、第１の領域２０１ａ、２０１ｃについて、基準フレームＣＲＣ取得部１００３に、通信プロトコルαの定型ビット列に対応するＣＲＣの識別子を通知する。
また、フレーム構成決定部１００２は、第２の領域２０１ｂについて、基準フィールドＣＲＣ取得部１００４に、通信プロトコルαの規定ビット列に対応するＣＲＣの識別子を通知する。
また、フレーム構成決定部１００２は、第３の領域２０１ｄに含まれるビット列を可変フィールドＣＲＣ生成部１００６に出力する。
また、フレーム構成決定部１００２は、差分ビットに対応するＣＲＣの識別子を差分ビットＣＲＣ取得部１００５に通知する。
【００３３】
ステップＳ０３では、基準フレームＣＲＣ取得部１００３が、フレーム構成決定部１００２からの通知された識別子に基づいて、第１の領域２０１ａ、２０１ｃに対して、通信プロトコルαの定型ビット列に対応するＣＲＣを、ＣＲＣテーブルから取得する。
より具体的には、基準フレームＣＲＣ取得部１００３は、ＣＲＣテーブルから、図４に示す基準フレーム２０２のＣＲＣ２１１を取得する。基準フレーム２０２は、送信フレーム２０１と同じフレーム長のフレームである。基準フレーム２０２では、送信フレーム２０１の領域２０１ａに対応する領域２０２ａが領域２０１ａと同じ定型ビット列で構成され、送信フレーム２０１の領域２０１ｃに対応する領域２０２ｃが領域２０１ｃと同じ定型ビット列で構成される。一方、領域２０２ａ及び領域２０２ｃ以外の領域のビット値は０である。
【００３４】
ステップＳ０４では、基準フィールドＣＲＣ取得部１００４が、フレーム構成決定部１００２からの通知された識別子に基づいて、第２の領域２０１ｂに対して、通信プロトコルαの規定ビット列に対応するＣＲＣを、ＣＲＣテーブルから取得する。
より具体的には、基準フィールドＣＲＣ取得部１００４は、ＣＲＣテーブルから、図４に示すフレーム２０３のＣＲＣ２１２を取得する。フレーム２０３は、送信フレーム２０１と同じフレーム長のフレームである。フレーム２０３では、送信フレーム２０１の領域２０１ｂに対応する領域２０２ｂが規定ビット列で構成される。一方、領域２０３ｂ以外の領域のビット値は０である。なお、規定ビット列が格納されている領域２０３ｂを基準フィールドともいう。
【００３５】
ステップＳ０５において差分ビットが存在する場合、すなわち、フレーム構成決定部１００２から差分ビットに対応するＣＲＣの識別子が通知されている場合は、差分ビットＣＲＣ取得部１００５は、フレーム構成決定部１００２から通知された識別子に基づいて、差分ビットに対応するＣＲＣを、ＣＲＣテーブルから取得する。
より具体的には、差分ビットＣＲＣ取得部１００５は、ＣＲＣテーブルから、図４に示すフレーム２０４のＣＲＣ２１３を取得する。フレーム２０４は、送信フレーム２０１と同じフレーム長のフレームである。フレーム２０４では、領域２０１ｂのビット列と領域２０３ｂの規定ビット列との差分ビットに対応する位置２０４ｎのビット値が１である。一方、位置２０４ｎ以外の領域のビット値は０である。
【００３６】
ステップＳ０７では、可変フィールドＣＲＣ生成部１００６が、フレーム構成決定部１００２から出力された第３の領域２０１ｄのビット列に対するＣＲＣ２１４を生成する。なお、第３の領域２０１ｄを可変フィールドともいう。
【００３７】
ステップＳ０８では、演算部１００７が、ＣＲＣ２１１、ＣＲＣ２１２、ＣＲＣ２１３、ＣＲＣ２１４の排他的論理和演算を行い、送信フレーム２０１のＣＲＣ２１０を生成する。
【００３８】
最後に、ステップＳ０９において、フレーム連結部１００８が、送信フレーム２０１の末尾にＣＲＣ２１０を連結する。
【００３９】
なお、図３では、ステップＳ０３、ステップＳ０４、ステップＳ０５及びステップＳ０６、ステップＳ０７の順に処理が行われる例が示されているが、これらステップＳ０３、ステップＳ０４、ステップＳ０５及びステップＳ０６、ステップＳ０７が並行して行われてもよい。
【００４０】
＊＊＊その他＊＊＊＊
本実施の形態によれば、すべてのパターンの送信フレームが基準フレーム、基準フィールド、差分ビット及び可変フィールドの組み合わせで構成でき、かつ規定値以下のテーブル参照回数により生成できることを保証する必要がある。
以下では、送信フレームの構成方法及び、テーブル参照回数を規定値以下に抑えるための基準フィールド及び差分ビットの構成方法を説明する。
【００４１】
１．送信フレームの構成方法
通信プロトコルによっては、定周期通信や非定周期通信などの通信種別によって、定型ビット列が出現する領域が大きく異なる複数種の送信フレームが送信される場合がある。このような場合には、送信フレームの種類ごとに、異なる基準フレームを用意する必要がある。
前述したように、任意のビット列が出現し、かつ、出現するビット列の予測が困難なフィールドが、可変フィールドとなる。可変フィールドは、例えば、送信フレームのペイロードである。
送信フレームから、基準フレーム内の定型ビット列が出現するフィールド及び可変フィールドを除いたフィールドが基準フィールドとなる。基準フィールドは送信フレーム中に１つ以上存在する。つまり、送信フレーム内に複数の基準フィールドが存在していてもよい。送信フレーム内で分断されている複数の基準フィールドを、それぞれ、別個の基準フィールドとして扱ってもよいし、複数の基準フィールドを１つの基準フィールドとして扱ってもよい。
【００４２】
２．基準フィールド及び差分ビットの構成方法
ＣＲＣの生成時は、図４のフレーム２０３の基準フィールド２０３ｂの規定ビット列と、送信フレーム２０１の基準フィールド２０１ｂのビット列とのハミング距離の最大値分、すなわち差分ビットの個数分、ＣＲＣを求めなければならない。このとき、差分ビットの個数だけテーブルを参照する演算が必要になる。このため、差分ビットの個数がＣＲＣ演算時間に影響する。
一方で、テーブル参照回数を抑制するためには、基準フィールド２０３ｂの規定ビット列の種類を増やすことが考えられる。例えば、図４の例において、「１１０１」の他に、「００００」、「１０００」、「１１００」、「１１１０」、「１１１１」というように基準フィールド２０３ｂの規定ビット列の種類を増やせば、差分ビットの合計回数を減らすことができ、テーブル参照回数を減らすことができる。しかし、この場合は、基準フィールドに対応するＣＲＣの個数が増加するため、ＣＲＣテーブルのテーブルサイズが増大する。
演算時間とテーブルサイズとのバランスを取るために、システム管理者は、差分ビットの数とテーブルサイズのそれぞれに目標値を設定し、これら両方の目標値を満たすような基準フィールド及び差分ビットの構成を図５及び図６に示す方法で求める。
【００４３】
ステップＳ１０１では、システム管理者は、送信しうるフィールドの全パターンを求める。
【００４４】
ステップＳ１０２では、フィールドの中でビット値が変化しない領域があれば、システム管理者は、当該領域についてはビット値を固定し、ビット値が変化する領域のビット値を０とするフレームを、仮の基準フレームに設定する。
【００４５】
ステップＳ１０３では、システム管理者は、フィールドの全パターンに対して、仮の基準フレームとのハミング距離を算出する。また、フィールドの全パターンを、ハミング距離ごとに分類する。
【００４６】
ステップＳ１０４では、システム管理者は、ハミング距離が最大のフィールドの集合と、ハミング距離が（最大−１）であるフィールドの集合で、値が共通しているビットを抽出する。
【００４７】
ステップＳ１０５では、システム管理者は、ステップＳ１０４で抽出された共通ビットの値が１であるか否かを判定する。
共通ビットの値が１であれば、システム管理者はステップＳ１０６を行い、共通ビットの値が０であれば、システム管理者はステップＳ１０７を行う。
【００４８】
ステップＳ１０６では、システム管理者は、共通ビットに対応する、仮の基準フレームのビットの値を１とする。
【００４９】
ステップＳ１０７では、システム管理者は、フィールドの全パターンに対して、仮の基準フレームとのハミング距離を算出する。
【００５０】
ステップＳ１０８では、システム管理者は、ステップＳ１０７で算出したハミング距離の最大値が目標値以下であるか否かを判定する。
ステップＳ１０７で算出したハミング距離の最大値が目標値以下であれば、システム管理者は、ステップＳ１１１を行い、そうでなければステップＳ１０９を行う。
【００５１】
ステップＳ１０９では、仮の基準フレームからのハミング距離が最大となるフィールドの集合に対して、システム管理者は、０と１の両方の値を取っているビットを選ぶ。つまり、システム管理者は、当該ビットが０である仮の基準フレームに加えて、当該ビットが１である仮の基準フレームを得る。
なお、システム管理者は、各フィールドのパターンを、どのフィールドから算出するかを記録しておく。
【００５２】
ステップＳ１１０では、システム管理者は、ステップＳ１０９で仮の基準フレームを追加した後のテーブル数が、目標値以下であるか否かを判定する。テーブル数が目標値以下であれば、システム管理者は、ステップＳ１０７を行う。そうでなければ、システム管理者は、目標とするテーブル参照回数及びテーブルサイズの両方を実現することは不可能として、図５及び図６に示すフローを終了する。
【００５３】
ステップＳ１１１では、これまでに算出した仮の基準フィールドすべてを、最終的な基準フィールドとして決定し、図５及び図６に示すフローを終了する。
【００５４】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、定型ビット列に対応する第１のＣＲＣと、規定ビット列に対応する第２のＣＲＣと、規定ビット列と第２の領域のビット列との差分に対応する差分ＣＲＣのみをＣＲＣテーブルに保持すればよい。また、ＣＲＣテーブルから第１のＣＲＣと第２のＣＲＣと差分ＣＲＣを取得し、取得した第１のＣＲＣと第２のＣＲＣと差分ＣＲＣと、第３のＣＲＣとに基づいて、送信フレームのＣＲＣを生成することができる。このように、本実施の形態によれば、テーブルのサイズを抑えながら、ＣＲＣ演算時間を短縮することができる。
【００５５】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、制御装置１０のハードウェア構成の補足説明を行う。
図１に示すプロセッサ１０３は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ１０３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図１に示す記憶装置１０４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図１に示す通信インタフェース１０２は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信インタフェース１０２は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
図１に示す入出力インタフェース１０１は、例えば、マウス、キーボード、ディスプレイ等である。
【００５６】
また、記憶装置１０４には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ１０３により実行される。
プロセッサ１０３はＯＳの少なくとも一部を実行しながら、フレーム生成部１００１、フレーム構成決定部１００２、基準フレームＣＲＣ取得部１００３、基準フィールドＣＲＣ取得部１００４、差分ビットＣＲＣ取得部１００５、可変フィールドＣＲＣ生成部１００６、演算部１００７及びフレーム連結部１００８（以下、これらをまとめて「部」という）の機能を実現するプログラムを実行する。
プロセッサ１０３がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、記憶装置１０４、プロセッサ１０３内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００５７】
また、「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、制御装置１０は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった電子回路により実現されてもよい。
この場合は、「部」は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【符号の説明】
【００５８】
１０  制御装置、１０１  入出力インタフェース、１０２  通信インタフェース、１０３  プロセッサ、１０４  記憶装置、１０５  バス、１００１  フレーム生成部、１００２  フレーム構成決定部、１００３  基準フレームＣＲＣ取得部、１００４  基準フィールドＣＲＣ取得部、１００５  差分ビットＣＲＣ取得部、１００６  可変フィールドＣＲＣ生成部、１００７  演算部、１００８  フレーム連結部。
【図１】
2017212547.tif 000003
【図２】
2017212547.tif 000004
【図３】
2017212547.tif 000005
【図４】
2017212547.tif 000006
【図５】
2017212547.tif 000007
【図６】
2017212547.tif 000008
【手続補正書】
【提出日】平成28年10月25日(2016.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で１つ以上の規定ビット列のいずれかに類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出する領域指定部と、
前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得する第１のＣＲＣ取得部と、
前記第２の領域に対して、前記第２の領域のビット列に類似する規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得する第２のＣＲＣ取得部と、
前記領域指定部により抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得する差分ＣＲＣ取得部と、
前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成する第３のＣＲＣ生成部と、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するフレームＣＲＣ生成部とを有し、
前記領域指定部は、
前記差分の数と前記ＣＲＣテーブルのテーブルサイズとが各々の目標値以下になるようにして個数とビットパターンとが決定されている１つ以上の規定ビット列のいずれかに類似するビット列が出現する領域を前記第２の領域として指定するデータ処理装置。
【請求項２】
前記第１のＣＲＣ取得部は、
前記送信フレームと同じフレーム長であり、前記第１の領域に対応する領域が前記定型ビット列で構成され、前記第１の領域に対応する領域以外の領域のビット値が０であるフレームのＣＲＣを、前記第１のＣＲＣとして、前記ＣＲＣテーブルから取得し、
前記第２のＣＲＣ取得部は、
前記送信フレームと同じフレーム長であり、前記第２の領域に対応する領域が前記第２の領域のビット列に類似する規定ビット列で構成され、前記第２の領域に対応する領域以外の領域のビット値が０であるフレームのＣＲＣを、前記第２のＣＲＣとして、前記ＣＲＣテーブルから取得し、
前記差分ＣＲＣ取得部は、
前記送信フレームと同じフレーム長であり、前記差分に対応する位置のビット値が１であり、前記差分に対応する位置以外の領域のビット値が０であるフレームのＣＲＣを、前記差分ＣＲＣとして、前記ＣＲＣテーブルから取得し、
前記フレームＣＲＣ生成部は、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣの排他的論理和演算を行って前記送信フレームのＣＲＣを生成する請求項１に記載のデータ処理装置。
【請求項３】
前記領域指定部は、
前記送信フレームが準拠している通信プロトコルに基づき、前記第１の領域と、前記第２の領域と、前記第３の領域とを指定する請求項１に記載のデータ処理装置。
【請求項４】
コンピュータが、送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で１つ以上の規定ビット列のいずれかに類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出する領域指定処理と、  前記コンピュータが、前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得する第１のＣＲＣ取得処理と、
前記コンピュータが、前記第２の領域に対して、前記第２の領域のビット列に類似する規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得する第２のＣＲＣ取得処理と、
前記コンピュータが、抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得する差分ＣＲＣ取得処理と、
前記コンピュータが、前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成する第３のＣＲＣ生成処理と、
前記コンピュータが、前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するフレームＣＲＣ生成処理とを有し、
前記領域指定処理において、
前記コンピュータは、
前記差分の数と前記ＣＲＣテーブルのテーブルサイズとが各々の目標値以下になるようにして個数とビットパターンとが決定されている１つ以上の規定ビット列のいずれかに類似するビット列が出現する領域を前記第２の領域として指定するデータ処理方法。
【請求項５】
送信フレーム内で定型ビット列が出現する第１の領域と、前記送信フレーム内で１つ以上の規定ビット列のいずれかに類似するビット列が出現する第２の領域と、前記送信フレーム内で非定型ビット列が出現する第３の領域とを指定し、前記第２の領域のビット列と前記規定ビット列との差分を抽出する領域指定処理と、
前記第１の領域に対して、前記定型ビット列に対応するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）である第１のＣＲＣを、複数のＣＲＣが格納されているＣＲＣテーブルから取得する第１のＣＲＣ取得処理と、
前記第２の領域に対して、前記第２の領域のビット列に類似する規定ビット列に対応するＣＲＣである第２のＣＲＣを、前記ＣＲＣテーブルから取得する第２のＣＲＣ取得処理と、
前記領域指定処理により抽出された前記差分に対応するＣＲＣである差分ＣＲＣを、前記ＣＲＣテーブルから取得する差分ＣＲＣ取得処理と、
前記第３の領域のビット列に対応するＣＲＣである第３のＣＲＣを生成する第３のＣＲＣ生成処理と、
前記第１のＣＲＣと前記第２のＣＲＣと前記差分ＣＲＣと前記第３のＣＲＣとを用いて、前記送信フレームのＣＲＣを生成するフレームＣＲＣ生成処理とをコンピュータに実行させるデータ処理プログラムであって、
前記領域指定処理において、
前記コンピュータに、
前記差分の数と前記ＣＲＣテーブルのテーブルサイズとが各々の目標値以下になるようにして個数とビットパターンとが決定されている１つ以上の規定ビット列のいずれかに類似するビット列が出現する領域を前記第２の領域として指定させるデータ処理プログラム。
【国際調査報告】
2017212547.tif 000009
2017212547.tif 000010