例えばMPEGなどの所定の規格に準拠する画像圧縮方法により、光ディスクなどの記録媒体に記録された動画像データまたは音声データを再生する光ディスク装置としては、例えば本出願人が先に出願した特願平4−92223号の明細書および図面に開示したものがある。
即ち、図19に示すように、この光ディスク装置においては、ピックアップ2は、光ディスク1にレーザ光を照射し、その反射光から光ディスク1に記録されている、例えば画像データを再生する。ピックアップ2が出力するデータは、復調回路3に入力され、そこで復調される。またピックアップ2の出力は、フェイズロックドループ(PLL)回路9にも入力され、クロックが抽出される。このクロックは、復調回路3、セクタ検出回路4に送られる。復調回路3により復調されたデータは、セクタ検出回路4を介してECC回路6に入力され、誤りの検出、訂正が行われる。
なお、セクタ検出回路4は、復調回路3で復調されたデータから、セクタナンバ(光ディスク1のセクタに割り当てられたアドレス)を検出し、制御回路31に出力する。また、セクタ検出回路4は、例えばセクタナンバを検出することができなかったり、検出することができても、それが、例えば連続していなかった場合、トラックジャンプ判定回路7にセクタナンバ異常信号を出力する。
ECC回路6は、セクタ検出回路4を介して復調回路3より供給されたデータからデータ誤りを検出し、そのデータに付加されているパリティビット(パリティデータ)を用いて誤り訂正を行う。さらに、ECC回路6は、データの誤りを訂正することができなかった場合、トラックジャンプ判定回路7にエラー発生信号を出力する。誤りの訂正が行われたデータは、ECC回路6からトラックジャンプ用のリングバッファメモリ5に供給され、制御回路31の制御に従ってそこに記憶される。
制御回路31は、セクタ検出回路4の出力から、光ディスク1の各セクタ毎のアドレスを読み取り、そのアドレスに対応して、ECC回路6からのデータを、リングバッファメモリ5に記憶させる(リングバッファメモリ5に書き込む)書き込みアドレス(書き込みポイント(WP))を指定する。また、制御回路31は、後段のデコード部20のビデオコードバッファメモリ10からのコードリクエスト信号に基づき、リングバッファメモリ5に書き込まれたデータの読み出しアドレス(再生ポイント(RP))を指定する。そして、その再生ポイント(RP)からデータを読み出し、ビデオコードバッファメモリ10に供給し、記憶させる。
ビデオコードバッファメモリ10に記憶されたデータは、その後段の逆VLC回路11からのコードリクエスト信号に基づいて、逆VLC回路11に転送される。逆VLC回路11は、入力されたデータを逆VLC処理し、入力されたデータの逆VLC処理が終了すると、そのデータを逆量子化回路12に出力するとともに、コードリクエスト信号をビデオコードバッファ10に出力し、新たなデータの入力を要求する。さらに、逆VLC回路11は、量子化ステップサイズ、または動きベクトルを、逆量子化回路12、または動き補償回路15にそれぞれ出力する。
逆量子化回路12は、逆VLC回路11より供給された量子化ステップサイズに従って、入力されたデータを逆量子化し、逆DCT回路13に出力する。逆DCT回路13は入力されたデータを逆DCT処理し、加算回路14に供給する。
逆DCT回路13より加算回路14に供給されたデータが、Iピクチャのデータである場合、そのデータは、加算回路14を介してそのままフレームメモリ16に出力され、記憶される。
また、そのデータが、Iピクチャを予測画像とするPピクチャのデータである場合、既に復号されたIピクチャのデータが、フレームメモリ16より読み出され、動き補償回路15に供給される。動き補償回路15は、フレームメモリ16から供給されたデータに対し、逆VLC回路11より供給された動きベクトルに対応する動き補償を施して予測画像とし、加算回路14に供給する。加算回路14は、逆DCT回路13より出力されたデータと、動き補償回路15より出力されたデータを加算し、Pピクチャのデータを生成する。このデータもフレームメモリ16に記憶される。
逆DCT回路13より出力されたデータがBピクチャのデータである場合、既に復号されたIピクチャまたはPピクチャデータが、フレームメモリ16より読み出され、動き補償回路15に供給される。動き補償回路15に供給されたデータは、そこで動き補償が施され、加算回路14に供給される。加算回路14は、逆DCT回路13より出力されたデータと、動き補償回路15より出力されたデータを加算するので、復号されたBピクチャデータが得られることになる。このデータもフレームメモリ16に記憶される。
以上のようにして復号され、フレームメモリ16に記憶された画像データは、D/Aコンバータ17でD/A変換された後、ディスプレイ18に供給されて表示される。
ところで、上述したように、制御回路31は、ビデオコードバッファメモリ10からのコードリクエスト信号に対応して、リングバッファメモリ5に記憶されているデータをビデオコードバッファメモリ10に供給するが、例えば単純な画像に関するデータ処理が続き、ビデオコードバッファメモリ10から逆VLC回路11へのデータ転送量が少なくなると、リングバッファメモリ5からビデオコードバッファメモリ10へのデータ転送量も少なくなる。すると、リングバッファメモリ5の記憶データ量が多くなり、オーバーフローする恐れがある。
このため、トラックジャンプ判定回路7は、制御回路31により制御されている書き込みポイント(WP)および再生ポイント(RP)からリングバッファメモリ5が現在記憶しているデータ量を算出(検出)し、そのデータ量があらかじめ設定された所定の基準値を越えた場合、リングバッファメモリ5がオーバーフローする恐れがあると判断して、トラッキングサーボ回路8にトラックジャンプ指令を出力する。
また、トラックジャンプ判定回路7は、セクタ検出回路4からのセクタナンバ異常信号またはECC回路6からのエラー発生信号を検出した場合、制御回路31により制御されている書き込みポイント(WP)と再生ポイント(RP)から、リングバッファメモリ5内に残存しているデータ量を求める。また、現在のトラック位置から、光ディスク1が1回転する間に(光ディスク1の1回転待ちの間に)、リングバッファメモリ5からビデオコードバッファメモリ10への読み出しを保証するのに(リングバッファメモリ5にアンダーフローを発生させないために)必要なデータ量を求める。
リングバッファメモリ5の残存データ量が充分大きい場合、リングバッファメモリ5から最高の転送レートでビデオコードバッファメモリ10へデータが読み出されても、リングバッファメモリ5にはアンダーフローが生じないため、トラックジャンプ判定回路7は、エラー発生位置をピックアップ2で再度再生することによりエラー回復が可能であると判断して、トラッキングサーボ回路8にトラックジャンプ指令を出力する。
トラックジャンプ判定回路7によりトラックジャンプ指令が出力されると、トラッキングサーボ回路8は、ピックアップ2による再生位置をトラックジャンプさせる。即ち、例えば光ディスク1の内周から外周へデータが記録されている場合、トラッキングサーボ回路8は、現在位置から内周側の隣接トラックへピックアップ2をジャンプさせる。そして、ピックアップ2による再生位置が、光ディスク1が再び1回転して元の位置に到来するまでの間、つまりセクタ検出回路4から得られるセクタナンバがトラックジャンプ時のセクタナンバになるまでの間、新たなデータのリングバッファメモリ5への書き込みが禁止され、必要に応じてリングバッファメモリ5に既に記憶されているデータが、ビデオコードバッファメモリ10に転送される。
また、トラックジャンプ後、セクタ検出回路4から得られるセクタナンバが、トラックジャンプ時のセクタナンバと一致しても、リングバッファメモリ5に記憶されているデータ量が所定の基準値を越えている場合、即ちリングバッファメモリ5がオーバーフローする可能性がある場合、リングバッファメモリ5へのデータの書き込みは再開されず、再びトラックジャンプが行われる。
ここで、リングバッファメモリ5は、光ディスク1の少なくとも1トラック分(1回転分)のデータを記憶することができる容量を有している。
よって、光ディスク1が、例えば線速度一定(CLV)ディスクである場合、回転周期は最外周において最大となるため、最外周における1トラック分(1回転分)の記憶容量、つまり(最外周の回転周期)×(ECC回路6からリングバッファメモリ5へのデータ転送レート)の記憶容量を少なくとも有する。
リングバッファメモリ5からビデオコードバッファメモリ10へのデータの最大転送レートは、ECC回路6からリングバッファメモリ5へのデータ転送レートと等しいか、またはそれより小さい値に設定されている。このようにすることにより、ビデオコードバッファメモリ10からリングバッファメモリ5へのデータ転送のコードリクエストは、トラックジャンプのタイミングに拘らず、自由に送出することができる。
以上のように、この光ディスク装置によれば、リングバッファメモリ5の記憶容量に対応してピックアップ2をトラックジャンプさせるようにしたので、光ディスク1からの再生画像の複雑さまたは平坦さに拘らず、ビデオコードバッファメモリ10のオーバーフローまたはアンダーフローが防止され、均一な画質の画像を、長時間にわたって再生することができる。
さらに、この光ディスク装置によれば、光ディスク1から読み出されたデータにエラーが生じた場合、ピックアップ2をトラックジャンプさせ、再びデータを光ディスク1から読み出すようにしたので、データの読み出しエラーによる再生画像の劣化を防止することができる。
ところで、図19の光ディスク装置におけるECC回路6は、例えば図20に示すように構成される。復調回路3(図19)より出力されたデータは、セクタ検出回路4を介してECC回路6に入力され、その入力段にあるバッファメモリ41(図20)に一時記憶される。バッファメモリ41に記憶されたデータは、メモリ42に順次転送され、アドレス発生器43が発生するアドレスに従って記憶される。メモリ42に記憶されたデータは、そこから読み出され、誤り訂正回路44に転送される。誤り訂正回路44は、メモリ42から転送されたデータに対し、誤り訂正を施し、誤り訂正を施したデータを再びメモリ42に格納する。
ここで、メモリ42に対するデータの書き込みと読み出しについて、図21のメモリマップを参照して説明する。図中の丸印は誤り訂正の1シンボル単位、通常は1バイトを示す。メモリ42に対するデータの書き込みまたは読み出しは、図21に示すメモリマップの横1行を1データ長とした単位で行われる。また、その最後にはパリティビット(図中、斜線を付してある部分)が付加されており、メモリマップの斜め方向(以下、インタリーブ方向と記載する)(図中、点線の矢印で示す方向)のデータの並びにおける最後の部分のデータとしてのパリティビットが、このインタリーブ方向に並ぶデータの誤りを訂正するためのパリティビットになっている。
即ち、例えばバーストエラーを孤立化させるため、データと、そのデータの誤りを訂正するためのパリティビットが、インタリーブ方向に並ぶようになっている。
従って、メモリ42においては、まずバッファメモリ41からのデータが、ライトポインタwp1の指すアドレスに従って、アドレス方向に書き込まれる。
なお、アドレス方向とは、図21のメモリマップにおいて、左から右、そして上から下へ進む方向を意味する。
そして、少なくとも、インタリーブ方向にデータを読み出すのに必要な記憶容量(アドレス)分(以下、インタリーブ長と記載する)だけ遅れたリードポインタrp1の指すアドレスに従って、既にメモリ42に書き込まれたデータが、インタリーブ方向に読み出され、誤り訂正回路44に供給される。誤り訂正回路44では、上述したようにしてインタリーブ方向のデータの並びに対して、誤り訂正処理が施され、誤り訂正されたデータは、メモリ42に転送される。
誤り訂正回路44で誤り訂正されたデータは、ライトポインタwp2の指すアドレスに従って、最初に書き込まれた位置(アドレス)に再び書き込まれ、アドレス方向に移動するリードポインタrp2に従って、バッファメモリ45(図20)に転送される。
以上の動作を1サイクルとして、これを繰り返すことにより誤り訂正されたデータがバッファメモリ45よりリングバッファメモリ5(図19)に、順次出力される。
従って、誤り訂正されたデータは、一度メモリ42(図20)に記憶されてから、再度リングバッファメモリ5に記憶されることになる。
このように、従来の光ディスク装置においては、異なる2つのメモリ(メモリ42とリングバッファメモリ5)に、順次データを出し入れするという、冗長な動作が行われており、装置の規模が大きくなるばかりでなく、データ処理速度が遅くなるという課題があった。
そこで本出願人は、特願平4−285475号として、リングバッファメモリ5に記憶されたデータの誤りを訂正することを先に提案した。
特開平5−161115号公報
特開平6−111495号公報
図1は、本発明のデータ再生方法を応用した光ディスク装置の一実施例の構成を示すブロック図である。図中、図19における場合と対応する部分については同一の符号を付してある。
次に、この光ディスク装置について説明するが、その前に、図2を参照して、この光ディスク装置において再生される光ディスク1におけるデータフォーマットについて説明する。
図2において、丸印は1シンボル(1バイト)のデータを示す。データは、例えば1符号(1行)が128バイト単位とされ、16符号ごとにセクタヘッダを含む。
セクタヘッダは、図3に示すように、セクタヘッダであることを示すセクタマーク、セクタごとに1ずつ増加するセクタアドレス、およびセクタヘッダの誤り検出のための巡回符号(CRC)から構成される。
図2に示すように、1行が128バイトごとに並べられたデータは、斜め方向(矢印A方向)に読んだデータに対して、16バイトの誤り訂正符号が内パリティとして付加される。図において、内部に縦線を付加して表した丸印が内パリティを表している。内パリティは、いわゆる畳み込みが行なわれており、斜め方向のデータの先頭から最後まで、途切れることなくパリティが計算されている。この斜め方向の144(=128+16)バイトの符号を内符号と称する。
次に、内パリティの計算が終った行に対して、横方向(矢印B方向)にデータを読み、データ128バイトと内パリティ16バイトの合計144バイトに対して、16バイトの誤り符号が外パリティとして付加される。図2において、横線を付加した丸印が外パリティを表している。この横方向の160(=128+16+16)バイトの符号を外符号と称する。
これら2系統のパリティ(内パリティと外パリティ)はセクタヘッダを含んで計算されており、外符号訂正または内符号訂正で、セクタヘッダ部分に生じた誤りを訂正することができる。
各行の160バイト(データが128バイト、内パリティと外パリティが32バイト)のデータの先頭には、図2に示すように、シンク信号が付加されている。
図1のピックアップ2は、以上のようなフォーマットにより画像データが記録されている光ディスク1にレーザ光を照射し、その反射光から光ディスク1に記録されている、例えば画像データを再生する。ピックアップ2が出力するデータは、復調回路3に入力され、復調される。またピックアップ2の出力は、PLL回路9にも入力され、クロックが抽出される。このクロックは、復調回路3とバッファメモリ61に送られる。復調回路3により復調されたデータは、バッファメモリ61に入力される。バッファメモリ61から出力されたデータは、制御回路74の制御のもとにリングバッファメモリ5に書き込まれる。
復調回路3は、シンク保護機能を有している。すなわち、ディスクの正常な再生状態では、再生データより各符号の先頭でシンクが等間隔で得られるが、シンクが得られなかった場合は、図4に示すように、シンクの補間を行う。即ち、シンクは一定の周期で発生するため、この周期でシンクが検出されなかった場合、疑似的にシンクを生成し、出力する。復調回路3以降の回路はシンクを1動作単位としているため、このようなシンク補間により安定した動作が可能となる。
また、復調回路3は変換表(テーブル)を内蔵しており、入力データを変調単位ごとに変換表と照らしあわせて復調を行うが、変換表にないデータの組み合わせ、あるいは禁止されているデータの組合せを見つけた場合、そのシンボルごとにエラーフラグを立てる(フラグを1とする)。また、PLL回路9より供給されるクロックからPLLのロック状態を知り、ロックがはずれている間はエラーフラグを立てる。
また、さらに、シンクを補間した場合と、1符号中のエラーフラグが所定の設定数より多い場合は、1符号長の全シンボルに対して、エラーフラグを立てる。このエラーフラグは、データと一緒にバッファメモリ61に送られる。
次に、リングバッファメモリ5およびフラグレジスタ73に対するデータの書き込みと読み出しについて説明する。
リングバッファメモリ5としては、スタティックランダムアクセスメモリ(SRAM)や、ダイナミックランダムアクセスメモリ(DRAM)を用いることができる。SRAMは、DRAMと異なり、制限なく、データを連続して高速に書き込みまたは読み出すことができるが、高価である。
これに対して、DRAMは安価であるが、データを高速で書き込みまたは読み出すには、いわゆる高速ページモードを使用する必要がある。高速ページモードのページ単位は、例えば256バイトと制限されており、これを越えてデータを読み書きする場合は、ページ切替えを行う必要がある。このページ切替えの回数が短いほど、処理時間が早くなる。そこで、本装置では、外符号訂正(図2の矢印B方向の訂正)を行う場合と、内符号訂正(図2の矢印A方向の訂正)を行う場合とで、異なる方向にデータを読み書きする必要があるが、その際、いずれの場合においても、ページ切替えが、できるだけ等間隔で行われ、かつ、その回数が少なくなるように、リングバッファメモリ5へのデータの格納方法が工夫されている。
以下に、このリングバッファメモリ5へのデータの格納方法を説明する。即ち、図2に示すフォーマット上のデータを、符号番号(図2の行)をi、符号内のシンボルの番号をシンク先頭より数えてjとし、行列D(i,j)で表すものとする。このようにすると、第i番目(第i行目)の符号は、D(i,0)からD(i,159)までの160個のシンボルで構成されることになる。内符号方向(図2の矢印Aの方向)のデータ列は、次のように表される。
D(i,0),D(i+1,1),D(i+2,2),
・・・・・,D(i+143,143)
一方、リングバッファメモリ5のアドレスを、行アドレスをm、列アドレスをnとして、R(m,n)と表す。nは0以上159以下の値である。行アドレスと列アドレスは、それぞれ16をページ単位とする。ここで、図2のフォーマット上のデータD(i,j)は、リングバッファメモリ5に対して、次式で得られるm,nが示すアドレスR(m,n)に書き込まれる。即ち、
k=(15−(i mod 16))+j
とおいて、
m=i
k<160のときn=k
k≧160のときn=k−160
とされる。ただし、演算子modは、剰余を表す。
リングバッファメモリ5のアドレスR(m,n)にデータD(i,j)が格納された状態を図示すると、図5に示すようになる。また、この場合、D(1,0)を先頭とする外符号と内符号のデータ順は、図6に示すようになる。図6より明らかなように、外符号は水平方向に、内符号は垂直方向に、それぞれ配列されるため、いずれの場合も、最初の数シンボルを除いて、16シンボルおきに、等間隔で、ページ切替えが発生する。従って、このようにリングバッファメモリ5にデータを格納することで、外符号、内符号とも、高速ページモードにより高速な読み書きが実現できる。
リングバッファメモリ5に対する書き込みと読み出しは、復調回路3からバッファメモリ61に入力されるデータレートの数倍、例えば5倍のレートで行う。図7にそのタイミングを示す。図7の1シンク時間は、図4に示したシンク間の間隔と同一の時間(シンクの周期)であり、160バイトの1符号分のデータが復調回路3からバッファメモリ61に入力される時間に対応する。
図7のXwは、バッファメモリ61に一時記憶された1シンク分のデータを、リングバッファメモリ5に書き込むタイミング(期間)を示す。Xcは、誤りシンボルと外符号フラグの書き換えのタイミング(期間)を示す。Yrは、リングバッファメモリ5上の内符号データの読み出しのタイミング(期間)を示す。Ycは、誤りシンボルと内符号フラグの書き換えのタイミング(期間)を示す。Zrは、リングバッファメモリ5上のデータのビデオコードバッファメモリ10への読み出しのタイミング(期間)を示す。
図8は、リングバッファメモリ5のメモリ空間を、1符号長を横1行として模式的に示したものである(実際には、DRAM上には、図5および図6に示したようにデータが格納される)。Xwの書き込みポインタをPXwで示す。各ポインタは、図の上方向に向かって移動するものとする。
リングバッファメモリ5には、外符号訂正と内符号訂正の訂正結果のフラグを格納する領域が各符号につき1ビットずつ設けてあり、図8の右端に、データ領域と対応がつくように示してある。
図9及び図10に、フラグレジスタ73の構成例を示す。この実施例の場合、スイッチ81を介して入力されるデータが、144個の連続するレジスタを、更にスイッチ82を介して出力されるようになされている。また、出力されたデータは、1つのレジスタとスイッチ81を介して、再び144個の連続するレジスタに戻されるようになされている。
いま、誤り訂正が進行中であり、図8に示すPYrの行に対する外符号訂正のPYrより1つ下のシンボルを含む図8の矢印Aの方向の内符号訂正が終了している状態であるとする。このとき、フラグレジスタ73の144個のレジスタには、図10(a)に示すように、過去の外符号フラグfi+143,fi+142,・・・fiが記憶された状態となっている。フラグレジスタ73が空き状態(即ち、誤り訂正が初めて開始される状態)から、このような状態になるまでの経過については後述する。以下に、誤り訂正からビデオコードバッファにデータが送られるまでの動作を、図7のタイミングチャートにそって説明する。
図7の期間Xwにおいて、バッファメモリ61に記憶された図8のポインタPXwの示す1行分のデータをリングバッファメモリ5に書き込むとき、制御回路74により、スイッチ62の連動する切替接片63,64は、いずれも接点a側に接続されている。バッファメモリ61から出力されたデータは、リングバッファメモリ5に書き込まれると同時に、同じタイミングで、やはりバッファメモリ61より出力されるエラーフラグとともに、スイッチ62の切替接片63または64を介して、誤り訂正回路71(図20の誤り訂正回路44に対応する)に入力される。誤り訂正回路71は、期間Xwにおいて、入力された図8のポインタPXwの示す行のデータを、外パリティとエラーフラグを用いてイレージャ訂正する。訂正の結果、誤りシンボルとその訂正値が得られる。
次に、図7の期間Xcにおいて、誤り訂正回路71は、訂正された値をリングバッファメモリ5及びフラグレジスタ73に供給し、リングバッファメモリ5では、対応する誤りシンボルに対して訂正された値の上書きが行われる。また、訂正を行ったので、図8の外符号フラグ(いまの場合、外符号フラグfi+144)をゼロにする。もし、誤りの数が多くて訂正不能の場合は、リングバッファメモリ5上のデータの書き換えはせず、訂正不能ということで、外符号フラグfi+144には1を書き込む。
次に図7の期間Yrにおいて、スイッチ62の切替接片63,64が接点bに切り替えられ、内符号訂正のため、ポインタPYrの示す位置から、リングバッファメモリ5よりインタリーブ方向(図8の矢印A方向(図6の垂直方向))にデータが読み出され、誤り訂正回路71に入力される。一方、フラグレジスタ73からは、外符号フラグfi+143,fi+142,・・・fiが順に読み出され、内符号の訂正に使用される。誤り訂正回路71は、入力された外符号フラグと内パリティを用いて、入力データ(内符号)の誤り訂正(イレージャ訂正)を行う。
このとき、フラグレジスタ73は、以下のように動作する。図10(b)に示すように、誤り訂正回路71から出力された外符号フラグfi+144は、スイッチ81の接点bを介して、フラグレジスタ73の左端のレジスタに記憶される。同時に、フラグレジスタ73の右端のレジスタに記憶されていた外符号フラグfi+143が、スイッチ82を介して出力される。
次に、図10(c)に示すように、スイッチ81が接点a側に切り替えられ、外符号フラグfi+144が144個のシフトレジスタの右端まで転送される。同時に、各レジスタに記憶されていた外符号フラググfi+142,・・・fiが、スイッチ82を介して出力される。このように、フラグレジスタ73は、1個の内符号長分の外符号フラグfi+143,fi+142,・・・fiを出力することができる。また、フラグレジスタ73の144個のレジスタには、外符号フラグfi+144,fi+143,fi+142,・・・fi+1が記憶される。このように、フラグレジスタ73は、常に最新の外符号フラグを1個の内符号長分(144個)だけ記憶する。
外符号フラグを、リングバッファメモリ5の空きエリアに書き込んだにも拘らず、フラグレジスタ73に記憶して、誤り訂正回路71に供給するのは、リングバッファメモリ5内の異なる領域から、データと外符号フラグをシンボル毎に同時に読み出すことができないためである。
次に、図7の期間Ycにおいて、外符号の訂正と同様に、リングバッファメモリ5上の誤りシンボルに対し、訂正された値がリングバッファメモリ5内に送られて上書きされる。もし、誤りが多くて訂正不能の場合は、データの書き換えは行われない。
また、内符号フラグgi乃至gi+143のすべてに、誤りを訂正したならゼロが、訂正不能なら1が、それぞれリングバッファメモリ5の空きエリアに書き込まれる。ただし、内符号フラグgi乃至gi+143の中で、過去の内符号訂正において、すでに1が書き込まれているものに対しては、何も書き込まれない。
この動作を図11にて説明する。図11で、PYr1,PYr2,PYr3のポインタが示す3つの内符号のみが訂正不能であったとすると、図11に示すように、内符号フラグが書かれる。すなわち、訂正不能な内符号が外符号方向から見て、どこまで及ぶかを示したものが内符号フラグである。
このようにして、誤り訂正を終えたリングバッファメモリ5上のデータは、最後に、図7の期間Zrにおいて、デコード部20のビデオコードバッファメモリ10へと読み出される。図8のPZrが、この場合の読み出しポインタである。データは順方向(水平方向)に読むが、内パリティと外パリティは不要なので(訂正は既に完了しているので)、飛ばして読み出す(読み出さない)。また、図8に示すように、PZrに対して、図示せぬANDゲートを介した外符号フラグfjと内符号フラグgjの論理積が、j行目の符号の訂正不能フラグとしてビデオコードバッファメモリ10に送られる。
以上のような一連の動作が、図7のタイミングチャートにそって繰り返され、誤り訂正回路71によって外符号訂正と内符号訂正を終えたデータが、リングバッファメモリ5を介してビデオコードバッファ10に供給される。
ここで、fjとgjの論理積をとる理由は、例えば、ある内記号が訂正不能となると、図11に示したように、斜め方向(インタリーブ方向)に内符号長の長さに渡り内符号フラグが立ってしまい、訂正不能部分が特定できないためである。外符号フラグfjと内符号フラグgjとの論理積をとれば、内符号フラグが立っていても、外符号フラグが訂正可能であったなら、その行jには誤りがないと判断でき、訂正不能な誤り部分に対し、より正確に訂正不能フラグを立てることが可能となる。
尚、図8に示すように、ポインタPYeとPZrの差部分が、リングバッファメモリ5のデータ残量となる。ここで、PYeは、内符号訂正が完了した最近のデータのポインタを表す。
リングバッファメモリ5からビデオコードバッファメモリ10へ送られたデータは、訂正不能フラグがゼロならば(訂正が正しく行われていれば)、図19における場合と同様にして、デコード部20でデコード(復号)される。訂正不能フラグが1ならば、その符号は誤りを含むので、後段の動画像復号回路(逆VLC回路11乃至動き補償回路15)では、このフラグがゼロになるまで復号を停止し、ディスプレイ18には、すでに復号済みでフレームメモリ16に格納されている画像データを繰り返し送る(従って、静止画となる)ことで、画像の乱れを防ぐ。
ここで、フラグレジスタ73が、空き状態から図10(a)の状態になるまでの動作について示しておく。
いま、ポインタPXwが、図8において、外符号フラグfiの位置(PYeの位置)にあり、ここから初めてエラー訂正が始まるものとする。そして、このPYeの行の外符号訂正が完了したとき、図9(a)に示すように、スイッチ81が接点b側に切り替えられ、誤り訂正回路71が出力する外符号フラグfiが、144個の連続するシフトレジスタの左端のレジスタに入力される。この左端のシフトレジスタの外符号フラグfiは、144個のシフトレジスタを順次右方向にシフトされ、右端のレジスタまで転送される。
次に、ポインタPXwが図8において1行だけ上(即ち、PYeの1行上の位置)に移動される。そして、その行の符号の外符号訂正が行われ、図9(b)に示すように、外符号フラグfi+1が144個の連続するシフトレジスタの左端のレジスタに入力される。このとき、144個の連続するシフトレジスタの右端のレジスタの外符号フラグfiは、1個のレジスタに転送される。
さらに図9(c)に示すように、スイッチ81が接点a側に切り替えられ、外符号フラグfi+1が、144個のシフトレジスタを順次右方向にシフトされ、右端のレジスタまで転送される。このとき、スイッチ81が接点a側に切り替えられているため、外符号フラグfiが、144個のシフトレジスタの左端に入力され、順次右方向にシフトされて、右端から1つ手前のレジスタまで転送される。
次に、ポインタPXwがさらに1行だけ上(即ち、PYeの2行上の位置)に移動される。そして、その行の符号の外符号訂正が行われ、図9(d)に示すように、スイッチ81が接点b側に切り替えられ、外符号フラグfi+2が144個の連続するシフトレジスタの左端のレジスタに入力される。このとき、144個の連続するシフトレジスタの右端のレジスタの外符号フラグfi+1は、1個のレジスタに転送される。また、外符号フラグfiは、シフトレジスタの右端のレジスタに転送される。
さらに、図9(e)に示すように、スイッチ81が接点a側に切り替えられ、外符号フラグfi+2が、144個のシフトレジスタを順次右方向にシフトされ、右端のレジスタまで転送される。このとき、スイッチ81が接点a側に切り替えられているため、外符号フラグfi+1,fiが、144個のシフトレジスタの左端に順次入力され、さらに順次右方向にシフトされて、右端から2つ手前と3つ手前のレジスタまでそれぞれ転送される。
次に、図9(f)に示すように、スイッチ81が接点b側に切り替えられ、以下同様の処理が繰り返される。従って、フラグレジスタ73には、1シンクに1個の割合で、外符号フラグが入力される。尚、図9(a)から図9(f)及び図10の期間は、スイッチ82はオープンとされており、外符号フラグは出力されない。
以上のように、ポインタPXwが図8に示す位置まで来た時点で、図10(a)に示すように、フラグレジスタ73の144個のレジスタには、外符号フラグfi+143,fi+142,・・・fiが記憶された状態となる。
ところで、リングバッファメモリ5のメモリ空間を、図12のように、円で表すとすると、ポインタPXw,PYr,PZrは、矢印で示す方向(反時計方向)に、互いに追い越すことなく、回転することになる。ポインタPXwとPYrの距離は一定で、離れることはない。リングバッファメモリ5は、ビデオコードバッファメモリ10からの要求によりデータを読み出し、ビデオコードバッファメモリ10に供給するが、それに対応して、図に示すデータ残量が変化することになる。
リングバッファメモリ5に対するデータの読み書きは制御回路74が制御しており、以上のポインタPXw,PYr,PZrは制御回路74により管理される。また、フラグレジスタ73に対する書き込み、読み出しの制御も制御回路74が行う。
次に、セクタアドレスの抽出について述べる。前述したように、バッファメモリ61から出力されたデータは、スイッチ62を介して誤り訂正回路71に供給され、そこで訂正されるが、外符号訂正されたデータは外符号フラグとともにセクタ検出回路72に送られる。セクタ検出回路72は入力されたデータよりセクタマークを検索し、セクタヘッダを検出する。そしてCRCによる誤り検出を行う。また、セクタアドレスをセクタヘッダから読み出して記憶する(図3)。
セクタアドレスは、CRCの誤り検出で誤りが検出されない場合、又はCRCの誤り検出で誤りが検出されても、外符号フラグがゼロの場合に、制御回路74に送られる。
セクタアドレスの抽出は、外符号訂正後に行なわれるが、外符号は光ディスク1上でのデータの並びと同方向の並びのため、バーストエラーには弱く、訂正不能のためセクタアドレスが得られないことがある。また、外符号訂正で誤訂正が生じる可能性もある。従って、セクタごとに正しいセクタアドレスが得られるとは限らない。そこで、セクタアドレスの正しさは、次に説明する制御回路74でのフライホイール動作により監視される。
次に、セクタアドレスのフライホイール動作について説明する。制御回路74は、セクタ検出回路72より入力されるセクタアドレスを監視し、セクタアドレスが16符号間隔(図2)で検出でき、かつ、セクタアドレスの値が1ずつ増加しているならば、セクタアドレスを有効とする。有効セクタアドレスが予め設定したセクタ数、例えば3セクタ以上続けば、フライホイール(フラグ)オンとする。
フライホイールがオンの場合に、セクタアドレスが有効でない状態が、予め設定したセクタ数、例えば5セクタ以上続いたら、フライホイールをオフとする。このような状態は、例えば、衝撃などでピックアップ2が別のトラックに飛んでしまった場合に起こり得る。この場合は、異常処理動作を行う。これについては後述する。
図13にフライホイールの状態を示す。Aは有効セクタアドレスを示し、Xは無効セクタアドレスを示す。Aの添字はアドレス値を示す。左から右へとセクタアドレスが得られたものとする。A22を始点として、A23,A24,A25と3セクタ続けて有効セクタアドレスが得られたので、フライホイールオンになる。また、A32の後、5セクタ続けて有効セクタアドレスが得られなかったので、フライホイールオフとなる。
フライホイールがオンの状態では、最後に得られた有効セクタアドレスを最新有効セクタアドレスとして、常時更新しながら記憶している。図13ではA32が最新有効セクタアドレスである。
このようにフライホイールをオン、オフすることで、セクタアドレスが正しく得られているか否かを監視し、データに誤りがあって、一時的にセクタアドレスが得られない場合、セクタアドレスを直前の値から連続するものとして補間することにより、安定したリングバッファメモリ5へのデータの書き込みが可能となる。
光ディスク1の再生を始めると、バッファメモリ61から出力されたデータはリングバッファメモリ5にはすぐには書き込まれない。制御回路74において、セクタアドレスが連続して検出され、フライホイールがオンになって初めて、ポインタPXw,PYrがリングバッファメモリ5に送られ、リングバッファメモリ5の書き込みおよび読み出しと、誤り訂正回路71における内符号の誤り訂正が開始される(外符号の訂正は、常に行われている)。このことは、書き込みを中断後、再開する場合も同様であり、リングバッファメモリ5への書き込みは、常にフライホイールがオンの状態で行なわれる。
次に、ピックアップ2のトラックジャンプについて説明する。リングバッファメモリ5のデータ残量が設定値以上になり、オーバーフローの恐れがある場合、すなわち図12で、ポインタPXwがPZrに追いつく可能性のある場合、制御回路74よりトラッキングサーボ回路8にトラックジャンプ指令が出力される。このとき、リングバッファメモリ5の書き込みと読み出し、および誤り訂正回路71の内符号の誤り訂正動作は中断される。そして、フライホイールはオフとされ、最新有効セクタアドレス、例えば図13におけるA32が記憶される。
図14は、光ディスク1の記録トラックを示す。この図で、最新有効セクタアドレスA32は、ジャンプを開始する点Pの手前に位置することになる。ジャンプが指令されると、図に示すように、ピックアップ2(再生点)は点Pから点Qへ飛び、内周トラックを読み始め、フライホイールは再びオンになる。光ディスク1が1周して、記憶していた最新有効セクタアドレスA32までピックアップ2が来たら、そこからリングバッファメモリ5の書き込みと読み出し、および誤り訂正回路71の内符号の誤り訂正を再開する。
図15(a)は、ピックアップ2が再び点Pに来たとき、セクタアドレスが検出される様子を示したもので、A32のセクタよりリングバッファメモリ5にデータの書き込みが再開される。
ここで、A32が無効セクタである場合があり得る。図15(b)は、そのような場合の例を示す。この場合、フライホイールがオンになっているので、A32が検出されなくても、過去のアドレスより補間する。そして、A31の16符号だけ後のデータより書き込み動作を再開する。
以上の動作を行うことで、トラックジャンプで書き込みを中断したにも拘らず、リングバッファメモリ5に連続したデータを続けて書くことができる。
トラックジャンプによりポインタPXw,PYr(PYe)は停止するが、その間、ビデオコードバッファメモリ10の要求に応じデータを読み出すので、ポインタPZrは図12において反時計方向に進み、リングバッファメモリ5のデータ残量は減り、オーバーフローを防ぐことができる。
次に、異常処理動作について説明する。例えば機械的振動(外乱)などによりピックアップ2が意図しないトラックジャンプを起こしたとする。このとき、連続したセクタアドレスが得られないので、フライホイールはオフとなり、リングバッファメモリ5の書き込みと読み出し、および誤り訂正回路71の内符号の誤り訂正動作は中断される。また、このとき、制御回路74は最新有効セクタアドレスを参照し、それより例えば20セクタ前から読み出すようにピックアップ2を移動させる。こうすることで、最新有効セクタアドレスの手前で再びフライホイールがオンになり、最新有効セクタから同様に書き込みを再開することができる。
この際、データ残量に十分余裕があれば、ピックアップ2が意図しないトラックジャンプを起こした位置に復帰してデータ読み出しを再開するまでに、リングバッファメモリ5のデータ残量がゼロになることはない。従って、リングバッファメモリ5からビデオコードバッファメモリ10への読み出しは途切れることがなく、画像復号再生には全く影響を与えずに回復が可能である。
次に、誤り訂正不能が生じた場合の処理について述べる。図16は、図12と同様に、リングバッファメモリ5上の各ポインタを示す。ここで点Rから後の点Xで表した部分が、外符号訂正と内符号訂正で訂正不能であったとする。制御回路74は訂正不能部分の先頭セクタのアドレスを記憶しておく。そして、制御回路74において、誤り訂正可能であると判定された場合、訂正不能部分の終わりから一定距離、例えば5セクタ過ぎた点Sまで、訂正を進める。
また、制御回路74は、点Rから点Sまで誤り訂正を行うのに必要な時間に、ディスク1周に要する時間を加えた時間を算出する。そしてこの時間に、リングバッファメモリ5から、ビデオコードバッファメモリ10へのデータ転送の最大速度を乗算し、この乗算して求めた時間内に、リングバッファメモリ5が失い得るデータの最大量を求める。さらに、このデータ量とリングバッファメモリ5上のデータ残量とを比較する。データ残量の方が大きければ、ポインタPZrがPYrに追いつくことはあり得ないので、繰り返し訂正可能であると判定する。
ここで、ピックアップ2のディスク半径方向の位置情報よりディスク1周の時間を、ある程度正確に求めることで、とくに1周の時間が短いディスク内周では、データ残量が少ない場合でも、繰り返し訂正の可能性を高めることができる。即ち、ピックアップ2がディスク1の最外周近くにある場合は、ディスクの1回転周期が長いので、それ相当のデータ残量がリングバッファメモリ5に残っていないと、上記の再訂正はできないが、内周にある場合は、回転周期が短く、データ残量が少なくとも、再訂正が可能となる。
繰り返し訂正可能であると判定された場合、まずトラックジャンプを行って、光ディスク1からの読み込みを停止し、スイッチ62の切替接片63,64を接点bに切り替える。ポインタPXwおよびPYrは、図17に示すように、点Rまで戻され、そこから外符号訂正と内符号訂正が再度開始される。そして点Sまで訂正を終えると、そこでポインタを停止し、スイッチ62の接片63,64を接点aに切り替え、点S以降のデータが光ディスク1より読み込まれるのを待って、書き込みを再開する。この点Sにおける書き込みは、上述したトラックジャンプのときと同様に、最新有効セクタアドレスより再開される。
尚、復調回路3からのエラーフラグは既に失われている。従って、繰り返し訂正を行う場合、2回目の外符号訂正時には、参照すべきエラーフラグが存在しないので、通常の訂正(イレージャ訂正ではなく、外パリティだけを用いた訂正)を行う。但し、この2回目の外符号訂正により得られた外符号フラグは、2回目の内符号訂正のイレージャ訂正に用いられる。
このような制御を行うことで、リングバッファメモリ5からビデオコードバッファメモリ10への読み出しを途切れさせることなく(画像復号再生には全く影響を与えずに)、訂正不能部分を再度訂正することが可能となる。また、データ残量に余裕がある限り、何回でも訂正不能部分を繰り返し訂正することができ、誤り訂正能力を向上させることが可能となる。
次に、特殊再生時の動作について述べる。早送り、早戻し(巻戻し)などの特殊再生では、例えば光ディスク1上のIピクチャのデータのみを順に読み込み、再生する。このとき、内符号はインタリーブされているため、所望のセクタよりインタリーブ長だけ手前から読み始める必要がある。また、読み終りも、必要な最後のデータからインタリーブ長分だけ余分に読む必要がある。このデインタリーブに要する時間は、通常再生時には連続してデータが処理されるため問題ないが、所望のデータ(Iピクチャのデータ)を高速で読み出す動作を繰り返す特殊再生では、高速再生を困難にする要因となる。即ち、再生時間を遅くする要因となる。
そこで、特殊再生時には、外符号による誤り訂正のみを行ない、内符号による誤り訂正は行わないように、制御回路74がリングバッファメモリ5や誤り訂正回路71等を制御する。特殊再生時には、スイッチ62の切替切片63,64は常に接点a側に切り替えられている。バッファメモリ61から出力されたデータは、上述したように、リングバッファメモリ5と誤り訂正回路71に送られ、外符号による訂正が行われる。
通常再生時においては、再びデータがリングバッファメモリ5より読み出され、誤り訂正回路71に送られ、内符号による誤り訂正がなされるのであるが、特殊再生時にはこれを行わない。ビデオコードバッファメモリ10には通常再生時と同様にデータが送られる。このとき、読み出しポインタPZrは、図8に示したように、ポインタPYrの後にある必要はなく、ポインタPXwの直後より読み出しを開始することが可能である。
このように、デインタリーブを行わないので、リングバッファメモリ5よりビデオコードバッファメモリ10に、データを迅速に送ることができ、高速な再生動作が可能となる。内符号訂正を行わないので、誤り訂正能力の点でやや不利となるが、特殊再生時においては、誤り訂正不能により一時的に画面の凍結が生じても(静止画が再生されても)、あまり目立たず、実用上殆ど差し支えることはない。
尚、誤り訂正符号は畳み込み符号(内符号と外符号)ではなく、完結型の積符号とすることも可能である。図18は、積符号を用いた場合のフォーマットの例を表している。この実施例においては、図の横方向のデータに対してC1パリティが、また縦方向のデータに対してC2パリティが、それぞれ付加されている。このようなフォーマットのデータに対しても、リングバッファメモリ5に対する書き込みと読み出しのアドレスを変更することで、本発明の適用が可能である。
以上、本発明のデータ再生方法を光ディスク装置に応用した場合について説明したが、本発明は、光ディスク装置だけでなく、例えば光磁気ディスク装置などに適用することができる。
また、本発明は、動画像データを再生する場合のみならず、音声データ、または、動画像データと音声データが多重化されたデータを再生する場合にも適用することができる。
1 光ディスク, 2 ピックアップ, 3 復調回路, 4 セクタ検出回路, 5 リングバッファメモリ, 6 ECC回路, 7 トラックジャンプ判定回路, 8 トラッキングサーボ回路, 9 PLL回路, 10 ビデオコードバッファメモリ, 11 逆VLC回路, 12 逆量子化回路, 13 逆DCT回路, 14 加算回路, 15 動き補償回路, 16 フレームメモリ, 17 D/A変換回路, 18 ディスプレイ, 20 デコード部, 31 制御回路, 41 バッファメモリ, 42 メモリ, 43 アドレス発生器, 44 誤り訂正回路, 45 バッファメモリ, 61 バッファメモリ, 62 スイッチ, 63,64 切替切片, 71 誤り訂正回路, 72 セクタ検出回路, 73 フラグレジスタ, 74 制御回路