JPH11177440A - 誤訂正検証方法および装置、エラー訂正装置、再生装置、記録再生装置、通信装置 - Google Patents
誤訂正検証方法および装置、エラー訂正装置、再生装置、記録再生装置、通信装置Info
- Publication number
- JPH11177440A JPH11177440A JP33720997A JP33720997A JPH11177440A JP H11177440 A JPH11177440 A JP H11177440A JP 33720997 A JP33720997 A JP 33720997A JP 33720997 A JP33720997 A JP 33720997A JP H11177440 A JPH11177440 A JP H11177440A
- Authority
- JP
- Japan
- Prior art keywords
- error
- correction
- remainder
- value
- code
- 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
Links
Landscapes
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
(57)【要約】
【課題】 ECCによるエラー訂正に際し誤訂正が発生
したか否かを高速に評価する。 【解決手段】 エラー訂正される前の符号語に対するC
RC剰余を、CRC剰余ラッチ330によりラッチし、E
CCによるエラー訂正演算において算出されてくるエラ
ー位置およびエラー値を随時使用して、各エラー位置お
よびエラー値に対する剰余との排他的論理和でCRCワ
ーキングレジスタ342の値を更新して、評価演算をエラ
ー訂正と並行にかつ高速に進め、全てのエラー位置およ
びエラー値が特定されたときのCRCワーキングレジス
タ342の値と、CRC剰余ラッチ330にラッチされている
値とを比較して、これらが相等しいならばエラー訂正が
正常に訂正が行われたと評価する。
したか否かを高速に評価する。 【解決手段】 エラー訂正される前の符号語に対するC
RC剰余を、CRC剰余ラッチ330によりラッチし、E
CCによるエラー訂正演算において算出されてくるエラ
ー位置およびエラー値を随時使用して、各エラー位置お
よびエラー値に対する剰余との排他的論理和でCRCワ
ーキングレジスタ342の値を更新して、評価演算をエラ
ー訂正と並行にかつ高速に進め、全てのエラー位置およ
びエラー値が特定されたときのCRCワーキングレジス
タ342の値と、CRC剰余ラッチ330にラッチされている
値とを比較して、これらが相等しいならばエラー訂正が
正常に訂正が行われたと評価する。
Description
【0001】
【発明の属する技術分野】 本発明は、誤訂正検証方法
および装置、エラー訂正装置、再生装置、記録再生装
置、通信装置に係り、特に、エラー訂正をオンザフライ
に実行することに好適な誤訂正検証方法および装置、エ
ラー訂正装置、再生装置、記録再生装置、通信装置に関
する。
および装置、エラー訂正装置、再生装置、記録再生装
置、通信装置に係り、特に、エラー訂正をオンザフライ
に実行することに好適な誤訂正検証方法および装置、エ
ラー訂正装置、再生装置、記録再生装置、通信装置に関
する。
【0002】
【従来の技術】 記憶装置の記録媒体に記録されている
ユーザデータを再生する際、再生されるユーザデータに
様々な要因によりエラーが発生する場合がある。発生し
たエラーを訂正するため、記録媒体に記録するに際し、
ユーザデータにエラー訂正符号(Error Correction cod
es、以下、ECCと云う)を付加して記録する手法が採
られている。また、この手法は、データ転送における信
頼性を向上するためにも用いられている。
ユーザデータを再生する際、再生されるユーザデータに
様々な要因によりエラーが発生する場合がある。発生し
たエラーを訂正するため、記録媒体に記録するに際し、
ユーザデータにエラー訂正符号(Error Correction cod
es、以下、ECCと云う)を付加して記録する手法が採
られている。また、この手法は、データ転送における信
頼性を向上するためにも用いられている。
【0003】ところが、ECCによって訂正可能なエラ
ーの個数には、ECCのバイト長に依存する限界があ
り、この限界を越える個数のエラーが発生した場合、あ
る確率で誤訂正を引き起こす。ここで、誤訂正とは、E
CCの訂正能力を超えたエラーが発生した際、本来、エ
ラー検出にとどまり、訂正不能エラー発生と判定すべき
ところを、正常なデータ(期待値)以外の誤ったデータ
に誤って訂正してしまう現象を云う。
ーの個数には、ECCのバイト長に依存する限界があ
り、この限界を越える個数のエラーが発生した場合、あ
る確率で誤訂正を引き起こす。ここで、誤訂正とは、E
CCの訂正能力を超えたエラーが発生した際、本来、エ
ラー検出にとどまり、訂正不能エラー発生と判定すべき
ところを、正常なデータ(期待値)以外の誤ったデータ
に誤って訂正してしまう現象を云う。
【0004】このような誤訂正が発生することにより、
ECCによるエラー検出、訂正だけでは、記憶装置のデ
ータ記録再生に関する信頼性が維持できない場合があ
る。このため、さらに他のエラー検出、エラー訂正のた
めの手法をECCと併用することが一般的になってきて
いる。例えば、ECCとしてリードソロモン符号を用
い、さらに、誤訂正を検出するために巡回冗長検査符号
(Cyclic redundancy check codes;CRCC)を用い
る手法が特開平4−259968号公報に記載されてい
る。ここで、リードソロモン符号とは、非2元のBCH
(Bose-Chaudhuri-Hocquenghem)符号の一種である。
ECCによるエラー検出、訂正だけでは、記憶装置のデ
ータ記録再生に関する信頼性が維持できない場合があ
る。このため、さらに他のエラー検出、エラー訂正のた
めの手法をECCと併用することが一般的になってきて
いる。例えば、ECCとしてリードソロモン符号を用
い、さらに、誤訂正を検出するために巡回冗長検査符号
(Cyclic redundancy check codes;CRCC)を用い
る手法が特開平4−259968号公報に記載されてい
る。ここで、リードソロモン符号とは、非2元のBCH
(Bose-Chaudhuri-Hocquenghem)符号の一種である。
【0005】図2を参照して、このエラー訂正が正常に
行なわれたかどうかの検証における演算処理の手順につ
いて説明する。図2において、{ユーザデータ+CRC
パリティ部+ECCパリティ部}が読み出されてくる
と、ステップ201において、演算処理がスタートされ
る。ECCシンドローム算出のステップ202およびC
RC剰余算出のステップ204は、互いに並行して処理
することが可能である。このような並列処理は、例え
ば、それぞれの処理を行う独立した回路を設けること、
並列処理プロセッサを用いることなどによって実行する
ことができる。
行なわれたかどうかの検証における演算処理の手順につ
いて説明する。図2において、{ユーザデータ+CRC
パリティ部+ECCパリティ部}が読み出されてくる
と、ステップ201において、演算処理がスタートされ
る。ECCシンドローム算出のステップ202およびC
RC剰余算出のステップ204は、互いに並行して処理
することが可能である。このような並列処理は、例え
ば、それぞれの処理を行う独立した回路を設けること、
並列処理プロセッサを用いることなどによって実行する
ことができる。
【0006】ステップ203では、上記ステップ202
において算出されたシンドロームが非ゼロか否かを判定
し、シンドロームが全てゼロの場合は、エラーなしとす
る(ステップ205)。この場合は、訂正演算しない。
すなわち正常なデータが読み出されたと判定する。
において算出されたシンドロームが非ゼロか否かを判定
し、シンドロームが全てゼロの場合は、エラーなしとす
る(ステップ205)。この場合は、訂正演算しない。
すなわち正常なデータが読み出されたと判定する。
【0007】一方、ステップ203の判定において、少
なくとも1つのシンドロームが非ゼロの場合は、読み出
された{ユーザデータ+CRCパリティ部+ECCパリ
ティ部}のどこかに、1個以上のエラーが発生したと判
定して、以下に手順を説明するエラー訂正演算を開始す
る。
なくとも1つのシンドロームが非ゼロの場合は、読み出
された{ユーザデータ+CRCパリティ部+ECCパリ
ティ部}のどこかに、1個以上のエラーが発生したと判
定して、以下に手順を説明するエラー訂正演算を開始す
る。
【0008】エラー訂正演算では、先ず、ステップ20
2で算出されたシンドロームから、エラー位置多項式お
よびエラー評価多項式を導出する(ステップ206)。
そして、導出されたエラー位置多項式を解いてエラー位
置を算出し、算出したエラー位置と、ステップ206に
より導出されたエラー評価多項式とによりエラー値を算
出する(ステップ207)。但し、図2に示すフローチ
ャートは、エラー訂正演算アルゴリズムの一例について
描かれており、エラー位置多項式およびエラー評価多項
式導出を導出するステップ206と、エラー位置および
エラー値を算出するステップ207とが1つのステップ
において実行され、エラー評価多項式を陽に求めること
なく、エラー位置およびエラー値が算出されるエラー訂
正演算アルゴリズムを採用してもよい。
2で算出されたシンドロームから、エラー位置多項式お
よびエラー評価多項式を導出する(ステップ206)。
そして、導出されたエラー位置多項式を解いてエラー位
置を算出し、算出したエラー位置と、ステップ206に
より導出されたエラー評価多項式とによりエラー値を算
出する(ステップ207)。但し、図2に示すフローチ
ャートは、エラー訂正演算アルゴリズムの一例について
描かれており、エラー位置多項式およびエラー評価多項
式導出を導出するステップ206と、エラー位置および
エラー値を算出するステップ207とが1つのステップ
において実行され、エラー評価多項式を陽に求めること
なく、エラー位置およびエラー値が算出されるエラー訂
正演算アルゴリズムを採用してもよい。
【0009】また、ここでは図示していないが、導出さ
れたエラー位置多項式の次数と、見つけられたエラー位
置の個数とが相等しくない場合は、ECCによるエラー
訂正が失敗したと判断する。すなわち、訂正不能のエラ
ーが発生したと判断する。
れたエラー位置多項式の次数と、見つけられたエラー位
置の個数とが相等しくない場合は、ECCによるエラー
訂正が失敗したと判断する。すなわち、訂正不能のエラ
ーが発生したと判断する。
【0010】算出されたエラー位置が、ユーザデータ部
およびCRCパリティ部のいずれかである場合、エラー
位置およびエラー値とを用いて、バッファに格納されて
いるデータのうちの対応する誤りデータを訂正する(ス
テップ208)。これと並行して、算出されたエラー位
置およびエラー値を用いて、CRC剰余を再算出する
(ステップ209)。このCRC剰余を再算出する方法
については後述する。
およびCRCパリティ部のいずれかである場合、エラー
位置およびエラー値とを用いて、バッファに格納されて
いるデータのうちの対応する誤りデータを訂正する(ス
テップ208)。これと並行して、算出されたエラー位
置およびエラー値を用いて、CRC剰余を再算出する
(ステップ209)。このCRC剰余を再算出する方法
については後述する。
【0011】ステップ210において、ステップ209
で再算出されたCRC剰余と、ステップ204で算出さ
れたCRC剰余結果とを比較する。この比較結果によっ
て、ECCによる訂正が成功したか否かを判定する(ス
テップ211)。すなわち、比較した結果、両者が一致
した場合には訂正が成功したと判定し、一致しなかった
場合、ECCによる誤訂正が発生したと判定する。
で再算出されたCRC剰余と、ステップ204で算出さ
れたCRC剰余結果とを比較する。この比較結果によっ
て、ECCによる訂正が成功したか否かを判定する(ス
テップ211)。すなわち、比較した結果、両者が一致
した場合には訂正が成功したと判定し、一致しなかった
場合、ECCによる誤訂正が発生したと判定する。
【0012】また、記憶装置には、上述したデータ転送
の信頼性に加え、近年、記憶データの大容量化、および
記録、再生の高速化が要求されている。記憶データの大
容量化ために、記憶データの高密度化が進められてお
り、この高密度化実現をサポートするものの1つとして
ECCのエラー訂正機能の高性能化が挙げられる。すな
わち、高密度化により発生率が増大したエラーを高性能
なECCにより補正しようというものである。但し、エ
ラー訂正機能が高性能化された(訂正可能なエラー個数
が増加された)ECCを実装した場合、訂正に要する時
間は、一般的に増大する傾向にある。
の信頼性に加え、近年、記憶データの大容量化、および
記録、再生の高速化が要求されている。記憶データの大
容量化ために、記憶データの高密度化が進められてお
り、この高密度化実現をサポートするものの1つとして
ECCのエラー訂正機能の高性能化が挙げられる。すな
わち、高密度化により発生率が増大したエラーを高性能
なECCにより補正しようというものである。但し、エ
ラー訂正機能が高性能化された(訂正可能なエラー個数
が増加された)ECCを実装した場合、訂正に要する時
間は、一般的に増大する傾向にある。
【0013】他方、データ記録再生の高速化が進むと、
1セクタあたりの転送時間も相対的に短くなる。このた
め、エラー訂正演算に許容される時間は少なくなる。す
なわち、ECCによる訂正演算と、訂正結果をエラー検
出手段によって評価するための評価演算とが、エラーが
発生したブロック(セクタ)の次ブロック(セクタ)の
転送が終了するまでに完了され、オンザフライ訂正とし
て実行されることが要求される。さもないと、連続した
ブロックにエラーが発生した場合に、それぞれのブロッ
クに対する上記演算が間に合わず、その結果、データ再
生時の媒体からデータ読み出しのリトライ(すなわち、
回転待ち時間)を引き起こし、データ転送が滞ってしま
い、データ転送にエラー訂正演算によるオーバヘッドを
与えてしまうからである。
1セクタあたりの転送時間も相対的に短くなる。このた
め、エラー訂正演算に許容される時間は少なくなる。す
なわち、ECCによる訂正演算と、訂正結果をエラー検
出手段によって評価するための評価演算とが、エラーが
発生したブロック(セクタ)の次ブロック(セクタ)の
転送が終了するまでに完了され、オンザフライ訂正とし
て実行されることが要求される。さもないと、連続した
ブロックにエラーが発生した場合に、それぞれのブロッ
クに対する上記演算が間に合わず、その結果、データ再
生時の媒体からデータ読み出しのリトライ(すなわち、
回転待ち時間)を引き起こし、データ転送が滞ってしま
い、データ転送にエラー訂正演算によるオーバヘッドを
与えてしまうからである。
【0014】ECCによる訂正演算および訂正結果に対
する評価演算を高速化し、オンザフライ訂正を実現する
ためには、これら2つの演算を並行して行い、演算時間
を見かけ上短くすることが考えられる。
する評価演算を高速化し、オンザフライ訂正を実現する
ためには、これら2つの演算を並行して行い、演算時間
を見かけ上短くすることが考えられる。
【0015】ところで、ECCによる訂正の訂正結果に
対する評価演算、例えば、CRCCを用いてエラー検出
を行う演算を実行するためには、少なくともECCによ
るエラー訂正で算出されたエラー位置およびエラー値
と、符号語{訂正前の受信データ+CRCCパリティ
部}から演算されたCRC剰余結果とが必要とされる。
すなわち、エラー位置およびエラー値からCRC剰余を
再算出するためには、この演算過程に必要であるエラー
位置およびエラー値が確定している必要がある。従っ
て、エラー位置およびエラー値の算出演算とCRC剰余
の再算出とを並行して行うためには、これらの演算で、
エラー位置およびエラー値の確定順序の整合がとれてい
なければならない。
対する評価演算、例えば、CRCCを用いてエラー検出
を行う演算を実行するためには、少なくともECCによ
るエラー訂正で算出されたエラー位置およびエラー値
と、符号語{訂正前の受信データ+CRCCパリティ
部}から演算されたCRC剰余結果とが必要とされる。
すなわち、エラー位置およびエラー値からCRC剰余を
再算出するためには、この演算過程に必要であるエラー
位置およびエラー値が確定している必要がある。従っ
て、エラー位置およびエラー値の算出演算とCRC剰余
の再算出とを並行して行うためには、これらの演算で、
エラー位置およびエラー値の確定順序の整合がとれてい
なければならない。
【0016】しかし、エラー位置およびエラー値を算出
するためのアルゴリズムとしてよく用いられているチェ
ンサーチアルゴリズムでは、一般的には、読み出された
符号語{ユーザデータ+CRCCパリティ部+ECCパ
リティ部}の末尾の方から順に、エラー位置およびエラ
ー値が確定する。
するためのアルゴリズムとしてよく用いられているチェ
ンサーチアルゴリズムでは、一般的には、読み出された
符号語{ユーザデータ+CRCCパリティ部+ECCパ
リティ部}の末尾の方から順に、エラー位置およびエラ
ー値が確定する。
【0017】一方、一般的なCRC剰余の再算出では、
符号語の先頭から順に(すなわち昇順に)演算してい
き、演算される位置がエラー位置でない場合は‘0’
を、その位置がエラー位置であれば、そのエラー位置に
対応するエラー値を使用してCRC演算する必要があ
る。
符号語の先頭から順に(すなわち昇順に)演算してい
き、演算される位置がエラー位置でない場合は‘0’
を、その位置がエラー位置であれば、そのエラー位置に
対応するエラー値を使用してCRC演算する必要があ
る。
【0018】従って、チェンサーチによるエラー位置お
よびエラー値の算出が全て確定してからでないとCRC
再算出を開始できない。よって、チェンサーチによる演
算とCRC再算出とは、並行して実行することが困難で
あるという問題がある。
よびエラー値の算出が全て確定してからでないとCRC
再算出を開始できない。よって、チェンサーチによる演
算とCRC再算出とは、並行して実行することが困難で
あるという問題がある。
【0019】このような問題を解決するために考案され
た手法のいくつかについて、以下に説明する。
た手法のいくつかについて、以下に説明する。
【0020】例えば、CRC演算アルゴリズムを変更し
て、読み出された符号語の末尾の方から順に(すなわち
降順に)演算していく手法が、米国特許第5,157,
669号において提案されている。この手法を適用すれ
ば、エラー位置およびエラー値を算出する演算(チェン
サーチ)とCRC剰余の再算出との両者でエラー位置、
値の確定順序を整合することができ、これらの演算を並
行して実行することができる。
て、読み出された符号語の末尾の方から順に(すなわち
降順に)演算していく手法が、米国特許第5,157,
669号において提案されている。この手法を適用すれ
ば、エラー位置およびエラー値を算出する演算(チェン
サーチ)とCRC剰余の再算出との両者でエラー位置、
値の確定順序を整合することができ、これらの演算を並
行して実行することができる。
【0021】また、チェンサーチでエラー位置が特定さ
れる順序を逆にする手法が、例えば、特開平5−268
101号公報において提案されている。この手法を適用
することによっても、エラー位置およびエラー値を算出
する演算とCRC剰余の再算出との両者でエラー位置、
値の確定順序を整合することができ、これらの演算を並
行して実行することができる。
れる順序を逆にする手法が、例えば、特開平5−268
101号公報において提案されている。この手法を適用
することによっても、エラー位置およびエラー値を算出
する演算とCRC剰余の再算出との両者でエラー位置、
値の確定順序を整合することができ、これらの演算を並
行して実行することができる。
【0022】
【発明が解決しようとする課題】しかし、上述した手法
では、エラー位置およびエラー値が、昇順(符号語の先
頭から末尾に向かう順序、すなわち、位置を示す数が単
調増加する順序。)、もしくは、降順(符号後の末尾か
ら先頭に向かう順序、すなわち、位置を示す数が単調減
少する順序。)で確定していくような手法(例えば、チ
ェンサーチなどの手法)にしか適用することはできな
い。昇順でも降順でもない順番でエラー位置、値が確定
するようなアルゴリズムをエラー位置、値算出手法に採
用した場合は、エラー位置、値が全て求められてからで
ないと、CRC演算を行うことはできないという課題が
ある。エラー位置およびエラー値が確定する順序が、昇
順でも降順でもない順序、すなわち、単調な順序(位置
を示す数が単調変化する順序)でないようなアルゴリズ
ムとしては、例えば、エラー位置多項式をそのまま方程
式として解くようなアルゴリズムなどが考えられる。
では、エラー位置およびエラー値が、昇順(符号語の先
頭から末尾に向かう順序、すなわち、位置を示す数が単
調増加する順序。)、もしくは、降順(符号後の末尾か
ら先頭に向かう順序、すなわち、位置を示す数が単調減
少する順序。)で確定していくような手法(例えば、チ
ェンサーチなどの手法)にしか適用することはできな
い。昇順でも降順でもない順番でエラー位置、値が確定
するようなアルゴリズムをエラー位置、値算出手法に採
用した場合は、エラー位置、値が全て求められてからで
ないと、CRC演算を行うことはできないという課題が
ある。エラー位置およびエラー値が確定する順序が、昇
順でも降順でもない順序、すなわち、単調な順序(位置
を示す数が単調変化する順序)でないようなアルゴリズ
ムとしては、例えば、エラー位置多項式をそのまま方程
式として解くようなアルゴリズムなどが考えられる。
【0023】また、エラー訂正の検証においては、エラ
ー多項式をエラー検出符号生成多項式で除した剰余を求
める演算が頻出することが予想される。このため、剰余
演算を高速に実行することができる剰余演算装置が要求
されると考えられる。
ー多項式をエラー検出符号生成多項式で除した剰余を求
める演算が頻出することが予想される。このため、剰余
演算を高速に実行することができる剰余演算装置が要求
されると考えられる。
【0024】さらに、オンザフライ訂正は、記憶媒体か
らの読み出しに限らず、例えば、通信装置における受信
動作においても要求されると考えられる。
らの読み出しに限らず、例えば、通信装置における受信
動作においても要求されると考えられる。
【0025】本発明は、エラー位置およびエラー値が確
定する順序によらず、エラー訂正結果の評価演算を実行
することができる、誤訂正検証方法および装置、エラー
訂正装置を提供することを第1の目的とする。
定する順序によらず、エラー訂正結果の評価演算を実行
することができる、誤訂正検証方法および装置、エラー
訂正装置を提供することを第1の目的とする。
【0026】また、このようなエラー訂正の検証におい
て、エラー多項式をエラー検出符号生成多項式による剰
余演算のために行われる剰余演算を高速に実行すること
ができる剰余演算装置を提供することを第2の目的とす
る。
て、エラー多項式をエラー検出符号生成多項式による剰
余演算のために行われる剰余演算を高速に実行すること
ができる剰余演算装置を提供することを第2の目的とす
る。
【0027】さらに、このような、エラー訂正の評価演
算を実行する機能を備えた、再生装置、記録再生装置、
通信装置を提供することを第3の目的とする。
算を実行する機能を備えた、再生装置、記録再生装置、
通信装置を提供することを第3の目的とする。
【0028】
【課題を解決するための手段】上記第1の目的を達成す
るために、本発明の第1の態様によれば、目的とする情
報を表すユーザデータにエラー検出符号が付加された系
列に、さらにエラー訂正符号が付加された符号語に含ま
れるエラーを、上記エラー訂正符号を用いて訂正する際
に、誤訂正が発生したか否かを検証するための誤訂正検
証装置において、上記エラー検出符号を生成するエラー
検出符号生成多項式で上記符号語を割った剰余、ならび
に、上記符号系列に含まれる各エラーのエラー位置およ
びエラー値を受け付けるためのインタフェーシング手段
と、上記受け付けられた、各エラーのエラー位置および
エラー値から各々生成されるエラー多項式を、上記エラ
ー検出符号を生成するエラー検出符号生成多項式で割っ
た各々の剰余を求めるための剰余演算手段と、全ての剰
余の排他的論理和を求めるための加算手段と、上記加算
手段によって求められた総和と、上記受け付けた剰余と
を比較し、これらが一致しないとき、誤訂正が発生した
と判定し、一致するとき、誤訂正が発生しなかったと判
定するための判定手段とを有することを特徴とする誤訂
正検証装置が提供される。
るために、本発明の第1の態様によれば、目的とする情
報を表すユーザデータにエラー検出符号が付加された系
列に、さらにエラー訂正符号が付加された符号語に含ま
れるエラーを、上記エラー訂正符号を用いて訂正する際
に、誤訂正が発生したか否かを検証するための誤訂正検
証装置において、上記エラー検出符号を生成するエラー
検出符号生成多項式で上記符号語を割った剰余、ならび
に、上記符号系列に含まれる各エラーのエラー位置およ
びエラー値を受け付けるためのインタフェーシング手段
と、上記受け付けられた、各エラーのエラー位置および
エラー値から各々生成されるエラー多項式を、上記エラ
ー検出符号を生成するエラー検出符号生成多項式で割っ
た各々の剰余を求めるための剰余演算手段と、全ての剰
余の排他的論理和を求めるための加算手段と、上記加算
手段によって求められた総和と、上記受け付けた剰余と
を比較し、これらが一致しないとき、誤訂正が発生した
と判定し、一致するとき、誤訂正が発生しなかったと判
定するための判定手段とを有することを特徴とする誤訂
正検証装置が提供される。
【0029】本発明の第2の態様によれば、目的とする
情報を表すユーザデータと、上記ユーザデータからエラ
ー検出符号生成多項式により生成されるエラー検出符号
と、上記情報符号およびエラー検出符号を含む系列から
エラー訂正符号生成多項式により生成されるエラー訂正
符号とを含む符号語に含まれるエラーを訂正するための
エラー訂正装置において、上記エラー検出符号を用いて
エラーが含まれるか否かを検出するためのエラー検出部
と、上記エラー検出手段によりエラーが含まれることが
検知されたとき、上記エラー訂正符号を用いてエラー訂
正を行うためのエラー訂正部と、上記エラー訂正部にお
けるエラー訂正に際し、誤訂正が発生したか否かを検証
するための誤訂正検証部とを有し、上記エラー検出部
は、上記符号語を上記エラー検出符号生成多項式で割っ
た剰余を求めるための剰余演算手段と、上記剰余演算手
段により演算された剰余が非ゼロであるとき、エラーが
含まれていることを、上記エラー訂正部に通知するため
の通知手段とを備え、上記エラー訂正部は、上記ユーザ
データおよびエラー検出符号を含む系列に含まれる各エ
ラーのエラー位置およびエラー値を求めるためのエラー
訂正演算手段と、上記系列における、上記求められたエ
ラー位置におけるバイトデータを、当該バイトデータお
よび上記求められたエラー値の排他的論理和をとったバ
イトデータとするための訂正手段とを備え、上記誤訂正
検証部は、第1の態様における誤訂正検証装置を用いて
構成されることを特徴とするエラー訂正装置が提供され
る。
情報を表すユーザデータと、上記ユーザデータからエラ
ー検出符号生成多項式により生成されるエラー検出符号
と、上記情報符号およびエラー検出符号を含む系列から
エラー訂正符号生成多項式により生成されるエラー訂正
符号とを含む符号語に含まれるエラーを訂正するための
エラー訂正装置において、上記エラー検出符号を用いて
エラーが含まれるか否かを検出するためのエラー検出部
と、上記エラー検出手段によりエラーが含まれることが
検知されたとき、上記エラー訂正符号を用いてエラー訂
正を行うためのエラー訂正部と、上記エラー訂正部にお
けるエラー訂正に際し、誤訂正が発生したか否かを検証
するための誤訂正検証部とを有し、上記エラー検出部
は、上記符号語を上記エラー検出符号生成多項式で割っ
た剰余を求めるための剰余演算手段と、上記剰余演算手
段により演算された剰余が非ゼロであるとき、エラーが
含まれていることを、上記エラー訂正部に通知するため
の通知手段とを備え、上記エラー訂正部は、上記ユーザ
データおよびエラー検出符号を含む系列に含まれる各エ
ラーのエラー位置およびエラー値を求めるためのエラー
訂正演算手段と、上記系列における、上記求められたエ
ラー位置におけるバイトデータを、当該バイトデータお
よび上記求められたエラー値の排他的論理和をとったバ
イトデータとするための訂正手段とを備え、上記誤訂正
検証部は、第1の態様における誤訂正検証装置を用いて
構成されることを特徴とするエラー訂正装置が提供され
る。
【0030】本発明の第3の態様によれば、目的とする
情報を表すユーザデータにエラー検出符号が付加された
系列に、さらにエラー訂正符号が付加された符号語に含
まれるエラーを訂正するためのエラー訂正装置におい
て、上記符号語にエラーが含まれているか否かを検出す
るための検出部と、上記検出部において符号語にエラー
が含まれていることが検出された場合、エラー訂正符号
を用いて符号語のエラーを訂正する訂正演算を行うため
の訂正部と、上記訂正部におけるエラー訂正の訂正結果
を評価するための訂正結果評価部とを有し、上記訂正部
は、符号語に含まれるエラーのエラー位置およびエラー
値を求め、求めたエラー位置およびエラー値を用いて符
号語のエラー訂正を行う訂正演算を行うための演算回路
と、上記訂正演算の過程において、1または複数のエラ
ーのエラー位置およびエラー値を、エラーが算出される
ごとに上記訂正結果評価部に報告するための報告回路と
を備え、上記訂正結果評価部は、受け取ったエラー位置
およびエラー値を用いて訂正結果の評価を進める評価回
路を備え、上記訂正部および上記訂正結果評価部とは、
上記訂正部における訂正演算と、上記訂正結果評価部に
おける訂正結果の評価とを並行して実行することを特徴
とするエラー訂正装置が提供される。
情報を表すユーザデータにエラー検出符号が付加された
系列に、さらにエラー訂正符号が付加された符号語に含
まれるエラーを訂正するためのエラー訂正装置におい
て、上記符号語にエラーが含まれているか否かを検出す
るための検出部と、上記検出部において符号語にエラー
が含まれていることが検出された場合、エラー訂正符号
を用いて符号語のエラーを訂正する訂正演算を行うため
の訂正部と、上記訂正部におけるエラー訂正の訂正結果
を評価するための訂正結果評価部とを有し、上記訂正部
は、符号語に含まれるエラーのエラー位置およびエラー
値を求め、求めたエラー位置およびエラー値を用いて符
号語のエラー訂正を行う訂正演算を行うための演算回路
と、上記訂正演算の過程において、1または複数のエラ
ーのエラー位置およびエラー値を、エラーが算出される
ごとに上記訂正結果評価部に報告するための報告回路と
を備え、上記訂正結果評価部は、受け取ったエラー位置
およびエラー値を用いて訂正結果の評価を進める評価回
路を備え、上記訂正部および上記訂正結果評価部とは、
上記訂正部における訂正演算と、上記訂正結果評価部に
おける訂正結果の評価とを並行して実行することを特徴
とするエラー訂正装置が提供される。
【0031】本発明の第4の態様によれば、情報を表す
情報符号と、上記情報符号から巡回冗長符号生成多項式
により生成されるエラー検出符号と、上記情報符号およ
びエラー検出符号を含む系列からエラー訂正符号生成多
項式により生成されるエラー訂正符号とを含む符号語に
対する上記エラー訂正符号を用いたエラー訂正につい
て、エラー訂正に際し誤訂正が発生したか否かを検証す
るための誤訂正検証方法において、上記符号語に対する
上記巡回冗長符号生成多項式の剰余、および、上記ユー
ザデータおよびエラー検出符号を含む系列に含まれる各
エラーのエラー位置およびエラー値を受け付け、上記各
エラーについて、受け付けたエラー位置およびエラー値
を含む項をそれぞれ最高次項とする多項式に対する上記
巡回冗長符号生成多項式の剰余を求め、上記求めた剰余
の、排他的論理和による総和を求め、上記求めた総和
と、上記受け付けた剰余とを比較し、これらが一致しな
いとき、誤訂正が発生したと判定し、かつ、そうでない
とき、誤訂正が発生しなかったと判定して、エラー訂正
を検証することを特徴とする誤訂正検証方法が提供され
る。
情報符号と、上記情報符号から巡回冗長符号生成多項式
により生成されるエラー検出符号と、上記情報符号およ
びエラー検出符号を含む系列からエラー訂正符号生成多
項式により生成されるエラー訂正符号とを含む符号語に
対する上記エラー訂正符号を用いたエラー訂正につい
て、エラー訂正に際し誤訂正が発生したか否かを検証す
るための誤訂正検証方法において、上記符号語に対する
上記巡回冗長符号生成多項式の剰余、および、上記ユー
ザデータおよびエラー検出符号を含む系列に含まれる各
エラーのエラー位置およびエラー値を受け付け、上記各
エラーについて、受け付けたエラー位置およびエラー値
を含む項をそれぞれ最高次項とする多項式に対する上記
巡回冗長符号生成多項式の剰余を求め、上記求めた剰余
の、排他的論理和による総和を求め、上記求めた総和
と、上記受け付けた剰余とを比較し、これらが一致しな
いとき、誤訂正が発生したと判定し、かつ、そうでない
とき、誤訂正が発生しなかったと判定して、エラー訂正
を検証することを特徴とする誤訂正検証方法が提供され
る。
【0032】本発明の第5の態様によれば、プログラム
を格納した記録媒体において、上記プログラムは、第1
および第2のプロセッサを並列動作させることができる
プログラムであって、目的とする情報を表すユーザデー
タにエラー検出符号が付加された系列に、さらにエラー
訂正符号が付加された符号語にエラーが含まれているか
否かを検出し、当該符号語にエラーが含まれている場
合、エラー訂正符号を用いて当該符号語のエラーを訂正
する訂正演算を上記第1のプロセッサを用いて実行する
ための訂正部と、上記訂正部におけるエラー訂正の訂正
結果を上記第2のプロセッサ評価するための訂正結果評
価部とを有し、上記訂正部は、符号語に含まれるエラー
のエラー位置およびエラー値を求め、求めたエラー位置
およびエラー値を用いて符号語のエラー訂正を行う訂正
演算を行うためのステップと、上記訂正演算の過程にお
いて、1または複数のエラーのエラー位置およびエラー
値を、エラーが算出されるごとに上記訂正結果評価部に
報告するためのステップとを含み、上記訂正結果評価部
は、エラー位置およびエラー値が1または複数のエラー
について与えられるごとに訂正結果の評価のための演算
を行うためのステップを含むことを特徴とするプログラ
ムを格納した記録媒体が提供される。
を格納した記録媒体において、上記プログラムは、第1
および第2のプロセッサを並列動作させることができる
プログラムであって、目的とする情報を表すユーザデー
タにエラー検出符号が付加された系列に、さらにエラー
訂正符号が付加された符号語にエラーが含まれているか
否かを検出し、当該符号語にエラーが含まれている場
合、エラー訂正符号を用いて当該符号語のエラーを訂正
する訂正演算を上記第1のプロセッサを用いて実行する
ための訂正部と、上記訂正部におけるエラー訂正の訂正
結果を上記第2のプロセッサ評価するための訂正結果評
価部とを有し、上記訂正部は、符号語に含まれるエラー
のエラー位置およびエラー値を求め、求めたエラー位置
およびエラー値を用いて符号語のエラー訂正を行う訂正
演算を行うためのステップと、上記訂正演算の過程にお
いて、1または複数のエラーのエラー位置およびエラー
値を、エラーが算出されるごとに上記訂正結果評価部に
報告するためのステップとを含み、上記訂正結果評価部
は、エラー位置およびエラー値が1または複数のエラー
について与えられるごとに訂正結果の評価のための演算
を行うためのステップを含むことを特徴とするプログラ
ムを格納した記録媒体が提供される。
【0033】上記第2の目的を達成するために、本発明
の第6の態様によれば、与えられた多項式を、予め定め
られた多項式で割った剰余を求めるための剰余演算装置
において、予め定められた次数の多項式を上記予め定め
られた多項式で割った剰余を求めるための剰余デコーダ
を、1次の多項式について少なくとも備えることを特徴
とする剰余演算装置が提供される。
の第6の態様によれば、与えられた多項式を、予め定め
られた多項式で割った剰余を求めるための剰余演算装置
において、予め定められた次数の多項式を上記予め定め
られた多項式で割った剰余を求めるための剰余デコーダ
を、1次の多項式について少なくとも備えることを特徴
とする剰余演算装置が提供される。
【0034】上記第3の目的を達成するために、本発明
の第7の態様によれば、目的とする情報データ(ユーザ
データと呼ぶ)にエラー検出符号を付加したものを1つ
のデータとみなし、当該データにエラー訂正符号を付加
したデータが記録された記録媒体の再生装置において、
ホストからの命令に従って、上記記録媒体からのデータ
の再生を行う読み出し手段と、上記記録媒体から再生さ
れたデータを一時格納するバッファ手段と、上記記録媒
体から再生されたデータに生じているエラーを検出する
検出手段と、上記検出手段によってエラーが検出された
場合には、当該データに含まれているエラー訂正符号を
用いて、当該再生データのエラーを訂正する訂正手段
と、上記訂正手段による訂正結果を評価する訂正結果評
価手段と、上記訂正手段によって訂正された後の情報デ
ータを、外部に出力する出力手段と、を備え、上記訂正
符号は、当該データの複数ヶ所にエラー(誤り)が含ま
れる場合、その訂正演算過程において全てのエラーのう
ちの一部のエラー位置および、対応するエラー値を算出
し次第、当該エラー位置、およびエラー値を上記訂正結
果評価手段へ随時報告する手段を備え、上記訂正結果評
価手段は、受け取った上記エラー位置およびエラー値を
利用して、すぐさま上記訂正手段の訂正結果評価を進め
る手段を備えることにより、上記訂正手段と上記訂正結
果評価手段を並行して実行する手段とを備えることを特
徴とする再生装置が提供される。
の第7の態様によれば、目的とする情報データ(ユーザ
データと呼ぶ)にエラー検出符号を付加したものを1つ
のデータとみなし、当該データにエラー訂正符号を付加
したデータが記録された記録媒体の再生装置において、
ホストからの命令に従って、上記記録媒体からのデータ
の再生を行う読み出し手段と、上記記録媒体から再生さ
れたデータを一時格納するバッファ手段と、上記記録媒
体から再生されたデータに生じているエラーを検出する
検出手段と、上記検出手段によってエラーが検出された
場合には、当該データに含まれているエラー訂正符号を
用いて、当該再生データのエラーを訂正する訂正手段
と、上記訂正手段による訂正結果を評価する訂正結果評
価手段と、上記訂正手段によって訂正された後の情報デ
ータを、外部に出力する出力手段と、を備え、上記訂正
符号は、当該データの複数ヶ所にエラー(誤り)が含ま
れる場合、その訂正演算過程において全てのエラーのう
ちの一部のエラー位置および、対応するエラー値を算出
し次第、当該エラー位置、およびエラー値を上記訂正結
果評価手段へ随時報告する手段を備え、上記訂正結果評
価手段は、受け取った上記エラー位置およびエラー値を
利用して、すぐさま上記訂正手段の訂正結果評価を進め
る手段を備えることにより、上記訂正手段と上記訂正結
果評価手段を並行して実行する手段とを備えることを特
徴とする再生装置が提供される。
【0035】特に、上記訂正結果評価手段は、受け取る
エラー位置の順番と、上記エラー訂正符号上の位置の順
番との関係に依らずに上記訂正結果評価を進める手段を
備える。
エラー位置の順番と、上記エラー訂正符号上の位置の順
番との関係に依らずに上記訂正結果評価を進める手段を
備える。
【0036】上記訂正結果評価手段は、例えば、受け取
ったエラー位置、エラー値から、エラー多項式を作成
し、当該エラー多項式を利用して検出符号の生成多項式
による剰余演算を行う手段を備え、その結果を一時格納
する手段を備え、さらに複数のエラー位置、エラー値を
受け取った場合、同様の演算を行ない、当該格納された
値との排他的論理和をとることにより当該格納された値
を更新する手段を備え、全てのエラー位置、エラー値に
対して当該演算を適用し、最終的に算出された結果と、
当該エラーを含んだ受信語を利用した当該検出符号生成
多項式による剰余演算結果とを比較する手段を備え、そ
の結果により上記エラー訂正手段により正当にエラーが
訂正されたかどうか判断する手段を備えるような装置で
実現される。
ったエラー位置、エラー値から、エラー多項式を作成
し、当該エラー多項式を利用して検出符号の生成多項式
による剰余演算を行う手段を備え、その結果を一時格納
する手段を備え、さらに複数のエラー位置、エラー値を
受け取った場合、同様の演算を行ない、当該格納された
値との排他的論理和をとることにより当該格納された値
を更新する手段を備え、全てのエラー位置、エラー値に
対して当該演算を適用し、最終的に算出された結果と、
当該エラーを含んだ受信語を利用した当該検出符号生成
多項式による剰余演算結果とを比較する手段を備え、そ
の結果により上記エラー訂正手段により正当にエラーが
訂正されたかどうか判断する手段を備えるような装置で
実現される。
【0037】また、当該エラー多項式を利用して検出符
号の生成多項式による剰余演算を行う上記手段を複数備
え、一方が稼働中のときに、上記訂正手段からエラー位
置、エラー値の出力要求が来たときに、もう一方で該剰
余演算を行うことによって該訂正結果評価演算を高速に
行なえるようにしてもよい。
号の生成多項式による剰余演算を行う上記手段を複数備
え、一方が稼働中のときに、上記訂正手段からエラー位
置、エラー値の出力要求が来たときに、もう一方で該剰
余演算を行うことによって該訂正結果評価演算を高速に
行なえるようにしてもよい。
【0038】また、上記エラー検出符号として2つ以上
の独立したエラー検出符号を備え、当該検出符号を利用
して上記訂正手段の訂正結果を評価する2つ以上の独立
した訂正結果評価手段を備えることもできる。
の独立したエラー検出符号を備え、当該検出符号を利用
して上記訂正手段の訂正結果を評価する2つ以上の独立
した訂正結果評価手段を備えることもできる。
【0039】また、上記エラー訂正符号がインタリーブ
構成になっており、上記訂正手段はインタリーブ毎に訂
正演算を進めていく手段を備え、上記訂正結果評価手段
はインタリーブごとに算出されるエラー位置、エラー値
を受け取り、当該エラー位置から上記エラー検出符号で
みたエラー位置に算出し直す手段を備えるような構成を
とることもできる。
構成になっており、上記訂正手段はインタリーブ毎に訂
正演算を進めていく手段を備え、上記訂正結果評価手段
はインタリーブごとに算出されるエラー位置、エラー値
を受け取り、当該エラー位置から上記エラー検出符号で
みたエラー位置に算出し直す手段を備えるような構成を
とることもできる。
【0040】本発明の第8の態様によれば、第7の態様
における再生装置を備える記録再生装置が提供される。
における再生装置を備える記録再生装置が提供される。
【0041】本発明の第9の態様によれば、通信によっ
て受け付けたデータに含まれるエラーの訂正を、上記第
2および第3のいずれかの態様におけるエラー訂正装置
を用いて行う通信装置が提供される。
て受け付けたデータに含まれるエラーの訂正を、上記第
2および第3のいずれかの態様におけるエラー訂正装置
を用いて行う通信装置が提供される。
【0042】
【発明の実施の形態】以下、図面を参照して、本発明の
実施の形態について説明する。
実施の形態について説明する。
【0043】先ず、本発明の第1の実施の形態について
説明する。本実施の形態においては、記録媒体である磁
気ディスクからのデータ再生に際し、本発明を適用した
エラー訂正方法を実行することができる磁気ディスク装
置について説明する。以下に、磁気ディスク装置の構
成、ユーザデータの記録動作、および、再生動作につい
て順次説明する。
説明する。本実施の形態においては、記録媒体である磁
気ディスクからのデータ再生に際し、本発明を適用した
エラー訂正方法を実行することができる磁気ディスク装
置について説明する。以下に、磁気ディスク装置の構
成、ユーザデータの記録動作、および、再生動作につい
て順次説明する。
【0044】先ず、磁気ディスク装置の構成について説
明する。磁気ディスク装置は、記録媒体となる磁気ディ
スク円盤を用いて、信号を記録再生するための機構部
と、機構部により記録再生される信号を処理するための
電子回路部とを有する。
明する。磁気ディスク装置は、記録媒体となる磁気ディ
スク円盤を用いて、信号を記録再生するための機構部
と、機構部により記録再生される信号を処理するための
電子回路部とを有する。
【0045】図11を参照して、磁気ディスク装置の機
構部について説明する。図11において、磁気ディスク
装置1680は、データを記述する信号を記録するため
の記録媒体である磁気ディスク円盤810と、上記磁気
ディスク円盤810を回転させるためのスピンドルモー
タ1682と、上記磁気ディスク円盤810に対する信
号の読み出し/書き込みを行うためのヘッド811と、
上記ヘッド811を支持するためのアーム1683と、
上記アーム1683を駆動してヘッド811を移動させ
るためのボイスコイルモータ1653と、上記ヘッド8
11から読み出される信号を増幅し、また、ヘッド81
1を駆動して信号を記録するためのリード/ライト制御
回路812とを有して構成される。
構部について説明する。図11において、磁気ディスク
装置1680は、データを記述する信号を記録するため
の記録媒体である磁気ディスク円盤810と、上記磁気
ディスク円盤810を回転させるためのスピンドルモー
タ1682と、上記磁気ディスク円盤810に対する信
号の読み出し/書き込みを行うためのヘッド811と、
上記ヘッド811を支持するためのアーム1683と、
上記アーム1683を駆動してヘッド811を移動させ
るためのボイスコイルモータ1653と、上記ヘッド8
11から読み出される信号を増幅し、また、ヘッド81
1を駆動して信号を記録するためのリード/ライト制御
回路812とを有して構成される。
【0046】次に、図3を参照して、磁気ディスク装置
の電子回路部について説明する。図3において、磁気デ
ィスク装置1681は、ホストコンピュータなどの情報
処理装置に接続するためのホストインタフェース826
と、データ受け渡しおよびフォーマットなどの制御をす
るためのハードディスクコントローラ817と、上記ヘ
ッド811(図11参照)および磁気ディスク円盤81
0(図11参照)の相対位置関係を制御するためのサー
ボ制御回路部814と、リード/ライト制御回路812
(図11参照)からの信号を処理するための信号処理回
路813と、データを一時記憶するためのデータバッフ
ァ816と、これらを制御するためのCPU(中央処理
装置)815とを有して構成される。
の電子回路部について説明する。図3において、磁気デ
ィスク装置1681は、ホストコンピュータなどの情報
処理装置に接続するためのホストインタフェース826
と、データ受け渡しおよびフォーマットなどの制御をす
るためのハードディスクコントローラ817と、上記ヘ
ッド811(図11参照)および磁気ディスク円盤81
0(図11参照)の相対位置関係を制御するためのサー
ボ制御回路部814と、リード/ライト制御回路812
(図11参照)からの信号を処理するための信号処理回
路813と、データを一時記憶するためのデータバッフ
ァ816と、これらを制御するためのCPU(中央処理
装置)815とを有して構成される。
【0047】上記CPU815は、主に、HDC817
の制御と、サーボ制御回路814を介した磁気ディスク
810のサーボ制御とを行う。
の制御と、サーボ制御回路814を介した磁気ディスク
810のサーボ制御とを行う。
【0048】上記サーボ制御回路部814は、スピンド
ルモータ1682(図11参照)を制御するためのスピ
ンドル制御回路1685と、ボイスコイルモータ165
3(図11参照)を制御するためのボイスコイルモータ
制御回路1654とを備える。サーボ制御回路部814
は、CPU815との間で双方向の信号の送受を行い、
スピンドル制御回路1685を用いた磁気ディスク円盤
810の回転制御と、ボイスコイルモータ制御回路16
54を用いたヘッド811の位置制御をCPU815の
命令に従って実行する。
ルモータ1682(図11参照)を制御するためのスピ
ンドル制御回路1685と、ボイスコイルモータ165
3(図11参照)を制御するためのボイスコイルモータ
制御回路1654とを備える。サーボ制御回路部814
は、CPU815との間で双方向の信号の送受を行い、
スピンドル制御回路1685を用いた磁気ディスク円盤
810の回転制御と、ボイスコイルモータ制御回路16
54を用いたヘッド811の位置制御をCPU815の
命令に従って実行する。
【0049】次に、図4を参照して、磁気ディスク装置
における、ユーザデータの記録動作および再生動作の概
略について、HDC(ハードディスクコントローラ)を
中心に説明する。
における、ユーザデータの記録動作および再生動作の概
略について、HDC(ハードディスクコントローラ)を
中心に説明する。
【0050】先ず、HDC817の構成について説明す
る。上記HDC817は、磁気ディスク810へのユー
ザデータの記録および再生を全般的に制御するための部
分である。HDC817は、例えば、図4に示すよう
に、1つの集積回路(IC)で構成することができる。
このHDC817はバッファ制御部818と、CPU入
出力制御部819と、ドライブ制御部290およびホス
トインタフェース制御部825とを有して構成される。
る。上記HDC817は、磁気ディスク810へのユー
ザデータの記録および再生を全般的に制御するための部
分である。HDC817は、例えば、図4に示すよう
に、1つの集積回路(IC)で構成することができる。
このHDC817はバッファ制御部818と、CPU入
出力制御部819と、ドライブ制御部290およびホス
トインタフェース制御部825とを有して構成される。
【0051】上記CPU入出力制御部819は、CPU
815とHDC817とのインタフェーシングを行うた
めのものであり、信号線836を介してCPU815
に、信号線832を介してホストインタフェース制御部
825に、信号線831を介してバッファ制御部818
に、信号線864を介してドライブ制御部290に、そ
れぞれ接続されている。
815とHDC817とのインタフェーシングを行うた
めのものであり、信号線836を介してCPU815
に、信号線832を介してホストインタフェース制御部
825に、信号線831を介してバッファ制御部818
に、信号線864を介してドライブ制御部290に、そ
れぞれ接続されている。
【0052】またバッファ制御部833は、データバス
833を介してホストインタフェース制御部825に、
データバス827を介してデータバッファ816に、デ
ータバス828を介してドライブ制御部290に、それ
ぞれ接続されている。また、ドライブ制御部290は、
データ線829を介して信号処理回路813に接続され
ている。
833を介してホストインタフェース制御部825に、
データバス827を介してデータバッファ816に、デ
ータバス828を介してドライブ制御部290に、それ
ぞれ接続されている。また、ドライブ制御部290は、
データ線829を介して信号処理回路813に接続され
ている。
【0053】上記ドライブ制御回路290は、CRCC
を生成するための演算およびCRC演算を行うためのC
RC回路260と、ECCを生成するための演算および
ECCを用いてエラーを訂正する演算を行うためのEC
C回路262と、エラー訂正を検証するための検証回路
261とを有して構成される。
を生成するための演算およびCRC演算を行うためのC
RC回路260と、ECCを生成するための演算および
ECCを用いてエラーを訂正する演算を行うためのEC
C回路262と、エラー訂正を検証するための検証回路
261とを有して構成される。
【0054】上記データバッファ828によるドライブ
制御回路290およびバッファ制御回路818の接続に
加えて、ECC回路262は、信号線828を介してバ
ッファ制御部818に接続されている。
制御回路290およびバッファ制御回路818の接続に
加えて、ECC回路262は、信号線828を介してバ
ッファ制御部818に接続されている。
【0055】次に、同じく図4を参照して、ホストから
与えられるユーザデータを記録するための記録動作につ
いて説明する。
与えられるユーザデータを記録するための記録動作につ
いて説明する。
【0056】ホストインタフェース826を介して送ら
れるユーザデータは、ホストインタフェース制御部82
5、データバス833、バッファ制御部818、データ
バス827を介してデータバッファ816に送信され
る。データバッファ816に送信されたユーザデータ
は、さらに、データバス827、バッファ制御部81
8、データバス828を介してドライブ制御部290に
送信される。
れるユーザデータは、ホストインタフェース制御部82
5、データバス833、バッファ制御部818、データ
バス827を介してデータバッファ816に送信され
る。データバッファ816に送信されたユーザデータ
は、さらに、データバス827、バッファ制御部81
8、データバス828を介してドライブ制御部290に
送信される。
【0057】ドライブ制御部290は、ユーザデータに
対して、CRC回路2610よりCRCパリティ部を付
加してエラー検出符号化し、このエラー検出符号に、E
CC回路830によりにさらにECCパリティ部を付加
して、符号語{ユーザデータ+CRCパリティ部+EC
Cパリティ部}を生成する。この符号語{ユーザデータ
+CRCパリティ部+ECCパリティ部}は、データバ
ス829を介して信号処理回路813に送信され、エン
コードされる。そして、エンコードされた記録信号が、
ドライブ制御部290の制御に従って、リード/ライト
制御回路812により磁気ディスク円盤810に記録さ
れる。このようにして、ユーザデータを磁気ディスク円
盤810に記録する記録動作が行なわれる。
対して、CRC回路2610よりCRCパリティ部を付
加してエラー検出符号化し、このエラー検出符号に、E
CC回路830によりにさらにECCパリティ部を付加
して、符号語{ユーザデータ+CRCパリティ部+EC
Cパリティ部}を生成する。この符号語{ユーザデータ
+CRCパリティ部+ECCパリティ部}は、データバ
ス829を介して信号処理回路813に送信され、エン
コードされる。そして、エンコードされた記録信号が、
ドライブ制御部290の制御に従って、リード/ライト
制御回路812により磁気ディスク円盤810に記録さ
れる。このようにして、ユーザデータを磁気ディスク円
盤810に記録する記録動作が行なわれる。
【0058】さらに、同じく図4を参照して、磁気ディ
スクに記録されているデータを再生するための再生動作
について説明する。
スクに記録されているデータを再生するための再生動作
について説明する。
【0059】ドライブ制御部820の制御に従って、磁
気ディスク円盤810に記録されている記録信号が、磁
気ヘッド811、リード/ライト制御回路812を介し
て信号制御回路813に送信され、符号語{ユーザデー
タ+CRCパリティ部+ECCパリティ部}にデコード
される。そして、デコードされた符号語{ユーザデータ
+CRCパリティ部+ECCパリティ部}は、データバ
ス829を介してドライブ制御部290に送信される。
ドライブ制御部290は、ECCパリティ部ECCパリ
ティ部を除いた符号語{ユーザデータ+CRCパリティ
部}をデータバス828、バッファ制御部818、およ
びデータバス827を介してデータバッファ816に送
信するとともに、ECC回路262を制御して、符号語
{ユーザデータ+CRCパリティ部+ECCパリティ
部}に含まれるエラーを検出する。同時に、CRC回路
260を制御して、符号語{ユーザデータ+CRCパリ
ティ部}のCRC剰余を演算する。このCRC剰余は、
ECCの誤訂正を検出するために後で使用される。
気ディスク円盤810に記録されている記録信号が、磁
気ヘッド811、リード/ライト制御回路812を介し
て信号制御回路813に送信され、符号語{ユーザデー
タ+CRCパリティ部+ECCパリティ部}にデコード
される。そして、デコードされた符号語{ユーザデータ
+CRCパリティ部+ECCパリティ部}は、データバ
ス829を介してドライブ制御部290に送信される。
ドライブ制御部290は、ECCパリティ部ECCパリ
ティ部を除いた符号語{ユーザデータ+CRCパリティ
部}をデータバス828、バッファ制御部818、およ
びデータバス827を介してデータバッファ816に送
信するとともに、ECC回路262を制御して、符号語
{ユーザデータ+CRCパリティ部+ECCパリティ
部}に含まれるエラーを検出する。同時に、CRC回路
260を制御して、符号語{ユーザデータ+CRCパリ
ティ部}のCRC剰余を演算する。このCRC剰余は、
ECCの誤訂正を検出するために後で使用される。
【0060】ECC回路262によりエラーが検出され
た場合、引き続きエラー訂正処理を行い、算出されたエ
ラー位置、エラー値に基づいて、データバッファ816
に格納されている{ユーザデータ+CRCパリティ部}
のうち対応するエラーデータを訂正する。
た場合、引き続きエラー訂正処理を行い、算出されたエ
ラー位置、エラー値に基づいて、データバッファ816
に格納されている{ユーザデータ+CRCパリティ部}
のうち対応するエラーデータを訂正する。
【0061】また、ECC回路262によりエラー訂正
処理が終了されると、上記算出されたCRC剰余(エラ
ー訂正前)、エラー位置およびエラー値をもとに、検証
回路261によりエラー訂正結果が検証される。この検
証によりECC回路262が誤訂正したかどうかが判定
される。ECC回路262における訂正が成功し、か
つ、検証回路262においてECC回路262の誤訂正
が検出されなければ、訂正は成功したと判定する。
処理が終了されると、上記算出されたCRC剰余(エラ
ー訂正前)、エラー位置およびエラー値をもとに、検証
回路261によりエラー訂正結果が検証される。この検
証によりECC回路262が誤訂正したかどうかが判定
される。ECC回路262における訂正が成功し、か
つ、検証回路262においてECC回路262の誤訂正
が検出されなければ、訂正は成功したと判定する。
【0062】ECC回路262およびCRC回路260
によりユーザデータが補償されると、データバッファ8
16に一時格納してある{ユーザデータ+CRCパリテ
ィ部}のうちユーザデータのみがデータバス827、バ
ッファ制御部818、およびデータバス833を介して
ホストインタフェース制御部825に送られる。ホスト
はホストインタフェース制御部825からホストインタ
フェース826を介してユーザデータを受信する。この
ようにして、磁気ディスク円盤810からユーザデータ
を再生する再生動作が行なわれる。
によりユーザデータが補償されると、データバッファ8
16に一時格納してある{ユーザデータ+CRCパリテ
ィ部}のうちユーザデータのみがデータバス827、バ
ッファ制御部818、およびデータバス833を介して
ホストインタフェース制御部825に送られる。ホスト
はホストインタフェース制御部825からホストインタ
フェース826を介してユーザデータを受信する。この
ようにして、磁気ディスク円盤810からユーザデータ
を再生する再生動作が行なわれる。
【0063】次に、上記ドライブ制御部290の詳細に
ついて説明する。先ず、CRCの性質、エラー訂正結果
の評価演算の一般的な理論、本発明を適用した評価演算
の演算理論について順次し、さらに、この演算理論を適
用した、本実施形態におけるドライブ制御部290の構
成および動作の詳細について説明する。
ついて説明する。先ず、CRCの性質、エラー訂正結果
の評価演算の一般的な理論、本発明を適用した評価演算
の演算理論について順次し、さらに、この演算理論を適
用した、本実施形態におけるドライブ制御部290の構
成および動作の詳細について説明する。
【0064】先ず、CRCによるエラー検出について説
明する。
明する。
【0065】ユーザデータ(例えば、データを記録する
際に、ホスト側から送られるデータを多項式形式で表現
すると、(式1)のように表される。
際に、ホスト側から送られるデータを多項式形式で表現
すると、(式1)のように表される。
【0066】
【数1】
【0067】(式1)において、dxは、ユーザデータの
バイト毎に数えたx番めの8ビットパターン(すなわち
シンボル値)を示す。
バイト毎に数えたx番めの8ビットパターン(すなわち
シンボル値)を示す。
【0068】ここで、CRCの生成多項式をGCRC(x)と
すると、D(x)から生成される符号W(x)は、(式2)のよ
うに示される。
すると、D(x)から生成される符号W(x)は、(式2)のよ
うに示される。
【0069】
【数2】
【0070】ここで、Rは、CRCの冗長数であり、例
えば、4バイトCRCならばR=32である。
えば、4バイトCRCならばR=32である。
【0071】この符号W(x)は、GCRC(x)で必ず割り切れ
る。この符号W(x)にECCバイトを付加して媒体に記録
するための記録符号として用いる。さて、符号W(x)(こ
こでは、{ユーザデータ+CRCパリティ部}を特に指
す)とそれに対応するECCパリティ部とを媒体から読
み出す際にエラーが発生し、本来の符号W(x)とは異なる
符号M(x)が再生されたとすると、これらは(式3)の関
係にある。
る。この符号W(x)にECCバイトを付加して媒体に記録
するための記録符号として用いる。さて、符号W(x)(こ
こでは、{ユーザデータ+CRCパリティ部}を特に指
す)とそれに対応するECCパリティ部とを媒体から読
み出す際にエラーが発生し、本来の符号W(x)とは異なる
符号M(x)が再生されたとすると、これらは(式3)の関
係にある。
【0072】
【数3】
【0073】(式3)においてE(x)はエラー多項式であ
り、このエラー多項式E(x)は、(式4)のように表せ
る。
り、このエラー多項式E(x)は、(式4)のように表せ
る。
【0074】
【数4】
【0075】ここで、exはエラー値を示し、また、jxは
対応するエラー位置を示す。lは、ユーザデータおよび
CRCバイト部に発生したエラーバイト数である。
対応するエラー位置を示す。lは、ユーザデータおよび
CRCバイト部に発生したエラーバイト数である。
【0076】さて、(式4)で示される符号M(x)(再生
された受信語)に対するデータ読出し時のCRCによる
エラー検出は、(式5)に従って実行することができ
る。但し、ここでの検出とは、ECCの誤訂正チェック
ではなく、ECC訂正前のデータに対するエラー検出で
ある。
された受信語)に対するデータ読出し時のCRCによる
エラー検出は、(式5)に従って実行することができ
る。但し、ここでの検出とは、ECCの誤訂正チェック
ではなく、ECC訂正前のデータに対するエラー検出で
ある。
【0077】
【数5】
【0078】(式5)から、符号M(x)に対する剰余算の
結果は、エラー多項式E(x)にのみ依存することが示され
る。このエラー多項式E(x)は、エラー位置およびエラー
値から決定される。Sがゼロと等しくない時にエラー検
出と判断されるから、xRE(x)がGCRC(x)で割り切れない
限りCRCによるエラー検出が実現できる。なぜなら、
符号M(x)にエラーが発生していなければ、すなわち、E
(x)=0であるならば、M(x)=W(x)が成立し、GCRC(x)で必
ず割り切れるはずだからである。
結果は、エラー多項式E(x)にのみ依存することが示され
る。このエラー多項式E(x)は、エラー位置およびエラー
値から決定される。Sがゼロと等しくない時にエラー検
出と判断されるから、xRE(x)がGCRC(x)で割り切れない
限りCRCによるエラー検出が実現できる。なぜなら、
符号M(x)にエラーが発生していなければ、すなわち、E
(x)=0であるならば、M(x)=W(x)が成立し、GCRC(x)で必
ず割り切れるはずだからである。
【0079】従って、この性質を利用してECC訂正後
の誤訂正検証を実現できる。以下、この誤訂正検証につ
いて説明する。
の誤訂正検証を実現できる。以下、この誤訂正検証につ
いて説明する。
【0080】データ部またはCRCパリティ部に発生し
たエラー位置と、それに対応するエラー値とは、ECC
訂正することにより算出することができる。誤訂正をし
ていなければ、これらのエラー位置およびエラー値は、
それぞれ(式4)におけるexおよびjxに対応する。勿
論、ECC訂正で算出された、ユーザデータ部、CRC
部に発生したエラー個数は、(式4)におけるlと等し
くなるはずである。
たエラー位置と、それに対応するエラー値とは、ECC
訂正することにより算出することができる。誤訂正をし
ていなければ、これらのエラー位置およびエラー値は、
それぞれ(式4)におけるexおよびjxに対応する。勿
論、ECC訂正で算出された、ユーザデータ部、CRC
部に発生したエラー個数は、(式4)におけるlと等し
くなるはずである。
【0081】多項式表現されるE'(x)を、ECC訂正に
より求められたエラー位置、エラー値を用いて生成す
る。E'(x)は、(式6)のように示せる。
より求められたエラー位置、エラー値を用いて生成す
る。E'(x)は、(式6)のように示せる。
【0082】
【数6】
【0083】ここで、ex'およびjx'は、それぞれECC
演算で算出されたエラー値およびエラー位置を示す。ま
た、l'は、ECC演算で算出されたユーザデータ部およ
びCRCパリティ部に発生したエラーの個数を示す。
演算で算出されたエラー値およびエラー位置を示す。ま
た、l'は、ECC演算で算出されたユーザデータ部およ
びCRCパリティ部に発生したエラーの個数を示す。
【0084】このE'(x)を用いて、剰余算を(式5)と
同様にして実行し、その結果が(式5)の結果と等しけ
れば、ECC訂正は正常に行なわれたとCRCは判断す
る。すなわち、(式7)で表せるS'で、S=S'ならば、E
CCの誤訂正をCRCでは検出しなかったことを示す。
同様にして実行し、その結果が(式5)の結果と等しけ
れば、ECC訂正は正常に行なわれたとCRCは判断す
る。すなわち、(式7)で表せるS'で、S=S'ならば、E
CCの誤訂正をCRCでは検出しなかったことを示す。
【0085】
【数7】
【0086】このように、CRCによるECC誤訂正の
検出は、ECC演算で算出されたエラー位置およびエラ
ー値と、読み込んだ{ユーザデータ+CRCパリティ
部}からのCRC剰余算結果(ECC訂正前)とさえあ
れば実行可能である。
検出は、ECC演算で算出されたエラー位置およびエラ
ー値と、読み込んだ{ユーザデータ+CRCパリティ
部}からのCRC剰余算結果(ECC訂正前)とさえあ
れば実行可能である。
【0087】次に、本発明を適用した評価演算について
説明する。
説明する。
【0088】上述のようにして導かれた(式7)は、多
項式表現することに着目すると、(式8)に示すように
変形することができる。
項式表現することに着目すると、(式8)に示すように
変形することができる。
【0089】
【数8】
【0090】(式8)において、演算子「+」は排他的
論理和を示す。(式7)、(式8)から、次の理論が導
かれる。すなわち、ECC回路により算出されたエラー
位置およびエラー値よりなるエラー多項式E'(x)のそれ
ぞれの項について、それぞれ独立して(式7)の演算を
適用する。そして、それぞれの項における演算結果を相
互に排他的論理和をとることにより結果値S'を求めるこ
とができる。
論理和を示す。(式7)、(式8)から、次の理論が導
かれる。すなわち、ECC回路により算出されたエラー
位置およびエラー値よりなるエラー多項式E'(x)のそれ
ぞれの項について、それぞれ独立して(式7)の演算を
適用する。そして、それぞれの項における演算結果を相
互に排他的論理和をとることにより結果値S'を求めるこ
とができる。
【0091】本実施の形態の検証回路261は、この理
論を利用したものである。すなわち、検証回路261に
おいては、エラー位置およびエラー値がECC回路26
2によって求められると、(式8)の各項の演算を随
時、項ごとに独立して実行することが可能であり、項ご
とに得られる結果に従って最終的に求めるべき値S'を更
新していく。従って、検証演算を項ごとに並列して実行
することが可能となり、検証の高速化をはかり、エラー
訂正の検証に要する時間を短縮することが可能となる。
論を利用したものである。すなわち、検証回路261に
おいては、エラー位置およびエラー値がECC回路26
2によって求められると、(式8)の各項の演算を随
時、項ごとに独立して実行することが可能であり、項ご
とに得られる結果に従って最終的に求めるべき値S'を更
新していく。従って、検証演算を項ごとに並列して実行
することが可能となり、検証の高速化をはかり、エラー
訂正の検証に要する時間を短縮することが可能となる。
【0092】次に、図5を参照して、上記演算理論を適
用した、本実施の形態におけるドライブ制御部290の
動作の詳細について説明する。
用した、本実施の形態におけるドライブ制御部290の
動作の詳細について説明する。
【0093】図5において、ドライブ制御部290は、
CRC回路260と、検証回路261と、ECC回路2
62とを有して構成されている。各ブロックのそれぞれ
の構成および動作については後述する。ここでは、ブロ
ック相互のデータの送受を中心に、これら3つのブロッ
クの動作概要について、記憶媒体(図4における磁気デ
ィスク円盤810)に対する、ユーザデータの書き込み
と読み出しとの場合に分けて説明する。
CRC回路260と、検証回路261と、ECC回路2
62とを有して構成されている。各ブロックのそれぞれ
の構成および動作については後述する。ここでは、ブロ
ック相互のデータの送受を中心に、これら3つのブロッ
クの動作概要について、記憶媒体(図4における磁気デ
ィスク円盤810)に対する、ユーザデータの書き込み
と読み出しとの場合に分けて説明する。
【0094】先ず、磁気ディスク円盤810へのユーザ
データの書き込みについて説明する。この書き込み動作
は、基本的に従来から用いられている動作と同様にして
行なわれる。
データの書き込みについて説明する。この書き込み動作
は、基本的に従来から用いられている動作と同様にして
行なわれる。
【0095】先ず、ドライブ制御部290のデータバス
258に書き込むべきユーザデータが、データバッファ
816(図4参照)、バッファ制御部818(図4参
照)を介して、8ビット単位で送られてくる。ドライブ
制御部290では、ユーザデータをCRC回路260、
およびECC回路262に入力していく。よって、この
時点では、セレクタ264は、データバス258を選択
し、そこからのデータをバス253に出力する。
258に書き込むべきユーザデータが、データバッファ
816(図4参照)、バッファ制御部818(図4参
照)を介して、8ビット単位で送られてくる。ドライブ
制御部290では、ユーザデータをCRC回路260、
およびECC回路262に入力していく。よって、この
時点では、セレクタ264は、データバス258を選択
し、そこからのデータをバス253に出力する。
【0096】全てのユーザデータが上記の2つのブロッ
ク(CRC回路260、ECC回路262)に転送され
るまで、それぞれのブロックは、次のように動作する。
すなわち、CRC回路260は、転送されるユーザデー
タを多項式として認識し、CRC生成多項式による剰余
演算を行ない((式2)参照)、また、ECC回路26
2は、転送されるユーザデータを多項式として認識し、
ECC生成多項式で剰余演算を行う。また、ECC回路
262は、並行して転送されてくるユーザデータを8ビ
ット単位で符号語出力バス255より出力する。
ク(CRC回路260、ECC回路262)に転送され
るまで、それぞれのブロックは、次のように動作する。
すなわち、CRC回路260は、転送されるユーザデー
タを多項式として認識し、CRC生成多項式による剰余
演算を行ない((式2)参照)、また、ECC回路26
2は、転送されるユーザデータを多項式として認識し、
ECC生成多項式で剰余演算を行う。また、ECC回路
262は、並行して転送されてくるユーザデータを8ビ
ット単位で符号語出力バス255より出力する。
【0097】全てのユーザデータが上記の2ブロック
(CRC回路260、ECC回路262)に転送される
と、それぞれのブロックは、次のように動作する。すな
わち、CRC回路260においてCRCパリティ部(本
実施の形態では4バイト)が生成されるから、データバ
ス257を介して、ECC回路262にCRCパリティ
部を8ビット単位で転送する。すなわち、この期間にお
いては、セレクタ264は、データバス257を選択
し、そこからのデータをデータバス253に出力する。
(CRC回路260、ECC回路262)に転送される
と、それぞれのブロックは、次のように動作する。すな
わち、CRC回路260においてCRCパリティ部(本
実施の形態では4バイト)が生成されるから、データバ
ス257を介して、ECC回路262にCRCパリティ
部を8ビット単位で転送する。すなわち、この期間にお
いては、セレクタ264は、データバス257を選択
し、そこからのデータをデータバス253に出力する。
【0098】ECC回路262は、全てのユーザデータ
バイトに引き続き、前述したデータバス257を介して
転送されるCRCパリティ部を使用して、ECC生成多
項式による剰余演算を引き続いて行う。また、ECC回
路262は並行して、転送されてくるCRCパリティ部
を8ビット単位で符号語出力バス255より出力する。
バイトに引き続き、前述したデータバス257を介して
転送されるCRCパリティ部を使用して、ECC生成多
項式による剰余演算を引き続いて行う。また、ECC回
路262は並行して、転送されてくるCRCパリティ部
を8ビット単位で符号語出力バス255より出力する。
【0099】CRCパリティ部(本実施の形態では4バ
イト)の全てがECC回路262に転送されると、EC
C回路262の内部においてECCパリティ部が生成さ
れるので、その後、符号語出力バス255を介して、8
ビットずつECCパリティ部を出力する。
イト)の全てがECC回路262に転送されると、EC
C回路262の内部においてECCパリティ部が生成さ
れるので、その後、符号語出力バス255を介して、8
ビットずつECCパリティ部を出力する。
【0100】このようにして、本実施の形態を適用した
ドライブ制御部290において、データバス258を介
してユーザデータを入力していくことによって、符号語
{ユーザデータ部+CRCパリティ部+ECCパリティ
部}が符号語出力バス255から順次出力する動作が実
現される。このような動作により、本発明を適用したド
ライブ制御部290は、符号語{ユーザデータ部+CR
Cパリティ部+ECCパリティ部}を、データバス82
9(図4参照)を介して磁気ディスク円盤810(図4
参照)に記録する。
ドライブ制御部290において、データバス258を介
してユーザデータを入力していくことによって、符号語
{ユーザデータ部+CRCパリティ部+ECCパリティ
部}が符号語出力バス255から順次出力する動作が実
現される。このような動作により、本発明を適用したド
ライブ制御部290は、符号語{ユーザデータ部+CR
Cパリティ部+ECCパリティ部}を、データバス82
9(図4参照)を介して磁気ディスク円盤810(図4
参照)に記録する。
【0101】次に、同じく図5を参照して、本実施の形
態におけるドライブ制御部290における記憶媒体(磁
気ディスク円盤810(図4参照))からのユーザデー
タの読み込み動作について説明する。記憶媒体からの記
録信号の取得、取得された記録信号の復号処理などは、
従来行なわれている処理と、同様であるが、本実施の形
態における処理は、ECCによるエラー訂正、およびE
CC誤訂正のCRCにおいて相違する。以下に相違点を
中心に説明する。
態におけるドライブ制御部290における記憶媒体(磁
気ディスク円盤810(図4参照))からのユーザデー
タの読み込み動作について説明する。記憶媒体からの記
録信号の取得、取得された記録信号の復号処理などは、
従来行なわれている処理と、同様であるが、本実施の形
態における処理は、ECCによるエラー訂正、およびE
CC誤訂正のCRCにおいて相違する。以下に相違点を
中心に説明する。
【0102】先ず、記憶媒体である磁気ディスク円盤8
10(図4参照)から読み込まれた符号語{ユーザデー
タ部+CRCパリティ部+ECCパリティ部}はデータ
バス258を介して、CRC回路260およびECC回
路262に入力される。すなわち、この期間は、この期
間においては、セレクタ264は、データバス258を
選択し、そこからのデータをデータバス253に出力す
る。
10(図4参照)から読み込まれた符号語{ユーザデー
タ部+CRCパリティ部+ECCパリティ部}はデータ
バス258を介して、CRC回路260およびECC回
路262に入力される。すなわち、この期間は、この期
間においては、セレクタ264は、データバス258を
選択し、そこからのデータをデータバス253に出力す
る。
【0103】CRC回路260では、符号語{ユーザデ
ータ部+CRCパリティ部}をCRC生成多項式によっ
て剰余演算して4バイトのCRC剰余を算出する。そし
て、算出したCRC剰余を、データバス256を介して
検証回路261に4バイト一度に出力する。検証回路2
61では、受け取った4バイトのCRC剰余を内部に格
納しておく。
ータ部+CRCパリティ部}をCRC生成多項式によっ
て剰余演算して4バイトのCRC剰余を算出する。そし
て、算出したCRC剰余を、データバス256を介して
検証回路261に4バイト一度に出力する。検証回路2
61では、受け取った4バイトのCRC剰余を内部に格
納しておく。
【0104】ECC回路262では、{ユーザデータ部
+CRCパリティ部+ECCパリティ部}よりシンドロ
ームを算出する。算出されたシンドロームのうち少なく
とも1つ以上が非ゼロであれば、ECC回路262は、
読み込んだ{ユーザデータ部+CRCパリティ部+EC
Cパリティ部}にエラーが含まれていると判定し、訂正
動作を開始する。算出されたシンドロームが全てゼロで
あれば読み込んだ{ユーザデータ部+CRCパリティ部
+ECCパリティ部}にエラーが含まれていないと判定
し、ドライブ制御部290に対して正常なデータ転送が
行なわれたことを報告する。
+CRCパリティ部+ECCパリティ部}よりシンドロ
ームを算出する。算出されたシンドロームのうち少なく
とも1つ以上が非ゼロであれば、ECC回路262は、
読み込んだ{ユーザデータ部+CRCパリティ部+EC
Cパリティ部}にエラーが含まれていると判定し、訂正
動作を開始する。算出されたシンドロームが全てゼロで
あれば読み込んだ{ユーザデータ部+CRCパリティ部
+ECCパリティ部}にエラーが含まれていないと判定
し、ドライブ制御部290に対して正常なデータ転送が
行なわれたことを報告する。
【0105】次に、訂正動作について説明する。
【0106】ECC回路262でシンドロームを用いて
訂正演算したとき、発生したエラー個数がECCの訂正
能力範囲内であれば、エラー位置とエラー値のペアを1
組以上(実際に発生したエラー個数分だけ)算出する。
訂正演算したとき、発生したエラー個数がECCの訂正
能力範囲内であれば、エラー位置とエラー値のペアを1
組以上(実際に発生したエラー個数分だけ)算出する。
【0107】この時、エラー位置およびエラー値のペア
(但し、エラー位置がユーザデータ部もしくはCRCパ
リティ部だった場合)が1つ見つかるごとに、それぞ
れ、データバス251、データバス252を介して検証
回路261に、エラー位置およびエラー値のペアを出力
する。
(但し、エラー位置がユーザデータ部もしくはCRCパ
リティ部だった場合)が1つ見つかるごとに、それぞ
れ、データバス251、データバス252を介して検証
回路261に、エラー位置およびエラー値のペアを出力
する。
【0108】検証回路261では、受け取ったエラー位
置およびエラー値を用いて誤訂正検証演算を行ってい
く。検証回路261では、エラー位置およびエラー値を
受け取るごとに、誤訂正検証用のCRC再剰余を演算
し、更新していく。本実施の形態では、1ペアのエラー
位置およびエラー値を用いたCRC再剰余の更新演算に
要するクロックサイクルを、数クロックサイクルから1
0数クロックサイクルに低減している。このため、更新
演算の高速化が図られる。検証回路261の詳細な動作
については後述する。
置およびエラー値を用いて誤訂正検証演算を行ってい
く。検証回路261では、エラー位置およびエラー値を
受け取るごとに、誤訂正検証用のCRC再剰余を演算
し、更新していく。本実施の形態では、1ペアのエラー
位置およびエラー値を用いたCRC再剰余の更新演算に
要するクロックサイクルを、数クロックサイクルから1
0数クロックサイクルに低減している。このため、更新
演算の高速化が図られる。検証回路261の詳細な動作
については後述する。
【0109】ECC回路262は、エラー位置およびエ
ラー値のペアが見つかるごとに検証回路261にエラー
位置およびエラー値を出力しようとする。ここで、も
し、検証回路261において、既に渡してあるエラー位
置およびエラー値を使用したCRC再剰余の更新が完了
してなければ、検証回路261は、制御線253を介し
て未完了であることを報告しているので、それが完了す
るまでECC回路262はエラー位置およびエラー値の
出力をウェイトする。
ラー値のペアが見つかるごとに検証回路261にエラー
位置およびエラー値を出力しようとする。ここで、も
し、検証回路261において、既に渡してあるエラー位
置およびエラー値を使用したCRC再剰余の更新が完了
してなければ、検証回路261は、制御線253を介し
て未完了であることを報告しているので、それが完了す
るまでECC回路262はエラー位置およびエラー値の
出力をウェイトする。
【0110】そして、CRC再剰余の更新が完了する
と、エラー位置およびエラー値を検証回路261に出力
し、引き続き、次のエラー位置およびエラー値を算出し
始める。
と、エラー位置およびエラー値を検証回路261に出力
し、引き続き、次のエラー位置およびエラー値を算出し
始める。
【0111】ECC回路262において、期待される全
てのエラー位置およびエラー値のペアが算出され、検証
回路261において、算出された全てのエラー位置およ
びエラー値のペアを使用してCRC再剰余の更新が終了
すると、検証回路261の内部に格納されているCRC
再剰余値は、ECCによる誤訂正がない場合、既に検証
回路261内に格納されている前述のCRC剰余と一致
するはずである。
てのエラー位置およびエラー値のペアが算出され、検証
回路261において、算出された全てのエラー位置およ
びエラー値のペアを使用してCRC再剰余の更新が終了
すると、検証回路261の内部に格納されているCRC
再剰余値は、ECCによる誤訂正がない場合、既に検証
回路261内に格納されている前述のCRC剰余と一致
するはずである。
【0112】従って、検証回路261は、CRC再剰余
値とCRC剰余値とが等しければ、ECCによる訂正が
正常に行なわれたと解釈する。さもなければ(CRC再
剰余値とCRC剰余値とが等しくなければ)、ECCに
よる誤訂正が行なわれたと判定し、誤訂正発生を、バス
250を介してECC回路262に報告する。
値とCRC剰余値とが等しければ、ECCによる訂正が
正常に行なわれたと解釈する。さもなければ(CRC再
剰余値とCRC剰余値とが等しくなければ)、ECCに
よる誤訂正が行なわれたと判定し、誤訂正発生を、バス
250を介してECC回路262に報告する。
【0113】ECC回路262では、算出されたエラー
位置およびエラー値のペアを使用して、データバス83
4、バッファ制御部818(図4参照)を介して、デー
タバッファ816(図4参照)内に格納されている対応
する誤りバイトデータを正常なデータへと訂正する。具
体的には、データバッファメモリ816内に格納されて
いる誤りバイトデータをエラー位置から特定し、ECC
回路262に読み込み、誤りバイトデータと、エラー値
との排他的論理和をとったバイトデータを、また、デー
タバッファメモリ816内の同位置(エラー位置から特
定される)に再格納する。
位置およびエラー値のペアを使用して、データバス83
4、バッファ制御部818(図4参照)を介して、デー
タバッファ816(図4参照)内に格納されている対応
する誤りバイトデータを正常なデータへと訂正する。具
体的には、データバッファメモリ816内に格納されて
いる誤りバイトデータをエラー位置から特定し、ECC
回路262に読み込み、誤りバイトデータと、エラー値
との排他的論理和をとったバイトデータを、また、デー
タバッファメモリ816内の同位置(エラー位置から特
定される)に再格納する。
【0114】一方、ECC回路262において訂正不能
と判定するか、検証回路261から誤訂正発生の報告を
受けた場合は、ECC回路262は、受け付けたデータ
についての訂正ができなかったことを、上位の制御を行
う制御回路に報告する。すなわち、ECC回路262で
訂正演算を行ったが訂正不成功(訂正不能)であること
が、、ECC回路262における演算結果から判断され
るか、または、ECCの誤訂正発生が検証回路261に
おいて検出され、この旨がバス250を介してECC回
路262に報告された場合には、ECC回路262は、
訂正不能リポート信号254を介して、より上位の制御
を行う制御回路(例えば、CPU815など)に、現
在、訂正を試みた{ユーザデータ+CRCパリティ部+
ECCパリティ部}が訂正不能であったことを報告す
る。このとき、上位の制御回路は、読み出したユーザデ
ータにエラーが含まれ、かつ、ECC回路262でも訂
正できないと認識し、ユーザデータの再読み出し(リト
ライ)処理などを行う。
と判定するか、検証回路261から誤訂正発生の報告を
受けた場合は、ECC回路262は、受け付けたデータ
についての訂正ができなかったことを、上位の制御を行
う制御回路に報告する。すなわち、ECC回路262で
訂正演算を行ったが訂正不成功(訂正不能)であること
が、、ECC回路262における演算結果から判断され
るか、または、ECCの誤訂正発生が検証回路261に
おいて検出され、この旨がバス250を介してECC回
路262に報告された場合には、ECC回路262は、
訂正不能リポート信号254を介して、より上位の制御
を行う制御回路(例えば、CPU815など)に、現
在、訂正を試みた{ユーザデータ+CRCパリティ部+
ECCパリティ部}が訂正不能であったことを報告す
る。このとき、上位の制御回路は、読み出したユーザデ
ータにエラーが含まれ、かつ、ECC回路262でも訂
正できないと認識し、ユーザデータの再読み出し(リト
ライ)処理などを行う。
【0115】以上説明したように、本実施の形態によれ
ば、ECC回路262でエラー位置、エラー値のペアで
算出すると、それをすぐに検証回路261に出力し、次
のエラー位置、エラー値を算出し始める。そして検証回
路261では、ECC回路262のエラー位置、エラー
値算出と並行して、ECCの誤訂正検証演算であるCR
C再剰余の更新演算を進める。よって、見かけ上、EC
C回路262によるエラー位置、エラー値算出と、検証
回路261によるECCの誤訂正検証演算が同時に実行
できる。
ば、ECC回路262でエラー位置、エラー値のペアで
算出すると、それをすぐに検証回路261に出力し、次
のエラー位置、エラー値を算出し始める。そして検証回
路261では、ECC回路262のエラー位置、エラー
値算出と並行して、ECCの誤訂正検証演算であるCR
C再剰余の更新演算を進める。よって、見かけ上、EC
C回路262によるエラー位置、エラー値算出と、検証
回路261によるECCの誤訂正検証演算が同時に実行
できる。
【0116】次に、本実施の形態におけるCRC回路2
60、ECC回路262、検証回路261のそれぞれの
構成、動作について詳細に説明する。
60、ECC回路262、検証回路261のそれぞれの
構成、動作について詳細に説明する。
【0117】先ず、図7を参照して、CRC回路260
の構成、動作について詳細に説明する。
の構成、動作について詳細に説明する。
【0118】図7において、CRC回路260は、4つ
の8ビット遅延レジスタ(401,402,403,4
04)と、エラー検出ブロック410と、8ビット演算
フィードバック回路405と、これらを制御するための
コントロールロジック(図示せず)とを有して構成され
る。
の8ビット遅延レジスタ(401,402,403,4
04)と、エラー検出ブロック410と、8ビット演算
フィードバック回路405と、これらを制御するための
コントロールロジック(図示せず)とを有して構成され
る。
【0119】以下に、記憶媒体へのデータの書き込み動
作と、読み出し動作時とに分けて、CRC回路260の
動作について説明する。
作と、読み出し動作時とに分けて、CRC回路260の
動作について説明する。
【0120】先ず、同じく図7を参照して、記憶媒体へ
のデータの書き込み動作時におけるCRC回路260の
動作について説明する。
のデータの書き込み動作時におけるCRC回路260の
動作について説明する。
【0121】はじめに、4つの8ビット遅延レジスタ
(401,402,403,404)が、コントロール
ロジックにより全てゼロにリセットされる。そして、ユ
ーザデータがデータバス258から8ビット単位で入力
されると、8ビット演算フィードバック回路405は、
データバス256を介して8ビット演算フィードバック
回路405に入力される8ビット遅延レジスタ(40
1,402,403,404)の値と、8ビット単位の
ユーザデータとからフィードバック値を算出して、デー
タバス400を介して8ビット遅延レジスタ(401,
402,403,404)値を更新する。この動作を、
データバス258を介して入力される8ビットユーザデ
ータそれぞれについて、クロックに同期して随時行う。
(401,402,403,404)が、コントロール
ロジックにより全てゼロにリセットされる。そして、ユ
ーザデータがデータバス258から8ビット単位で入力
されると、8ビット演算フィードバック回路405は、
データバス256を介して8ビット演算フィードバック
回路405に入力される8ビット遅延レジスタ(40
1,402,403,404)の値と、8ビット単位の
ユーザデータとからフィードバック値を算出して、デー
タバス400を介して8ビット遅延レジスタ(401,
402,403,404)値を更新する。この動作を、
データバス258を介して入力される8ビットユーザデ
ータそれぞれについて、クロックに同期して随時行う。
【0122】ここで、8ビット演算フィードバック回路
405は、データバス256を介して特定される剰余初
期値と、CRC生成多項式とを使用して8次分の剰余演
算((式2)参照)を行ったときの32ビットの結果を
1クロックで算出するように構成したランダムロジック
である。
405は、データバス256を介して特定される剰余初
期値と、CRC生成多項式とを使用して8次分の剰余演
算((式2)参照)を行ったときの32ビットの結果を
1クロックで算出するように構成したランダムロジック
である。
【0123】このようにして全てのユーザデータをCR
C回路260がデータバス258を介して受け取り上記
の演算を繰り返すと、最終的に、8ビット遅延レジスタ
(401,402,403,404)に4バイトのCR
C剰余値(この場合、生成動作なのでCRCパリティバ
イト)が算出できる。そして、CRC回路260はデー
タバス257を介して、算出した4バイトCRCパリテ
ィバイトを1バイトずつ出力する。この時、8ビット演
算フィードバック回路は、順次異なる動作を行う。すな
わち、次クロックで8ビット遅延レジスタ402の値が
8ビット遅延レジスタ401に入力されるように、ま
た、8ビット遅延レジスタ403の値が8ビット遅延レ
ジスタ402に入力されるように、また、8ビット遅延
レジスタ404の値が8ビット遅延レジスタ403に入
力されるように、動作する。この動作を4クロックサイ
クル繰り返しながらデータバス257を介して8ビット
遅延レジスタ401の値を出力することで、前述の4バ
イトCRCパリティバイトが1バイト単位で出力でき
る。
C回路260がデータバス258を介して受け取り上記
の演算を繰り返すと、最終的に、8ビット遅延レジスタ
(401,402,403,404)に4バイトのCR
C剰余値(この場合、生成動作なのでCRCパリティバ
イト)が算出できる。そして、CRC回路260はデー
タバス257を介して、算出した4バイトCRCパリテ
ィバイトを1バイトずつ出力する。この時、8ビット演
算フィードバック回路は、順次異なる動作を行う。すな
わち、次クロックで8ビット遅延レジスタ402の値が
8ビット遅延レジスタ401に入力されるように、ま
た、8ビット遅延レジスタ403の値が8ビット遅延レ
ジスタ402に入力されるように、また、8ビット遅延
レジスタ404の値が8ビット遅延レジスタ403に入
力されるように、動作する。この動作を4クロックサイ
クル繰り返しながらデータバス257を介して8ビット
遅延レジスタ401の値を出力することで、前述の4バ
イトCRCパリティバイトが1バイト単位で出力でき
る。
【0124】次に、同じく図7を参照して、記憶媒体か
らのデータの読み出し動作時における、CRC回路26
0の動作について説明する。
らのデータの読み出し動作時における、CRC回路26
0の動作について説明する。
【0125】先ず、4つの8ビット遅延レジスタ(40
1,402,403,404)が、コントロールロジッ
クにより全てゼロにリセットされる。そして、データバ
ス258より{ユーザデータ+CRCパリティ部}が8
ビット単位で入力されると、データバス256を介して
8ビット演算フィードバック回路に入力される8ビット
遅延レジスタ(401,402,403,404)の値
と、8ビット単位のユーザデータからフィードバック値
を、8ビット演算フィードバック回路405は算出し
て、データバス400を介して8ビット遅延レジスタ
(401,402,403,404)値を更新する。こ
の動作をクロックに同期して、データバス258を介し
て入力される、8ビット単位の{ユーザデータ+CRC
パリティ部}のそれぞれについて、随時行う(前述の媒
体への書き込み動作時と同様の処理)。
1,402,403,404)が、コントロールロジッ
クにより全てゼロにリセットされる。そして、データバ
ス258より{ユーザデータ+CRCパリティ部}が8
ビット単位で入力されると、データバス256を介して
8ビット演算フィードバック回路に入力される8ビット
遅延レジスタ(401,402,403,404)の値
と、8ビット単位のユーザデータからフィードバック値
を、8ビット演算フィードバック回路405は算出し
て、データバス400を介して8ビット遅延レジスタ
(401,402,403,404)値を更新する。こ
の動作をクロックに同期して、データバス258を介し
て入力される、8ビット単位の{ユーザデータ+CRC
パリティ部}のそれぞれについて、随時行う(前述の媒
体への書き込み動作時と同様の処理)。
【0126】このようにして、全てのユーザデータがデ
ータバス258を介して受け取られ上記の演算が繰り返
えされると、最終的に、8ビット遅延レジスタ(40
1,402,403,404)において4バイトのCR
C剰余値が算出される。そして、CRC回路260は、
算出された剰余値に非ゼロの値があるか否かをエラー検
出410において検出する。1つでも非ゼロの値があれ
ば、読み込んだ{ユーザデータ+CRCパリティ部}に
はエラーが発生していたと判断して、算出された剰余値
を、データバス256を介して検証回路261に1クロ
ックで出力する。
ータバス258を介して受け取られ上記の演算が繰り返
えされると、最終的に、8ビット遅延レジスタ(40
1,402,403,404)において4バイトのCR
C剰余値が算出される。そして、CRC回路260は、
算出された剰余値に非ゼロの値があるか否かをエラー検
出410において検出する。1つでも非ゼロの値があれ
ば、読み込んだ{ユーザデータ+CRCパリティ部}に
はエラーが発生していたと判断して、算出された剰余値
を、データバス256を介して検証回路261に1クロ
ックで出力する。
【0127】次に、図6を参照して、本実施の形態にお
けるECC回路の構成および動作の詳細について説明す
る。ECC回路262の動作の詳細については、記録媒
体へのデータの書き込み動作、および読み出し動作時に
分けて説明する。
けるECC回路の構成および動作の詳細について説明す
る。ECC回路262の動作の詳細については、記録媒
体へのデータの書き込み動作、および読み出し動作時に
分けて説明する。
【0128】図6において、ECC回路262は、EC
Cパリティバイトを生成する演算およびシンドロームを
算出する演算を行うための符号生成/シンドローム算出
回路301と、発生したエラーのエラー位置およびエラ
ー値を求めるためのエラー位置、値算出器302と、バ
ッファインタフェース回路305と、訂正不能判定回路
307と、これらを制御するためのコントロールロジッ
ク(図示せず)とを有して構成される。
Cパリティバイトを生成する演算およびシンドロームを
算出する演算を行うための符号生成/シンドローム算出
回路301と、発生したエラーのエラー位置およびエラ
ー値を求めるためのエラー位置、値算出器302と、バ
ッファインタフェース回路305と、訂正不能判定回路
307と、これらを制御するためのコントロールロジッ
ク(図示せず)とを有して構成される。
【0129】先ず、同じく図6を参照して、記憶媒体へ
のデータの書き込み動作時におけるECC回路262の
動作について説明する。
のデータの書き込み動作時におけるECC回路262の
動作について説明する。
【0130】{ユーザデータ+CRCパリティ部}がデ
ータバス253を介して、8ビット単位で入力される
と、符号生成/シンドローム算出回路301は、符号生
成回路として機能する。すなわち、符号生成/シンドロ
ーム算出回路301は、入力される{ユーザデータ+C
RCパリティ部}に対してECC生成多項式による剰余
演算を行う。さらに、この剰余演算と並行して、データ
バス255を介して、入力された{ユーザデータ+CR
Cパリティ部}を8ビット単位で出力する。その結果、
符号生成/シンドローム算出回路の内部レジスタにはE
CC生成多項式の次数と同一のバイト数分の剰余が格納
される。これが{ユーザデータ+CRCパリティ部}に
対して算出されたECCパリティバイト(ECCパリテ
ィ部)となる。そして、算出されたECCパリティバイ
トを、{ユーザデータ+CRCパリティ部}に続いて、
データバス255を介して8ビット単位で出力する。
ータバス253を介して、8ビット単位で入力される
と、符号生成/シンドローム算出回路301は、符号生
成回路として機能する。すなわち、符号生成/シンドロ
ーム算出回路301は、入力される{ユーザデータ+C
RCパリティ部}に対してECC生成多項式による剰余
演算を行う。さらに、この剰余演算と並行して、データ
バス255を介して、入力された{ユーザデータ+CR
Cパリティ部}を8ビット単位で出力する。その結果、
符号生成/シンドローム算出回路の内部レジスタにはE
CC生成多項式の次数と同一のバイト数分の剰余が格納
される。これが{ユーザデータ+CRCパリティ部}に
対して算出されたECCパリティバイト(ECCパリテ
ィ部)となる。そして、算出されたECCパリティバイ
トを、{ユーザデータ+CRCパリティ部}に続いて、
データバス255を介して8ビット単位で出力する。
【0131】このようにして、入力された{ユーザデー
タ+CRCパリティ部}から、それに対応するECCパ
リティ部を演算し、データバス255を介して{ユーザ
データ+CRCパリティ部+ECCパリティ部}を出力
することができる。
タ+CRCパリティ部}から、それに対応するECCパ
リティ部を演算し、データバス255を介して{ユーザ
データ+CRCパリティ部+ECCパリティ部}を出力
することができる。
【0132】次に、同じく図6を参照して、記憶媒体か
らのデータの読み出し動作時におけるECC回路262
の動作について説明する。
らのデータの読み出し動作時におけるECC回路262
の動作について説明する。
【0133】データバス253を介して、{ユーザデー
タ+CRCパリティ部+ECCパリティ部}が8ビット
単位で入力されると、符号生成/シンドローム算出回路
301は、シンドローム算出回路として機能する。すな
わち、符号生成/シンドローム算出回路301は、入力
される{ユーザデータ+CRCパリティ部+ECCパリ
ティ部}に対してシンドローム算出演算を行い、算出さ
れたシンドロームを、データバス303を介してエラー
位置、値算出器302に出力する。エラー位置、値算出
器302ではユークリッドアルゴリズムによりエラー位
置多項式、エラー評価多項式を、受信したシンドローム
に基づいて導出する。さらに、エラー位置多項式、エラ
ー評価多項式を解くことによりエラー位置、およびそれ
に対応するエラー値を算出する。複数エラーが発生して
おり、かつ、そのエラー個数が訂正可能個数以内におさ
まっていれば、エラー位置およびエラー値のペアが、そ
のエラー個数分だけ算出されるはずである。
タ+CRCパリティ部+ECCパリティ部}が8ビット
単位で入力されると、符号生成/シンドローム算出回路
301は、シンドローム算出回路として機能する。すな
わち、符号生成/シンドローム算出回路301は、入力
される{ユーザデータ+CRCパリティ部+ECCパリ
ティ部}に対してシンドローム算出演算を行い、算出さ
れたシンドロームを、データバス303を介してエラー
位置、値算出器302に出力する。エラー位置、値算出
器302ではユークリッドアルゴリズムによりエラー位
置多項式、エラー評価多項式を、受信したシンドローム
に基づいて導出する。さらに、エラー位置多項式、エラ
ー評価多項式を解くことによりエラー位置、およびそれ
に対応するエラー値を算出する。複数エラーが発生して
おり、かつ、そのエラー個数が訂正可能個数以内におさ
まっていれば、エラー位置およびエラー値のペアが、そ
のエラー個数分だけ算出されるはずである。
【0134】ここで、エラー位置多項式を解く手法とし
ては、例えば、チェンサーチアルゴリズムを用いること
ができるが、本発明は、エラー位置多項式を解く手法に
は依存せず、特に、エラー位置およびエラー値が算出さ
れる順序がどのようなものであってもよい。
ては、例えば、チェンサーチアルゴリズムを用いること
ができるが、本発明は、エラー位置多項式を解く手法に
は依存せず、特に、エラー位置およびエラー値が算出さ
れる順序がどのようなものであってもよい。
【0135】上記のようにエラー位置、およびそれに対
応するエラー値のペアが算出されるごとに、エラー位
置、値算出器302は、エラー位置がユーザデータ部も
しくはCRCパリティ部であれば、データバス251を
介してエラー位置を、データバス252を介してエラー
値をバッファインタフェース回路305に出力するとと
もに、検証回路261(図5参照)に対しても出力す
る。但し、このとき制御線253の値を調査して、検証
回路261がビジー状態を示している場合、制御線25
3がアイドル状態を示すまで、出力をせず待機する。但
し、検証回路261(図5参照)は、それぞれのエラー
位置およびエラー値に対する演算を高速に実行するた
め、上記のようなウェイト動作によるオーバヘッドは小
さい。
応するエラー値のペアが算出されるごとに、エラー位
置、値算出器302は、エラー位置がユーザデータ部も
しくはCRCパリティ部であれば、データバス251を
介してエラー位置を、データバス252を介してエラー
値をバッファインタフェース回路305に出力するとと
もに、検証回路261(図5参照)に対しても出力す
る。但し、このとき制御線253の値を調査して、検証
回路261がビジー状態を示している場合、制御線25
3がアイドル状態を示すまで、出力をせず待機する。但
し、検証回路261(図5参照)は、それぞれのエラー
位置およびエラー値に対する演算を高速に実行するた
め、上記のようなウェイト動作によるオーバヘッドは小
さい。
【0136】エラー位置、値算出器302は、バッファ
インタフェース回路305および検証回路261に対す
る、エラー位置およびエラー値の出力を完了すると、引
き続き、次のエラー位置、エラー値の算出を進める。以
下同様にして、全てのエラー位置、エラー値が算出され
るまで処理を繰り返す。
インタフェース回路305および検証回路261に対す
る、エラー位置およびエラー値の出力を完了すると、引
き続き、次のエラー位置、エラー値の算出を進める。以
下同様にして、全てのエラー位置、エラー値が算出され
るまで処理を繰り返す。
【0137】バッファインタフェース回路305は、エ
ラー位置、エラー値を受信すると、データバス834を
介して、バッファ制御部818(図4参照)を利用し
て、データバッファ816(図4参照)内の誤りバイト
データを正常なデータに訂正する。具体的には、データ
バッファメモリ816内に格納されている誤りバイトデ
ータをエラー位置から特定しバッファインタフェース回
路305に読み込み、誤りバイトデータと、エラー値と
の排他的論理和をとったバイトデータを、また、データ
バッファメモリ816内の同位置(エラー位置から特定
される)に再格納する。
ラー位置、エラー値を受信すると、データバス834を
介して、バッファ制御部818(図4参照)を利用し
て、データバッファ816(図4参照)内の誤りバイト
データを正常なデータに訂正する。具体的には、データ
バッファメモリ816内に格納されている誤りバイトデ
ータをエラー位置から特定しバッファインタフェース回
路305に読み込み、誤りバイトデータと、エラー値と
の排他的論理和をとったバイトデータを、また、データ
バッファメモリ816内の同位置(エラー位置から特定
される)に再格納する。
【0138】一方、エラー位置、値算出器302におい
て、期待される個数のエラー位置、エラー値が特定でき
ない場合、エラー位置、値算出器302は、訂正可能範
囲を超えたエラーが発生したと判断して、制御線310
を介して訂正不能エラーが発生したことを、訂正不能判
定回路307に報告する。また、検証回路261(図5
参照)においてECCの誤訂正が検出されると制御線2
50を介して、誤訂正が発生したことが訂正不能判定回
路307に報告される。
て、期待される個数のエラー位置、エラー値が特定でき
ない場合、エラー位置、値算出器302は、訂正可能範
囲を超えたエラーが発生したと判断して、制御線310
を介して訂正不能エラーが発生したことを、訂正不能判
定回路307に報告する。また、検証回路261(図5
参照)においてECCの誤訂正が検出されると制御線2
50を介して、誤訂正が発生したことが訂正不能判定回
路307に報告される。
【0139】訂正不能判定回路307では、ECC回路
262による{ユーザデータ+CRCパリティ部+EC
Cパリティ部}に対する訂正演算が終了すると、エラー
位置、値算出器302から訂正不能の報告がなかったか
どうか、また、検証回路261からの誤訂正発生の報告
がなかったかどうかを調査する。どちらか1つでもあれ
ば、訂正不能判定回路307は、{ユーザデータ+CR
Cパリティ部+ECCパリティ部}はエラーが発生し、
かつ、エラーは訂正不能だったと判断し、制御線254
を介して上位のドライブ制御部261に訂正不能エラー
発生を報告する。
262による{ユーザデータ+CRCパリティ部+EC
Cパリティ部}に対する訂正演算が終了すると、エラー
位置、値算出器302から訂正不能の報告がなかったか
どうか、また、検証回路261からの誤訂正発生の報告
がなかったかどうかを調査する。どちらか1つでもあれ
ば、訂正不能判定回路307は、{ユーザデータ+CR
Cパリティ部+ECCパリティ部}はエラーが発生し、
かつ、エラーは訂正不能だったと判断し、制御線254
を介して上位のドライブ制御部261に訂正不能エラー
発生を報告する。
【0140】次に、図1を参照して、本実施の形態にお
ける検証回路の構成および動作の詳細について説明す
る。
ける検証回路の構成および動作の詳細について説明す
る。
【0141】図1において、検証回路261は、CRC
剰余ラッチ330と、剰余格納レジスタ334と、比較
器331と、エラー値剰余エンコーダ341と、CRC
ワーキングレジスタ342と、[16]サイクル剰余デコー
ダ343と、[1]サイクル剰余デコーダ344と、剰余
デコーダセレクタ348と、セレクタ335、セレクタ
340、セレクタ345と、コントロールロジック(図
示せず)とを有して構成される。
剰余ラッチ330と、剰余格納レジスタ334と、比較
器331と、エラー値剰余エンコーダ341と、CRC
ワーキングレジスタ342と、[16]サイクル剰余デコー
ダ343と、[1]サイクル剰余デコーダ344と、剰余
デコーダセレクタ348と、セレクタ335、セレクタ
340、セレクタ345と、コントロールロジック(図
示せず)とを有して構成される。
【0142】例えば、CRCC生成多項式を、x^32+x^2
6+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^
2+x+1と設定した場合、[16]サイクル剰余デコーダ34
3は、以下の演算を実行するハードウェアにて簡単に実
現できる。
6+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^
2+x+1と設定した場合、[16]サイクル剰余デコーダ34
3は、以下の演算を実行するハードウェアにて簡単に実
現できる。
【0143】ここで,[16]サイクル剰余デコーダ343
への32ビット入力データバスの値をd1[31:0]とし、ま
た、[16]サイクル剰余デコーダ343の32ビット出力
データバスの値をout1[31:0]としている。また、下式の
中で「∪」はビットの排他的論理和を表し、ハードウェ
アとしてはXOR回路を使用する組み合わせ回路により簡
単に演算可能である。
への32ビット入力データバスの値をd1[31:0]とし、ま
た、[16]サイクル剰余デコーダ343の32ビット出力
データバスの値をout1[31:0]としている。また、下式の
中で「∪」はビットの排他的論理和を表し、ハードウェ
アとしてはXOR回路を使用する組み合わせ回路により簡
単に演算可能である。
【0144】 out1[31] = d1[31]∪d1[30]∪d1[29]∪d1[28]∪d1[26] ∪d1[22]∪d1[21]∪d1[20]∪d1[19]∪d1[17] ∪d1[16]∪d1[14]∪d1[13]∪d1[ 9]∪d1[ 7] ∪d1[ 6]∪d1[ 4]∪d1[ 2]∪d1[ 1]∪d1[ 0]∪1 out1[30] = d1[30]∪d1[29]∪d1[28]∪d1[27]∪d1[25] ∪d1[21]∪d1[20]∪d1[19]∪d1[18]∪d1[16] ∪d1[15]∪d1[13]∪d1[12]∪d1[ 8]∪d1[ 6] ∪d1[ 5]∪d1[ 3]∪d1[ 1]∪d1[ 0]∪1 out1[29] = d1[29]∪d1[28]∪d1[27]∪d1[26]∪d1[24] ∪d1[20]∪d1[19]∪d1[18]∪d1[17]∪d1[15] ∪d1[14]∪d1[12]∪d1[11]∪d1[ 7]∪d1[ 5] ∪d1[ 4]∪d1[ 2]∪d1[ 0]∪1 out1[28] = d1[28]∪d1[27]∪d1[26]∪d1[25]∪d1[23] ∪d1[19]∪d1[18]∪d1[17]∪d1[16]∪d1[14] ∪d1[13]∪d1[11]∪d1[10]∪d1[ 6]∪d1[ 4] ∪d1[ 3]∪d1[ 1]∪1 out1[27] = d1[31]∪d1[27]∪d1[26]∪d1[25]∪d1[24] ∪d1[22]∪d1[18]∪d1[17]∪d1[16]∪d1[15] ∪d1[13]∪d1[12]∪d1[10]∪d1[ 9]∪d1[ 5] ∪d1[ 3]∪d1[ 2]∪d1[ 0]∪1 out1[26] = d1[30]∪d1[26]∪d1[25]∪d1[24]∪d1[23] ∪d1[21]∪d1[17]∪d1[16]∪d1[15]∪d1[14] ∪d1[12]∪d1[11]∪d1[ 9]∪d1[ 8]∪d1[ 4] ∪d1[ 2]∪d1[ 1]∪1 out1[25] = d1[30]∪d1[28]∪d1[26]∪d1[25]∪d1[24] ∪d1[23]∪d1[21]∪d1[19]∪d1[17]∪d1[15] ∪d1[11]∪d1[10]∪d1[ 9]∪d1[ 8]∪d1[ 6] ∪d1[ 4]∪d1[ 3]∪d1[ 2]∪1 out1[24] = d1[31]∪d1[29]∪d1[27]∪d1[25]∪d1[24] ∪d1[23]∪d1[22]∪d1[20]∪d1[18]∪d1[16] ∪d1[14]∪d1[10]∪d1[ 9]∪d1[ 8]∪d1[ 7] ∪d1[ 5]∪d1[ 3]∪d1[ 2]∪d1[ 1]∪1 out1[23] = d1[31]∪d1[30]∪d1[28]∪d1[26]∪d1[24] ∪d1[23]∪d1[22]∪d1[21]∪d1[19]∪d1[17] ∪d1[15]∪d1[13]∪d1[ 9]∪d1[ 8]∪d1[ 7] ∪d1[ 6]∪d1[ 4]∪d1[ 2]∪d1[ 1]∪d1[ 0]∪1 out1[22] = d1[28]∪d1[27]∪d1[26]∪d1[25]∪d1[23] ∪d1[19]∪d1[18]∪d1[17]∪d1[13]∪d1[12] ∪d1[ 9]∪d1[ 8]∪d1[ 5]∪d1[ 4]∪d1[ 3] ∪d1[ 2]∪1 out1[21] = d1[30]∪d1[29]∪d1[28]∪d1[27]∪d1[25] ∪d1[24]∪d1[21]∪d1[20]∪d1[19]∪d1[18] ∪d1[14]∪d1[13]∪d1[12]∪d1[11]∪d1[ 9] ∪d1[ 8]∪d1[ 6]∪d1[ 3]∪d1[ 0]∪1 out1[20] = d1[29]∪d1[28]∪d1[27]∪d1[26]∪d1[24] ∪d1[23]∪d1[20]∪d1[19]∪d1[18]∪d1[17] ∪d1[13]∪d1[12]∪d1[11]∪d1[10]∪d1[ 8] ∪d1[ 7]∪d1[ 5]∪d1[ 2]∪1 out1[19] = d1[31]∪d1[28]∪d1[27]∪d1[26]∪d1[25] ∪d1[23]∪d1[22]∪d1[19]∪d1[18]∪d1[17] ∪d1[16]∪d1[12]∪d1[11]∪d1[10]∪d1[ 9] ∪d1[ 7]∪d1[ 6]∪d1[ 4]∪d1[ 1]∪1 out1[18] = d1[30]∪d1[27]∪d1[26]∪d1[25]∪d1[24] ∪d1[22]∪d1[21]∪d1[18]∪d1[17]∪d1[16] ∪d1[15]∪d1[11]∪d1[10]∪d1[ 9]∪d1[ 8] ∪d1[ 6]∪d1[ 5]∪d1[ 3]∪d1[ 0]∪1 out1[17] = d1[29]∪d1[26]∪d1[25]∪d1[24]∪d1[23] ∪d1[21]∪d1[20]∪d1[17]∪d1[16]∪d1[15] ∪d1[14]∪d1[10]∪d1[ 9]∪d1[ 8]∪d1[ 7] ∪d1[ 5]∪d1[ 4]∪d1[ 2]∪1 out1[16] = d1[31]∪d1[28]∪d1[25]∪d1[24]∪d1[23] ∪d1[22]∪d1[20]∪d1[19]∪d1[16]∪d1[15] ∪d1[14]∪d1[13]∪d1[ 9]∪d1[ 8]∪d1[ 7] ∪d1[ 6]∪d1[ 4]∪d1[ 3]∪d1[ 1]∪1 out1[15] = d1[29]∪d1[28]∪d1[27]∪d1[26]∪d1[24] ∪d1[23]∪d1[20]∪d1[18]∪d1[17]∪d1[16] ∪d1[15]∪d1[12]∪d1[ 9]∪d1[ 8]∪d1[ 5] ∪d1[ 4]∪d1[ 3]∪d1[ 1]∪1 out1[14] = d1[28]∪d1[27]∪d1[26]∪d1[25]∪d1[23] ∪d1[22]∪d1[19]∪d1[17]∪d1[16]∪d1[15] ∪d1[14]∪d1[11]∪d1[ 8]∪d1[ 7]∪d1[ 4] ∪d1[ 3]∪d1[ 2]∪d1[ 0]∪1 out1[13] = d1[27]∪d1[26]∪d1[25]∪d1[24]∪d1[22] ∪d1[21]∪d1[18]∪d1[16]∪d1[15]∪d1[14] ∪d1[13]∪d1[10]∪d1[ 7]∪d1[ 6]∪d1[ 3] ∪d1[ 2]∪d1[ 1]∪1 out1[12] = d1[31]∪d1[26]∪d1[25]∪d1[24]∪d1[23] ∪d1[21]∪d1[20]∪d1[17]∪d1[15]∪d1[14] ∪d1[13]∪d1[12]∪d1[ 9]∪d1[ 6]∪d1[ 5] ∪d1[ 2]∪d1[ 1]∪d1[ 0]∪1 out1[11] = d1[29]∪d1[28]∪d1[26]∪d1[25]∪d1[24] ∪d1[23]∪d1[21]∪d1[17]∪d1[12]∪d1[11] ∪d1[ 9]∪d1[ 8]∪d1[ 7]∪d1[ 6]∪d1[ 5] ∪d1[ 2]∪1 out1[10] = d1[31]∪d1[30]∪d1[29]∪d1[27]∪d1[26] ∪d1[25]∪d1[24]∪d1[23]∪d1[21]∪d1[19] ∪d1[17]∪d1[14]∪d1[13]∪d1[11]∪d1[10] ∪d1[ 9]∪d1[ 8]∪d1[ 5]∪d1[ 2]∪d1[ 0]∪1 out1[ 9] = d1[31]∪d1[25]∪d1[24]∪d1[23]∪d1[21] ∪d1[19]∪d1[18]∪d1[17]∪d1[14]∪d1[12] ∪d1[10]∪d1[ 8]∪d1[ 6]∪d1[ 2]∪d1[ 0]∪1 out1[ 8] = d1[30]∪d1[24]∪d1[23]∪d1[22]∪d1[20] ∪d1[18]∪d1[17]∪d1[16]∪d1[13]∪d1[11] ∪d1[ 9]∪d1[ 7]∪d1[ 5]∪d1[ 1]∪1 out1[ 7] = d1[30]∪d1[28]∪d1[26]∪d1[23]∪d1[20] ∪d1[15]∪d1[14]∪d1[13]∪d1[12]∪d1[10] ∪d1[ 9]∪d1[ 8]∪d1[ 7]∪d1[ 2]∪d1[ 1]∪1 out1[ 6] = d1[31]∪d1[30]∪d1[28]∪d1[27]∪d1[26] ∪d1[25]∪d1[21]∪d1[20]∪d1[17]∪d1[16] ∪d1[12]∪d1[11]∪d1[ 8]∪d1[ 4]∪d1[ 2]∪1 out1[ 5] = d1[31]∪d1[30]∪d1[29]∪d1[27]∪d1[26] ∪d1[25]∪d1[24]∪d1[20]∪d1[19]∪d1[16] ∪d1[15]∪d1[11]∪d1[10]∪d1[ 7]∪d1[ 3] ∪d1[ 1]∪1 out1[ 4] = d1[31]∪d1[25]∪d1[24]∪d1[23]∪d1[22] ∪d1[21]∪d1[20]∪d1[18]∪d1[17]∪d1[16] ∪d1[15]∪d1[13]∪d1[10]∪d1[ 7]∪d1[ 4] ∪d1[ 1]∪1 out1[ 3] = d1[29]∪d1[28]∪d1[26]∪d1[24]∪d1[23] ∪d1[15]∪d1[13]∪d1[12]∪d1[ 7]∪d1[ 4] ∪d1[ 3]∪d1[ 2]∪d1[ 1]∪1 out1[ 2] = d1[31]∪d1[28]∪d1[27]∪d1[25]∪d1[23] ∪d1[22]∪d1[14]∪d1[12]∪d1[11]∪d1[ 6] ∪d1[ 3]∪d1[ 2]∪d1[ 1]∪d1[ 0]∪1 out1[ 1] = d1[29]∪d1[28]∪d1[27]∪d1[24]∪d1[20] ∪d1[19]∪d1[17]∪d1[16]∪d1[14]∪d1[11] ∪d1[10]∪d1[ 9]∪d1[ 7]∪d1[ 6]∪d1[ 5] ∪d1[ 4]∪1 out1[ 0] = d1[31]∪d1[30]∪d1[29]∪d1[27]∪d1[23] ∪d1[22]∪d1[21]∪d1[20]∪d1[18]∪d1[17] ∪d1[15]∪d1[14]∪d1[10]∪d1[ 8]∪d1[ 7] ∪d1[ 5]∪d1[ 3]∪d1[ 2]∪d1[ 1]∪d1[ 0]∪1 また、同様に、[1]サイクル剰余デコーダ344は、以
下の以下の演算を実行するハードウェアにて簡単に実現
できる。ここで、[1]サイクル剰余デコーダ344への
32ビット入力データバスの値をd2[31:0]とし、また、
[1]サイクル剰余デコーダ344の32ビット出力デー
タバスの値をout2[31:0]としている。また,以下の式に
おける「∪」はビットの排他的論理和を表し、ハードウ
ェアとしてはXOR回路を使用する組み合わせ回路により
簡単に演算可能である。
下の以下の演算を実行するハードウェアにて簡単に実現
できる。ここで、[1]サイクル剰余デコーダ344への
32ビット入力データバスの値をd2[31:0]とし、また、
[1]サイクル剰余デコーダ344の32ビット出力デー
タバスの値をout2[31:0]としている。また,以下の式に
おける「∪」はビットの排他的論理和を表し、ハードウ
ェアとしてはXOR回路を使用する組み合わせ回路により
簡単に演算可能である。
【0145】 out2[31] = d2[29]∪d2[23]∪1 out2[30] = d2[31]∪d2[28]∪d2[22]∪1 out2[29] = d2[31]∪d2[30]∪d2[27]∪d2[21]∪1 out2[28] = d2[30]∪d2[29]∪d2[26]∪d2[20]∪1 out2[27] = d2[31]∪d2[29]∪d2[28]∪d2[25]∪d2[19]∪1 out2[26] = d2[30]∪d2[28]∪d2[27]∪d2[24]∪d2[18]∪1 out2[25] = d2[27]∪d2[26]∪d2[17]∪1 out2[24] = d2[31]∪d2[26]∪d2[25]∪d2[16]∪1 out2[23] = d2[30]∪d2[25]∪d2[24]∪d2[15]∪1 out2[22] = d2[24]∪d2[14]∪1 out2[21] = d2[29]∪d2[13]∪1 out2[20] = d2[28]∪d2[12]∪1 out2[19] = d2[31]∪d2[27]∪d2[11]∪1 out2[18] = d2[31]∪d2[30]∪d2[26]∪d2[10]∪1 out2[17] = d2[30]∪d2[29]∪d2[25]∪d2[ 9]∪1 out2[16] = d2[29]∪d2[28]∪d2[24]∪d2[ 8]∪1 out2[15] = d2[31]∪d2[29]∪d2[28]∪d2[27]∪d2[ 7]∪1 out2[14] = d2[31]∪d2[30]∪d2[28]∪d2[27]∪d2[26] ∪d2[ 6]∪1 out2[13] = d2[31]∪d2[30]∪d2[29]∪d2[27]∪d2[26] ∪d2[25]∪d2[ 5]∪1 out2[12] = d2[30]∪d2[29]∪d2[28]∪d2[26]∪d2[25] ∪d2[24]∪d2[ 4]∪1 out2[11] = d2[28]∪d2[27]∪d2[25]∪d2[24]∪d2[ 3]∪1 out2[10] = d2[29]∪d2[27]∪d2[26]∪d2[24]∪d2[ 2]∪1 out2[ 9] = d2[29]∪d2[28]∪d2[26]∪d2[25]∪d2[ 1]∪1 out2[ 8] = d2[28]∪d2[27]∪d2[25]∪d2[24]∪d2[ 0]∪1 out2[ 7] = d2[31]∪d2[29]∪d2[27]∪d2[26]∪d2[24]∪1 out2[ 6] = d2[31]∪d2[30]∪d2[29]∪d2[28]∪d2[26] ∪d2[25]∪1 out2[ 5] = d2[31]∪d2[30]∪d2[29]∪d2[28]∪d2[27] ∪d2[25]∪d2[24]∪1 out2[ 4] = d2[30]∪d2[28]∪d2[27]∪d2[26]∪d2[24]∪1 out2[ 3] = d2[31]∪d2[27]∪d2[26]∪d2[25]∪1 out2[ 2] = d2[31]∪d2[30]∪d2[26]∪d2[25]∪d2[24]∪1 out2[ 1] = d2[31]∪d2[30]∪d2[25]∪d2[24]∪1 out2[ 0] = d2[30]∪d2[24]∪1 次に、同じく図1を参照して、本実施の形態における検
証回路の動作の詳細について説明する。検証回路261
は、記憶媒体からデータの読み出し動作時にしか使用さ
れないので、この場合の動作について説明する。ここで
は、特に、読み込んだ{ユーザデータ+CRCパリティ
部+ECCパリティ部}にエラーが発生しており、EC
C回路262で訂正演算する場合の検証回路261の動
作について説明する。
証回路の動作の詳細について説明する。検証回路261
は、記憶媒体からデータの読み出し動作時にしか使用さ
れないので、この場合の動作について説明する。ここで
は、特に、読み込んだ{ユーザデータ+CRCパリティ
部+ECCパリティ部}にエラーが発生しており、EC
C回路262で訂正演算する場合の検証回路261の動
作について説明する。
【0146】先ず、データバス256を介して、CRC
回路260(図5参照)から{ユーザデータ+CRCパ
リティ部(エラー訂正前)}に対するCRC剰余値(3
2ビット値)を受信し、CRC剰余ラッチ330に格納
する。
回路260(図5参照)から{ユーザデータ+CRCパ
リティ部(エラー訂正前)}に対するCRC剰余値(3
2ビット値)を受信し、CRC剰余ラッチ330に格納
する。
【0147】エラーが複数発生している場合は、{ユー
ザデータ+CRCパリティ部}におけるエラー位置およ
びエラー値がECC回路262(図5参照)において特
定されるたびに、またエラーが1個のみである場合は、
一回だけ、データバス251およびデータバス252か
ら、エラー位置およびエラー値がそれぞれ出力される。
ザデータ+CRCパリティ部}におけるエラー位置およ
びエラー値がECC回路262(図5参照)において特
定されるたびに、またエラーが1個のみである場合は、
一回だけ、データバス251およびデータバス252か
ら、エラー位置およびエラー値がそれぞれ出力される。
【0148】検証回路261は、データバス252から
エラー値を受信すると、エラー値剰余デコーダ341に
より、エラー値(8ビットデータ)をデコードして32
ビットデータを作成し、32ビットデータをCRCワー
キングレジスタ342へデータバス338、セレクタ3
40を介して格納する。
エラー値を受信すると、エラー値剰余デコーダ341に
より、エラー値(8ビットデータ)をデコードして32
ビットデータを作成し、32ビットデータをCRCワー
キングレジスタ342へデータバス338、セレクタ3
40を介して格納する。
【0149】ここで、エラー値剰余デコーダ341は、
受信したエラー値(8ビットデータ)を多項式展開して
CRC生成多項式で剰余演算((式2)参照)を行った
結果の32ビットデータをデコードするためのランダム
ロジックである。すなわち、このエラー値剰余デコーダ
341の動作により受信したエラー値(8ビットデー
タ)をCRC生成多項式でCRC剰余演算した結果がC
RCワーキングレジスタ342に格納されるのである。
受信したエラー値(8ビットデータ)を多項式展開して
CRC生成多項式で剰余演算((式2)参照)を行った
結果の32ビットデータをデコードするためのランダム
ロジックである。すなわち、このエラー値剰余デコーダ
341の動作により受信したエラー値(8ビットデー
タ)をCRC生成多項式でCRC剰余演算した結果がC
RCワーキングレジスタ342に格納されるのである。
【0150】さて、データバス251を介してエラー位
置を剰余デコーダセレクタ348が受信するが、剰余デ
コーダセレクタ348は、受信したエラー位置の値に依
存して、セレクタ345の動作をシーケンス制御し、[1
6]サイクル剰余デコーダ343、[1]サイクル剰余デコ
ーダ344を使用してCRCワーキングレジスタ342
の値を更新する。
置を剰余デコーダセレクタ348が受信するが、剰余デ
コーダセレクタ348は、受信したエラー位置の値に依
存して、セレクタ345の動作をシーケンス制御し、[1
6]サイクル剰余デコーダ343、[1]サイクル剰余デコ
ーダ344を使用してCRCワーキングレジスタ342
の値を更新する。
【0151】ここで、図8を参照して、剰余デコーダセ
レクタ348(図1参照)におけるシーケンス制御の手
順について説明する。
レクタ348(図1参照)におけるシーケンス制御の手
順について説明する。
【0152】図8において、シーケンス制御がスタート
する(ステップ450)と、まず、受け付けたエラー位
置の値をカウンタ(counter)に格納する(ステップ4
51)。そして、カウンタに格納されているエラー位置
の値が16以上であるか否かを判定する(ステップ45
2)。この判定の結果、エラー位置の値が16以上あれ
ば、カウンタに格納されているエラー位置の値から16
減じ(ステップ453)、[16]サイクル剰余デコーダ3
43を選択し、CRCワーキングレジスタ342の値を
更新する(ステップ453)。その後、ステップ452
に戻り、同様の判定を行う。また、ステップ452にお
ける判定の結果、エラー位置の値が16より小さけれ
ば、エラー位置の値が1以上か否か調査する(ステップ
455)。この調査の結果、エラー位置の値が1以上で
あれば、エラー位置の値から1減じ(ステップ45
7)、[1]サイクル剰余デコーダ344を使用してCR
Cワーキングレジスタ342の値を更新する(ステップ
457)。そして、ステップ455に戻り、同様の判定
を行う。
する(ステップ450)と、まず、受け付けたエラー位
置の値をカウンタ(counter)に格納する(ステップ4
51)。そして、カウンタに格納されているエラー位置
の値が16以上であるか否かを判定する(ステップ45
2)。この判定の結果、エラー位置の値が16以上あれ
ば、カウンタに格納されているエラー位置の値から16
減じ(ステップ453)、[16]サイクル剰余デコーダ3
43を選択し、CRCワーキングレジスタ342の値を
更新する(ステップ453)。その後、ステップ452
に戻り、同様の判定を行う。また、ステップ452にお
ける判定の結果、エラー位置の値が16より小さけれ
ば、エラー位置の値が1以上か否か調査する(ステップ
455)。この調査の結果、エラー位置の値が1以上で
あれば、エラー位置の値から1減じ(ステップ45
7)、[1]サイクル剰余デコーダ344を使用してCR
Cワーキングレジスタ342の値を更新する(ステップ
457)。そして、ステップ455に戻り、同様の判定
を行う。
【0153】以下、同様にして、このような動作をエラ
ー位置が0になるまで繰り返す。
ー位置が0になるまで繰り返す。
【0154】次に、図1を参照して、CRCワーキング
レジスタ342の値の更新動作について、さらに詳しく
説明する。
レジスタ342の値の更新動作について、さらに詳しく
説明する。
【0155】図1において、CRCワーキングレジスタ
342の値は、データバス347を介して[16]サイクル
剰余デコーダ343に入力される。[16]サイクル剰余デ
コーダ343は、入力された32ビットデータをランダ
ムゲートによりデコードして得た32ビットデータをセ
レクタ345へ出力する。ここで、[16]サイクル剰余デ
コーダ343は、入力された32ビットデータをCRC
剰余算の初期値として採用し、続けて16バイト分の値
0のデータが入力されたCRC剰余算をした結果の32
ビットデータを出力するものである。
342の値は、データバス347を介して[16]サイクル
剰余デコーダ343に入力される。[16]サイクル剰余デ
コーダ343は、入力された32ビットデータをランダ
ムゲートによりデコードして得た32ビットデータをセ
レクタ345へ出力する。ここで、[16]サイクル剰余デ
コーダ343は、入力された32ビットデータをCRC
剰余算の初期値として採用し、続けて16バイト分の値
0のデータが入力されたCRC剰余算をした結果の32
ビットデータを出力するものである。
【0156】また、CRCワーキングレジスタ342の
値はデータバス347を介して、[1]サイクル剰余デコ
ーダ344に入力される。[1]サイクル剰余デコーダ3
44は、入力された32ビットデータをランダムゲート
によりデコードして得た32ビットデータをセレクタ3
45へ出力する。この[1]サイクル剰余デコーダ344
は入力された32ビットデータをCRC剰余算の初期値
として採用し、続けて1バイト分の値0のデータが入力
されたCRC剰余算をした結果の32ビットデータを出
力するものである。
値はデータバス347を介して、[1]サイクル剰余デコ
ーダ344に入力される。[1]サイクル剰余デコーダ3
44は、入力された32ビットデータをランダムゲート
によりデコードして得た32ビットデータをセレクタ3
45へ出力する。この[1]サイクル剰余デコーダ344
は入力された32ビットデータをCRC剰余算の初期値
として採用し、続けて1バイト分の値0のデータが入力
されたCRC剰余算をした結果の32ビットデータを出
力するものである。
【0157】剰余デコーダセレクタ348によって、セ
レクタ345が制御されて、デコーダとして[16]サイク
ル剰余デコーダ343のパスもしくは、[1]サイクル剰
余デコーダのパスのどちらかが選択され、セレクタ34
0を介してCRCワーキングレジスタ342の値を32
ビットデータで更新する。
レクタ345が制御されて、デコーダとして[16]サイク
ル剰余デコーダ343のパスもしくは、[1]サイクル剰
余デコーダのパスのどちらかが選択され、セレクタ34
0を介してCRCワーキングレジスタ342の値を32
ビットデータで更新する。
【0158】このように動作することで受信したエラー
位置およびエラー値から(式8)の各項に対応するよう
な演算が検証回路261において実現される。
位置およびエラー値から(式8)の各項に対応するよう
な演算が検証回路261において実現される。
【0159】図8を参照して説明したシーケンス制御動
作が終了すると、CRCワーキングレジスタ342に格
納された32ビットデータを用いて、剰余格納レジスタ
334の値との排他的論理和をとり、剰余格納レジスタ
334の値を更新する。すなわち、CRCワーキングレ
ジスタ342の32ビットデータは、データバス347
を介して32ビット排他的論理和回路337で、データバ
ス333を介して送られてくる剰余格納レジスタ334
の値(但し初期値は0である)との排他的論理和をとら
れ、その演算結果はデータバス336、セレクタ335
を介して剰余格納レジスタ334を更新する。但し剰余
格納レジスタ334は、この時以外はクロックに同期し
て自分自身の値で更新を行っている(すなわち、CRC
ワーキングれじすた342からデータが送られてこない
ときは、レジスタの値は変化しない)。つまり、上述の
更新プロセス以外では、剰余格納レジスタ334は、デ
ータバス333、セレクタ335を介して自分の値で更
新を行うのである。
作が終了すると、CRCワーキングレジスタ342に格
納された32ビットデータを用いて、剰余格納レジスタ
334の値との排他的論理和をとり、剰余格納レジスタ
334の値を更新する。すなわち、CRCワーキングレ
ジスタ342の32ビットデータは、データバス347
を介して32ビット排他的論理和回路337で、データバ
ス333を介して送られてくる剰余格納レジスタ334
の値(但し初期値は0である)との排他的論理和をとら
れ、その演算結果はデータバス336、セレクタ335
を介して剰余格納レジスタ334を更新する。但し剰余
格納レジスタ334は、この時以外はクロックに同期し
て自分自身の値で更新を行っている(すなわち、CRC
ワーキングれじすた342からデータが送られてこない
ときは、レジスタの値は変化しない)。つまり、上述の
更新プロセス以外では、剰余格納レジスタ334は、デ
ータバス333、セレクタ335を介して自分の値で更
新を行うのである。
【0160】以上、1つのエラー位置およびエラー値が
受信された時の動作について説明した。エラーが複数発
生しているときにはデータバス251、データバス25
2を介してさらにエラー位置およびエラー値のペアがE
CC回路262(図5参照)より出力されてくるので同
様の動作を行う。但し、各エラー位置およびエラー値の
ペアについて、CRCワーキングレジスタ342もしく
は剰余格納レジスタ334の更新が行なわれている最中
は制御線253を介してビジー中であることをECC回
路262へ知らせ、次のエラー位置およびエラー値の出
力をウェイトさせる。
受信された時の動作について説明した。エラーが複数発
生しているときにはデータバス251、データバス25
2を介してさらにエラー位置およびエラー値のペアがE
CC回路262(図5参照)より出力されてくるので同
様の動作を行う。但し、各エラー位置およびエラー値の
ペアについて、CRCワーキングレジスタ342もしく
は剰余格納レジスタ334の更新が行なわれている最中
は制御線253を介してビジー中であることをECC回
路262へ知らせ、次のエラー位置およびエラー値の出
力をウェイトさせる。
【0161】全てのエラー位置およびエラー値につい
て、上述の動作を完了すると、剰余格納レジスタ334
には、ECC回路262で算出されたエラー位置および
エラー値によって特定されるエラー多項式からCRC生
成多項式によりCRC剰余を求めた値が格納されてい
る。換言すれば、このとき、剰余格納レジスタ334に
は、(式8)で求められる値S'に対応する値が格納され
る。
て、上述の動作を完了すると、剰余格納レジスタ334
には、ECC回路262で算出されたエラー位置および
エラー値によって特定されるエラー多項式からCRC生
成多項式によりCRC剰余を求めた値が格納されてい
る。換言すれば、このとき、剰余格納レジスタ334に
は、(式8)で求められる値S'に対応する値が格納され
る。
【0162】比較器331は、剰余格納レジスタ334
の値と、CRC剰余ラッチ330に格納されている、エ
ラー含みの{ユーザデータ+CRCパリティ部}から演
算されたCRC剰余値とを比較する。比較の結果、これ
らの2つの値が一致していれば、ECC回路262でエ
ラー訂正演算が正常に行なわれたと判断する。一致しな
かった場合、ECC回路262でエラー訂正演算の際に
誤訂正が発生したと判断し、ECC回路の誤訂正を検出
したことを、制御線250を介してECC回路262へ
報告する。
の値と、CRC剰余ラッチ330に格納されている、エ
ラー含みの{ユーザデータ+CRCパリティ部}から演
算されたCRC剰余値とを比較する。比較の結果、これ
らの2つの値が一致していれば、ECC回路262でエ
ラー訂正演算が正常に行なわれたと判断する。一致しな
かった場合、ECC回路262でエラー訂正演算の際に
誤訂正が発生したと判断し、ECC回路の誤訂正を検出
したことを、制御線250を介してECC回路262へ
報告する。
【0163】本実施の形態を適用すれば、エラー訂正ア
ルゴリズムに依存せず、エラー訂正回路でエラー位置、
エラー値が求めながら、エラー訂正回路のエラー訂正演
算で誤訂正が行なわれたかどうかを評価する値を、並行
して求めていくことができる。これによって、誤訂正の
評価を高速に実行することができる。
ルゴリズムに依存せず、エラー訂正回路でエラー位置、
エラー値が求めながら、エラー訂正回路のエラー訂正演
算で誤訂正が行なわれたかどうかを評価する値を、並行
して求めていくことができる。これによって、誤訂正の
評価を高速に実行することができる。
【0164】すなわち、図9のフローチャートに示すよ
うに、エラー位置およびエラー値を算出するためのステ
ップ507と、エラー位置およびエラー値からCRC剰
余再を算出するためのステップ509とを並行して実行
できる。従って、ECC訂正演算およびCRCによるE
CC訂正演算の検証演算の実行を高速化することが可能
となる。
うに、エラー位置およびエラー値を算出するためのステ
ップ507と、エラー位置およびエラー値からCRC剰
余再を算出するためのステップ509とを並行して実行
できる。従って、ECC訂正演算およびCRCによるE
CC訂正演算の検証演算の実行を高速化することが可能
となる。
【0165】また、図1に示す、エラー値剰余デコーダ
341、CRCワーキングレジスタ342、セレクタ3
40、[16]サイクル剰余デコーダ343、[1]サイクル
剰余デコーダ344、剰余デコーダセレクタ348を備
える演算ブロックを複数備え、ECC回路262からエ
ラー位置およびエラー値の送信要求が来たときに、1つ
の演算ブロックが稼働中の場合でも、他の開いている演
算ブロックで、そのエラー位置およびエラー値を受信
し、同様の演算を行うこともできる。これによって、さ
らに高速にECC訂正結果評価演算を実行することが可
能となる。
341、CRCワーキングレジスタ342、セレクタ3
40、[16]サイクル剰余デコーダ343、[1]サイクル
剰余デコーダ344、剰余デコーダセレクタ348を備
える演算ブロックを複数備え、ECC回路262からエ
ラー位置およびエラー値の送信要求が来たときに、1つ
の演算ブロックが稼働中の場合でも、他の開いている演
算ブロックで、そのエラー位置およびエラー値を受信
し、同様の演算を行うこともできる。これによって、さ
らに高速にECC訂正結果評価演算を実行することが可
能となる。
【0166】さらに、上述の説明では、ECC訂正演算
に使用する符号においてインタリーブ構成をとっていな
かったが、本発明は、インタリーブ構成をとる符号をE
CC訂正に使用した場合に適用可能であることは勿論で
ある。
に使用する符号においてインタリーブ構成をとっていな
かったが、本発明は、インタリーブ構成をとる符号をE
CC訂正に使用した場合に適用可能であることは勿論で
ある。
【0167】次に、図10を参照して、本発明の第2の
実施の形態について説明する。本実施の形態における磁
気ディスク装置は、ドライブ制御回路において、CRC
回路と検証回路とのペアを複数備えることにおいて、第
1の実施の形態と相違する。ドライブ制御回路以外のブ
ロックについては、基本的に同様に構成することができ
るので、ここで繰り返し説明することは省略し、相違点
を中心に説明する。本実施の形態では、ドライブ制御回
路をこのような構成とすることにより、大きなCRCパ
リティ部に対応する場合であっても、剰余演算のための
回路規模が肥大化することを避けることができる。
実施の形態について説明する。本実施の形態における磁
気ディスク装置は、ドライブ制御回路において、CRC
回路と検証回路とのペアを複数備えることにおいて、第
1の実施の形態と相違する。ドライブ制御回路以外のブ
ロックについては、基本的に同様に構成することができ
るので、ここで繰り返し説明することは省略し、相違点
を中心に説明する。本実施の形態では、ドライブ制御回
路をこのような構成とすることにより、大きなCRCパ
リティ部に対応する場合であっても、剰余演算のための
回路規模が肥大化することを避けることができる。
【0168】上述した第1の実施の形態においては、C
RCパリティ部として4バイトを想定しているが、例え
ば、ECC誤訂正に対する検証能力を高めるためにCR
Cパリティ部を大きくすると、本実施の形態で図1にお
ける[16]サイクル剰余デコーダや[1]サイクルデコーダ
部分の回路規模は肥大してしまう。本実施の形態は、こ
の回路規模の肥大化を避けるための手法の一例である。
すなわち、第1の実施の形態ではECC訂正演算の誤訂
正を検出する手段として1つのCRC符号を使用した
が、本実施の形態では、複数のCRCC(もしくはこれ
に類する検出手段)を用い、これに本発明を適用する。
以下の説明では、使用するCRCCの個数として2つを
設定した場合について述べるが、3つ以上のCRCCの
組み合わせに適用することができることは勿論である。
RCパリティ部として4バイトを想定しているが、例え
ば、ECC誤訂正に対する検証能力を高めるためにCR
Cパリティ部を大きくすると、本実施の形態で図1にお
ける[16]サイクル剰余デコーダや[1]サイクルデコーダ
部分の回路規模は肥大してしまう。本実施の形態は、こ
の回路規模の肥大化を避けるための手法の一例である。
すなわち、第1の実施の形態ではECC訂正演算の誤訂
正を検出する手段として1つのCRC符号を使用した
が、本実施の形態では、複数のCRCC(もしくはこれ
に類する検出手段)を用い、これに本発明を適用する。
以下の説明では、使用するCRCCの個数として2つを
設定した場合について述べるが、3つ以上のCRCCの
組み合わせに適用することができることは勿論である。
【0169】読み出されるデータの構成としては、例え
ば、{ユーザデータ+CRCパリティ部1+CRCパリ
ティ部2+ECCパリティ部}が考えられる。このデー
タブロックは、次のようにして生成することができる。
すなわち、先ず、ユーザデータに対して第1のCRCC
によりCRCパリティ部1を算出する。そして、{ユー
ザデータ+CRCパリティ部1}のデータブロックに対
して第2のCRCCによりCRCパリティ部2を算出す
る。その後、{ユーザデータ+CRCパリティ部1+C
RCパリティ部2}に対してECCによりECCパリテ
ィ部を算出する。本実施の形態では、CRCパリティ部
1、CRCパリティ部2のそれぞれの大きさを4バイト
と設定する例について説明する。このような構成の符号
に対し、本実施の形態における磁気ディスク装置では、
CRC回路と検証回路とのペアを複数備えるドライブ制
御回路を用いて対応する。
ば、{ユーザデータ+CRCパリティ部1+CRCパリ
ティ部2+ECCパリティ部}が考えられる。このデー
タブロックは、次のようにして生成することができる。
すなわち、先ず、ユーザデータに対して第1のCRCC
によりCRCパリティ部1を算出する。そして、{ユー
ザデータ+CRCパリティ部1}のデータブロックに対
して第2のCRCCによりCRCパリティ部2を算出す
る。その後、{ユーザデータ+CRCパリティ部1+C
RCパリティ部2}に対してECCによりECCパリテ
ィ部を算出する。本実施の形態では、CRCパリティ部
1、CRCパリティ部2のそれぞれの大きさを4バイト
と設定する例について説明する。このような構成の符号
に対し、本実施の形態における磁気ディスク装置では、
CRC回路と検証回路とのペアを複数備えるドライブ制
御回路を用いて対応する。
【0170】図10において、本実施の形態におけるC
RC回路B660およびCRC回路C601のそれぞれ
は、第1の実施の形態におけるCRC回路260(図7
参照)と基本的な構成は同様である。また、本実施の形
態における検証回路B661および検証回路C603の
それぞれは、第1の実施の形態における検証回路261
(図1参照)と基本的な構成は同様である。これらの回
路が第1の実施の形態と相違する点は、CRC回路B6
60、検証回路B661のペアと、CRC回路C60
1、検証回路C603のペアとで、それぞれ独立のCR
C生成多項式を使用していることである。
RC回路B660およびCRC回路C601のそれぞれ
は、第1の実施の形態におけるCRC回路260(図7
参照)と基本的な構成は同様である。また、本実施の形
態における検証回路B661および検証回路C603の
それぞれは、第1の実施の形態における検証回路261
(図1参照)と基本的な構成は同様である。これらの回
路が第1の実施の形態と相違する点は、CRC回路B6
60、検証回路B661のペアと、CRC回路C60
1、検証回路C603のペアとで、それぞれ独立のCR
C生成多項式を使用していることである。
【0171】以下、図10を用いて、本実施の形態にお
けるドライブ制御部B690の構成、および動作を、記
憶媒体である磁気ディスク円盤810(図4参照)に対
する、ユーザデータの書き込みと読み出しとにわけて、
それぞれ説明する。先ず、磁気ディスク円盤810(図
4参照)へのユーザデータの書き込みについて、説明す
る。
けるドライブ制御部B690の構成、および動作を、記
憶媒体である磁気ディスク円盤810(図4参照)に対
する、ユーザデータの書き込みと読み出しとにわけて、
それぞれ説明する。先ず、磁気ディスク円盤810(図
4参照)へのユーザデータの書き込みについて、説明す
る。
【0172】ドライブ制御部B690のデータバス25
8に書き込むべきユーザデータが、データバッファ81
6(図4参照)、バッファ制御部818(図4参照)を
介して、8ビット単位で送られてくる。ドライブ制御部
B690では、ユーザデータをCRC回路B660、C
RC回路C601およびECC回路662に入力してい
く。よって、この時点では、セレクタ664は、データ
バス258を選択し、そこから与えられるデータを、出
力バス653に出力する。
8に書き込むべきユーザデータが、データバッファ81
6(図4参照)、バッファ制御部818(図4参照)を
介して、8ビット単位で送られてくる。ドライブ制御部
B690では、ユーザデータをCRC回路B660、C
RC回路C601およびECC回路662に入力してい
く。よって、この時点では、セレクタ664は、データ
バス258を選択し、そこから与えられるデータを、出
力バス653に出力する。
【0173】全てのユーザデータが上記の3ブロック
(CRC回路B660、CRC回路C601、ECC回
路662)に転送されるまで、それぞれのブロックは次
のように動作する。すなわち、CRC回路B660、C
RC回路C601はそれぞれ、転送されるユーザデータ
を多項式としてとらえ、それぞれのCRC生成多項式に
よる剰余演算を行ない((式2)参照)、また、ECC
回路662は転送されるユーザデータを多項式としてと
らえ、ECC生成多項式で剰余演算を行う。また、EC
C回路662は、この剰余演算と並行して、転送されて
くるユーザデータを8ビット単位で符号語出力バス65
5より出力する。
(CRC回路B660、CRC回路C601、ECC回
路662)に転送されるまで、それぞれのブロックは次
のように動作する。すなわち、CRC回路B660、C
RC回路C601はそれぞれ、転送されるユーザデータ
を多項式としてとらえ、それぞれのCRC生成多項式に
よる剰余演算を行ない((式2)参照)、また、ECC
回路662は転送されるユーザデータを多項式としてと
らえ、ECC生成多項式で剰余演算を行う。また、EC
C回路662は、この剰余演算と並行して、転送されて
くるユーザデータを8ビット単位で符号語出力バス65
5より出力する。
【0174】全てのユーザデータが上記の3ブロック
(CRC回路B660、CRC回路C601、ECC回
路662)に転送されると、それぞれのブロックは次の
ように動作する。すなわち、CRC回路B660ではC
RCパリティ部1(本実施の形態では4バイト)が生成
されるので、データバス657を介して、CRC回路C
601およびECC回路662にCRCパリティ部1を
8ビット単位で転送する。すなわち、この期間では、セ
レクタ664は、データバス657を選択し、そこから
のデータをデータバス653に出力する。また、セレク
タ621は、データバス657を選択し、そこからのデ
ータをCRC回路C601に出力にする。
(CRC回路B660、CRC回路C601、ECC回
路662)に転送されると、それぞれのブロックは次の
ように動作する。すなわち、CRC回路B660ではC
RCパリティ部1(本実施の形態では4バイト)が生成
されるので、データバス657を介して、CRC回路C
601およびECC回路662にCRCパリティ部1を
8ビット単位で転送する。すなわち、この期間では、セ
レクタ664は、データバス657を選択し、そこから
のデータをデータバス653に出力する。また、セレク
タ621は、データバス657を選択し、そこからのデ
ータをCRC回路C601に出力にする。
【0175】CRC回路C601およびECC回路66
2は、全てのユーザデータバイトに引き続き、前述し
た、データバス657を介して転送されるCRCパリテ
ィ部1を使用して、それぞれの生成多項式による剰余演
算を続けて行う。また、この剰余演算と並行して、EC
C回路662は、転送されてくるCRCパリティ部1を
8ビット単位で符号語出力バス655より出力する。
2は、全てのユーザデータバイトに引き続き、前述し
た、データバス657を介して転送されるCRCパリテ
ィ部1を使用して、それぞれの生成多項式による剰余演
算を続けて行う。また、この剰余演算と並行して、EC
C回路662は、転送されてくるCRCパリティ部1を
8ビット単位で符号語出力バス655より出力する。
【0176】全てのCRCパリティ部1(本実施の形態
では4バイト)がCRC回路C601およびECC回路
662に転送されると、CRC回路601においてCR
Cパリティ部2が生成されるので、その後、生成された
CRCパリティ部2を、データバス608を介して8ビ
ットずつ出力する。
では4バイト)がCRC回路C601およびECC回路
662に転送されると、CRC回路601においてCR
Cパリティ部2が生成されるので、その後、生成された
CRCパリティ部2を、データバス608を介して8ビ
ットずつ出力する。
【0177】ECC回路662は、全ての{ユーザデー
タバイト+CRCパリティ部1}に引き続き、前述し
た、データバス657を介して転送されるCRCパリテ
ィ部2を使用して、ECC生成多項式による剰余演算を
続けて行う。また、この剰余演算と並行して、ECC回
路662は、転送されてくるCRCパリティ部2を8ビ
ット単位で符号語出力バス655より出力する。
タバイト+CRCパリティ部1}に引き続き、前述し
た、データバス657を介して転送されるCRCパリテ
ィ部2を使用して、ECC生成多項式による剰余演算を
続けて行う。また、この剰余演算と並行して、ECC回
路662は、転送されてくるCRCパリティ部2を8ビ
ット単位で符号語出力バス655より出力する。
【0178】全てのCRCパリティ部2(本実施の形態
では4バイト)がECC回路662に転送されると、E
CC回路662の内部においてECCパリティ部が生成
されるので、その後、データバス655を介して、8ビ
ットずつ該ECCパリティ部を出力する。
では4バイト)がECC回路662に転送されると、E
CC回路662の内部においてECCパリティ部が生成
されるので、その後、データバス655を介して、8ビ
ットずつ該ECCパリティ部を出力する。
【0179】このようにして、ドライブ制御部690で
データバス258を介してユーザデータを入力していく
ことで、符号語出力バス255から、{ユーザデータ部
+CRCパリティ部1+CRCパリティ部2+ECCパ
リティ部}が順次出力される。
データバス258を介してユーザデータを入力していく
ことで、符号語出力バス255から、{ユーザデータ部
+CRCパリティ部1+CRCパリティ部2+ECCパ
リティ部}が順次出力される。
【0180】ドライブ制御部690は、{ユーザデータ
部+CRCパリティ部1+CRCパリティ部2+ECC
パリティ部}を、データバス829(図4参照)を介し
て磁気ディスク円盤810(図4参照)に記録する。
部+CRCパリティ部1+CRCパリティ部2+ECC
パリティ部}を、データバス829(図4参照)を介し
て磁気ディスク円盤810(図4参照)に記録する。
【0181】上述のようにして、本実施の形態における
ドライブ制御部690は、記録媒体へのユーザデータの
書き込み動作を行う。
ドライブ制御部690は、記録媒体へのユーザデータの
書き込み動作を行う。
【0182】次に、同じく図10を参照して、磁気ディ
スク円盤810(図4参照)からのユーザデータの読み
込み動作におけるECCによるエラー訂正、およびEC
C誤訂正のCRCによる検出動作について説明する。
スク円盤810(図4参照)からのユーザデータの読み
込み動作におけるECCによるエラー訂正、およびEC
C誤訂正のCRCによる検出動作について説明する。
【0183】磁気ディスク円盤810(図4参照)から
読み込まれた{ユーザデータ部+CRCパリティ部1+
CRCパリティ部2+ECCパリティ部}は、データバ
ス258を介して、CRC回路B660、CRC回路C
601、およびECC回路662に入力されていく。よ
って、この期間は、セレクタ664は、データバス25
8を選択し、そこからのデータを出力バス653に出力
する。
読み込まれた{ユーザデータ部+CRCパリティ部1+
CRCパリティ部2+ECCパリティ部}は、データバ
ス258を介して、CRC回路B660、CRC回路C
601、およびECC回路662に入力されていく。よ
って、この期間は、セレクタ664は、データバス25
8を選択し、そこからのデータを出力バス653に出力
する。
【0184】CRC回路B660では、{ユーザデータ
部+CRCパリティ部1}をそのCRC生成多項式によ
って剰余演算して4バイトのCRC剰余1を算出する。
そして、算出したCRC剰余1を、データバス656を
介して検証回路B661に4バイト一度に出力する。検
証回路B661では、受け取った4バイトのCRC剰余
を格納しておく。
部+CRCパリティ部1}をそのCRC生成多項式によ
って剰余演算して4バイトのCRC剰余1を算出する。
そして、算出したCRC剰余1を、データバス656を
介して検証回路B661に4バイト一度に出力する。検
証回路B661では、受け取った4バイトのCRC剰余
を格納しておく。
【0185】同様にCRC回路C601では、{ユーザ
データ部+CRCパリティ部1+CRCパリティ部2}
をそのCRC生成多項式によって剰余演算して4バイト
のCRC剰余2を算出する。そして、CRC剰余2を、
データバス602を介して検証回路C603に4バイト
一度に出力する。検証回路C603では受け取った4バ
イトのCRC剰余を内部に格納しておく。
データ部+CRCパリティ部1+CRCパリティ部2}
をそのCRC生成多項式によって剰余演算して4バイト
のCRC剰余2を算出する。そして、CRC剰余2を、
データバス602を介して検証回路C603に4バイト
一度に出力する。検証回路C603では受け取った4バ
イトのCRC剰余を内部に格納しておく。
【0186】ECC回路662では、{ユーザデータ部
+CRCパリティ部1+CRCパリティ部2+ECCパ
リティ部}よりシンドロームを算出する。算出されたシ
ンドロームのうち少なくとも1つ以上が非ゼロであれば
ECC回路662は、読み込んだ{ユーザデータ部+C
RCパリティ部1+CRCパリティ部2+ECCパリテ
ィ部}にエラーが含まれていると判定し、訂正動作を開
始する。また、算出されたシンドロームが全てゼロであ
れば読み込んだ{ユーザデータ部+CRCパリティ部1
+CRCパリティ部2+ECCパリティ部}にエラーが
含まれていないと判定し、ドライブ制御部B690に対
して正常なデータ転送が行なわれたことを報告する。
+CRCパリティ部1+CRCパリティ部2+ECCパ
リティ部}よりシンドロームを算出する。算出されたシ
ンドロームのうち少なくとも1つ以上が非ゼロであれば
ECC回路662は、読み込んだ{ユーザデータ部+C
RCパリティ部1+CRCパリティ部2+ECCパリテ
ィ部}にエラーが含まれていると判定し、訂正動作を開
始する。また、算出されたシンドロームが全てゼロであ
れば読み込んだ{ユーザデータ部+CRCパリティ部1
+CRCパリティ部2+ECCパリティ部}にエラーが
含まれていないと判定し、ドライブ制御部B690に対
して正常なデータ転送が行なわれたことを報告する。
【0187】次に、訂正動作について説明する。
【0188】ECC回路662でシンドロームを用いて
訂正演算したとき、発生したエラー個数が本ECCの訂
正能力範囲内であれば、エラー位置およびエラー値のペ
アを1組以上(実際に発生したエラー個数分だけ)算出
する。
訂正演算したとき、発生したエラー個数が本ECCの訂
正能力範囲内であれば、エラー位置およびエラー値のペ
アを1組以上(実際に発生したエラー個数分だけ)算出
する。
【0189】この時、エラー位置およびエラー値のペア
(但し、エラー位置がユーザデータ部もしくはCRCパ
リティ部1だった場合)が1つ見つかるごとに、それぞ
れ、データバス651、データバス652を介して検証
回路B661に、エラー位置およびエラー値のペアを出
力する。
(但し、エラー位置がユーザデータ部もしくはCRCパ
リティ部1だった場合)が1つ見つかるごとに、それぞ
れ、データバス651、データバス652を介して検証
回路B661に、エラー位置およびエラー値のペアを出
力する。
【0190】検証回路B661では、受け取ったエラー
位置およびエラー値を用いて誤訂正検証演算を行ってい
く。検証回路B661では、エラー位置およびエラー値
を受け取るごとに、誤訂正検証用のCRC再剰余を演
算、更新していく。本実施の形態では、一組のエラー位
置およびエラー値を用いたCRC再剰余の更新演算に要
するクロックサイクルを、数〜10数クロックサイクル
に低減することが可能であり、更新演算を高速に実行す
ることが可能である。
位置およびエラー値を用いて誤訂正検証演算を行ってい
く。検証回路B661では、エラー位置およびエラー値
を受け取るごとに、誤訂正検証用のCRC再剰余を演
算、更新していく。本実施の形態では、一組のエラー位
置およびエラー値を用いたCRC再剰余の更新演算に要
するクロックサイクルを、数〜10数クロックサイクル
に低減することが可能であり、更新演算を高速に実行す
ることが可能である。
【0191】同様に、エラー位置およびエラー値のペア
(但し、エラー位置がユーザデータ部もしくはCRCパ
リティ部1またはCRCパリティ部2だった場合)が1
つ見つかるごとに、それぞれ、データバス604、デー
タバス605を介して検証回路C603にエラー位置お
よびエラー値のペアを出力する。
(但し、エラー位置がユーザデータ部もしくはCRCパ
リティ部1またはCRCパリティ部2だった場合)が1
つ見つかるごとに、それぞれ、データバス604、デー
タバス605を介して検証回路C603にエラー位置お
よびエラー値のペアを出力する。
【0192】検証回路C603では、受け取ったエラー
位置およびエラー値を用いて誤訂正検証演算を行ってい
く。検証回路C603では、エラー位置およびエラー値
を受け取るごとに、誤訂正検証用のCRC再剰余を演
算、更新していく。本実施の形態では、一組のエラー位
置およびエラー値を用いたCRC再剰余の更新演算に要
するクロックサイクルを、数〜10数クロックサイクル
に低減することが可能であり、更新演算を高速に実行す
ることが可能である。
位置およびエラー値を用いて誤訂正検証演算を行ってい
く。検証回路C603では、エラー位置およびエラー値
を受け取るごとに、誤訂正検証用のCRC再剰余を演
算、更新していく。本実施の形態では、一組のエラー位
置およびエラー値を用いたCRC再剰余の更新演算に要
するクロックサイクルを、数〜10数クロックサイクル
に低減することが可能であり、更新演算を高速に実行す
ることが可能である。
【0193】ECC回路662は、エラー位置およびエ
ラー値のペアが見つかるごとに(エラー位置が上記で説
明した位置を満足すれば)検証回路B661、検証回路
C603に、見つけられたエラー位置およびエラー値を
出力しようとするが、もし、検証回路B661、検証回
路C603のそれぞれにおいて、既に渡してあるエラー
位置、エラー値を使用したCRC再剰余の更新が完了し
てなければ、検証回路B661、検証回路C603は、
それぞれ制御線653、607を介して未完了であるこ
とを報告しているため、それが完了するまでECC回路
662は、見つけられたエラー位置およびエラー値の出
力をウェイトする。そして、CRC再剰余の更新が完了
すると、エラー位置およびエラー値を、検証回路B66
1、検証回路C603のそれぞれに出力し、引き続き、
次のエラー位置およびエラー値を算出し始める。
ラー値のペアが見つかるごとに(エラー位置が上記で説
明した位置を満足すれば)検証回路B661、検証回路
C603に、見つけられたエラー位置およびエラー値を
出力しようとするが、もし、検証回路B661、検証回
路C603のそれぞれにおいて、既に渡してあるエラー
位置、エラー値を使用したCRC再剰余の更新が完了し
てなければ、検証回路B661、検証回路C603は、
それぞれ制御線653、607を介して未完了であるこ
とを報告しているため、それが完了するまでECC回路
662は、見つけられたエラー位置およびエラー値の出
力をウェイトする。そして、CRC再剰余の更新が完了
すると、エラー位置およびエラー値を、検証回路B66
1、検証回路C603のそれぞれに出力し、引き続き、
次のエラー位置およびエラー値を算出し始める。
【0194】ECC回路662で、期待される全てのエ
ラー位置およびエラー値のペアが算出され、検証回路B
661、検証回路C603のそれぞれにおいて、受信し
た全てのエラー位置、エラー値のペアを使用して、CR
C再剰余の更新がそれぞれ終了すると、検証回路B66
1、検証回路C603の内部に格納されているそれぞれ
のCRC再剰余値は、ECCによる誤訂正がなければ、
既に検証回路B661、検証回路C603にそれぞれ格
納されているCRC剰余と、CRC回路B660、CR
C回路C601から既に受信しそれぞれ格納しているC
RC剰余とは、それぞれ一致するはずである。
ラー位置およびエラー値のペアが算出され、検証回路B
661、検証回路C603のそれぞれにおいて、受信し
た全てのエラー位置、エラー値のペアを使用して、CR
C再剰余の更新がそれぞれ終了すると、検証回路B66
1、検証回路C603の内部に格納されているそれぞれ
のCRC再剰余値は、ECCによる誤訂正がなければ、
既に検証回路B661、検証回路C603にそれぞれ格
納されているCRC剰余と、CRC回路B660、CR
C回路C601から既に受信しそれぞれ格納しているC
RC剰余とは、それぞれ一致するはずである。
【0195】CRC再剰余値とCRC剰余値とが等しけ
れば、検証回路B661、検証回路C603は、ECC
による訂正が正常に行なわれたと、それぞれ解釈する。
さもなければ(これらCRC再剰余値とCRC剰余値と
が等しくなければ)、ECCによる誤訂正が行なわれた
と判定し、バス650、606を介して誤訂正発生をE
CC回路662に報告する。この時誤訂正の発生パター
ンによって、検証回路B661、検証回路C603のど
ちらか、もしくは両方でECCの誤訂正が検出されるか
決定する。すなわち、{ユーザデータ部+CRCパリテ
ィ部1}に少なくとも1つ以上の位置で誤訂正されれ
ば、検証回路B661、検証回路C603は両方とも多
くの場合、誤訂正を検出できる(CRCの検出能力の制
限上、ある一定の確率で誤訂正を見逃す場合もある)。
また、CRCパリティ部2にのみ、少なくとも1つ以上
の位置で誤訂正されれば、検証回路C603でのみ誤訂
正を検証可能である(同様にCRCの検出能力の制限
上、ある一定の確率で誤訂正を見逃す場合もある)。
れば、検証回路B661、検証回路C603は、ECC
による訂正が正常に行なわれたと、それぞれ解釈する。
さもなければ(これらCRC再剰余値とCRC剰余値と
が等しくなければ)、ECCによる誤訂正が行なわれた
と判定し、バス650、606を介して誤訂正発生をE
CC回路662に報告する。この時誤訂正の発生パター
ンによって、検証回路B661、検証回路C603のど
ちらか、もしくは両方でECCの誤訂正が検出されるか
決定する。すなわち、{ユーザデータ部+CRCパリテ
ィ部1}に少なくとも1つ以上の位置で誤訂正されれ
ば、検証回路B661、検証回路C603は両方とも多
くの場合、誤訂正を検出できる(CRCの検出能力の制
限上、ある一定の確率で誤訂正を見逃す場合もある)。
また、CRCパリティ部2にのみ、少なくとも1つ以上
の位置で誤訂正されれば、検証回路C603でのみ誤訂
正を検証可能である(同様にCRCの検出能力の制限
上、ある一定の確率で誤訂正を見逃す場合もある)。
【0196】ECC回路662では、算出されたエラー
位置、エラー値のペアを使用して、データバス634、
バッファ制御部818(図4参照)を介して、データバ
ッファ816(図4参照)内に格納されている対応する
誤りバイトデータを正常なデータへと訂正する。
位置、エラー値のペアを使用して、データバス634、
バッファ制御部818(図4参照)を介して、データバ
ッファ816(図4参照)内に格納されている対応する
誤りバイトデータを正常なデータへと訂正する。
【0197】ところで、ECC回路662で訂正演算を
行ったが、ECC回路662内部で訂正不成功(訂正不
能)と演算結果から判断するか、もしくは前述の検証回
路B661、検証回路C603(の両方、もしくはどち
らか)によりECCの誤訂正が検出されバス650、6
06を介して誤訂正がECC回路662に報告された場
合には、ECC回路662は訂正不能リポート信号65
4を介して、上位のドライブ制御部B690に、現在、
訂正を試みた{ユーザデータ+CRCパリティ部1+C
RCパリティ部2+ECCパリティ部}が訂正不能であ
ったことを報告する。このときドライブ制御部B690
は読み出したユーザデータにエラーが含まれ、かつEC
C回路662でも訂正できないと認識し、ユーザデータ
の再読み出し(リトライ)処理をしたりする。
行ったが、ECC回路662内部で訂正不成功(訂正不
能)と演算結果から判断するか、もしくは前述の検証回
路B661、検証回路C603(の両方、もしくはどち
らか)によりECCの誤訂正が検出されバス650、6
06を介して誤訂正がECC回路662に報告された場
合には、ECC回路662は訂正不能リポート信号65
4を介して、上位のドライブ制御部B690に、現在、
訂正を試みた{ユーザデータ+CRCパリティ部1+C
RCパリティ部2+ECCパリティ部}が訂正不能であ
ったことを報告する。このときドライブ制御部B690
は読み出したユーザデータにエラーが含まれ、かつEC
C回路662でも訂正できないと認識し、ユーザデータ
の再読み出し(リトライ)処理をしたりする。
【0198】以上、説明したように本実施の形態では、
CRC符号を複数使用したシステムの場合であっても、
剰余演算のための回路規模が肥大化することを避けた状
態で、本発明を適用した誤訂正検出を実行することがで
きる。
CRC符号を複数使用したシステムの場合であっても、
剰余演算のための回路規模が肥大化することを避けた状
態で、本発明を適用した誤訂正検出を実行することがで
きる。
【0199】
【発明の効果】本発明によれば、ECCによるエラー訂
正と、CRC等のエラー検出手段によるECC訂正結果
の誤訂正検証とを、効率的に並列演算化することが可能
となり、エラー訂正演算および、その訂正結果の検証演
算を合わせたトータル演算時間が短縮される。言い換え
れば見かけ上、検証演算時間は0に近づく。
正と、CRC等のエラー検出手段によるECC訂正結果
の誤訂正検証とを、効率的に並列演算化することが可能
となり、エラー訂正演算および、その訂正結果の検証演
算を合わせたトータル演算時間が短縮される。言い換え
れば見かけ上、検証演算時間は0に近づく。
【0200】これにより、複雑な(時間のかかる)訂正
演算アルゴリズムを採用した場合や、高速なデータ転送
下においてもエラー訂正演算および、その訂正結果の検
証演算をオンザフライにて実現できる。
演算アルゴリズムを採用した場合や、高速なデータ転送
下においてもエラー訂正演算および、その訂正結果の検
証演算をオンザフライにて実現できる。
【図1】 第1の実施の形態における検証回路を示すブ
ロック図である。
ロック図である。
【図2】 従来のECC演算、CRC演算を示すフロー
チャートである。
チャートである。
【図3】 本発明を適用した磁気ディスク装置の電子回
路部を示す説明図である。
路部を示す説明図である。
【図4】 本発明を適用した磁気ディスク装置を示す構
成図である。
成図である。
【図5】 本発明の第1の実施の形態におけるドライブ
制御部を示すブロック図である。
制御部を示すブロック図である。
【図6】 本発明を適用したECC回路を示すブロック
図である。
図である。
【図7】 本発明を適用したCRC回路を示すブロック
図である。
図である。
【図8】 本発明を適用した剰余デコーダセレクタのシ
ーケンス制御を示すフローチャートである。
ーケンス制御を示すフローチャートである。
【図9】 本発明を適用したECC演算およびCRC演
算を示すフローチャートである。
算を示すフローチャートである。
【図10】 本発明の第2の実施の形態におけるドライ
ブ制御部を示すブロック図である。
ブ制御部を示すブロック図である。
【図11】 本発明を適用した磁気ディスク装置を示す
説明図である。
説明図である。
290…ドライブ制御部 260…CRC回路 261…検証回路 262…ECC回路 301…符号生成/シンドローム算出回路 302…エラー位置、値算出器 305…バッファインタフェース回路 307…訂正不能判定回路 330…CRC剰余ラッチ 331…比較器 334…剰余格納レジスタ 341…エラー値剰余デコーダ 342…CRCワーキングレジスタ 343…[16]サイクル剰余デコーダ 344…[1]サイクル剰余デコーダ 348…剰余デコーダセレクタ 405…8ビット演算フィードバック回路 815…CPU 819…CPU入出力制御部 825…ホストインタフェース制御部 818…バッファ制御部 816…データバッファ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山本 克己 東京都小平市上水本町五丁目20番1号 株 式会社日立製作所半導体事業部内 (72)発明者 仁科 昌俊 神奈川県小田原市国府津2880番地 株式会 社日立製作所ストレージシステム事業部内
Claims (17)
- 【請求項1】 目的とする情報を表すユーザデータにエ
ラー検出符号が付加された系列に、さらにエラー訂正符
号が付加された符号語に含まれるエラーを、上記エラー
訂正符号を用いて訂正する際に、誤訂正が発生したか否
かを検証するための誤訂正検証装置において、 上記エラー検出符号を生成するエラー検出符号生成多項
式で上記符号語を割った剰余、ならびに、上記符号系列
に含まれる各エラーのエラー位置およびエラー値を受け
付けるためのインタフェーシング手段と、 上記受け付けられた、各エラーのエラー位置およびエラ
ー値から各々生成されるエラー多項式を、上記エラー検
出符号を生成するエラー検出符号生成多項式で割った各
々の剰余を求めるための剰余演算手段と、 全ての剰余の排他的論理和を求めるための加算手段と、 上記加算手段によって求められた総和と、上記受け付け
た剰余とを比較し、これらが一致しないとき、誤訂正が
発生したと判定し、一致するとき、誤訂正が発生しなか
ったと判定するための判定手段とを有することを特徴と
する誤訂正検証装置。 - 【請求項2】 請求項1記載の誤訂正検証装置におい
て、 上記剰余演算手段は、エラー位置およびエラー値から生
成されるエラー多項式を、上記エラー検出符号生成多項
式で割った剰余を、各エラーごとに独立して求め、 上記剰余を求めるための演算を、上記エラー位置および
エラー値を受け付ける時間的順序に従って実行すること
を特徴とする誤訂正検証装置。 - 【請求項3】 請求項1および2のいずれか一項記載の
誤訂正検証装置において、 上記加算手段は、上記剰余が求められる度に逐次加算し
て求めること上記全ての剰余の排他的論理和を、 を特徴とする誤訂正検証装置。 - 【請求項4】 請求項1から3のいずれか一項記載の誤
訂正検証装置において、 上記剰余演算手段は、予め定められた次数の多項式を上
記エラー検出符号生成多項式で割った剰余を求めるため
の剰余デコーダを、1次の多項式について少なくとも備
えることを特徴とする誤訂正検証装置。 - 【請求項5】 目的とする情報を表すユーザデータと、
上記ユーザデータからエラー検出符号生成多項式により
生成されるエラー検出符号と、上記情報符号およびエラ
ー検出符号を含む系列からエラー訂正符号生成多項式に
より生成されるエラー訂正符号とを含む符号語に含まれ
るエラーを訂正するためのエラー訂正装置において、 上記エラー検出符号を用いてエラーが含まれるか否かを
検出するためのエラー検出部と、 上記エラー検出手段によりエラーが含まれることが検知
されたとき、上記エラー訂正符号を用いてエラー訂正を
行うためのエラー訂正部と、 上記エラー訂正部におけるエラー訂正に際し、誤訂正が
発生したか否かを検証するための誤訂正検証部とを有
し、 上記エラー検出部は、 上記符号語を上記エラー検出符号生成多項式で割った剰
余を求めるための剰余演算手段と、 上記剰余演算手段により演算された剰余が非ゼロである
とき、エラーが含まれていることを、上記エラー訂正部
に通知するための通知手段とを備え、 上記エラー訂正部は、 上記ユーザデータおよびエラー検出符号を含む系列に含
まれる各エラーのエラー位置およびエラー値を求めるた
めのエラー訂正演算手段と、 上記系列における、上記求められたエラー位置における
バイトデータを、当該バイトデータおよび上記求められ
たエラー値の排他的論理和をとったバイトデータとする
ための訂正手段とを備え、 上記誤訂正検証部は、請求項1から4のいずれか一項記
載の誤訂正検証装置を用いて構成されることを特徴とす
るエラー訂正装置。 - 【請求項6】 目的とする情報を表すユーザデータにエ
ラー検出符号が付加された系列に、さらにエラー訂正符
号が付加された符号語に含まれるエラーを訂正するため
のエラー訂正装置において、 上記符号語にエラーが含まれているか否かを検出するた
めの検出部と、 上記検出部において符号語にエラーが含まれていること
が検出された場合、エラー訂正符号を用いて符号語のエ
ラーを訂正する訂正演算を行うための訂正部と、 上記訂正部におけるエラー訂正の訂正結果を評価するた
めの訂正結果評価部とを有し、 上記訂正部は、 符号語に含まれるエラーのエラー位置およびエラー値を
求め、求めたエラー位置およびエラー値を用いて符号語
のエラー訂正を行う訂正演算を行うための演算回路と、 上記訂正演算の過程において、1または複数のエラーの
エラー位置およびエラー値を、エラーが算出されるごと
に上記訂正結果評価部に報告するための報告回路とを備
え、 上記訂正結果評価部は、受け取ったエラー位置およびエ
ラー値を用いて訂正結果の評価を進める評価回路を備
え、 上記訂正部および上記訂正結果評価部とは、上記訂正部
における訂正演算と、上記訂正結果評価部における訂正
結果の評価とを並行して実行することを特徴とするエラ
ー訂正装置。 - 【請求項7】 請求項6記載のエラー訂正装置におい
て、 上記訂正結果評価部は、受け取るエラー位置の順番と、
上記エラー訂正符号上の位置の順番との関係に依らず
に、訂正結果の評価を進めることを特徴とするエラー訂
正装置。 - 【請求項8】 請求項6および7のいずれか一項記載の
エラー訂正装置において、 上記訂正結果評価部は、 受け取ったエラー位置およびエラー値からエラー多項式
を作成し、当該エラー多項式を用いて、エラー検出符号
の生成多項式による剰余演算を行うための剰余演算回路
と、 値を格納するためのレジスタと、 上記レジスタに格納されている値と、上記剰余演算回路
により演算された剰余の値との排他的論理和をとり、当
該排他的論理和を取った値で、上記格納手段に格納され
ている値を更新するための更新回路と、 符号語に含まれる全てのエラー位置およびエラー値に対
して上記剰余演算回路により剰余演算が行われ、それら
の剰余の排他的論理和の値で上記格納手段に格納されて
いる値が更新されたとき、上記レジスタに格納されてい
る値と、上記符号語を用いたエラー検出符号生成多項式
による剰余演算の結果とを比較し、これらが相等しいと
き上記エラー訂正手段により正当にエラーが訂正された
と判定するための判定回路を備えることを特徴とするエ
ラー訂正装置。 - 【請求項9】 請求項8記載のエラー訂正装置におい
て、 上記訂正結果評価部は、 上記剰余演算回路を複数備え、 1つの剰余演算回路が稼働中のとき、さらに、他のエラ
ーについての上記訂正手段からエラー位置およびエラー
値がさらに与えられたとき、他の剰余演算回路を用い
て、当該与えられたエラー位置およびエラー値について
の演算を実行することを特徴とするエラー訂正装置。 - 【請求項10】 請求項6から9のいずれか一項記載の
エラー訂正装置において、 上記符号語は、エラー検出符号として2つ以上の独立し
たエラー検出符号を含み、上記訂正結果評価部は、上記
2つ以上の独立したエラー検出符号のそれぞれ利用して
上記訂正手段の訂正結果を評価するための2つ以上の独
立した訂正結果評価手段を備えることを特徴とするエラ
ー訂正装置。 - 【請求項11】 請求項6から10のいずれか一項記載
のエラー訂正装置において、 上記符号語は、上記エラー訂正符号がインタリーブ構成
になっており、 上記訂正手段は、インタリーブ毎に訂正演算を進めてい
く手段を備え、 上記訂正結果評価部は、インタリーブごとに算出される
エラー位置およびエラー値を受け取り、当該エラー位置
を、上記エラー検出符号におけるエラー位置に算出しな
おすための回路を備えることを特徴とするエラー訂正装
置。 - 【請求項12】 請求項5から11のいずれか一項記載
のエラー訂正装置を備えることを特徴とする再生装置。 - 【請求項13】 請求項12記載の再生装置を備えるこ
とを特徴とする記録再生装置。 - 【請求項14】 請求項5から11のいずれか一項記載
のエラー訂正装置を備えることを特徴とする通信装置。 - 【請求項15】 情報を表す情報符号と、上記情報符号
から巡回冗長符号生成多項式により生成されるエラー検
出符号と、上記情報符号およびエラー検出符号を含む系
列からエラー訂正符号生成多項式により生成されるエラ
ー訂正符号とを含む符号語に対する上記エラー訂正符号
を用いたエラー訂正について、エラー訂正に際し誤訂正
が発生したか否かを検証するための誤訂正検証方法にお
いて、 上記符号語に対する上記巡回冗長符号生成多項式の剰
余、および、上記ユーザデータおよびエラー検出符号を
含む系列に含まれる各エラーのエラー位置およびエラー
値を受け付け、 上記各エラーについて、受け付けたエラー位置およびエ
ラー値を含む項をそれぞれ最高次項とする多項式に対す
る上記巡回冗長符号生成多項式の剰余を求め、上記求め
た剰余の、排他的論理和による総和を求め、 上記求めた総和と、上記受け付けた剰余とを比較し、こ
れらが一致しないとき、誤訂正が発生したと判定し、か
つ、そうでないとき、誤訂正が発生しなかったと判定し
て、エラー訂正を検証することを特徴とする誤訂正検証
方法。 - 【請求項16】 プログラムを格納した記録媒体におい
て、 上記プログラムは、第1および第2のプロセッサを並列
動作させることができるプログラムであって、 目的とする情報を表すユーザデータにエラー検出符号が
付加された系列に、さらにエラー訂正符号が付加された
符号語にエラーが含まれているか否かを検出し、当該符
号語にエラーが含まれている場合、エラー訂正符号を用
いて当該符号語のエラーを訂正する訂正演算を上記第1
のプロセッサを用いて実行するための訂正部と、 上記訂正部におけるエラー訂正の訂正結果を上記第2の
プロセッサ評価するための訂正結果評価部とを有し、 上記訂正部は、 符号語に含まれるエラーのエラー位置およびエラー値を
求め、求めたエラー位置およびエラー値を用いて符号語
のエラー訂正を行う訂正演算を行うためのステップと、 上記訂正演算の過程において、1または複数のエラーの
エラー位置およびエラー値を、エラーが算出されるごと
に上記訂正結果評価部に報告するためのステップとを含
み、 上記訂正結果評価部は、エラー位置およびエラー値が1
または複数のエラーについて与えられるごとに訂正結果
の評価のための演算を行うためのステップを含むことを
特徴とするプログラムを格納した記録媒体。 - 【請求項17】 与えられた多項式を、予め定められた
多項式で割った剰余を求めるための剰余演算装置におい
て、 予め定められた次数の多項式を上記予め定められた多項
式で割った剰余を求めるための剰余デコーダを、1次の
多項式について少なくとも備えることを特徴とする剰余
演算装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP33720997A JPH11177440A (ja) | 1997-12-08 | 1997-12-08 | 誤訂正検証方法および装置、エラー訂正装置、再生装置、記録再生装置、通信装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP33720997A JPH11177440A (ja) | 1997-12-08 | 1997-12-08 | 誤訂正検証方法および装置、エラー訂正装置、再生装置、記録再生装置、通信装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11177440A true JPH11177440A (ja) | 1999-07-02 |
Family
ID=18306471
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP33720997A Pending JPH11177440A (ja) | 1997-12-08 | 1997-12-08 | 誤訂正検証方法および装置、エラー訂正装置、再生装置、記録再生装置、通信装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH11177440A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005218098A (ja) * | 2004-01-29 | 2005-08-11 | Samsung Electronics Co Ltd | 順方向のチェンサーチ方式のリードソロモンデコーダ回路 |
| JP2012190538A (ja) * | 2012-05-25 | 2012-10-04 | Toshiba Corp | 記憶装置、記憶媒体再生方法および記憶媒体再生プログラム |
-
1997
- 1997-12-08 JP JP33720997A patent/JPH11177440A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005218098A (ja) * | 2004-01-29 | 2005-08-11 | Samsung Electronics Co Ltd | 順方向のチェンサーチ方式のリードソロモンデコーダ回路 |
| JP2012190538A (ja) * | 2012-05-25 | 2012-10-04 | Toshiba Corp | 記憶装置、記憶媒体再生方法および記憶媒体再生プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7421642B2 (en) | Method and apparatus for error detection | |
| US6041430A (en) | Error detection and correction code for data and check code fields | |
| US5428630A (en) | System and method for verifying the integrity of data written to a memory | |
| US7653862B2 (en) | Error detection and correction for encoded data | |
| US8010879B2 (en) | Error correction method and apparatus for data storage device | |
| KR960003094B1 (ko) | 프로덕트 코드를 디코딩하는 디코더 및 방법 | |
| US5805799A (en) | Data integrity and cross-check code with logical block address | |
| JP3745709B2 (ja) | 符号化装置、復号化装置、符号化方法、復号化方法、プログラム、プログラム記録媒体、及びデータ記録媒体 | |
| JPH11508712A (ja) | ディスクドライブバッファ内のデータを保護するための方法および装置 | |
| JP2008165808A (ja) | 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
| US20050188292A1 (en) | Method and apparatus for encoding special uncorrectable errors in an error correction code | |
| JP2001175542A (ja) | 記録再生装置および半導体メモリ | |
| KR20080106775A (ko) | Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법 | |
| US20050149834A1 (en) | (18, 9) Error correction code for double error correction and triple error detection | |
| US6009550A (en) | PBA recovery apparatus and method for interleaved reed-solomon codes | |
| JP4861509B1 (ja) | 符号化・復号化装置、データ記憶装置、及び方法 | |
| JP2001056769A (ja) | 記憶されたコード語を読出すための方法および装置 | |
| JP4790790B2 (ja) | 誤り検出訂正回路及び半導体メモリ | |
| US20030192005A1 (en) | Method and apparatus for error detection | |
| US20070198904A1 (en) | Error correction processing apparatus and error correction processing method | |
| CN118677466A (zh) | 一种应用于片上存储器的纠错编码系统及方法 | |
| JPH05218883A (ja) | 復号回路 | |
| JP3853615B2 (ja) | アドレス情報検出装置およびアドレス情報検出方法 | |
| JPH117736A (ja) | 誤り検知方法および装置、復号化装置、ならびに、記録再生装置 | |
| JPH10334620A (ja) | 記録媒体の再生装置、記憶媒体の記録再生装置、記録媒体の書き込み装置、エラー訂正回路、エラー訂正符号生成方法、データ転送のエラー訂正方法、記憶媒体および記録媒体 |