JP2009037656A - 誤り訂正装置及びデスクランブル回路 - Google Patents

誤り訂正装置及びデスクランブル回路 Download PDF

Info

Publication number
JP2009037656A
JP2009037656A JP2007198462A JP2007198462A JP2009037656A JP 2009037656 A JP2009037656 A JP 2009037656A JP 2007198462 A JP2007198462 A JP 2007198462A JP 2007198462 A JP2007198462 A JP 2007198462A JP 2009037656 A JP2009037656 A JP 2009037656A
Authority
JP
Japan
Prior art keywords
data
circuit
edc
input
shift
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.)
Granted
Application number
JP2007198462A
Other languages
English (en)
Other versions
JP4930251B2 (ja
Inventor
Nobu Ozaki
展 小崎
Kazuteru Usui
一輝 碓井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007198462A priority Critical patent/JP4930251B2/ja
Priority to US12/182,786 priority patent/US8230297B2/en
Publication of JP2009037656A publication Critical patent/JP2009037656A/ja
Application granted granted Critical
Publication of JP4930251B2 publication Critical patent/JP4930251B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/157Polynomial evaluation, i.e. determination of a polynomial sum at a given value
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2732Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/275Interleaver wherein the permutation pattern is obtained using a congruential operation of the type y=ax+b modulo c

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

【課題】内蔵メモリ容量の増大による回路規模の増大を抑制しつつも、外部メモリへのアクセス量を低減することのできる誤り訂正装置を提供することにある。
【解決手段】デスクランブル回路20は、復調回路からECCクラスタが分割されて格納される内蔵メモリ部から、スクランブルデータsDuが入力されるEOR回路21を備える。デスクランブル回路20は、入力されたスクランブル値を、生成多項式Φ(x)に従って1バイト分シフトさせて新たなスクランブル値を生成する1シフト演算器24と、生成多項式Φ(x)に従って209バイト分シフトさせて新たなスクランブル値を生成する209シフト演算器25とを備える。デスクランブル回路20は、EOR回路21に入力されるスクランブルデータsDuのスクランブル処理時の処理順序に応じて、EOR回路21に出力するスクランブル値を選択する選択回路28及びセレクタ27を備える。
【選択図】図6

Description

本発明は、誤り訂正装置及びデスクランブル回路に関するものである。
近年、光ディスク等の記録媒体における記憶容量の大容量化に伴い、そのデータ読み取り時間の高速化も要求されている。しかし、光ディスクの製造時の欠陥や光ディスクの表面に付着した汚れ等によって、その光ディスクから高速に正しくデータを読み取ることが困難である。そこで、このような光ディスクの記録データは、リード・ソロモン符号を用いたエラー訂正符号がデータと併せて記録されており、そのエラー訂正符号に基づいてエラー訂正処理を行うことにより正しいデータを復元するようにしている。このエラー訂正処理の処理時間が長いため、データ読み取り時間の高速化を実現するためには、上記エラー訂正処理の高速化が要求される。
近年、高画質のビデオデータと高音質のオーディオデータを長時間記録することができる新しい高密度光ディスク、例えばブルーレイディスク(BD:Blu-ray Disc)の開発が進んでいる(例えば、特許文献1参照)。このBDに記録されたデータには、そのデータの読み出し時等に発生する誤りを検出するための誤り検出符号(EDC:Error Detecting Code)と、読み出し時等に発生する誤りを訂正するための誤り訂正符号(ECC:Error Correcting Code)とが予め付加されている。
ここで、BDに記憶されるデータのフォーマットについて詳述すると、図34に示すように、ユーザデータUDは、32個のデータフレームDF0〜DF31(総称してデータフレームDFという)から構成される。1つのデータフレームDFは、2048バイト(2kバイト)のUser Dataを含み、1データフレームDFの最後には下記式により算出された4バイトの誤り検出符号EDCが付加されている。
Figure 2009037656
BDに記録される際には、各データフレームDF毎にスクランブル処理が施されて、図36(a)に示すように、各データフレームDFが1列に配列され、2052行×32列のデータd(u,v)からなるスクランブルデータフレームSDFに変換される。なお、データd(u,v)のuはスクランブルデータフレームSDFにおける行番号を示し、vはスクランブルデータフレームSDFにおける列番号を示す。
ここで、スクランブルデータは周知のように、スクランブル処理前の元データの各バイトとスクランブル値SCの下位8ビットとの排他的論理和を取ることによって生成されている。このようなスクランブル値SCの生成には、図35に示すスクランブル値生成回路100が使用される。図35に示すように、スクランブル値生成回路100は、所定の生成多項式Φ(x)(図35の例では、Φ(x)=x16+x15+x13+x+1)に従って構成されており、ビットb15〜b0からなる帰還型シフトレジスタ101と、EOR回路102,103,104とを備える。
EOR回路102は、ビットb15とビットb14との排他的論理和を取り、その演算結果をEOR回路103に出力する。EOR回路103は、EOR回路102からの演算結果とビットb12との排他的論理和を取り、その演算結果をEOR回路104に出力する。EOR回路104は、EOR回路103からの演算結果とビットb3との排他的論理和を取り、その演算結果をビットb0に出力する。
シフトレジスタ101は、予め設定されたスクランブル値の初期値S0を取り込み、その初期値S0の下位8ビット(ビットb7〜b0)を、元データが入力されるEOR回路に出力する。そして、そのEOR回路において、スクランブル値SC(初期値S0)の下位8ビットと各データフレームの1バイト目のデータD0との排他的論理和(以下、本明細書における数式において、排他的論理和を^で表す)を取ることで、データD0にスクランブル処理が施される。すなわち、データD0にスクランブル処理を施した後のスクランブルデータsD0は、下記式に従って生成される。
Figure 2009037656
なお、1つのユーザデータUD内では、全てのデータフレームDF0〜DF31について同一の初期値S0が使用される。
次に、シフトレジスタ101は、クロック信号CLKのパルスが入力される毎にビットb14〜b0の値をそれぞれビットb15〜b1にシフトさせるとともに、EOR回路104の出力をビットb0として取り込む。そして、スクランブル値生成回路100はクロック信号CLKの8パルス後に、すなわち8ビット(1バイト)分シフトさせた後に、そのときのビットb7〜b0を上記元データが入力されるEOR回路に出力する。ここで、このときのスクランブル値SCをS0・γと表す。このγは、上記生成多項式Φ(x)で与えられる1バイトシフト演算子であり、上記S0・γは、初期値S0から生成多項式Φ(x)に従って1バイト分シフトさせたときに得られるスクランブル値SCであることを示している。そして、上記スクランブル値SC(=S0・γ)の下位8ビットと各データフレームDFの2バイト目のデータD1との排他的論理和を取ることで、データD1にスクランブル処理が施される。すなわち、データD1に対するスクランブルデータsD1は、下記式に従って生成される。
Figure 2009037656
以後同様に、スクランブルデータsD2〜sD2051が下記式に従って生成される。
Figure 2009037656
なお、S0・γは、初期値S0から生成多項式Φ(x)に従って3バイト分シフトさせたときに得られるスクランブル値SCであることを示すとともに、S0・γ2051は、初期値S0から生成多項式Φ(x)に従って2051バイト分シフトさせたときに得られるスクランブル値SCであることを示す。
そして、このように生成された各データフレームDFのスクランブルデータsD0〜sD2051が列方向に上から順に配列されると、上記スクランブルデータフレームSDFが生成される。
次に、図36に示すように、スクランブルデータフレームSDF(図36(a)参照)は、216行×304列のデータブロックDB(図36(b)参照)に変換される。詳しくは、スクランブルデータフレームSDFの1つのデータフレームDFの列方向の各データd(u,v)が、図36(b)に示す実線の矢印の順にデータブロックDBに格納される。すなわち、データフレームDF0のデータd(0,0)〜データd(215,0)は、データブロックDBの1列目に上から順に格納される。また、データフレームDF0のデータd(216,0)〜d(431,0)は、データブロックDBの2列目に上から順に格納される。そして、データフレームDF0のデータd(1944,0)〜データd(2051,0)は、データブロックDBの10列目の1行目〜108行目に上から順に格納される。次に、データフレームDF1のデータd(0,1)〜データ(107,1)は、データブロックDBのデータフレームDF0の最後のデータd(2051,0)が格納された次の位置、すなわち10列目の109行目〜216行目に上から順に格納される。また、データフレームDF1のデータd(108,1)〜d(323,1)は、データブロックDBの11列目に上から順に格納される。そして、データフレームDF1のデータd(1836,1)〜データd(2051,1)は、データブロックDBの19列目に上から順に格納される。データフレームDF2〜DF31についても、データフレームDF0,DF1と同様にデータブロックDBに格納される。このようにデータブロックDBに各データフレームDFのデータd(u,v)が格納されると、偶数データフレーム(例えば、データフレームDF0.DF2,DF4)と奇数データフレーム(例えば、データフレームDF1,DF3,DF5)とを合わせると、216行×19列の2次元配列されたブロックとなる。従って、1つのデータブロックDB内のデータフレーム配列は、2データフレームDF毎に繰り返し配列となっている。
次に、図37に示すように、この216行×304列のデータd(u,v)からなるデータブロックDBに、32行×304列のパリティビットp(i,j)からなるECC部LDCp(ECCパリティ)が付加される。すなわち、データブロックDBにおける各列に、32バイトのパリティビットp(i,j)がそれぞれ付加される。これにより、216行×304列のデータ成分e(i,j)及び32行×304列のパリティビットp(i,j)からなるパリティ付加ブロックPB(LDC(Long-distance code)ブロック)が形成される。なお、データ成分e(i,j)及びパリティビットp(i,j)のiはパリティ付加ブロックPBにおける行番号を示し、jはパリティ付加ブロックPBにおける列番号を示す。また、パリティビットpは、下記式により算出されて付加されたものである。
Figure 2009037656
上記ECC部LDCpは、パリティ付加ブロックPBにおける列方向のデータに対する誤り訂正符号であり、パリティ付加ブロックPBの列毎の誤り訂正を行うためのLDCシンドローム(パリティ演算結果)を生成するために付加されている。
次に、248行×304列のデータからなるパリティ付加ブロックPBが496(=248×2)行×152(=304/2)列のLDCクラスタLDCc(図39参照)に変換される。
まず、データ成分e(i,j)及びパリティビットp(i,j)が第1インターリーブ処理されて、データ成分e(i,j)及びパリティビットp(i,j)が図38における位置f(m,n)に所定の規則に従ってインターリーブされる。ここで、位置f(m,n)のmはLDCクラスタLDCcにおける行番号を示し、nはLDCクラスタLDCcにおける列番号を示す。
第1インターリーブ処理について図37及び図38に従って詳述すると、j=0,2,4,6,8,・・・,302(偶数列)のデータ成分e(i,j)及びパリティビットp(i,j)は、位置f(m(=2i),n(=j/2))にインターリーブされる。また、j=1,3,5,7,9,・・・,303(奇数列)のデータ成分e(i,j)及びパリティビットp(i,j)は、位置f(m(=2i+1),n(=(j−1)/2))にインターリーブされる。例えば、偶数列のデータ成分e(1,2)は、m=2×1=2、n=2/2=1であるため、位置f(2,1)にインターリーブされる。また、奇数列のデータ成分e(1,3)は、m=2×1+1=3、n=(3−1)/2=1であるため、位置f(3,1)にインターリーブされる。これにより、図38に示す496行×152列のデータからなる第1インターリーブ処理済のブロックに変換される。
次に、図38に示す第1インターリーブ処理済の各データ(データ成分e及びパリティビットp)が第2インターリーブ処理されて、図39に示すLDCクラスタLDCcが形成される。この第2インターリーブ処理について詳述すると、位置f(m,n)に配置されたデータ成分e(i,j)及びパリティビットp(i,j)は、下記式のシフト量SIバイト分だけ同一行内の左方向にシフトされる。
[数6]
SI=mod(div(m,2)×3,152)
ただし、mod(a,b):aをbで除算した余りを返す関数
div(a,b):aをbで除算した数値の次に小さい整数を返す関数
すなわち、位置f(m,n(=n1))に配置されたデータ成分e(i,j)及びパリティビットp(i,j)は、位置f(m,n(n2=n1−SI))にインターリーブされる。但し、このシフト方向は巡回的であるため、n2が負の値になった場合には、n2=−1がn=151に対応し、n2=−2がn=150に対応するように、負の値であるn2の絶対値が大きくなるに連れて、実際のシフト先の列番号nは151から順に小さくなっていく。
例えば、m=2,3の位置fに配置された各データ成分eは、SI=mod(1×3,152)=3バイト分だけ同一行内の左方向にシフトされる。従って、図38において位置f(2,0)及び位置f(3,0)にそれぞれ配置されていたデータ成分e(1,0)及びデータ成分e(1,1)は、図39に示すように、n2=0−3=−3に対応する列番号n=149の位置f(2,149)及び位置f(3,149)にそれぞれインターリーブされる。同様に、m=2,3の位置fに配置された各データ成分eは、全て同一行内において左方向に3バイト分だけシフトされた位置fにインターリーブされる。
このようにパリティ付加ブロックPBに対して、第1インターリーブ処理及び第2インターリーブ処理が完了すると、図39に示すLDCクラスタLDCcが形成される。
次に、図40に示すように、アドレス情報やユーザコントロールデータ等を含むデータブロック(720バイト)とパリティ(768バイト)とからなる496行×3列のBIS(Burst Indicator Subcode)クラスタBIScが、上記LDCクラスタLDCcにインターリーブされる。詳しくは、図40(b)に示すように、BISクラスタBIScは1列毎に分割され、LDCクラスタLDCcの38列毎に、分割後のBISクラスタBISc(図40(a)のB1〜B3)が1列ずつ挿入される。
そして、LDCクラスタLDCcとBISクラスタBIScとからなるECCクラスタECCc(図40(b)参照)が17PP変調方式等により変調されて、BD上に書き込まれる。このようなフォーマットにより、データ再生時の誤り訂正処理において、高い誤り検出・訂正能力が確保される。
次に、このようにBDに書き込まれたデータを読み出す動作について説明する。図41に示すように、記録媒体としてのBDに対してデータの入出力を行うコントローラ110では、まず、復調回路111がBDからデータを読み出し、該データを復調したデータ、すなわちECCクラスタECCcをバッファメモリ120に格納する。次に、LDCシンドローム生成回路112は、バッファメモリ120に格納されたECCクラスタECCcにおけるLDCクラスタLDCcを、上記第1及び第2インターリーブ処理により並び替えられる前の配置順になるように各データを並び替えながら読み出す(第1及び第2デインターリーブ処理を施しながら各データを読み出す)。すなわち、LDCシンドローム生成回路112には、第1及び第2インターリーブ処理が施される前のパリティ付加ブロックPB(図37参照)が入力される。そして、LDCシンドローム生成回路112は、入力されるパリティ付加ブロックPBに基づいてLDCシンドロームを生成し、そのLDCシンドロームを誤り訂正回路114に出力する。
また、BISシンドローム生成回路113は、バッファメモリ120に格納されたECCクラスタECCcにおけるBISクラスタBIScを読み出す。そして、BISシンドローム生成回路113は、読み出したBISクラスタBIScに基づいてBISシンドロームを生成し、そのBISシンドロームを誤り訂正回路114に出力する。誤り訂正回路114は、入力されるLDCシンドローム及びBISシンドロームに基づいて、バッファメモリ120に格納されたECCクラスタECCc内のユーザデータUD等の誤りを訂正する。
次に、デスクランブル回路115は、バッファメモリ120から誤り訂正処理済のLDCクラスタLDCc内のユーザデータUDに相当するデータ成分eを、第1及び第2デインターリーブ処理を施しながら読み出す。すなわち、デスクランブル回路115には、誤り訂正処理済のデータブロックDB(図36(b)参照)が入力される。そして、デスクランブル回路115は、データフレームDF毎にスクランブル処理時に使用されたスクランブル値SCを生成し、そのスクランブル値SCの下位8ビットと読み出されたデータブロックDBの各バイトとの排他的論理和を順番に取って、デスクランブル処理を実行する。従って、デスクランブルデータdD0〜dD2051は、下記式により生成される。
Figure 2009037656
次に、EDCチェック回路116は、デスクランブル回路115から入力されるデスクランブル処理済のデータブロックDB(ユーザデータUD等)をホストコンピュータ等の外部機器に転送するとともに、上記デスクランブル処理済のデータブロックDBに基づいてEDCチェックを行う。EDCチェック回路116におけるEDCチェックは、まずデータフレームDF(2052バイト)毎にEDCシンドロームEDCSを生成する。詳しくは、図42に示すように、デスクランブル回路115からEDCチェック回路116には、dD0→dD1→dD2→・・・→dD2049→dD2050→dD2051の順にデスクランブルデータが入力される。このデスクランブルデータdDu(2052バイト)の次数重みを表す多項式表現(入力多項式)は、
Figure 2009037656
となる。ここで、EDC演算は入力多項式の各次数をベクターβで重み付けする演算であるため、EDCシンドロームEDCSは下記式により算出される。
Figure 2009037656
すなわち、このEDCシンドロームEDCSは、1バイトのデータ(例えば、デスクランブルデータdD0,dD2050等)を演算する度に、各データに1次のベクターβの重み付けを行うことで得ることができる。従って、入力順序が早いデータほど重み付けされるベクターβの次数が高次になるとともに、入力順序が遅いデータほど重み付けされるベクターβの次数が低次になる。例えば、入力順序の最も早いデータdD0に対応するベクターβの次数は、最も高次な2051次(β2051)であり、入力順序の最も遅いデータdD2051に対応するベクターβの次数は、最も低次な0次(β=1)である。なお、1バイトのデータXに対してベクターβで重み付けするとは、重み付けされるデータXを、所定の生成多項式G(x)(本例では、G(x)=x32+x31+x+1)に従って1バイト分シフトさせることである。そして、EDCチェック回路116では、算出されたEDCシンドロームが全て「0」であったときに、誤り訂正が正常に終了したことを確認する。この確認後、EDCチェックが終了される。
ところで、近年では、ホストコンピュータの処理速度の高速化等に伴い、記憶装置に対するデータの読み出し/書き込み速度の高速化が要求されている。しかしながら、バッファメモリ120のアクセス能力の限界により、読み出し速度の高速化が阻害されている。すなわち、バッファメモリ120に対して以下の(1)〜(5)のアクセスが行われるため、アクセス速度を高速化することが難しく、誤り訂正処理を高速化することができない。
(1)復調回路111からのECCクラスタECCcの入力。
(2)LDCシンドローム生成回路112によるLDCクラスタLDCcの読み出し。
(3)BISシンドローム生成回路113によるBISクラスタBIScの読み出し。
(4)誤り訂正回路の誤り訂正処理。
(5)デスクランブル回路115による誤り訂正処理済のLDCクラスタLDCcの読み出し。
さらに、上記構成におけるLDCシンドローム生成回路112(デスクランブル回路115)は、バッファメモリ120からLDCクラスタLDCc(LDCクラスタLDCc内のデータ成分e)を、第1及び第2デインターリーブ処理を施しながらパリティ付加ブロックPB(データブロックDB)として読み出す必要がある。ここで、一般的に外付けのバッファメモリ120は安価で処理速度の遅いSDRAMから構成されているため、LDCクラスタLDCcが並べ替えながら読み出されると、パリティ付加ブロックPBの各データが細切れに読み出されることになる。このようにバッファメモリ120に対してデータアクセスサイズの小さい効率の悪いアクセスとなり、ひいてはバッファメモリ120のアクセス帯域を減らすという問題がある。
そこで、バッファメモリ120へのアクセス量を減らすために、図43に示すように、一旦内蔵メモリ131に1つのECCクラスタECCcを格納し、その内蔵メモリ131に対してLDCシンドローム生成回路112及びBISシンドローム生成回路113が直接アクセスするようにしたコントローラ130が提案されている。これにより、LDCシンドローム生成回路112及びBISシンドローム生成回路113によるバッファメモリ120へのアクセス量がなくなるため、バッファメモリ120に対する全体のアクセス量を減らすことができ、誤り訂正処理の高速化を実現することができる。
特開2003−242720号公報
ところが、上記誤り訂正回路114による誤り訂正処理を行うためには、ECCクラスタECCc単位でのデータが必要となる。そのため、図43に示すコントローラ130では、内蔵メモリ131が1つのECCクラスタ分のデータを格納することのできる大容量のメモリとなる。そのため、1つのECCクラスタECCcの容量に相当するバッファメモリを内蔵することになり、コントローラの回路規模が増大するという新たな問題が生じる。
本発明は上記問題点を解決するためになされたものであって、その目的は、内蔵メモリ容量の増大による回路規模の増大を抑制しつつも、外部メモリへのアクセス量を低減することのできる誤り訂正装置及びデスクランブル回路を提供することにある。
上記目的を達成するため、請求項1に記載の発明は、所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該各スクランブルデータにデスクランブル処理を施したデスクランブルデータを生成するデスクランブル回路と、前記パリティ演算結果に基づいて、前記デスクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、前記デスクランブル回路は、前記内蔵メモリ部からの前記スクランブルデータが入力される第1排他的論理和回路と、入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、入力されたスクランブル値を、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備える。
図41に示す従来のコントローラでは、高密度光ディスクから読み出したデータに対して誤り訂正を行うために、外部メモリに対して、1つのクラスタ(ECCクラスタ)に相当するデータ量のアクセスが2回必要となる。これに対し上記構成では、外部メモリに対して、1つのクラスタに相当するデータ量のアクセスを1回するとともに、1つのクラスタに比べてデータ量が非常に小さいシンドロームに相当するデータ量のアクセスをすることによって、光ディスクから読み出したディスクデータに対して誤り訂正を行うことができる。従って、外部メモリに対するアクセス量を大幅に減らすことができる。
また、1つのクラスタが複数個に分割された分割クラスタが内蔵メモリ部に格納されるため、その内蔵メモリ部は、分割クラスタを格納することのできる容量を有すればよい。従って、内蔵メモリ部による回路規模の増大を抑制することができる。さらに、このような内蔵メモリ部に対してはデスクランブル回路及びパリティ演算結果生成回路等がランダムアクセス可能なため高速アクセス可能である。そのため、この内蔵メモリ部を通じて、クラスタに対してデインターリーブ処理を施しながら各データを効率良くデスクランブル回路及びパリティ演算結果生成回路に入力させることができる。
また、デスクランブル回路及びパリティ演算結果生成回路は、内蔵メモリ部に対して独立してアクセスすることが可能なため、デスクランブル処理及びパリティ演算処理を並行して実行することができ、誤り訂正処理に要する時間を短縮することができる。ここで、通常のデスクランブル処理は、スクランブル処理時と同様の順序で入力されるスクランブルデータと、スクランブル処理時と同様の順序で生成されるスクランブル値との排他的論理和を取って実行される。しかしながら、上記構成では、分割クラスタ毎にスクランブルデータがデスクランブル回路に入力されることになるため、スクランブル処理時とは異なる順序でスクランブルデータがデスクランブル回路に入力されることになる。そこで、上記構成では、デスクランブル回路に第1シフト演算器、第2シフト演算器及び第1選択回路を設けるようにした。これにより、スクランブル処理時と異なる順序で入力されるスクランブルデータに対しても、スクランブル処理時と同一のスクランブル値を使用して正確にデスクランブル処理を実行することができる。
請求項2に記載の発明は、前記デスクランブル回路は、前記各読み出しブロックの前記偶数データフレームにおける1列目の最終行のスクランブルデータに対するスクランブル値が前記第1シフト演算器を通じて格納される第1偶数レジスタと、前記各読み出しブロックの前記奇数データフレームにおける1列目の最終行のスクランブルデータに対するスクランブル値が前記第1シフト演算器を通じて格納される第1奇数レジスタと、を備える。
上記構成によれば、第1偶数レジスタに、次の読み出しブロックの各偶数データフレームにおける1列1行目の先頭スクランブルデータに対するスクランブル値が格納されるとともに、第1奇数レジスタに、次の読み出しブロックの各奇数データフレームにおける1列1行目の先頭スクランブルデータに対するスクランブル値が格納される。従って、読み出しブロックの各偶数データフレームあるいは各奇数データフレームにおける先頭スクランブルデータが第1排他的論理和回路に入力されたときに、第1偶数レジスタあるいは第1奇数レジスタに格納されたスクランブル値を読み出すことによって、確実にデスクランブル処理を実行することができる。また、各読み出しブロックの各偶数データフレーム及び各奇数データフレームにおける先頭スクランブルデータに対するスクランブル値を予め算出してメモリ等に格納しておく必要がなくなる。
請求項3に記載の発明は、前記デスクランブル回路は、前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第2シフト演算器を通じて格納される偶数作業レジスタと、前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第2シフト演算器を通じて格納される奇数作業レジスタと、を備える。
上記構成によれば、偶数作業レジスタに、同一読み出しブロック内の各偶数データフレームにおける次列の1行目のスクランブルデータに対するスクランブル値が格納されるとともに、奇数作業レジスタに、同一読み出しブロック内の各奇数データフレームにおける次列の1行目のスクランブルデータに対するスクランブル値が格納される。これにより、例えば1列のデスクランブル処理が終了する度に、異なるデータフレームに処理が移るようなデータ処理順序であっても、偶数作業レジスタ及び奇数作業レジスタに格納されたスクランブル値を利用することによってデスクランブル処理を連続的に実行することができる。
請求項4に記載の発明は、前記EDCシンドローム生成回路は、前記デスクランブル回路からバイトデータとして入力される前記デスクランブルデータと、第2選択回路から入力されるシフト演算値との排他的論理和を取って、EDC演算値を生成する第2排他的論理和回路と、前記第2排他的論理和から入力されるEDC演算値に対して、所定の第2生成多項式に従って1バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第1重み付け回路と、前記第2排他的論理和から入力されるEDC演算値に対して、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向におけるバイト数)}
バイト分、前記第2生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第2重み付け回路と、前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って108バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第3重み付け回路と、前記第2重み付け回路からのシフト演算値と、前記EDCメモリ部からのEDCシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第3排他的論理和回路と、を備え、前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記第2重み付け回路及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力する。
上記構成によれば、EDCシンドローム生成回路において、デスクランブル回路から直接入力されるデスクランブルデータに基づいてEDCシンドロームが生成される。これにより、パリティ演算結果生成回路によるパリティ演算処理と並行して、EDCシンドローム生成回路によるEDC演算処理を実行することができる。従って、誤り訂正処理に要する時間を短縮することができる。ここで、通常のEDC演算処理は、EDC付加時と同様の順序で入力されるデスクランブルデータ(1バイトのデータ)を演算するたびに、1バイト分シフトさせる重み付けを各データに行うことで実行する。しかしながら、上記構成では、デスクランブル回路から分割クラスタ毎にデスクランブルデータがEDCシンドローム生成回路に入力されることになるため、EDC付加時とは異なる順序でバイトデータがEDCシンドローム生成回路に入力されることになる。そこで、上記構成では、EDCシンドローム生成回路に第1〜第3重み付け回路、第3排他的論理和回路及び第2選択回路を設けるようにした。これにより、EDC付加時と異なる順序で入力されるデスクランブルデータに対しても、EDC付加時と同様のデータ処理順序でEDC演算処理した場合と同一のバイト数分の重み付けを行うことができる。
請求項5に記載の発明は、所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該スクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、前記EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、前記EDCシンドローム生成回路は、前記内蔵メモリ部からバイトデータとして入力される前記スクランブルデータと、第2選択回路から入力されるシフト演算値との排他的論理和を取って、EDC演算値を生成する第2排他的論理和回路と、前記第2排他的論理和から入力されるEDC演算値に対して、所定の第2生成多項式に従って1バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第1重み付け回路と、前記第2排他的論理和から入力されるEDC演算値に対して、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向におけるバイト数)}
バイト分、前記第2生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第2重み付け回路と、前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って108バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第3重み付け回路と、前記第2重み付け回路からのシフト演算値と、前記EDCメモリ部からのEDCシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第3排他的論理和回路と、を備え、前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記第2重み付け回路及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力する。
上記構成によれば、EDCシンドローム生成回路及びパリティ演算結果生成回路は、内蔵メモリ部に対して独立してアクセスすることが可能なため、EDCシンドローム生成及びパリティ演算処理を並行して実行することができ、誤り訂正処理に要する時間を短縮することができる。また、EDCシンドローム生成回路に第1〜第3重み付け回路、第3排他的論理和回路及び第2選択回路を設けるようにしたため、EDC付加時と異なる順序で入力されるバイトデータに対しても、EDC付加時と同様のデータ処理順序でEDC演算処理した場合と同一のバイト数分の重み付けを行うことができる。
請求項6に記載の発明は、前記EDCシンドローム生成回路は、前記各読み出しブロックの前記各データフレームにおける各列の最終行のバイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記第2重み付け回路を通じてシフト演算値として格納される作業メモリを備える。
上記構成によれば、作業メモリに、同一読み出しブロック内における次列の1行目のバイトデータに対するEDC演算値が格納される。これにより、例えば読み出しブロック内の1列のEDC演算処理が終了する度に、異なるデータフレームに処理が移るようなデータ処理順序であっても、作業レジスタに格納されたEDC演算値を利用することによってEDC演算処理を連続的に実行することができる。
請求項7に記載の発明は、前記EDCシンドローム生成回路は、入力されるベクターを、所定の第2生成多項式に従って1ビット分、逆シフトさせて新たなベクターを生成する第1逆シフト演算器がN個直列に接続された第1逆シフト演算器群と、該N個の逆シフト演算器の最終段から入力されるベクターを、
{(前記データブロックにおける列方向の全ビット数)−(各読み出しブロックの列方向におけるビット数)}
ビット分、前記第2生成多項式に従って逆シフトさせて新たなベクターを生成する第2逆シフト演算器と、を含んで構成されるベクター生成回路と、前記デスクランブル回路から前記デスクランブルデータがビットデータとして入力されるとともに、前記N個の第1逆シフト演算器に入力されるベクターが入力されるN個のアンド回路と、前記N個のアンド回路からの演算結果の排他的論理和を取って、前記EDCシンドロームの中間結果を生成する第4排他的論理和回路と、前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器及び前記第2逆シフト演算器から入力されるベクターのうちのいずれか一つのベクターを初段の前記第1逆シフト演算器に出力する第3選択回路と、を備える。
上記構成によれば、EDCシンドローム生成回路において、デスクランブル回路から直接入力されるデスクランブルデータに基づいてEDCシンドロームが生成される。これにより、パリティ演算結果生成回路によるパリティ演算処理と並行して、EDCシンドローム生成回路によるEDC演算処理を実行することができる。従って、誤り訂正処理に要する時間を短縮することができる。ここで、通常のEDC演算処理は、EDC付加時と同様の順序で入力されるデスクランブルデータ(1ビットのデータ)を演算するたびに、1ビット分シフトさせるベクターによる重み付けを各データに行うことで実行する。しかしながら、上記構成では、デスクランブル回路から分割クラスタ毎にデスクランブルデータがEDCシンドローム生成回路に入力されることになるため、EDC付加時とは異なる順序でデスクランブルデータがEDCシンドローム生成回路に入力されることになる。そこで、上記構成では、EDCシンドローム生成回路にN個の第1逆シフト演算器、第2逆シフト演算器、N個のアンド回路を設けるようにした。これにより、EDC付加時と異なる順序で入力されるデスクランブルデータに対しても、EDC付加時と同様のデータ処理順序でEDC演算処理した場合と同一のビット数分の重み付けを行うことができる。
請求項8に記載の発明は、前記EDCシンドローム生成回路は、前記各読み出しブロックの前記偶数データフレームにおける1列目の最終行のビットデータに乗算されたベクターが前記最終段の第1逆シフト演算器を通じて格納される第2偶数レジスタと、前記各読み出しブロックの前記奇数データフレームにおける1列目の最終行のビットデータに乗算されたベクターが前記最終段の第1逆シフト演算器を通じて格納される第2奇数レジスタと前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のビットデータに乗算されたベクターが前記第2逆シフト演算器を通じて格納される偶数ラインレジスタと、前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のビットデータに乗算されたベクターが前記第2逆シフト演算器を通じて格納される奇数ラインレジスタと、前記各クラスタにおけるEDC演算処理開始時の初期値設定において、前記第2偶数レジスタには、前記第2生成多項式に従って生成された16415次のベクターが格納されるとともに、前記第2奇数レジスタには、前記第2生成多項式に従って生成された15551次のベクターが格納される。
各偶数データフレームでは、読み出しブロックとして最初に読み出される先頭ビットデータは、EDC付加時と同様の順序でEDC演算処理された場合においても先頭データとなるため、{各データフレームの全ビット数(16416ビット)−1}ビット分の重み付けが行われる。また、各奇数データフレームでは、読み出しブロックとして最初に読み出される先頭ビットデータが、EDC付加時と同様の順序でEDC演算処理された場合において、その演算処理時の最終データよりも15551ビット前に入力されるデータである。従って、読み出しブロックの奇数データフレームにおいて最初に読み出される先頭スクランブルデータは、15551ビット分の重み付けが行われる。上記構成によれば、初期値設定において、偶数データフレーム及び奇数データフレームの読み出しブロックとして最初に読み出される先頭ビットデータに対する16415次のベクター及び15551次のベクターを、第2偶数レジスタ及び第2奇数レジスタにそれぞれ格納することができる。
また、第1偶数レジスタに、次の読み出しブロックの各偶数データフレームにおける先頭ビットデータに対するベクターが格納されるとともに、第1奇数レジスタに、次の読み出しブロックの各奇数データフレームにおける先頭ビットデータに対するベクターが格納される。従って、読み出しブロックの各偶数データフレームあるいは各奇数データフレームにおける先頭ビットデータがアンド回路に入力されたときに、第1偶数レジスタあるいは第1奇数レジスタに格納されたベクターをベクター生成回路に出力することによって、確実にEDC演算処理を実行することができる。
また、偶数ラインレジスタに、同一読み出しブロック内の各偶数データフレームにおける次列の1行目のビットデータに対するスクランブル値が格納されるとともに、奇数ラインレジスタに、同一読み出しブロック内の各奇数データフレームにおける次列の1行目のビットデータに対するスクランブル値が格納される。これにより、例えば1列のEDC演算処理が終了する度に、異なるデータフレームに処理が移るようなデータ処理順序であっても、偶数ラインレジスタ及び奇数ラインレジスタに格納されたベクターを利用することによってEDC演算処理を連続的に実行することができる。
請求項9に記載の発明は、前記内蔵メモリ部は、前記復調回路から前記分割クラスタ内のLDCクラスタが格納されるLDCデータメモリ部と、前記復調回路から前記クラスタ内のBISクラスタが格納されるBISメモリ部とを備え、前記BISメモリ部から前記BISクラスタを読み出し、該BISクラスタに基づいてBISシンドロームを生成するBISシンドローム生成回路を備えた。
上記構成によれば、LDCデータメモリ部がパリティ演算結果生成回路及びデスクランブル回路(EDCシンドローム生成回路)にアクセスされるとともに、BISメモリ部がBISシンドローム生成回路にアクセスされる。従って、一つの内蔵メモリ部に対してパリティ演算結果生成回路、デスクランブル回路(EDCシンドローム生成回路)及びBISシンドローム生成回路がアクセスする場合に比べて、それぞれのメモリ部(LDCデータメモリ部及びBISメモリ部)に対するアクセス量を低減することができる。
請求項10に記載の発明は、スクランブル、インターリーブされ、光ディスクに書き込まれたデータの読み出しに使用されるデスクランブル回路であって、読み出したデータが入力される第1排他的論理和回路と、入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、
入力されたスクランブル値を、
{(データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、前記第1排他的論理和回路に入力される前記読み出したデータのデータブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備える。
上記構成によれば、第1シフト演算器、第2シフト演算器及び第1選択回路を設けるようにしたため、スクランブル処理時と異なる順序で入力されるスクランブルデータに対しても、スクランブル処理時と同一のスクランブル値を使用して正確にデスクランブル処理を実行することができる。
以上説明したように、本発明によれば、内蔵メモリ容量の増大による回路規模の増大を抑制しつつも、外部メモリへのアクセス量を低減することが可能な誤り訂正装置及びデスクランブル回路を提供することができる。
(第1実施形態)
以下、本発明を具体化した第1実施形態を図1〜図21に従って説明する。
図1に示すように、データ読み出し装置としての光ディスク制御装置1は、ATAPI(AT attachment packet interface)等の所定のインターフェースを介してコンピュータ2に接続されている。また、光ディスク制御装置1は、インターフェースを介して光ディスク駆動装置3に接続されている。
光ディスク駆動装置3は、ブルーレイディスク(BD)4を所定の速度で回転駆動するとともに、BD4に記憶されたディスクデータを図示しない光ピックアップにより読み出す。そして、光ディスク駆動装置3は、ディスクデータを光ディスク制御装置1に出力する。
光ディスク制御装置1の入出力駆動回路5には、光ディスク駆動装置3から上記ディスクデータが入力され、そのディスクデータを誤り訂正装置としての光ディスクコントローラ(コントローラ)10に出力する。
コントローラ10は、光ディスク駆動装置3への命令送信及びステータス受領と、光ディスクであるBD4からの読み出しフォーマット解読及び誤り訂正と、光ディスク駆動装置3と外部バッファメモリ6との間のデータ転送と、インターフェース回路60と外部バッファメモリ6との間のデータ転送等の各処理を行う。すなわち、コントローラ10は、入出力駆動回路5から入力されるディスクデータに対してデスクランブル処理を行ってデスクランブルデータを生成するとともに、EDCシンドローム、LDCシンドローム及びBISシンドロームといった各種シンドロームを生成する。そして、コントローラ10は、これらのデスクランブルデータ及び各種シンドロームを外部バッファメモリ6に格納する。また、コントローラ10は、外部バッファメモリ6に格納した各種シンドロームに基づいて、外部バッファメモリ6に格納されたデスクランブルデータに対して誤り訂正処理を行う。そして、コントローラ10は、マイクロプロセッサ8の命令に基づいて、外部バッファメモリ6に格納した誤り訂正後のユーザデータUDを、インターフェース回路60を介して上記コンピュータ2に転送する。
次に、図1に示した光ディスクコントローラ10の内部構成について図2に従って説明する。
光ディスクコントローラ10の復調回路11には、BD4から読み出されたディスクデータが入出力駆動回路5を通じて順次入力される。復調回路11は、入力されるディスクデータをデジタルデータに変換するとともに、そのデジタルデータに同期したクロック信号CLKを生成する。復調回路11は、さらにデジタルデータを復調して、該復調済データ、すなわちECCクラスタECCc(図40(b)参照)を生成し、該ECCクラスタECCc及びクロック信号CLKを出力する。
復調回路11からECCクラスタECCc(クラスタ)のデータが入力される内蔵メモリ部12は、2つのバッファメモリM1,M2から構成されている。各バッファメモリM1,M2の各々は、所定バイト数(本実施形態では、2480バイト)のデータを格納可能なメモリ容量となっている。本実施形態では、ECCクラスタECCc(76880バイト)が31(=76880/2480)個に分割され、2480バイト毎に内蔵メモリ部12の各バッファメモリM1,M2に格納される。すなわち、ECCクラスタECCc(図40(b)参照)が16行毎に分割され、16行×155列(=2480バイト)のブロック単位(分割ECCクラスタDECC)で各バッファメモリM1,M2に格納される。図3に、復調回路11から最初に内蔵メモリ部12に格納される16行×155列の分割ECCクラスタDECC(分割クラスタ)を示した。図3に示すように、ECCクラスタECCcの各列における1行目から16行目までの各データが復調回路11から内蔵メモリ部12に最初に格納される。
内蔵メモリ部12は、同一時間において、バッファメモリM1及びバッファメモリM2のいずれか一方を、復調回路11からのデータを保存するデータ保存用として使用し、他方を、後述するLDCシンドローム生成回路13等にアクセスされるアクセス用として使用する。すなわち、バッファメモリM1がデータ保存用として使用される場合にはバッファメモリM2がアクセス用として使用され、バッファメモリM2がデータ保存用として使用される場合にはバッファメモリM1がアクセス用として使用される。
図5に、上記内蔵メモリ部12の回路構成例を示した。図5に示すように、復調回路11から入力されるデータは、第1セレクタ12aに入力される。この第1セレクタ12aには、選択回路12cからの選択信号が入力される。選択回路12cは、復調回路11から入力されるクロック信号CLKをカウントして、所定のタイミングで選択信号の信号レベルを切り替える。本実施形態では、選択回路12cは、2480バイト分のクロックをカウントする度に、上記選択信号の信号レベルを切り替える。なお、この選択信号は、インバータを介して第2セレクタ12bにも入力される。
第1セレクタ12aは、選択回路12cからの選択信号の信号レベルに基づいて、復調回路11からのデータをバッファメモリM1あるいはバッファメモリM2に出力する。また、第2セレクタ12bは、インバータを介して入力される選択回路12cからの選択信号の信号レベルに基づいて、バッファメモリM1及びバッファメモリM2のいずれか一方をアクセス可能とする。
図2に示すように、LDCシンドローム生成回路13(パリティ演算結果生成回路)は、アクセス可能に選択された内蔵メモリ部12のバッファメモリに格納された分割ECCクラスタDECC内のLDCクラスタLDCcを並び替えながら読み出す。前述したように、BD4から読み出されるECCクラスタECCcにおけるLDCクラスタLDCc(図39参照)は、パリティ付加ブロックPB(図37参照)のデータが第1インターリーブ処理及び第2インターリーブ処理されて並び替えられたブロックである。また、LDCクラスタLDCc内のECC部LDCpは、第1及び第2インターリーブ処理前のデータブロックDB(図36(b)参照)に対して付加されたパリティであるため、LDCクラスタLDCcにおけるデータ配列順序のままでは、ECC部LDCpに基づくLDCシンドローム(パリティ演算結果)を正確に生成することができない。
そこで、本実施形態におけるLDCシンドローム生成回路13は、内蔵メモリ部12に格納された分割ECCクラスタDECC内のLDCクラスタLDCcを、第1及び第2デインターリーブ処理を施してパリティ付加ブロックPBの配置順序になるように各データを並べ替えながら読み出すようにしている。この読み出し順序について、内蔵メモリ部12に最初に格納されるデータブロックを例に挙げて説明すると、まず、LDCシンドローム生成回路13は、図3に示す位置f(0,0)のデータ成分e(0,0)を読み出し、次に位置f(2,149)のデータ成分e(1,0)を読み出し、次に位置f(4,146)のデータ成分e(2,0)を読み出す。以後も同様に、LDCシンドローム生成回路13は、図4の実線の矢印で示すように、データ成分e(3,0)、データ成分e(4,0)、…、データ成分e(7,0)の順にパリティ付加ブロックPBにおける1列目のデータ成分を読み出す。続いて、LDCシンドローム生成回路13は、データ成分e(0,1)、…、データ成分e(7,1)の順にパリティ付加ブロックPBにおける2列目の1行目〜8行目までのデータ成分を読み出す。LDCシンドローム生成回路13は、以後も同様に、パリティ付加ブロックPBにおける各列のデータ成分eを順番に読み出す。このように、31個の分割ECCクラスタDECC内のLDCクラスタLDCcが第1及び第2デインターリーブ処理が施されて読み出されると、図4に示すように、31分割された8行×304列のパリティ付加ブロックPBが読み出しブロックRB(第1〜第31読み出しブロックRB1〜RB31)として読み出される。
LDCシンドローム生成回路13は、上記読み出し順序にてデータを読み出すとともに、各読み出しブロックRBにおける列方向のバイト数(本実施形態では、8バイト)毎に各列のLDCシンドロームの中間値を生成し、該LDCシンドロームの中間値をLDCメモリ部14に格納する。また、LDCシンドローム生成回路13は、前回の読み出しブロックRB(例えば、第2読み出しブロックRB2のときには第1読み出しブロックRB1)のときに格納した同一列のLDCシンドロームの中間値をLDCメモリ部14から読み出す。そして、LDCシンドローム生成回路13は、読み出したLDCシンドロームの中間値と、現在の読み出しブロックRB(例えば、第2読み出しブロックRB2)の列方向におけるデータとに基づいて、LDCシンドロームの中間値を更新して、該更新後のLDCシンドロームをLDCメモリ部14に格納する。
図2に示すように、LDCメモリ部14は、2つのLDCバッファメモリM3,M4から構成されている。各バッファメモリM3,M4の各々は、1つのパリティ付加ブロックPB内の全列のLDCシンドロームを格納可能なメモリ容量、すなわち9728(=32×304)バイトを格納可能なメモリ容量となっている。LDCメモリ部14は、1つのパリティ付加ブロックPB全体(31回分:第1〜第31読み出しブロックRB1〜RB31)のデータ読み出し終了後に格納されているLDCシンドロームの中間値が最終的なLDCシンドロームとなるため、各列毎の最終的なLDCシンドロームを外部バッファメモリ6に格納する。LDCメモリ部14は、同一時間において、バッファメモリM3及びバッファメモリM4のいずれか一方を、LDCシンドローム生成回路13からのLDCシンドロームの中間値を保存するシンドローム保存用として使用し、他方を、最終的なLDCシンドロームを外部バッファメモリ6に出力するシンドローム出力用として使用する。なお、LDCメモリ部14は、内蔵メモリ部12と略同様の構成を有する。
BISシンドローム生成回路16に接続されるBISメモリ部15には、アクセス可能に選択された内蔵メモリ部12のバッファメモリに格納された分割ECCクラスタDECC内のBISクラスタBIScが、列方向に順番に格納される。例えば、図3に示すデータブロックの場合には、BISメモリ部15には、B(0,0)〜B(15,0)が図3の実線の矢印で示す順番に格納される。BISメモリ部15は、BISクラスタBISc全体のデータが格納されると、そのBISクラスタBIScをBISシンドローム生成回路16に出力する。
図2に示すように、このBISメモリ部15は、2つのBISバッファメモリM5,M6とから構成されている。各バッファメモリM5,M6の各々は、1つのBISクラスタBIScを格納可能なメモリ容量、すなわち1488(=496×3)バイトを格納可能なメモリ容量となっている。BISメモリ部15は、同一時間において、バッファメモリM5及びバッファメモリM6のいずれか一方を、内蔵メモリ部12からのBISクラスタBIScのデータを格納するデータ保存用として使用し、他方を、格納したBISクラスタBIScをBISシンドローム生成回路16に出力するデータ出力用として使用する。なお、BISメモリ部15は、内蔵メモリ部12と略同様の構成を有する。
BISシンドローム生成回路16は、BISメモリ部15からBISクラスタBIScを読み出し、該BISクラスタBIScに基づいてBISシンドロームを生成する。BISシンドローム生成回路16は、生成したBISシンドロームを外部バッファメモリ6に格納する。
デスクランブル回路20は、上記LDCシンドローム生成回路13と同様に、アクセス可能に選択された内蔵メモリ部12のバッファメモリに格納された分割後のLDCクラスタLDCcを読み出しブロックRBとして読み出す。ここで、第1〜第31読み出しブロックRB1〜RB31のうち、第28〜第31読み出しブロックRB28〜RB31(217行目〜248行目のデータ)を構成するECC部LDCpの各データには、スクランブル処理が施されていない。そのため、デスクランブル回路20は、図7に示すように、第28〜第31読み出しブロックRB28〜RB31を除く第1〜第27読み出しブロックRB1〜RB27(図36(b)に示したデータブロックDB)のみを読み出す。デスクランブル回路20は、読み出した各読み出しブロックRB毎に各スクランブルデータに対してデスクランブル処理を行って該データにかけられた所定のスクランブルを解除する。デスクランブル回路20は、デスクランブル処理の施されたデスクランブルデータdDuを外部バッファメモリ6及びEDCシンドローム生成回路30に出力する。なお、図7は、デスクランブル回路20により読み出される第1〜第27読み出しブロックRB1〜RB27のスクランブルデータsDuの読み出し順序を、スクランブルデータフレームSDF(図36(a)参照)における行番号uで示した。なお、この行番号uは、スクランブル処理時におけるデータフレームDF毎の処理順序を示す番号であり、0≦u≦2051である。
図6に、デスクランブル回路20の回路構成例を示した。図6に示すように、内蔵メモリ部12から読み出されたスクランブルデータsDuは、EOR回路21に入力される。このEOR回路21には、スクランブル値生成回路22により生成されるスクランブル値SCが入力される。EOR回路21は、内蔵メモリ部12からのスクランブルデータsDuと、所定のスクランブル値SCの下位8ビットとの排他的論理和を取ってデスクランブルデータdDuを生成し、該デスクランブルデータdDuを外部バッファメモリ6及びEDCシンドローム生成回路30に出力する。
ここで、デスクランブル処理について説明する。前述したように、スクランブル値SCの初期値がS0である場合には、スクランブルデータsDuに対するデスクランブルデータdDuは下記式により生成される。
Figure 2009037656
このようにスクランブル処理時と同一のスクランブル値SCとスクランブルデータsDuとの排他的論理和を取ることによって、デスクランブル処理を実行することができる。すなわち、スクランブル処理時と同様の順序で読み出されるスクランブルデータsDuと、スクランブル処理を行った際と同様の順序で生成されるスクランブル値SCとの排他的論理和を取ることによって、全デスクランブルデータdD0〜dD2051を正確に生成することができる。但し、本実施形態の場合、データブロックDBが31分割されて読み出されるため、データの読み出し順序がスクランブル処理時と異なる。従って、スクランブル処理時と同様に、1バイト分ずつシフトさせてスクランブル値SCを生成すると、スクランブル処理時とは異なるスクランブル値SCと各データとの排他的論理和が取られ、正確にデスクランブル処理を実行することができない。
そこで、本実施形態では、スクランブル値生成回路22内に、EOR回路21に入力されるスクランブルデータsDuに応じてシフト演算子γを所望のバイト数分だけシフトさせるための1シフト演算器24、209シフト演算器25及び108シフト演算器26を備えるようにした。1シフト演算器24及び209シフト演算器25には、フリップフロップ(FF)回路23からスクランブル値SCが入力される。1シフト演算器24は、FF回路23からスクランブル値SCとしてS0・γが入力されたときに、スクランブル値SCとしてS0・γn+1をセレクタ27に出力する演算器である。すなわち、1シフト演算器24は、入力されたスクランブル値を生成多項式Φ(x)に従って1バイト分シフトさせて新たなスクランブル値SCを生成する演算器である。図15に、1シフト演算器24にI[15:0]が入力されたときに、該1シフト演算器24から出力されるO[15:0]の論理式を示した。
209シフト演算器25は、FF回路23からスクランブル値SCとしてS0・γが入力されたときに、スクランブル値SCとしてS0・γn+209をセレクタ27に出力する演算器である。すなわち、209シフト演算器25は、入力されたスクランブル値を生成多項式Φ(x)に従って209バイト分シフトさせて新たなスクランブル値SCを生成する演算器である。図16に、209シフト演算器25にI[15:0]が入力されたときに、該209シフト演算器25から出力されるO[15:0]の論理式を示した。
108シフト演算器26は、初期値レジスタR1からスクランブル値SCの初期値S0が入力されたときに、スクランブル値SCとしてS0・γ108を奇数レジスタR3に出力する演算器である。すなわち、108シフト演算器26は、入力されたスクランブル値を生成多項式Φ(x)に従って108バイト分シフトさせて新たなスクランブル値SCを生成する演算器である。図17に、108シフト演算器26にI[15:0]が入力されたときに、該108シフト演算器26から出力されるO[15:0]の論理式を示した。なお、図15〜図17におけるO[7]〜O[0]が、EOR回路21において実際にスクランブルデータsDuと排他的論理和が取られるデータである。
セレクタ27には、各種演算器24,25と併せて、初期値レジスタR1、偶数レジスタR2及び奇数レジスタR3からそれぞれスクランブル値SCが入力される。ここで、初期設定時の偶数レジスタR2には、初期値レジスタR1から入力されるスクランブル値SCの初期値S0が格納される。また、偶数レジスタR2には、各読み出しブロックRB内の最終偶数データフレーム(データフレームDF30)における1列目の最終行のスクランブルデータに対するスクランブル値SCが1シフト演算器24を通じて格納される。一方、初期設定時の奇数レジスタR3には、初期値レジスタR1から108シフト演算器26を通じて入力されるスクランブル値SC(=S0・γ108)が格納される。また、奇数レジスタR3には、各読み出しブロックRB内の最終奇数データフレーム(データフレームDF31)における1列目の最終行のスクランブルデータに対するスクランブル値SCが1シフト演算器24を通じて格納される。
セレクタ27には、選択回路28からの選択信号が入力される。セレクタ27は、選択回路28からの選択信号に基づいて、各種演算器24,25及び各レジスタR1〜R3から入力されるスクランブル値のうち1つのスクランブル値SCを上記FF回路23に出力する。なお、選択回路28は、入力されるクロック信号CLKのパルス数に応じて、すなわち読み出すデータの位置(データブロックDBにおける位置)に応じて選択信号を生成し、その選択信号をセレクタ27に出力する。例えば、選択回路28は、各読み出しブロックRB内の各偶数データフレームにおける1行1列目の先頭スクランブルデータがEOR回路21に入力されるときには、偶数レジスタ28からのスクランブル値SCをFF回路23に出力させる選択信号を生成する。選択回路28は、各読み出しブロックRB内の各奇数データフレームにおける1行1列目の先頭スクランブルデータがEOR回路21に入力されるときには、奇数レジスタ29からのスクランブル値SCをFF回路23に出力させる選択信号を生成する。選択回路28は、各読み出しブロックの2行目以降のスクランブルデータがEOR回路21に入力されるときには、1シフト演算器24から入力されるスクランブル値SCをFF回路23に出力させる選択信号を生成する。選択回路28は、各読み出しブロックの各データフレームDFにおける2列目以降の各列の1行目のスクランブルデータがEOR回路21に入力されるときには、209シフト演算器25から入力されるスクランブル値SCをFF回路23に出力させる選択信号を生成する。
FF回路23は、CK端子に入力されるクロック信号CLKのパルスに基づいて、セレクタ27からD端子に入力されるスクランブル値SCをラッチするとともに、該ラッチしたスクランブル値SCをQ端子からEOR回路21、各種演算器24,25に出力する。
図2に示すように、EDCシンドローム生成回路30は、デスクランブル回路20からバイトデータとして入力されるデスクランブルデータdDuに基づいてEDC演算を行ってEDCシンドロームを生成する。すなわち、EDCシンドローム生成回路30は、読み出しブロックRB内のデータフレームDF毎に、デスクランブルデータdDuに対するEDCシンドロームを生成し、そのEDCシンドロームをEDCメモリ部40に格納する。
図8に、EDCシンドローム生成回路30の回路構成例を示した。図8に示すように、デスクランブル回路20から入力されるデスクランブルデータdDuは、EOR回路31に入力される。このEOR回路31には、セレクタ32からシフト演算値Esが入力される。EOR回路31は、デスクランブルデータdDuとシフト演算値Esの下位8ビットとの排他的論理和を取って、EDC演算値Er(c)をFF回路33に出力する。なお、EDC演算値Er(c)のrは読み出しブロックRB番号であり、1≦r≦27であるとともに、cは各データフレームDFにおけるクロック信号CLKのパルス数を表している。
ここで、EDC演算について説明する。前述したように、4バイトのEDCを付加するときのデータ配置(データ処理順序)と同様に、デスクランブルデータが、dD0→dD1→・・・→dD2050→dD2051の順で入力されると、EDCシンドロームEDCSは下記式により生成される。
Figure 2009037656
このように、EDCシンドロームEDCSの演算は、1バイトのデータが演算処理される度に各データに対して1次のベクターβによる重み付けが行われる。従って、入力順序が早いデータほど重み付けされるベクターβの次数が高次になるとともに、入力順序が遅いデータほど重み付けされるベクターβの次数が低次になる。例えば、各データフレームDFにおいて最も早く入力される入力データ(バイトデータ)X2051に対しては、1次のベクターβによる重み付けが2051回行われる。但し、本実施形態の場合、図7に示すように、デスクランブル回路20からEDCシンドローム生成回路30にデスクランブルデータが、dD0→dD1→・・・→dD7→dD216→dD217→・・・という順序で入力される。このように、EDC付加時のデータ処理順序と異なる順序でデスクランブルデータが入力されると、ベクターβによる重み付けが正確にできないため、正常なEDCシンドロームを生成することができない。
そこで、本実施形態のEDCシンドローム生成回路30は、図8に示すように、バイトデータに応じて所望の次数nのベクターβによる重み付けを行うための1シフト演算器34、209シフト演算器35、108シフト演算器36及び−211シフト演算器37を備えるようにした。これら各種演算器34〜37には、FF回路33からEDC演算値Er(c)が入力される。すなわち、FF回路33は、CK端子に入力されるクロック信号CLKに基づいて、D端子に入力されるEDC演算値Er(c)をラッチするとともに、該EDC演算値Er(c)をQ端子から各種演算器34〜37及びEDCメモリ部40に出力する。
1シフト演算器34は、FF回路33からEDC演算値Er(c)が入力されたときに、シフト演算値としてEr(c)・βをセレクタ32に出力する演算器である。すなわち、1シフト演算器34は、入力されるEDC演算値Er(c)に対して、生成多項式G(x)に従って1バイト分シフトさせる重み付けをしてシフト演算値Esを生成する演算器である。図18に、1シフト演算器34にI[31:0]が入力されたときに、該1シフト演算器34から出力されるO[31:0]の論理式を示した。
209シフト演算器35は、FF回路33からEDC演算値Er(c)が入力されたときに、シフト演算値としてEr(c)×β209をセレクタ32及びEOR回路38に出力する演算器である。すなわち、209シフト演算器35は、入力されるEDC演算値Er(c)に対して、生成多項式G(x)に従って209バイト分シフトさせる重み付けをしてシフト演算値Esを生成する演算器である。図19に、209シフト演算器35にI[31:0]が入力されたときに、該209シフト演算器35から出力されるO[31:0]の論理式を示した。
108シフト演算器36は、FF回路33からEDC演算値Er(c)が入力されたときに、EDCシンドロームの中間値EDCsとしてEr(c)×β108をセレクタ32に出力する演算器である。すなわち、108シフト演算器36は、入力されるEDC演算値Er(c)に対して、生成多項式G(x)に従って108バイト分シフトさせる重み付けをしてシフト演算値Esを生成する演算器である。図20に、108シフト演算器36にI[31:0]が入力されたときに、該108シフト演算器36から出力されるO[31:0]の論理式を示した。
−211シフト演算器37は、FF回路33からEDC演算値Er(c)が入力されたときに、EDCシンドロームの中間値EDCsとしてEr(c)×β-211をセレクタ32に出力する演算器である。すなわち、−211シフト演算器37は、入力されるEDC演算値Er(c)に対して、生成多項式G(x)に従って211バイト分、逆シフトさせる重み付けをしてシフト演算値Esを生成する演算器である。図21に、−211シフト演算器37にI[31:0]が入力されたときに、該−211シフト演算器37から出力されるO[31:0]の論理式を示した。
EDCメモリ部40には、各読み出しブロックRBの各データフレームにおける最終行最終列のバイトデータに対するEDC演算値Er(c)が1シフト演算器34を通じて中間値EDCsとして格納される。EDCメモリ部40には、第14読み出しブロックRBの各偶数データフレームにおける最後のバイトデータに対するEDC演算値Er(c)が−211シフト演算器37を通じて中間値EDCsとして格納される。EDCメモリ部40には、第27読み出しブロックRBの各偶数データフレームにおける最終行最終列のバイトデータに対するEDC演算値Er(c)が108シフト演算器36を通じてEDCシンドロームEDCSとして格納される。EDCメモリ部40には、第27読み出しブロックRBの各奇数データフレームにおける最後のバイトデータに対するEDC演算値Er(c)がEDCシンドロームEDCSとしてFF回路33から格納される。
このEDCメモリ部40は、図8に示すように、2つのEDCバッファメモリM7,M8から構成されている。各バッファメモリM7,M8の各々は、全データフレームDF0〜DF31におけるEDCシンドロームを格納可能なメモリ容量、すなわち128(=4×32)バイトを格納可能なメモリ容量となっている。EDCメモリ部40は、1シフト演算器34及び−211シフト演算器37を通じて格納された中間値EDCsをEOR回路38に出力する。EDCメモリ部40は、FF回路33及び108シフト演算器36からのEDCシンドロームEDCSを外部バッファメモリ6に出力する。EDCメモリ部40は、同一時間において、バッファメモリM7及びバッファメモリM8のいずれか一方を、EDCシンドローム生成回路30からのEDCシンドロームの中間値EDCsを保存するシンドローム保存用として使用し、他方を、最終的なEDCシンドロームEDCSを外部バッファメモリ6に出力するシンドローム出力用として使用する。なお、EDCメモリ部40は、内蔵メモリ部12と略同様の構成を有する。
EOR回路38は、209シフト演算器35からのシフト演算値Es(=Er(c)・β209)とEDCメモリ部40からの中間値EDCsとの排他的論理和を取って、その演算結果をシフト演算値Esとしてセレクタ32に出力する。
セレクタ32は、選択回路39からの選択信号に基づいて、各種演算器34,35及びEOR回路38から入力されるシフト演算値のうち1つのシフト演算値Esを上記EOR回路31に出力する。また、セレクタ32は、選択回路39からの選択信号に基づいて、シフト演算値Esを出力しないようにする。
選択回路39は、入力されるクロック信号CLKのパルス数に応じて、すなわちバイトデータの位置(データブロックDBにおける位置)に応じて各種選択信号を生成し、その選択信号をセレクタ32に出力する。例えば、選択回路39は、各読み出しブロックRBの2行目以降のバイトデータがEOR回路31に入力されるときには、1シフト演算器34からのシフト演算値EsをEOR回路31に出力させる選択信号を生成する。選択回路39は、各読み出しブロックRBにおける各データフレームDFの1列目と最終列を除く各列の1行目のバイトデータが入力されるときには、209シフト演算器35からのシフト演算値EsをEOR回路31に出力させる選択信号を生成する。選択回路39は、各読み出しブロックRBの各データフレームDFにおける最終列の1行目のバイトデータが入力されるときには、EOR回路38からのシフト演算値EsをEOR回路31に出力させる選択信号を生成する。選択回路39は、各読み出しブロックRBの各データフレームDFにおける1行1列目の先頭バイトデータが入力されるときには、セレクタ32からシフト演算値Esを出力しないようにする選択信号を生成する。
図2に示すように、誤り訂正回路50内の訂正回路51は、外部バッファメモリ6からLDCシンドローム及びBISシンドロームを読み出し、これらLDCシンドローム及びBISシンドロームに基づいて、外部バッファメモリ6に格納されたデスクランブル処理済のデータフレームDFに対して誤り訂正処理を行う。訂正回路51は、各種シンドロームに基づいて算出した誤り位置及び誤り数値をEDC補正回路52に出力する。
EDC補正回路52は、訂正回路51から入力される誤り位置及び誤り数値に基づいて、外部バッファメモリ6から補正メモリ部53に格納されるEDCシンドロームを補正する。EDCチェック回路54は、補正メモリ部53に格納されている補正後のEDCシンドロームを読み出し、EDCチェックを行う。ここで、図41及び図43に示したコントローラ110,130におけるEDCチェック回路116では、誤り訂正後のデータをホストコンピュータに転送すると同時に、EDCチェックを行っていた。そのため、従来のコントローラ110,130では、誤り訂正が正常に終了していない場合であっても、誤り訂正後のデータがホストコンピュータに転送される場合がある。これに対して、本実施形態のコントローラ10では、誤り訂正処理の終了後、直ちにEDCチェックが行われるため、誤った訂正を行ったデータをコンピュータ2に転送されることを抑制することができる。
インターフェース回路60は、マイクロプロセッサ8の命令に基づいて、外部バッファメモリ6に格納された誤り訂正後のデータを読み出して上記コンピュータ2に出力する。
外部バッファメモリ6は、図9に示すように、複数の格納ブロックから構成される。1つの格納ブロックは、13000Hバイトから構成されている。詳述すると、1つの格納ブロックには、そのアドレス000000H〜00FFFFHに全データフレームDF0〜DF31のユーザデータUD部分(65536バイト)が格納され、アドレス010000H〜0103FFHにBISデータ(720バイト)が格納される。また、1つの格納ブロックには、そのアドレス010400H〜0129FFHにLDCシンドローム(9728バイト)が格納され、アドレス012A00H〜012DFFHにBISシンドローム(768バイト)が格納され、アドレス012E00H〜12FFFHにEDCシンドローム(128バイト)が格納される。従って、1つの格納ブロックに、1つのECCクラスタECCc分のデータを格納することができる。なお、周知ではあるが、「H」はその値が16進数であることを示す。
次に、このように構成された光ディスクコントローラ10の動作について説明する。
復調回路11は、BD4からディスクデータを読み込んで復調し、その復調済データ(ECCクラスタECCc)を、内蔵メモリ部12の第1及び第2バッファメモリM1,M2のうちデータ保存用として選択されているバッファメモリに格納する。なお、1つのバッファメモリには、ECCクラスタECCcを31個に分割した2480バイト分の分割ECCクラスタDECCが格納される。
LDCシンドローム生成回路13は、アクセス用として選択されている第1バッファメモリM1あるいは第2バッファメモリM2から、分割ECCクラスタDECC内のLDCクラスタLDCcを並び替えながら、読み出しブロックRBとして読み出す。このとき、図4に示すように、読み出しブロックRBが任意の2432(8行×304列)バイト分のデータから構成されるため、LDCシンドローム生成回路13は、列方向に8バイト分のデータ毎、すなわち読み出しブロックRBの列毎にLDCシンドロームを生成する。LDCシンドローム生成回路13は、生成したLDCシンドロームをLDCシンドロームの中間値としてLDCメモリ部14に格納する。
次に、LDCシンドローム生成回路13は、第2読み出しブロックRB2以降の読み出しブロックRB(第2〜第31読み出しブロックRB2〜RB31)を読み出すとき、前回の読み出しブロックRBで生成した同一列のLDCシンドロームの中間値をLDCメモリ部14から読み出す。そして、LDCシンドローム生成回路13は、読み出したLDCシンドロームの中間値と現在の読み出しブロックRBの列方向に8バイト分のデータとからLDCシンドロームを生成し、該LDCシンドロームを新たなLDCシンドロームの中間値としてLDCメモリ部14に格納する。
LDCメモリ部14では、1つのパリティ付加ブロックPB(第1〜第31読み出しブロックRB1〜RB31)の全データの読み出しが終了すると、バッファメモリM3及びバッファメモリM4におけるシンドローム保存用とシンドローム出力用の選択が切り替えられる。これにより、シンドローム保存用からシンドローム出力用に切り替わったバッファメモリには、1つのパリティ付加ブロックPBにおける列毎の最終的なLDCシンドロームが格納されることになる。シンドローム出力用に切り替えられたバッファメモリは、この列毎の最終的なLDCシンドロームを外部バッファメモリ6に格納する。
一方、BISメモリ部15のデータ保存用に選択されているバッファメモリには、アクセス用として選択されている第1バッファメモリM1あるいは第2バッファメモリM2から、分割ECCクラスタDECC内のBISクラスタBIScが格納される。BISメモリ部15では、1つのBISクラスタBIScの全データの格納が終了すると、バッファメモリM5及びバッファメモリM6におけるデータ保存用とデータ出力用の選択が切り替えられる。次に、BISシンドローム生成回路16は、データ出力用に切り替えられたBISメモリ部15のバッファメモリM5あるいはバッファメモリM6から、BISクラスタBIScを読み出す。BISシンドローム生成回路16は、読み出したBISクラスタBIScに基づいてBISシンドロームを生成し、該BISシンドロームを外部バッファメモリ6に格納する。
デスクランブル回路20は、上記LDCシンドローム生成回路13によるデータ読み出しと同時に、アクセス用として選択されている第1バッファメモリM1あるいはバッファメモリM2から、スクランブルデータsDuを第1〜第27読み出しブロックRB1〜RB27として列方向に読み出す。
次に、デスクランブル回路20におけるデスクランブル処理を図7及び図10〜図12に従って説明する。
図10のステップS1において、偶数レジスタR2にスクランブル値SCの初期値S0が格納されるとともに、奇数レジスタR3にスクランブル値SCとしてS0・γ108が格納される。ここで、奇数レジスタR3に初期値S0ではなく、S0・γ108を格納した理由について説明する。図7に示すように、第1読み出しブロックRB1内の奇数データフレームDF(例えば、データフレームDF1)において最初に読み出されるスクランブルデータsDuの行番号uが108であるため、S0・γ108を格納するようにした。すなわち、このスクランブルデータsD108は、各データフレームのスクランブル処理時における先頭データsD0よりも、スクランブル処理時において108バイト分だけ遅く処理されるデータである。そのため、初期値S0から108バイト分だけシフトさせて得られるS0・γ108をスクランブル値SCとして奇数レジスタR3に格納するようにした。なお、初期値S0は、ディスクデータ内のECCクラスタECCcにおける物理セクタ番号に応じて予め設定されている値である。
次に、デスクランブル回路20は、第1読み出しブロックRB1のデータフレームDF0(偶数データフレーム)におけるスクランブルデータsD0を読み出し、該スクランブルデータsD0をEOR回路21に入力する(ステップS2)。このとき、選択回路28は、偶数レジスタR2からのスクランブル値SCをEOR回路21に出力させるための選択信号をセレクタ27に出力する。従って、EOR回路21には、スクランブル値SCとして初期値S0が入力される。EOR回路21は、スクランブルデータsD0と初期値S0の下位8ビットとの排他的論理和を取ってデスクランブルデータdD0を生成し、そのデスクランブルデータdD0を外部バッファメモリ6及びEDCシンドローム生成回路30に出力する(ステップS3)。ここで使用されたスクランブル値SCは、1シフト演算器24及び209シフト演算器25にも入力される。なお、以下の説明において、EOR回路21の排他的論理和演算におけるスクランブル値SCの下位8ビットを、単に「スクランブル値SC」とするが、以後も同様に、EOR回路21では、スクランブルデータsDuとスクランブル値SCの下位8ビットとの排他的論理和が取られる。
次に、ステップS4において、選択回路28は、入力されるクロック信号CLKのパルス数に基づいて、各読み出しブロックRBにおける1列分のデスクランブル処理が終了したかを判断する。選択回路28は、1列分のデスクランブル処理が終了していないと判断すると(ステップS4においてNO)、ステップS5に移る。このとき、上記ステップS3においてデスクランブル回路20により読み出されたスクランブルデータをsDuとすると、次に読み出されるスクランブルデータがsDu+1となる。すなわち、ステップS4からステップS5に移る場合には、各読み出しブロックRBにおける列方向にスクランブルデータが読み出され、読み出し順序がスクランブル処理時のデータ処理順序と同一になる。
そこで、選択回路28は、ステップS5において、すなわち各読み出しブロックの2行目以降のデータがEOR回路21に入力されるときに、1シフト演算器24からのスクランブル値SCをEOR回路21に出力させるための選択信号をセレクタ27に出力する。これにより、EOR回路21には、1つ前に読み出されたスクランブルデータsDuの時に使用されたスクランブル値から、上記生成多項式Φ(x)に従って1バイト分シフトさせて得られるスクランブル値SC(=S0・γ・γ)が入力される。そして、EOR回路21は、デスクランブル回路20により次に読み出されるスクランブルデータsD1と、1シフト演算器24からのスクランブル値SC(=S0・γ)との排他的論理和を取って、デスクランブルデータdD1を生成する(ステップS3)。このように、各読み出しブロックRBにおける1列分のデスクランブル処理が終了するまで、ステップS3〜ステップS5が繰り返し実行される。なお、本実施形態では、以後、デスクランブル回路20によりスクランブルデータがsD2→sD3→sD4→sD5→sD6→sD7の順(図7の実線の矢印参照)に読み出されるため、デスクランブルデータdD2〜dD7が下記式に示すように生成される。
Figure 2009037656
このようにデスクランブルデータdD7が生成されると、ステップS4において、選択回路28は、各読み出しブロックRBにおける1列分のデスクランブル処理が終了したと判断して、ステップS6に移る。次に、選択回路28は、各読み出しブロックRBにおける1つのデータフレーム分のデスクランブル処理が終了したかを判断する(ステップS6)。選択回路28は、1つのデータフレーム分のデスクランブル処理が終了していないと判断すると(ステップS6においてNO)、ステップS7に移る。このとき、上記ステップS3においてデスクランブル回路20により読み出されたスクランブルデータをsDuとすると、次に読み出されるスクランブルデータがsDu+209となる。すなわち、ステップS6からステップS7に移る場合には、各読み出しブロックRBの同一データフレーム内において次の列の1行目のスクランブルデータが読み出され、読み出し順序がスクランブル処理時のデータ処理順序と異なるようになる。詳しくは、ステップS7に移ったときに読み出される次列の1行目のデータD2は、その1つ前に読み出されたデータD1よりも、スクランブル処理時において{[(データブロックDBの行数)+1]−(1つの読み出しブロックRBの行数)=209}バイト分だけ遅く処理されるデータである。そのため、スクランブル値SCをスクランブル処理時の処理順序に合わせるように、上記データD1のときに使用したスクランブル値を生成多項式Φ(x)に従って209バイト分シフトさせることで、正確にデスクランブル処理を行うことができる。
そこで、選択回路28は、ステップS7において、すなわち各読み出しブロックの各データフレームにおける2列目以降の1行目のデータがEOR回路21に入力されるときに、209シフト演算器25からのスクランブル値SCをEOR回路21に出力させるための選択信号をセレクタ27に出力する。これにより、EOR回路21には、1つ前に読み出されたスクランブルデータsD7の時に使用されたスクランブル値S0・γから、上記生成多項式Φ(x)に従って209バイト分シフトさせて得られるスクランブル値SC(=S0・γ・γ209)が入力される。続いて、EOR回路21は、デスクランブル回路20により次に読み出されるスクランブルデータsD216と、209シフト演算器25からのスクランブル値SC(=S0×γ216)との排他的論理和を取って、デスクランブルデータdD216を生成する(ステップS3)。
次に、前述のデータフレームDF0における1列目の処理と同様に、ステップS3〜S5が繰り返し実行され、デスクランブル回路20によりスクランブルデータがsD217→sD218→sD219→sD220→sD221→sD222→sD223の順に読み出されるため、デスクランブルデータが下記式に示すように生成される。
Figure 2009037656
以後同様に、ステップS3〜ステップS7が繰り返し実行され、第1読み出しブロックRB1のデータフレームDF0における各スクランブルデータに対するデスクランブル処理が実行される。そして、第1読み出しブロックRB1のデータフレームDF0における最終行最終列のスクランブルデータsD1951に対するデスクランブルデータdD1951(=sD1951^S0・γ1951)が生成されると、選択回路28は、1つのデータフレーム分のデスクランブル処理が終了したと判断し(ステップS7においてYES)、ステップS8に移る。
次に、選択回路28は、デスクランブル処理の終了したデータフレームDFが最終データフレーム、すなわちデータフレームDF31であるかを判断する(ステップS8)。選択回路28は、デスクランブル処理の終了したデータフレームがデータフレームDF31ではないと判断すると(ステップS8においてNO)、次に読み出されるデータフレームDFが偶数データフレームであるかを判断する(ステップS9)。選択回路28は、次データフレームDFが偶数データフレームであると判断すると(ステップS9においてYES)、ステップS10に移り、奇数データフレームであると判断すると(ステップS9においてNO)、ステップS11に移る。ここでは、次データフレームがデータフレームDF1(奇数データフレーム)であるため、ステップS11に移る。
続いて、各読み出しブロックRBの各奇数データフレームにおける1行1列目の先頭データが次に読み出されるため、選択回路28は、奇数レジスタR3からのスクランブル値SC(ここでは、S0・γ108)をEOR回路21に出力させるための選択信号を生成する(ステップS11)。
次に、図11に示すステップS12において、選択回路28は、次データフレームDFが最終奇数データフレーム、すなわちデータフレームDF31であるかを判断する。選択回路28は、次データフレームDFが最終奇数データフレームDF31でないと判断すると(ステップS12においてNO)、ステップS3に戻る。このときのステップS3では、上記ステップ11において生成された選択信号がセレクタ27に入力されるため、EOR回路21には、スクランブル値SCとして奇数レジスタR3に格納されているS0・γ108が入力される。また、EOR回路21には、第1読み出しブロックRB1のデータフレームDF1における1行1列目のスクランブルデータsD108が入力される。EOR回路21は、データフレームDF1のスクランブルデータsD108とスクランブル値S0・γ108との排他的論理和を取ってデスクランブルデータdD108(=sD108^S0・γ108)を生成する。
以後、データフレームDF0のときと同様に、各読み出しブロックRBの各列の2行目以降のデータ(例えば、スクランブルデータsD109)がEOR回路21に入力されるときには、前回のスクランブル値を1バイト分シフトさせたスクランブル値SCが使用されてデスクランブル処理が行われる。また、各読み出しブロックRBの各データフレームにおける2列目以降の各列の1行目のデータ(例えば、スクランブルデータsD324)がEOR回路21に入力されるときには、前回のスクランブル値SCを209バイト分シフトさせたスクランブル値が使用されてデスクランブル処理が行われる。そして、図10に示すステップS3〜ステップS7が繰り返し実行されて、第1読み出しブロックRB1のデータフレームDF1における最後のスクランブルデータsD1843(図7参照)に対するデスクランブルデータdD1843(=sD1843^S0・γ1843)が生成されると、ステップS6からステップS8に移り、さらにその後にステップS9に移る。このとき、次データフレームがデータフレームDF2(偶数データフレーム)であるため(ステップS10においてYES)、ステップS10に移る。
続いて、各読み出しブロックRBの各偶数データフレームにおける1行1列目の先頭データが次に読み出されるため、選択回路28は、偶数レジスタR2からのスクランブル値SC(ここでは、S0)をEOR回路21に出力させるための選択信号を生成する(ステップS10)。次に、図11に示すステップS13において、選択回路28は、次データフレームが最終偶数データフレーム、すなわちデータフレームDF30であるかを判断する。選択回路28は、次データフレームが最終偶数データフレームでないと判断すると(ステップS13においてNO)、ステップS3に戻る。以後は、データフレームDF0及びデータフレームDF1のときの処理と同様に、データフレームDF2〜DF29までデスクランブル処理が行われる。なお、同一の読み出しブロックRB内では、偶数データフレーム(データフレームDF0,DF2,…,DF30)の各々で使用されるスクランブル値SCの順序が同一である。また、同一の読み出しブロックRB内では、奇数データフレーム(データフレームDF1,DF3,…,DF31)の各々で使用されるスクランブル値SCの順序が同一である。
次に、最終偶数データフレームDF30のデスクランブル処理が開始されると(ステップS13においてYES)、ステップS14に移る。ステップS14において、ステップS3〜ステップS5が繰り返し実行され、データフレームDF30における1列目のデスクランブル処理が終了すると、1列目の最後のデータsD7のときに使用されたスクランブル値SCが1シフト演算器24を通じて偶数レジスタR2に格納される。従って、第1読み出しブロックRB1のときには、偶数レジスタR2にスクランブル値SC(=S0・γ・γ=S0・γ)が格納される。なお、第2読み出しブロックRB2のときには、偶数レジスタR2にスクランブル値SC(=S0・S16)が格納される。ステップS14以降は、選択回路28において、209シフト演算器25からのスクランブル値SC(ここでは、S0・γ216)をEOR回路21に出力させるための選択信号が生成されて(ステップS16)、ステップS3に戻る。以後、データフレームDF0の2列目以降と同様に、データフレームDF31の2列目以降のデスクランブル処理が実行される。
次に、最終奇数データフレームDF31のデスクランブル処理が開始されると(ステップS12においてYES)、ステップS15に移る。ステップS15において、ステップS3〜ステップS5が繰り返し実行され、データフレームDF31における1列目のデスクランブル処理が終了すると、1列目の最後のデータsD115のときに使用されたスクランブル値SCが1シフト演算器24を通じて奇数レジスタR3に格納される。従って、第1読み出しブロックRB1のときには、奇数レジスタR3にスクランブル値SC(=S0・γ115・γ=S0・γ116)が格納される。なお、第2読み出しブロックRB2のときには、奇数レジスタR3にスクランブル値SC(=S0×S124)が格納される。データフレームDF31の2列目以降のデスクランブル処理については、データフレームDF1のときと同様に実行される。そして、データフレームDF31の最終行最終列のスクランブルデータsD1843に対するデスクランブルデータdD1843(=sD1843^S0・γ1843)が生成されると(ステップS8においてYES)、第1読み出しブロックRB1(第r読み出しブロック)のデスクランブル処理が終了する。
第1読み出しブロックRB1のデスクランブル処理が終了すると、第2読み出しブロックRB2のデスクランブル処理が開始される。詳しくは、図10に示すステップS2から処理が開始され、選択回路28は、偶数レジスタR2からのスクランブル値SC(ここでは、S0・γ)をEOR回路21に出力させる選択信号をセレクタ27に出力する。すなわち、選択回路28は、各読み出しブロックの各偶数データフレームにおける1行1列目の先頭データがEOR回路21に入力されるときに、偶数レジスタR2からのスクランブル値SCをEOR回路21に出力させるための選択信号をセレクタ27に出力する。これにより、EOR回路21には、前回の第1読み出しブロックRB1における最終偶数データフレームDF30の1列目の最終行のデータsD7に使用したスクランブル値を、生成多項式Φ(x)に従って1バイト分シフトさせて得られるスクランブル値SC(=S0・γ)が入力される。従って、ステップS3において、偶数レジスタR2からのスクランブル値S0・γと、第2読み出しブロックRB2のデータフレームDF0における1行1列目の先頭データsD8との排他的論理和をEOR回路21により取ることで、デスクランブルデータdD8(=sD8^S0・γ)が生成される。なお、奇数データフレームの場合についても、奇数レジスタR3にはスクランブル値としてS0・γ116、すなわち第2読み出しブロックRB2の奇数データフレームにおける1行1列目の先頭データsD116に対するスクランブル値が格納されているため、上記先頭データsD116についても正確にデスクランブル処理が施される。
以後同様に、第2〜第13読み出しブロックRB2〜RB13におけるデスクランブル処理が図10及び図11のフローチャートに従って実行される。
次に、第14読み出しブロックRB14におけるデスクランブル処理について説明する。図7に示すデータフレームDF0,DF1を例に説明すると、第1〜第13読み出しブロックRB1〜RB13では、1〜10列目がデータフレームDF0になるとともに、11〜19列目がデータフレームDF1になる。なお、第15〜第27読み出しブロックRB15〜RB27では、1〜9列目がデータフレームDF0になるとともに、10〜19列目がデータフレームDF0になる。ところが、第14読み出しブロックRB14では、10列目が、データフレームDF0(偶数データフレーム)の最終列になるとともに、データフレームDF1(奇数データフレーム)の1列目になる。また、データフレームDF1については、10列目の5行目から該データフレームDF1におけるスクランブル処理時の先頭データsD0となる。このとき、第13読み出しブロックRB13における最終奇数データフレームのデスクランブル処理時に奇数レジスタR3に格納されるスクランブル値SCは、S0・γ212である。そのため、第14読み出しブロックRB14のデータフレームDF1の先頭データsD0がEOR回路21に入力されるときに、図10及び図11のフローチャートに従って奇数レジスタR3からスクランブル値S0・γ212がEOR回路21に入力されてしまうと、正確にデスクランブル処理を行うことができない。
そこで、本実施形態では、第14読み出しブロックRB14における各偶数データフレームの最終列及び各奇数データフレームの1列目のデスクランブル処理を図12のフローチャートに従って実行するようにした。
図12に示すステップS20において、第14読み出しブロックRB14の偶数データフレーム(ここでは、データフレームDF0)における最終列の1列前の列(ここでは、9列目)における最後のデータsD1839に対するデスクランブルデータdD1839(=sD1839^S0・γ1839)が生成されると、ステップS21に移る。ステップS21において、選択回路28は、209シフト演算器25からのスクランブル値SC(=S0・γ1839・γ209=S0・γ2048)をFF回路23に出力させる選択信号をセレクタ27に出力する。
次に、EOR回路21は、デスクランブル回路20により次に読み出されるスクランブルデータ(ここでは、スクランブルデータsD2048)と、209シフト演算器25からのスクランブル値SC(ここでは、S0・γ2048)との排他的論理和を取って、デスクランブルデータdD2048を生成する(ステップS22)。
次に、ステップS23において、選択回路28は、第14読み出しブロックRB14の偶数データフレームにおける最終列のデスクランブル処理が終了したかを判断する。選択回路28は、偶数データフレームのデスクランブル処理が終了していないと判断すると(ステップS23においてNO)、ステップS24に移る。続いて、偶数データフレームのデスクランブル処理が終了するまで、図10に示すステップS3〜S5と同様に、ステップS22〜S24が繰り返し実行される。そして、下記式に示すように、第14読み出しブロックRB14の各偶数データフレームにおける最終データsD2051に対するデスクランブルデータが生成されると(ステップS23においてYES)、ステップS25に移る。
Figure 2009037656
次に、選択回路28は、初期値レジスタR1からのスクランブル値SC、すなわち初期値S0をEOR回路21に出力させるための選択信号をセレクタ27に出力する(ステップS25)。続いて、EOR回路21は、デスクランブル回路20により読み出される各奇数データフレームにおけるスクランブル処理時の先頭データsD0と、初期値レジスタR1からの初期値S0との排他的論理和を取って、デスクランブルデータdD0(=sD0^S0)を生成する(ステップS26)。
次に、ステップS27において、選択回路28は、第14読み出しブロックRB14の各奇数データフレームにおける1列目のデスクランブル処理が終了したかを判断する。選択回路28は、奇数データフレームの1列目のデスクランブル処理が終了していないと判断すると(ステップS27においてNO)、ステップS28に移る。続いて、第14読み出しブロックRB14の各奇数データフレームにおける1列目のデスクランブル処理が終了するまで、図10に示すステップS3〜S5と同様に、ステップS26〜S28が繰り返し実行される。なお、第14読み出しブロックRB14の各奇数データフレームにおける2列目以降は、図10に示すステップS3〜S7が繰り返し実行されることにより、デスクランブル処理が施される。
そして、第14読み出しブロックRB14の各奇数データフレームにおける1列目の最終行のスクランブルデータsD4に対するデスクランブルデータdD4が生成されると(ステップS27においてYES)、ステップS29に移る。このステップS29おいて、現在のデータフレームDFが最終奇数データフレーム(データフレームDF31)であると、スクランブルデータsD4に使用したスクランブル値SCが1シフト演算器24を通じて奇数レジスタR3に格納される。すなわち、第14読み出しブロックRB14における最終奇数データフレームのデスクランブル処理時に奇数レジスタR3に格納されるスクランブル値SCは、S0・γ・γ=S0・γとなる。
以後、第15〜第27読み出しブロックRB15〜RB27におけるデスクランブル処理が図10及び図11のフローチャートに従って実行される。このように図10〜図12のフローチャートに従って、第1〜第27読み出しブロックRB1〜RB27におけるデスクランブル処理が終了すると、下記式で示すようにデスクランブルデータdDuを生成することができる。
Figure 2009037656
次に、EDCシンドローム生成回路30におけるEDCシンドローム生成方法を図13及び図14に従って説明する。このEDCシンドローム生成回路30には、上記デスクランブル回路20からデスクランブルデータdDuがデスクランブル処理順に入力される。すなわち、EDCシンドローム生成回路30には、デスクランブルデータdDuが各読み出しブロックRB1〜RB27毎に入力される。具体的には、第1読み出しブロックRB1の偶数データフレームでは、デスクランブルデータがバイトデータとして、dD0→dD1→…→dD7→dD216→dD217→…→dD223→dD432→…→dD1951という順にEDCシンドローム生成回路30に入力される。また、第1読み出しブロックRB1の奇数データフレームでは、デスクランブルデータがバイトデータとして、dD108→dD109→…dD115→dD324→dD325→…→dD331→dD540→…→dD1843という順にEDCシンドローム生成回路30に入力される。図13に、EDCシンドローム生成回路30に入力されるバイトデータの配置を、該バイトデータを多項式表現Xしたときの次数nで示した。なお、以下の説明では、バイトデータを多項式で表現する。また、同一読み出しブロックRB内では、偶数データフレームの演算方法はそれぞれ共通しているため、ここではデータフレームDF0を例にして説明する。また、同一読み出しブロックRB内では、奇数データフレームの演算方法はそれぞれ共通しているため、ここではデータフレームDF1を例にして説明する。
図14に示すステップS30の初期値設定において、選択回路39は、セレクタ32からシフト演算値Esが出力されないようにする選択信号をセレクタ32に出力する。
続いて、ステップS31において、デスクランブル回路20からEOR回路31にバイトデータX(ここでは、X2051)が入力される。このとき、セレクタ32からEOR回路31にシフト演算値Esが入力されないため、EOR回路31は、バイトデータX2051をEDC演算値E1(1)としてFF回路33を通じて各種演算器34〜37に出力する。
次に、ステップS32において、選択回路39は、入力されるクロック信号CLKのパルス数に基づいて、各読み出しブロックRBにおける1列分(例えば、X2051〜X2044)のEDC演算処理が終了したかを判断する。選択回路39は、1列分のEDC演算処理が終了していないと判断すると(ステップS32においてNO)、ステップ33に移る。このとき、上記ステップS31においてEOR回路31に入力されるバイトデータをXとすると、次に入力されるバイトデータがXn−1となる。すなわち、ステップS32からステップS33に移る場合には、各読み出しブロックRBにおける列方向に次のバイトデータが入力され、データ入力順序がEDC付加時のデータ処理順序と同一になる。
そこで、選択回路39は、ステップS33において、すなわち各読み出しブロックRBにおける各列の2行目以降のバイトデータがEOR回路31に入力されるときに、1シフト演算器24からのスクランブル値SCをEOR回路31に出力させるための選択信号をセレクタ32に出力する。これにより、EOR回路31には、1つ前に入力されたバイトデータX2051のときに算出されたEDC演算値E1(1)に対して、1次のベクターβによる重み付けをして得られるシフト演算値Es(=β・E1(1))が入力される。そして、EOR回路31は、次に入力されるバイトデータX2050と、1シフト演算器34からのシフト演算値Es(=β・E1(1))の下位8ビットとの排他的論理和を取って、新たなEDC演算値E1(2)を算出する。なお、以下の説明において、EOR回路31の排他的論理和演算におけるシフト演算値Esの下位8ビットを、単に「シフト演算値Es」とするが、以後も同様に、EOR回路31では、バイトデータXとシフト演算値Esの下位8ビットとの排他的論理和が取られる。
続いて、1列分のEDC演算処理が終了するまで、これらステップS31〜S33が繰り返し実行される。なお、本実施形態では、以後、バイトデータがX2049→X2048→…→X2045→X2044の順にEOR回路31に入力されるため、EDC演算値Er(c)が下記式に示す順番で算出される。
Figure 2009037656
このように、第1読み出しブロックRB1のデータフレームDF0における1列目の最終行のバイトデータX2044に対するEDC演算処理が終了すると(ステップS32においてYES)、ステップS34に移る。次に、選択回路39は、209シフト演算器35からのシフト演算値Es(=β209・E1(8))をEOR回路31に出力させるための選択信号を生成する(ステップS34)。続いて、ステップS35において、選択回路39は、各読み出しブロックRB1における1つのデータフレームDF分のEDC演算処理が終了したかを判断する。選択回路39は、1つのデータフレームDF分のEDC演算処理が終了していないと判断すると(ステップS35においてNO)、ステップS36に移る。続いて、選択回路39は、次の列が各データフレームの最終列(例えば、第1読み出しブロックRB1のデータフレームDF0の場合には、次列が10列目)であるかを判断する。選択回路39は、次列が最終列でないと判断すると(ステップS36においてNO)、ステップS31に戻る。続いて、EOR回路31は、次に入力されるバイトデータX1835と、209シフト演算器35からのシフト演算値Es(=β209・E1(8))との排他的論理和を取って、下記式に示すEDC演算値Er(9)を算出する。
Figure 2009037656
このように各読み出しブロックの各データフレームDFにおける1列目及び最終列を除く各列の1行目のバイトデータXが入力されたときには、その前に入力されたバイトデータXn+209のときに算出されたEDC演算値Er(c)に対して、209シフト演算器35を通じて209次のベクターβ209による重み付けを行うようになっている。ここで、209次のベクターβ209による重み付けする理由について説明する。例えば、第1読み出しブロックRB1のデータフレームDF0の2列目における1行目のデータX1835は、同1列目の最終行のデータX2044よりも、EDC付加時において(データブロックDBにおける全バイト数)+1−(1つの読み出しブロックの列方向におけるバイト数)=209バイト分だけ遅く処理されるデータである。すなわち、バイトデータX2051〜X2044は、EDC付加時と同様のデータ処理順序でEDC演算した場合には、バイトデータX1835が入力されるまでに、1次のベクターβによる重み付けが209回行われる。そこで、本実施形態では、前列の最終行のデータのときに算出されたEDC演算値Er(c)に対して、209バイト分のベクターβ(ベクターβ209)による重み付けをすることで、デスクランブル処理を行うようにした。
以後同様に、ステップS31〜S36が繰り返し実行され、第1読み出しブロックRB1のデータフレームDF0における9列目の最後のバイトデータX316(72クロック目)に対するEDC演算処理が終了すると、次列が最終列(10列目)になるため(ステップS36においてYES)、ステップS37に移る。続いて、選択回路39は、EOR回路38からのシフト演算値Es(=β209・Er(c)^EDCs)をEOR回路31に出力させるための選択信号をセレクタ32に出力する。但し、ここではEDCメモリ部40からEOR回路38に入力されるEDCシンドロームの中間値EDCsが「0」であるため、EOR回路38からのシフト演算値Esはβ209・E1(72)となる。従って、EOR回路31は、ステップS31において、次に入力されるバイトデータX107と、EOR回路38からのシフト演算値Es(=β209・E1(72))との排他的論理和を取って、下記式に示すEDC演算値E1(73)を算出する。
Figure 2009037656
以下、ステップS31〜S33が繰り返し実行され、下記式に示すように、第1読み出しブロックRB1のデータフレームDF0における最終列の最終行のバイトデータX100(80クロック目)に対するEDC演算値E1(80)が算出されると(ステップS35においてYES)、ステップS38に移る。
Figure 2009037656
続いて、選択回路39は、ステップS38において、現在のデータフレームが第14読み出しブロックRB14の偶数データフレームであるか判断し、ステップS39において、第27読み出しブロックRB27の偶数データフレームであるか判断し、ステップS40において、第27読み出しブロックRB27の奇数データフレームであるか判断する。ここでは、現在EDC演算処理を行っているデータフレームDFが第1読み出しブロックRB1のデータフレームDF0(偶数データフレーム)であるため(ステップS38〜S40において全てNO)、ステップS41に移る。次に、上記ステップS34において算出されたEDC演算値Er(c)(ここでは、E1(80))に対して、1シフト演算器34を通じてベクターβ1による重み付けが行われ、EDCシンドロームの中間値EDCs(=β・E1(80))が算出される(ステップS41)。続いて、上記算出された中間値EDCsがデータフレームDF0におけるEDCシンドロームの中間結果としてEDCメモリ部40に格納される(ステップS42)。
次に、ステップS43において、選択回路39は、現在EDC演算処理を行っているデータフレームDFが最終読み出しブロックRB27の最終データフレームDF31であるかを判断する。ここでは、現在処理しているのは第1読み出しブロックRB1のデータフレームDF0であるため、ステップS30に戻り、次のデータフレームDF1のEDC演算処理に移る。
奇数データフレームであるデータフレームDF1のEDC演算処理についても、基本的には、前述したデータフレームDF0(偶数データフレーム)におけるEDC演算処理と同様に行われる。すなわち、まず各読み出しブロックRBにおけるデータフレームDF1の最初に入力されるバイトデータX1943が1クロック目のEDC演算値E1(1)となる。次いで、EOR回路31は、各読み出しブロックRBの各データフレームにおける各列の2行目以降のバイトデータXがEOR回路31に入力されるときには、直前に入力されたバイトデータXn+1のときに算出されたEDC演算値Er(c)に対し1次のベクターβによる重み付けをして得られるシフト演算値EsがEOR回路31に入力される。また、各読み出しブロックRBの各データフレームDFにおける1列目及び最終列を除く各列の1行目のバイトデータXがEOR回路31に入力されるときには、直前に入力されたバイトデータXn+209のときに算出されたEDC演算値Er(c)に対し209次のベクターβ209による重み付けをして得られるシフト演算値EsがEOR回路31に入力される。これらのEDC演算処理によって、下記式に示すEDC演算値Er(c)が順番に算出される。
Figure 2009037656
このように、第1読み出しブロックRB1のデータフレームDF1における最終列の最終行のバイトデータX208(72クロック目)に対するEDC演算値E1(72)が算出されると、該EDC演算値E1(72)に対して、1シフト演算器34を通じてベクターβによる重み付けが行われ、中間値EDCsが生成される(ステップS41)。そして、上記生成された中間値EDCs(=β・E1(72))がデータフレームDF1におけるEDCシンドロームの中間結果としてEDCメモリ部40に格納される(ステップS42)。
以後同様に、ステップS30〜S43が繰り返し実行され、第1読み出しブロックRB1内のデータフレームDF2〜DF31のEDC演算処理が実行される。
次に、第2読み出しブロックRB2のデータフレームDF0におけるEDC演算処理について説明する。1クロック目から72クロック目までは、ステップS30〜S36が繰り返し実行され、下記式に示すEDC演算値E2(1)〜E2(72)が算出される。
Figure 2009037656
最終列、すなわち10列目の1列前の9列目の最後のバイトデータX308のEDC演算処理が終了すると、ステップS37において、選択回路39は、EOR回路38からのシフト演算値Es(=β209・E2(72)^EDCs)をEOR回路31に出力させる選択信号をセレクタ32に出力する。このとき、EDCメモリ部40からEOR回路38に入力される中間値EDCsは、前回の第1読み出しブロックRB1における同一のデータフレームDF0のEDC演算処理時にEDCメモリ部40に格納した値(=β・E1(80))である。従って、第2読み出しブロックRB2のデータフレームDF0における73クロック目のEDC演算値E2(73)は、下記式により算出される。
Figure 2009037656
以下、ステップS31〜S33が繰り返し実行され、下記式に示すように、第2読み出しブロックRB2のデータフレームDF0における最終行最終列のバイトデータX92(80クロック目)のEDC演算値E2(80)が算出されると、ステップS41に移る。
Figure 2009037656
次に、ステップS41において、上記算出されたEDC演算値E2(80)に対して、1シフト演算器34を通じてベクターβによる重み付けが行われ、中間値EDCsが算出される。そして、上記算出された中間値EDCs(=β・E2(80))がデータフレームDF0の新たな中間結果としてEDCメモリ部40に格納される(ステップS42)。
以下同様に、ステップS30〜S43が繰り返し実行され、第2〜第13読み出しブロックRB2〜RB13内の各データフレームDF0〜DF31のEDC演算処理が実行される。
次に、第14読み出しブロックRB14の偶数データフレームにおいて、76クロック目に入力される入力多項式の次数が最も低いバイトデータXに対するEDC演算値E14(76)が下記式のように算出されると(ステップS38においてYES)、ステップS44に移る。
Figure 2009037656
なおここで、偶数データフレームDF0において、入力多項式の次数が最も低いバイトデータXとは、EDC付加時と同様のデータ処理順序でEDC演算をした場合に、該データフレームDF0内で最も遅く入力されるデータである。
次に、ステップS44において、上記算出されたEDC演算値E14(76)に対し、−211シフト演算器37を通じて−211バイト分のベクターβ(ベクターβ−211)による重み付けをする第1補正演算を行って、EDCシンドロームの中間値EDCs(=β−211・E14(76))を算出する。続いて、上記算出された中間値EDCsが新たなデータフレームDF0の新たな中間結果としてEDCメモリ部40に格納される(ステップS42)。
以下同様に、ステップS30〜S44が繰り返し実行され、第14〜第26読み出しブロックRB14〜RB26内の各データフレームDF0〜DF31のEDC演算処理が実行される。
次に、第27読み出しブロックRB27の偶数データフレーム(例えば、データフレームDF0)における最終行最終列のバイトデータX108(72クロック目)に対するEDC演算値E27(72)が下記式のように算出されると(ステップS39においてYES)、ステップS45に移る。
Figure 2009037656
次に、ステップS45において、上記算出されたEDC演算値E27(72)に対し、108シフト演算器36を通じて108バイト分のベクターβ(ベクターβ108)による重み付けをする第2補正演算を行って、下記(1)式に示すデータフレームDF0における最終的なEDCシンドロームEDCS(=β108・E27(72))を算出する。
Figure 2009037656
そして、上記算出されたEDCシンドロームEDCSがEDCメモリ部40に格納される(ステップS42)。
ここで、第1補正演算と第2補正演算について説明する。まず、第2補正演算から説明する。
本実施形態では、第27読み出しブロックRB27の偶数データフレームにおいて最後に入力されるバイトデータはX108である。このバイトデータX108は、EDC付加時と同様のデータ処理順序でEDC演算した場合において、その演算処理において最後に入力されるバイトデータX(最終バイトデータ)よりも、108バイト分だけ早く入力されるデータである。換言すると、バイトデータX108は、EDC付加時と同様のデータ処理順序でEDC演算した場合には、最後のバイトデータXが入力されるまでに、1次のベクターβによる重み付けが108回行われるデータである。ところが、本実施形態では、偶数データフレームにおいてバイトデータX108が最後に入力されるため、そのバイトデータX108が入力されたときに算出されるEDC演算値E27(72)では、バイトデータX108に対するベクターβによる重み付けが一度も行われていない。そこで、本実施形態では、第27読み出しブロックRB27の各偶数データフレームにおける最終行最終列のデータX108が入力されたときのEDC演算値E26(72)に対し、108バイト分のベクターβ(ベクターβ108)による重み付けを行うようにした。
次に、第1補正演算について説明する。本実施形態では、第14読み出しブロックRB14の偶数データフレームにおける最後のバイトデータXが入力されたときに算出されるEDC演算値E14(76)は、下記式のようになる。
Figure 2009037656
上記式から明らかなように、上記EDC演算値E14(76)が算出されるまでに入力されたバイトデータについては、上記EDC演算値E14(76)が算出された時点で所望の次数のベクターβによって重み付けが行われている。例えば、偶数データフレームにおいて最初に入力されるバイトデータX2051は、2051次のベクターβ2051による重み付けが行われている。しかしながら、本実施形態では、第14読み出しブロックRB14以降の第15〜第27読み出しブロックRB15〜RB27におけるEDC演算において、上記EDC演算値E14(76)に対し、1次のベクターβによる重み付けが103回行われる。すなわち、上記EDC演算値E14(76)に対し、{(残りの読み出しブロックRBにおける列方向の全バイト数)−1}回のベクターβによる重み付けが行われる。さらに、上述した第2補正演算により、上記EDC演算値E14(76)に対して108次のベクターβ108による重み付けが行われる。そのため、第15〜第27読み出しブロックRB15〜RB27におけるEDC演算及び第2補正演算が終了すると、上記EDC演算値E14(76)が算出されるまでに入力されたバイトデータに対し、ベクターβによる重み付けがEDC付加時と同様の処理順序でEDC演算した場合よりも211回多く行われることになる。そこで、本実施形態では、第14読み出しブロックRB14の各偶数データフレームにおける最後のデータX(最終デスクランブルデータ)が入力されたときのEDC演算値E14(76)に対し、−211バイト分のベクターβ(ベクターβ−211)による重み付けを行うようにした。
なお、奇数データフレームについては、前述した第1読み出しブロックRB1におけるデータフレームDF1のEDC演算処理と同様に、すなわちステップS44やステップS45のような特殊な補正演算(第1及び第2補正演算)を施すことなく、上記(1)式と同様のEDCシンドロームを生成することができる。従って、データフレームDF1(奇数データフレーム)の場合には、第27読み出しブロックRB27における最終列最終行のバイトデータXのEDC演算値E27(80)が算出されると(ステップS40においてYES)、上記算出されたEDC演算値E27(80)がそのままEDCシンドロームとしてEDCメモリ部40に格納される(ステップS42)。
以下同様に、ステップS30〜S45が繰り返し実行され、各データフレームDF0〜DF31の最終的なEDCシンドロームEDCSが生成されて、該EDCシンドロームEDCSがEDCメモリ部40に格納される。EDCメモリ部40では、シンドローム保存用に選択されているバッファメモリに全データフレームDF0〜DF31の最終的なEDCシンドロームEDCSが格納されると、バッファメモリM7及びバッファメモリM8におけるシンドローム保存用とシンドローム出力用の選択が切り替えられる。これにより、シンドローム保存用からシンドローム出力用に切り替わったバッファメモリには、全データフレームDF0〜DF31のEDCシンドロームEDCSが格納されることになる。そして、シンドローム出力用に切り替えられたバッファメモリは、全データフレームDF0〜DF31のEDCシンドロームEDCSを外部バッファメモリ6に格納する。
1つのパリティ付加ブロックPB分のデスクランブルデータと、LDCシンドロームと、BISシンドロームと、EDCシンドロームとが外部バッファメモリ6に格納されると、誤り訂正回路50は、外部バッファメモリ6からLDCシンドローム及びBISシンドロームを読み出す。誤り訂正回路50内の訂正回路51は、読み出したLDCシンドローム及びBISシンドロームに基づいて、ユークリッド互除演算により誤り位置多項式と数値多項式とを算出する。次に、訂正回路51は、算出した誤り位置多項式と数値多項式とに基づいて、誤り位置及び誤り数値を算出する。続いて、訂正回路51は、算出した誤り位置及び誤り数値に基づいて、外部バッファメモリ6に格納されたデスクランブル処理済のデータフレームDFに対して誤り訂正処理を行うとともに、算出した誤り位置及び誤り数値をEDC補正回路52に出力する。
次に、EDC補正回路52は、訂正回路51から入力される誤り位置及び誤り数値に基づいて、外部バッファメモリ6から補正メモリ部53に格納されるEDCシンドロームを補正する。そして、EDCチェック回路54は、補正メモリ部53から補正後のEDCシンドロームを読み出し、誤り訂正が正常に終了されたかをチェックする。EDCチェック回路54において誤り訂正が正常に終了されたことが確認されると、コントローラ10は、マイクロプロセッサ8の命令に基づいて、外部バッファメモリ6に格納された誤り訂正後のデータを、インターフェース回路60を介してコンピュータ2に出力する。
以上説明した本実施形態によれば、以下の効果を奏することができる。
(1)内蔵メモリ部12に対して、LDCシンドローム生成回路13、BISシンドローム生成回路16及びデスクランブル回路20がそれぞれアクセスし、各回路13,16,20は、生成したLDCシンドローム、BISシンドローム及びデスクランブルデータdDuを外部バッファメモリ6に格納するようにした。これにより、図41に示すコントローラ110よりも外部バッファメモリ6へのアクセス量を減らすことができる。
詳しくは、図41に示すコントローラ110では、バッファメモリ120に対して、(a)復調回路111からのECCクラスタECCcの入力、(b)LDCシンドローム生成回路112によるLDCクラスタLDCcの読み出し、(c)BISシンドローム生成回路113によるBISクラスタBIScの読み出し、(d)誤り訂正回路からの誤り訂正処理、(e)デスクランブル回路115による誤り訂正処理済のLDCクラスタLDCcの読み出し、という5種類のアクセスがあった。すなわち、ECCクラスタECCc(76880バイト)の3個分に略相当するデータ量(合計219299バイト)のバッファメモリ120へのアクセスがあった。
これに対して、本実施形態のコントローラ10では、外部バッファメモリ6に対して、(A)デスクランブルデータdDu(65536バイト)の入力、(B)LDCシンドローム(9728バイト)の入力、(C)BISシンドローム(1488バイト)の入力、(D)EDCシンドローム(128バイト)の入力、(E)LDCシンドロームの読み出し、(F)BISシンドロームの読み出し、(G)誤り訂正後のデスクランブルデータの読み出し、という7種類のアクセスがある。アクセスの種類は多いものの、各々のアクセスにおけるデータ量が少ない。すなわち、全体としては、ECCクラスタECCcの2個分に略相当するデータ量(合計152272バイト)が外部バッファメモリ6に対してアクセスされる。従って、外部バッファメモリ6への全体のアクセス量が従来のコントローラ110に比べて大幅に低減される。これにより、外部バッファメモリ6の利用帯域を減らすことができるため、転送速度の高速化に対応させやすくなる。これらにより、外部バッファメモリ6として、安価で大容量・低速なメモリを使用しても、所望の速度によるデータ転送を実現することができる。
さらに、このときLDCシンドローム生成回路13及びデスクランブル回路20は、内蔵のメモリ(内蔵メモリ部12)に対しては高速アクセスが可能という性能があるため、第1及び第2デインターリーブ処理を施しながらLDCクラスタを読み出しても、効率良く高速に内蔵メモリ部12から各データを読み出すことができる。これにより、コントローラ110よりも誤り訂正処理に要する時間を短縮することができる。
(2)内蔵メモリ部12に、1つのECCクラスタECCcが複数個に分割された分割ECCクラスタDECCを格納するようにした。また、デスクランブル回路20に、分割ECCクラスタDECC内のデータブロックDB毎に入力されるデータに対して正確にデスクランブル処理が実行できるように、1シフト演算器24及び209シフト演算器25を設けるようにした。これらにより、内蔵メモリ部12の各バッファメモリM1,M2を、1つの分割ECCクラスタDECC(2480バイト)を格納できるメモリ容量とすることができる。従って、図43に示すコントローラ130のように、内蔵の大容量(76880バイト)のメモリを設ける必要がなくなる。そのため、内蔵メモリ部のメモリ容量の増大によって発生する回路規模の増大を抑制することができる。
また、デスクランブル回路20によるデスクランブル処理を、LDCシンドローム生成回路13によるLDCシンドローム生成及びBISシンドローム生成回路16によるBISシンドローム生成と並行して実行することができるため、誤り訂正処理に要する時間を短縮することができる。これらにより、回路規模の増大を抑制しつつも、外部バッファメモリ6へのアクセス量を低減することができる。
(3)EDCシンドローム生成回路30に、分割ECCクラスタDECC毎に入力されるデータに対して正確にEDC演算処理(重み付け)ができるように、1シフト演算器34、209シフト演算器35、108シフト演算器36及びEOR回路38を設けるようにした。これにより、EDCシンドローム生成回路30において、デスクランブル回路20から直接入力されるデスクランブルデータdDuに基づいてEDCシンドロームEDCSを生成することができる。従って、LDCシンドローム生成回路13及びBISシンドローム生成回路16によるLDCシンドローム生成及びBISシンドローム生成と並行して、EDCシンドローム生成回路30によるEDCシンドローム生成を実行することができる。そのため、誤り訂正処理に要する時間を短縮することができる。
(4)デスクランブル回路20は、各読み出しブロックの各偶数データフレームにおける1列1行目の先頭スクランブルデータに対するスクランブル値SCを格納する偶数レジスタR2を備えた。また、デスクランブル回路20は、各読み出しブロックの各奇数データフレームにおける1列1行目の先頭スクランブルデータに対するスクランブル値SCを格納する奇数レジスタR3を備えた。これにより、各読み出しブロックの各偶数データフレーム及び各奇数データフレームにおける先頭スクランブルデータに対するスクランブル値を予め算出してメモリ等に格納しておく必要がなくなる。
(5)デスクランブル回路20は108シフト演算器26を備えた。この108シフト演算器26に初期値S0を入力することにより、第1読み出しブロックRB1の各奇数データフレームにおける1行1列目の先頭スクランブルデータに対するスクランブル値SC(=S0・γ108)を簡便に生成することができる。
(6)EDCシンドローム生成回路30にて生成される各データフレーム毎のEDCシンドロームの中間値EDCsを格納するEDCメモリ部40を設けた。これにより、各データフレームのEDCシンドローム生成に共通の回路を使用することができるため、各データフレーム毎のシンドローム生成回路を設ける必要がなくなるため、回路規模の増大を抑制することができる。なお、なお、EDCメモリ部40の各バッファメモリのメモリ容量は、各データフレーム毎のEDCシンドローム(128バイト)を格納できる容量であり、従来の内蔵メモリの容量(76880バイト)に比べると小容量であるため、回路規模の増大が抑制される。
(7)LDCシンドローム生成回路13にて生成される各列毎のLDCシンドロームの中間値を格納するLDCメモリ部14を設けた。これにより、各列のLDCシンドローム生成に共通の回路を使用することができるため、各列毎のシンドローム生成回路を設ける必要がなくなるため、回路規模の増大を抑制することができる。なお、なお、LDCメモリ部14の各バッファメモリのメモリ容量は、各列毎のLDCシンドローム(9728バイト)を格納できる容量であり、従来の内蔵メモリの容量(76880バイト)に比べると小容量であるため、回路規模の増大が抑制される。
(8)全BISクラスタBIScを格納するBISメモリ部15を設けた。これにより、BISシンドローム生成回路16は、BISメモリ部15から全BISクラスタBIScを連続して読み出し、該BISクラスタBIScに基づいてBISシンドロームを生成することができる。従って、BISシンドローム生成回路16によりBISシンドロームを効率良く生成することができる。なお、BISメモリ部15の各バッファメモリのメモリ容量は、全BISクラスタ(1488バイト)を格納できる容量であり、従来の内蔵メモリの容量(76880バイト)に比べると小容量であるため、回路規模の増大が抑制される。
(9)内蔵メモリ部12、LDCメモリ部14、BISメモリ部15及びEDCメモリ部40を、2つのバッファメモリから構成した。そして、例えば内蔵メモリ部12であれば、一方のバッファメモリをデータ保存用として、他方のバッファメモリをアクセス用として使用するようにした。これにより、復調回路11からのデータの格納と、内蔵メモリ部12からのデータの読み出しとを同時に行うことができる。従って、BD4からのディスクデータの読み出しを連続的に行うことができる。同様に、LDCシンドローム生成回路13からのLDCシンドロームの中間値の格納を連続的に行うことができ、内蔵メモリ部12からのBISクラスタBIScの読み出しを連続的に行うことができ、EDCシンドローム生成回路30からのEDCシンドロームの中間値EDCsの格納を連続的に行うことができる。
また、内蔵メモリ部12の場合には、2つのバッファメモリM1,M2から構成するようにした場合、回路規模の増大を抑制するという効果がより顕著になる。詳しくは、図43に示すコントローラ130では、BDから連続的に複数個のECCクラスタECCcが読み出されるときに、それら複数個のECCクラスタECCcを連続的に読み出すためには、大容量(76880バイト)の内蔵メモリ131を2個設ける必要があった。これに対して、本実施形態の内蔵メモリ部12は、そのメモリ容量が合計4960バイトであるため、回路規模の増大を効果的に抑制することができる。
(10)EDCシンドローム生成回路30により生成されたEDCシンドロームEDCSを全て補正メモリ部53に格納した上で、EDC補正回路52により補正メモリ部53に格納されたEDCシンドロームを補正するようにした。これにより、補正メモリ部53に格納された全EDCシンドロームEDCSに対して連続的に補正を行うことができるため、処理効率を向上させることができる。
(第2実施形態)
以下、本発明を具体化した第2実施形態について、図22〜図25に従って説明する。この実施形態のデスクランブル回路及びEDCシンドローム生成回路の回路構成、それら回路におけるデータの処理順序が上記第1実施形態と異なっている。以下、第1実施形態との相違点を中心に説明する。
まず、デスクランブル回路70の回路構成について図22に従って説明する。本実施形態のデスクランブル回路70のスクランブル値生成回路71は、第1実施形態のデスクランブル回路20のスクランブル値生成回路22に、偶数作業レジスタR4と奇数作業レジスタR5とを新たに設けた。
偶数作業レジスタR4には、各読み出しブロックRB内の最終偶数データフレームDF30における各列の最終行のデータに対するスクランブル値SCが209シフト演算器25を通じて格納される。一方、奇数作業レジスタR5には、各読み出しブロックRB内の最終奇数データフレームDF31における各列の最終行のデータに対するスクランブル値SCが209シフト演算器25を通じて格納される。これら奇数作業レジスタR4及び偶数作業レジスタR5は、格納したスクランブル値SCをセレクタ27に出力する。
セレクタ27には、選択回路72からの選択信号が入力される。セレクタ27は、選択回路72からの選択信号に基づいて、1シフト演算器24及び各レジスタR1〜R5から入力されるスクランブル値のうち1つのスクランブル値SCをFF回路23に出力する。なお、選択回路28は、入力されるクロック信号CLKのパルス数に応じて選択信号を生成し、その選択信号をセレクタ27に出力する。例えば、選択回路72は、各読み出しブロックRBの各偶数データフレームにおける2列目以降の各列の1行目のデータがEOR回路21に入力されるときには、偶数作業レジスタR4からのスクランブル値SCをEOR回路21に出力させる選択信号を生成する。選択回路72は、各読み出しブロックRBの各奇数データフレームにおける2列目以降の各列の1行目のデータがEOR回路21に入力されるときには、奇数作業レジスタR5からのスクランブル値SCをEOR回路21に出力させる選択信号を生成する。
次に、EDCシンドローム生成回路80の回路構成について図23に従って説明する。本実施形態のEDCシンドローム生成回路80は、第1実施形態のEDCシンドローム生成回路30に作業メモリ81を新たに設けた。
作業メモリ81には、各読み出しブロックRBの各データフレームにおける各列の最終行のデータのときに算出されたEDC演算値Er(c)が209シフト演算器25を通じてシフト演算値Esとして格納される。この作業メモリ81は、格納したシフト演算値EsをEOR回路38及びセレクタ32に出力する。
セレクタ32には、選択回路82からの選択信号が入力される。セレクタ27は、選択回路82からの選択信号に基づいて、1シフト演算器34、EOR回路38及び作業メモリ81から入力されるスクランブル値のうちの1つのスクランブル値SCをEOR回路31に出力する、あるいはEOR回路31にシフト演算値Esを出力しない。なお、選択回路82は、入力されるクロック信号CLKのパルス数に応じて選択信号を生成し、その選択信号をセレクタ32に出力する。例えば、選択回路82は、各読み出しブロックRBの各データフレームDFにおける1列目と最終列とを除く各列の1行目のデータがEOR回路31に入力されるときには、作業メモリ81からのシフト演算値EsをEOR回路31に出力させる選択信号を生成する。なお、選択回路82は、各読み出しブロックRBの各データフレームにおける1行1列目の先頭データがEOR回路31に入力されるときには、セレクタ32からシフト演算値Esを出力しないようにする選択信号を生成する。また、選択回路82は、各読み出しブロックRBの各データフレームにおける最終列の1行目のデータがEOR回路31に入力されるときには、EOR回路38からのシフト演算値EsをEOR回路31に出力させる選択信号を生成する。
次に、外部バッファメモリ6に格納される各データフレームDF0〜DF31のデスクランブルデータdDuの格納配置について図9に従って説明する。
図9に示すように、デスクランブル回路70によりデスクランブル処理の施された各データフレームDF0〜DF31のデスクランブルデータdDuは、32行×64列のブロックとして列方向に4つのデータフレームDF毎に格納される。具体的には、データフレームDF0,DF1,DF2,DF3が列方向に並んで格納されるとともに、データフレームDF4,DF5,DF6,DF7が列方向に並んで格納される。これにより、行方向には、データフレームDF0,DF4,DF8,DF12,DF16,DF20,DF24,DF28が並んで格納されるとともに、データフレームDF1,DF5,DF9,DF13,DF17,DF21,DF25,DF29が並んで格納される。また、行方向には、DF2,DF6,DF10,DF14,DF18,DF22,DF26,DF30が並んで格納されるとともに、DF3,DF7,DF11,DF15,DF19,DF23,DF27,DF31が並んで格納される。
次に、このように構成された光ディスクコントローラ10の動作について説明する。ここでは、とくにデスクランブル回路70及びEDCシンドローム生成回路80におけるデータ処理順序について詳述する。
図24(a)に示すように、デスクランブル回路70は、内蔵メモリ部12から第1読み出しブロックRB1のデータフレームDF0における1列目のスクランブルデータsDuを列方向に読み出し、次にデータフレームDF4における1列目のスクランブルデータsDuを列方向に読み出す。続いて、デスクランブル回路70は、データフレームDF8,DF12,DF16,DF20,DF24,DF28における1列目のスクランブルデータsDuを順にそれぞれ列方向に読み出す。デスクランブル回路70は、読み出したスクランブルデータsDuに対して順番にデスクランブル処理を施し、デスクランブルデータdDuを外部バッファメモリ6に格納するとともに、デスクランブルデータdDuをEDCシンドローム生成回路80に出力する。デスクランブル処理については、上記第1実施形態と同様に、各偶数データフレームDFの1行1列目の先頭データsD0に対して、偶数レジスタR2に格納された初期値S0を使用してデスクランブルデータdD0を生成する。続いて、第1読み出しブロックRB1の各偶数データフレームDFにおける1列目のスクランブルデータsD1〜sD7に対しては、前回のスクランブル値を1バイト分シフトさせたスクランブル値SCを使用してデスクランブルデータdD1〜dD7を生成する。
一方、デスクランブル回路70から外部バッファメモリ6へのデータ格納方法については、図25に示すように、データフレームDF0,DF4,DF8,DF12,DF16,DF20,DF24,DF28における1列目のデスクランブルデータdDuを、外部バッファメモリ6の同一行内(1行目)に格納する。すなわち、本実施形態では、外部バッファメモリ6に行方向に並んで格納されるデータフレームの同一列のデータを連続して読み出すことにより、8つのデータフレームDFにおける同一列のデータを同一行内に格納できるようにしている。
次に、図24(b)に示すように、デスクランブル回路70は、内蔵メモリ部12からデータフレームDF2,DF6,DF10,DF14,DF18,DF22,DF26,DF30における1列目のスクランブルデータsDuを順にそれぞれ列方向に読み出す。デスクランブル回路70は、読み出したスクランブルデータsDuに対して順番にデスクランブル処理を施し、デスクランブルデータdDuを外部バッファメモリ6の同一行内に格納するとともに、デスクランブルデータdDuをEDCシンドローム生成回路80に出力する。なお、各読み出しブロックRBにおける最終偶数データフレームDF30の各列の最終行のデータ(ここでは、1列目の最終行のスクランブルデータsD7)のデスクランブル処理に使用されたスクランブル値SCが209シフト演算器25を通じて偶数作業レジスタR4に格納される。従って、ここでは、偶数作業レジスタR4にスクランブル値SC(=S0・γ・γ209=S0・γ216)が格納される。また、上記第1実施形態と同様に、各読み出しブロックRBの最終偶数データフレームDF30における1列目の最終行のデータ(ここでは、スクランブルデータsD7)のデスクランブル処理に使用されたスクランブル値SCが1シフト演算器24を通じて偶数レジスタR2に格納される。
次に、図24(c)に示すように、デスクランブル回路70は、内蔵メモリ部12からデータフレームDF1,DF5,DF9,DF13,DF17,DF21,DF25,DF29における1列目のスクランブルデータsDuを順にそれぞれ列方向に読み出す。デスクランブル回路70は、読み出したスクランブルデータsDuに対して順番にデスクランブル処理を施し、デスクランブルデータdDuを外部バッファメモリ6の同一行内に格納するとともに、デスクランブルデータdDuをEDCシンドローム生成回路80に出力する。なお、デスクランブル処理については、上記第1実施形態と同様に、第1読み出しブロックRB1における各奇数データフレームDFの1列目の先頭データsD108に対して、奇数レジスタR3に格納されたスクランブル値SC(=S0・γ108)を使用してデスクランブルデータdD108を生成する。続いて、第1読み出しブロックRB1の各奇数データフレームDFにおける1列目のスクランブルデータsD109〜sD115に対しては、前回のスクランブル値を1バイト分シフトさせたスクランブル値SCを使用してデスクランブルデータdD109〜dD115を生成する。
次に、図24(d)に示すように、デスクランブル回路70は、内蔵メモリ部12からデータフレームDF3,DF7,DF11,DF15,DF19,DF23,DF27,DF31における1列目のスクランブルデータsDuを順にそれぞれ列方向に読み出す。デスクランブル回路70は、読み出したスクランブルデータsDuに対して順番にデスクランブル処理を施し、デスクランブルデータdDuを外部バッファメモリ6の同一行内に格納するとともに、デスクランブルデータdDuをEDCシンドローム生成回路80に出力する。なお、各読み出しブロックRBにおける最終奇数データフレームDF31の各列の最終行のデータ(ここでは、1列目の最終行のスクランブルデータsD115)のデスクランブル処理に使用されたスクランブル値SCが209シフト演算器25を通じて奇数作業レジスタR5に格納される。従って、ここでは、奇数作業レジスタR5にスクランブル値SC(=S0・γ115・γ209=S0・γ324)が格納される。また、上記第1実施形態と同様に、各読み出しブロックRBの最終奇数データフレームにおける1列目の最終行のデータ(ここでは、スクランブルデータsD115)のデスクランブル処理に使用されたスクランブル値SCが1シフト演算器24を通じて奇数レジスタR3に格納される。
次に、デスクランブル回路70は、内蔵メモリ部12からデータフレームDF0,DF4,DF8,DF12,DF16,DF20,DF24,DF28における2列目のスクランブルデータsDuを順にそれぞれ列方向に読み出す。デスクランブル回路70は、読み出したスクランブルデータsDuに対して順番にデスクランブル処理を施す。なお、各読み出しブロックRBの各偶数データフレームにおける2列目以降の各列の1行目のデータ(ここでは、スクランブルデータsD216)に対しては、偶数作業レジスタR4に格納されたスクランブル値SC(ここでは、S0・γ216)を使用してデスクランブルデータdDuを生成する。また、各読み出しブロックRBの各奇数データフレームにおける2列目の1行目のデータ(例えば、スクランブルデータsD324)に対しては、奇数作業レジスタR5に格納されたスクランブル値SC(例えば、S0・γ324)を使用してデスクランブルデータdDuを生成する。ここで、偶数作業レジスタR5に格納されているスクランブル値SCは、同一読み出しブロックRB内の偶数データフレーム(奇数データフレーム)における前列の最終行のデータに使用されたスクランブル値から209バイト分シフトさせたスクランブル値である。
このように本実施形態のデスクランブル処理は、上記第1実施形態と、データの処理順序が異なるとともに、その処理順序に合わせて各列の最終行のデータに使用されたスクランブル値が209シフト演算器25を通じて各作業レジスタR4,R5に格納され、その格納されたスクランブル値が次列の1行目のデータの処理に使用されることが異なる。
次に、EDCシンドローム生成回路80におけるEDC演算処理について説明する。EDCシンドローム生成回路80には、デスクランブル回路70からデスクランブルデータdDuが生成された順に入力される。すなわち、図24(a)〜(d)の順番でデスクランブルデータdDuがEDCシンドローム生成回路80に入力される。従って、EDCシンドローム生成回路80には、各読み出しブロックRBの各データフレームDFにおけるデータが1列(8バイト)毎に入力される。EDCシンドローム生成回路80は、各読み出しブロックRBの各データフレームDFにおけるデータが1列毎に入力されると、上記第1実施形態と同様に、EDC演算値Er(c)を順次算出する。例えば第1読み出しブロックRB1のデータフレームDF0(偶数データフレーム)における1列目のバイトデータX2051〜X2044がEOR回路31に順に入力されると、下記式に示すようにEDC演算値Er(c)が順次算出される。
Figure 2009037656
そして、各データフレームDF(ここでは、データフレームDF0)における各列の最終行のデータに対するEDC演算値Er(c)(ここでは、EDC演算値E1(8))が算出されると、そのEDC演算値E1(8)が209シフト演算器35を通じてシフト演算値Es(=β209・E1(8))として作業メモリ81に格納される。この作業メモリ81には、各データフレームDF毎のシフト演算値Esが格納されるようになっている。
次に、各読み出しブロックRBの各データフレームにおける1列目と最終列を除く各列の1行目のデータが入力されたときのEDC演算について説明する。例えば、第1読み出しブロックRB1のデータフレームDF0の1行2列目のデータX1835がEOR回路31に入力されると、選択回路82は、作業メモリ81からのシフト演算値EsをEOR回路31に出力させる選択信号をセレクタ32に出力する。これにより、EOR回路31には、第1読み出しブロックRB1におけるデータフレームDF0の1列目(同一読み出しブロックにおける同一データフレームの前列)のときに作業メモリ81に格納されたシフト演算値Es(=β209・E1(8))が入力される。従って、上記データX1835に対するEDC演算値E1(9)は下記式により算出される。
Figure 2009037656
このように本実施形態のEDCシンドローム生成回路80には、各読み出しブロックRBの各データフレームにおけるデータが1列毎に入力される。そのため、その1列の最後のデータが入力されたときに算出されるEDC演算値Er(c)に対して209次のベクターβ209による重み付けをして得られるシフト演算値Esをデータフレーム毎に作業メモリ81に格納するようにした。そして、同一読み出しブロックRBにおける各データフレームの次列の1行目のデータがEOR回路31に入力されたときに、作業メモリ81に格納した同一データフレームのシフト演算値Esを読み出してEDC演算処理を行うようにした。なお、その他の演算方法については、上記第1実施形態と同様である。
以上説明した実施形態によれば、第1実施形態の(1)〜(10)の作用効果に加えて以下の効果を奏する。
(11)デスクランブル回路70は、各読み出しブロックの各偶数データフレームにおける2列目以降の各列の1行目のスクランブルデータに対するスクランブル値SCを格納する偶数作業レジスタR4を備えた。また、デスクランブル回路20は、各読み出しブロックの各奇数データフレームにおける2列目以降の各列の1行目のスクランブルデータに対するスクランブル値SCを格納する奇数作業レジスタR5を備えた。これにより、図24に示すようなデータ処理順序、すなわち各データフレーム内の1列のデスクランブル処理が終了する度に、異なるデータフレームに処理が移るようなデータ処理順序であっても、上記作業レジスタR4,R5に格納されたスクランブル値SCを利用することによって、デスクランブル処理を連続的に実行することができる。
(12)EDCシンドローム生成回路80は、各読み出しブロックの各データフレームにおける各列のEDC演算処理終了後のEDC演算値Er(c)が209シフト演算器35を通じて格納される作業メモリ81を備えた。これにより、図24に示すようなデータ処理順序であっても、作業メモリ81に格納されたスクランブル値SCを利用することによって、デスクランブル処理を連続的に実行することができる。
(13)デスクランブル回路70は、外部バッファメモリ6の行方向に並んで格納されるデータフレームの同一列のデータを連続して処理するようにした。これにより、デスクランブル回路70は、8つのデータフレームDF(例えば、データフレームDF0,DF4,DF8,DF12,DF16,DF20,DF24,DF28)における同一列のデスクランブルデータdDuを、外部バッファメモリ6の同一行内に格納できる。このとき、外部バッファメモリ6は、同一行内においては連続してアクセスすることができる機能を有している。従って、デスクランブル回路70が外部バッファメモリ6にデスクランブルデータdDuを格納するときのアクセス効率を向上させることができる。
(第3実施形態)
以下、本発明を具体化した第3実施形態について、図26〜図28に従って説明する。この実施形態のEDCシンドローム生成回路の回路構成が上記第2実施形態と異なっている。以下、第2実施形態との相違点を中心に説明する。なお、デスクランブル回路70による内蔵メモリ部12からのデータ読み出し順序は、上記第2実施形態と同様である。
図27に示すように、EDCシンドローム生成回路90は、デスクランブル回路70から1ビットの入力データ(ビットデータ)Xが入力される16個のアンド回路A1〜A16を備えている。
ここで、アンド回路A1〜A16に入力されるビットデータについて説明する。まず、1つのデータフレームDFは2052バイトであるため、1つのデータフレームDFは16416(=2052×8)ビットから構成される。EDC付加時と同様のデータ処理順序でEDC演算をした場合の16416ビットのデスクランブルデータdDuの次数重みを表す多項式表現(入力多項式)は、
Figure 2009037656
となる。ここで、EDC演算は、前述したように、入力多項式の各次数をベクターβで重み付けする演算であるため、EDCシンドロームEDCSは下記式により算出される。なお、本実施形態におけるベクターβの次数kと、上記第1及び第2実施形態におけるベクターβの次数nとは、k=8nの関係がある。
Figure 2009037656
このように、EDCシンドロームEDCSの演算は、1ビットデータが処理される度に各ビットデータに対して1次のベクターβ(=β)による重み付けが行われる。ここで、1ビットデータXに対してベクターβで重み付けするとは、重み付けされるビットデータXを、所定の生成多項式G(x)(本例では、G(x)=x32+x31+x+1)に従って1ビット分シフトさせることである。例えば、各データフレームDFにおいて最も早く入力されるビットデータX16415に対しては、1次のベクターβによる重み付けが16415回行われる。但し、本実施形態の場合、上記第2実施形態と同様に、デスクランブル回路70から、27個に分割されたデータブロックDBが第1〜第27読み出しブロックRB1〜RB27として各読み出しブロック毎に入力される。ここで、図26(a)に、第1読み出しブロックRB1の各偶数データフレームにおける1列目と2列目とのバイトデータX及びビットデータXの入力順序を次数n,kで表した。また、図26(b)に、第1読み出しブロックRB1の各奇数データフレームにおける1列目と2列目とのバイトデータX及びビットデータXの入力順序を次数n,kで表した。
この図26(a)に示すように、EDCシンドローム生成回路80にはビットデータXが、X16415→X16414→…→X16353→X16352→X14687→X14686→…という順序で入力される。すなわち、アンド回路A1〜A16(図27参照)には、まずビットデータとしてデータフレームDF0のX16415〜X16400(X〜Xk−15)が入力され、次にビットデータとしてX16399〜X16384が入力され、続いてビットデータとしてX16387〜X16368が入力され、次いでビットデータとしてX16367〜X16352が入力される。そして、第1読み出しブロックRB1の全データフレームDF0〜DF31における1列目のビットデータの入力が終了すると、アンド回路A1〜A16には、次に第1読み出しブロックRB1のデータフレームDF0における2列目のビットデータX14687〜X14672が入力される。このように、EDC付加時のデータ入力順序と異なる順序でデータが入力されると、ベクターβによる重み付けが正確にできないため、正常なEDCシンドロームを生成することができない。
そこで、本実施形態のEDCシンドローム生成回路90は、ビットデータXに応じて所望の次数kのベクターβを生成するベクター生成回路91を備えるようにした。ベクター生成回路91は、16個の−1ビットシフト(β−1)演算器B1〜B16(第1逆シフト演算器群)及び−1664ビットシフト(β−1664)演算器B17から構成され、ベクターレジスタ92から入力されるベクターβに基づいて、18個のベクターβを生成する。
β−1演算器B1〜B16は、ベクターレジスタ92あるいは前段のβ−1演算器からベクターβが入力されたときに、ベクターβk−1を生成する演算器である。すなわち、β−1演算器B1〜B16は、入力されたベクターを生成多項式G(x)に従って1ビット分、逆シフトさせて新たなベクターβを生成する演算器である。図29に、β−1シフト演算器B1〜B16にI[31:0]が入力されたときに、該β−1シフト演算器B1〜B16から出力されるO[31:0]の論理式を示した。
例えば、ベクターレジスタ92からβ−1演算器B1にベクターβが入力された場合には、β−1演算器B1〜B16はそれぞれベクターβk−1〜βk−16を生成する。また、β−1演算器B1に入力されるベクターβがアンド回路A1に入力され、β−1演算器B1から出力されるベクターβk−1がアンド回路A2に入力され、β−1演算器B2から出力されるベクターβk−2がアンド回路A3に入力される。同様に、β−1演算器B3〜B15から出力されるベクターβk−3〜βk−15がアンド回路A4〜A16にそれぞれ入力される。β−1演算器B16は、生成したベクターβk−16を、β−1664演算器B17、偶数レジスタR20、奇数レジスタR21及びセレクタ96に出力する。
β−1664演算器B17は、β−1演算器B16からベクターβk−16が入力されたときに、ベクターβk−16−1664を生成し、該ベクターβk−16−1664を、偶数ラインレジスタR22、奇数ラインレジスタR23及びセレクタ96に出力する演算器である。すなわち、β−1664演算器B17は、入力されたベクターを生成多項式G(x)に従って1664ビット分、逆シフトさせて新たなベクターβを生成する演算器である。図30に、β−1664シフト演算器B17にI[31:0]が入力されたときに、該β−1664シフト演算器B17から出力されるO[31:0]の論理式を示した。
アンド回路A1〜A16は、デスクランブル回路70からそれぞれ入力されるビットデータX〜Xk−15をそれぞれ32ビットに拡張した値と、ベクター生成回路91からそれぞれ入力されるベクターβ〜βk−15との論理積を取って、その演算結果をEOR回路94にそれぞれ出力する。ここで、上記32ビットに拡張した値とは、ビット0〜ビット31までの全ての値をXの値にしたデータのことである。
EOR回路94は、アンド回路A1〜A16から入力される16個の演算結果の排他的論理和を取って、その演算結果をシンドロームレジスタ95に出力する。シンドロームレジスタ95は、EN端子にイネーブル信号ENSに基づいて、上記演算結果をEDCシンドロームの中間値EDCsとしてEOR回路94及び上記EDCメモリ部40に出力する。EDCメモリ部40は、上記第1及び第2実施形態と同様の構成を有しており、各データフレームDF0〜DF31毎にEDCシンドロームの中間値EDCs及び最終的なEDCシンドロームEDCSが格納される。
セレクタ96は、選択回路97からの選択信号に基づいて、β−1演算器B16及び各種レジスタR20〜R23から入力されるベクターのうち1つのベクターβをベクターレジスタ92に出力する。なお、ベクターレジスタ92は、EN端子に入力されるイネーブル信号ENSに基づいて、セレクタ96から入力されるベクターβをベクター生成回路91に出力する。
初期設定時の偶数レジスタR20には、所定の生成多項式G(x)より予め算出されたベクターβ16415が格納される。また、偶数レジスタR20には、各読み出しブロックRBの最終偶数データフレームにおける1列目の最終行のビットデータXの演算処理が終了したときに、β−1演算器B16から入力されるベクターβが格納される。一方、初期設定時の奇数レジスタR21には、所定の生成多項式G(x)より予め算出されたベクターβ15551が格納される。また、奇数レジスタR21には、各読み出しブロックRBの最終奇数データフレームにおける1列目の最終行のビットデータXの演算処理が終了したときに、β−1演算器B16から入力されるベクターβが格納される。
偶数ラインレジスタR22には、各読み出しブロックRBの最終偶数データフレームにおける各列の最終行のビットデータXのEDC演算処理が終了したときに、β−1664演算器B17から入力されるベクターβが格納される。奇数ラインレジスタR23には、各読み出しブロックRBの最終奇数データフレームにおける各列の最終行のビットデータのEDC演算処理が終了したときに、β−1664演算器B17から入力されるベクターβが格納される。
選択回路97は、入力されるクロック信号CLKのパルス数に応じて各種選択信号を生成し、その選択信号をセレクタ96に出力する。例えば、選択回路97は、各読み出しブロックRBの各偶数データフレームにおける1行1列目の先頭ビットデータから16ビット分のデータがアンド回路A1〜A16に入力されるときには、偶数レジスタR20からのベクターβをベクターβとしてベクターレジスタ92に出力させる選択信号を生成する。選択回路97は、各読み出しブロックRBの各奇数データフレームにおける1行1列目の先頭ビットデータから16ビット分のデータがアンド回路A1〜A16に入力されるときには、奇数レジスタR21からのベクターβをベクターβとしてベクターレジスタ92に出力させる選択信号を生成する。選択回路97は、各読み出しブロックRBの各偶数データフレームにおける2列目以降の各列の1行目のビットデータから16ビット分のデータが入力されるときには、偶数ラインレジスタR22からのベクターβをベクターβとしてベクターレジスタ92に出力させる選択信号を生成する。選択回路97は、各読み出しブロックRBの各奇数データフレームにおける2列目以降の各列の1行目のビットデータから16ビット分のデータが入力されるときには、奇数ラインレジスタR23からのベクターβをベクターβとしてベクターレジスタ92に出力させる選択信号を生成する。選択回路97は、各読み出しブロックRBにおける列方向の次のビットデータ(17行目以降のビットデータ)から16ビット分のデータが入力されるときには、β−1演算器B16からのベクターβをベクターβとしてベクターレジスタ92に出力させる選択信号を生成する。
次に、このように構成されたEDCシンドローム生成回路90の動作について図28に従って説明する。
まずステップS50において、偶数レジスタR20及び奇数レジスタR21に初期値が設定される。すなわち、偶数レジスタR20には、第1読み出しブロックRB1における各偶数データフレームの先頭ビットデータX16415の次数と同一次数のベクターβ16415が格納される。また、奇数レジスタR21には、第1読み出しブロックRB1における各奇数データフレームの先頭ビットデータX15551の次数と同一次数のベクターβ15551が格納される。
次に、選択回路97は、偶数レジスタR20あるいは奇数レジスタR21からのベクターβをベクターレジスタ92に出力させる選択信号をセレクタ96に出力する(ステップS51)。詳しくは、選択回路97は、偶数データフレームのEDC演算処理を行う場合には偶数レジスタR20からのベクターβを、奇数データフレームのEDC演算処理を行う場合には奇数レジスタR21からのベクターβをベクターレジスタ92に出力させる選択信号を生成する。ここでは、これから処理するデータフレームDFがデータフレームDF0(偶数データフレーム)であるため、偶数レジスタR20からのベクターβ16415をベクターレジスタ92に出力させる選択信号をセレクタ96に出力する。
次に、ステップS52において、デスクランブル回路70からアンド回路A1〜A16には、データフレームDF0の先頭ビットデータX16415から16ビット分のデータX16415〜X16400がそれぞれ入力される。このとき、ベクター生成回路91からアンド回路A1〜A16には、ベクターβ16415〜β16400がそれぞれ入力される。これにより、EOR回路94は、アンド回路A1〜A16からの演算結果の排他的論理和を取って、下記式に示すEDCシンドロームの中間値EDCsを算出する。
Figure 2009037656
この算出された中間値EDCsは、シンドロームレジスタ95を介してEDCメモリ部40に格納されるとともに、EOR回路94に入力される。
次に、ステップS53において、選択回路97は、入力されるクロック信号のパルス数に応じて、各読み出しブロックRBにおける1列(64ビット)分のデータに対するEDC演算処理が終了したかを判断する。選択回路97は、1列分のデータに対するEDC演算処理が終了していないと判断すると(ステップS53においてNO)、β−1演算器B16からのベクターβをベクターレジスタ92に出力させる選択信号をセレクタ96に出力する(ステップS54)。このとき、β−1演算器B16からセレクタ96を介してベクターレジスタ92に入力されるベクターがβ16399であるため、ベクター生成回路91からアンド回路A1〜A16にはベクターβ16399〜β16384がそれぞれ入力される。また、このアンド回路A1〜A16には、デスクランブル回路70からビットデータX16399〜X16384がそれぞれ入力される。従って、EOR回路94は、アンド回路A1〜A16からの演算結果と直前に算出した中間値EDCsとの排他的論理和を取って、下記式に示す中間値EDCsを算出する。
Figure 2009037656
1列分のビットデータに対するEDC演算処理が終了するまで、これらステップS52〜S54が繰り返し実行される。このようにEDC付加時のデータ処理順序と同様の順序でビットデータが入力されるとき、すなわち列方向に配置されたビットデータが順番に入力されるときには、β−1演算器B16からのベクターβをベクター生成回路91に入力させる。
そして、第1読み出しブロックRB1のデータフレームDF0における1列目の最終行のビットデータX16352を含む16ビットのデータX16367〜X16352がアンド回路A1〜A16に入力されたときの中間値EDCsが算出されると、その中間値EDCsがEDCメモリ部40に格納され、ステップS55に移る。次に、ステップS55において、選択回路97は、現在処理しているデータフレームDFが最終偶数データフレームDF30あるいは最終奇数データフレームDF31であるかを判断する。ここでは、現在処理しているデータフレームDFがデータフレームDF0であり、且つ1列目のデータであるため、ステップS51に移って次のデータフレームの同一列(ここでは、データフレームDF4の1列目)のEDC演算処理がデータフレームDF0と同様に行われる。
以後、ステップS51〜S55が繰り返し実行され、データフレームDF4→DF8→DF12→DF16→DF20→DF24→DF28→DF2→DF6→DF10→DF14→DF18→DF22→DF26→DF30(図24(a)、(b)参照)における1列目のEDC演算処理が順に行われる。そして、第1読み出しブロックRB1のデータフレームDF30における1列目の最終行のビットデータX16352を含む16ビットのデータX16367〜X16352が入力されたときの中間値EDCsが算出されると(ステップS55においてYES)、ステップS56に移る。
次に、選択回路97は、現在EDC演算処理しているデータが条件C1〜C3のいずれに該当するかを判断する。最終偶数データフレームDF30の1列目のEDC演算処理が終了した場合(条件C1)には、ステップS57に移り、最終奇数データフレームDF31の1列目のEDC演算処理が終了した場合(条件C2)には、ステップS58に移り、2列目以降のEDC演算処理が終了した場合(条件C3)には、ステップS59に移る。ここでは、データフレームDF30の1列目のEDC演算処理が終了しているため(条件C1)、β−1演算器B16からのベクターβが偶数レジスタR20に格納されるとともに、β−1664演算器B17からのベクターβが偶数ラインレジスタR22に格納される(ステップS57)。すなわち、第1読み出しブロックRB1の場合には、偶数レジスタR20にベクターβ16351が格納されるとともに、偶数ラインレジスタR22にベクターβ14687が格納される。続いて、ステップS51に戻ると、次に第1読み出しブロックRB1におけるデータフレームDF1(奇数データフレーム)の1列目のEDC演算処理が開始されるため、奇数レジスタR21からの初期値ベクターβ15551がベクターレジスタ92に出力される。以後は、偶数データフレームと同様に、第1読み出しブロックRB1におけるデータフレームDF1の1列目のEDC演算処理が終了するまで、ステップS52〜S54が繰り返し実行される。そして、第1読み出しブロックRB1のデータフレームDF1における1列目の最終行のビットデータX16352を含む16ビットのデータX15503〜X15488がアンド回路A1〜A16に入力されたときの中間値EDCsが算出されると、ステップS55に移る。
以後、ステップS51〜S55が繰り返し実行され、データフレームDF5→DF9→DF13→DF17→DF21→DF25→DF29→DF3→DF7→DF11→DF15→DF19→DF23→DF27→DF31(図24(c)、(d)参照)における1列目のEDC演算処理が順に行われる。そして、第1読み出しブロックRB1のデータフレームDF31における1列目の最終行のデータX16352を含む16ビットのデータX16367〜X16352が入力されたときの中間値EDCsが算出されると(ステップS55においてYES及びステップS56の条件C2)、ステップS58に移る。次に、β−1演算器B16からのベクターβ(ここでは、β15487)が奇数レジスタR21に格納されるとともに、β−1664演算器B17からのベクターβ(ここでは、β13823)が奇数ラインレジスタR23に格納される(ステップS58)。
続いて、選択回路97は、偶数ラインレジスタR22あるいは奇数ラインレジスタR23からのベクターβをベクターレジスタ92に出力させる選択信号をセレクタ96に出力する(ステップS59)。詳しくは、選択回路97は、偶数データフレームのEDC演算処理を行う場合には偶数ラインレジスタR22からのベクターβを、奇数データフレームのEDC演算処理を行う場合には奇数ラインレジスタR23からのベクターβをベクターレジスタ92に出力させる選択信号を生成する。ここでは、次に第1読み出しブロックRB1におけるデータフレームDF0の2列目がEDC演算処理されるため、偶数ラインレジスタR22からのベクターβ14687をベクターレジスタ92に出力させる選択信号をセレクタ96に出力する。これにより、ステップS52において、ベクター生成回路91からアンド回路A1〜A16にはベクターβ14687〜β14672が入力される。また、アンド回路A1〜A16には、第1読み出しブロックRB1におけるデータフレームDF0の1行2列目のビットデータX14687から16ビット分のデータX14687〜X14672がそれぞれ入力される。そして、EOR回路94は、アンド回路A1〜A16からの演算結果と、EDCメモリ部40に格納された同一データフレームの中間値EDCsとの排他的論理和を取って、新たな中間値EDCsを算出する。
このように各読み出しブロックの偶数データフレームにおける2列目以降の各列の1行目のビットデータXには、偶数データフレームにおける前列の最終行のビットデータXk+1665に乗算されたベクターβk+1665をβ−1演算器B16及びβ−1664演算器B17によりシフト演算して得られるベクターβが乗算されるようになっている。同様に、各読み出しブロックの奇数データフレームにおける2列目以降の各列の1行目のビットデータXには、奇数データフレームにおける前列の最終行のビットデータXk+1665に乗算されたベクターβk+1665をβ−1演算器B16及びβ−1664演算器B17によりシフト演算して得られるベクターβが乗算されるようになっている。ここでは、例えば第1読み出しブロックRB1のデータフレームDF0における1行2列目のビットデータX14687は、同1列目の最終行のビットデータX16352よりも、EDC付加時において{(データブロックDBの列方向における全ビット数:1728ビット)−(1つの読み出しブロックの列方向におけるビット数:64ビット)+1}=1665ビット分だけ遅く処理されるデータである。すなわち、ビットデータX14687は、ビットデータX16352よりもベクターβによる重み付け回数が1665回だけ少ない。従って、上述したように、前列の最終行のビットデータXk+1665に乗算したベクターβk+1665を1665ビット分だけ逆シフト演算したベクターβを、2列目以降の各列の1行目のビットデータXに乗算するようにした。
続いて、ステップS52〜S54が繰り返し実行され、第1読み出しブロックRB1のデータフレームDF0における2列目の最終行のビットデータX14624を含む16ビットのデータX14639〜X14624が入力されたときの中間値EDCsが算出されると、ステップS55に移る。ここでは、最終偶数データフレームDF30及び最終奇数データフレームでないデータフレームDF0の2列目が処理されているため、ステップS59に移る。続いて、データフレームDF4の2列目が次に処理されるため、偶数ラインレジスタR22からのベクターβ14687がベクターレジスタ92に出力される。
以後、ステップS51〜S55及びステップS59が繰り返し実行され、データフレームDF4→DF8→DF12→DF16→DF20→DF24→DF28→DF2→DF6→DF10→DF14→DF18→DF22→DF26→DF30における2列目のEDC演算処理が順に行われる。そして、第1読み出しブロックRB1のデータフレームDF30における2列目の最終行のビットデータX16352を含む16ビットのデータX16367〜X16352が入力されたときの中間値EDCsが算出されると(ステップS55においてYES及びステップS56の条件C3)、ステップS61に移る。次に、このときのβ−1664演算器B17からのベクターβ(ここでは、β12959)が偶数ラインレジスタR22に格納される(ステップS61)。
続いて、データフレームDF1の2列目が次に処理されるため、奇数ラインレジスタR21からのベクターβ13823がベクターレジスタ92に出力される。以後、偶数データフレームと同様に奇数データフレームのEDC演算処理が行われ、データフレームDF31の2列目のEDC演算処理が終了すると、ステップS61に移る。次に、このときのβ−1664演算器B17からのベクターβ(ここでは、β12095)が奇数ラインレジスタR23に格納される(ステップS61)。
以下同様に、第1読み出しブロックRB1における各データフレームの3列目以降のEDC演算処理が行われ、第1読み出しブロックRB1における最終列(304列目)、すなわち最終奇数データフレームDF31の最終列のEDC演算処理が終了すると(ステップS60においてYES)、ステップS62に移る。次に、ステップS62において、選択回路97は、EDC演算処理の終了した読み出しブロックが第13読み出しブロックRB13であるかを判断する。選択回路97は、EDC演算処理の終了した読み出しブロックが第13読み出しブロックRB13でないと判断すると(ステップS62においてNO)、ステップS63に移る。次に、選択回路97は、最終読み出しブロックRB27のEDC演算処理が終了したかを判断する(ステップS63)。そして、読み出しブロックRB2〜第13読み出しブロックRB13のEDC演算処理が終了するまで、ステップS50〜S63が繰り返し実行され、第13読み出しブロックRB13のEDC演算処理が終了すると(ステップS62においてYES)、ステップS64に移る。
ここで、第14読み出しブロックRB14における各奇数データフレームの1行1列目のビットデータは、EDC付加時と同様のデータ入力順序でEDC演算した場合の各奇数データフレームにおいて最初に入力される先頭ビットデータX16415である。そこで、第14読み出しブロックRB14のEDC演算処理が開始される前に、ステップS64において、奇数レジスタR22に初期値として、各奇数データフレームの先頭ビットデータX16415の次数と同一次数のベクターβ16415を格納するようにした。
以後は、ステップS50〜S63が繰り返し実行され、第14〜第27読み出しブロックRB14〜RB27のEDC演算処理が実行される。
以上説明した実施形態によれば、第1及び第2実施形態の(1)〜(13)の作用効果に加えて以下の効果を奏する。
(14)EDCシンドローム生成回路90は、16個のアンド回路A1〜A16と、ベクター生成回路91とを備えた。これにより、アンド回路A1〜A16に入力されるビットデータXに対して、所望の次数kのベクターβを乗算させることができる。従って、上記第1及び第2実施形態のEDC演算処理における第1補正演算及び第2補正演算等の特殊な演算処理を施すことなく、EDCシンドロームEDCSを生成することができる。
(第4実施形態)
以下、本発明を具体化した第4実施形態について、図31に従って説明する。この実施形態の内蔵メモリ部の構成と、BISメモリ部の接続構成が上記第1実施形態と異なっている。以下、第1実施形態との相違点を中心に説明する。
図31に示すように、光ディスクコントローラ10の復調回路11aには、BD4から読み出されたディスクデータが入出力駆動回路5(図1参照)を通じて順次入力される。復調回路11aは、ディスクデータに基づいて復調済データ、すなわちECCクラスタECCc(図40(b)参照)を生成する。復調回路11aは、ECCクラスタECCc内のLDCクラスタLDCcとBISクラスタBIScとを分類し、LDCクラスタLDCcを内蔵メモリ部12e(LDCデータメモリ部)に出力するとともに、ECCクラスタECCc内のBISクラスタBIScをBISメモリ部15aに出力する。
内蔵メモリ部12eを構成する2つのバッファメモリM11,M12の各々は、所定バイト数(本実施形態では、2432バイト)のデータを格納可能なメモリ容量となっている。本実施形態では、ECCクラスタECCc内のLDCクラスタLDCc(75392バイト)が31(=75392/2432)個に分割され、2432バイト毎に内蔵メモリ部12の各バッファメモリM11,M12に格納される。すなわち、LDCクラスタLDCcが16行毎に分割され、16行×152列(=2432バイト)のブロック単位(図3の分割ECCクラスタDECCにおけるBISクラスタBISc部分を除いたブロック単位)で各バッファメモリM1,M2に格納される。
BISメモリ部15aには、復調回路11aからのBISクラスタBIScが格納される。BISメモリ部15aは、第1実施形態と同様の構成を有しており、BISクラスタBISc全体のデータが格納されると、そのBISクラスタBIScをBISシンドローム生成回路16に出力する。
以上説明した実施形態によれば、第1実施形態の(1)〜(10)の作用効果に加えて以下の効果を奏する。
(15)復調回路11aから直接BISメモリ部15aにBISクラスタBIScを格納するようにし、分割ECCクラスタDECCにおけるLDCクラスタLDCcのみを内蔵メモリ部12eに格納するようにした。これにより、BISメモリ部15aによる内蔵メモリ部12eへのアクセスを省略することができるため、内蔵メモリ部12eへのアクセス量を低減することができる。さらに、BISメモリ部15aは、復調回路11aから直接BISクラスタBIScのみを受け取るため、LDCクラスタLDCcを受け取る処理を省略することができる。このことから、コントローラ10の回路構成を単純化することができる。
(第5実施形態)
以下、本発明を具体化した第5実施形態について、図32に従って説明する。この実施形態のデスクランブル回路と、BISシンドローム生成回路と、EDC補正回路とが上記第4実施形態と異なっている。以下、第4実施形態との相違点を中心に説明する。
図32に示すように、内蔵メモリ部12eのバッファメモリに順次格納される第1〜第27読出しブロックRB1〜RB27(スクランブルデータsDu)は、外部バッファメモリ6に格納されるとともに、EDCシンドローム生成回路30aに入力される。
EDCシンドローム生成回路30aは、内蔵メモリ部12eから第1〜第27読み出しブロックRB1〜RB27を読み出しブロックRB毎に読み出し、該読み出した各読み出しブロックRB内のスクランブルデータsDuに基づいてEDC演算を行ってEDCシンドロームを生成する。すなわち、EDCシンドローム生成回路30aは、読み出しブロックRB内のデータフレームDF毎に、スクランブルデータsDuに対するEDCシンドロームを生成し、そのEDCシンドロームをEDCメモリ部40に格納する。このEDCシンドローム生成回路30aは、図8に示したEDCシンドローム生成回路30と略同様の構成を有しており、デスクランブルデータdDuに代わって内蔵メモリ部12eからのスクランブルデータsDuがバイトデータとしてEOR回路31に入力されるようになっている。なお、このEDCシンドローム生成回路30aを、図23に示したEDCシンドローム生成回路80あるいは図27に示したEDCシンドローム生成回路90に変更してもよい。
EDCメモリ部40は、上記第1実施形態と同様に、各データフレームDFのスクランブルデータsDuに対する最終的なEDCシンドロームを外部バッファメモリ6に格納する。
BISシンドローム生成回路16aは、BISメモリ部15aからBISクラスタBIScを読み出し、該BISクラスタBIScに基づいてBISシンドロームを生成する。BISシンドローム生成回路16aは、生成したBISシンドロームと、BISメモリ部15aから読み出したBISクラスタBIScとを外部バッファメモリ6に格納する。
誤り訂正回路50内の訂正回路51aは、外部バッファメモリ6から読み出したLDCシンドローム及びBISシンドロームに基づいて、外部バッファメモリ6に格納されたスクランブルデータsDuからなるデータフレームDF等に対して誤り訂正処理を行う。訂正回路51aは、各種シンドロームに基づいて算出した誤り位置及び誤り数値をEDC補正回路52aに出力する。また、訂正回路51aは、外部バッファメモリ6に格納された誤り訂正後のBISクラスタBISc内のスクランブル値の初期値S0を読み出し、該初期値S0をEDC補正回路52aに出力する。
EDC補正回路52aは、訂正回路51aから入力される初期値S0に基づいて、スクランブル値SCを算出する。EDC補正回路52aは、訂正回路51から入力される誤り位置及び誤り数値に基づくEDCシンドローム補正に加えて、上記算出したスクランブル値SCに基づくEDCシンドローム補正を実行する。
EDCチェック回路54において誤り訂正が正常に終了されたことが確認されると、従来と同様のデスクランブル回路115は、外部バッファメモリ6に格納された誤り訂正後のスクランブルデータsDuをスクランブル処理時と同様の順序にて読み出す。また、デスクランブル回路115は、外部バッファメモリ6に格納された誤り訂正後のBISクラスタBISc内の値をスクランブル値の初期値S0として読み出し、該初期値S0に基づいて順次スクランブル値SCを生成する。そして、デスクランブル回路115は、読み出したスクランブルデータsDuに対して順次デスクランブル処理を施し、デスクランブルデータdDuをインターフェース回路60に出力する。
以上説明した実施形態によれば、第4実施形態の(15)の作用効果に加えて以下の効果を奏する。
(16)第4実施形態のデスクランブル回路20がデスクランブル処理に用いるスクランブル値SCは、復調回路11aがデータを読み出すために用いたBD4のアドレス情報、あるいは誤り訂正前のBISクラスタBISc内の値を用いることになる。誤り訂正前にデータが誤っている可能性がある場合には、誤り訂正前のBISクラスタBISc内の値を用いるのではなく、光ディスクコントローラ10内にあるエラーが含まれない値であって、復調回路11が用いたアドレス情報をスクランブル値SCとして用いる。この場合、復調回路11が正しいアドレスを読んでいないと、誤ったスクランブル値SCを用いてしまうことになる。これにより、誤り訂正及びEDCチェックは正しく終了するものの、デスクランブル処理が正しく終了しないという問題が発生する場合がある。
これに対して、本実施形態のデスクランブル回路115では、誤り訂正後のBISクラスタBISc内の値をスクランブル値SCとして用いることができる。従って、デスクランブル回路115は、誤り訂正後のBISクラスタBISc内の値を用いて、誤り訂正回路50で誤り訂正及びEDCチェックまで終了したデータに対してデスクランブル処理を施すことができる。その結果、ホストコンピュータに、より正しいデータを送ることができるようになる。
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記各実施形態では、デスクランブル回路20,70から入力されるデスクランブルデータdDuに基づいてEDCシンドロームEDCSをEDCシンドローム生成回路30,80,90にて生成するようにした。これに限らず、例えば図33に示すように、従来と同様のEDCチェック回路116により、誤り訂正後のデスクランブルデータに基づいてEDCチェック(EDCシンドロームの生成)を行うようにしてもよい。
・上記第4及び第5実施形態におけるコントローラ10に、第2実施形態のデスクランブル回路70、EDCシンドローム生成回路80あるいは第3実施形態のEDCシンドローム生成回路90を適用するようにしてもよい。
・上記第1実施形態において、デスクランブル回路20とEDCシンドローム生成回路30とが独立して内蔵メモリ部12にアクセスするようにしてもよい。すなわち、この場合のデスクランブル回路20のEOR回路21及びEDCシンドローム生成回路30のEOR回路31には、内蔵メモリ部12から分割ECCクラスタDECC内のスクランブルデータsDuが略同時に入力される。
・上記各実施形態では、内蔵メモリ部12の各バッファメモリM1,M2に格納される分割ECCクラスタDECCのサイズに特に制限はない。例えば、分割ECCクラスタDECCのデータサイズを32行×155列としてもよい。なお、この場合、内蔵メモリ部12の各バッファメモリM1,M2を、1つの分割ECCクラスタDECCを格納できるメモリ容量に設定変更する。また、この場合、1つの読み出しブロックRBにおける行数が変更される。このように読み出しブロックRBの行数が変更された場合には、デスクランブル回路20,70の209シフト演算器25、EDCシンドローム生成回路30,80の209シフト演算器35及びEDCシンドローム生成回路90のβ−1664演算器B17におけるシフトバイト数(シフトビット数)が変更される。
・上記第3実施形態のデスクランブル回路70におけるデータ処理順序を第1実施形態と同様のデータ処理順序に変更してもよい。すなわち、第3実施形態のデスクランブル回路70は、各読み出しブロックRBの中で、データブロックDBにおけるデータ配置と同様の順序にて各スクランブルデータを読み出し、その読み出したスクランブルデータに対して順にデスクランブル処理を実行してもよい。この場合、EDCシンドローム生成回路90における偶数ラインレジスタR22及び奇数ラインレジスタR23を省略してもよい。
・上記第2及び第3実施形態のデスクランブル回路70におけるデータ処理順序は特に制限されない。例えば、まず図24(a)に示すように、データフレームDF0→DF4→DF8→DF12→DF16→DF20→DF24→DF28(偶数データフレーム群)の1列目のデスクランブル処理を行う。次に、図24(c)に示すように、データフレームDF1→DF5→DF9→DF13→DF17→DF21→DF25→DF29(奇数データフレーム群)の1列目のデスクランブル処理を行うようにしてもよい。
あるいは、図24(a)、(b)に示すような偶数データフレーム群の1列目のデスクランブル処理が終了した後に、同偶数データフレーム群の2列目のデスクランブル処理を行うようにしてもよい。このように、偶数データフレームのデスクランブル処理を全て終了した後に、奇数データフレームのデスクランブル処理に移るようにすることにより、例えば第2実施形態のデスクランブル回路70内の偶数作業レジスタR4及び奇数作業レジスタR5を共通の作業レジスタに変更することができる。同様に、第3実施形態のEDCシンドローム生成回路90内の偶数ラインレジスタR22及び奇数ラインレジスタR23を共通のラインレジスタに変更することができる。
・上記各実施形態では、各データフレームDFを外部バッファメモリ6に、32行×64列のブロックで格納するようにしたが、このブロックサイズに特に制限はない。例えば、各データフレームDFを64行×32列のブロックで外部バッファメモリ6に格納するようにしてもよい。このように格納すると、全偶数データフレームを外部バッファメモリ6の行方向に並んで格納させることができるとともに、全奇数データフレームを外部バッファメモリ6の行方向に並んで格納させることができる。そのため、デスクランブル回路70において、例えばデータフレームDF0,DF2,DF4,DF6,…,DF28,DF30の同一列のスクランブルデータに対して連続的にデスクランブル処理することにより、128(=8×16)バイトのデスクランブルデータを外部バッファメモリ6の同一行に格納することができる。
・上記第1及び第2実施形態におけるデスクランブル回路20,70の108シフト演算器26を省略してもよい。この場合、例えば各初期値毎に、その初期値から生成多項式Φ(x)に従って108バイト分シフトさせて得られるスクランブル値SC(S0・γ108)を予め算出してメモリ等に格納しておいてもよい。
・上記第1及び第2実施形態におけるデスクランブル回路20,70の偶数レジスタR2及び奇数レジスタR3を省略してもよい。あるいは、第3実施形態におけるEDCシンドローム生成回路90の偶数レジスタR20及び奇数レジスタR21を省略してもよい。この場合、例えば各読み出しブロックRBの各偶数データフレーム及び各奇数データフレームにおける1行1列目の先頭スクランブルデータ(先頭ビットデータ)に対するスクランブル値SC(ベクターβ)を予め算出してメモリ等に格納しておいてもよい。
・上記第1及び第2実施形態におけるEDCシンドローム生成回路30,80の−211シフト演算器37を省略してもよい。この場合、例えば偶数データフレームについては、第1〜第14読み出しブロックRB1〜RB14のデータに対するEDC演算値E14(76)、すなわちバイトデータXがEOR回路31に入力されたときに算出されるEDC演算値E14(76)を中間値EDCsとは別に格納する。そして、第15〜第27読み出しブロックRB15〜RB27のデータに対するEDC演算処理は、上記EDC演算値E14(76)を読み出さずに実行する。最後に、第27読み出しブロックRB27の各偶数データフレームにおける最終行最終列のバイトデータX108が入力されたときのEDC演算値E14(76)に第1補正演算施した後の演算結果と、上記EDC演算値E14(76)との排他的論理和を取ることで、上記(1)式と同様のEDCシンドロームEDCSが生成される。
・上記各実施形態における補正メモリ部53を省略してもよい。この場合、EDC補正回路52は、外部バッファメモリ6からEDCシンドロームEDCSを読み出しながら、該EDCシンドロームEDCSの補正を行う。
・上記実施形態では、内蔵メモリ部12、LDCメモリ部14、BISメモリ部15及びEDCメモリ部40の内部構成を図5の構成に具体化したが、同一時間において、一方のバッファメモリをデータ保存用(シンドローム保存用)として使用し、他方のバッファメモリをアクセス用(データ出力用、シンドローム出力用)として使用する構成であれば、特に制限されない。
・上記各実施形態では、内蔵メモリ部12、LDCメモリ部14、BISメモリ部15及びEDCメモリ部40を2つのバッファメモリM1,M2から構成するようにしたが、1つのバッファメモリあるいは3つ以上のバッファメモリから構成するようにしてもよい。また、1つのバッファメモリに対して、同時にデータの格納とデータの読み出しを行えるように構成してもよい。
・上記各実施形態におけるLDCメモリ部14を省略してもよい。なお、この場合は、LDCシンドローム生成回路13内にパリティ付加ブロックPBの全列(304列)分のLDCシンドローム演算器を設けることが好ましい。また、LDCシンドローム生成回路13にて生成されるLDCシンドロームの中間値を外部バッファメモリ6に格納するようにしてもよい。
・上記各実施形態におけるBISメモリ部15を省略してもよい。なお、この場合、BISシンドローム生成回路16は、内蔵メモリ部12から直接BISクラスタBIScを読み出すようにする。このとき、例えばBISシンドローム生成回路16にて生成されるBISシンドロームの中間値を外部バッファメモリ6に格納するようにしてもよい。また、BISシンドローム生成回路16と外部バッファメモリ6との間に、BISシンドロームの中間値を格納するシンドロームメモリを設けるようにしてもよい。
・上記各実施形態におけるEDCメモリ部40を省略してもよい。なお、この場合は、EDCシンドローム生成回路30,80,90内に全データフレームの個数(30個)分のEDCシンドローム演算器(例えば、EOR回路31や各種演算器34〜37等)を設けることが好ましい。
以上の様々な実施の形態をまとめると、以下のようになる。
(付記1)
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該各スクランブルデータにデスクランブル処理を施したデスクランブルデータを生成するデスクランブル回路と、
前記パリティ演算結果に基づいて、前記デスクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記デスクランブル回路は、
前記内蔵メモリ部からの前記スクランブルデータが入力される第1排他的論理和回路と、
入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、
入力されたスクランブル値を、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、
前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備えることを特徴とする誤り訂正装置。
(付記2)
前記パリティ演算結果生成回路は、前記内蔵メモリ部に格納された前記分割クラスタにデインターリーブ処理を施して、前記パリティ付加ブロックにおける各データを列方向に読み出し、
前記デスクランブル回路は、前記内蔵メモリ部に格納された前記分割クラスタにデインターリーブ処理を施して、前記データブロックにおける各スクランブルデータを列方向に読み出すことを特徴とする付記1に記載の誤り訂正装置。
(付記3)
前記内蔵メモリ部には、前記復調回路からデインターリーブ処理が施されて前記分割クラスタが格納され、
前記パリティ演算結果生成回路は、前記内蔵メモリ部に格納された前記パリティ付加ブロックを列方向に読み出し、
前記デスクランブル回路は、前記内蔵メモリ部に格納された前記データブロックを列方向に読み出すことを特徴とする付記1に記載の誤り訂正装置。
(付記4)
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから1つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記デスクランブル回路は、
前記各読み出しブロックの前記偶数データフレームにおける1列目の最終行のスクランブルデータに対するスクランブル値が前記第1シフト演算器を通じて格納される第1偶数レジスタと、
前記各読み出しブロックの前記奇数データフレームにおける1列目の最終行のスクランブルデータに対するスクランブル値が前記第1シフト演算器を通じて格納される第1奇数レジスタと、を備え、
前記第1選択回路は、前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器、前記第2シフト演算器、前記第1偶数レジスタ及び前記第1奇数レジスタから入力されるスクランブル値のうちのいずれか一つのスクランブル値を、前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力することを特徴とする付記1〜3のいずれか1つに記載の誤り訂正装置。
(付記5)
前記デスクランブル回路は、
入力されたスクランブル値を、前記第1生成多項式に従って108バイト分シフトさせて新たなスクランブル値を生成する第3シフト演算器を備え、
前記各クラスタにおけるデスクランブル処理開始時の初期値設定において、
前記第1偶数レジスタには、前記各クラスタに応じて設定されるスクランブル値の初期値が格納されるとともに、
前記第1奇数レジスタには、前記初期値が前記第3シフト演算器を通じて格納されることを特徴とする付記4に記載の誤り訂正装置。
(付記6)
前記デスクランブル回路は、
前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第2シフト演算器を通じて格納される偶数作業レジスタと、
前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第2シフト演算器を通じて格納される奇数作業レジスタと、を備え、
前記第1選択回路は、前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器、前記第2シフト演算器、前記第1偶数レジスタ、前記第1奇数レジスタ、前記偶数作業レジスタ及び前記奇数作業レジスタから入力されるスクランブル値のうちのいずれか一つのスクランブル値を、前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力することを特徴とする付記4又は5に記載の誤り訂正装置。
(付記7)
前記第1選択回路は、
前記各読み出しブロックの前記各偶数データフレームにおける1行1列目の先頭スクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第1偶数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各奇数データフレームにおける1行1列目の先頭スクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第1奇数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各データフレームにおける各列の2行目以降のスクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第1シフト演算器から入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各データフレームにおける2列目以降の各列の1行目のスクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第2シフト演算器から入力されるスクランブル値を出力することを特徴とする付記5に記載の誤り訂正装置。
(付記8)
前記第1選択回路は、
前記各読み出しブロックの前記各偶数データフレームにおける1行1列目の先頭スクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第1偶数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各奇数データフレームにおける1行1列目の先頭スクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第1奇数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各偶数データフレームにおける2列目以降の各列の1行目のスクランブルデータが前記第1排他的論理和回路に入力されるときに、前記偶数作業レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各奇数データフレームにおける2列目以降の各列の1行目のスクランブルデータが前記第1排他的論理和回路に入力されるときに、前記奇数作業レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各データフレームにおける各列の2行目以降のスクランブルデータが前記第1排他的論理和回路に入力されるときに、前記第1シフト演算器から入力されるスクランブル値を出力することを特徴とする付記6に記載の誤り訂正装置。
(付記9)
前記デスクランブル回路は、前記各読み出しブロックの中で、前記データブロックにおけるデータ配置と同様の順序にて各スクランブルデータを読み出すことを特徴とする付記1〜8のいずれか1つに記載の誤り訂正装置。
(付記10)
前記デスクランブル回路は、前記各読み出しブロックの中で、外部メモリの行方向に並んで格納されるデータフレームの同一列のスクランブルデータを連続して順番に読み出すことを特徴とする付記6又は8に記載の誤り訂正装置。
(付記11)
前記第1選択回路は、
前記各奇数データフレームにおけるスクランブル処理時の先頭データが前記第1排他的論理和回路に入力されたときに、前記初期値を前記第1排他的論理和回路に出力することを特徴とする付記7〜10のいずれか1つに記載の誤り訂正装置。
(付記12)
前記デスクランブル回路から前記デスクランブルデータが入力されて、該デスクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、
前記EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、を備えたことを特徴とする付記1〜11のいずれか1つに記載の誤り訂正装置。
(付記13)
前記EDCシンドローム生成回路は、
前記デスクランブル回路からバイトデータとして入力される前記デスクランブルデータと、第2選択回路から入力されるシフト演算値との排他的論理和を取って、EDC演算値を生成する第2排他的論理和回路と、
前記第2排他的論理和から入力されるEDC演算値に対して、所定の第2生成多項式に従って1バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第1重み付け回路と、
前記第2排他的論理和から入力されるEDC演算値に対して、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向におけるバイト数)}
バイト分、前記第2生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第2重み付け回路と、
前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って108バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第3重み付け回路と、
前記第2重み付け回路からのシフト演算値と、前記EDCメモリ部からのEDCシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第3排他的論理和回路と、を備え、
前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記第2重み付け回路及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力することを特徴とする付記12に記載の誤り訂正装置。
(付記14)
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該スクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、
前記EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、
前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記EDCシンドローム生成回路は、
前記内蔵メモリ部からバイトデータとして入力される前記スクランブルデータと、第2選択回路から入力されるシフト演算値との排他的論理和を取って、EDC演算値を生成する第2排他的論理和回路と、
前記第2排他的論理和から入力されるEDC演算値に対して、所定の第2生成多項式に従って1バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第1重み付け回路と、
前記第2排他的論理和から入力されるEDC演算値に対して、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向におけるバイト数)}
バイト分、前記第2生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第2重み付け回路と、
前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って108バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第3重み付け回路と、
前記第2重み付け回路からのシフト演算値と、前記EDCメモリ部からのEDCシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第3排他的論理和回路と、を備え、
前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記第2重み付け回路及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力することを特徴とする誤り訂正装置。
(付記15)
前記EDCシンドローム生成回路から外部メモリに格納されたEDCシンドロームが格納される補正メモリ部と、
前記誤り訂正回路により算出される誤り位置及び誤り数値に基づいて、前記補正メモリ部に格納されたEDCシンドロームを補正するとともに、前記クラスタのBISクラスタ内のスクランブル値の初期値から算出されるスクランブル値に基づいて、前記EDCシンドロームを補正するEDC補正回路を備えたことを特徴とする付記14に記載の誤り訂正装置。
(付記16)
前記EDCシンドローム生成回路は、前記各読み出しブロックの中で、前記データブロックにおけるデータ配置と同様の順序にて前記各バイトデータを読み出すことを特徴とする付記14又は15に記載の誤り訂正装置。
(付記17)
前記EDCシンドローム生成回路は、前記各読み出しブロックの中で、外部メモリの行方向に並んで格納されるデータフレームの同一列の前記バイトデータを連続して順番に読み出すことを特徴とする付記14又は15に記載の誤り訂正装置。
(付記18)
前記EDCシンドローム生成回路は、
前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って211バイト分、逆シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第4重み付け回路を備えたことを特徴とする付記13〜17のいずれか1つに記載の誤り訂正装置。
(付記19)
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから1つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記EDCメモリ部には、
前記各読み出しブロックの前記各データフレームにおける最終行最終列のバイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記第1重み付け回路を通じて前記EDCシンドロームの中間結果として格納され、
前記EDCシンドローム生成回路に最後に入力される最終読み出しブロックの前記各偶数データフレームにおける最終行最終列のバイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記第3重み付け回路を通じて前記EDCシンドロームとして格納され、
前記最終読み出しブロックの前記各奇数データフレームにおける最終行最終列のバイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記EDCシンドロームとして格納されることを特徴とする付記13〜18のいずれか1つに記載の誤り訂正装置。
(付記20)
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから1つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記EDCメモリ部には、
前記各偶数データフレームにおけるEDC付加時の最終バイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記第4重み付け回路を通じて前記EDCシンドロームの中間結果として格納されることを特徴とする付記18に記載の誤り訂正装置。
(付記21)
前記EDCシンドローム生成回路は、
前記各読み出しブロックの前記各データフレームにおける各列の最終行のバイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記第2重み付け回路を通じてシフト演算値として格納される作業メモリを備え、
前記作業メモリは、前記格納されたシフト演算値を前記第3排他的論理和回路及び前記第2選択回路に出力し、
前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記作業メモリ及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力することを特徴とする付記13〜20のいずれか1つに記載の誤り訂正装置。
(付記22)
前記第2選択回路は、
前記各読み出しブロックの前記各データフレームにおける2行目以降のバイトデータが前記第2排他的論理和回路に入力されるときに、前記第1重み付け回路から入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける1列目及び最終列を除く各列の1行目のバイトデータが前記第2排他的論理和回路に入力されるときに、前記第2重み付け回路から入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける最終列の1行目のバイトデータが前記第2排他的論理和回路に入力されるときに、前記第3排他的論理和回路から入力されるシフト演算値を出力することを特徴とする付記13〜20のいずれか1つに記載の誤り訂正装置。
(付記23)
前記第2選択回路は、
前記各読み出しブロックの前記各データフレームにおける2行目以降のバイトデータが前記第2排他的論理和回路に入力されるときに、前記第1重み付け回路から入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける1列目及び最終列を除く各列の1行目のバイトデータが前記第2排他的論理和回路に入力されるときに、前記作業メモリから入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける最終列の1行目のバイトデータが第前記2排他的論理和回路に入力されるときに、前記第3排他的論理和回路から入力されるシフト演算値を出力することを特徴とする付記21に記載の誤り訂正装置。
(付記24)
前記EDCシンドローム生成回路は、
入力されるベクターを、所定の第2生成多項式に従って1ビット分、逆シフトさせて新たなベクターを生成する第1逆シフト演算器がN個直列に接続された第1逆シフト演算器群と、該N個の逆シフト演算器の最終段から入力されるベクターを、
{(前記データブロックにおける列方向の全ビット数)−(各読み出しブロックの列方向におけるビット数)}
ビット分、前記第2生成多項式に従って逆シフトさせて新たなベクターを生成する第2逆シフト演算器と、を含んで構成されるベクター生成回路と、
前記デスクランブル回路から前記デスクランブルデータがビットデータとして入力されるとともに、前記N個の第1逆シフト演算器に入力されるベクターが入力されるN個のアンド回路と、
前記N個のアンド回路からの演算結果の排他的論理和を取って、前記EDCシンドロームの中間結果を生成する第4排他的論理和回路と、
前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器及び前記第2逆シフト演算器から入力されるベクターのうちのいずれか一つのベクターを初段の前記第1逆シフト演算器に出力する第3選択回路と、を備えることを特徴とする付記12に記載の誤り訂正装置。
(付記25)
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該スクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、
前記EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、
前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記EDCシンドローム生成回路は、
入力されるベクターを、所定の第2生成多項式に従って1ビット分、逆シフトさせて新たなベクターを生成する第1逆シフト演算器がN個直列に接続された第1逆シフト演算器群と、該N個の逆シフト演算器の最終段から入力されるベクターを、
{(前記データブロックにおける列方向の全ビット数)−(各読み出しブロックの列方向におけるビット数)}
ビット分、前記第2生成多項式に従って逆シフトさせて新たなベクターを生成する第2逆シフト演算器と、を含んで構成されるベクター生成回路と、
前記復調回路から前記スクランブルデータがビットデータとして入力されるとともに、前記N個の第1逆シフト演算器に入力されるベクターが入力されるN個のアンド回路と、
前記N個のアンド回路からの演算結果の排他的論理和を取って、前記EDCシンドロームの中間結果を生成する第4排他的論理和回路と、
前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器及び前記第2逆シフト演算器から入力されるベクターのうちのいずれか一つのベクターを初段の前記第1逆シフト演算器に出力する第3選択回路と、を備えることを特徴とする誤り訂正装置。
(付記26)
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから1つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記EDCシンドローム生成回路は、
前記各読み出しブロックの前記偶数データフレームにおける1列目の最終行のビットデータに乗算されたベクターが前記最終段の第1逆シフト演算器を通じて格納される第2偶数レジスタと、
前記各読み出しブロックの前記奇数データフレームにおける1列目の最終行のビットデータに乗算されたベクターが前記最終段の第1逆シフト演算器を通じて格納される第2奇数レジスタと、を備え、
前記第3選択回路は、前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器、前記第2逆シフト演算器、前記第2偶数レジスタ及び前記第2奇数レジスタから入力されるベクターのうちのいずれか一つのベクターを前記初段の第1逆シフト演算器に出力することを特徴とする付記24又は25に記載の誤り訂正装置。
(付記27)
前記EDCシンドローム生成回路は、
前記各クラスタにおけるEDC演算処理開始時の初期値設定において、
前記第2偶数レジスタには、前記第2生成多項式に従って生成された16415次のベクターが格納されるとともに、
前記第2奇数レジスタには、前記第2生成多項式に従って生成された15551次のベクターが格納されることを特徴とする付記26に記載の誤り訂正装置。
(付記28)
前記EDCシンドローム生成回路は、
前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のビットデータに乗算されたベクターが前記第2逆シフト演算器を通じて格納される偶数ラインレジスタと、
前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のビットデータに乗算されたベクターが前記第2逆シフト演算器を通じて格納される奇数ラインレジスタと、を備え、
前記第3選択回路は、前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器、前記第2偶数レジスタ、前記第2奇数レジスタ、前記偶数ラインレジスタ及び前記奇数ラインレジスタから入力されるベクターのいずれか一つのベクターを前記初段の第1逆シフト演算器に出力することを特徴とする付記26又は27に記載の誤り訂正装置。
(付記29)
前記第3選択回路は、
前記各読み出しブロックの前記各偶数データフレームにおける1行1列目の先頭ビットデータを含むNビット分のビットデータが前記N個のアンド回路に入力されるときに、前記第2偶数レジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各奇数データフレームにおける1行1列目の先頭ビットデータを含むNビット分のビットデータが前記N個のアンド回路に入力されるときに、前記第2奇数レジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各偶数データフレームにおける2列目以降の各列の1行目のビットデータを含むNビット分のビットデータが前記N個のアンド回路に入力されるときに、前記偶数ラインレジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各奇数データフレームにおける2列目以降の各列の1行目のビットデータを含むNビット分のビットデータが前記N個のアンド回路に入力されるときに、前記奇数ラインレジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各データフレームにおける(N+1)行目以降のビットデータを含むNビット分のビットデータが前記N個のアンド回路に入力されるときに、前記最終段の第1逆シフト演算器から入力されるベクターを出力することを特徴とする付記28に記載の誤り訂正装置。
(付記30)
誤り訂正済のデスクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路を備えたことを特徴とする付記1〜11のいずれか1つに記載の誤り訂正装置。
(付記31)
前記内蔵メモリ部は、前記復調回路から前記分割クラスタ内のLDCクラスタが格納されるLDCデータメモリ部と、前記復調回路から前記クラスタ内のBISクラスタが格納されるBISメモリ部とを備え、
前記BISメモリ部から前記BISクラスタを読み出し、該BISクラスタに基づいてBISシンドロームを生成するBISシンドローム生成回路を備えたことを特徴とする付記1〜30のいずれか1つに記載の誤り訂正装置。
(付記32)
前記LDCデータメモリ部は、少なくとも2つのメモリから構成され、
前記LDCデータメモリ部の少なくとも1つのメモリを前記復調回路からの前記分割クラスタ内のLDCクラスタを格納するデータ保存用として使用するとともに、前記LDCデータメモリ部の少なくとも1つのメモリを前記パリティ演算結果生成回路からアクセスされるアクセス用として使用することを特徴とする付記31に記載の誤り訂正装置。
(付記33)
前記内蔵メモリ部は、少なくとも2つのメモリから構成され、
前記内蔵メモリ部の少なくとも1つのメモリを前記復調回路からの前記分割クラスタを格納するデータ保存用として使用するとともに、前記内蔵メモリ部の少なくとも1つのメモリを前記パリティ演算結果生成回路からアクセスされるアクセス用として使用することを特徴とする付記1〜30のいずれか1つに記載の誤り訂正装置。
(付記34)
前記内蔵メモリ部から前記分割クラスタ内のBISクラスタが格納される小容量のBISメモリ部と、
前記BISメモリ部から読み出した前記BISクラスタに基づいてBISシンドロームを生成することを特徴とする付記1〜30,33のいずれか1つに記載の誤り訂正装置。
(付記35)
前記BISメモリ部は、少なくとも2つのメモリから構成され、
前記BISメモリ部の少なくとも1つのメモリを、前記BISクラスタを格納するデータ保存用として使用するとともに、前記BISメモリ部の少なくとも1つのメモリを前記BISシンドローム生成回路からアクセスされるデータ出力用として使用することを特徴とする付記31,32,34のいずれか1つに記載の誤り訂正装置。
(付記36)
前記パリティ演算結果生成回路にて生成されるパリティ演算結果の中間結果を格納する小容量のLDCメモリ部を備えたことを特徴とする付記1〜35のいずれか1つに記載の誤り訂正装置。
(付記37)
前記LDCメモリ部は、少なくとも2つのメモリから構成され、
前記LDCメモリ部の少なくとも1つのメモリを前記パリティ演算結果生成回路からの前記パリティ演算結果の中間結果を格納するシンドローム保存用として使用するとともに、前記LDCメモリ部の少なくとも1つのメモリを外部メモリに前記パリティ演算結果を出力するデータ出力用として使用することを特徴とする付記36に記載の誤り訂正装置。
(付記38)
前記EDCシンドローム生成回路から外部メモリに格納されたEDCシンドロームが格納される補正メモリ部と、
前記誤り訂正回路により算出される誤り位置及び誤り数値に基づいて、前記補正メモリ部に格納されたEDCシンドロームを補正するEDC補正回路と、を備えることを特徴とする付記12〜37のいずれか1つに記載の誤り訂正装置。
(付記39)
誤り訂正装置とメモリとを含んで構成され、光ディスクに書き込まれたデータを読み出すデータ読み出し装置であって、
前記誤り訂正装置は、
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータが書き込まれる高密度光ディスクから前記変調されたデータを読み出して、該変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該各スクランブルデータにデスクランブル処理を施したデスクランブルデータを生成するデスクランブル回路と、
前記メモリに格納された前記パリティ演算結果に基づいて、前記メモリに格納された前記デスクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記デスクランブル回路は、
前記内蔵メモリ部からの前記スクランブルデータが入力される第1排他的論理和回路と、
入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、
入力されたスクランブル値を、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、
前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備えることを特徴とするデータ読み出し装置。
(付記40)
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されて光ディスクに書き込まれたデータの読み出しに使用されるデスクランブル回路であって、
読み出したデータが入力される第1排他的論理和回路と、
入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、
入力されたスクランブル値を、
{(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、
前記第1排他的論理和回路に入力される前記読み出したデータのデータブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備えることを特徴とするデスクランブル回路。
光ディスク制御装置を示すブロック図。 第1実施形態における光ディスクコントローラを示すブロック図。 内蔵メモリに格納される分割ECCブロックを示す説明図。 LDCシンドローム生成回路に読み出される読み出しブロックを示す説明図。 内蔵メモリ部を示すブロック図。 第1実施形態におけるデスクランブル回路を示すブロック図。 デスクランブル回路に読み出される読み出しブロックを示す説明図。 第1実施形態におけるEDCシンドローム生成回路を示すブロック図。 外部バッファメモリを示す説明図。 デスクランブル処理の動作を示すフローチャート。 デスクランブル処理の動作を示すフローチャート。 デスクランブル処理の動作を示すフローチャート。 EDCシンドローム生成回路に入力される入力多項式を示す説明図。 第1実施形態におけるEDC演算処理の動作を示すフローチャート。 デスクランブル回路の1シフト演算器における入出力の論理式を示す説明図。 デスクランブル回路の209シフト演算器における入出力の論理式を示す説明図。 デスクランブル回路の108シフト演算器における入出力の論理式を示す説明図。 EDCシンドローム生成回路の1シフト演算器における入出力の論理式を示す説明図。 EDCシンドローム生成回路の209シフト演算器における入出力の論理式を示す説明図。 EDCシンドローム生成回路の108シフト演算器における入出力の論理式を示す説明図。 EDCシンドローム生成回路の−211シフト演算器における入出力の論理式を示す説明図。 第2実施形態におけるデスクランブル回路を示すブロック図。 第2実施形態におけるEDCシンドローム生成回路を示すブロック図。 (a)〜(d)は、第2実施形態におけるデータ処理順序を示す説明図。 第2実施形態における外部バッファメモリへのデータ格納方法を示す説明図。 (a)、(b)は、EDCシンドローム生成回路に入力される入力多項式を示す説明図。 第3実施形態におけるEDCシンドローム生成回路を示すブロック図。 第3実施形態におけるEDC演算処理の動作を示すフローチャート。 EDCシンドローム生成回路のβ−1シフト演算器における入出力の論理式を示す説明図。 EDCシンドローム生成回路のβ−1664シフト演算器における入出力の論理式を示す説明図。 第4実施形態における光ディスクコントローラを示すブロック図。 第5実施形態における光ディスクコントローラを示すブロック図。 別例における光ディスクコントローラを示すブロック図。 ユーザデータを示す説明図。 従来のスクランブル値生成回路を示すブロック図。 (a)、(b)は、データブロックを示す説明図。 LDCブロックを示す説明図。 第1インターリーブ処理を示す説明図。 LDCクラスタを示す説明図。 (a)、(b)は、ECCクラスタを示す説明図。 従来における光ディスクコントローラを示すブロック図。 従来のデスクランブル処理を示す説明図。 従来における光ディスクコントローラを示すブロック図。
符号の説明
1 光ディスク制御装置(データ読み出し装置)
4 ブルーレイディスク(高密度光ディスク)
6 外部バッファメモリ(外部メモリ)
10 光ディスクコントローラ(誤り訂正装置)
11,11a 復調回路
12,12e 内蔵メモリ部
13 LDCシンドローム生成回路(パリティ演算結果生成回路)
14 LDCメモリ部
15,15a BISメモリ部
16,16a BISシンドローム生成回路
20,70,115 デスクランブル回路
21 EOR回路(第1排他的論理和回路)
24 1シフト演算器(第1シフト演算器)
25 209シフト演算器(第2シフト演算器)
26 108シフト演算器(第3シフト演算器)
28,72 選択回路(第1選択回路)
30,30a,80,90 EDCシンドローム生成回路
31 EOR回路(第2排他的論理和回路)
34 1シフト演算器(第1重み付け回路)
35 209シフト演算器(第2重み付け回路)
36 108シフト演算器(第3重み付け回路)
37 −211シフト演算器(第4重み付け回路)
38 EOR回路(第3排他的論理和回路)
39,82 選択回路(第2選択回路)
40 EDCメモリ部
50 誤り訂正回路
51,51a 訂正回路
52,52a EDC補正回路
53 補正メモリ部
81 作業メモリ
91 ベクター生成回路
94 EOR回路(第4排他的論理和回路)
97 選択回路(第3選択回路)
A1〜A16 アンド回路
B1〜B16 β−1シフト演算器(第1逆シフト演算器、第1逆シフト演算器群)
B17 β−1664シフト演算器(第2逆シフト演算器)
M1〜M8,M11,M12 バッファメモリ
R2 偶数レジスタ(第1偶数レジスタ)
R3 奇数レジスタ(第2奇数レジスタ)
R4 偶数作業レジスタ
R5 奇数作業レジスタ
R20 偶数レジスタ(第2偶数レジスタ)
R21 奇数レジスタ(第2奇数レジスタ)
R22 偶数ラインレジスタ
R23 奇数ラインレジスタ

Claims (10)

  1. 所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
    前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
    前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
    前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
    前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該各スクランブルデータにデスクランブル処理を施したデスクランブルデータを生成するデスクランブル回路と、
    前記パリティ演算結果に基づいて、前記デスクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
    前記デスクランブル回路は、
    前記内蔵メモリ部からの前記スクランブルデータが入力される第1排他的論理和回路と、
    入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、
    入力されたスクランブル値を、
    {(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
    バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、
    前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備えることを特徴とする誤り訂正装置。
  2. 前記データブロックにおいて最初に処理されるデータフレームと該データフレームから1つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
    前記デスクランブル回路は、
    前記各読み出しブロックの前記偶数データフレームにおける1列目の最終行のスクランブルデータに対するスクランブル値が前記第1シフト演算器を通じて格納される第1偶数レジスタと、
    前記各読み出しブロックの前記奇数データフレームにおける1列目の最終行のスクランブルデータに対するスクランブル値が前記第1シフト演算器を通じて格納される第1奇数レジスタと、を備え、
    前記第1選択回路は、前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器、前記第2シフト演算器、前記第1偶数レジスタ及び前記第1奇数レジスタから入力されるスクランブル値のうちのいずれか一つのスクランブル値を、前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力することを特徴とする請求項1に記載の誤り訂正装置。
  3. 前記デスクランブル回路は、
    前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第2シフト演算器を通じて格納される偶数作業レジスタと、
    前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第2シフト演算器を通じて格納される奇数作業レジスタと、を備え、
    前記第1選択回路は、前記第1排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第1シフト演算器、前記第2シフト演算器、前記第1偶数レジスタ、前記第1奇数レジスタ、前記偶数作業レジスタ及び前記奇数作業レジスタから入力されるスクランブル値のうちのいずれか一つのスクランブル値を、前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力することを特徴とする請求項2に記載の誤り訂正装置。
  4. 前記デスクランブル回路から前記デスクランブルデータが入力されて、該デスクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、
    EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、を備え、
    前記EDCシンドローム生成回路は、
    前記デスクランブル回路からバイトデータとして入力される前記デスクランブルデータと、第2選択回路から入力されるシフト演算値との排他的論理和を取って、EDC演算値を生成する第2排他的論理和回路と、
    前記第2排他的論理和から入力されるEDC演算値に対して、所定の第2生成多項式に従って1バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第1重み付け回路と、
    前記第2排他的論理和から入力されるEDC演算値に対して、
    {(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向におけるバイト数)}
    バイト分、前記第2生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第2重み付け回路と、
    前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って108バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第3重み付け回路と、
    前記第2重み付け回路からのシフト演算値と、前記EDCメモリ部からのEDCシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第3排他的論理和回路と、を備え、
    前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記第2重み付け回路及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力することを特徴とする請求項1〜3のいずれか1つに記載の誤り訂正装置。
  5. 所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
    前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
    前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
    前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
    前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該スクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、
    前記EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、
    前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
    前記EDCシンドローム生成回路は、
    前記内蔵メモリ部からバイトデータとして入力される前記スクランブルデータと、第2選択回路から入力されるシフト演算値との排他的論理和を取って、EDC演算値を生成する第2排他的論理和回路と、
    前記第2排他的論理和から入力されるEDC演算値に対して、所定の第2生成多項式に従って1バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第1重み付け回路と、
    前記第2排他的論理和から入力されるEDC演算値に対して、
    {(前記データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向におけるバイト数)}
    バイト分、前記第2生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第2重み付け回路と、
    前記第2排他的論理和回路から入力されるEDC演算値に対して、前記第2生成多項式に従って108バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記EDCメモリ部に格納する第3重み付け回路と、
    前記第2重み付け回路からのシフト演算値と、前記EDCメモリ部からのEDCシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第3排他的論理和回路と、を備え、
    前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記第2重み付け回路及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力することを特徴とする誤り訂正装置。
  6. 前記EDCシンドローム生成回路は、
    前記各読み出しブロックの前記各データフレームにおける各列の最終行のバイトデータが前記第2排他的論理和回路に入力されたときに生成されるEDC演算値が、前記第2重み付け回路を通じてシフト演算値として格納される作業メモリを備え、
    前記作業メモリは、前記格納されたシフト演算値を前記第3排他的論理和回路及び前記第2選択回路に出力し、
    前記第2選択回路は、前記第2排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第1重み付け回路、前記作業メモリ及び前記第3排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第2排他的論理和回路に出力することを特徴とする請求項4又は5に記載の誤り訂正装置。
  7. 前記デスクランブル回路から前記デスクランブルデータが入力されて、該デスクランブルデータに基づいてEDCシンドロームを生成するEDCシンドローム生成回路と、
    EDCシンドローム生成回路により生成されるEDCシンドロームの中間結果を前記データフレーム毎に格納するEDCメモリ部と、を備え、
    前記EDCシンドローム生成回路は、
    入力されるベクターを、所定の第2生成多項式に従って1ビット分、逆シフトさせて新たなベクターを生成する第1逆シフト演算器がN個直列に接続された第1逆シフト演算器群と、該N個の逆シフト演算器の最終段から入力されるベクターを、
    {(前記データブロックにおける列方向の全ビット数)−(各読み出しブロックの列方向におけるビット数)}
    ビット分、前記第2生成多項式に従って逆シフトさせて新たなベクターを生成する第2逆シフト演算器と、を含んで構成されるベクター生成回路と、
    前記デスクランブル回路から前記デスクランブルデータがビットデータとして入力されるとともに、前記N個の第1逆シフト演算器に入力されるベクターが入力されるN個のアンド回路と、
    前記N個のアンド回路からの演算結果の排他的論理和を取って、前記EDCシンドロームの中間結果を生成する第4排他的論理和回路と、
    前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器及び前記第2逆シフト演算器から入力されるベクターのうちのいずれか一つのベクターを初段の前記第1逆シフト演算器に出力する第3選択回路と、を備えることを特徴とする請求項1〜3のいずれか1つに記載の誤り訂正装置。
  8. 前記データブロックにおいて最初に処理されるデータフレームと該データフレームから1つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
    前記EDCシンドローム生成回路は、
    前記各読み出しブロックの前記偶数データフレームにおける1列目の最終行のビットデータに乗算されたベクターが前記最終段の第1逆シフト演算器を通じて格納される第2偶数レジスタと、
    前記各読み出しブロックの前記奇数データフレームにおける1列目の最終行のビットデータに乗算されたベクターが前記最終段の第1逆シフト演算器を通じて格納される第2奇数レジスタと、を備え、
    前記第3選択回路は、前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第1逆シフト演算器、前記第2逆シフト演算器、前記第2偶数レジスタ及び前記第2奇数レジスタから入力されるベクターのうちのいずれか一つのベクターを前記初段の第1逆シフト演算器に出力することを特徴とする請求項7に記載の誤り訂正装置。
  9. 前記内蔵メモリ部は、前記復調回路から前記分割クラスタ内のLDCクラスタが格納されるLDCデータメモリ部と、前記復調回路から前記クラスタ内のBISクラスタが格納されるBISメモリ部とを備え、
    前記BISメモリ部から前記BISクラスタを読み出し、該BISクラスタに基づいてBISシンドロームを生成するBISシンドローム生成回路を備えたことを特徴とする請求項1〜8のいずれか1つに記載の誤り訂正装置。
  10. スクランブル、インターリーブされ、光ディスクに書き込まれたデータの読み出しに使用されるデスクランブル回路であって、
    読み出したデータが入力される第1排他的論理和回路と、
    入力されたスクランブル値を、所定の第1生成多項式に従って1バイト分シフトさせて新たなスクランブル値を生成する第1シフト演算器と、
    入力されたスクランブル値を、
    {(データブロックの列方向における全バイト数)+1−(各読み出しブロックの列方向における全バイト数)}
    バイト分、前記第1生成多項式に従ってシフトさせて新たなスクランブル値を生成する第2シフト演算器と、
    前記第1排他的論理和回路に入力される前記読み出したデータのデータブロックにおける位置に応じて、前記第1シフト演算器及び前記第2シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第1排他的論理和回路、前記第1シフト演算器及び前記第2シフト演算器に出力する第1選択回路と、を備えることを特徴とするデスクランブル回路。
JP2007198462A 2007-07-31 2007-07-31 誤り訂正装置及びデスクランブル回路 Expired - Fee Related JP4930251B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007198462A JP4930251B2 (ja) 2007-07-31 2007-07-31 誤り訂正装置及びデスクランブル回路
US12/182,786 US8230297B2 (en) 2007-07-31 2008-07-30 Error correction device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007198462A JP4930251B2 (ja) 2007-07-31 2007-07-31 誤り訂正装置及びデスクランブル回路

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011283485A Division JP5365683B2 (ja) 2011-12-26 2011-12-26 誤り訂正装置

Publications (2)

Publication Number Publication Date
JP2009037656A true JP2009037656A (ja) 2009-02-19
JP4930251B2 JP4930251B2 (ja) 2012-05-16

Family

ID=40339292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007198462A Expired - Fee Related JP4930251B2 (ja) 2007-07-31 2007-07-31 誤り訂正装置及びデスクランブル回路

Country Status (2)

Country Link
US (1) US8230297B2 (ja)
JP (1) JP4930251B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118968A (ja) * 2009-12-01 2011-06-16 Renesas Electronics Corp 記録装置及び記録方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1946318A2 (en) * 2005-10-31 2008-07-23 Nxp B.V. System and method for optical disc encoding/decoding
US9002915B1 (en) * 2009-04-02 2015-04-07 Xilinx, Inc. Circuits for shifting bussed data
US8352834B2 (en) * 2009-11-12 2013-01-08 Broadlogic Network Technologies Inc. High throughput interleaver / deinterleaver
JP5362856B2 (ja) * 2010-02-08 2013-12-11 富士通株式会社 エラー発生指示回路、記憶装置、情報処理装置及びエラー発生指示回路の制御方法
JP2013070122A (ja) * 2011-09-20 2013-04-18 Fujitsu Ltd 誤り訂正装置、誤り訂正方法及び演算装置
US11239988B2 (en) * 2019-04-22 2022-02-01 Texas Instruments Incorporated Methods and systems for synchronization of slave device with master device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001292066A (ja) * 2000-01-31 2001-10-19 Sanyo Electric Co Ltd 誤り訂正装置および誤り訂正方法
JP2003187532A (ja) * 2001-12-13 2003-07-04 Hitachi Ltd スクランブル符号化復号方法およびその回路、記憶装置、記憶媒体
JP2006155836A (ja) * 2004-12-01 2006-06-15 Nec Electronics Corp スクランブル回路、デ・スクランブル回路及び方法、並びにディスク装置
JP2006155835A (ja) * 2004-12-01 2006-06-15 Nec Electronics Corp 誤り検出符号付加回路、誤り検出回路及び方法、並びにディスク装置
JP2008159109A (ja) * 2006-12-21 2008-07-10 Matsushita Electric Ind Co Ltd データ転送装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772385B2 (en) * 2000-01-31 2004-08-03 Sanyo Electric Co., Ltd. Error-correcting device and decoder enabling fast error correction with reduced circuit scale
US20030135798A1 (en) * 2001-12-13 2003-07-17 Yukari Katayama Optical disk device and data randomizing method for optical disk device
JP2003242720A (ja) 2001-12-14 2003-08-29 Hitachi Ltd ディジタルデータ記録再生方法
JP2006209928A (ja) * 2005-01-31 2006-08-10 Sony Corp 光ディスク製造方法及び装置、光ディスク、並びに、光ディスク再生方法及び装置
JP4571523B2 (ja) * 2005-03-04 2010-10-27 ルネサスエレクトロニクス株式会社 スクランブル回路、エンコード装置、エンコード方法及び記録装置
JP4620541B2 (ja) * 2005-08-04 2011-01-26 ルネサスエレクトロニクス株式会社 誤り検出符号算出回路、誤り検出符号算出方法及び記録装置
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
JP2009048713A (ja) * 2007-08-21 2009-03-05 Toshiba Microelectronics Corp デスクランブル回路及びエラー検出コード計算回路
US7876638B2 (en) * 2007-09-11 2011-01-25 Micron Technology, Inc. Storing operational information in an array of memory cells
JP5419653B2 (ja) * 2009-12-01 2014-02-19 ルネサスエレクトロニクス株式会社 記録装置及び記録方法
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001292066A (ja) * 2000-01-31 2001-10-19 Sanyo Electric Co Ltd 誤り訂正装置および誤り訂正方法
JP2003187532A (ja) * 2001-12-13 2003-07-04 Hitachi Ltd スクランブル符号化復号方法およびその回路、記憶装置、記憶媒体
JP2006155836A (ja) * 2004-12-01 2006-06-15 Nec Electronics Corp スクランブル回路、デ・スクランブル回路及び方法、並びにディスク装置
JP2006155835A (ja) * 2004-12-01 2006-06-15 Nec Electronics Corp 誤り検出符号付加回路、誤り検出回路及び方法、並びにディスク装置
JP2008159109A (ja) * 2006-12-21 2008-07-10 Matsushita Electric Ind Co Ltd データ転送装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118968A (ja) * 2009-12-01 2011-06-16 Renesas Electronics Corp 記録装置及び記録方法

Also Published As

Publication number Publication date
US8230297B2 (en) 2012-07-24
US20090037796A1 (en) 2009-02-05
JP4930251B2 (ja) 2012-05-16

Similar Documents

Publication Publication Date Title
JP4930251B2 (ja) 誤り訂正装置及びデスクランブル回路
JP3863252B2 (ja) 誤り訂正方法、誤り訂正装置、データ読み出し装置、及び、データマッピング方法
US6772385B2 (en) Error-correcting device and decoder enabling fast error correction with reduced circuit scale
JP4620541B2 (ja) 誤り検出符号算出回路、誤り検出符号算出方法及び記録装置
US8102996B2 (en) Scrambler, descrambler and method, and disc apparatus
CN102096609A (zh) 可编程循环冗余校验(crc)计算的指令集架构
US7607074B2 (en) Error detecting code addition circuit, error detection circuit and method, and disc apparatus
JPS6037833A (ja) 符号語の複号装置及び読み取り装置
JP5365683B2 (ja) 誤り訂正装置
JP5419653B2 (ja) 記録装置及び記録方法
JP3281938B2 (ja) 誤り訂正装置
KR100561982B1 (ko) 오류 정정 부호 발생 회로 및 그 방법
JP3992443B2 (ja) 符号化方法、復号方法、符号化回路、復号回路、記憶装置、記憶媒体、通信装置
US20090052658A1 (en) Descrambling circuit, error detection code calculating circuit and scrambling circuit
JPH04365139A (ja) 誤り訂正処理用シンドローム演算回路
US20080201619A1 (en) Error correcting device, error correcting method and disk system
JP2005267719A (ja) 符号化装置
KR100784740B1 (ko) 에러 검출 코드 산출 회로, 에러 검출 코드 산출 방법, 및 레코딩 장치
US8239742B2 (en) Coding apparatus, coding method and coding program for combing two different code words
US8196023B2 (en) Encoder and optical disk recording apparatus
GB2379768A (en) Memory device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120130

R150 Certificate of patent or registration of utility model

Ref document number: 4930251

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150224

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees