まず、図1を参照して、記録再生装置の符号器および復号器の概要と主要な特徴について説明する。図1は、実施例1に係る記録再生装置の構成を示す機能ブロック図である。
なお、以下では、ハードディスクに対して情報の記録再生をおこなう装置を例にして説明をおこなうが、光磁気ディスクなどに対して情報の記録再生をおこなう他の装置に対しても本発明を同様に適用することができる。
図1に示すように、本実施例1に係る記録再生装置10は、ハードディスクに対して情報の記録再生をおこなう装置であり、ハードディスクコントローラ(以下においては「HDC」という。)100、リードチャンネル(以下においては「RDC」という。)101、プリアンプ102を有する。
データを記録する場合、HDC100は、CRC(Cyclic Redundancy Check)符号器103、GS(Guided Scrambling)符号器104、HR−RLL(High Rate Run Length Limited)符号器105、ECC(Error Correcting Code)符号器106、P−RLL(Parity Run Length Limited)符号器107を介して符号化を行う。
CRC符号器103は、巡回符号を用いて誤り検出をおこなうために用いられる符号器である。GS符号器104は、入力された情報ビット列を複数のスクランブル列に変換し、それらのスクランブル列の中からDC成分が抑制されたスクランブル列を1つ決定して出力する。
図2は、GS符号器104がおこなう符号化処理を説明する図である。図2の例では、入力列20は520ビットであり、出力列21は523ビットとなる。まず、この符号化処理においては、GS符号器104は、入力列に対して8種類の3ビットの付加ビット(「000」、「001」、「010」、「011」、「100」、「101」、「110」、「111」)を挿入し(ステップS101)、スクランブル処理をおこなう(ステップS102)。
図3は、GS符号器104がおこなうスクランブル処理を説明する図である。ここでは、スクランブル列を生成するためのスクランブル多項式として、1+X4を用いることとする。
図3に示すように、GS符号器104は、入力列20の前に3ビットの付加ビット22と「0」ビット23とを付加する。また、GS符号器104は、入力列20の後には、4ビットの付加ビット24「0000」を付加する。
そして、GS符号器104は、この列を1+X4を表す「10001」で割り算し、商となるビット列を求める。その後、GS符号器104は、商のビット列の先頭から4ビット目のビットを除去し、スクランブル列25を得る。
このように、スクランブル多項式に1+X4を用いる場合、従来のGuided Scrambling方式では、4ビットの付加ビットが必要であったが、本方式では1ビット少ない3ビットの付加ビット22を用いればよい。
このように、付加ビットを3ビットとすることにより、符号化率を高くすることができ、また、スクランブル数を半分に減らすことができるという利点がある。また、この実施例では1ビットの「0」を付加してスクランブルを行ったが、qビットを付加してスクランブルを行ってもよい。この場合は、スクランブル数を1/2^qに減らせることができるという利点がある。
ここで、符号化率とは、情報ビット列のビット数と符号ビット列のビット数との比で定義されるものである。高符号化率とは、この比が1に近いことを表し、この比が1に近いほど符号器の性能がよいことを意味する。
その後、GS符号器104は、DC成分の抑制量を評価するため、実際の記録媒体に記録されるビット列と同様のビット列を、後に説明するポストプロセッサ108用のパリティを付加することにより生成する(ステップS103)。
図4は、ポストプロセッサ108用のパリティを付加するパリティ付加処理について説明する図であり、図5は、パリティ未処理ビットの対処について説明する図である。
図4に示すように、パリティ付加処理においては、所定のビット(図4の例では5ビット)ごとにポストプロセッサ108用パリティが付加される。ここで、パリティの値は、パリティ間の4ビットの和が偶数ならば0、奇数ならば1となる。
ただし、所定のビットごとにスクランブル列26の上位ビットからパリティを付加していくと、スクランブル列26の下位ビットにパリティの付加処理がなされないビット列が残る。
そこで、このパリティ付加処理では、パリティの付加処理がなされないパリティ未処理ビットを、つぎにパリティ付加処理をおこなうスクランブル列26の先頭に下位ビット22として付加する処理をおこなう。
図5には、パリティ未処理ビット29が示されている。このパリティ未処理ビット29は、前述したように、パリティが挿入されないスクランブル列26の余りのビットである。このパリティ未処理ビット29が、下位ビット22としてつぎに処理するスクランブル列26の先頭に付加される。
図2の説明に戻ると、GS符号器104は、ポストプロセッサ用パリティの付加処理の後、ポストプロセッサ用パリティが付加された8種類のスクランブル列に対してSDS(Sliding Digital Sum)計算をおこなう(ステップS104)。
図6は、SDS計算について説明する図である。図6に示すように、SDS計算においては、GS符号器104は、パリティ付スクランブル列30の「0」のビットを「−1」に変換する。
そして、GS符号器104は、ビット幅が5ビットのSDSウィンドウ31を用意し、ビットの変換処理をおこなったスクランブル列の最初の5ビットのデータをSDSウィンドウ31に入力する。
なお、ここではSDSウィンドウ31の幅を説明のために5ビットとしているが、実際は50ビットの幅のSDSウィンドウを用いる。このSDSウィンドウの幅には最適値があり、50ビットに設定することにより誤り率を効果的に改善することができる。
続いて、GS符号器104は、SDSウィンドウ31に入力された5ビットのビット列に対して、図41で説明したようにして、RDS値32aを算出し、RDS値32aのピーク値33aを求める。
その後、GS符号器104は、SDSウィンドウ31を1ビットずつシフトさせながら、同様の計算をおこない、RDS値32b,32cおよびピーク値33b,33cを求める。
続いて、GS符号器104は、SDSウィンドウ31をシフトさせながら算出したピーク値33a〜33cのうち、最大のピーク値33bをパリティ付スクランブル列30のピーク値34として選択する。
そして、GS符号器104は、このようにして得られた8種類のポストプロセッサ用のパリティ付スクランブル列に対するピーク値を比較し、ピーク値が最も小さいパリティ付スクランブル列を選択する(ステップS106)。
その後、GS符号器104は、選択されたパリティ付スクランブル列からパリティを削除し、DC成分が抑制されたスクランブル列である出力列21を出力する。ここで、パリティを削除するのは、後にポストプロセッサ108によりパリティが付加されるため、パリティが二重に付加されるのを防ぐためである。
このように、本方式では、GS符号器104が、ポストプロセッサ用のパリティを含めたスクランブル列に対してピーク値の算出をおこなう。そのため、実際のハードディスクに記録されるビット列と同じビット列に対してDC成分の抑制効果を評価することができる。
また、従来のGuided Scrambling方式では、ハードディスク装置の1セクタ(4096ビット)全体においてRDS値を算出し、評価する必要があったが、本方式では入力列20のみRDS値の算出および評価をおこなう。
また、従来のGuided Scrambling方式では、スクランブル列全体においてRDS値を計算し、ピーク値を算出するが、本方式では、SDSウィンドウ31の所定のビット幅で、所定のビットずつSDSウィンドウ31をシフトさせながらRDS値の計算をおこない、ピーク値を求める点が異なる。
図7は、本方式におけるDCフリー符号の周波数特性を示す図である。図7には、符号なしの場合、従来のDCフリー符号の場合、および、本方式によるDCフリー符号の場合の正規化周波数に対する信号スペクトルが示されている。
図7に示すように、従来のDCフリー符号では周波数の低域成分が抑制されるが、本方式のDCフリー符号では周波数の中域成分が抑制される。また、周波数の低域成分は、ベースライン補正(BLC,Base Line Correction)をおこなうことにより効果的に抑制されるので、本方式によるDCフリー符号とベースライン補正とを組み合わせることにより、周波数の中低域成分を抑制することができ、従来の方法に比べて誤り率をより改善することができる。
図1の説明に戻ると、HR−RLL符号器105は、nビットのビット列を、RLL拘束条件を満たす(n+1)ビットのビット列へ変換する高符号化率の符号器である。この場合、HR−RLL符号器105の符号化率は、n/(n+1)となる。このHR−RLL符号器105については後に詳しく説明する。
ECC符号器106は、誤り訂正をおこなうためのECCパリティを付加する符号器である。P−RLL符号器107は、ECC符号器106により付加されたECCパリティに対してRLL符号化をおこなう符号器である。
RDC101は、ポストプロセッサ108、記録補償器109、ドライバ110を介してプリアンプ102のドライバ111に記録データを送出する。
ポストプロセッサ108は、30ビットおきにパリティを付加するプロセッサである。具体的には、ポストプロセッサ108は、30ビットごとにEOR(ExclusiveOR)を算出し、その値が「0」である場合には「0」を、「1」である場合には「1」を付加する。
記録補償部109は、磁化反転が隣接する個所で反転間隔を広げる補償処理をおこなう。また、プリアンプ102は、ドライバ111によって記録ヘッドへライト電流を発生させる。
一方、データを再生する場合は、プリアンプ102は、再生ヘッドから入力したアナログ電圧をアンプ112で増幅し、RDC101に送出する。RDC101は、サーマルアスぺリティ検出部(TA検出部)113の検出処理の後、可変利得アンプ(VGA)114、ローパスフィルタ(LPF)115、ADコンバータ(ADC)116を介してデジタル信号を出力する。
また、RDC101は、FIRフィルタ(FIR)117によって波形等化を行った後、ビタビ復号器118でビタビ復号をおこなうとともに、ポストプロセッサ108により付加されたパリティのパリティチェックをおこない、信号をHDC100に出力する。
また、RDC101は、信号をサンプリングするタイミングを制御するPLL120および可変利得アンプ(VGA)114の利得を制御する自動利得制御器(AGC)119を有する。
HDC100のP−RLL復号器121は、RDC101から入力されたデータに含まれるECCパリティの復号化をおこない、ECC復号器122は、ECCパリティに基づいて誤り訂正をおこなう。
さらに、HDC100のHR−RLL復号器123は、高符号化率のRLL符号ビット列をRLL符号器105の符号化処理を逆にたどることによって情報ビット列に復号化する。このHR−RLL復号器123については後に詳しく説明する。
そして、GS復号器124は、GS符号器104により符号化されたスクランブル列を復号化するデ・スクランブル処理をおこなう。図8は、デ・スクランブル処理について説明する図である。
図8に示すように、このデ・スクランブル処理では、入力列において、図2で説明した3ビットの付加ビット22の後に「0」のビットを挿入する。そして、「0」のビットを挿入した入力列に対して、スクランブル多項式1+X4の掛け算をおこなう。
具体的には、この演算は、図8に示すように、「0」のビットをビット列の先頭から4ビット目に挿入した入力列を2つ用意し、そのうちの1つを5ビットずらして両者を足し合わせることにより実行することができる。GS復号器124は、このようにして得られた結果を、デ・スクランブル処理の出力列として出力する。
図1の説明に戻ると、HDC100のCRC復号器238は、デ・スクランブル処理の出力列に対して巡回符号を用いた誤り検出処理を実行し、その後データを再生する。
つぎに、図1に示したHR−RLL符号器105が満足すべきRLL拘束条件について説明する。HR−RLL符号器105が満足しなければならない一般的なRLL拘束条件には、G拘束条件とX拘束条件とがある。
G拘束条件とは、情報ビット列の内の連続する0の最大ビット数を限定する拘束条件であり、X拘束条件とは、情報ビット列の所定の数のビット毎の連続する0の最大ビット数を限定する拘束条件である。
特に、X拘束条件において情報ビット列の2ビット毎の連続する0の最大ビット数を限定する拘束条件をI拘束条件と呼ぶ。G拘束条件によってデータのエラー伝播が抑制され、データの復号時の同期が取りやすくなる。また、I拘束条件によってG拘束条件で抑制できないデータのエラー伝播が抑制される。
以下では、G拘束条件およびI拘束条件を情報ビット列および情報ビット列間において満足する高符号化率のRLL符号を生成するHR−RLL符号器105について説明する。
本実施例1において、HR−RLL符号器105が満足すべき拘束条件をさらに具体的に表記すると以下のようになる。
(0,G/I,r/R,l/L)=(0,12/12,6/6,6/6)
ここで、
G=12拘束条件;連続する0の最大ビット数が12ビット、
I=12拘束条件;偶数・奇数ビットをみたときの連続する0の最大ビット数が12ビット、
である。
なお、G拘束条件、I拘束条件は、該当する情報ビット列だけではなく、該当する情報ビット列の右隣または左隣の情報ビット列との間でも満足されなければならない。そこで、該当する情報ビット列の右端または左端のビット列について以下のような拘束条件が適用される。
r=6右端拘束条件;右端の連続する0の最大個数が6ビット。
l=6左端拘束条件;左端の連続する0の最大個数が6ビット。
R=6右端拘束条件;偶数・奇数ビットをみたときの右端の連続する0の最大個数が6ビット。
L=6左端拘束条件;偶数・奇数ビットをみたときの左端の連続する0の最大個数が6ビット。
すなわち、該当する情報ビット列の右端拘束条件r、Rまたは左端拘束条件l、Lと、該当する情報ビット列の右隣の情報ビット列の左端拘束条件l、Lまたは左隣の情報ビット列の右端拘束条件r、Rとの間には次のような関係がある。
該当する情報ビット列の右端拘束条件r+右隣の情報ビット列の左端拘束条件l≦G拘束条件。
該当する情報ビット列の左端拘束条件l+左隣の情報ビット列の右端拘束条件r≦G拘束条件。
該当する情報ビット列の右端拘束条件R+右隣の情報ビット列の左端拘束条件L≦I拘束条件。
該当する情報ビット列の左端拘束条件L+右隣の情報ビット列の右端拘束条件R≦I拘束条件。
以下においては、r拘束条件、l拘束条件、R拘束条件およびL拘束条件は、陽に現われないが、右端処理、左端処理の拘束条件として適用される。
つぎに、図9−1から図9−4を参照して、上述したRLL拘束条件の具体例について説明する。図9−1は、r=6拘束条件の具体例を示す図であり、図9−2は、l=6拘束条件の具体例を示す図であり、図9−3は、R=6拘束条件の具体例を示す図であり、図9−4は、L=6拘束条件の具体例を示す図である。
図9−1に示すように、符号ビット列40aは、r=6拘束条件に違反していない(G拘束条件に違反するおそれがない)ビット列で、符号ビット列40bは、r=6拘束条件に違反している(G拘束条件に違反するおそれがある)ビット列である。
また、図9−2に示すように、符号ビット列41aは、l=6拘束条件に違反していない(G拘束条件に違反するおそれがない)ビット列で、符号ビット列41bは、l=6拘束条件に違反している(G拘束条件に違反するおそれがある)ビット列である。
また、図9−3に示すように、符号ビット列42a、42bは、R=6拘束条件に違反していない(I拘束条件に違反するおそれがない)ビット列で、符号ビット列42c、42dは、R=6拘束条件に違反している(I拘束条件に違反するおそれがある)ビット列である。
また、図9−4に示すように、符号ビット列43a、43bは、L=6拘束条件に違反していない(I拘束条件に違反するおそれがない)ビット列で、符号ビット列43c、43dは、L=6拘束条件に違反している(I拘束条件に違反するおそれがある)ビット列である。
次に、図10を参照して、図1に示すHR−RLL符号器105の構成について説明する。図10は、図1に示したHR−RLL符号器105の構成を示す機能ブロック図である。
同図に示すように、HR−RLL符号器105は、n=523ビットの情報ビット列を(n+1)=524ビットの符号ビット列に変換する高符号化率の符号器である。
このHR−RLL符号器105は、デ・プリコーダ105a、デ・インターリーブ符号器105b、第1置換法符号器105c、第1右端処理符号器105d、左端処理符号器105e、中間処理符号器105f、インターリーブ符号器105g、第2置換法符号器105h、第2右端処理符号器105i、プリコーダ105jを有する。
デ・プリコーダ105aは、n=523ビットのNRZ(Non Return to Zero)列を符号ビット列へ変換する1+D2処理をおこなう符号器である。図11は、1+D2処理について説明する図である。
この1+D2処理では、つぎの漸化式を用いてNRZ列51{y(i)}を符号ビット列52{x(i)}に変換する。
x(i)=y(i)+y(i−2)
ここで、y(−2)=y(−1)=0とする。
具体的には、図11に示すように、前ビット50(y(−2)=y(−1)=0)とNRZ列51{y(i)}とを用いてEOR演算をおこなうことにより、符号ビット列52{x(i)}を算出する。
デ・インターリーブ符号器105bは、デ・インターリーブ処理を実行する符号器である。図12は、デ・インターリーブ処理について説明する図である。
図12に示すように、デ・インターリーブ符号器105bは、符号ビット列60の先頭のビットから交互に1ビットずつ取り出して、2つのビット列(a1〜at(at+1)およびb1〜bt)を生成し、それらを連結して新たな符号ビット列61を生成する。
第1置換符号器105cは、符号ビット列内のG拘束条件に違反しているビット列から12ビットのビット列を抜き取って、抜き取ったビット列を12ビットのアドレス列に置換処理する符号器である。
ここで、図13を参照して、図10に示した第1置換法符号器105cが符号ビット列を変換する一例について説明する。図13は、第1置換法符号器105cが符号ビット列を変換する一例を示す図である。
図13に示すように、符号ビット列70は、G=12拘束条件違反のビット列、すなわち12ビットを超える0のビット列を持っている。
第1置換法符号器105cは、符号ビット列70の前に「1」をおいて、先頭から「10」パターンカウンタで「10」パターンの数をカウントする。
そして、第1置換法符号器105cは、「10」パターンの数と別途説明するアドレスコード変換表から10ビットのアドレスコードを求め、G=12拘束条件違反のビット列のアドレスとする。
さらに、図13に示すように、第1置換法符号器105cは、G=12拘束条件違反のビット列から12ビットのビット列を抜き取って、抜き取った12ビットのビット列を12ビットのアドレス列で置換する。
このように置換することによって、第1置換法符号器105cは、符号ビット列70をG=12拘束条件を満足する符号ビット列71に変換できる。
ここで、さらに符号ビット列71のフォーマットについて説明する。符号ビット列71は、ピボット71a、アドレス部71b、データ部71cを有する。ピボット71aは、符号ビット列71が、RLL拘束条件を満たすか否かを識別する1ビットのデータであり、以下のように定義されている。
P=0;入力された符号ビット列70は、G、I、r、R、l、L拘束条件を全て満たす。
P=1;入力された符号ビット列70は、G、I、r、R、lまたはL拘束条件のいずれかを満たさない。
また、アドレス部71bは、G拘束条件またはI拘束条件に違反したビット列を置換した複数のアドレス列を有する。例えば、アドレス列71dは、アドレス71e、マーカ(M)71f、デリミタ(D)71gを有する。
アドレス71eは、前述の「10」パターンの数と別途説明するアドレスコード変換表から求められた10ビットのアドレスコードである。
また、マーカ(M)71fは、1ビットのデータであり、以下のように定義される。
M=1;GまたはI拘束条件に違反したビット列とアドレス列との置換処理がインターリーブ処理前であることを示す。
M=0;GまたはI拘束条件に違反したビット列とアドレス列との置換処理がインターリーブ処理後であることを示す。
また、デリミタ(D)71gは、1ビットのデータであり、以下のように定義される。
D=1;デリミタ71gの次にデータ部71cが来ることを示す。
D=0;デリミタ71gの次に他のアドレス列が来ることを示す。
つぎに、図5に示した符号ビット列70の「10」パターンの数からインターリーブ処理前後でアドレスコードを求めるアドレスコード変換表について説明する。
アドレスコード変換表は、図13に示す符号ビット列70の「10」パターンの数とインターリーブ処理前の10ビットのアドレスコードとを1対1で対応付ける表であり、アドレスコードからは、G=12拘束条件およびI=12拘束条件に違反する可能性のある以下の2つのビット列が除かれている。
(a)000000****
(b)*0*0*0*0*0
なお、「*」は、「0」または「1」のビットを表す。
このように、第1置換法符号器105cは、G拘束条件およびI拘束条件に違反するおそれのあるビット列を除いたアドレスコード変換表を用いてアドレス列を生成することとしたので、G拘束条件とI拘束条件を満足する高符号化率のRLL符号に対して用いることができる。
第1右端処理符号器105dは、符号ビット列の右端の「0」のビット列を含む右端の12ビットのビット列を抜き取って、抜き取ったビット列をビット列の特定のビット列を残した12ビットのアドレス列に置き換える右端処理を行う符号器である。
ここで、図14を参照して、図10に示した第1右端処理符号器105dが符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例について説明する。図14は、第1右端処理符号器105dが符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
図14に示すように、符号ビット列80は、インターリーブ処理後に右隣の符号ビット列との間でI=12拘束条件違反が発生するおそれのあるビット列、すなわち符号ビット列80の右端で6ビットを超える「0」のビット列を持っている。
第1右端処理符号器105dは、符号ビット列80の右端にある13ビットのビット列を抜き取り、抜き取った13ビットの最初の6ビットを用いたアドレス列81dに置き換える右端処理をおこない、符号ビット列80の最終ビットに「1」のビットを付加する。
このように右端処理することによって、第1右端処理符号器105dは、データ部80cを右隣の符号ビット列間におけるI=12拘束条件を満足するデータ部81cに変換できる。
図3の説明に戻ると、左端処理符号器105eは、情報ビット列内の左端の「0」のビット列を含む12ビットのビット列を抜き取って、抜き取ったビット列をビット列内の特定のビット列を残した12ビットのアドレス列に置き換える左端処理を行う符号器である。
ここで、図15を参照して、図10に示した左端処理符号器105eが符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例について説明する。図15は、左端処理符号器105eが符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
図15に示すように、符号ビット列90は、インターリーブ処理後に左隣の符号ビット列との間でI=12拘束条件違反が発生するおそれのあるビット列、すなわち符号ビット列90の左端で6ビットを超える0のビット列を持っている。
左端処理符号器105eは、符号ビット列90の左端にある12ビットのビット列を抜き取り、抜き取った12ビットの後半の5ビットを残したアドレス列91dに置き換える左端処理をする。
このように左端処理することによって、左端処理符号器105eは、符号ビット列90を左隣の符号ビット列間におけるI=12拘束条件を満足する符号ビット列91に変換できる。
中間処理符号器105fは、データ列の中間より左にある「0」のビット列を含む12ビットのビット列を抜き取って、抜き取ったビット列をビット列内の特定のビット列を残した12ビットのアドレス列に置換する符号器である。
ここで、図16を参照して、図10に示した中間処理符号器105fが符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例について説明する。図16は、中間処理符号器105fが符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
図16に示すように、符号ビット列200は、データ部200bにインターリーブ処理後にI=12拘束条件違反のおそれのあるビット列、すなわちデータ部200bの中間より左に6ビットを超える「0」のビット列を持っている。
中間処理符号器105fは、データ部200bの中間にある13ビットのビット列を抜き取り、抜き取った13ビットの後半の6ビットを残したアドレス列201dに置換し、抜き取った13ビットのビット列の代わりにデータ部1とデータ部2の間に1のビットを代入する。
このように中間処理することによって、中間処理符号器105fは、インターリーブ処理後に右隣の符号ビット列間におけるI=12拘束条件を満足するデータ部201cにデータ部200bを変換できる。
インターリーブ符号器105gは、データ部を複数のビット列に分割して複数のビット列から順次1ビットずつビットを取り出し、取り出したビットを1ビットずつ順次並べて新たに生成したビット列とデータ部とを交換するインターリーブ処理を行う符号器である。
ここで、図17を参照して、図10に示したインターリーブ符号器105gがG=12拘束条件を満足していた符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例について説明する。図17は、インターリーブ符号器105gがG=12拘束条件を満足していた符号ビット列をI=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
図17に示すように、インターリーブ符号器105gは、符号ビット列210のデータ部210cの中間で2つのビット列に分割する。
例えば、データ部210cが、m=2tの偶数ビットである場合は、tビットの2つのビット列に分割する。m=(2t+1)の奇数ビットの場合は、例えば前半を(t+1)ビット、後半をtビットのビット列に分割する。
そして、前半のビット列と後半のビット列の先頭のビットから交互に1ビットずつ並べて新たに生成したm=2tビットまたはm=(2t+1)ビットのビット列とデータ部210cとを交換するインターリーブ処理を行う。
このように、インターリーブ処理することによって、G=12拘束条件を満足していたデータ部210cを、I=12拘束条件を満足するデータ部211cに変換することができる。
第2置換法符号器105hは、データ部内のG拘束条件に違反しているビット列から12ビットのビット列を抜き取って、抜き取ったビット列をビット列のアドレス列と置換する符号器である。
第2置換法符号器105hは、図13で説明したような方法にしたがって、符号ビット列のG=12拘束条件違反のビット列から12ビットのビット列を抜き取って、抜き取った12ビットのビット列を12ビットのアドレス列で置換処理する。
このように置換処理することによって、第2置換法符号器105hは、符号ビット列のデータ部をG=12拘束条件を満足するデータ部に変換できる。
ここで、第2置換法符号器105hは、第1置換法符号器105cと同様にして、「10」パターンの数とアドレスコード変換表から10ビットのアドレスコードを求め、G=12拘束条件違反のビット列のアドレスとする。
ここで用いられるアドレスコード変換表は、符号ビット列の「10」パターンの数と10ビットのアドレスコードとを1対1で対応付ける表であり、アドレスコードからは、G=12拘束条件およびI=12拘束条件に違反する可能性のある以下の4つのビット列が除かれている。
(a)000000****
(b)0*0*0*0*0*
(c)*0*0*0*0*0
(d)****000000
なお、「*」は、「0」または「1」のビットを表す。
このように、第2置換法符号器105hは、G拘束条件およびI拘束条件に違反するおそれのあるビット列を除いたアドレスコード変換表を用いてアドレス列を生成することとしたので、G拘束条件とI拘束条件を満足する高符号化率のRLL符号に対して用いることができる。
第2右端処理符号器105iは、データ部内のr拘束条件に違反をしている右端の「0」のビット列を含む12ビットのビット列を抜き取って、抜き取ったビット列をビット列の特定のビット列を残した12ビットのアドレス列へ置換する符号器である。
ここで、図18から図20を参照して、図10に示す第2右端処理符号器105iが符号ビット列をr=6拘束条件もしくは右隣の符号ビット列との間におけるG=12拘束条件を満足する符号ビット列に変換する一例について説明する。
図18は、第2右端処理符号器105iがデータ部が13ビットより大きい場合に符号ビット列を右隣の符号ビット列との間におけるG=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
図19は、第2右端処理符号器105iがデータ部が13ビットである場合に符号ビット列を右隣の符号ビット列との間におけるG=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
そして、図20は、第2右端処理符号器105iがデータ部が12ビットである場合に符号ビット列を右隣の符号ビット列との間におけるG=12拘束条件を満足する符号ビット列に変換する一例を示す図である。
図18に示すように、符号ビット列220のデータ部220cが13ビットよりも大きい場合には、第2右端処理符号器105iは、符号ビット列230の右端にある14ビットのビット列を抜き取り、抜き取った14ビットの前半の7ビットを残したアドレス列221dに置き換える右端処理をおこない、符号ビット列220の最終ビットに「11」のビットを付加する。
一方、図19に示すように、符号ビット列230のデータ部230cが13ビットである場合は、第2右端処理符号器105iは、符号ビット列230の右端にある13ビットのビット列を抜き取り、抜き取った13ビットの前半の6ビットを残したアドレス列231cに置き換える右端処理をおこない、符号ビット列230の最終ビットに「1」のビットを付加する。
また、図20に示すように、符号ビット列240のデータ部240cが12ビットである場合は、第2右端処理符号器105iは、符号ビット列240の右端にある12ビットのビット列を抜き取り、抜き取った12ビットの前半の5ビットを残したアドレス列241cに置き換える右端処理を行う。
このように右端処理することによって、第2右端処理符号器105iは、符号ビット列を右隣の符号ビット列との間におけるG=12拘束条件を満足するように変換できる。
つぎに、図21を参照して、図10に示した第2右端処理符号器105iの右端処理の別な例について説明する。図21は、第2右端処理符号器105iの右端処理の別な例を示す図である。
図21に示すように、第2右端処理符号器105iは、データ部が12ビット未満であり、r=6拘束条件に違反している場合、データ部の左隣のアドレス列のデリミタの値を変えて、0ラン(「0」が連続している部分)の「0」のビットを「1」のビットに置き換える右端処理を行う。
たとえば、第2右端処理符号器105iは、符号ビット列250のビット長がn=523ビットで、アドレス列のビット長が12ビットである場合に、符号ビット列250のデータ部のビット長が7ビットになりえるので、図18〜図20のように12ビットのビット列を抜き取ると、アドレス部の一部も抜き取らなければならない現象が生じる。
これを避けるために、第2右端処理符号器105iは、データ部が12ビット未満であり、r=6拘束条件に違反している場合、データ部の左隣のアドレス列のデリミタの値を「1」から「0」に変え、7つの「0」のビットからなるデータ部を7つの「1」のビットからなるデータ部へ置き換える右端処理を行う。
プリコーダ105jは、符号ビット列をNRZ列へ変換する1/(1+D2)処理をおこなう符号器である。図22は、1/(1+D2)処理について説明する図である。
この1/(1+D2)処理では、つぎの漸化式を用いて符号ビット列261{x(i)}をNRZ列262{y(i)}に変換する。
y(i)=x(i)+y(i−2)
ここで、y(−2)=y(−1)=0とする。
具体的には、図22に示すように、前ビット260(y(−2)=y(−1)=0)と符号ビット列261{x(i)}とを用いてEOR演算をおこなうことにより、NRZ列262{y(i)}を算出する。
以上HR−RLL符号器105の構成について説明してきたが、上記HR−RLL符号器105では、G拘束条件あるいはI拘束条件の違反がないビット列は、RLL符号化がなされずにそのまま出力される。
また、図2で説明したような方法で、GS符号器104がランダムなビット列をスクランブル列に変換した場合には、G拘束条件あるいはI拘束条件の違反があまり発生することがない。
そのため、HR−RLL符号器105を上述のように構成することにより、DC成分が抑制されたビット列を、DC成分が抑制されたビット列のままハードディスク装置に記録することができるようになる。
また、従来のGuided Scrambling方式では、GS符号器104が算出した各スクランブル列に対してHR−RLL符号器105を設ける必要があるが、本実施例1においては、1つのHR−RLL符号器105があればよく、回路規模を小さくできる。
つぎに、図23を参照して、図1に示したHR−RLL復号器123の構成について説明する。図23は、HR−RLL復号器123の構成を示す機能ブロック図である。
HR−RLL復号器123は、RLL拘束条件を満たすn=524ビットの符号ビット列をn=523ビットの情報ビット列へ変換する高符号化率の復号器である。
このHR−RLL復号器123は、プリコーダ123a、第2右端処理復号器123b、第2置換法復号器123c、デ・インターリーブ復号器123d、中間処理復号器123e、左端処理復号器123f、第1右端処理復号器123g、第1置換法復号器123h、インターリーブ復号器123i、デ・プリコーダ123jを有する。
プリコーダ123aは、n=524ビットのNRZ列を符号ビット列へ変換する復号器である。このプリコーダ123aは、図11で説明したような方法にしたがって、NRZ列を符号ビット列へ変換する。
第2右端処理復号器123b、第2置換法復号器123c、デ・インターリーブ復号器123d、中間処理復号器123e、左端処理復号器123f、第1右端処理復号器123g、第1置換法復号器123h、インターリーブ復号器123iは、n=524ビットの符号ビット列をn=523ビットの情報ビット列に変換する複数の復号器である。
これらの復号器の復号処理は、符号器の符号処理を逆に辿ることによって得られるので説明は省略する。
また、デ・プリコーダ123jは、n=523ビットのNRZ列を符号ビット列へ変換する復号器である。このデ・プリコーダ123jは、図22で説明したような方法にしたがって、符号ビット列をNRZ列に変換する。
つぎに、図1に示すHR−RLL符号器105がおこなう符号化処理の処理手順について、図24から図29を用いて説明する。図24は、HR−RLL符号器105のデ・プリコーダ105aおよびデ・インターリーブ符号器105bがおこなう符号化処理の処理手順を示すフローチャートである。
図24に示すように、デ・プリコーダ105aは、図11に示したようにして、1+D2処理を実行し(ステップS201)、NRZ列を符号ビット列に変換する。
そして、デ・インターリーブ符号器105bは、図12に示したようにして、デ・インターリーブ処理を実行する(ステップS202)。
図25は、HR−RLL符号器105の第1置換法符号器105cがおこなう符号化処理の処理手順を示すフローチャートである。
図25に示すように、第1置換法符号器105cは、符号ビット列の先頭にピボットPを置いて、P=0にリセットし(ステップS301)、「10」パターンカウンタでデータ部の「10」の場所を探す(ステップS302)。
そして、第1置換法符号器105cは、「10」の場所があるか否かを調べる(ステップS303)。その結果、「10」の場所がある場合は(ステップS303,Yes)、第1置換法符号器105cは、「10」パターンカウンタを「10」の場所に移動させ、カウンタ値を1増やす(ステップS304)。
そして、第1置換法符号器105cは、「10」パターンカウンタの現在の場所がG拘束条件違反をしているか否かを調べる(ステップS305)。その結果、「10」パターンカウンタの現在の場所がG拘束条件違反をしていない場合は(ステップS305,No)、第1置換法符号器105cは、「10」パターンカウンタでデータ部の次の「10」の場所を探す(ステップS306)。
一方、「10」パターンカウンタの現在の場所がG拘束条件違反をしている場合は(ステップS305,Yes)、第1置換法符号器105cは、12ビットの0ランを除去して、アドレス列へ置換し(ステップS307)、データ部の前に移動する(ステップS308)。
そして、第1置換法符号器105cは、アドレスコード変換表からアドレスコードを求め(ステップS309)、マーカM=1、デリミタD=1と置く(ステップS310)。さらに、第1置換法符号器105cは、現在のアドレス列の前に他のアドレス列があれば、そのアドレス列のデリミタをD=0に変える(ステップS311)。
そして、第1置換法符号器105cは、現在の場所が、未だG拘束条件違反をしているか否かを調べる(ステップS312)。その結果、現在の場所が未だG拘束条件違反をしている場合は(ステップS312,Yes)、第1置換法符号器105cは、ステップS307に戻り、ステップS307〜ステップS311の手順を繰り返す。
一方、現在の場所がG拘束条件違反をしていない場合は(ステップS312,No)、ステップS306に戻る。
これに対して、「10」の場所がない場合は(ステップS303,No)、第1置換法符号器105cは、さらに符号ビット列にアドレス列があるか否かを調べる(ステップS313)。
その結果、符号ビット列にアドレス列がある場合は(ステップS313,Yes)、第1置換法符号器105cは、ピボットをP=1にリセットする(ステップS314)。一方、符号ビット列にアドレス列がない場合は(ステップS313,No)、第1置換法符号器105cは、本処理を終了する。
図26は、HR−RLL符号器105の第1右端処理符号器105dおよび左端処理符号器105eがおこなう符号化処理の処理手順を示すフローチャートである。
図26に示すように、第1右端処理符号器105dは、符号ビット列のデータ部の右端に7ビット以上の0ランが有るか否かを調べる(ステップS401)。その結果、符号ビット列のデータ部の右端に7ビット以上の0ランがない場合は(ステップS401,No)、第1右端処理符号器105dは、ステップS405に進む。
一方、符号ビット列のデータ部の右端に7ビット以上の0ランがある場合は(ステップS401,Yes)、第1右端処理符号器105dは、さらに符号ビット列のデータ部の長さが13ビット以上あるか否かを調べる(ステップS402)。
その結果、符号ビット列のデータ部の長さが13ビット未満である場合は(ステップS402,No)、第1右端処理符号器105dは、ステップS405に進む。
一方、符号ビット列のデータ部の長さが13ビット以上である場合は(ステップS402,Yes)、第1右端処理符号器105dは、図14で説明したようにして、右端の12ビットを除去し、アドレス列へ変換する(ステップS403)。そして、第1右端処理符号器105dは、ピボットをP=1にリセットする(ステップS404)。
さらに、左端処理符号器105eは、符号ビット列のピボットがP=0であるか否かを調べる(ステップS405)。その結果、符号ビット列のピボットがP=0でない場合は(ステップS405,No)、左端処理符号器105eは、左端処理をおこなわず、本処理を終了する。
一方、符号ビット列のピボットがP=0である場合は(ステップS405,Yes)、左端処理符号器105eは、さらに符号ビット列のデータ部の左端に7ビット以上の0ランがあるか否かを調べる(ステップS406)。
その結果、符号ビット列のデータ部の左端に7ビット以上の0ランがない場合は(ステップS406,No)、左端処理符号器105eは、本処理を終了する。
一方、符号ビット列のデータ部の左端に7ビット以上の0ランがある場合は(ステップS406,Yes)、左端処理符号器105eは、図15で説明したようにして、符号ビット列の左端の12ビットを除去し、アドレス列へ変換する(ステップS407)。
そして、左端処理符号器105eは、符号ビット列のピボットをP=1にリセットして(ステップS408)、本処理を終了する。
図27は、HR−RLL符号器105の中間処理符号器105fおよびインターリーブ符号部105gがおこなう符号化処理の処理手順を示すフローチャートである。
図27に示すように、中間処理符号器105fは、符号ビット列のデータ部の中間に7ビット以上の0ランがあるか否かを調べる(ステップS501)。その結果、符号ビット列のデータ部の中間に7ビット以上の0ランがない場合は(ステップS501,No)、中間処理符号器105fは、ステップS505に進む。
一方、符号ビット列のデータ部の中間に7ビット以上の0ランがある場合は(ステップS501,Yes)、中間処理符号器105fは、さらに符号ビット列のデータ部の長さが13ビット以上あるか否かを調べる(ステップS502)。
その結果、符号ビット列のデータ部の長さが13ビット未満である場合は(ステップS502,No)、中間処理符号器105fは、ステップS505に進む。
一方、符号ビット列のデータ部の長さが13ビット以上である場合は(ステップS502,Yes)、中間処理符号器105fは、データ部の中間の12ビットを除去し、アドレス列へ変換する(ステップS503)。そして、中間処理符号器207dは、ピボットをP=1にリセットする(ステップS504)。
さらに、インターリーブ符号器105gは、図17で説明したようにして、符号ビット列のデータ部を2つに分け、インターリーブする(ステップS505)。
図28は、HR−RLL符号器105の第2置換法符号器105hがおこなう符号化処理の処理手順を示すフローチャートである。
図28に示すように、第2置換法符号器105hは、「10」パターンカウンタでデータ部の「10」の場所を探す(ステップS601)。そして、第2置換法符号器105hは、「10」の場所はあるか否かを調べる(ステップS602)。
そして、「10」の場所がある場合には(ステップS602,Yes)、第2置換法符号器105hは、「10」パターンカウンタを「10」の場所に移動させ、カウンタ値を1増やす(ステップS603)。
その後、第2置換法符号器105hは、「10」パターンカウンタの現在の場所がG拘束条件違反をしているか否かを調べる(ステップS604)。その結果、「10」パターンカウンタの現在の場所がG拘束条件違反をしていない場合は(ステップS604,No)、第2置換法符号器105hは、「10」パターンカウンタでデータ部の次の「10」の場所を探す(ステップS605)。
一方、「10」パターンカウンタの現在の場所がG拘束条件違反をしている場合は(ステップS604,Yes)、第2置換法符号器105hは、12ビットの0ランを除去してアドレス列へ置換し(ステップS606)、データ部の前に移動する(ステップS607)。
そして、第2置換法符号器105hは、アドレスコード変換表からアドレスコードを求め(ステップS608)、マーカM=0、デリミタD=1と置く(ステップS609)。さらに、第2置換法符号器105hは、現在のアドレス列の前に他のアドレス列があれば、そのアドレス列のデリミタをD=0に変える(ステップS610)。
その後、第2置換法符号器105hは、現在の場所が未だG拘束条件違反をしているか否かを調べる(ステップS611)。その結果、現在の場所が未だG拘束条件違反をしている場合は(ステップS611,Yes)、第2置換法符号器105hは、ステップS606に戻り、ステップS606〜ステップS610の手順を繰り返す。
一方、現在の場所がG拘束条件違反をしていない場合は(ステップS611,No)、ステップS605に戻る。
これに対して、「10」の場所がない場合は(ステップS602,No)、第2置換法符号器105hは、さらに符号ビット列にアドレス列があるか否かを調べる(ステップS612)。
その結果、符号ビット列にアドレス列がある場合は(ステップS612,Yes)、第2置換法符号器105hは、ピボットをP=1にリセットする(ステップS613)。一方、符号ビット列にアドレス列がない場合は(ステップS612,No)、第2置換法符号器105hは、本処理を終了する。
図29は、HR−RLL符号器105の第2右端処理符号器105iおよびプリコーダ105jがおこなう符号化処理の処理手順を示すフローチャートである。
図29に示すように、第2右端処理符号器105iは、符号ビット列のデータ部の長さが12ビット以上であるか否かを調べる(ステップ701)。
その結果、符号ビット列のデータ部の長さが12ビット以上である場合は(ステップ701,Yes)、第2右端処理符号器105iは、さらに符号ビット列のデータ部の右端に7ビット以上の0ランがあるか否かを調べる(ステップS702)。
その結果、符号ビット列のデータ部の右端に7ビット以上の0ランがある場合は(ステップ702,Yes)、第2右端処理符号器105iは、符号ビット列の右端の12ビットを除去してアドレス列に変換し(ステップS703)、ピボットをP=1にリセットして(ステップS704)、ステップS709に進む。
一方、符号ビット列のデータ部の右端に7ビット以上の0ランがない場合は(ステップ702,No)、ステップS709に進む。
一方、符号ビット列のデータ部の長さが12ビット未満である場合は(ステップ701,No)、第2右端処理符号器105iは、さらに符号ビット列のデータ部の右端に7ビット以上の0ランがあるか否かを調べる(ステップS705)。
その結果、符号ビット列のデータ部の右端に7ビット以上の0ランがない場合は(ステップS705,No)、第2右端処理符号器105iは、ステップS709に進む。
一方、符号ビット列のデータ部の右端に7ビット以上の0ランがある場合は(ステップS705,Yes)、第2右端処理符号器105iは、図21で説明したようにして、0ランの「0」のビットを「1」のビットに置き換える右端処理をおこなう(ステップS706)。
さらに、第2右端処理符号器105iは、データ部の左隣のデリミタの値を「0」に変更し(ステップS707)、ピボットをP=1にリセットする(ステップS708)。
その後、プリコーダ105jは、図22で説明したようにして、1/(1+D2)処理を実行し(ステップS709)、本処理を終了する。
次に、図30から図32を参照して、図1に示したHR−RLL復号器123がおこなう復号化処理の処理手順について説明する。
図30は、HR−RLL復号器123のプリコーダ123a、第2右端処理復号器123b、第2置換法復号器123cおよびデ・インターリーブ復号器123dの復号化処理の処理手順を示すフローチャートである。
図30に示すように、まず、プリコーダ123aは、図11で説明したようにして、1+D2処理を実行する(ステップS801)。
そして、第2右端処理復号器123bは、符号ビット列のピボットがP=1であるか否かを調べる(ステップS802)。その結果、符号ビット列のピボットがP=0である場合は(ステップS802,No)、第2右端処理復号器123bは、ステップS809に進む。
一方、符号ビット列のピボットがP=1である場合は(ステップS802,Yes)、第2右端処復号器123bは、符号ビット列のアドレス列のデリミタDが全て「0」であるか否かを調べる(ステップS803)。
その結果、符号ビット列のアドレス列のデリミタDが全て「0」である場合は(ステップS803,Yes)、第2右端処理復号器123bは、図21で説明したようにして第2右端処理符号器105iがおこなった右端処理における変換を逆に辿ってデータ部を元に戻す(ステップS804)。
一方、符号ビット列のアドレス列のデリミタDが全て「0」でない場合は(ステップS803,No)、第2右端処理復号器123bは、さらに符号ビット列のアドレス列に「111*******0D”があるか否かを調べる(ステップS805)。ここで、「*」は、「0」または「1」である。
その結果、符号ビット列のアドレス列に「111*******0D」がある場合は(ステップS805,Yes)、第2右端処理復号器123bは、符号ビット列の右端を「*******0000000」に戻す(ステップS806)。
一方、符号ビット列のアドレス列に「111*******0D」がない場合は(ステップS805,No)、第2置換法復号器123cは、符号ビット列のアドレス列にM=0となるアドレスが残っているか否かを調べる(ステップS807)。
その結果、符号ビット列のアドレス列にM=0となるアドレスが残っている場合は(ステップS807,Yes)、第2置換法復号器123cは、M=0となる各アドレス列のアドレスコードに対応する場所へ12ビットの0ランを挿入する(ステップS808)。
一方、符号ビット列のアドレス列にM=0となるアドレスが残ってない場合は(ステッ
プS807,No)、デ・インターリーブ復号器123dは、図17で説明したようにして、符号ビット列のデータ部のインターリーブをおこなう(ステップS809)。
図31は、HR−RLL復号器123の中間処理復号器123e、左端処理復号器123f、第1右端処理復号器123gおよび第1置換法復号器123hの復号化処理の処理手順を示すフローチャートである。
図31に示すように、まず、中間処理復号器123eは、符号ビット列のピボットがP=1か否かを調べる(ステップS901)。その結果、符号ビット列のピボットがP=0である場合は(ステップS901,No)、本処理を終了する。
一方、符号ビット列のピボットがP=1である場合は(ステップS901,Yes)、中間処理復号器123eは、符号ビット列のアドレス列に「1110******1D」があるか否かを調べる(ステップS902)。なお、「*」は、「0」または「1」である。
その結果、符号ビット列のアドレス列に「1110******1D」がある場合は(ステップS902,Yes)、中間処理復号器123eは、符号ビット列のデータ部の中間を「0000000******」に戻す(ステップS903)。
一方、符号ビット列のアドレス列に「1110******1D」がない場合は(ステップS902,No)、左端処理復号器123fは、さらに符号ビット列のアドレス列に「11001*****1D」があるか否かを調べる(ステップS904)。
その結果、符号ビット列のアドレス列に「11001*****1D」がある場合は(ステップS904,Yes)、左端処理復号器123fは、符号ビット列のデータ部の左端を「0000000*****」に戻す(ステップS905)。
一方、符号ビット列のアドレス列に「11001*****1D」がない場合は(ステップS904,No)、第1右端処理復号器123gは、さらに符号ビット列のアドレス列に「1111******1D」があるか否かを調べる(ステップS906)。
その結果、符号ビット列のアドレス列に「1111******1D」がある場合は(ステップS906,Yes)、第1右端処理復号器123gは、符号ビット列のデータ部の右端を「******0000000」に戻す(ステップS907)。
一方、符号ビット列のアドレス列に「1111******1D」がない場合は(ステップS906,No)、第1置換法復号器123hは、さらに符号ビット列のアドレス列にM=1となるアドレスが残っているか否かを調べる(ステップS908)。
その結果、符号ビット列のアドレス列にM=1となるアドレスが残っている場合は(ステップS908,Yes)、M=1となる各アドレス列のアドレスコードに対応する場所へ12ビットの0ランを挿入する(ステップS909)。
一方、符号ビット列のアドレス列にM=1となるアドレスが残っていない場合は(ステップS908,No)、本処理を終了する。
図32は、HR−RLL復号器123のインターリーブ復号器123iおよびデ・プリコーダ123jの復号化処理の処理手順を示すフローチャートである。
図32に示すように、インターリーブ復号器123iは、図12で説明したようにして、符号ビット列のデータ部をデ・インターリーブする(ステップS1001)。
そして、デ・プリコーダ123jは、図22に示したようにして、符号ビット列をNRZ列に変換する1/(1+D2)処理を実行し(ステップS1002)、本処理を終了する。
上述してきたように、本実施例1では、GS符号器104が、入力されたビット列に対してスクランブルをおこなうことにより当該符号化されたビット列を複数生成し、生成されたビット列内の所定の幅のビット列を1ビットずつシフトさせながら選択し、選択された各ビット列のDC成分を評価し、評価された結果に基づいて符号化された複数のビット列の中からDC成分が抑制されたビット列を抽出することとしたので、ベースライン補正と組み合わせることにより、符号化率が高い場合でもDC成分を効果的に抑制して誤り率を改善することができ、また、スクランブルがなされたビット列のうちDC成分が抑制されたビット列のみを抽出してその後の符号化をおこなうので、従来のGuidedScrambling方式のようにスクランブルがなされた複数のビット列すべてについて符号化をおこなう必要がなくなり、回路規模を縮小することができる。
また、本実施例1では、GS符号器104が、入力されたビット列に3ビットの互いに異なるビット列と「0」のビットとを付加してスクランブルをおこなうことにより符号化された複数のビット列を生成し、また、DC成分が抑制されたビット列が抽出された場合に、抽出されたビット列から上記「0」のビットを除去して出力することとしたので、スクランブルされたビット列の数を半分に減らすことができるとともに、符号化率を高めることができる。
また、本実施例1では、GS符号器104が、スクランブルにより符号化がなされたビット列にポストプロセッサ108用のパリティビットを付加し、パリティビットが付加されたビット列内の各ビット列のDC成分を評価することとしたので、記憶装置に記憶されるときのビット列の状態と同じ状態でビット列のDC成分を評価することができる。
また、本実施例1では、GS符号器104が、ポストプロセッサ108用のパリティビットが付加されたビット列内の各ビット列のDC成分が評価され、DC成分が抑制されたビット列が抽出された後、抽出されたビット列からパリティビットを除去してビット列を出力することとしたので、パリティビットのない状態にもどしてビット列を出力することによりパリティビットを付加するポストプロセッサ108に影響を及ぼすことなくビット列の符号化をおこなうことができる。
また、本実施例1では、GS符号器104が、1ビットずつシフトさせながら選択された所定の幅の各ビット列に対してRDS値を求めることによりビット列のDC成分を評価することとしたので、RDS値を用いることにより効果的にDC成分の評価をおこなうことができる。
また、本実施例1では、HR−RLL符号器105が、DC成分が抑制されたビット列に係るRLL符号化をおこなうこととしたので、スクランブルがなされた複数のビット列のうち、DC成分が抑制されたビット列のみを抽出してRLL符号化をおこなうことができ、従来のGuidedScrambling方式のようにスクランブルがなされた複数のビット列すべてについてRLL符号化をおこなう必要がなくなるため、回路規模を縮小することができる。
また、本実施例1では、HR−RLL符号器105が、G拘束条件およびI拘束条件をビット列が満足する場合にはRLL符号化をおこなうことなくビット列を出力することとしたので、拘束条件を満足する場合には、DC成分が抑制された状態のままビット列を出力することができる。
また、本実施例1では、HR−RLL符号器105が、G拘束条件に対する違反を解消するようビット列のRLL符号化をおこなうこととしたので、同一ビット値の連続数を制限することにより、ビット列のエラー伝播を抑制し、ビット列の復号時の同期を取りやすくすることができる。
また、本実施例1では、HR−RLL符号器105が、I拘束条件に対する違反をさらに解消するようビット列のRLL符号化をおこなうこととしたので、ビット列のエラー伝播をさらに抑制することができる。
また、本実施例1では、HR−RLL符号器105が、G拘束条件あるいはI拘束条件に違反した場合に「1」のビットをビット列に付加し、ビット列が上記拘束条件に違反しなかった場合に「0」のビットをビット列に付加することとしたので、ビット列がG拘束条件あるいはI拘束条件に違反したか否かを容易に判定し、G拘束条件あるいはI拘束条件に違反していない場合には、DC成分が抑制された状態のままビット列を出力することができる。
また、本実施例1では、HR−RLL符号器105が、DC成分が抑制されたビット列が出力された後、ビット列に係るNRZ符号化およびNRZ復号化をおこなうこととしたので、DC成分が抑制されたビット列に対して上記処理をおこなうことにより、G拘束条件あるいはI拘束条件に違反していない場合には、DC成分が抑制された状態のままビット列を出力することができる。
また、本実施例1では、GS符号器104またはHR−RLL符号器105により符号化されたビット列を復号化することとしたので、DC成分を抑制した符号化ビット列を復号化することができる。
つぎに、本実施例2にかかる記録再生装置の符号器の概要について説明する。図33は、本実施例2にかかる記録再生装置の符号器の概要を説明するための説明図である。図33に示すように、上記した実施例1にかかるSDSでは、入力されたビット列に対してスクランブルを行うことにより符号化されたビット列を複数生成し、生成した複数のビット列に対してSDSウィンドウを例えば1ビットずつシフトさせ、各ビットのRDS計算毎にRDSのピーク値を更新していた。
これに対して、本実施例2にかかるCSDS(Condensed SDS)では、ビット列に対してCSDSウィンドウ(ここでは、説明の便器上CSDSウィンドウと表記しているが、SDSウィンドウと同様である)を例えば5ビットずつシフトさせ、5ビットおきにRDSのピーク値を更新することで、RDSの計算を簡略化する。
また、実施例1では、SDSウィンドウを1ビットずつシフトさせ、ビット列のDC成分を評価していたが、実施例2では、CSDSウィンドウを5ビットずつシフトさせ、ビット列のDC成分を評価することで、DC成分評価にかかる処理を簡略化する。このように、本実施例2にかかる符号器は、上記した実施例1の符号器(図1に示したGS符号器104)に比べて計算量を大幅に削減が可能であると共に、実施例1の符号器と同等の性能を引き出すことが可能となる。
なお、図33では、ビット列に対してCSDSウィンドウを5ビットずつシフトさせ、RDS計算およびDC成分評価を行う場合を示したが、CSDSウィンドウを他のビット数ずつシフトさせ、RDS計算およびDC成分評価を行うことができる。
図34は、本実施例2に係る記録再生装置の構成を示す機能ブロック図である。同図に示すように、本実施例2に係る記録再生装置15は、HDC200を有する。その他の構成および要素は、図1に示した記録再生装置10と同様であるため、同一の構成要素には同一の符号を付して説明を省略する。また、ハードディスク200においては、GS符号器210以外は、図1に示したHDC100と同様であるため、同一の構成要素には同一の符号を付して説明を省略する。
ここで、本実施例2にかかるGS符号器210が行う符号化処理について説明する。図35は、本実施例2にかかるGS符号器の処理を説明するための説明図である。まず、この符号化処理においては、GS符号器210は、入力列に対して、付加ビット「00」を挿入し(ステップS201)、第1のスクランブル処理を行う(ステップS202)。
図36は、本実施例2にかかるGS符号器がおこなう第1のスクランブル処理を説明する説明図である。ここでは、スクランブル列を生成するためのスクランブル多項式として、1+X3を用いることとする。
図36に示すように、GS符号器210は、入力列20aの前に2ビットの付加ビット22aと、「0」ビット23aを付加する。また、GS符号器210は、入力列20aの後ろに、3ビットの付加ビット24a「000」を付加する。
そして、GS符号器210は、この列を1+X3を示す「1001」で割り算し、商となるビット列を求める。その後、GS符号器210は、商のビットの先頭から3ビット目のビットを除去し、スクランブル列25aを得る。実施例1では、各付加ビット「000」、「001」、「010」、「011」、「100」、「101」、「110」、「111」それぞれに対し、スクランブル処理をおこなっていたが、本実施例2では、付加ビット「00」のみに対して、スクランブル処理を実行する。
そして、本実施例にかかるGS符号器210は、残りの付加ビット「01」、「10」、「11」にかかるスクランブル処理を、簡便な第2のスクランブル処理によって計算することになる。なお、この第2のスクランブル処理に関する詳しい説明は後述する。
図35の説明にもどると、GS符号器210は、単一のスクランブル列(付加ビット「00」にかかるスクランブル列)に対して、CSDS計算を行う(ステップS203)。
図37は、CSDS計算を説明するための説明図である。図37の上から1番のビット列は、付加ビット「00」でのスクランブル列30aを示す。また、図37の上から2番目の55ビットのビット列31aは、50ビットのSDSウィンドウに対応する。このビット列31aの1ビット目から5ビット目までの5ビットを「A」とし、ビット列31aの51ビット目から55ビット目までの5ビットを「B」とする。
ビット列31aのAおよびその次の45ビットには、初期値として「0」を代入しておく。また、ビット列31aのBには、初期値として、スクランブル列30aの1ビット目から5ビット目までの「1、−1変換」された値が代入される。すなわち、スクランブル列30aの最初の5ビットの「1」の値を「1」、「0」の値を「−1」に変換し、ビット列31aの「B」に代入する。図37の例では、ビット列31aのBに「−1、−1、1、−1、−1」が代入されることとなる。このスクランブル列30aは、5ビットずつ左にシフトし、ビット列31aは、スクランブル列30aの対応する値にあわせて、ビット列31aの各値を更新する。
S50、S45、・・・、S5は、それぞれSDSウィンドウ(ビット列31a)の1ビット目から50ビット目までのRDS値、1ビット目から45ビット目までのRDS値、・・・、1ビット目から5ビット目までのRDS値が代入される。S50、S45、・・・、S5には、初期値として「0」が代入される。
P50、P45、・・・、P5は、それぞれSDSウィンドウの1ビット目から50ビット目までのピーク値、1ビット目から45ビット目までのピーク値、・・・、1ビット目から5ビット目までのピーク値が代入される。P50、P45、・・・P5には、初期値として「0」が代入される。
続いて、CSDS計算の方法について説明する。はじめに、付加ビット「00」にかかるCSDS計算について説明する。まず、ビット列31aの「A」の和と「B」の和とを計算する。図37の例では、「A」の和は「0」となり、「B」の和は「−1」となる。そして、「A」、「B」を用いて、S5、S10、S15、・・・、S45、S50のRDS値をそれぞれ更新する。S5〜S50の各RDS値は、S5=S10−A、S10=S15−A、S15=20−A、・・・、S45=S50−A、S50=S50−A+Bによって算出される。
そして、更新されたS5〜S50のRDS値の絶対値と、RDS値のピーク値(P5〜P50)との大小比較を行い、ピーク値を次式のよって求める。
Pi=max[|Si|,Pi] (i=5,10,15,…,50)
例えば、S5の絶対値が、P5の値よりも大きい場合には、P5の値をS5の絶対値に更新することとなる。
続いて、スクランブル列30aおよびビット列31aを5ビットずつシフトし、S5〜S50を計算して、P5〜P50を順次更新していく。スクランブル列30aにかかるシフトが全て終了したとき、付加ビット「00」のスクランブル列30aのピーク値S1Pを次式によって求める。
S1P=max[Pi] (i=5,10,15,…,50)
つぎに、付加ビット「00」以外の付加ビットにかかるCSDS値計算について説明する。ここでは、付加ビット「11」の場合ついて説明する。付加ビット「00」以外の付加ビットにかかるCSDS計算を実行する場合には、「Aの反転条件」および「Bの反転条件」を用いる。この「Aの反転条件」および「Bの反転条件」を用いることによって、図35のステップS202において、付加ビット「01」、「10」、「11」のスクランブル処理を実行しなくとも、付加ビット「01」、「10」、「11」のRDS値にかかるピーク値を算出することができる。
ここで、「Aの反転条件」は、ビット列31aの「A」に対する反転条件であり、「Bの反転条件」は、ビット列31aの「B」に対する反転条件である。Aの反転条件およびBの反転条件は、図38に示すように、スクランブル列30aのシフト回数によって変更される。図38は、AおよびBの反転条件とシフト回数との関係を示す図である。図38に示すように、スクランブル列30aのシフト回数が「0」の場合、すなわち、初期段階において、Aの反転条件は「d0cd0」となり、Bの反転条件は「cd0cd」となる。
Aの反転条件およびBの反転条件にかかる「c」、「d」には、付加ビットに対応した値が代入される。例えば、付加ビットが「11」の場合には、「c」に「1」が代入され、「d」に「1」が代入される。同様に付加ビットが「01」の場合には「c」に「0」が代入され、「d」に「1」が代入される。付加ビットが「10」の場合には「c」に「1」が代入され、「d」に「0」が代入される。
したがって、付加ビットが「11」で、シフト回数が「0」回の場合には、Aの反転条件は「10110」となり、Bの反転条件は「11011」となる。そして、AとBの反転条件で1となっているところは、「1」を「−1」、「1」を「−1」に反転し、反転条件で「0」となっているところは何もしない。具体的に、付加ビット「11」に対するビット列31aの「A」は、「Aの反転条件」によって、「0000」となり、ビット列31aの「B」は、「Bの反転条件」によって「11−11−1」となる。
そして、反転条件によって反転した状態で、「A」の和(反転和)および「B」の和(反転和)を計算する。図37の例では、付加ビット11にかかる「A」の反転和は「0」、「B」の反転和は「3」となる。RDS値S5〜50およびピーク値P5〜50の求め方は、上記した付加ビット「00」の場合と同様であるため説明を省略する。
そして、付加ビット「11」の場合も、スクランブル列30aおよびビット列31aを5ビットずつシフトさせ、「A」の反転和および「B」の反転和を求め、付加ビット「11」にかかるRDS値S5〜S50、ピーク値P5〜P50を更新していく(ただし、図38に示すように、シフト回数により反転条件が3周期で変化する)。
続いて、付加ビット「11」のスクランブル列30aのピーク値S4Pを求める。ただし、ピーク値S4Pの求め方は、上記したピーク値S1Pの求め方と同様であるため説明を省略する。また、付加ビット「01」のピーク値S2Pおよび付加ビット「10」のピーク値S3Pの求め方は、ピーク値S4Pの求め方と同様であるため説明を省略する。
図35の説明にもどると、GS符号器210は、スクランブル列のピーク値S1P〜S4Pの中で、最も小さい値を持つピーク値を検索し、付加ビットを決定する(ステップS204)。例えば、S1Pの値が最も小さい場合には、付加ビットは「00」となり、S2Pの値が最も小さい場合には、付加ビットは「01」となり、S3Pの値が最も小さい場合には、付加ビットは「10」となり、S4Pの値が最も小さい場合には、付加ビットは「11」となる。
GS符号器210は、付加ビットを決定した後、決定した付加ビットと、ステップS202においてスクランブル処理を施したスクランブル列とを用いて第2のスクランブル処理を実行する(ステップS205)。
図39は、本実施例2にかかるGS符号器がおこなう再スクランブル処理を説明するための説明図である。同図に示すように、付加ビットが「00」のときのスクランブル列と、ステップS204で決定した付加ビットとの排他的論理和(XOR)をとり、再スクランブルをおこなう。
具体的に、ステップS204において付加ビットを「10」に決定した場合には、付加ビット「00」にかかるスクランブル列の3ビット目および4ビット目、6ビット目および7ビット目、9ビット目および10ビット目、・・・・と符号ビット「10」との排他的論理和をとることによって、付加ビット「10」に対するスクランブル列を求めることができる。GS符号器210は、算出したスクランブル列を図34に示すHR−RLL符号器105に出力する。
このように、GS符号器210は、上記したような簡便な手法によって、付加ビット「01」、「10」、「11」に対するスクランブル列を求めることができるので、予めそれぞれの付加ビットに対するスクランブル列を算出しておく必要がなくなり、スクランブル処理に関わる計算量を大幅に削減させることができ、符号器にかかる回路規模を削減することができる。
つぎに、GS復号器124が、GS符号器210により符号化されたスクランブル列を復号化するデ・スクランブル処理の説明をおこなう。図40は、本実施例2のGS符号器により符号化されたスクランブル列を復号化するデ・スクランブル処理を説明するための説明図である。
図40に示すように、このデ・スクランブル処理では、入力列において、2ビットの付加ビットの後に「0」ビットを挿入する。そして、「0」ビットを挿入した入力列に対して、スクランブル多項式1+X3の掛け算をおこなう。
具体的には、この演算は、図40に示すように、「0」のビットをビット列の先頭から3ビット目に挿入した入力列を2つ用意し、そのうちの1つを3ビットずらして両者を足し合わせることにより実行することができる。GS復号器124は、このようにして得られた結果を、デ・スクランブル処理の出力列として出力する。
上述してきたように、本実施例2では、GS符号器210が、入力されたビット列に対してスクランブルをおこなうことにより、符号化されたビット列(単一のビット列)を生成し、生成されたビット列内の所定の幅のビット列を例えば5ビットずつシフトさせながら選択し、選択されたビット内のDC成分を評価し、評価された結果に基づいて付加ビットを特定し、特定した付加ビットを利用して再スクランブルし、DC成分が抑制されたビット列を抽出するので、符号化率が高い場合でもDC成分を効果的に抑制して誤り率を改善することができる。
また、本実施例2では、DC成分の評価結果によって特定される付加ビットとスクランブルされたビット列との排他的論理和によるスクランブルを実行し、DC成分が抑制されたビット列を出力するので、複数のビット列に対して予めスクランブルを行う必要がなくなり、必要なビット列に対して簡便な排他的論理和によるスクランブルをのみを行えばよいので、スクランブルにかかる計算量を大幅に削減することができる。
また、本実施例2では、CSDSウィンドウを5ビットずつシフトさせ、RDS計算を簡略化したが、実施例1に示すGS符号器と同様の性能を引き出すことができるので、実施例1にかかる記録再生装置10と同様の性能を有する装置を低コストで作成することが可能となる。
さて、これまで本発明の実施の形態について説明したが、本発明は上述した実施例1および実施例2以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
例えば、本実施例では、RLL符号化をHR−RLL符号器がおこなうこととしたが、本発明はこれに限定されるものではなく、GS符号器104がビット列のスクランブル処理をおこなった後に、従来のGuidedScrambling方式のように、すべてのスクランブル列に対してRLL符号化をおこない、その後、SDS計算によりDC成分が抑制されたスクランブル列を抽出することとしてもよい。
この場合、RLL符号器の数が多くなり回路規模が大きくなるものの、符号化率が高い場合でもDC成分を効果的に抑制して誤り率を改善することができるようになる。
また、GS符号器104の出力ビット列の周波数特性を検出する回路を設けることとしてもよい。これにより、DC成分の抑制の度合いを調べることができ、符号化の効果を確認することができる。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。
すなわち、装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
なお、本実施の形態で説明した符号化方法あるいは復号化方法は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。このプログラムは、ROMなどの記録装置に記録され、それが記録装置から読み出されることによって実行することもできる。
(付記1)ビット列の符号化を行う符号器であって、
入力されたビット列に対してスクランブルをおこなうことにより符号化されたビット列を生成する符号化ビット列生成手段と、
前記符号化ビット列生成手段により生成されたビット列内の所定の幅のビット列をP(Pは自然数)ビットずつシフトさせながら選択し、選択されたビット列のDC成分を評価するDC成分評価手段と、
前記DC成分評価手段により評価された結果に基づいてDC成分が抑制されたビット列を出力するビット列出力手段と、
を備えたことを特徴とする符号器。
(付記2)前記符号化ビット列生成手段は、入力されたビット列に対してスクランブルをおこなうことにより符号化されたビット列を複数生成し、前記DC成分評価手段は、前記前記符号化ビット列生成手段により生成されたビット列内の所定の幅のビット列を1ビットずつシフトさせながら選択し、選択された各ビット列のDC成分を評価し、前記ビット列出力手段は、前記DC成分評価手段により評価された結果に基づいて符号化された複数のビット列の中からDC成分が抑制されたビット列を抽出して出力することを特徴とする付記1に記載の符号器。
(付記3)前記符号化ビット列生成手段は、入力されたビット列にnビットの互いに異なるビット列と特定のq(qは自然数)ビットとを付加してスクランブルをおこなうことにより符号化された複数のビット列を生成し、前記ビット列出力手段は、抽出したビット列から前記特定のqビットを除去して出力することを特徴とする付記2に記載の符号器。
(付記4)前記符号化ビット列生成手段は、符号化された各ビット列にパリティビットを付加し、前記DC成分評価手段は、パリティビットが付加されたビット列内の各ビット列のDC成分を評価することを特徴とする付記2または3に記載の符号器。
(付記5)前記ビット列出力手段は、抽出したビット列から前記パリティビットを除去したビット列を出力することを特徴とする付記4に記載の符号器。
(付記6)前記DC成分評価手段は、1ビットずつシフトさせながら選択された所定の幅の各ビット列に対してRDS値を求めることにより各ビット列のDC成分を評価することを特徴とする付記2〜5のいずれか1つに記載の符号器。
(付記7)前記符号化ビット列生成手段は、符号化されたビット列に対してさらにRLL符号化をおこない、前記DC成分評価手段は、前記符号化ビット列生成手段によりRLL符号化がなされたビット列内の所定の幅のビット列を選択することを特徴とする付記2に記載の符号器。
(付記8)前記ビット列出力手段により出力されたビット列に係るRLL符号化をおこなうRLL符号化手段をさらに備えたことを特徴とする付記3に記載の符号器。
(付記9)前記RLL符号化手段は、同一ビット値の連続数に係る所定の拘束条件をビット列が満足する場合にはRLL符号化をおこなうことなくビット列を出力することを特徴とする付記8に記載の符号器。
(付記10)前記RLL符号化手段は、同一ビット値の連続数を制限する拘束条件に対する違反を解消するようビット列のRLL符号化をおこなうことを特徴とする付記8または9に記載の符号器。
(付記11)前記RLL符号化手段は、ビット列において所定のビット数おきの同一ビット値の連続数を制限する拘束条件に対する違反をさらに解消するようビット列のRLL符号化をおこなうことを特徴とする付記10に記載の符号器。
(付記12)前記RLL符号化手段は、ビット列が同一ビット値の連続数に係る所定の拘束条件に違反した場合に1のビットをビット列に付加し、ビット列が前記拘束条件に違反しなかった場合に0のビットをビット列に付加することを特徴とする付記9に記載の符号器。
(付記13)前記RLL符号化手段は、前記ビット列出力手段により出力されたビット列に係るNRZ符号化およびNRZ復号化をおこなうことを特徴とする付記9に記載の符号器。
(付記14)前記ビット列出力手段により抽出されたビット列に係る周波数特性を検出する周波数特性検出手段をさらに備えたことを特徴とする付記1に記載の符号器。
(付記15)前記DC成分評価手段は、P(Pは自然数)ビットずつシフトさせながら選択された所定の幅のビット列に対するRDS値を求めることによりビット列のDC成分を評価することを特徴とする付記1に記載の符号器。
(付記16)前記DC成分評価手段は、前記符号化ビット列生成手段により生成されたビット列内の所定の幅のビット列中のビットを、シフト回数および付加ビットに応じて異なる条件によって反転させることにより複数のビット列に対するRDS値を求め、当該複数のビット列のDC成分を評価することを特徴とする付記15に記載の符号器。
(付記17)前記ビット列出力手段は、前記DC成分評価手段により評価された結果に基づいてスクランブルを行いDC成分が抑制されたビット列を出力することを特徴とする付記1に記載の符号器。
(付記18)前記ビット列出力手段は、前記DC成分評価手段により評価された結果によって特定されるDC成分が抑制されたビット列に付加されるn(nは自然数)ビットのビット列と、前記符号化ビット列生成手段により生成されたビット列との排他的論理和によるスクランブルをおこないDC成分が抑制されたビット列を決定することを特徴とする付記17に記載の符号器。
(付記19)前記符号化ビット列生成手段は、入力されたビット列にn(nは自然数)ビットのビット列と特定のq(qは自然数)ビットとを付加してスクランブルをおこなうことにより符号化されたビット列を生成し、前記ビット列出力手段は、決定したビット列から前記特定のqビットを除去して出力することを特徴とする付記1に記載の符号器。
(付記20)付記1〜19のいずれか1つに記載の符号器により符号化されたビット列を復号化する復号化手段を備えたことを特徴とする復号器。
(付記21)ビット列の符号化をおこなう符号化方法であって、
入力されたビット列に対してスクランブルをおこなうことにより符号化されたビット列を生成する符号化ビット列生成工程と、
前記符号化ビット列生成工程により生成されたビット列内の所定の幅のビット列をP(Pは自然数)ビットずつシフトさせながら選択し、選択されたビット列のDC成分を評価するDC成分評価工程と、
前記DC成分評価工程により評価された結果に基づいてDC成分が抑制されたビット列を出力するビット列出力工程と、
を含んだことを特徴とする符号化方法。