(57)【特許請求の範囲】
【請求項１】
第1のデータ列と、この第１のデータ列を所定の多項式で割り算した剰余に対応する第1の誤り検出コードと、を有する第１のデータ系列を入力する入力部と、
反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、前記第１のデータ列を第２のデータ列に変換する変換部と、
前記挿入された反転情報ビットまたは反転情報ビット列に基づいて、前記処理に対応する処理ビット列を生成する処理ビット列生成部と、
前記生成された処理ビット列から前記反転情報ビットを抽出して蓄積する蓄積部と、
前記蓄積された反転情報ビットと前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するコード生成部と、
を具備することを特徴とするデータ変換装置。
【請求項２】
前記処理が、前記第１のデータ列の所定位置への所定の反転情報ビットまたは反転情報ビット列の挿入を含み、
前記処理ビット列生成部が、前記所定の反転情報ビットまたは反転情報ビット列を前記処理ビット列として生成する、
ことを特徴とする請求項１に記載のデータ変換装置。
【請求項３】
前記処理が、前記第１のデータ列の所定位置への所定の反転情報ビット列の挿入を含み、
前記処理ビット列生成部が、前記所定の反転情報ビット列を前記所定の多項式で割り算した剰余を前記処理ビット列として生成する、
ことを特徴とする請求項１に記載のデータ変換装置。
【請求項４】
前記処理が、前記第１のデータ列中の２つの所定位置間での反転情報ビットまたは反転情報ビット列の交換を含み、
前記処理ビット列生成部が、前記２つの所定位置の反転情報ビットまたは反転情報ビット列が異なる場合に、前記２つの所定位置に１が配置される第１の反転情報ビット列を生成し、この第１の反転情報ビット列を前記所定の多項式で割り算した剰余を前記処理ビット列として生成する、
ことを特徴とする請求項１乃至３のいずれか１項に記載のデータ変換装置。
【請求項５】
前記処理が、前記第１のデータ列の所定位置での反転情報ビットまたは反転情報ビット列の反転を含み、
前記処理ビット列生成部が、前記所定位置のみを１とする第２の反転情報ビット列を生成し、この第２の反転情報ビット列を前記所定の多項式で割り算した剰余を前記処理ビット列として生成する、
ことを特徴とする請求項１乃至４のいずれか１項に記載のデータ変換装置。
【請求項６】
前記処理が、前記第１のデータ列に対する、所定位置での所定の反転情報ビットまたは反転情報ビット列との排他的論理和を含み、
前記処理ビット列生成部が、前記所定位置に前記所定の反転情報ビットまたは反転情報ビット列を配置した第３の反転情報ビット列を生成し、この第３の反転情報ビット列を前記所定の多項式で割り算した剰余を前記処理ビット列として生成する、
ことを特徴とする請求項１乃至５のいずれか１項に記載のデータ変換装置。
【請求項７】
前記処理が、反転情報ビットまたは反転情報ビット列の挿入と、反転情報ビットまたは反転情報ビット列の交換、反転、および所定の反転情報ビットまたは反転情報ビット列との排他的論理和のいずれかの複数の処理の組み合わせを含み、
前記処理ビット列生成部が、前記複数の処理それぞれに対応する複数の処理ビット列を生成し、この複数の処理ビット列の排他的論理和を算出し、この排他的論理和を前記所定の多項式で割り算した剰余を前記処理ビット列として生成する、
ことを特徴とする請求項１乃至６のいずれか１項に記載のデータ変換装置。
【請求項８】
前記第２のデータ列の第３の誤り検出コードを生成する第２のコード生成部と、
前記第２、第３の誤り検出コードを比較する比較部と、
をさらに具備することを特徴とする請求項１乃至７のいずれか１項に記載のデータ変換装置。
【請求項９】
前記第２のデータ列に、前記第２の誤り検出コードを付加して第２のデータ系列を生成するデータ系列生成部と、
前記第２の誤り検出コードを用いて、前記第２のデータ系列の誤りを検出する誤り検出部と、
をさらに具備することを特徴とする請求項１乃至８のいずれか１項に記載のデータ変換装置。
【請求項１０】
前記請求項８記載のデータ変換装置と、
前記第２のデータ列と、前記第２の誤り検出コードまたは前記第３の誤り検出コードと、を有するデータ系列を、記録媒体に書き込む書込部と、
を具備することを特徴とする情報記録装置。
【請求項１１】
第1のデータ列と、この第1のデータ列を所定の多項式で割り算した剰余に対応する第１の誤り検出コードと、を有するデータ系列のうちの前記第１のデータ列が、反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、変換された第２のデータ列と、この第１のデータ列の誤り検出コードと、を有する第２のデータ系列を入力する入力部と、
前記第２のデータ系列から前記反転情報ビットを抽出して蓄積する蓄積部と、
前記蓄積された反転情報ビットと、前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するコード生成部と、
前記第２の誤り検出コードを用いて、前記第２のデータ系列の誤りの有無を検出する検出部と、
を具備することを特徴とする誤り検出装置。
【請求項１２】
第1のデータ列と、この第1のデータ列を所定の多項式で割り算した剰余に対応する第1の誤り検出コードと、を有する第1のデータ系列を入力するステップと、
反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、前記第１のデータ列を第２のデータ列に変換するステップと、
前記挿入された反転情報ビットまたは反転情報ビット列に基づいて、前記処理に対応する処理ビット列を生成するステップと、
前記生成された処理ビット列から前記反転情報ビットを抽出して蓄積するステップと、
前記蓄積された反転情報ビットと前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するステップと、
を含むことを特徴とするデータ変換方法。
【請求項１３】
第1のデータ列と、この第1のデータ列を所定の多項式で割り算した剰余に対応する第１の誤り検出コードと、を有するデータ系列のうちの前記第１のデータ列が、反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、変換された第２のデータ列と、この第１のデータ列の誤り検出コードと、を有する第２のデータ系列を入力するステップと、
前記第２のデータ系列から前記反転情報ビットを抽出して蓄積するステップと、
前記蓄積された反転情報ビットと、前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するステップと、
前記第２の誤り検出コードを用いて、前記第２のデータ系列の誤りの有無を検出するステップと、
を含むことを特徴とする誤り検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データ列を異なる系列の出力データ列に変換するデータ変換装置、情報記録装置、誤り検出装置、データ変換方法および誤り検出方法に関する。
【背景技術】
【０００２】
従来では、入力データ列にＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）などの誤り検出コードを付加して誤り検出を行う技術がある。この技術では、入力データ列を変換する変換回路、例えばラン長制限符号化回路、ＭＴＲ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｉｔｉｏｎ  Ｒｕｎ）符号化回路、またはブロック分割してパリティビットを挿入する変換回路などを用いる場合、変換回路への入力データに対しては、変換回路の入力側で誤り検出コードによるチェックを行う。そして、変換回路からの出力データに対しては、別の誤り検出コードを生成して送信する。また従来では、入力データ列の各シンボルを、そのいずれとも一致しないパターンを有する特定シンボルと排他的論理和演算を行い、特定シンボルとともに出力する技術が公開されている（特許文献１参照）。
【特許文献１】特開２００８−４１９５号公報、要約
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、前述の誤り検出の技術では、変換後のデータを用いずに出力データ系列の誤り検出コードを生成できないので、トランジスタで構成されたＬＳＩ（集積回路、ここでは変換回路）の故障などに伴うデータの変換ミスにより、変換回路への入力データと変換回路からの出力データとの同一性が損なわれた場合にこれを検出することができない。
上記に鑑み、本発明は変換後のデータを用いずに出力データ系列の誤り検出コードを生成するデータ変換装置、情報記録装置、誤り検出装置、データ変換方法および誤り検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
本発明の一態様に係るデータ変換装置は、第１のデータ列と、この第１のデータ列を所定の多項式で割り算した剰余に対応する第１の誤り検出コードと、を有する第１のデータ系列を入力する入力部と、反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、前記第１のデータ列を第２のデータ列に変換する変換部と、前記挿入された反転情報ビットまたは反転情報ビット列に基づいて、前記処理に対応する処理ビット列を生成する処理ビット列生成部と、前記生成された処理ビット列から前記反転情報ビットを抽出して蓄積する蓄積部と、前記蓄積された反転情報ビットと前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するコード生成部と、を具備することを特徴とする。
【０００５】
本発明の一態様に係る情報記録装置は、前記データ変換装置と、前記第２のデータ列と、前記第２の誤り検出コードまたは前記第３の誤り検出コードと、を有するデータ系列を、記録媒体に書き込む書込部と、を具備することを特徴とする。
【０００６】
本発明の一態様に係る誤り検出装置は、第１のデータ列と、この第１のデータ列を所定の多項式で割り算した剰余に対応する第１の誤り検出コードと、を有するデータ系列のうちの前記第１のデータ列が、反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、変換された第２のデータ列と、この第１のデータ列の誤り検出コードと、を有する第２のデータ系列を入力する入力部と、前記第２のデータ系列から前記反転情報ビットを抽出して蓄積する蓄積部と、前記蓄積された反転情報ビットと、前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するコード生成部と、前記第２の誤り検出コードを用いて、前記第２のデータ系列の誤りの有無を検出する検出部と、を具備することを特徴とする。
【０００７】
本発明の一態様に係るデータ変換方法は、第１のデータ列と、この第１のデータ列を所定の多項式で割り算した剰余に対応する第１の誤り検出コードと、を有する第１のデータ系列を入力するステップと、反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、前記第１のデータ列を第２のデータ列に変換するステップと、前記挿入された反転情報ビットまたは反転情報ビット列に基づいて、前記処理に対応する処理ビット列を生成するステップと、前記生成された処理ビット列から前記反転情報ビットを抽出して蓄積するステップと、前記蓄積された反転情報ビットと前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するステップと、を含むことを特徴とする。
【０００８】
本発明の一態様に係る誤り検出方法は、第１のデータ列と、この第１のデータ列を所定の多項式で割り算した剰余に対応する第１の誤り検出コードと、を有するデータ系列のうちの前記第１のデータ列が、反転情報ビットまたは反転情報ビット列の挿入を含む処理によって、変換された第２のデータ列と、この第１のデータ列の誤り検出コードと、を有する第２のデータ系列を入力するステップと、前記第２のデータ系列から前記反転情報ビットを抽出して蓄積するステップと、前記蓄積された反転情報ビットと、前記第１の誤り検出コードとの排他的論理和に基づいて、前記第２のデータ列に対応する第２の誤り検出コードを生成するステップと、前記第２の誤り検出コードを用いて、前記第２のデータ系列の誤りの有無を検出するステップと、を含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、変換後のデータを用いずに出力データ系列の誤り検出コードを生成するデータ変換装置、情報記録装置、誤り検出装置、データ変換方法および誤り検出方法を提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
（第１の実施の形態）
図１は本発明の第１実施形態に係る情報記録システムを表すブロック図である。情報記録システム１０は、ホスト装置１００、情報記録装置２００から構成される。
【００１１】
情報記録装置２００は、ハードディスク（ＨＤ）２０１、ＤＲＡＭ（ダイナミック型半導体メモリ）２０２、ホストインターフェース（Ｉ／Ｆ）２０３、ディスクインターフェース（Ｉ／Ｆ）２０４、ＤＲＡＭインターフェース（Ｉ／Ｆ）２０５、ハードディスクコントローラ（ＨＤＣ）２１０を有する。
【００１２】
ホスト装置１００は、情報記録装置２００に情報を書き込み、読み出す装置で、例えば、パーソナルコンピュータにおけるコントロール部である。ホスト装置１００は、ホストインターフェース２０３を介して、ＨＤＣ２１０にコマンドを送ることができる。またホスト装置１００は、ホストインターフェース２０３を介して、ＨＤＣ２１０からのデータを受け取ることもできる。
【００１３】
ＨＤＣ２１０は、ＨＤ２０１、ＤＲＡＭ２０２それぞれと、ディスクインターフェース２０４、ＤＲＡＭインターフェース２０５を介して、データをやり取りできる。ＨＤ２０１は、ＤＲＡＭ２０２にデータが所定量たまると、このデータをＨＤ２０１に送り出す。ＨＤ２０１に記録されるデータには、誤り検出コードが付加され、再生時のエラー訂正が可能となっている。
【００１４】
ＨＤ２０１は、磁気ディスク、スピンドルモータ、磁気ヘッド、アームを有する。磁気ディスクは、情報を記録する記録媒体である。スピンドルモータは、磁気ディスクを回転させる。磁気ヘッドは、磁気ディスクにデータを書き込み、読み出す。アームは、磁気ヘッドを保持し、磁気ディスク上を移動させる。
【００１５】
ＤＲＡＭ２０２は、ＨＤ２０１にデータを記録する際のバッファとして使用される。ホスト装置１００からＨＤ２０１にデータが書き込まれるときには、ＤＲＡＭ２０２を経由して、データが書き込まれる。また、ＨＤ２０１からホスト装置１００側へデータが読み出されるときには、ＤＲＡＭ２０２を経由して、データが読み出される。また、ＤＲＡＭ２０２は、領域管理テーブル、アドレス変換テーブルを記憶する。
【００１６】
ＨＤＣ２１０は、コマンド解析部２１１、変換部２１３、判断部２１４、ディスクリードライト制御ブロック２１５、逆変換部２１６を有する。
【００１７】
コマンド解析部２１１は、ホスト装置１００から送られるコマンドを解析する。このコマンドには、データの書き込み命令、データの読み出し命令、データの転送、メモリ、情報の読み取り命令などがある。コマンド解析部２１１は、ホスト装置１００からの書き込みコマンドを検出する。
【００１８】
変換部２１３は、ＤＲＡＭ２０２から入力する入力データ系列を異なる系列の出力データ系列に変換する。この変換部２１３は、ＤＲＡＭ２０２から入力されたデータを変換し、磁気記録再生に適したデータ系列を出力するものである。この入力データ系列は、第１のデータ系列を構成し、出力データ系列は、第２のデータ系列を構成する。なお、変換部２１３に関する詳細な構成は後述する。
【００１９】
判断部２１４は、変換部２１３に入力する入力データと、変換部２１３から出力される出力データとの同一性を判断して、同一性の保障を行う。
【００２０】
ディスクリードライト制御ブロック２１５は、ＨＤ２０１、ＤＲＡＭ２０２にデータを書き込み、読み出す。ディスクリードライト制御ブロック２１５は、ＤＲＡＭ２０２に書き込んだデータが所定量に達すると、ＨＤ２０１への書き込み指示を、ディスクインターフェース２０４に出力する。ディスクリードライト制御ブロック２１５は、ＨＤ２０１、ＤＲＡＭ２０２からのデータの消去も行う。ディスクインターフェース２０４は、書き込み指示に基づいて、ＤＲＡＭ２０２内のデータをＨＤ２０１に書き込む書込部の構成を有する。
【００２１】
ディスクリードライト制御ブロック２１５は、変換部２１３が出力したデータに対し、誤り訂正符号による符号化をほどこし、ＨＤ２０１に記録されるデータを生成し、またＨＤ２０１から再生されたデータが入力されると、誤り訂正符号による復号化をほどこし、逆変換部２１６へ入力するデータを出力する。
【００２２】
逆変換部２１６は、変換部２１３の逆変換を行う回路である。すなわち、磁気記録再生に適した再生データ系列から、もとのデータに復元する。
【００２３】
図２は、図1に示した変換部を表すブロック図である。変換部２１３は、データ変換部２２１、ＣＲＣチェック部２２２、チェックバイト生成部２２３、チェックバイト再生成部２２４、セレクタ部２２５、比較部２２６を有する。また、変換部２１３は、図示しないカウンタとを有する。変換部２１３が接続されている配線は、入力データ系列を入力する入力部として機能する。カウンタは、入力データ列をカウントする。変換部２１３は、ＤＲＡＭ２０２から入力する入力データ列を所定系列の出力データ列に変換している。ここで、チェックバイトとは、データ変換部２２１において出力されたデータ系列に対して生成される専用の誤り検出コードを意味し、その生成方法や検出方法について後述する。
【００２４】
この第１実施形態に係るデータ変換部２２１が変換する系列は、たとえばＤＣ成分が抑制され、かつラン長制約を満たすものであり、ここではＤＣＣＲＬＬ（Ｄｉｒｅｃｔ  Ｃｕｒｒｅｎｔ  Ｃｏｎｔｒｏｌｌｅｄ  Ｒｕｎ  Ｌｅｎｇｔｈ  Ｌｉｍｉｔｅｄ）系列と呼ぶ。
【００２５】
データ変換部２２１による変換では、データ列中に含まれない特定パターンＰでデータ列を入力系列、もしくはこの入力系列を反転した反転系列としてマスクする。またこの変換では、入力系列か、反転系列かを示す反転情報ビットをデータ列中の所定の位置に挿入していく。すなわち、このデータ変換部２２１は、次の（１）〜（３）のいずれかの動作を行う。
（１）特定パターンＰと入力データ列とをＸＯＲ（排他的論理和）演算して出力する。
（２）特定パターンＰと入力データ列の反転とをＸＯＲ演算して出力する。
（３）入力データ列の間に反転情報ビットを挿入する。
このデータ変換部２２１は、入力データ列を出力データ列に変換する変換部として機能するとともに、処理に対応するデータ（処理ビット列）を生成する処理ビット列生成部として機能する。
【００２６】
ＣＲＣチェック部２２２は、変換部２２１の入力系列に設けられる。ＣＲＣチェック部２２２は入力データ列に付加されたＣＲＣ値を検出してチェックする。このＣＲＣ値は、ＣＲＣチェック部２２２からチェックバイト再生成部２２４へ出力される。
【００２７】
チェックバイト生成部２２３は、変換部２２１の出力系列に設けられる。チェックバイト生成部２２３は、出力データ列に対して出力系列のチェックバイトの情報を生成する。このチェックバイトの情報は、セレクタ部２２５および比較部２２６に出力する。なお、チェックバイト生成部２２３の詳細な構成は後述する。
【００２８】
チェックバイト再生成部２２４は、入力側のＣＲＣ値、パターンＰ、反転情報ビットのビット情報に基づいて、出力側のチェックバイトの情報を生成するコード生成部として機能する。このチェックバイトの情報は、比較部２２６に出力される。なお、チェックバイト再生成部２２４の詳細は後述する。
【００２９】
セレクタ部２２５は、出力データ列と、チェックバイトの情報を選択して出力する。セレクタ部２２５は、出力データ列のビット位置をカウントする図示しないカウンタからの信号に基づいて、出力データ列またはチェックバイトの情報を選択して出力する。セレクタ部２２５は、出力データ列にチェックバイトの情報を付加して出力データ系列を生成するデータ系列生成部の構成を有する。
【００３０】
比較部２２６は、チェックバイト生成部２２３、チェックバイト再生成部２２４から入力するチェックバイトのビット情報を比較し、その同一性を判定する比較部として機能する。比較部２２６は、比較に応じたチェック結果を、判断部２１４に出力し、ＨＤ２０１への出力データ列の書込許可または書込禁止を可能にする。なお、このチェック結果を直接、ディスクリードライト制御ブロック２１５に出力して、ディスクリードライト制御ブロック２１５で上記の書込許可または書込禁止を判断することも可能である。
【００３１】
図３は、図２に示したチェックバイト生成部２２３を表すブロック図である。チェックバイト生成部２２３は、変換部２１３の出力系列に設けられ、カウンタ２３１、ＣＲＣ生成部２３２、ビット蓄積部２３４、ＸＯＲ（排他的論理和）部２３５を有する。チェックバイト生成部２２３は、ＤＣＣＲＬＬ系列のデータ列（図４の（ａ）参照）から、データ変換部２２１でデータ変換された出力データ列（図４の（ｂ）参照）のチェックバイトを生成する第２のコード生成部として機能する。なお、図４中、斜線部分は、所定ビット数のブロックに分割されたデータ列である。
【００３２】
カウンタ２３１は、出力データをカウントするカウンタで、このカウントで分割されたブロックの位置、ブロック間の反転情報ビットの挿入位置やデータ変換部２２１が処理する出力データの出力ビット数を判断可能にする。
【００３３】
ＣＲＣ生成部２３２は、ＣＲＣのビット数分に対応するフリップフロップ（ＦＦ）を有する。ＣＲＣ生成部２３２は、反転情報ビットが除外された出力データ列の分割されたデータ列を生成多項式で割り算して、出力データ列の剰余（ＣＲＣコード値）を生成する第２の剰余算出部として機能する。ＣＲＣ生成部２３２は、カウンタ２３１からの取り込みイネーブルに応じてデータをシフトする。カウンタ２３１は、反転情報ビットが挿入されているビットでない場合、ＣＲＣ生成部２３２に１ビットのデータを入力させる。ＣＲＣ生成部２３２は、反転情報ビットが除外された出力データ列が入力されたときにのみ動作する。
【００３４】
ビット蓄積部２３４は、トータルの反転情報ビット数分のＦＦを有するシフトレジスタである。ビット蓄積部２３４は、カウンタ２３１からの取り込みイネーブルに応じて反転情報ビットをシフトする。カウンタ２３１は、反転情報ビットが挿入されているビットの場合、ビット蓄積部２３４に反転情報ビットのデータを入力させる。ビット蓄積部２３４は、反転情報ビットが入力されたときにのみ動作する。
【００３５】
ＸＯＲ演算部２３５は、出力データ列の全データの入力が終わると、ＣＲＣ生成部２３２で生成されたＣＲＣ値（例えば１６ビット）と、ビット蓄積部２３４からの反転情報ビット（例えば８ビット）をＸＯＲ演算する。ＸＯＲ演算部２３５は、ＸＯＲ演算結果としてのチェックバイトの情報をセレクタ部２２５に出力する。ＸＯＲ演算部２３５は、ＣＲＣと、ビット蓄積部２３４からの反転情報ビットとの排他的論理和を算出する。
【００３６】
図５は、図２に示したチェックバイト再生成部２２４を表すブロック図である。チェックバイト再生成部２２４は、変換部２１３の入力系列に設けられ、インバータ２４１、セレクタ部２４２、ビット蓄積部２４３、ＣＲＣ生成部２４４、ＦＦ２４５、ＸＯＲ２４６、ＸＯＲ２４７を有する。また、チェックバイト再生成部２２４は、所定のカウンタを有する。カウンタは、データをカウントするカウンタで、このカウントで分割されたブロックの位置、ブロック間の反転情報ビットの挿入位置や入力データの入力ビット数を判断可能にする。チェックバイト再生成部２２４は、ＣＲＣ値と、ＣＲＣ生成部２４４で生成されたＣＲＣをＸＯＲ演算して、図４の（ｂ）のＣＲＣを生成する。さらに、チェックバイト再生成部２２４は、この生成したＣＲＣと、ビット蓄積部２４３からの反転情報ビットとを、ＸＯＲ演算してチェックバイトを生成する（図４の（ｂ）参照）。
【００３７】
インバータ２４１は、入力するパターンＰを反転して反転データを得る。インバータ２４１は、セレクタ部２４２の１側に接続されている。
【００３８】
セレクタ部２４２は、パターンＰと、反転データを選択して取り込む。セレクタ部２４２は、ビット蓄積部２４３からの反転情報ビットに基づいて、パターンＰまたは反転データの選択を行う。
【００３９】
ビット蓄積部２４３は、トータルの反転情報ビット数分のＦＦを有するシフトレジスタである。ビット蓄積部２４３は、入力する反転情報ビットによってデータをシフトする。ビット蓄積部２４３は、所定位置で挿入されるビットまたはビット列を保持する。
【００４０】
ＣＲＣ生成部２４４は、ＣＲＣのビット数分に対応するＦＦを有する。ＣＲＣ生成部２４４は、セレクタ部２４２によって選択されたパターンＰまたはパターンＰの反転データを生成多項式で割り算して、剰余（ＣＲＣ値）を生成する。このＣＲＣ生成部２４４は、ビット列それぞれを生成多項式で割り算したＣＲＣ値を生成する。このＣＲＣ生成部２４４は、図３に示したＣＲＣ生成部２３２と同一構成のものである。
【００４１】
フリップフロップ（ＦＦ）２４５は、ＣＲＣのビット数分のフリップフロップからなり、ＣＲＣチェック部２２２から入力するＣＲＣ値を保持してＸＯＲ２４６に出力する。
【００４２】
ＸＯＲ２４６は、ＣＲＣ生成部２４４からのＣＲＣ値と、ＦＦ２４５からのＣＲＣ値との排他的論理和演算を行う。ＸＯＲ２４７は、ビット蓄積部２４３からの反転情報ビットと、ＸＯＲ２４６からの演算結果（ＣＲＣ値）との排他的論理和演算を行い、チェックバイトを生成する。ＸＯＲ２４６とＸＯＲ２４７は、複数のＣＲＣ値のＸＯＲ演算を行う論理演算部として機能する。
【００４３】
次に、情報記録装置２００の動作手順を説明する。
コマンド解析部２１１がホスト装置１００から送られる書き込みコマンドを検出する。すなわち、ホスト装置１００からコントローラ２１０にデータの書き込みを指示する書き込みコマンドが送られ、コマンド解析部２１１によって検出される。このコマンドには、書き込むデータが添付される。
【００４４】
変換部２１３は、コマンド解析部２１１からのデータ変換の命令に応じて、ＤＣＣＲＬＬ系列によるデータ変換を行うとともに、チェックバイト生成部２２３、チェックバイト再生成部２２４を用いてデータの誤り検出を行う。
【００４５】
図６は、チェックバイト生成部２２３の動作手順の一例を表すフロー図である。
カウンタ２３１は、データが入力すると（ステップＳ１１）、入力データをカウントする（ステップＳ１２）。
【００４６】
カウンタ２３１は、反転情報ビットが挿入されるビットを判断する（ステップＳ１３）。カウンタ２３１は、反転情報ビットが挿入されるビット数分カウントすると、反転情報ビットであれば、反転情報ビットをビット蓄積部２３４へ入力させる（ステップＳ１４）。
【００４７】
また、カウンタ２３１は、反転情報ビットが挿入されるビットでない場合、ＣＲＣ生成部２３２に１ビットのデータを入力させる（ステップＳ１５）。上記動作は、すべてのデータが入力し終わるまで繰り返される（ステップＳ１６）。
【００４８】
そして、すべてのデータか入力し終わると、ＸＯＲ演算部２３５は、ＣＲＣ生成部２３２で生成されたＣＲＣ値（例えば１６ビット）と、ビット蓄積部２３４に蓄積された反転情報ビット（例えば８ビット）をＸＯＲ演算して（ステップＳ１７）、演算結果であるチェックバイトをセレクタ部２２５に出力する（ステップＳ１８）。
【００４９】
一般に、変換動作は、以下の処理（１）〜（４）の組み合わせで構成できる。本実施形態のデータ変換部２２１の動作もこの処理（１）〜（４）の組み合わせで説明できる。
処理（１）特定のパターンＰとデータとのＸＯＲ演算
処理（２）特定のビット位置と特定のビット位置の交換
処理（３）特定のビット位置において入力データの反転
処理（４）特定のビット位置へのビットの挿入
処理（１）〜（３）に対応して、コード（例えば、ＣＲＣ値）を算出し、処理（４）に対応して挿入されたビット列を蓄積し、処理前のコードと、これらのコードやこの蓄積されたビット列とをＸＯＲ演算することで、変換処理後の誤り検出コードであるチェックバイトを算出できる。
・処理（１）に対して、ＸＯＲ演算するビット位置を、実際に演算したパターンに置換し、ＸＯＲ演算しなかったビットはゼロにするデータを生成し、そのデータの誤り検出コード（例えば、ＣＲＣ値）を算出する。なお、特定のパターンＰの反転は、別の特定のパターンであるから、このカテゴリに属する。また、もとのデータを反転してパターンＰとＸＯＲ演算する場合は、もとのデータと、「パターンＰの反転」とのＸＯＲ演算と等価であるため、このカテゴリに属する。
・処理（２）に対して、それら２つのビットが異なっていた場合にのみ、２つの特定ビット位置に相当する場所を「１」とし、交換が行われないビットや、交換が行われても、実際には「０」と「０」、「１」と「１」のようなデータの交換の場合は、そのビット位置に相当する場所を「０」とするデータの誤り検出コード（例えば、ＣＲＣ値）を算出する。なお、処理（２）も処理（１）の一種である。
・処理（３）に対して、そのビット位置に相当する場所を「１」とし、それ以外のビット位置に相当する場所を「０」とするデータの誤り検出コード（例えば、ＣＲＣ値）を算出する。なお、処理（３）も処理（１）の一種である。
・処理（４）に対して、そのビットを保持する。すなわち、このビットはそのままＸＯＲ演算の対象となり、誤り検出コード（例えば、ＣＲＣ値）は算出されない。
・処理前の誤り検出コードと、処理（１）〜（４）で算出された誤り検出コードまたは保持されたビット列をＸＯＲ演算することで、変換処理後の誤り検出コードであるチェックバイトを算出できる。これら処理（１）〜（３）の複数を組み合わせて行うときは、それら（処理（１）のパターンＰと処理２、または処理（１）のパターンＰと処理（３））をＸＯＲ演算して、チェックバイトを算出する。
【００５０】
このように、チェックバイト生成部２２３でパターンＰを反転してからＸＯＲし、途中に反転情報ビットを挿入している動作は、処理（１）と処理（４）の組み合わせを実行していることになる。
【００５１】
なお、もし挿入されるビット数がＣＲＣのビット数を越える場合は、チェックバイト生成部２２３は、別のＣＲＣ生成部を例えばＣＲＣ生成部２３２とパラレルに設ける。そして、チェックバイト生成部２２３は、この挿入ビットのデータ列をこの別のＣＲＣ生成部にも入力し、双方のＣＲＣ生成部のＣＲＣ値をＸＯＲ演算してもよい。また、誤り検出符号は、ＣＲＣでなくてもよく、データを多項式で割り算することでコードを算出するものであれば良い。
【００５２】
また、上述の処理（１）〜処理（３）を複数組み合わせた手順で変換を行う場合には、それぞれ処理別にＣＲＣ生成回路を持つことなく、ＣＲＣ生成回路を１つに共有し、入力データ列を最初にＸＯＲしておくことで、生成される各ＣＲＣ値をＸＯＲしたものが、共有のＣＲＣ生成回路で生成できる。すなわち、処理（１）〜処理（３）を複数組み合わせるということは、元のデータ列に対してＸＯＲされるデータ列が複数存在することを意味するため、それらＸＯＲされるデータ列同士を先にＸＯＲしておくことで、元のデータ列とＸＯＲするデータ列を予め１つにしておくことが可能になる。
【００５３】
図７は、チェックバイト再生成部２２４の動作手順の一例を表すフロー図である。
ここでチェックバイト再生成部２２４には、データ変換部２２１からパターンＰ、反転情報ビット列が入力されるものとする。また、入力データは、データ変換部２２１の入力時点で、ＣＲＣチェック部２２２でＣＲＣチェックされ、そのＣＲＣ値がチェックバイト再生成部２２４に入力されるものとする。
【００５４】
チェックバイト再生成部２２４では、パターンＰは、１ビットずつセレクタ部２４２を介してＣＲＣ生成部２４４に入力される（ステップＳ２１）。このＣＲＣ生成部２４４は、はじめにパターンＰそのものを１ビットずつ順に入力する。ここで、データ変換部２２１は、データを複数ブロックに分け、ブロック間に反転情報ビットを挿入するが、その先頭ブロックは反転しないことがわかっている。そこで、チェックバイト再生成部２２４は、その先頭ブロックのビット数分だけパターンＰをＣＲＣ生成部２４４に入力させる。なお、このパターンＰの１ビット入力は、図示しないカウンタのカウント動作によって行われる。
【００５５】
次に、チェックバイト再生成部２２４は、反転情報ビットの位置かどうか判断する（ステップＳ２２）。ここで、反転情報ビットの位置に到ると、チェックバイト再生成部２２４は、反転情報ビットをビット蓄積部２４３に取り込む（ステップＳ２３）。そして、セレクタ部２４２は、反転情報ビットが１、すなわち反転を示すものであれば（ステップＳ２４）、インバータ２４１から入力するパターンＰの反転データを、ＣＲＣ生成部２４４へ１ビットずつ順次入力させる（ステップＳ２６）。
【００５６】
また、セレクタ部２４２は、反転情報ビットが０であれば、パターンＰを、ＣＲＣ生成部２４４へ１ビットずつそのまま入力させる（ステップＳ２５）。
【００５７】
パターンＰまたはパターンＰの反転データは、（反転情報ビットを含まない入力系列のビット数分）＋（最初のパターンＰの入力分）だけ、ＣＲＣ生成部２４４に入力する。
【００５８】
次に、チェックバイト再生成部２２４は、すべての反転情報ビットを入力し、データ変換部２２１の出力ビット数分の処理が終了したか判断する（ステップＳ２７）。チェックバイト再生成部２２４は、すべての反転情報ビットを入力し、この出力ビット数分の処理が終了するまで、上記のパターンＰまたは反転データを１ビットずつ入力する（ステップＳ２８）。
【００５９】
そして、すべての反転情報ビットを入力し、この出力ビット数分の処理が終了すると、ＸＯＲ演算部２４６は、ＣＲＣ生成部２４４で生成されたＣＲＣ値（たとえば１６ビット）と、ＣＲＣチェック部２２２からの最初のＣＲＣ値とをＸＯＲ演算する（ステップＳ２９）。
【００６０】
さらに、ＸＯＲ演算部２４７は、このＸＯＲ演算結果であるＣＲＣ値と、ビット蓄積部２４３からの反転情報ビットとをＸＯＲ演算する（ステップＳ３０）。ＸＯＲ演算部２４７は、この演算結果であるチェックバイトを比較部２２６に出力する（ステップＳ３１）。
【００６１】
比較部２２６は、チェックバイト生成部２２３からのチェックバイトのビット情報と、チェックバイト再生成部２２４からのチェックバイトのビット情報が入力する。比較部２２６は、これらのチェックバイトのビット情報が同一であるかどうかを比較し、チェック結果を判断部２１４に出力する。
【００６２】
このように、チェックバイト生成部２２４でパターンＰを反転してからＸＯＲしている動作は、処理（１）と処理（３）の組み合わせを実行していることになる。
【００６３】
この操作によって、ＣＲＣ生成部２４４によって生成されたＣＲＣ値と、ビット蓄積部２４３によって生成された反転情報ビットの蓄積パターンとをＸＯＲ演算することで、ＣＲＣチェック部２２２から入力するＣＲＣ値からの変更差分値を求めることができる。なお、データ列の先頭になんらかのビットパターンを挿入する場合は、上記処理（１）で実行してもよいし、上記処理（４）で実行してもよい。この実施の形態では、先頭の特定のパターンＰを処理（１）で実行した。
【００６４】
このような処理の結果、変換後のデータを用いなくても出力データ系列のチェックバイトを生成することができる。
【００６５】
また、変換後のデータでも出力データ系列のチェックバイトを生成することで、２つ別々に生成されたチェックバイトの同一性を判断でき、この判断に基づき、データ変換部２２１でのデータの変換ミスを的確に検出できる。
【００６６】
また、このチェックバイトの同一性判断とともに、ＣＲＣチェック部２２２では、入力データ列の誤り検出を行うので、入力データの信頼性が確保された上で、データ変換部２２１でのデータの変換ミスを的確に検出できる。
【００６７】
なお、この実施の形態では、データ変換部２２１が変換する系列を、ＤＣＣＲＬＬ系列で説明するが、本発明はこれに限らず、例えばパリティチェックコードを使用した系列に用いることも可能である。
【００６８】
（第２の実施の形態）
本発明の第２実施形態を説明する。
図８は、本発明の第２実施形態に係る変換部を表す図である。この変換部２１３が図２の変換部と異なる点は、コード生成部として機能するチェックバイト再生成部２５３をセレクタ部２５４に接続し、セレクタ部２５４の出力をチェックバイトチェック部２５５に取り込むように構成した点である。セレクタ部２５４は、出力データ列にチェックバイトの情報を付加して出力データ系列を生成するデータ系列生成部の構成を有する。
【００６９】
変換部２１３は、変換部および処理ビット列生成部として機能するデータ変換部２５１の出力に、チェックバイト再生成部２５３の出力を付加したデータ列を生成し、このデータ列に対して誤り検出を行うものである。
【００７０】
図９は、図８に示したチェックバイトチェック部を表す図である。チェックバイトチェック部２５５は、カウンタ２６１、セレクタ部２６２、ビット蓄積部２６３、ＣＲＣチェック部２６４、ＸＯＲ演算部２６５を有する。チェックバイトチェック部２５５は、チェックバイト再生成部２５３からのチェックバイトのビット情報と、ビット蓄積部２６３の反転情報ビットのビット情報とを、位置をそろえてＸＯＲ演算して図１０のＡ（誤り検出コード、ここではＣＲＣ）を生成する。さらにチェックバイトチェック部２５５は、チェックバイトチェック部２５５に入力されたデータ系列から、挿入されたビットを取り除いたデータ列と、生成したＣＲＣ値（図１０のＡ）から、通常の誤り検出（ここでは、ＣＲＣによる誤り検出）を行う。このことで、チェックバイトチェック部２５５は、ＣＲＣと同等の精度で誤り検出を行うことが可能である。このチェックバイトチェック部２５５は、チェックバイト再生成部２５３からのチェックバイトのビット情報を用いて、誤りを検出する誤り検出部として機能する。
【００７１】
カウンタ２６１は、セレクタ部２５４からの出力データをカウントするカウンタである。カウンタ２６１は、このカウントで反転情報ビットの挿入位置やデータ変換部２５１が処理する出力データの出力ビット数を判断可能にする。
【００７２】
セレクタ部２６２は、出力データ列と、チェックバイトの情報を選択する。セレクタ部２６２は、出力データ列のビット位置をカウントするカウンタ２６１からの信号に基づいて、出力データ列またはチェックバイトの情報を選択して出力する。セレクタ部２６２は、出力データ列に、チェックバイトを付加して出力データ系列を生成するデータ系列生成部として機能する。
【００７３】
ビット蓄積部２６３は、トータルの反転情報ビット数分のＦＦを有するシフトレジスタである。ビット蓄積部２６３は、カウンタ２６１からの取り込みイネーブルに応じてデータをシフトする。ビット蓄積部２６３は、所定位置で挿入されるビットまたはビット列を保持する。カウンタ２６１は、反転情報ビットが挿入されているビットの場合、ビット蓄積部２６３に反転情報ビットのデータを入力させる。ビット蓄積部２６３は、データが入力されたときにのみ動作する。
【００７４】
ＣＲＣチェック部２６４は、セレクタ部２６２からのデータ列に付加されたＣＲＣ値をチェックする。このＣＲＣ値は、ＣＲＣチェック部２６４から判断部２１４へ出力される。
【００７５】
次に、この実施形態に係る変換部２１３の動作手順を説明する。図１１は、チェックバイトチェック部の動作手順の一例を表すフロー図である。
セレクタ部２５４からは、データ変換部２５１で変換されたデータ列と、チェックバイト再生成部２５３で生成されたチェックバイトからなる出力データ（図１０の（ａ）参照）が１ビットずつ入力する（ステップＳ４１）。
【００７６】
カウンタ２６１は、反転情報ビットが挿入されるビットを判断する（ステップＳ４２）。カウンタ２６１は、反転情報ビットが挿入されるビット数分カウントすると、反転情報ビットであれば、取り込みイネーブルを１にする（ステップＳ４３）。次に、カウンタ２６１は、反転情報ビットをビット蓄積部２６３へ取り込ませる（ステップＳ４４）。
【００７７】
また、カウンタ２６１は、反転情報ビットが挿入されるビットでない場合、チェックバイト位置かどうか判断する（ステップＳ４６）。カウンタ２６１は、チェックバイト位置であれば、セレクタ部２６２の１側のデータを選択し（ステップＳ４７）、ビット蓄積部２６３のシフトイネーブルを１にする（ステップＳ４８）。ビット蓄積部２６３は、反転情報ビットを取り出す（ステップＳ４９）。
【００７８】
また、カウンタ２６１は、チェックバイト位置でない場合、それ以外のデータ列の位置と判断する。カウンタ２６１は、ＣＲＣチェック部２６４の取り込みイネーブルを１にし（ステップＳ５０）、セレクタ部２６２の０側のデータを選択する（ステップＳ５１）。
カウンタ２６１は、ＣＲＣチェック部２６４へ出力データを１ビット入力させる（ステップＳ５２）。
【００７９】
次に、カウンタ２６１は、データ変換部２２１とビット蓄積部２６３との出力ビット数分の処理が終了したか判断する（ステップＳ４５）。カウンタ２６１は、データ変換部２２１とビット蓄積部２６３との出力ビット数分の処理が終了していない場合、ステップＳ４１に戻って、出力データを１ビット入力させる。上記動作は、すべてのデータが入力し終わるまで繰り返される。このような動作により、ＣＲＣチェック部２６４に入力されるデータは、図１０の（ｂ）の系列となる。この系列は、図４の（ｂ）に示したＣＲＣを生成したデータ系列と同一である。
【００８０】
そして、すべてのデータの取り込みが完了した時点で、ＣＲＣチェック部２６４の図示しない判定用フリップフロップがオール０であった場合（ステップＳ５３）、ＣＲＣチェック部２６４は、誤り無しを検出する（ステップＳ５４）。
【００８１】
また、ＣＲＣチェック部２６４の判定用フリップフロップがオール０以外の値であった場合（ステップＳ５３）、ＣＲＣチェック部２６４は、誤りを検出する（ステップＳ５５）。
【００８２】
この実施形態では、データは、１ビットずつチェックバイトチェック部２５５に入力されるが、複数ビットで入力される変換部２１３を構成することも可能である。いずれにしても、変換部２１３は、図１０の（ｂ）のデータ列を生成してＣＲＣチェック部に入力することが実現できる構成であればよい。
【００８３】
このような処理の結果、変換後のデータを用いなくても出力データ系列のチェックバイトを生成することができる。
【００８４】
また、変換後のデータでも出力データ系列のチェックバイトを生成することで、データ変換部２５１のデータ変換の前後で、データの入力系列と出力系列の同一性が保障できる。この結果、この実施の形態では、データ変換部２５１でのデータの変換ミスも検出できる。
【００８５】
なお、この実施形態に係る情報記録装置では、この変換部２１３を通過した後のデータ処理の各部において、入力データに誤りがあるかどうか検出する場合にも適用される。たとえば、ディスクリードライト制御ブロック２１５内に存在する各処理ブロックにおいてデータが入力部である配線を介して入力される際に、このチェックバイトチェック部を有する誤り検出装置を配置する。このチェックバイトチェック部は、入力部からのデータ系列を抽出し、このデータ系列と、生成したＣＲＣ値に基づいて、誤り検出をする。これにより、誤り検出装置は、入力データに誤りがないことをその都度確認できる。すなわち、ディスクリードライト制御ブロック２１５は、ビット列を抽出する抽出部と、誤りの有無を検出する検出部として機能する。これにより、誤り検出装置では、この入力データの前の経路にトランジスタ故障などがないことを確認でき、トランジスタ故障などでデータに不一致が生じた際には即座に異常を検出することができる。
【００８６】
（その他の実施形態）
本発明の実施形態は上記の実施形態に限られず拡張，変更可能であり，拡張，変更した実施形態も本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００８７】
【図１】本発明の第１実施形態に係る情報記録システムを表すブロック図である。
【図２】図1に示した変換部を表すブロック図である。
【図３】図２に示したチェックバイト生成部を表すブロック図である。
【図４】本発明の第１実施形態に係るチェックバイト生成部によるチェックバイト生成を説明するためのデータ列を表す構成図である。
【図５】図２に示したチェックバイト再生成部を表すブロック図である。
【図６】チェックバイト生成部の動作手順の一例を表すフロー図である。
【図７】チェックバイト再生成部の動作手順の一例を表すフロー図である。
【図８】本発明の第２実施形態に係る変換部を表す図である。
【図９】図８に示したチェックバイトチェック部を表す図である。
【図１０】本発明の第２実施形態に係るチェックバイト再生成部によるチェックバイト生成を説明するためのデータ列を表す構成図である。
【図１１】チェックバイトチェック部の動作手順の一例を表すフロー図である。
【符号の説明】
【００８８】
１０…情報記録システム、１００…ホスト装置、２００…情報記録装置、２０４…ディスクインターフェース、２１０…コントローラ、２１１…コマンド解析部、２１３…変換部、２１４…判断部、ディスクリードドライブ制御ブロック２１５、２２１…データ変換部、２２２…チェック部、２２３…チェックバイト生成部、２２４…チェックバイト再生成部、２２６…比較部、２３２…ＣＲＣ生成部、２３４…ビット蓄積部、２３５…ＸＯＲ演算部、２４３…ビット蓄積部、２４４…ＣＲＣ生成部、２４６…ＸＯＲ演算部、２４７…ＸＯＲ演算部、２５１…データ変換部、２５３…チェックバイト再生成部、２５５…チェックバイトチェック部、２６３…ビット蓄積部、２６４…ＣＲＣチェック部、２６５…ＸＯＲ演算部
【図１】
0004399015.tif 000002
【図２】
0004399015.tif 000003
【図３】
0004399015.tif 000004
【図４】
0004399015.tif 000005
【図５】
0004399015.tif 000006
【図６】
0004399015.tif 000007
【図７】
0004399015.tif 000008
【図８】
0004399015.tif 000009
【図９】
0004399015.tif 000010
【図１０】
0004399015.tif 000011
【図１１】
0004399015.tif 000012