媒体に書込まれるべきデータの符号語を符号化および復号化するための方法
【課題】データのランレングス制限(run-lengthlimited)(RLL)コード化に向けられる方法、機器およびシステムを提供する。
【解決手段】実現例では、kを超えない0のランレングスを有する連結可能なRLL符号が任意の比率N/(N+1)について構築される。符号率が増加すると、kの値は多くの他の符号の値よりもゆっくりと最小値から離れる。さらに、kビットのランレングスの発生は、2つの符号語の接合部でしか発生しない。この特性によって、符号はLDPCチャネルなどのパリティビット挿入アプリケーションに理想的なものになる。実現例では、表の中の違反シーケンスのビットアドレスを符号語の初めに配置し、表項目が配置される位置を占めているユーザデータが違反シーケンスの位置に移動される。これは、繰返し行なわれ、違反シーケンスがアドレステーブル自体の内部にある場合に備える方法で行なわれる。
【解決手段】実現例では、kを超えない0のランレングスを有する連結可能なRLL符号が任意の比率N/(N+1)について構築される。符号率が増加すると、kの値は多くの他の符号の値よりもゆっくりと最小値から離れる。さらに、kビットのランレングスの発生は、2つの符号語の接合部でしか発生しない。この特性によって、符号はLDPCチャネルなどのパリティビット挿入アプリケーションに理想的なものになる。実現例では、表の中の違反シーケンスのビットアドレスを符号語の初めに配置し、表項目が配置される位置を占めているユーザデータが違反シーケンスの位置に移動される。これは、繰返し行なわれ、違反シーケンスがアドレステーブル自体の内部にある場合に備える方法で行なわれる。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
この発明は概してデータの符号化および復号化に関する。
【背景技術】
【0002】
背景
磁気記憶チャネルでは、タイミング回復システムの頻繁な更新を保証するためにデータストリームの中の連続する0の数を制限することが望ましい。これは、ランレングス制限と呼ばれ、たとえばデータを「N」ビットのブロックに分割し、次いで、N+1ビットのブロックも連結されたブロックの対も所望の数「k」以上の連続する0を持たないように、選択されたN+1ビットのブロック上に各ブロックをマッピングすることによって達成され得る。典型的な符号には、8ビットの各ブロックを、9ビット(「8/9符号」)および「16/17」、「24/25」、「32/33」などのランレングス制限(run-length-limited)(「RLL」)ブロックと置換える符号が含まれる。割合N/(N+1)は、符号の「比率」と呼ばれる。もちろん、コード化率が異なるRLLスキームも存在する。
【発明の開示】
【発明が解決しようとする課題】
【0003】
多くの先行技術の方法の不利な点は、先行技術の方法がルックアップテーブルによって定義され、そのためコストおよび電力消費とともに符号化および復号化の複雑さが符号長に伴って指数関数的に増大することである。別の不利な点は、大半の先行技術の方法がその場その場での処理であり、各比率ごとに符号を開発するために異なるアプローチが必要であることである。先行技術の方法の中には、順次論理を使用して効率的に符号化および復号化でき、したがって複雑さの問題に部分的に対処しているものもある。しかしながら、これらの先行技術の方法は所与の比率に適合させるために相当な創意工夫が必要であることが多く、これらの先行技術の方法を使用して構築され得る符号がない比率が存在する。これは問題である。なぜなら、記録技術が(リード−ソロモン符号などの)バイト指向の誤り訂正から離れて(ターボおよび低密度パリティチェック(low density parity check)(「LDPC」)符号などの)軟復号化方法に移ると、さまざまな比率を有するRLL符号が必要になるためである。さらに、長い符号を構築するためのいくつかの先行技術の方法が考案されており、これは、符号化されていないブロックを、より短い、RLL符号化された語からのブロックで挟むことを伴う。これらの技術は、ある意味では一般的であるが、最適状態に大幅に及ばないkの値を生じさせることが多い。
【0004】
上述を鑑みて、効率的なエンコーダおよびデコーダを利用し、kの値が最適に近い符号を生成し、任意の所望の符号率に容易に適合する、RLL符号を構築するための一般的な方法が当該技術分野において必要である。
【課題を解決するための手段】
【0005】
概要
範囲を限定するのではなく例示的および例証的であるように意図されるシステム、機器および方法に関連して、以下の実施例およびその局面を記載し、示す。さまざまな実施例において、上述の問題を1つ以上低減または解消した。
【0006】
記載される実施例は、データのランレングス制限(RLL)コード化に向けられる方法
、機器およびシステムを提供する。一実現例では、kを超えない0のランレングスを有する連結可能なRLL符号が任意の比率N/(N+1)について構築され、ここでN≦2k-2+k-1である。符号率が増加すると、kの値は多くの他の符号の値よりもゆっくりと最小値から離れる。さらに、kビットのランレングスの発生は、2つの符号語の接合部でしか発生しない。このため、符号は大部分はk−1である。この特性によって、符号はLDPCチャネルなどのパリティビット挿入アプリケーションに理想的なものになる。一実現例では、この方法は、表の中の違反シーケンスのビットアドレスを符号語の初めに配置し、表項目が配置される位置を占めているユーザデータが違反シーケンスの位置に移動される。これは、繰返し行なわれ、違反シーケンスがアドレステーブル自体の内部にある場合に備える方法で行なわれる。
【発明を実施するための最良の形態】
【0007】
上述の局面および実施例に加えて、図面を参照することによっておよび以下の説明を検討することによって、さらなる局面および実施例が明らかになる。
【0008】
例示的な実施例を図面の参照図に示す。本明細書に開示される実施例および図は限定的ではなく例証的であると考えられることが意図される。
【0009】
詳細な説明
範囲を限定するのではなく例証的であるように意図されるシステム、機器および方法に関連して、以下の実施例およびその局面を記載し、示す。
【0010】
図1は、例示的な実施例に従う、媒体に書込まれるべきデータの符号語を符号化するための方法100を示すフローチャート図である。方法100は媒体装置のコントローラによって実現されることができ、このコントローラはコード化制約(k)に違反する0の列について符号語をスキャンし、コード化制約を満たすインジケータと違反シーケンスを置換える。この方法は、各符号語の初めに1ビットを先頭に付加することを含む。符号語の中に長さkの違反する0の列がなければ、符号語に対してさらなる修正が行なわれることはない。コントローラが符号語の中に長さkの違反する0の列を発見すると、コントローラは先頭に付加されたビットを0に変更し、1(保護ビット)、違反のアドレスを示すk−2ビットに続いて、1(終了フラグ)を挿入する。また、コントローラは、違反する0の列を、以前は語の最初のkビットの中にあったデータと置換える。次いで、コントローラは繰返し、第1の工程における先頭に付加されたビットと同様の態様で第1の置換の際に最後の1を処理する。
【0011】
違反列(violator)のアドレスがアドレステーブルポインタの値に等しい場合には、移動されるビットはなく、違反列のアドレスがアドレステーブルポインタ未満であるがアドレステーブルポインタ+kよりも大きい場合には、アドレステーブルポインタから最も左の違反列のビットまでであるが最も左の違反列のビットを含まないビットのみが移動されるという点で、上述の置換オペレーション中に例外が生じ得る。この例外は、後の段落に記載する「内部の」違反列に対処する。
【0012】
最初に、コントローラは、Nビットを受取り(102)、1ビットを先頭に付加することによって初期の符号語を構築し(104)、アドレステーブルポインタ(address table pointer)(「A.T.ポインタ」)を最初のデータビットアドレスに等しく設定する(106)。言い換えると、スキャンビットアドレスが最初のデータビットアドレスに等しく設定される。次に、コントローラは、符号語をスキャンし(108)、k制約に違反していたかどうかを判断する(110)。違反していなければ、コントローラは、符号語のブロックの最後に到達したかどうかを判断する(112)。到達していれば、コントローラは、ブロックを送り(113)、次のNビットを受取る(102)。そうでなければ
、コントローラはスキャンビットアドレスを次のデータビットアドレスに等しく設定する(114)。
【0013】
k制約に違反している場合には(110)、コントローラは、スキャンビットアドレスを記録し(116)、スキャンビットアドレスがアドレステーブルポインタに等しいかどうかを判断する(120)。コントローラは、生じた違反列のタイプ、すなわち外部の違反列または内部の違反列に起因して、代替的な処理が必要であるかどうか確かめるためにオペレーション120において判断を行なう。より詳細には、オペレーション120は、内部の違反列が特に発生したことに対して代替的な処理が必要であるかどうかを判断する。2つのタイプの違反列については後の段落で詳細に説明する。
【0014】
スキャンビットアドレスがアドレステーブルポインタに等しい場合(120)、コントローラは、インジケータを構築し(122)、アドレステーブルポインタにおいてインジケータを挿入し(124)、前の終了フラグをクリアし(126)、アドレステーブルポインタをkだけインクリメントする(128)。次に、コントローラはオペレーション112を実行する。
【0015】
スキャンビットアドレスがアドレステーブルポインタに等しくない場合には(120)、コントローラは、スキャンビットアドレスがアドレステーブルポインタ未満でありかつアドレステーブルポインタ−kよりも大きいかどうかを判断する(130)。そうでなければ、コントローラは、違反列シーケンスの最初のkビットを、アドレステーブルポインタから開始する最初のkビットと置換える(132)。次に、コントローラは、以前に記載したようにオペレーション122〜128を実行する。
【0016】
オペレーション130がイエスである場合、コントローラは、アドレステーブルポインタからスキャンビットアドレスまでであるがスキャンビットアドレスを含まないデータビットをインジケータの位置(アドレステーブルポインタ−k)の後ろに移動させる(134)。次に、コントローラはオペレーション122〜128を実行する。また、オペレーション130は、内部の違反列の発生に起因して代替的な処理が必要かどうかを判断する。
【0017】
図1のこの符号化方法100はkを超えないランレングスを提供する。なぜなら、生じ得るkビットのシーケンスが、違反列を排除するために後続のブロックを変形したときに1つのブロックの最後のk−1ビットおよび後続のブロックの先頭に付加されたビットのシーケンスになるためである。保護ビットは、さらなる違反を引起し得るインジケータが確実にないようにし、オペレーション120(スキャンビットアドレス=アドレステーブルポインタであるため、移動されるビットがない)の例外は確実に、アドレステーブルから移動する必要があるデータビットが違反列の数または長さを増やし得ないようにする。また、違反列のアドレスはさらなる違反を引起し得ない。なぜなら、たとえアドレスがすべて0であったとしても、常に1である保護ビットの対または保護ビットおよび値が1である終了フラグのいずれかの中に含められるためである。さらに、データパターンおよびkビットの違反列を含むビットの組合せはいずれも、その違反列が外部の違反列であろうと内部の違反列であろうと、同一の数のビットと置換えられる。このため、初期のデータ語の中の違反列の数から独立して、十分なスペースが符号語の中でインジケータのために維持される。
【0018】
一実現例では、N>2k-2であれば、オフセットビットアドレスが利用される。オフセットビットアドレスは、違反列が残りのN−2k-2ビットの中に存在し得ないので、符号語の最初の2k-2ビットのみをアドレス指定する。たとえば、N=21およびk=6であれば、最後の5ビットは、オフセットビットアドレスによってアドレス指定されることは
ない。なぜなら、k(6)個の0の違反列がそれらの最後の5ビットでは生じ得ないためである。N>2k-2であるとき、インジケータはオフセットビットアドレスを指し示すアドレスフィールドを伴って構築される。代替的に言えば、オペレーション116において記録されるスキャンビットアドレスは、インジケータに配置される前にN−2k-2だけ減らされる。
【0019】
最大長の符号が構築されると、すなわち、N=2k-2+k−1であれば、より短い符号、すなわち、任意のより小さなNの値を有する符号を生成するために各ユーザデータブロックの右端からビットを削除できることを理解すべきである。このため、方法100は、基本的には修正なしですべての比率N/(N+1)について符号を生成する。
【0020】
図2A〜図2Dは、例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。この例では、符号ラン比率は21/22であり、k(RLL制約)は6に設定された。20ビットのデータ10が受取られ、各ビットは対応するビットアドレス12を有する(図2A)。次いで、値が1である追加のビット14が、受取られたビットの先頭に付加されて、初期の符号語29を形成する。符号語29がk個の連続した0のいずれのシーケンス(違反列)も含まなければ、符号語29は変更のないまま送られる。各ビットは対応するビットアドレスを有する。さらに、ビットアドレス♯5〜20は対応するオフセットビットアドレス16を有する。図2A〜図2Dの符号化の例では、N>2k-2であるため、オフセットビットアドレスが利用される。先頭に付加されたビット14に直接に隣接するビットのビットアドレスを最初に指し示すアドレステーブルポインタ17が作成される。図2Bの例では、アドレステーブルポインタ17は最初にオフセットビットアドレス♯15を指し示す。
【0021】
符号語29は次いで、オフセットビットアドレス♯15から開始するkビットのスライドウィンドウを使用して左から右にスキャンされる。違反列18がオフセット検出されると、違反列の最初のビットアドレスのビットアドレスが記録される。図2Bの例では、違反列18の最初のビットアドレスはビットアドレス♯8である。なぜなら、k(6)個の0のシーケンスがそこで始まるためである。第1の違反列が検出されると、先頭に付加されたビット14は0に変更される。次いで、kビットの違反列18は、アドレステーブルポインタ17が指し示しているオフセットビットアドレスから開始するkビットの符号語29と置換えられる。図2B〜図2Cを参照して、オフセットビットアドレス♯15で始まるシーケンス「0 1 0 0 1 1」が違反列18の位置に移動され、その移送されたデータはインジケータデータ20と称される。
【0022】
次に、kビットのインジケータシーケンス22が構築され、アドレステーブルポインタが指し示すオフセットビットアドレスから開始する符号語29に配置される(図2B)。一実現例では、インジケータは、値が1である保護フラグ、違反列の最初のオフセットビットアドレスを識別する、長さがk−2のアドレスフィールド、および初期値が1である終了フラグで始まる。さらなる違反列が検出されると、終了フラグは0に変更される。図2Cを参照して、第1のインジケータ22は、オフセットビットアドレス♯15における保護フラグと、オフセットビットアドレス♯14〜11におけるアドレスフィールドと、オフセットビットアドレス♯10における終了フラグとを含む。第1のインジケータ22のアドレスフィールドはシーケンス「1 0 0 0」を含み、これはオフセットビットアドレス♯8を指す。
【0023】
アドレステーブルポインタ16は、図2Bから図2Cまでkだけ進められ、図2Cにおいてオフセットビットアドレス♯9を今では指し示している。図2Cにおいても、符号語29はさらにスキャンされ、記録されるオフセットビットアドレス♯6によって最初のビットがアドレス指定される第2の違反列24が検出される。図2Dを参照して、第1のイ
ンジケータ22の終了フラグはオフセットビットアドレス♯10において1から0に変更され、第2の違反列24のビットは、図2Cにおいてアドレステーブルポインタが指し示すオフセットビットアドレスから開始するkビットと置換えられる。詳細には、オフセットビットアドレス♯9(図2C参照)から開始するkビット(「1 01 0 0 1」)が、第2の違反列を占めていたビット、すなわちビットアドレス♯1〜6に配置され、ビットアドレス♯5〜6はオフセットビットアドレス♯0〜1に対応する。それらの置換えられたビットはインジケータデータ26と称される。
【0024】
図2Dを参照して、第2のインジケータ28が次いで、値が1であるオフセットビットアドレス♯9における保護フラグ、オフセットビットアドレス♯5〜8におけるアドレスフィールド、および値が1である終了フラグを伴って構築される。アドレスフィールドは、オフセットビットアドレス♯5〜8において、列「0 0 0 1」を含み、これはオフセットビットアドレス♯1を指す。第2の違反列24がオフセットビットアドレス17によってアドレス指定されないビットに及ぶので、さらなる違反列についての符号語29のスキャンは中止される。図2A〜図2Dの符号化の例でオフセットビットアドレス17が利用されなければ、符号語29の最後に到達するまで違反列についての符号語29のスキャンは継続するであろう。
【0025】
記載される実施例は、2つのタイプの違反列、すなわち図3A〜図3Bに示す外部の違反列および内部の違反列をそれぞれに考慮に入れる。外部の違反列とは、違反列を指すインジケータが配置されるべきである位置内で始まらない違反列である。外部の違反列の一例は外部の違反列30である。外部の違反列のさらなる例は、図2B〜図2Cに示す違反列18および24である。以前に記載したものと同様に、アドレステーブルポインタ(「ATP」)35が指し示すビットアドレスから開始するビット34は、外部の違反列30によって占められていたビットアドレス36に移動される。次に、インジケータ32が構築され、アドレステーブルポインタ35が指し示すビットアドレスから開始するビットアドレスに配置される。
【0026】
図3Bを参照して、内部の違反列とは、違反列を指すインジケータが配置されるべき位置内で始まる違反列である。たとえば、内部の違反列38は、アドレステーブルポインタ40から数ビットアドレスだけ離れている。たとえば、k=6であれば、違反列38についてのインジケータの長さは6ビットであり、内部の違反列38のビットアドレスにおいて書込まれるであろう。この場合、内部の違反列38によって占められるビットの一部を埋めるために、先頭の0でないデータ42のみが移動される。
【0027】
図4は、例示的な実施例に従う、媒体から読取られるデータの符号語を復号化するための方法400を示すフローチャート図である。示す実現例では、方法400は、符号語の先頭に付加されたビットを調べる媒体装置のコントローラを伴う。先頭に付加されたビットの値が1である場合、先頭に付加されたビットは廃棄され、残りのビットが変更のないまま送出される。そうでなければ、符号語の復号化は、アドレステーブルにおける最後のインジケータの初期値を有するアドレステーブルポインタを作成することによって行なわれ、これは1に等しい終了フラグを有するそのエントリ(entry)である。次に、コントローラは、アドレステーブルポインタが指し示すインジケータからアドレスフィールドを抽出し、必要であればそれをN−2k-2だけ増やし、その結果、違反列がアドレス指定される。次に、コントローラは、アドレス指定された違反列におけるkビットとインジケータを置換える。次に、コントローラは、kビットのアドレス指定された違反列を0と置換え、アドレステーブルポインタをkだけ減らし、第1のインジケータが置換えられるまで抽出オペレーション、2つの置換オペレーションおよび減少オペレーションを繰返す。
【0028】
アドレステーブルポインタの値が違反列のアドレスに等しい場合には、移動されるビッ
トはなく、違反列のアドレスがアドレステーブルポインタ未満であるがアドレステーブルポインタ+kよりも大きい場合には、最も右の違反列のビットからインジケータの最後までであるがインジケータの最後を含まないビットのみが移動されるという点で、第1の置換オペレーションについて時には例外が生じ得る。
【0029】
方法400をより詳細に説明するために、図4を参照する。最初に、コントローラは、次の符号語を受取り(402)、先頭に付加されたビットが1に等しいかどうかを判断する(404)。等しい場合には、コントローラは先頭に付加されたビットを廃棄し、符号語の残りのNビットを送出する(406)。そうでなければ、コントローラは、アドレステーブルポインタをアドレステーブルにおける最後のインジケータの初期値に等しく設定し(410)、アドレステーブルポインタが指し示すインジケータからアドレスフィールドを抽出する(412)。次に、コントローラは、抽出されたアドレスがアドレステーブルポインタに等しいかどうかを判断する(414)。等しい場合には、コントローラは、抽出されたアドレスから開始するkビットをk個の数の0と置換え(416)、アドレステーブルポインタをkだけ減らす(418)。次に、コントローラは第1のインジケータが置換えられたかどうかを判断する。置換えられていた場合には、コントローラは次の符号語を受取る(402)。
【0030】
抽出されたアドレスがアドレステーブルポインタに等しくない場合(414)、コントローラは次いで、抽出されたアドレスがアドレステーブルポインタ未満であるがアドレステーブルポインタ−kよりも大きいかどうかを判断する(422)。そうであれば、コントローラは、最も右の違反列からインジケータの最後までのインジケータビットを置換える(424)。そうでなければ、コントローラは、抽出されたアドレスから開始するkビットとインジケータを置換える(426)。
【0031】
チャネルにおけるビット誤りのために、受取られた符号語は不完全な形式である場合がある。言い換えると、受取られた符号語は、以前に記載したように適切に符号化された符号語の構造に適合できない。1つの検出可能な不完全な形式は、0に等しい任意の保護ビットである。他の不完全な形式は、インジケータ自体のアドレスよりも小さなアドレスまたは任意の前のインジケータのアドレスよりも小さなアドレスを有するインジケータの発生である。デコーダはこれらの不完全な形式を任意に検出し、復号できない符号語を報告し得る。
【0032】
図5A〜図5Dは、例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。この例では、符号率N/(N+1)は21/22であり、kは任意に6に設定された。図5Aの受取られた符号語29は、図2A〜図2Dの符号化の例において構築された符号語と同じであり、先頭に付加されたビット14と、第1のインジケータ22および第2のインジケータ28と、インジケータデータ26とを含む。先頭に付加されたビット14の値は0であり、したがって符号語29の復号化が必要である。アドレステーブルポインタ16は、最後に符号化されたインジケータの最初のビットアドレスに設定される。詳細には、アドレステーブルポインタ16は、第2のインジケータ28のビットアドレス♯14におけるポイントに設定される。最後に符号化された/第2のインジケータ28の位置は、終了フラグの値に基づいて特定される。第2のインジケータ28はビットアドレス♯9に終了フラグを有し、その値は1であり、これは第2のインジケータが構築された後にさらなる違反列が検出されなかったことを意味する。
【0033】
アドレスが第2のインジケータ28から抽出され、N>2k-2であるので、抽出されたアドレスはN−2k-2だけ増やされる。抽出されたアドレスはビットアドレス♯1を指し示し、ビットアドレス♯1は次に、インジケータデータ26の最初のビットのビットアドレスであるビットアドレス♯6に増やされる。図5Bを参照して、インジケータデータ2
6によって占められるビットが0に戻され、インジケータデータ26は、アドレステーブルポインタ16が指し示すビットアドレスから開始するビットに移動される。
【0034】
図5Cを参照して、アドレステーブルポインタ16は、kだけ減らされ、その結果、第1のインジケータ22のビットアドレス♯20を指し示す。アドレスが(インジケータデータ22によって置換えられる前の図5Bに示す)第1のインジケータ22のアドレスフィールドから抽出され、そのアドレスは、ビットアドレス♯13に増やされるビットアドレス♯8を指し示す。したがって、ビットアドレス♯13から開始するkビットは0に戻され、図5Bに示すビットアドレス♯13〜8からのインジケータデータ20は、図5Cに示すビットアドレス♯20〜15に配置される。次に、図5Dにおいて、先頭に付加されたビット14が削除され、これは結果的に最初に図2Aに示した元の21ビットのデータ10になる。
【0035】
図6A〜図6Bは、例示的な実施例に従う、書込セクション600および読取セクション650のための、ハードウェアにおいて実現される判定チャネルを示すブロック図である。図6A〜図6Bは、RLL符号化および復号化が誤り訂正機構の「外側」にあることを示す。言い換えると、書込の場合には、データはRLL符号化される前にECC符号化される。そして、読取の場合には、誤り訂正が行なわれる前にRLL符号化が除去される。これは、典型的にはビタビアルゴリズムを利用する硬判定検出器が使用されるために可能であり、その出力は、RLLデコーダが処理し得る確定ビットのストリームである。
【0036】
図7A〜図7Bは、例示的な実施例に従う、書込セクション700および読取セクション750のための、ソフトウェアにおいて実現される軟判定チャネルを示すブロック図である。この場合、(BCJR、SOVAまたは他のタイプであり得る)軟判定検出器が使用され、その出力は確定ビットではなく確率である。典型的にはターボデコーダまたは低密度パリティチェック(LDPC)デコーダである誤り制御ブロックがこれらの確率で動作して、確定出力ビットを生成する。したがって、RLLデコーダは検出器の出力で動作するのではなく、その代わりに誤り制御ブロックの出力で動作する。その結果、RLL符号化および復号化は、示されるように誤り訂正機構の「内側」にある。
【0037】
以下の段落に記載する理由のために、記載される実施例は先行技術と比較して効率的である。長さNのユーザデータブロックはいずれも2Nの可能な値を有し、これらが長さkの符号語上にマッピングされるようにするために、符号語は少なくともその多くの異なる値を有するべきである。各符号語長N+1ごとにおよびkの各値ごとに、(1)kよりも大きな長さのすべて0のシーケンスを含まない符号語の数、および(2)長さの合計がkを超えないすべて0のシーケンスで始まり、終了する符号語の数を計算することが可能である。このような符号語は、k制約に違反することなく自由に連結され得る。符号語が少なくとも2Nの値を有するkの最小値は、その符号語長にとっての最適なkの値である。kの値が最適値に近い場合に、RLL符号は効率的であると考えられる。
【0038】
記載される実施例に従って構築されるRLL符号はその意味で効率的である。表Iは、符号化され得るユーザビットの最大数、すなわちNについて、記載される実施例によって達成されるkの値を最適なkの値と比較する。達成される値は、符号長が増大するにつれて最適値からゆっくりと逸脱することがわかる。
【0039】
【表1】
【0040】
さらに、符号語の中に生じ得るk個の0のランが上述のように2つの符号語の結合部にしかないので、すべての他の位置におけるkビットの違反列を排除することによって、符号語のストリームは「ほぼ」k−1になる。したがって、これらの符号の平均性能は最適にいっそう近づく。
【0041】
いくつかの例示的な局面および実施例を上述してきたが、当業者はそれらの特定の修正、入替え、追加および下位の組合せを認識するであろう。したがって、以下の添付の特許請求の範囲および今後導入される特許請求の範囲は真の精神および範囲内の修正、入替え、追加および下位の組合せをすべて含むように解釈されることが意図される。
【図面の簡単な説明】
【0042】
【図1】例示的な実施例に従う、媒体に書込まれるべきデータの符号語を符号化するための方法を示すフローチャート図である。
【図2A】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図2B】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図2C】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図2D】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図3A】例示的な実施例に従う外部の違反列を示す。
【図3B】例示的な実施例に従う内部の違反列を示す。
【図4】例示的な実施例に従う、媒体から読取られるデータの符号語を復号化するための方法を示すフローチャート図である。
【図5A】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図5B】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図5C】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図5D】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図6A】例示的な実施例に従う、書込セクションのための、ハードウェアにおいて実現される判定チャネルを示すブロック図である。
【図6B】例示的な実施例に従う、読取セクションのための、ハードウェアにおいて実現される判定チャネルを示すブロック図である。
【図7A】例示的な実施例に従う、書込セクションのための、ソフトウェアにおいて実現される軟判定チャネルを示すブロック図である。
【図7B】例示的な実施例に従う、読取セクションのための、ソフトウェアにおいて実現される軟判定チャネルを示すブロック図である。
【符号の説明】
【0043】
18 第1の違反列
22 第1のインジケータ
24 第2の違反列
29 符号語
28 第2のインジケータ
【技術分野】
【0001】
技術分野
この発明は概してデータの符号化および復号化に関する。
【背景技術】
【0002】
背景
磁気記憶チャネルでは、タイミング回復システムの頻繁な更新を保証するためにデータストリームの中の連続する0の数を制限することが望ましい。これは、ランレングス制限と呼ばれ、たとえばデータを「N」ビットのブロックに分割し、次いで、N+1ビットのブロックも連結されたブロックの対も所望の数「k」以上の連続する0を持たないように、選択されたN+1ビットのブロック上に各ブロックをマッピングすることによって達成され得る。典型的な符号には、8ビットの各ブロックを、9ビット(「8/9符号」)および「16/17」、「24/25」、「32/33」などのランレングス制限(run-length-limited)(「RLL」)ブロックと置換える符号が含まれる。割合N/(N+1)は、符号の「比率」と呼ばれる。もちろん、コード化率が異なるRLLスキームも存在する。
【発明の開示】
【発明が解決しようとする課題】
【0003】
多くの先行技術の方法の不利な点は、先行技術の方法がルックアップテーブルによって定義され、そのためコストおよび電力消費とともに符号化および復号化の複雑さが符号長に伴って指数関数的に増大することである。別の不利な点は、大半の先行技術の方法がその場その場での処理であり、各比率ごとに符号を開発するために異なるアプローチが必要であることである。先行技術の方法の中には、順次論理を使用して効率的に符号化および復号化でき、したがって複雑さの問題に部分的に対処しているものもある。しかしながら、これらの先行技術の方法は所与の比率に適合させるために相当な創意工夫が必要であることが多く、これらの先行技術の方法を使用して構築され得る符号がない比率が存在する。これは問題である。なぜなら、記録技術が(リード−ソロモン符号などの)バイト指向の誤り訂正から離れて(ターボおよび低密度パリティチェック(low density parity check)(「LDPC」)符号などの)軟復号化方法に移ると、さまざまな比率を有するRLL符号が必要になるためである。さらに、長い符号を構築するためのいくつかの先行技術の方法が考案されており、これは、符号化されていないブロックを、より短い、RLL符号化された語からのブロックで挟むことを伴う。これらの技術は、ある意味では一般的であるが、最適状態に大幅に及ばないkの値を生じさせることが多い。
【0004】
上述を鑑みて、効率的なエンコーダおよびデコーダを利用し、kの値が最適に近い符号を生成し、任意の所望の符号率に容易に適合する、RLL符号を構築するための一般的な方法が当該技術分野において必要である。
【課題を解決するための手段】
【0005】
概要
範囲を限定するのではなく例示的および例証的であるように意図されるシステム、機器および方法に関連して、以下の実施例およびその局面を記載し、示す。さまざまな実施例において、上述の問題を1つ以上低減または解消した。
【0006】
記載される実施例は、データのランレングス制限(RLL)コード化に向けられる方法
、機器およびシステムを提供する。一実現例では、kを超えない0のランレングスを有する連結可能なRLL符号が任意の比率N/(N+1)について構築され、ここでN≦2k-2+k-1である。符号率が増加すると、kの値は多くの他の符号の値よりもゆっくりと最小値から離れる。さらに、kビットのランレングスの発生は、2つの符号語の接合部でしか発生しない。このため、符号は大部分はk−1である。この特性によって、符号はLDPCチャネルなどのパリティビット挿入アプリケーションに理想的なものになる。一実現例では、この方法は、表の中の違反シーケンスのビットアドレスを符号語の初めに配置し、表項目が配置される位置を占めているユーザデータが違反シーケンスの位置に移動される。これは、繰返し行なわれ、違反シーケンスがアドレステーブル自体の内部にある場合に備える方法で行なわれる。
【発明を実施するための最良の形態】
【0007】
上述の局面および実施例に加えて、図面を参照することによっておよび以下の説明を検討することによって、さらなる局面および実施例が明らかになる。
【0008】
例示的な実施例を図面の参照図に示す。本明細書に開示される実施例および図は限定的ではなく例証的であると考えられることが意図される。
【0009】
詳細な説明
範囲を限定するのではなく例証的であるように意図されるシステム、機器および方法に関連して、以下の実施例およびその局面を記載し、示す。
【0010】
図1は、例示的な実施例に従う、媒体に書込まれるべきデータの符号語を符号化するための方法100を示すフローチャート図である。方法100は媒体装置のコントローラによって実現されることができ、このコントローラはコード化制約(k)に違反する0の列について符号語をスキャンし、コード化制約を満たすインジケータと違反シーケンスを置換える。この方法は、各符号語の初めに1ビットを先頭に付加することを含む。符号語の中に長さkの違反する0の列がなければ、符号語に対してさらなる修正が行なわれることはない。コントローラが符号語の中に長さkの違反する0の列を発見すると、コントローラは先頭に付加されたビットを0に変更し、1(保護ビット)、違反のアドレスを示すk−2ビットに続いて、1(終了フラグ)を挿入する。また、コントローラは、違反する0の列を、以前は語の最初のkビットの中にあったデータと置換える。次いで、コントローラは繰返し、第1の工程における先頭に付加されたビットと同様の態様で第1の置換の際に最後の1を処理する。
【0011】
違反列(violator)のアドレスがアドレステーブルポインタの値に等しい場合には、移動されるビットはなく、違反列のアドレスがアドレステーブルポインタ未満であるがアドレステーブルポインタ+kよりも大きい場合には、アドレステーブルポインタから最も左の違反列のビットまでであるが最も左の違反列のビットを含まないビットのみが移動されるという点で、上述の置換オペレーション中に例外が生じ得る。この例外は、後の段落に記載する「内部の」違反列に対処する。
【0012】
最初に、コントローラは、Nビットを受取り(102)、1ビットを先頭に付加することによって初期の符号語を構築し(104)、アドレステーブルポインタ(address table pointer)(「A.T.ポインタ」)を最初のデータビットアドレスに等しく設定する(106)。言い換えると、スキャンビットアドレスが最初のデータビットアドレスに等しく設定される。次に、コントローラは、符号語をスキャンし(108)、k制約に違反していたかどうかを判断する(110)。違反していなければ、コントローラは、符号語のブロックの最後に到達したかどうかを判断する(112)。到達していれば、コントローラは、ブロックを送り(113)、次のNビットを受取る(102)。そうでなければ
、コントローラはスキャンビットアドレスを次のデータビットアドレスに等しく設定する(114)。
【0013】
k制約に違反している場合には(110)、コントローラは、スキャンビットアドレスを記録し(116)、スキャンビットアドレスがアドレステーブルポインタに等しいかどうかを判断する(120)。コントローラは、生じた違反列のタイプ、すなわち外部の違反列または内部の違反列に起因して、代替的な処理が必要であるかどうか確かめるためにオペレーション120において判断を行なう。より詳細には、オペレーション120は、内部の違反列が特に発生したことに対して代替的な処理が必要であるかどうかを判断する。2つのタイプの違反列については後の段落で詳細に説明する。
【0014】
スキャンビットアドレスがアドレステーブルポインタに等しい場合(120)、コントローラは、インジケータを構築し(122)、アドレステーブルポインタにおいてインジケータを挿入し(124)、前の終了フラグをクリアし(126)、アドレステーブルポインタをkだけインクリメントする(128)。次に、コントローラはオペレーション112を実行する。
【0015】
スキャンビットアドレスがアドレステーブルポインタに等しくない場合には(120)、コントローラは、スキャンビットアドレスがアドレステーブルポインタ未満でありかつアドレステーブルポインタ−kよりも大きいかどうかを判断する(130)。そうでなければ、コントローラは、違反列シーケンスの最初のkビットを、アドレステーブルポインタから開始する最初のkビットと置換える(132)。次に、コントローラは、以前に記載したようにオペレーション122〜128を実行する。
【0016】
オペレーション130がイエスである場合、コントローラは、アドレステーブルポインタからスキャンビットアドレスまでであるがスキャンビットアドレスを含まないデータビットをインジケータの位置(アドレステーブルポインタ−k)の後ろに移動させる(134)。次に、コントローラはオペレーション122〜128を実行する。また、オペレーション130は、内部の違反列の発生に起因して代替的な処理が必要かどうかを判断する。
【0017】
図1のこの符号化方法100はkを超えないランレングスを提供する。なぜなら、生じ得るkビットのシーケンスが、違反列を排除するために後続のブロックを変形したときに1つのブロックの最後のk−1ビットおよび後続のブロックの先頭に付加されたビットのシーケンスになるためである。保護ビットは、さらなる違反を引起し得るインジケータが確実にないようにし、オペレーション120(スキャンビットアドレス=アドレステーブルポインタであるため、移動されるビットがない)の例外は確実に、アドレステーブルから移動する必要があるデータビットが違反列の数または長さを増やし得ないようにする。また、違反列のアドレスはさらなる違反を引起し得ない。なぜなら、たとえアドレスがすべて0であったとしても、常に1である保護ビットの対または保護ビットおよび値が1である終了フラグのいずれかの中に含められるためである。さらに、データパターンおよびkビットの違反列を含むビットの組合せはいずれも、その違反列が外部の違反列であろうと内部の違反列であろうと、同一の数のビットと置換えられる。このため、初期のデータ語の中の違反列の数から独立して、十分なスペースが符号語の中でインジケータのために維持される。
【0018】
一実現例では、N>2k-2であれば、オフセットビットアドレスが利用される。オフセットビットアドレスは、違反列が残りのN−2k-2ビットの中に存在し得ないので、符号語の最初の2k-2ビットのみをアドレス指定する。たとえば、N=21およびk=6であれば、最後の5ビットは、オフセットビットアドレスによってアドレス指定されることは
ない。なぜなら、k(6)個の0の違反列がそれらの最後の5ビットでは生じ得ないためである。N>2k-2であるとき、インジケータはオフセットビットアドレスを指し示すアドレスフィールドを伴って構築される。代替的に言えば、オペレーション116において記録されるスキャンビットアドレスは、インジケータに配置される前にN−2k-2だけ減らされる。
【0019】
最大長の符号が構築されると、すなわち、N=2k-2+k−1であれば、より短い符号、すなわち、任意のより小さなNの値を有する符号を生成するために各ユーザデータブロックの右端からビットを削除できることを理解すべきである。このため、方法100は、基本的には修正なしですべての比率N/(N+1)について符号を生成する。
【0020】
図2A〜図2Dは、例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。この例では、符号ラン比率は21/22であり、k(RLL制約)は6に設定された。20ビットのデータ10が受取られ、各ビットは対応するビットアドレス12を有する(図2A)。次いで、値が1である追加のビット14が、受取られたビットの先頭に付加されて、初期の符号語29を形成する。符号語29がk個の連続した0のいずれのシーケンス(違反列)も含まなければ、符号語29は変更のないまま送られる。各ビットは対応するビットアドレスを有する。さらに、ビットアドレス♯5〜20は対応するオフセットビットアドレス16を有する。図2A〜図2Dの符号化の例では、N>2k-2であるため、オフセットビットアドレスが利用される。先頭に付加されたビット14に直接に隣接するビットのビットアドレスを最初に指し示すアドレステーブルポインタ17が作成される。図2Bの例では、アドレステーブルポインタ17は最初にオフセットビットアドレス♯15を指し示す。
【0021】
符号語29は次いで、オフセットビットアドレス♯15から開始するkビットのスライドウィンドウを使用して左から右にスキャンされる。違反列18がオフセット検出されると、違反列の最初のビットアドレスのビットアドレスが記録される。図2Bの例では、違反列18の最初のビットアドレスはビットアドレス♯8である。なぜなら、k(6)個の0のシーケンスがそこで始まるためである。第1の違反列が検出されると、先頭に付加されたビット14は0に変更される。次いで、kビットの違反列18は、アドレステーブルポインタ17が指し示しているオフセットビットアドレスから開始するkビットの符号語29と置換えられる。図2B〜図2Cを参照して、オフセットビットアドレス♯15で始まるシーケンス「0 1 0 0 1 1」が違反列18の位置に移動され、その移送されたデータはインジケータデータ20と称される。
【0022】
次に、kビットのインジケータシーケンス22が構築され、アドレステーブルポインタが指し示すオフセットビットアドレスから開始する符号語29に配置される(図2B)。一実現例では、インジケータは、値が1である保護フラグ、違反列の最初のオフセットビットアドレスを識別する、長さがk−2のアドレスフィールド、および初期値が1である終了フラグで始まる。さらなる違反列が検出されると、終了フラグは0に変更される。図2Cを参照して、第1のインジケータ22は、オフセットビットアドレス♯15における保護フラグと、オフセットビットアドレス♯14〜11におけるアドレスフィールドと、オフセットビットアドレス♯10における終了フラグとを含む。第1のインジケータ22のアドレスフィールドはシーケンス「1 0 0 0」を含み、これはオフセットビットアドレス♯8を指す。
【0023】
アドレステーブルポインタ16は、図2Bから図2Cまでkだけ進められ、図2Cにおいてオフセットビットアドレス♯9を今では指し示している。図2Cにおいても、符号語29はさらにスキャンされ、記録されるオフセットビットアドレス♯6によって最初のビットがアドレス指定される第2の違反列24が検出される。図2Dを参照して、第1のイ
ンジケータ22の終了フラグはオフセットビットアドレス♯10において1から0に変更され、第2の違反列24のビットは、図2Cにおいてアドレステーブルポインタが指し示すオフセットビットアドレスから開始するkビットと置換えられる。詳細には、オフセットビットアドレス♯9(図2C参照)から開始するkビット(「1 01 0 0 1」)が、第2の違反列を占めていたビット、すなわちビットアドレス♯1〜6に配置され、ビットアドレス♯5〜6はオフセットビットアドレス♯0〜1に対応する。それらの置換えられたビットはインジケータデータ26と称される。
【0024】
図2Dを参照して、第2のインジケータ28が次いで、値が1であるオフセットビットアドレス♯9における保護フラグ、オフセットビットアドレス♯5〜8におけるアドレスフィールド、および値が1である終了フラグを伴って構築される。アドレスフィールドは、オフセットビットアドレス♯5〜8において、列「0 0 0 1」を含み、これはオフセットビットアドレス♯1を指す。第2の違反列24がオフセットビットアドレス17によってアドレス指定されないビットに及ぶので、さらなる違反列についての符号語29のスキャンは中止される。図2A〜図2Dの符号化の例でオフセットビットアドレス17が利用されなければ、符号語29の最後に到達するまで違反列についての符号語29のスキャンは継続するであろう。
【0025】
記載される実施例は、2つのタイプの違反列、すなわち図3A〜図3Bに示す外部の違反列および内部の違反列をそれぞれに考慮に入れる。外部の違反列とは、違反列を指すインジケータが配置されるべきである位置内で始まらない違反列である。外部の違反列の一例は外部の違反列30である。外部の違反列のさらなる例は、図2B〜図2Cに示す違反列18および24である。以前に記載したものと同様に、アドレステーブルポインタ(「ATP」)35が指し示すビットアドレスから開始するビット34は、外部の違反列30によって占められていたビットアドレス36に移動される。次に、インジケータ32が構築され、アドレステーブルポインタ35が指し示すビットアドレスから開始するビットアドレスに配置される。
【0026】
図3Bを参照して、内部の違反列とは、違反列を指すインジケータが配置されるべき位置内で始まる違反列である。たとえば、内部の違反列38は、アドレステーブルポインタ40から数ビットアドレスだけ離れている。たとえば、k=6であれば、違反列38についてのインジケータの長さは6ビットであり、内部の違反列38のビットアドレスにおいて書込まれるであろう。この場合、内部の違反列38によって占められるビットの一部を埋めるために、先頭の0でないデータ42のみが移動される。
【0027】
図4は、例示的な実施例に従う、媒体から読取られるデータの符号語を復号化するための方法400を示すフローチャート図である。示す実現例では、方法400は、符号語の先頭に付加されたビットを調べる媒体装置のコントローラを伴う。先頭に付加されたビットの値が1である場合、先頭に付加されたビットは廃棄され、残りのビットが変更のないまま送出される。そうでなければ、符号語の復号化は、アドレステーブルにおける最後のインジケータの初期値を有するアドレステーブルポインタを作成することによって行なわれ、これは1に等しい終了フラグを有するそのエントリ(entry)である。次に、コントローラは、アドレステーブルポインタが指し示すインジケータからアドレスフィールドを抽出し、必要であればそれをN−2k-2だけ増やし、その結果、違反列がアドレス指定される。次に、コントローラは、アドレス指定された違反列におけるkビットとインジケータを置換える。次に、コントローラは、kビットのアドレス指定された違反列を0と置換え、アドレステーブルポインタをkだけ減らし、第1のインジケータが置換えられるまで抽出オペレーション、2つの置換オペレーションおよび減少オペレーションを繰返す。
【0028】
アドレステーブルポインタの値が違反列のアドレスに等しい場合には、移動されるビッ
トはなく、違反列のアドレスがアドレステーブルポインタ未満であるがアドレステーブルポインタ+kよりも大きい場合には、最も右の違反列のビットからインジケータの最後までであるがインジケータの最後を含まないビットのみが移動されるという点で、第1の置換オペレーションについて時には例外が生じ得る。
【0029】
方法400をより詳細に説明するために、図4を参照する。最初に、コントローラは、次の符号語を受取り(402)、先頭に付加されたビットが1に等しいかどうかを判断する(404)。等しい場合には、コントローラは先頭に付加されたビットを廃棄し、符号語の残りのNビットを送出する(406)。そうでなければ、コントローラは、アドレステーブルポインタをアドレステーブルにおける最後のインジケータの初期値に等しく設定し(410)、アドレステーブルポインタが指し示すインジケータからアドレスフィールドを抽出する(412)。次に、コントローラは、抽出されたアドレスがアドレステーブルポインタに等しいかどうかを判断する(414)。等しい場合には、コントローラは、抽出されたアドレスから開始するkビットをk個の数の0と置換え(416)、アドレステーブルポインタをkだけ減らす(418)。次に、コントローラは第1のインジケータが置換えられたかどうかを判断する。置換えられていた場合には、コントローラは次の符号語を受取る(402)。
【0030】
抽出されたアドレスがアドレステーブルポインタに等しくない場合(414)、コントローラは次いで、抽出されたアドレスがアドレステーブルポインタ未満であるがアドレステーブルポインタ−kよりも大きいかどうかを判断する(422)。そうであれば、コントローラは、最も右の違反列からインジケータの最後までのインジケータビットを置換える(424)。そうでなければ、コントローラは、抽出されたアドレスから開始するkビットとインジケータを置換える(426)。
【0031】
チャネルにおけるビット誤りのために、受取られた符号語は不完全な形式である場合がある。言い換えると、受取られた符号語は、以前に記載したように適切に符号化された符号語の構造に適合できない。1つの検出可能な不完全な形式は、0に等しい任意の保護ビットである。他の不完全な形式は、インジケータ自体のアドレスよりも小さなアドレスまたは任意の前のインジケータのアドレスよりも小さなアドレスを有するインジケータの発生である。デコーダはこれらの不完全な形式を任意に検出し、復号できない符号語を報告し得る。
【0032】
図5A〜図5Dは、例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。この例では、符号率N/(N+1)は21/22であり、kは任意に6に設定された。図5Aの受取られた符号語29は、図2A〜図2Dの符号化の例において構築された符号語と同じであり、先頭に付加されたビット14と、第1のインジケータ22および第2のインジケータ28と、インジケータデータ26とを含む。先頭に付加されたビット14の値は0であり、したがって符号語29の復号化が必要である。アドレステーブルポインタ16は、最後に符号化されたインジケータの最初のビットアドレスに設定される。詳細には、アドレステーブルポインタ16は、第2のインジケータ28のビットアドレス♯14におけるポイントに設定される。最後に符号化された/第2のインジケータ28の位置は、終了フラグの値に基づいて特定される。第2のインジケータ28はビットアドレス♯9に終了フラグを有し、その値は1であり、これは第2のインジケータが構築された後にさらなる違反列が検出されなかったことを意味する。
【0033】
アドレスが第2のインジケータ28から抽出され、N>2k-2であるので、抽出されたアドレスはN−2k-2だけ増やされる。抽出されたアドレスはビットアドレス♯1を指し示し、ビットアドレス♯1は次に、インジケータデータ26の最初のビットのビットアドレスであるビットアドレス♯6に増やされる。図5Bを参照して、インジケータデータ2
6によって占められるビットが0に戻され、インジケータデータ26は、アドレステーブルポインタ16が指し示すビットアドレスから開始するビットに移動される。
【0034】
図5Cを参照して、アドレステーブルポインタ16は、kだけ減らされ、その結果、第1のインジケータ22のビットアドレス♯20を指し示す。アドレスが(インジケータデータ22によって置換えられる前の図5Bに示す)第1のインジケータ22のアドレスフィールドから抽出され、そのアドレスは、ビットアドレス♯13に増やされるビットアドレス♯8を指し示す。したがって、ビットアドレス♯13から開始するkビットは0に戻され、図5Bに示すビットアドレス♯13〜8からのインジケータデータ20は、図5Cに示すビットアドレス♯20〜15に配置される。次に、図5Dにおいて、先頭に付加されたビット14が削除され、これは結果的に最初に図2Aに示した元の21ビットのデータ10になる。
【0035】
図6A〜図6Bは、例示的な実施例に従う、書込セクション600および読取セクション650のための、ハードウェアにおいて実現される判定チャネルを示すブロック図である。図6A〜図6Bは、RLL符号化および復号化が誤り訂正機構の「外側」にあることを示す。言い換えると、書込の場合には、データはRLL符号化される前にECC符号化される。そして、読取の場合には、誤り訂正が行なわれる前にRLL符号化が除去される。これは、典型的にはビタビアルゴリズムを利用する硬判定検出器が使用されるために可能であり、その出力は、RLLデコーダが処理し得る確定ビットのストリームである。
【0036】
図7A〜図7Bは、例示的な実施例に従う、書込セクション700および読取セクション750のための、ソフトウェアにおいて実現される軟判定チャネルを示すブロック図である。この場合、(BCJR、SOVAまたは他のタイプであり得る)軟判定検出器が使用され、その出力は確定ビットではなく確率である。典型的にはターボデコーダまたは低密度パリティチェック(LDPC)デコーダである誤り制御ブロックがこれらの確率で動作して、確定出力ビットを生成する。したがって、RLLデコーダは検出器の出力で動作するのではなく、その代わりに誤り制御ブロックの出力で動作する。その結果、RLL符号化および復号化は、示されるように誤り訂正機構の「内側」にある。
【0037】
以下の段落に記載する理由のために、記載される実施例は先行技術と比較して効率的である。長さNのユーザデータブロックはいずれも2Nの可能な値を有し、これらが長さkの符号語上にマッピングされるようにするために、符号語は少なくともその多くの異なる値を有するべきである。各符号語長N+1ごとにおよびkの各値ごとに、(1)kよりも大きな長さのすべて0のシーケンスを含まない符号語の数、および(2)長さの合計がkを超えないすべて0のシーケンスで始まり、終了する符号語の数を計算することが可能である。このような符号語は、k制約に違反することなく自由に連結され得る。符号語が少なくとも2Nの値を有するkの最小値は、その符号語長にとっての最適なkの値である。kの値が最適値に近い場合に、RLL符号は効率的であると考えられる。
【0038】
記載される実施例に従って構築されるRLL符号はその意味で効率的である。表Iは、符号化され得るユーザビットの最大数、すなわちNについて、記載される実施例によって達成されるkの値を最適なkの値と比較する。達成される値は、符号長が増大するにつれて最適値からゆっくりと逸脱することがわかる。
【0039】
【表1】
【0040】
さらに、符号語の中に生じ得るk個の0のランが上述のように2つの符号語の結合部にしかないので、すべての他の位置におけるkビットの違反列を排除することによって、符号語のストリームは「ほぼ」k−1になる。したがって、これらの符号の平均性能は最適にいっそう近づく。
【0041】
いくつかの例示的な局面および実施例を上述してきたが、当業者はそれらの特定の修正、入替え、追加および下位の組合せを認識するであろう。したがって、以下の添付の特許請求の範囲および今後導入される特許請求の範囲は真の精神および範囲内の修正、入替え、追加および下位の組合せをすべて含むように解釈されることが意図される。
【図面の簡単な説明】
【0042】
【図1】例示的な実施例に従う、媒体に書込まれるべきデータの符号語を符号化するための方法を示すフローチャート図である。
【図2A】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図2B】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図2C】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図2D】例示的な実施例に従う、符号化されているデータの一例をシーケンシャルに示す。
【図3A】例示的な実施例に従う外部の違反列を示す。
【図3B】例示的な実施例に従う内部の違反列を示す。
【図4】例示的な実施例に従う、媒体から読取られるデータの符号語を復号化するための方法を示すフローチャート図である。
【図5A】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図5B】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図5C】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図5D】例示的な実施例に従う、符号語の例示的な復号化をシーケンシャルに示す。
【図6A】例示的な実施例に従う、書込セクションのための、ハードウェアにおいて実現される判定チャネルを示すブロック図である。
【図6B】例示的な実施例に従う、読取セクションのための、ハードウェアにおいて実現される判定チャネルを示すブロック図である。
【図7A】例示的な実施例に従う、書込セクションのための、ソフトウェアにおいて実現される軟判定チャネルを示すブロック図である。
【図7B】例示的な実施例に従う、読取セクションのための、ソフトウェアにおいて実現される軟判定チャネルを示すブロック図である。
【符号の説明】
【0043】
18 第1の違反列
22 第1のインジケータ
24 第2の違反列
29 符号語
28 第2のインジケータ
【特許請求の範囲】
【請求項1】
データの符号語を符号化および復号化するように動作可能な媒体装置において、媒体に書込まれるべきデータの符号語を符号化するための方法であって、
Nビットのデータを含む語を受取ることと、
前記語において違反シーケンスの位置を特定することと、
違反列を除去することと、
違反シーケンスのアドレスを特徴付けるインジケータを前記語に挿入することとを備える、方法。
【請求項2】
前記違反列は、予め定められた値を有するビットの連続したシーケンスである、請求項1に記載の方法。
【請求項3】
前記違反列は、連続した0のシーケンスである、請求項2に記載の方法。
【請求項4】
追加のビットを前記語の先頭に付加することをさらに備える、請求項1に記載の方法。
【請求項5】
先頭に付加されたビットの値は、前記違反列の位置を特定すると変更される、請求項4に記載の方法。
【請求項6】
前記違反シーケンスのビットは、以前は挿入されたインジケータのビットアドレスにあったビットと置換えられる、請求項1に記載の方法。
【請求項7】
前記違反シーケンスの位置を特定することは、
追加のビットを前記語の先頭に付加することを含み、各ビットは対応するビットアドレスを有し、前記違反シーケンスの位置を特定することはさらに、
先頭に付加された追加のビットに隣接するビットアドレスにアドレステーブルポインタを向けることと、
前記違反シーケンスについて前記語をインクリメンタルにスキャンすることとを含み、前記違反シーケンスは、ランレングス制限コード化制約に違反するビットの連続したシーケンスを含み、前記違反シーケンスの位置を特定することはさらに、
前記違反シーケンスの位置を特定することを含む、請求項6に記載の方法。
【請求項8】
前記インジケータを挿入することは、
kビットの前記違反列を、前記ビットアドレスから開始するkビットの前記符号語と置換えることと、
前記インジケータを構築することと、
前記アドレステーブルポインタから開始する前記インジケータを挿入することと、
新しいビットアドレスを指し示すために前記アドレステーブルポインタをkだけ進めることとを含む、請求項7に記載の方法。
【請求項9】
前記インジケータは、保護ビットと、アドレスフィールドと、終了フラグとを含む、請求項8に記載の方法。
【請求項10】
アドレスフィールドの長さはk−2ビットである、請求項8に記載の方法。
【請求項11】
アドレスフィールドは、前記違反シーケンスの最初のビットアドレスを識別する、請求項8に記載の方法。
【請求項12】
前記保護ビットの値は1であり、前記終了フラグの値は最初は0であり、前記終了フラ
グは、追加の違反列が検出されると1に変更される、請求項9に記載の方法。
【請求項13】
前記違反シーケンスの最初のビットのビットアドレスが対応するアドレステーブルポインタに等しい場合には、前記違反列のビットは前記インジケータと置換えられる、請求項8に記載の方法。
【請求項14】
a) 前記違反シーケンスの最初のビットのビットアドレスが対応するアドレステーブルポインタに等しくない場合、および
b) 前記ビットアドレスが前記対応するアドレステーブルポインタ未満である場合、および
c) 前記ビットアドレスが前記対応するアドレステーブルポインタ−kよりも大きい場合、
前記アドレステーブルポインタから開始し、前記違反シーケンスの最初のビットのビットアドレスまでであるが前記違反シーケンスの最初のビットのビットアドレスを含まないビットと前記違反シーケンスのビットを置換え、前記違反シーケンスの置換えられたビットは、アドレステーブルポインタ+kに隣接する1つのビットアドレスから開始して置換えられる、請求項8に記載の方法。
【請求項15】
前記アドレスはビットアドレスであり、N>2k-2の場合、前記違反列のビットアドレスはN−2k-2だけ減らされる、請求項8に記載の方法。
【請求項16】
データの符号語を符号化および復号化するように動作可能な媒体装置において、媒体に書込まれるべきデータの符号語を復号化するための方法であって、
Nビットのデータを含む語を受取ることと、
前記語においてインジケータシーケンスを識別することとを備え、前記インジケータシーケンスは違反シーケンスのアドレスを含み、前記方法はさらに、
インジケータから前記違反シーケンスのアドレスを抽出することと、
前記アドレスにおいて前記違反シーケンスを挿入することとを備える、方法。
【請求項17】
前記違反シーケンスが挿入される前に、前記インジケータを前記アドレスにおけるビットと置換えることをさらに備える、請求項16に記載の方法。
【請求項18】
前記方法は、
前記アドレスが抽出される前に、前記インジケータシーケンスの最初のビットアドレスを指し示すようにアドレステーブルポインタを設定することをさらに備え、
前記アドレスによって指定されるビットアドレスから開始するkビットの前記語は、前記インジケータシーケンスを置換えるために使用され、
kビットの前記違反シーケンスは前記アドレスにおいて前記語に挿入される、請求項17に記載の方法。
【請求項19】
前記違反シーケンスはk個の0である、請求項18に記載の方法。
【請求項20】
前記語は先頭に付加されたビットをさらに含み、前記先頭に付加されたビットの値は、前記語が復号化を必要とするかどうかを判断するために利用される、請求項18に記載の方法。
【請求項21】
前記語が復号化を必要とするかどうかを判断することは、
前記先頭に付加されたビットを調べることと、
前記先頭に付加されたビットが0に等しい場合に前記符号語を復号化することとを含む、請求項20に記載の方法。
【請求項22】
前記アドレスが前記アドレステーブルポインタと同じビットアドレスを指し示す場合に、前記インジケータシーケンスのビットは前記違反シーケンスと置換えられる、請求項18に記載の方法。
【請求項23】
a) 前記アドレスが対応するアドレステーブルポインタに等しくない場合、および
b) 前記ビットアドレスが前記対応するアドレステーブルポインタ未満である場合、および
c) 前記ビットアドレスが前記対応するアドレステーブルポインタ−kよりも大きい場合、
最も右の違反シーケンスから前記インジケータシーケンスの最後までの違反列シーケンスのビットと前記インジケータシーケンスのビットを置換える、請求項18に記載の方法。
【請求項24】
前記インジケータシーケンスは、保護ビットと、終了フラグとをさらに含む、請求項16に記載の方法。
【請求項25】
前記インジケータシーケンスは、最後に符号化されたインジケータシーケンスであり、前記最後に符号化されたインジケータシーケンスの位置は、前記最後に符号化されたインジケータシーケンスにおける終了フラグの値によって前記語において特定される、請求項24に記載の方法。
【請求項26】
前記最後に符号化されたインジケータシーケンスにおける前記終了フラグの値は1である、請求項25に記載の方法。
【請求項27】
N>2k-2の場合、前記アドレスはN−2k-2だけ増やされる、請求項18に記載の方法。
【請求項1】
データの符号語を符号化および復号化するように動作可能な媒体装置において、媒体に書込まれるべきデータの符号語を符号化するための方法であって、
Nビットのデータを含む語を受取ることと、
前記語において違反シーケンスの位置を特定することと、
違反列を除去することと、
違反シーケンスのアドレスを特徴付けるインジケータを前記語に挿入することとを備える、方法。
【請求項2】
前記違反列は、予め定められた値を有するビットの連続したシーケンスである、請求項1に記載の方法。
【請求項3】
前記違反列は、連続した0のシーケンスである、請求項2に記載の方法。
【請求項4】
追加のビットを前記語の先頭に付加することをさらに備える、請求項1に記載の方法。
【請求項5】
先頭に付加されたビットの値は、前記違反列の位置を特定すると変更される、請求項4に記載の方法。
【請求項6】
前記違反シーケンスのビットは、以前は挿入されたインジケータのビットアドレスにあったビットと置換えられる、請求項1に記載の方法。
【請求項7】
前記違反シーケンスの位置を特定することは、
追加のビットを前記語の先頭に付加することを含み、各ビットは対応するビットアドレスを有し、前記違反シーケンスの位置を特定することはさらに、
先頭に付加された追加のビットに隣接するビットアドレスにアドレステーブルポインタを向けることと、
前記違反シーケンスについて前記語をインクリメンタルにスキャンすることとを含み、前記違反シーケンスは、ランレングス制限コード化制約に違反するビットの連続したシーケンスを含み、前記違反シーケンスの位置を特定することはさらに、
前記違反シーケンスの位置を特定することを含む、請求項6に記載の方法。
【請求項8】
前記インジケータを挿入することは、
kビットの前記違反列を、前記ビットアドレスから開始するkビットの前記符号語と置換えることと、
前記インジケータを構築することと、
前記アドレステーブルポインタから開始する前記インジケータを挿入することと、
新しいビットアドレスを指し示すために前記アドレステーブルポインタをkだけ進めることとを含む、請求項7に記載の方法。
【請求項9】
前記インジケータは、保護ビットと、アドレスフィールドと、終了フラグとを含む、請求項8に記載の方法。
【請求項10】
アドレスフィールドの長さはk−2ビットである、請求項8に記載の方法。
【請求項11】
アドレスフィールドは、前記違反シーケンスの最初のビットアドレスを識別する、請求項8に記載の方法。
【請求項12】
前記保護ビットの値は1であり、前記終了フラグの値は最初は0であり、前記終了フラ
グは、追加の違反列が検出されると1に変更される、請求項9に記載の方法。
【請求項13】
前記違反シーケンスの最初のビットのビットアドレスが対応するアドレステーブルポインタに等しい場合には、前記違反列のビットは前記インジケータと置換えられる、請求項8に記載の方法。
【請求項14】
a) 前記違反シーケンスの最初のビットのビットアドレスが対応するアドレステーブルポインタに等しくない場合、および
b) 前記ビットアドレスが前記対応するアドレステーブルポインタ未満である場合、および
c) 前記ビットアドレスが前記対応するアドレステーブルポインタ−kよりも大きい場合、
前記アドレステーブルポインタから開始し、前記違反シーケンスの最初のビットのビットアドレスまでであるが前記違反シーケンスの最初のビットのビットアドレスを含まないビットと前記違反シーケンスのビットを置換え、前記違反シーケンスの置換えられたビットは、アドレステーブルポインタ+kに隣接する1つのビットアドレスから開始して置換えられる、請求項8に記載の方法。
【請求項15】
前記アドレスはビットアドレスであり、N>2k-2の場合、前記違反列のビットアドレスはN−2k-2だけ減らされる、請求項8に記載の方法。
【請求項16】
データの符号語を符号化および復号化するように動作可能な媒体装置において、媒体に書込まれるべきデータの符号語を復号化するための方法であって、
Nビットのデータを含む語を受取ることと、
前記語においてインジケータシーケンスを識別することとを備え、前記インジケータシーケンスは違反シーケンスのアドレスを含み、前記方法はさらに、
インジケータから前記違反シーケンスのアドレスを抽出することと、
前記アドレスにおいて前記違反シーケンスを挿入することとを備える、方法。
【請求項17】
前記違反シーケンスが挿入される前に、前記インジケータを前記アドレスにおけるビットと置換えることをさらに備える、請求項16に記載の方法。
【請求項18】
前記方法は、
前記アドレスが抽出される前に、前記インジケータシーケンスの最初のビットアドレスを指し示すようにアドレステーブルポインタを設定することをさらに備え、
前記アドレスによって指定されるビットアドレスから開始するkビットの前記語は、前記インジケータシーケンスを置換えるために使用され、
kビットの前記違反シーケンスは前記アドレスにおいて前記語に挿入される、請求項17に記載の方法。
【請求項19】
前記違反シーケンスはk個の0である、請求項18に記載の方法。
【請求項20】
前記語は先頭に付加されたビットをさらに含み、前記先頭に付加されたビットの値は、前記語が復号化を必要とするかどうかを判断するために利用される、請求項18に記載の方法。
【請求項21】
前記語が復号化を必要とするかどうかを判断することは、
前記先頭に付加されたビットを調べることと、
前記先頭に付加されたビットが0に等しい場合に前記符号語を復号化することとを含む、請求項20に記載の方法。
【請求項22】
前記アドレスが前記アドレステーブルポインタと同じビットアドレスを指し示す場合に、前記インジケータシーケンスのビットは前記違反シーケンスと置換えられる、請求項18に記載の方法。
【請求項23】
a) 前記アドレスが対応するアドレステーブルポインタに等しくない場合、および
b) 前記ビットアドレスが前記対応するアドレステーブルポインタ未満である場合、および
c) 前記ビットアドレスが前記対応するアドレステーブルポインタ−kよりも大きい場合、
最も右の違反シーケンスから前記インジケータシーケンスの最後までの違反列シーケンスのビットと前記インジケータシーケンスのビットを置換える、請求項18に記載の方法。
【請求項24】
前記インジケータシーケンスは、保護ビットと、終了フラグとをさらに含む、請求項16に記載の方法。
【請求項25】
前記インジケータシーケンスは、最後に符号化されたインジケータシーケンスであり、前記最後に符号化されたインジケータシーケンスの位置は、前記最後に符号化されたインジケータシーケンスにおける終了フラグの値によって前記語において特定される、請求項24に記載の方法。
【請求項26】
前記最後に符号化されたインジケータシーケンスにおける前記終了フラグの値は1である、請求項25に記載の方法。
【請求項27】
N>2k-2の場合、前記アドレスはN−2k-2だけ増やされる、請求項18に記載の方法。
【図1】
【図2A】
【図2B】
【図2C】
【図2D】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図5C】
【図5D】
【図6A】
【図6B】
【図7A】
【図7B】
【図2A】
【図2B】
【図2C】
【図2D】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図5C】
【図5D】
【図6A】
【図6B】
【図7A】
【図7B】
【公開番号】特開2008−204593(P2008−204593A)
【公開日】平成20年9月4日(2008.9.4)
【国際特許分類】
【外国語出願】
【出願番号】特願2007−339489(P2007−339489)
【出願日】平成19年12月28日(2007.12.28)
【出願人】(591179352)クウォンタム・コーポレイション (49)
【氏名又は名称原語表記】QUANTUM CORPORATION
【Fターム(参考)】
【公開日】平成20年9月4日(2008.9.4)
【国際特許分類】
【出願番号】特願2007−339489(P2007−339489)
【出願日】平成19年12月28日(2007.12.28)
【出願人】(591179352)クウォンタム・コーポレイション (49)
【氏名又は名称原語表記】QUANTUM CORPORATION
【Fターム(参考)】
[ Back to top ]