(57)【特許請求の範囲】
【請求項１】
外部の第１装置から受け取ったデータについて演算をして外部の第２装置に出力するデータ入出力装置であって、
第１装置から継続的にデータを受け取る入力手段と、
与えられたデータについて演算を行う演算手段と、
データを第２装置に出力する出力手段と、
データを格納するための１つのメモリと、
前記入力手段、前記演算手段及び前記出力手段と前記メモリとを接続するバスである１つのメモリバスと、
前記入力手段を転送元とし、前記メモリを転送先とした第１ＤＭＡ転送を行う第１データ転送手段と、
前記第１データ転送手段による第１バイト数分の第１ＤＭＡ転送が終了した場合に、第１ＤＭＡ転送によりデータが格納された前記メモリ中の領域を転送元とし、前記演算手段を転送先として前記演算手段に演算対象のデータを与えるための第２ＤＭＡ転送を行う第２データ転送手段と、
前記演算手段による第１バイト数分のデータについての演算が終了した場合に、当該データが格納されている前記メモリ中の領域を転送元とし、前記出力手段を転送先とした第３ＤＭＡ転送を行う第３データ転送手段と、
前記第１データ転送手段と前記第２データ転送手段と前記第３データ転送手段とが排他的にデータ転送を実行するよう制御するデータ転送制御手段とを備え、
前記データ入出力装置における前記入力手段と前記演算手段と前記出力手段とは、並列にそれぞれの動作を実行する
ことを特徴とするデータ入出力装置。
【請求項２】
前記データ転送制御手段は、
第２バイト数分のデータについての第１ＤＭＡ転送、第２ＤＭＡ転送又は第３ＤＭＡ転送の必要性が生じた場合に、前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段であって当該必要性が生じたデータ転送を行うものに、第２バイト数分のデータを連続して転送させ、
第１ＤＭＡ転送、第２ＤＭＡ転送又は第３ＤＭＡ転送のうちの複数につきデータ転送の必要性が競合したときには、前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段であって当該必要性が生じたデータ転送を行うもののうち所定の優先度に基づいて定めたものに、第２バイト数分のデータを連続して転送させる
ことを特徴とする請求項１記載のデータ入出力装置。
【請求項３】
前記メモリは、ダイナミックメモリであり、
第２バイト数は、前記メモリを転送先又は転送元として第２バイト数分のデータを連続してＤＭＡ転送する場合に１バイト当たりのメモリアクセスに要する時間をｔ秒とし、前記入力手段が第１装置から受け取るデータの平均転送速度をｖバイト／秒とし、あるデータにつき第２ＤＭＡ転送が必要な回数をｎとすると、ｔｖ（ｎ＋２）＜１を満たすように定めた数である
ことを特徴とする請求項２記載のデータ入出力装置。
【請求項４】
前記入力手段は、第１装置から受け取ったデータを一時的に蓄積するための第１ＦＩＦＯを有し、
前記出力手段は、第２装置に出力するデータを一時的に蓄積するための第２ＦＩＦＯを有し、
前記第１データ転送手段は、前記入力手段中の第１ＦＩＦＯを第１ＤＭＡ転送の転送元とし、
前記第３データ転送手段は、前記出力手段中の第２ＦＩＦＯを第３ＤＭＡ転送の転送先とし、
第１ＤＭＡ転送の必要性は、第１ＦＩＦＯに第２バイト数分のデータが蓄積された場合に生じ、
第３ＤＭＡ転送の必要性は、前記メモリ中に前記演算手段による演算が終了した第２バイト数分のデータが存在する場合であって、第２ＦＩＦＯに第２バイト数分のデータの空きが生じたときに生じる
ことを特徴とする請求項３記載のデータ入出力装置。
【請求項５】
前記優先度は、前記第１データ転送手段による第１ＤＭＡ転送が最も高く、
前記データ転送制御手段は、前記第１ＤＭＡ転送の必要性が生じた時に既に前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段のうちいずれかにＤＭＡ転送を実行させている場合には、実行中の第２バイト数分のＤＭＡ転送の終了後に前記第１データ転送手段に第１ＤＭＡ転送を実行させ、前記第１ＤＭＡ転送の必要性が生じた時に既に前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段のうちいずれかにＤＭＡ転送を実行させていない場合には、即時に前記第１データ転送手段に第１ＤＭＡ転送を実行させ、
第２バイト数は、第１ＦＩＦＯの容量をｍバイトとし、前記メモリを転送先又は転送元として第２バイト数分のデータを連続してＤＭＡ転送する場合にメモリアクセスに要する時間をＴ秒とし、前記入力手段が第１装置から受け取るデータの平均転送速度をｖバイト／秒とすると、ｍ／ｖ＞Ｔを満たすように定めた数である
ことを特徴とする請求項４記載のデータ入出力装置。
【請求項６】
前記優先度は、前記第１データ転送手段及び前記第３データ転送手段によるＤＭＡ転送よりも前記第２データ転送手段による第２ＤＭＡ転送の方が低く、
前記データ転送制御手段は、第１ＤＭＡ転送の必要性及び第３ＤＭＡ転送の必要性の生じていない場合に限り第２データ転送手段に第２ＤＭＡ転送を実行させる
ことを特徴とする請求項５記載のデータ入出力装置。
【請求項７】
前記入力手段が第１装置から受け取るデータには誤り訂正符号が含まれ、
前記演算は、誤り訂正であり、
前記演算手段は、前記誤り訂正を行うために前記メモリにアクセスして前記誤り訂正符号に基づいて前記メモリ中に格納されているデータを参照及び更新し、
前記データ転送制御手段はさらに、
前記第１データ転送手段と前記第２データ転送手段と前記第３データ転送手段とがデータ転送を実行していない間に限り前記演算手段に誤り訂正のための前記メモリへのアクセスを許可する
ことを特徴とする請求項６記載のデータ入出力装置。
【請求項８】
前記第１装置は、光ディスクからデータを読み出す装置であり、
前記光ディスクは、第２バイト数以上の数である第３バイト数毎に積符号による符号化がされたデータを記録しており、
前記メモリは、第３バイト数の２倍以上のサイズである
ことを特徴とする請求項７記載のデータ入出力装置。
【請求項９】
前記演算手段は、
第４バイト数のデータが与えられると当該データに対応するシンドロームを算出するシンドローム計算処理を連続的に複数回行うシンドローム計算部と、
複数のシンドロームを格納可能なキューであるシンドローム格納キューと、
前記シンドローム計算部が算出したシンドロームを前記シンドローム格納キューに格納するシンドローム格納部と、
前記シンドローム格納キューにシンドロームが１つ以上格納されている場合に当該シンドローム格納キューから１つのシンドロームを取り出し、取り出した当該シンドロームが０でないときのみに、当該シンドロームに基づき当該シンドロームに対応するデータの誤りを訂正する訂正部とを有し、
前記演算手段における前記シンドローム計算部と前記訂正部とは、並行してそれぞれの動作を実行する
ことを特徴とする請求項８記載のデータ入出力装置。
【請求項１０】
前記訂正部は、
前記シンドロームに基づき誤り位置多項式及び誤り数値多項式を求める多項式算出部と、
前記多項式算出部が求めた誤り位置多項式の根である誤り位置を求める誤り位置算出部と、
前記多項式算出部が求めた誤り数値多項式と、前記誤り位置算出部が求めた誤り位置とに基づき誤り数値を求め、これらに基づき前記メモリ中のデータを訂正するデータ訂正部とを含み、
前記誤り位置算出部は、前記多項式算出部又はデータ訂正部と並行して動作を行う
ことを特徴とする請求項９記載のデータ入出力装置。
【請求項１１】
ブロック符号化された複数の受信語のそれぞれについて誤り訂正を連続して行う誤り訂正装置であって、
受信語を逐次取得して当該受信語に基づき当該受信語に対応するシンドロームを算出するシンドローム計算処理を連続的に複数回行うシンドローム計算手段と、
複数のシンドロームを格納可能なキューであるシンドローム格納キューと、
前記シンドローム計算手段が算出したシンドロームを前記シンドローム格納キューに格納するシンドローム格納手段と、
前記シンドローム格納キューにシンドロームが１つ以上格納されている場合に当該シンドローム格納キューから１つのシンドロームを取り出し、取り出した当該シンドロームが０でないときのみに、当該シンドロームに基づき当該シンドロームに対応する受信語の誤りを訂正する訂正手段とを備え、
前記誤り訂正装置における前記シンドローム計算手段と前記訂正手段とは、並行してそれぞれの動作を実行する
ことを特徴とする誤り訂正装置。
【請求項１２】
前記誤り訂正装置はさらに、
前記シンドローム計算手段が取得する受信語が複数格納されている受信語記憶手段を備え、
前記訂正手段は、前記受信語記憶手段に格納されている受信語を更新することにより前記訂正を行う
ことを特徴とする請求項１１記載の誤り訂正装置。
【請求項１３】
前記訂正手段は、
前記シンドロームに基づき誤り位置多項式及び誤り数値多項式を求める多項式算出手段と、
前記多項式算出手段が求めた誤り位置多項式の根である誤り位置を求める誤り位置算出手段と、
前記多項式算出手段が求めた誤り数値多項式と、前記誤り位置算出手段が求めた誤り位置とに基づき誤り数値を求め、これらに基づき前記受信語中のデータを訂正するデータ訂正手段とを有し、
前記誤り位置算出手段は、前記多項式算出手段又はデータ訂正手段と並行して動作を行う
ことを特徴とする請求項１２記載の誤り訂正装置。
【請求項１４】
ブロック符号化された複数の受信語のそれぞれについて誤り訂正を連続して行うために、受信語を逐次取得して当該受信語に基づき当該受信語に対応するシンドロームを算出するシンドローム計算手段と並列して実行可能でありＲＡＭを有するコンピュータに、誤り訂正処理を実行させるための誤り訂正制御プログラムを記録した記録媒体であって、
前記誤り訂正制御プログラムは、
前記シンドローム計算手段がシンドロームを算出した時に、当該シンドロームを前記シンドローム計算手段から取り込み前記ＲＡＭに格納するシンドローム格納ステップと、
前記ＲＡＭにシンドロームが１つ以上格納されている場合に当該ＲＡＭから１つのシンドロームを読み出し、読み出した当該シンドロームが０でないときのみに、当該シンドロームに基づき当該シンドロームに対応する受信語の誤りを訂正する訂正ステップとを含む
ことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ入出力装置に関し、特に入力されたデータに特定の演算を施し出力するものであって入力及び出力に関してそれぞれ所定の転送レートでデータ転送を行う入出力装置に関する。
【０００２】
【従来の技術】
コンピュータあるいはＡＶ機器等が、光ディスク、磁気ディスク等に蓄積されたディジタルデータを利用するためには、データ入出力装置を必要とする。
データ入出力装置は、光ディスク等に記録されているデータを読み取り、必要に応じてデータの加工や誤り訂正を行い、データをコンピュータ等が利用可能な形式にしてコンピュータ等に転送する装置である。
＜光ディスク読み取り装置＞
このようなデータ入出力装置の一例として、以下、従来の光ディスク読み取り装置について図を用いて説明する。
【０００３】
図２０は、従来の光ディスク読み取り装置の概略構成図である。
光ディスク読み取り装置１０００は、光ディスク１０１０に記録されているデータを読み取り、読み取ったデータの誤りを訂正した後にホストコンピュータ１０７０に転送する装置であって、ピックアップ１０２０と、増幅器１０３０と、フロントエンドプロセッサ１０４０と、光ディスク制御部１１００と、回転モータ１０５０と、サーボコントローラ１０６０と、システム制御部１２００とを備えるものである。
【０００４】
ここで、システム制御部１２００は、ホストコンピュータ１０７０からのデータ要求のコマンドを光ディスク制御部１１００を介して受け付け、コマンドを解釈し、サーボコントローラ１０６０及び光ディスク制御部１１００を制御してデータ要求に応える機能を実現するマイクロプロセッサである。
回転モータ１０５０は、光ディスク１０１０を回転させるものであり、サーボコントローラ１０６０は、フロントエンドプロセッサ１０４０からの情報をもとにシステム制御部１２００の指示を受けて回転モータ１０５０の回転及びピックアップ１０２０のレンズ位置を制御するものである。
【０００５】
ピックアップ１０２０は、光ディスク１０１０に記録されたデータをレーザ光線を当てて反射光により読み取って電気信号にかえるものであり、増幅器１０３０は、ピックアップ１０２０の出力した信号を増幅してフロントエンドプロセッサ１０４０に出力するものである。
フロントエンドプロセッサ１０４０は、入力された信号に応じてサーボコントローラ１０６０と回転モータ１０５０及びピックアップ１０２０とでフィードバック制御を行い、安定した信号を光ディスク制御部１１００に出力するものであり、イコライザー、ＡＧＣ（自動利得制御回路）、ＰＬＬ（ｐｈａｓｅ  ｌｏｃｋｅｄ  ｌｏｏｐ）等を有する。なお、フロントエンドプロセッサ１０４０が光ディスク制御部１１００に出力する信号は、変調されたデータである。
【０００６】
光ディスク制御部１１００は、ホストコンピュータ１０７０からのデータ要求のコマンドをシステム制御部１２００に通知し、システム制御部１２００の制御の下で、フロントエンドプロセッサ１０４０から入力された信号を復調して必要なデータを取り出し、誤り訂正を施し、ホストコンピュータ１０７０へデータを転送するものである。
【０００７】
なお、図２０では、太線で光ディスク１０１０に記録されているデータがホストコンピュータ１０７０に到達するまでの流れを示している。即ち、光ディスク１０１０に記録されているデータはピックアップ１０２０、増幅器１０３０、フロントエンドプロセッサ１０４０、光ディスク制御部１１００を介してホストコンピュータ１０７０に到達する。
【０００８】
以下、従来の光ディスク読み取り装置における光ディスク制御部１１００について詳細に説明する。
図２１は、従来の光ディスク制御部１１００の構成図である。
光ディスク制御部１１００は、第１メモリ１１１０と、第２メモリ１１２０と、第３メモリ１１３０と、ディスクインタフェース部１１４０と、誤り訂正部１１５０と、ホストインタフェース部１１６０と、第１転送部１１７０と、第２転送部１１８０とを有する。
【０００９】
なお、図２１中の太線は、フロントエンドプロセッサ１０４０から入力されたデータがホストコンピュータ１０７０に到達するまでの流れを示している。
ここで、ディスクインタフェース部１１４０は、フロントエンドプロセッサ１０４０から入力された信号を復調し必要なデータを取り出し、第１メモリに格納するものである。
【００１０】
誤り訂正部１１５０は、ディスクインタフェース部１１４０により第１メモリに格納された所定バイト数のデータに対して誤り訂正の演算処理を施し必要に応じてデータを修正するものである。ここで、前記の所定バイト数は、誤り訂正処理を行うための処理単位であるブロックを構成するデータの数であり、以下この所定バイト数のデータを１ブロックのデータという。なお、誤り訂正部１１５０の行う誤り訂正処理については後にさらに詳しく説明する。
【００１１】
また、第１転送部１１７０は、誤り訂正部１１５０による誤り訂正の演算処理が施された後の第１メモリ内のデータを、第２メモリに転送するものである。
第１メモリ１１１０は１メガビットの容量で、内部に１ブロックのデータが格納できる領域を３つ含む。
ディスクインタフェース部１１４０と誤り訂正部１１５０と第１転送部１１７０とはそれぞれ独立して実行し得るものであるため、ある一定期間において、前記の３つの領域のそれぞれは、ディスクインタフェース部１１４０と、誤り訂正部１１５０と、第１転送部１１７０とのうちの１つからアクセスされる。また、ディスクインタフェース部１１４０にアクセスされた領域は次の一定期間においては誤り訂正部１１５０にアクセスされ、誤り訂正部１１５０にアクセスされた領域は次の一定期間においては第１転送部１１７０にアクセスされ、第１転送部１１７０にアクセスされた領域は次の一定期間においてはディスクインタフェース部１１４０にアクセスされる。
【００１２】
即ち、第１メモリ全体についてのアクセスに着目すれば、第１メモリは、ディスクインタフェース部１１４０と、誤り訂正部１１５０と、第１転送部１１７０との３系統から同時にアクセスされるといえる。第１メモリ１１１０はこのように同時に３系統からのアクセスが可能なものである。
また、１ブロックのデータに着目すれば、ディスクインタフェース部１１４０から第１メモリ１１１０に格納されたデータは、次に誤り訂正部１１５０により誤り訂正の演算処理が施され、次に第１転送部１１７０により第２メモリへ転送されることになる。
【００１３】
第２メモリ１１２０は、第１転送部１１７０により転送されたデータを蓄積するためのものであり、蓄積されたデータは第２転送部１１８０によって随時、第３メモリに転送される。
第３メモリ１１３０は４メガビットの容量のメモリであり１５ブロック分のデータを格納することができる。この第３メモリ１１３０には、光ディスクから読み込んだデータが第１メモリ、第２メモリを経て最終的に蓄積される。
【００１４】
ホストインタフェース部１１６０は、ホストコンピュータ１０７０からのデータ要求のコマンドをシステム制御部１２００に伝え、また、システム制御部１２００の指示を受けて第３メモリに格納されているデータをホストコンピュータに転送するものである。
なお、システム制御部１２００は、第３メモリ１１３０に蓄積されているデータを管理しており、第３メモリ１１３０に格納されていないデータをホストコンピュータ１０７０から要求されている場合には、サーボコントローラ１０６０を介して回転モータ１０５０の駆動を行い、その結果、第３メモリ１１３０に運ばれてきたデータについて、ホストインタフェース部１１６０を制御することによりコンピュータに転送する。また、既に第３メモリ１１３０に格納されているデータをホストコンピュータ１０７０から要求されている場合には、システム制御部１２００は、サーボコントローラ１０６０を介しての回転モータ１０５０の駆動をせずに、ホストインタフェース部１１６０を制御することにより第３メモリ１１３０中のデータをホストコンピュータに転送する。
【００１５】
このように、従来の光ディスク制御部１１００は、第１メモリ１１１０を中心としたデータの取り込みと誤り訂正の処理を行う部分と、第３メモリ１１３０を中心としたデータのホストコンピュータへの転送の処理を行う部分との２つに大別して、それらの処理の間結ぶＦＩＦＯバッファとして第２メモリ１１２０を用いた構成となっている。
【００１６】
即ち、ディスクインタフェース部１１４０がフロントエンドプロセッサ１０４０から入力されるデータの転送速度は低速であるにもかかわらず、ホストインタフェース部１１６０がホストコンピュータに出力するデータの転送速度についてはホストコンピュータの処理を滞らせないように高速であることが求められることに対応して、従来の光ディスク制御部１１００は、低速処理部分と高速処理部分とを設けてこれらの処理間をバッファを介して接続した構成が採られている。＜誤り訂正部＞
以下、上述した従来の光ディスク読み取り装置１０００における光ディスク制御部１１００内の誤り訂正部１１５０についてさらに詳しく説明する。
【００１７】
まず、誤り訂正部１１５０の行う誤り訂正について説明する。
光ディスク等のディジタルデータを記録する記憶媒体は、記録密度が非常に高いので、媒体上の小さな傷、汚れやちり等によりデータ誤りを発生させる可能性が高い。従って、光ディスク等の読み取り装置は正しいデータを読み取ることができない可能性がある。
【００１８】
このような状況を防止するために、記憶媒体にデータを記録するときにはデータに誤り訂正用の符号を付加し、この記憶媒体を読み取る装置においては、この誤り訂正用の符号を利用して誤っているデータを検出し、正しいデータに訂正するといった誤り訂正処理が行われる。誤り訂正処理のために用いられる符号として、例えば誤り訂正能力が優れているリードソロモン符号が用いられる。
【００１９】
図２２は、誤り訂正符号の例を示す図である。
同図には、２つの符号を組み合わせて作られる符号として最も基本的なものである積符号を示している。
ｎ１×ｎ２バイトの情報データ１３１１に対し、Ｃ１方向にｋ１バイトのパリティデータが付加され、Ｃ２方向にはｋ２バイトのパリティデータが付加されている。また、Ｃ１パリティデータに対してＣ２方向にｋ２バイトのパリティデータが付加されている。
【００２０】
即ち、情報データ１３１１に対し、ｋ１×ｎ２バイトのパリティデータ１３１２と、ｎ１×ｋ２バイトのパリティデータ１３１３と、ｋ１×ｋ２バイトのパリティデータ１３１４とが付加されており、これら（ｎ１＋ｋ１）×（ｎ２＋ｋ２）バイトのデータが誤り訂正処理の単位である１ブロックを構成する。
図２２に示す積符号に対しての誤り訂正の処理は、例えば、最初に１行目（ｎ１バイト）の情報データをＣ１方向のパリティデータ（ｋ１バイト）を利用して誤り訂正を行い、２行目から（ｎ２＋ｋ２）行目までにも同様に誤り訂正を行う。これである程度の誤り訂正はできるが、情報の精度を高めるために、さらに１列目（ｎ２バイト）の情報データをＣ２方向のパリティデータを利用して誤り訂正を行い、２列目から（ｎ１＋ｋ１）行目までにも同様に誤り訂正を行うこともできる。またさらにＣ１方向のパリティデータを利用して誤り訂正を行うことにより情報の精度はさらに高まる。
【００２１】
また、例えばＣ１方向のパリティデータを利用して行う１行目の情報データについての誤り訂正の演算は、次の手順で行われる。
（１）１行の情報データ及びパリティデータからシンドロームを計算する。なお、複数次元であるシンドロームが０、即ちシンドロームのすべての成分が０であれば、誤りはないと判断できる。
【００２２】
（２）シンドロームを基にして誤り位置多項式と誤り数値多項式を求める。この計算の方法としてユークリッド法等が知られている。
（３）誤り位置多項式の根を求める。この計算の方法としてチェン検索と呼ばれる方法等が知られている。
（４）誤りの値を求め、誤り位置にある情報データの値を前記の誤りの値との排他的論理和をとったものに修正する。
【００２３】
次に、誤り訂正部１１５０の構成について説明する。
図２３は、従来の誤り訂正部１１５０の構成図である。
誤り訂正部１１５０は、シンドローム計算回路１１５１と、ユークリッド計算回路１１５２と、チェン計算回路１１５３と、エラーデータ訂正回路１１５４とを含む。
【００２４】
シンドローム計算回路１１５１は、前記の手順（１）の処理を行う回路であり、ユークリッド計算回路１１５２は、前記の手順（２）の処理を行う回路であり、チェン計算回路１１５３は、前記の手順（３）の処理を行う回路であり、エラーデータ訂正回路１１５４は、前記の手順（４）の処理を行う回路であり、これらの回路はそれぞれ同期して並列処理、即ちパイプライン方式による逐次処理を行う。
【００２５】
同図中の太線は、第１メモリ１１１０に関するデータの流れを示している。
シンドローム計算回路１１５１は、第１メモリ１１１０に格納されているデータを取得し計算結果をユークリッド計算回路１１５２に引き渡し、ユークリッド計算回路１１５２は計算結果をチェン計算回路１１５３に引き渡し、チェン計算回路１１５３は計算結果をエラーデータ訂正回路１１５４に引き渡し、エラーデータ訂正回路１１５４は誤りの値を求め、第１メモリ１１１０内の誤り位置にあたる情報データを参照して、求めた誤りの値との排他的論理和を計算して第１メモリ１１１０内の情報データを更新する。
【００２６】
図２４は、従来の誤り訂正部１１５０における並列処理の様子を示す図である。
同図中では、符号化されたデータ列、例えば上述のＣ１方向のパリティデータが付加された１行の情報データを、Ｎｏ．１、Ｎｏ．２等で表している。それぞれのデータ列は、ブロック符号化された１つの符号語（ｃｏｄｅ  ｗｏｒｄ）であり、この符号語は通信路を介して受信されたものであるとき受信語（ｒｅｃｅｉｖｅｄ  ｗｏｒｄ）ともいわれるものである。ここでブロック符号化とは、１行のデータ等のひとまとまりのデータの符号化が他の１行のデータ等のひとまとまりのデータの符号化と独立に行われているような符号化をいう。なお、ここでは、ピックアップ１０２０等の光ディスクを読み取る経路を通信路ととらえている。
【００２７】
また、同図にはそれぞれの処理に要する時間を太線の長さで例示している。
同図に示すように、例えば、シンドローム計算回路１１５１は、時間ｔ４においてＮｏ．４のデータ列についての計算を行い、時間ｔ５においてＮｏ．５のデータ列についての計算を行い、時間ごとに異なるデータ列を処理しており、時間ｔ４においてユークリッド計算回路１１５２はＮｏ．３のデータ列を、チェン計算回路１１５３はＮｏ．２のデータ列を、エラーデータ訂正回路１１５４はＮｏ．１のデータ列をそれぞれ処理している。
【００２８】
このように４つの回路がパイプライン方式による逐次処理を実現するために、ｔ１、ｔ２等の時間は、４つの回路のうち最も処理時間の長いものに揃えている。
同図中に太線で例示すように実際上は各回路の処理時間は同一ではないので、パイプライン方式による逐次処理を実現するために、回路によっては待ち時間を設けて調整している。なお、一般的にはユークリッド計算の計算量が最も大きく、これに対しシンドローム計算、チェン計算、エラーデータ訂正のそれぞれの計算量は小さい。
【００２９】
【発明が解決しようとする課題】
以上、従来のデータ入出力装置の例として、光ディスク読み取り装置について説明したが、この光ディスク読み取り装置には、次の様な問題がある。
まず、光ディスク制御部１１００における第１メモリと第３メモリのように、同一内容が格納されるものであるにもかかわらず、データ入力におけるデータの転送速度とデータ出力におけるデータの転送速度とが相違すること、入力データに対する演算処理の機構と高速データ出力処理の機構とを一体化するとメモリアクセス制御が複雑になることその他の理由から別々のメモリが用いられている点である。この場合における第１メモリのように装置内に無駄なメモリを設けることは望ましくない。
【００３０】
次に、誤り訂正部１１５０が、４つの回路によるパイプライン方式の逐次処理を行っているため、４つの回路のうち最も処理が遅い回路以外の回路には、待ち時間が発生する点である。
最近のように、家電製品、情報機器等に一層の小型化、高性能化が求められている状況においては、上記のような無駄なメモリの存在や、無駄な待ち時間の存在は特に問題である。無駄の削除が直接、間接に小型化、高性能化に結びつくからである。
【００３１】
そこで、本発明は、かかる観点からなされたものであり、第１の所定の転送速度で入力されるデータを格納するためのメモリと第２の所定の転送速度で出力するデータを格納するためのメモリとを別々に備える必要のないデータ入出力装置を提供することを第１の目的とする。
また、入力したデータに誤り訂正処理を施してデータを出力するようなデータ入出力装置であって、無駄に遅滞することなく誤り訂正処理を行うデータ入出力装置を提供することを第２の目的とする。
【００３２】
【課題を解決するための手段】
上記の第１の目的を達成するために、本発明は、外部の第１装置から受け取ったデータについて演算をして外部の第２装置に出力するデータ入出力装置であって、第１装置から継続的にデータを受け取る入力手段と、与えられたデータについて演算を行う演算手段と、データを第２装置に出力する出力手段と、データを格納するための１つのメモリと、前記入力手段、前記演算手段及び前記出力手段と前記メモリとを接続するバスである１つのメモリバスと、前記入力手段を転送元とし、前記メモリを転送先とした第１ＤＭＡ転送を行う第１データ転送手段と、前記第１データ転送手段による第１バイト数分の第１ＤＭＡ転送が終了した場合に第１ＤＭＡ転送によりデータが格納された前記メモリ中の領域を転送元とし前記演算手段を転送先として前記演算手段に演算対象のデータを与えるための第２ＤＭＡ転送を行う第２データ転送手段と、前記演算手段による第１バイト数分のデータについての演算が終了した場合に当該データが格納されている前記メモリ中の領域を転送元とし前記出力手段を転送先とした第３ＤＭＡ転送を行う第３データ転送手段と、前記第１データ転送手段と前記第２データ転送手段と前記第３データ転送手段とが排他的にデータ転送を実行するよう制御するデータ転送制御手段とを備え、前記データ入出力装置における前記入力手段と前記演算手段と前記出力手段とは、並列にそれぞれの動作を実行することを特徴とする。
【００３３】
上記構成により、第１ＤＭＡ転送と第２ＤＭＡ転送と第３ＤＭＡ転送とをデータ転送制御手段により排他的に実行するので、継続的に入力されるデータを受け取り、当該データに演算を施した後に当該データを出力する一連の処理を１つのメモリのみを使用して行うことのできるデータ入出力装置が実現される。
また、上述の第２の目的を達成するために、本発明は、ブロック符号化された複数の受信語のそれぞれについて誤り訂正を連続して行う誤り訂正装置であって、受信語を逐次取得して当該受信語に基づき当該受信語に対応するシンドロームを算出するシンドローム計算処理を連続的に複数回行うシンドローム計算手段と、複数のシンドロームを格納可能なキューであるシンドローム格納キューと、前記シンドローム計算手段が算出したシンドロームを前記シンドローム格納キューに格納するシンドローム格納手段と、前記シンドローム格納キューにシンドロームが１つ以上格納されている場合に当該シンドローム格納キューから１つのシンドロームを取り出し、取り出した当該シンドロームが０でないときのみに、当該シンドロームに基づき当該シンドロームに対応する受信語の誤りを訂正する訂正手段とを備え、前記誤り訂正装置における前記シンドローム計算手段と前記訂正手段とは、並行してそれぞれの動作を実行することを特徴とする。
【００３４】
上記構成により、シンドローム計算を、シンドローム計算以外の誤り訂正処理と独立した実行速度で行うことができるようになるため、従来の誤り訂正の方式のようにシンドローム計算の実行速度をユークリッド計算の実行速度と統一する必要がなくなり、同一データ列に対するシンドローム計算に必要な時間がユークリッド計算に必要な時間より長い場合であっても、誤り訂正全体としての実行速度を高速化できる誤り訂正装置が実現される。
【００３５】
即ち、シンドローム計算と、シンドローム計算以外の誤り訂正処理とを並行して実行するので、誤り訂正全体に必要な時間は、シンドローム計算に必要な時間とほぼ等しくなり、高速な誤り訂正を行う誤り訂正装置が実現される。
【００３６】
【発明の実施の形態】
以下、本発明に係るデータ入出力装置の実施の形態である光ディスク読み取り装置について説明する。
＜光ディスク読み取り装置＞
図１は、本発明の実施の形態である光ディスク読み取り装置の概略構成図である。
【００３７】
光ディスク読み取り装置２０００は、光ディスク１０１０に記録されているデータを読み取り、読み取ったデータの誤りを訂正した後にホストコンピュータ１０７０に転送する装置であって、ピックアップ１０２０と、増幅器１０３０と、フロントエンドプロセッサ１０４０と、光ディスク制御部２１００と、回転モータ１０５０と、サーボコントローラ１０６０と、システム制御部２２００とを備えるものである。
【００３８】
なお、本発明の実施の形態である光ディスク読み取り装置は、従来技術の光ディスク読み取り装置と、光ディスク制御部２１００及びシステム制御部２２００が異なるのみであるため、この他の構成要素については図１において図２０で示したのと同一の符号を付している。
ここで、光ディスク１０１０はＤＶＤ−ＲＯＭである。
【００３９】
また、システム制御部２２００は、ホストコンピュータ１０７０からのデータ要求のコマンドを光ディスク制御部２１００を介して受け付け、コマンドを解釈し、サーボコントローラ１０６０及び光ディスク制御部２１００を制御してデータ要求に応える機能を実現するマイクロプロセッサである。
回転モータ１０５０は、光ディスク１０１０を回転させるものであり、サーボコントローラ１０６０は、フロントエンドプロセッサ１０４０からの情報をもとにシステム制御部２２００の指示を受けて回転モータ１０５０の回転及びピックアップ１０２０のレンズ位置を制御するものである。
【００４０】
ピックアップ１０２０は、光ディスク１０１０に記録されたデータをレーザ光線を当てて反射光により読み取って電気信号にかえるものであり、増幅器１０３０は、ピックアップ１０２０の出力した信号を増幅してフロントエンドプロセッサ１０４０に出力するものである。
フロントエンドプロセッサ１０４０は、入力された信号に応じてサーボコントローラ１０６０と回転モータ１０５０及びピックアップ１０２０とでフィードバック制御を行い、安定した信号を光ディスク制御部２１００に出力するものであり、イコライザー、ＡＧＣ、ＰＬＬ等を有する。
【００４１】
光ディスク制御部２１００は、ホストコンピュータ１０７０からのデータ要求のコマンドをシステム制御部２２００に通知し、システム制御部２２００の制御の下で、フロントエンドプロセッサ１０４０から入力された信号を復調して必要なデータを取り出し、誤り訂正を施し、ホストコンピュータ１０７０へデータを転送するものである。光ディスク制御部２１００は後述する内部構成及び内部動作において従来技術における光ディスク制御部１１００とは異なる。
【００４２】
なお、図１では、太線で光ディスク１０１０に記録されているデータがホストコンピュータ１０７０に到達するまでの流れを示している。即ち、光ディスク１０１０に記録されているデータはピックアップ１０２０、増幅器１０３０、フロントエンドプロセッサ１０４０、光ディスク制御部２１００を介してホストコンピュータ１０７０に到達する。
【００４３】
以下、光ディスク制御部２１００について詳細に説明する。
図２は、光ディスク制御部２１００の回路構成図である。
同図に示すように、光ディスク制御部２１００は、メモリ２１１０と、バス制御部２１２０と、ディスクインタフェース部２１３０と、シンドローム計算回路２１４０と、チェン計算回路２１５０と、ＣＰＵ２１６０と、命令ＲＯＭ２１７０と、データＲＡＭ２１８０と、ホストインタフェース部２１９０とを備える。
【００４４】
ここで、メモリ２１１０は４メガビットの容量のダイナミックメモリであり１５ブロック分のデータを格納することができる。なお、このメモリ２１１０は、既に格納してある内容を再度必要とした場合に、いわゆるディスクキャッシュとしても利用可能なように大きな容量としているが、本説明においてはディスクキャッシュ的なメモリの利用については特に触れない。
【００４５】
また、ディスクインタフェース部２１３０は、フロントエンドプロセッサ１０４０から入力された信号を復調し必要なデータを取り出し、バス制御部２１２０を介してメモリ２１１０に転送するものであり、メモリ２１１０に転送するデータを一時的に蓄積する８バイト以上のサイズのＦＩＦＯを有する。
シンドローム計算回路２１４０は、上述した手順（１）の処理を行う回路であり、メモリ２１１０に格納されたデータをバス制御部２１２０を介して取り込みシンドローム計算を行うものである。
【００４６】
チェン計算回路２１５０は、上述した手順（３）の処理を行う回路であり、即ち誤り位置多項式を入力とし誤り位置多項式の根を出力とするものである。
ＣＰＵ２１６０は、光ディスク制御部２１００におけるデータ処理全体を制御するものであり、命令ＲＯＭ２１７０に格納されているプログラムを解読し実行し、プログラムの実行に際して作業用のデータを格納するためのメモリとしてデータＲＡＭ２１８０を利用する。また、ＣＰＵ２１６０は、誤り訂正処理として上述した手順（２）及び手順（４）の処理をも行う。
【００４７】
ホストインタフェース部２１９０は、誤り訂正が施された後のメモリ２１１０中のデータをバス制御部２１２０を介して取り込み、ホストコンピュータ１０７０に転送するものであり、ホストコンピュータ１０７０に転送するデータを一時的に蓄積する８バイト以上のサイズのＦＩＦＯを有する。
また、ディスクインタフェース部２１３０と、シンドローム計算回路２１４０とチェン計算回路２１５０とホストインタフェース部２１９０とは同一バスで接続されている。
【００４８】
バス制御部２１２０は、メモリ２１１０へのアクセスを可能とするため１つのメモリバスについての使用権その他のバスの使用権の付与に関する制御を行うものであり、ＤＭＡコントローラ２１２２を含んでいる。
ここで、ＤＭＡコントローラ２１２２は３つの独立したデータ転送を制御し得るものである。以下、それぞれのデータについてのデータ転送制御部分をＤＭＡコントローラの第１チャネル、ＤＭＡコントローラの第２チャネル、ＤＭＡコントローラの第３チャネルといい、それぞれのデータ転送を第１チャネルのＤＭＡ転送、第２チャネルのＤＭＡ転送、第３チャネルのＤＭＡ転送という。
【００４９】
図３は、光ディスク制御部２１００におけるデータの流れを示す図である。
フロントエンドプロセッサ１０４０から光ディスク制御部２１００に入力されたデータは、ディスクインタフェース部２１３０からバス制御部２１２０を介してメモリ２１１０に格納され、メモリ２１１０に格納されたデータはバス制御部２１２０を介して誤り訂正部２１０１に転送され、誤りの訂正の必要に応じて誤り訂正部２１０１によりバス制御部２１２０を介してメモリ２１１０のデータが更新され、誤り訂正後のデータはメモリ２１１０からバス制御部２１２０を介してホストインタフェース部２１９０に転送され、ホストインタフェース部２１９０からホストコンピュータ１０７０へと転送される。
【００５０】
ここで、誤り訂正部２１０１とは、シンドローム計算回路２１４０と、チェン計算回路２１５０と、ユークリッド計算部２１６４と、エラーデータ訂正部２１６８とからなり、同図に示すようにバス制御部２１２０を介してメモリ２１１０にアクセスするのはシンドローム計算回路２１４０及びエラーデータ訂正部２１６８である。
【００５１】
なお、ユークリッド計算部２１６４とエラーデータ訂正部２１６８とは命令ＲＯＭ２１７０に格納されたプログラムとＣＰＵ２１６０により実現される機能処理部分であり、ユークリッド計算部２１６４は上述の手順（２）の処理を行い、エラーデータ訂正部２１６８は上述の手順（４）の処理を行う。
従って、誤り訂正部２１０１の動作は、シンドローム計算回路２１４０がメモリ２１１０中のデータを取得しシンドローム計算をした結果をユークリッド計算部２１６４が参照して誤り位置多項式及び誤り数値多項式を求め、ユークリッド計算部２１６４は、計算結果をチェン計算回路２１５０に送り込み、エラーデータ訂正部２１６８は、チェン計算回路２１５０による計算結果である誤り位置とユークリッド計算部２１６４による計算結果である誤り数値多項式とを参照して誤り数値を求めて、誤り数値とメモリ２１１０内のデータとの排他的論理和を求めてメモリ２１１０内のデータを更新することにより実現される。
【００５２】
以下、上述の構成を備える光ディスク読み取り装置２０００における光ディスク制御部２１００のメモリ２１１０へのアクセス動作の概要について説明する。
図４は、光ディスク制御部２１００の動作概要を示すフローチャートである。
光ディスク制御部２１００は、ホストコンピュータ１０７０から光ディスク読み出し要求コマンドを受け付ける（ステップＳ３０１０）。受け付けたコマンドはバス制御部２１２０を介してシステム制御部２２００に渡される。
【００５３】
システム制御部２２００は、前記コマンドにより読み出すべき光ディスクの媒体上のアドレス及び読み出すべきデータサイズを得て、これに基づきサーボコントローラ１０６０に回転モータ１０５０及びピックアップ１０２０の駆動指示を与え、ＣＰＵ２１６０にはデータサイズを通知する。
ここで、１ブロック分のデータの読み出し要求がなされたとする。１ブロック分のデータは、図２２に示す（ｎ１＋ｋ１）×（ｎ２＋ｋ２）バイトのデータであり、ここでは約３８ＫＢｙｔｅのデータである。
【００５４】
ＣＰＵ２１６０は、ディスクインタフェース部２１３０からメモリ２１１０への１ブロックのデータ転送をＤＭＡコントローラの第１チャネルに指示する（ステップＳ３０２０）。即ち、ＣＰＵ２１６０は、ディスクインタフェース部２１３０のアドレスを転送元とし、メモリ２１１０内のデータを格納すべきアドレスを転送先とし、１ブロック分を転送データサイズとしてＤＭＡコントローラの第１チャネルに設定する。
【００５５】
ＤＭＡコントローラの第１チャネルへの指示の後に、回転モータ１０５０が光ディスク１０１０を回転させ、ピックアップ１０２０と増幅器１０３０を介してフロントエンドプロセッサ１０４０は光ディスク１０１０のデータを獲得して光ディスク制御部２１００中のディスクインタフェース部２１３０にデータを転送する。
【００５６】
ディスクインタフェース部２１３０に転送されたデータは、ディスクインタフェース部２１３０及びバス制御部２１２０の制御によりメモリ２１１０に転送される（ステップＳ３０３０）。このデータ転送の制御については後に詳細に説明する。
ＣＰＵ２１６０は、第１チャネルのＤＭＡ転送が、１ブロック分のデータについてなされたのち（ステップＳ３０３０、Ｓ３０４０）、ＤＭＡコントローラ２１２２からの転送終了の旨のＣＰＵへの割込みを受け付けることにより転送終了を判断し（ステップＳ３０４０）、メモリ２１１０からシンドローム計算回路２１４０へのデータ転送をＤＭＡコントローラの第２チャネルに指示する（ステップＳ３０５０）。シンドローム計算回路２１４０は、１ブロック分のデータについて１データ列分ごとに受け付けて計算するものであるため（図２２参照）、ＣＰＵ２１６０は、メモリ２１１０内の１つのデータ列のアドレスを転送元とし、シンドローム計算回路２１４０のアドレスを転送先とし、１データ列分のサイズを転送データサイズとしてＤＭＡコントローラの第２チャネルに設定する。
【００５７】
この結果、メモリ２１１０に格納されている１データ列分のデータは、シンドローム計算回路２１４０及びバス制御部２１２０の制御により第２チャネルのＤＭＡ転送としてシンドローム計算回路２１４０に転送される（ステップＳ３０６０、ステップＳ３０７０）。シンドローム計算回路２１４０は、１データ列分のデータを受け取るとシンドローム計算を行う。
【００５８】
第２チャネルのＤＭＡ転送の終了を割込みによりＣＰＵが検知したことにより（ステップＳ３０７０）、シンドローム計算回路の計算結果に基づきＣＰＵ２１６０及びチェン計算回路２１５０が計算を行い、必要に応じてＣＰＵ２１６０はエラーデータ訂正部２１６８の機能処理としてバス制御部２１２０を介してメモリ２１１０のデータを更新する（ステップＳ３０８０）。なお、第２チャネルのＤＭＡ転送の終了のＣＰＵ割込みの時点ではシンドローム計算回路２１４０によるシンドロームの計算は終了している。
【００５９】
このシンドローム計算からエラーデータ訂正までの動作については後に詳細に説明する。
１データ列分の誤り訂正処理が終了した後に、他のデータ列についてもステップＳ３０５０からステップＳ３０８０までの処理を行うことにより（ステップＳ３０９０）、１ブロックについての１回の誤り訂正が終了した後、ステップＳ３０５０からステップＳ３０９０までの処理を行って２回目の誤り訂正を行い、同様に３回目の誤り訂正を行うことにより誤り訂正を完了する（ステップＳ３１００）。
【００６０】
ここで、１回目の誤り訂正は図２２に示すＣ１方向に行い、２回目はＣ２方向に、３回目は再度Ｃ１方向に行う。即ち、ステップＳ３０８０における誤り訂正は、Ｃ１方向のパリティデータを用いて１行目から始められ（ｎ２＋ｋ２）行まで繰り返され、次にＣ２方向のパリティデータを用いて１列目から始められ（ｎ１＋ｋ１）列まで繰り返され、次に再度Ｃ１方向のパリティデータを用いて１行目から始められ（ｎ２＋ｋ２）行まで繰り返される（図２２参照）。
【００６１】
１ブロック分のデータについてのすべての誤り訂正処理が完了した後に、ＣＰＵ２１６０は、メモリ２１１０からホストインタフェース部２１９０へのデータ転送をＤＭＡコントローラの第３チャネルに指示する（ステップＳ３１１０）。即ち、ＣＰＵ２１６０は、メモリ２１１０中の誤り訂正の終了した１ブロックのデータのアドレスを転送元とし、ホストインタフェース部２１９０のアドレスを転送先とし、１ブロック分を転送データサイズとしてＤＭＡコントローラの第３チャネルに設定する。
【００６２】
なお実際は、ホストインタフェース部２１９０がメモリ２１１０から取り出すべきデータは、パリティデータを除いた情報データのみであるため、情報データを格納する領域とパリティデータとを格納する領域を別の領域としている。これは、パリティデータを格納する領域は再利用可能なので当該領域の数を削減するためである。このため、情報データは連続したアドレスに存在し、パリティデータはまた別の連続したアドレスに存在する。従って、例えば、第２チャネルのＤＭＡ転送では、メモリ２１１０中の転送すべきデータすべてが連続したアドレスに存在するのではないため、複数回に分けて転送元アドレス等を繰り返し設定するのだが、本実施形態の説明においては、１ブロックまとめて転送するように概略的に表現している。
【００６３】
従って、メモリ２１１０内の１ブロック分のデータはホストインタフェース部２１９０及びバス制御部２１２０の制御により第３チャネルのＤＭＡ転送としてホストインタフェース部２１９０に転送される（ステップＳ３１２０、Ｓ３１３０）。このデータ転送の制御については後に詳しく説明する。
ＤＭＡコントローラ２１２２は第３チャネルのＤＭＡ転送の終了をＣＰＵ２１６０に割込みをかけることによって通知する。
【００６４】
以上、光ディスク制御部２１００の動作の概要について１ブロック分のデータに着目して説明したが、次に複数ブロックにわたるデータを処理する場合について説明する。
図５は、光ディスク制御部２１００が複数ブロックのデータを処理する場合の各部の動作タイミングを示す図である。
【００６５】
また、図６は、メモリ２１１０の内部へのアクセスのイメージを示す概念図である。
図５中における第１ブロックから第４ブロックで示したものは、それぞれメモリ２１１０に格納される１ブロックのデータである。
図５に示すように、いずれのブロックのデータについてもディスクインタフェース部２１３０の処理が完了すると、誤り訂正部２１０１が処理を開始し、誤り訂正部２１０１の処理が完了すると、ホストインタフェース部２１９０が処理を開始するのであるが、ある時刻においては、ディスクインタフェース部２１３０と誤り訂正部２１０１とホストインタフェース部２１９０はそれぞれ別のブロックのデータを処理対象として並列動作を行う。
【００６６】
例えば、ディスクインタフェース部２１３０が第３ブロックのデータをメモリ２１１０に格納している間に、誤り訂正部２１０１はメモリ２１１０にアクセスして第２ブロックのデータの誤り訂正をしており、ホストインタフェース部２１９０はメモリ２１１０から第１ブロックのデータを取り出している。
この状態におけるメモリ２１１０へのアクセスは、図６に示すようになる。即ち、ディスクインタフェース部２１３０と誤り訂正部２１０１とホストインタフェース部２１９０とは、あるタイミングにおいては、それぞれメモリ２１１０中の別の領域にアクセスしている。
【００６７】
なお、図５は、大まかな時間について各処理が並列に処理する様子を示したものであるが、実際にはメモリ２１１０へのアクセス経路は１つのみであるため、バス制御部２１２０は、ディスクインタフェース部２１３０と誤り訂正部２１０１とホストインタフェース部２１９０とメモリへのアクセスを細かいタイミングで切り替えている。
【００６８】
もし、ディスクインタフェース部２１３０が１ブロック分のデータをメモリ２１１０に格納するのに要する時間に比べて、ホストインタフェース部２１９０が１ブロック分のデータをメモリ２１１０から取り出すのに要する時間が長いならば、ディスクインタフェース部２１３０からデータがメモリ２１１０に一定の間隔で継続的に格納される場合にメモリ２１１０にディスクインタフェース部２１３０からのデータがたまっていき、ついにはデータがあふれる事態が生ずる。
【００６９】
これを避けるため、外部からディスクインタフェース部２１３０に１ブロック分のデータが到着する時間に対して、当該１ブロックのデータを処理するために必要なディスクインタフェース部２１３０と誤り訂正部２１０１とホストインタフェース部２１９０とのメモリアクセスの合計時間が短くなるように、メモリ２１１０の制御クロック等が設定されている。
【００７０】
ここで、ＣＰＵ２１６０がＤＭＡコントローラに設定するメモリ２１１０中のアドレスについて説明する。
ＣＰＵ２１６０は、データＲＡＭ２１８０内にメモリ２１１０に関する状況を管理するためのメモリ管理情報を作成している。
図７は、メモリ管理情報のイメージを示す図である。
【００７１】
同図に示すように、メモリ管理情報は、メモリ２１１０内の領域をブロック単位に分割して管理するものであり、それぞれのブロックについて入力可能か、誤り訂正可能か、出力可能かの３つの状態として管理するものである。初期状態においては、すべてのブロックについて入力可能としている。
ここで、入力可能とは、ディスクインタフェース部２１３０からのデータ格納ができる状態を示し、誤り訂正可能とは、ディスクインタフェース部２１３０からのデータ格納が完了した段階をいい、ＣＰＵ２１６０は上述のステップＳ３０４０において転送終了と判断したときに入力可能から誤り訂正可能に状態を変える。また、出力可能とは、誤り訂正が完了した段階であり、ＣＰＵ２１６０は上述のステップＳ３１００において誤り訂正が完了したと判断したときに誤り訂正可能から出力可能に状態を変える。さらに、ＣＰＵ２１６０は上述のステップＳ３１３０において転送終了と判断したときに出力可能から入力可能に状態を変える。
【００７２】
従って、ＣＰＵ２１６０は、メモリ管理情報を参照し、所定の演算によりブロック番号からメモリアドレスを算出することにより、入力可能な１つのブロックのアドレスをＤＭＡコントローラの第１チャネルに転送先として設定し、誤り訂正可能なブロックのアドレスをＤＭＡコントローラの第２チャネルに転送元として設定し、出力可能なブロックのアドレスをＤＭＡコントローラの第３チャネルに転送元として設定する。
【００７３】
以下、上述したディスクインタフェース部２１３０、誤り訂正部２１０１、ホストインタフェース部２１９０それぞれとメモリ２１１０との間のデータ転送について詳細に説明する。
図８は、バス制御部２１２０の機能ブロック図である。
同図中には、バス制御部２１２０の他にＣＰＵ２１６０、ディスクインタフェース部２１３０、シンドローム計算回路２１４０、ホストインタフェース部２１９０を示している。
【００７４】
バス制御部２１２０は、前述のＤＭＡコントローラ２１２２の他にバス調停部２１２１を有し、また、ＤＭＡコントローラ２１２２は、転送制御情報記憶部２１２３とリクエスト受付部２１２４とを含む。
ここで、バス調停部２１２１は、ＣＰＵ２１６０又はＤＭＡコントローラ２１２２からのバス使用要求を受けてバス使用権を与えるものである。ここでＣＰＵ２１６０からのバス使用要求には、エラーデータ訂正部２１６８によるデータ訂正のためのメモリアクセス要求の他に、シンドローム計算回路２１４０の計算結果の読み出し、チェン計算回路２１５０へのデータ転送、チェン計算回路２１５０からの計算結果の読み出しのためのものがある。なお、シンドローム計算回路２１４０のデータ入力のためのアドレス及び計算結果を出力するためのアドレス、チェン計算回路２１５０のデータ入力のためのアドレス及び計算結果を出力するためのアドレス、ディスクインタフェース部２１３０のアドレス、ホストインタフェース部２１９０のアドレスに関する情報は命令ＲＯＭ２１７０に予め格納されておりＣＰＵ２１６０はこれを参照することができる。
【００７５】
転送制御情報記憶部２１２３は、ＣＰＵ２１６０により設定されるＤＭＡ転送のための転送元及び転送先アドレスと転送データサイズとを記憶する。
リクエスト受付部２１２４は、ディスクインタフェース部２１３０、シンドローム計算回路２１４０、ホストインタフェース部２１９０からの転送開始要求を受け付ける。
【００７６】
ここで、図９から図１２を用いてデータ転送に関わる制御動作について説明する。
図９は、ディスクインタフェース部２１３０の動作の一部を示すフローチャートである。
ディスクインタフェース部２１３０は、フロントエンドプロセッサ１０４０から受け取ったデータを復調して所定の形式とした後に、ＦＩＦＯにデータを蓄積するのであるが、ＦＩＦＯに８バイト以上データがたまった場合には（ステップＳ４０１０）、ＤＭＡコントローラの第１チャネルにリクエストを出す（ステップＳ４０２０）。なお、このリクエストはリクエスト受付部２１２４が受け付ける。
【００７７】
ディスクインタフェース部２１３０には、所定の転送速度で継続してデータが入力されるため、ディスクインタフェース部２１３０は、ほぼ一定の時間ごとに、ステップＳ４０２０のリクエストを行うことになる。
図１０は、シンドローム計算回路２１４０の動作の一部を示すフローチャートである。
【００７８】
シンドローム計算回路２１４０は、ＤＭＡコントローラの第２チャネルへのリクエストをリクエスト受付部２１２４に出す（ステップＳ４１１０）。
シンドローム計算回路２１４０は、転送されてきたデータを取得し（ステップＳ４１２０）、８バイトのデータを取得してなければデータ取得を繰り返し（ステップＳ４１３０）、８バイトのデータを取得した段階で再度ＤＭＡコントローラの第２チャネルにリクエストを出す（ステップＳ４１３０、Ｓ４１１０）。
【００７９】
なお、同図には示していないがステップＳ４１２０により取得したデータについては、シンドローム計算回路２１４０はデータの取得等の動作と並行してシンドローム計算を行う。
図１１は、ホストインタフェース部２１９０の動作の一部を示すフローチャートである。
【００８０】
ホストインタフェース部２１９０は、ＡＴＡＰＩインタフェースによりホストコンピュータ１０７０に接続されており、メモリ２１１０から取り込んだデータはＦＩＦＯに蓄積されるが、このＦＩＦＯに蓄積されたデータは所定の転送速度でＡＴＡＰＩインタフェースによりホストコンピュータ１０７０に転送される。
従って、ホストインタフェース部２１９０は、所定の転送速度を保つため、ＦＩＦＯに蓄積されたデータが不足しないように制御する必要があり、図１１に示す動作を行う。
【００８１】
即ち、ホストインタフェース部２１９０は、ＦＩＦＯに８バイト以上の空きが生じた時点で（ステップＳ４２１０）、ＤＭＡコントローラの第３チャネルについてのリクエストをリクエスト受付部２１２４に出す（ステップＳ４２２０）。
図１２は、バス制御部２１２０の動作の一部を示すフローチャートである。
バス制御部２１２０は、ディスクインタフェース部２１３０とメモリ２１１０との間のデータ転送と、ホストインタフェース部２１９０とメモリ２１１０との間のデータ転送と、誤り訂正処理に関してのメモリアクセスとについて、それぞれに優先度をつけて調整するものである。ここではディスクインタフェース部２１３０とメモリ２１１０との間のデータ転送の優先度が最も高く、次にホストインタフェース部２１９０とメモリ２１１０との間のデータ転送の優先度が高いものとしている。誤り訂正処理に関してのメモリアクセスは前２者よりも優先度が低い。ここで、誤り訂正処理に関してのメモリアクセスとは、メモリ２１１０からシンドローム計算回路２１４０へのデータ転送及びＣＰＵ２１６０とメモリ２１１０との間のデータ転送をいう。
【００８２】
バス調停部２１２１は、リクエスト受付部２１２４により受け付けたリクエストを検査する（ステップＳ４３０１）。バス調停部２１２１は、ステップＳ４３０１における検査時のリクエスト状況に対してステップＳ４３１０、Ｓ４３３０、Ｓ４３５０の判断をなす。
ディスクインタフェース部２１３０からのリクエストを受け付けているならば（ステップＳ４３１０）、バス調停部２１２１は、ＤＭＡコントローラの第１チャネルにバス使用権を与え、バス制御部２１２０は、ＤＭＡコントローラ２１２２によりディスクインタフェース部２１３０からメモリ２１１０へ８バイトのデータを転送する（ステップＳ４３２０）。このデータ転送は、ＣＰＵ２１６０に設定され転送制御情報記憶部２１２３に格納されている転送元、転送先の情報に基づき行われるものであり、上述の第１チャネルのＤＭＡ転送である。
【００８３】
バス調停部２１２１は、前述のディスクインタフェース部２１３０からのリクエストがない状況で、リクエスト受付部２１２４によりホストインタフェース部２１９０からのリクエストを受け付けると（ステップＳ４３３０）、ＤＭＡコントローラの第３チャネルにバス使用権を与え、バス制御部２１２０は、ＤＭＡコントローラ２１２２によりメモリ２１１０からホストインタフェース部２１９０へ８バイトのデータを転送する（ステップＳ４３４０）。このデータ転送は、第３チャネルのＤＭＡ転送である。
【００８４】
また、バス調停部２１２１は、前述のディスクインタフェース部２１３０又はホストインタフェース部２１９０からのリクエストがなされていない状況で、リクエスト受付部２１２４によりシンドローム計算回路２１４０からのリクエストを受け付けると（ステップＳ４３５０）、ＤＭＡコントローラの第２チャネルにバス使用権を与え、バス制御部２１２０は、ＤＭＡコントローラ２１２２によりメモリ２１１０からシンドローム計算回路２１４０へ８バイトのデータを転送する（ステップＳ４３６０）。
【００８５】
また、バス調停部２１２１は、シンドローム計算回路２１４０からのリクエストの他に、エラーデータ訂正部２１６８としてのＣＰＵ２１６０からのメモリアクセス要求を受け付けた場合も、前記のシンドローム計算回路２１４０からリクエストを受け付けた場合と同様に、ディスクインタフェース部２１３０又はホストインタフェース部２１９０からのリクエストがなされていない場合に限りデータ転送のためのバス使用を認める。但し、バス調停部２１２１は、ＣＰＵ２１６０のリクエストよりシンドローム計算回路２１４０のリクエストの方を優先的に扱う。即ち、このエラーデータ訂正部２１６８としてのＣＰＵ２１６０によるメモリアクセスは、他のメモリアクセスのリクエストが全くない状態でのみなされるものであり、１バイト単位で行われる。なお、第１チャネルから第３チャネルのＤＭＡ転送によるメモリ２１１０へのアクセスと比べて、エラーデータ訂正部２１６８によるメモリ２１１０へのアクセスはかなり低頻度で生じる。
【００８６】
バス制御部は、ステップＳ４３２０、Ｓ４３４０又はＳ４３６０の動作を行った後に再度リクエスト受付部２１２４が受け付けているリクエストの検査に戻り（ステップＳ４３０１）、図１２に示す動作を繰り返す。
図１３は、メモリ２１１０を対象とするデータ転送のタイミングの例を示す図である。
【００８７】
同図の例では、ディスクインタフェース部２１３０のＦＩＦＯに低いデータ転送速度でフロントエンドプロセッサ１０４０から継続的にデータが入力されているとしており、ディスクインタフェース部２１３０からメモリ２１１０への８バイトのデータ転送が大きな間隔を空けて行われている様子を示している。
また同図は、ホストインタフェース部２１９０が、高いデータ転送速度でホストコンピュータにデータを転送する必要があることにより、ディスクインタフェース部の転送が行われていない間に、メモリ２１１０からホストインタフェース部２１９０への８バイトのデータ転送がある程度高い頻度で行われている様子を示している。
【００８８】
また同図は、優先度が前記の２つより低いものである誤り訂正用のデータ転送が、前記の２つのデータ転送がなされていない間に行われている様子を示している。
以下、第１チャネルから第３チャネルのＤＭＡ転送を、８バイト毎に分割して行っている理由を説明する。
【００８９】
ＤＭＡ転送において共有する資源のうち、メモリが最もアクセスに時間がかかるものであるため、メモリアクセスの競合をどのように調整するかを考える。
ダイナミックメモリであるメモリ２１１０は、ＲＡＳ（ｒｏｗ  ａｄｄｒｅｓｓ  ｓｔｒｏｂｅ）とＣＡＳ（ｃｏｌｕｍｎ  ａｄｄｒｅｓｓ  ｓｔｒｏｂｅ）との２つの制御クロックにより制御されており、ＲＡＳを一定にしてＣＡＳを連続的に変化させるページモードにより、メモリアクセスをある程度まとめまった単位で行うほうが、１バイトあたりのアクセス速度は向上するため、ＤＭＡ転送は複数バイト毎に行うべきである。
【００９０】
例えば、フロントエンドプロセッサ１０４０から送られてくるデータの平均転送速度をｖバイト／秒とし、上述のように誤り訂正をｃ１方向、ｃ２方向、再度ｃ１方向の３回行うとすると、第２チャネルのこの３回のＤＭＡ転送に加えて第１チャネルのＤＭＡ転送と第３チャネルのＤＭＡ転送との合計５回のＤＭＡ転送が１つのデータについてなされるため、１秒当たりに５ｖバイトのデータについてメモリアクセスが必要となり、ある程度まとまった単位でメモリアクセスすることにより１バイト当たりのメモリアクセス時間がｔ秒となるとすると、５ｖｔの時間ですべてのメモリアクセスが完了する。この場合、５ｖｔ秒が１秒より短くなるようする必要があるため、ある程度多くのまとまった単位でＤＭＡ転送を行うのである。
【００９１】
しかし、バス制御部２１２０は、所定バイト数のデータのＤＭＡ転送毎にリクエストを判断しているため（図１２参照）、大きなバイト数毎にＤＭＡ転送を行うとしたならば、ディスクインタフェース部２１３０やホストインタフェース部２１９０のような所定の速度でのデータ転送を要求される回路からの転送のリクエストに、即座に応じることができないという問題がある。
【００９２】
例えば、ディスクインタフェース部２１３０のＦＩＦＯにデータが蓄積され、第１チャネルのＤＭＡ転送を行う必要が生じた場合においても、その時にいずれかのチャネルのＤＭＡ転送が行われていたならば、所定の単位分の当該ＤＭＡ転送が終了するまで、第１チャネルのＤＭＡ転送が待たされることになる。
ここで、第１チャネルのＤＭＡ転送の優先度が最も高いとして、上述と同様にフロントエンドプロセッサ１０４０から送られてくるデータの平均転送速度をｖバイト／秒とし、ディスクインタフェース部２１３０のＦＩＦＯの容量をｍバイトとし、前記の所定の単位分のＤＭＡ転送におけるメモリアクセスに要する時間をＴ秒とすると、ｍ／ｖ＞Ｔを満たすように前記の所定の単位は小さいものでなければならなくなる。
【００９３】
従って、適度なバイト数単位毎にデータ転送をする必要があり、本実施の形態においては、メモリ２１１０の制御クロック速度等と照らし上述の条件を満たすべく、８バイトをデータ転送の単位としている。
以上説明したように光ディスク制御部２１００は、バス制御部２１２０を中心としたメモリ２１１０へのアクセス制御機構を備えており、これにより１つのメモリ２１１０だけを用いて、データの入力、当該データの誤り訂正、誤り訂正後データの出力という機能を実現している。
＜誤り訂正部＞
以下、上述した光ディスク読み取り装置２０００における光ディスク制御部２１００内の誤り訂正部２１０１についてさらに詳しく説明する。
【００９４】
上述したように、誤り訂正部２１０１は、シンドローム計算回路２１４０と、チェン計算回路２１５０と、ユークリッド計算部２１６４と、エラーデータ訂正部２１６８とからなる。ユークリッド計算部２１６４と、エラーデータ訂正部２１６８とは命令ＲＯＭ２１７０に格納されたプログラムとＣＰＵ２１６０により実現される。
【００９５】
前記プログラムは、ユークリッド計算、エラーデータ訂正の他に、シンドローム計算回路２１４０からのシンドローム計算結果の取り込み、チェン計算回路２１５０とのデータ入出力をも行う。以下、命令ＲＯＭ２１７０に格納されているプログラムとＣＰＵ２１６０とデータＲＡＭ２１８０とにより実現される誤り訂正に関する機能部分を誤り訂正制御部という。
【００９６】
図１４は、誤り訂正制御部に関する機能ブロック図である。
誤り訂正制御部は、割込受付部２１６１と、制御部２１６２と、シンドローム計算結果取込部２１６３と、ユークリッド計算部２１６４と、チェン計算結果取込部２１６５と、シンドローム計算結果格納用キュー領域２１６６と、チェン計算起動部２１６７と、エラーデータ訂正部２１６８と、データ入出力部２１６９とを有する。
【００９７】
割込受付部２１６１は、ＣＰＵ２１６０への割込みを受け付ける部分であり、制御部２１６２は、命令ＲＯＭ２１７０に格納されているプログラムの実行を制御する部分である。
また、データ入出力部２１６９は、バス制御部２１２０を介して他の回路とデータをやり取りする部分であり、ＣＰＵ２１６０のレジスタと他の回路との間でデータの授受をなす。
【００９８】
シンドローム計算結果格納用キュー領域２１６６は、データＲＡＭ２１８０の一部の領域であり、シンドローム計算の結果を１０個分格納できるキューである。
シンドローム計算結果取込部２１６３は、シンドローム計算回路２１４０のシンドローム計算結果をデータ入出力部２１６９を介して取り込みシンドローム計算結果格納用キュー領域２１６６に格納する機能をもつ部分である。
【００９９】
ユークリッド計算部２１６４は、シンドローム計算結果格納用キュー領域２１６６から１個分のシンドローム計算結果のデータを取り出して、このデータに基づき必要に応じてチェン計算起動部２１６７にチェン計算回路２１５０の起動を指示する。チェン計算回路２１５０は、データを与えると計算を開始するものであり、ここでチェン計算回路の起動とは、チェン計算回路にデータを与えることをいう。
【０１００】
チェン計算起動部２１６７は、ユークリッド計算部２１６４の指示に基づきデータ入出力部２１６９を介してチェン計算回路２１５０にユークリッド計算結果であるデータを転送しチェン計算回路２１５０を起動する機能をもつ部分である。
チェン計算結果取込部２１６５は、チェン計算回路２１５０の計算結果をデータ入出力部を介して取り込み、エラーデータ訂正部２１６８に渡す機能をもつ部分である。
【０１０１】
また、エラーデータ訂正部２１６８は、データ入出力部２１６９を介してメモリ２１１０にアクセスし、メモリ２１１０内のデータを更新する部分である。
以下、図１５から図１７を用いて上述の機能構成を有する誤り訂正制御部の動作を説明する。
図１５は、誤り訂正制御部の通常動作を示すフローチャートである。
【０１０２】
誤り訂正制御部の通常動作はユークリッド計算部２１６４によって行われる。
ユークリッド計算部２１６４は、シンドローム計算結果がシンドローム計算結果格納用キュー領域２１６６に格納されているかを検査し、格納されていなければ動作を進めない（ステップＳ５０１０）。但し、ＣＰＵ２１６０が全く停止しているわけではなく、ステップＳ５０１０を繰り返している間にも誤り訂正制御部として以外の動作や、割込み対応の動作は行う。
【０１０３】
シンドローム計算結果がシンドローム計算結果格納用キュー領域２１６６に格納されている場合には、ユークリッド計算部２１６４は、データＲＡＭ２１８０内のシンドローム計算結果格納用キュー領域２１６６からシンドローム計算結果を読み出す（ステップＳ５０２０）。シンドローム計算結果であるシンドローム値が０であれば、データ列に誤りがないことを示しているので（ステップＳ５０３０）、再度、ステップＳ５０１０の動作に戻る。
【０１０４】
また、シンドローム値が０以外であれば（ステップＳ５０３０）、データ列には誤りがあることを示しているのでデータを訂正する必要があるため、ユークリッド計算部２１６４は、当該シンドローム値に基づいてユークリッド計算を行うことにより誤り位置多項式と誤り数値多項式とを求める（ステップＳ５０４０）。
【０１０５】
ユークリッド計算部２１６４は、ユークリッド計算を行った後にチェン計算起動部２１６７を介して、チェン計算回路２１５０に誤り位置多項式を与え（ステップＳ５０５０）、再度、ステップＳ５０１０の動作に戻る。
図１６は、第２チャネル転送終了割込処理を示すフローチャートである。
この第２チャネル転送終了割込処理は、誤り訂正制御部の割込受付部２１６１が第２チャネルのＤＭＡ転送の終了を示す割込みを受け付けた場合に実行される割込処理である。
【０１０６】
割込受付部２１６１が割込みを受け付けた旨を制御部２１６２に通知すると、制御部２１６２は、ユークリッド計算部２１６４による図１５のフローチャートに示す動作を一時的に中断し、シンドローム計算結果取込部２１６３を制御してシンドローム計算回路２１４０から計算結果を読み出させ（ステップＳ５１１０）、読み出した計算結果をデータＲＡＭ２１８０中のシンドローム計算結果格納用キュー領域２１６６に格納させ（ステップＳ５１２０）、その後ユークリッド計算部２１６４に図１５に示す動作を続行させる。
【０１０７】
図１７は、チェン計算終了割込処理を示すフローチャートである。
このチェン計算終了割込処理は、誤り訂正制御部の割込受付部２１６１がチェン計算回路２１５０からＣＰＵ２１６０への割込みを受け付けた場合に実行される割込処理である。
割込受付部２１６１が割込みを受け付けた旨を制御部２１６２に通知すると、制御部２１６２は、ユークリッド計算部２１６４による図１５のフローチャートに示す動作を一時的に中断し、エラーデータ訂正部２１６８にエラーデータ訂正の処理を実行させる。
【０１０８】
エラーデータ訂正部２１６８は、まずチェン計算結果取込部２１６５に、チェン計算回路２１５０からのチェン計算の結果であるデータを読み出させる（ステップＳ５２１０）。
エラーデータ訂正部２１６８は、次にチェン計算の結果である誤り位置と、ユークリッド計算で得られた誤り数値多項式から誤り数値を求め（ステップＳ５２２０）、データ入出力部２１６９を介してメモリ２１１０中の前記誤り位置で示される位置のデータを読み込み（ステップＳ５２３０）、読み込んだデータと前記誤り数値との排他的論理和を求め（ステップＳ５２４０）、求めた値をデータ入出力部２１６９を介してメモリ２１１０中の前記誤り位置で示される位置に書き込む（ステップＳ５２５０）。
【０１０９】
エラーデータ訂正部２１６８によるエラーデータ訂正の処理が終了すると、制御部２１６２は、ユークリッド計算部２１６４に図１５に示す動作を続行させる。
図１８は、誤り訂正部２１０１内の各部の動作タイミングの例を示す図である。
【０１１０】
同図では、誤り訂正部２１０１の動作を、シンドローム計算回路２１４０が行うシンドローム計算と、ＣＰＵ２１６０を含む誤り訂正制御部が行うシンドローム値格納、ユークリッド計算、エラーデータ訂正と、チェン計算回路２１５０が行うチェン計算とに分けて表している。同図において、シンドローム値格納は、図１６に示したシンドローム計算結果取込部２１６３による動作であり、ユークリッド計算は、図１５に示したユークリッド計算部２１６４による動作であり、エラーデータ訂正は、図１７に示したエラーデータ訂正部２１６８による動作である。
【０１１１】
同図に示すように、シンドローム計算回路２１４０と、ＣＰＵ２１６０と、チェン計算回路２１５０とは同時に並列してそれぞれの動作を行うことができるが、シンドローム値格納と、ユークリッド計算と、エラーデータ訂正とは１つのＣＰＵ２１６０により実行されるために同時に並列して行われることはない。
以下、同図に示す例に基づいて、図１４から図１７を用いて、誤り訂正部２１０１の動作を説明する。
【０１１２】
同図中では、符号化されたデータ列、例えば上述のＣ１方向のパリティデータが付加された１行の情報データを処理する単位毎に模様を変えて表示している。シンドローム計算の処理単位６００１〜６００８は、いずれも大体等しい時間である。
以下、シンドローム計算の処理単位６００１、処理単位６００２、・・・、処理単位６００８で扱うデータ列を、それぞれデータ列Ｎｏ．１、データ列Ｎｏ．２、・・・、データ列Ｎｏ．８という。
【０１１３】
シンドローム計算回路２１４０は、データ列Ｎｏ．１を取得してシンドローム計算をした後、データ列Ｎｏ．２を取得してシンドローム計算をし、その後データ列Ｎｏ．３を取得してシンドローム計算をし、同様に順次データ列Ｎｏ．４以後についても処理を行う。ここでは、シンドローム計算回路２１４０がデータ列Ｎｏ．１とＮｏ．２とＮｏ．５とについてシンドローム値が０でないという結果を算出したものとする。
【０１１４】
まずデータ列Ｎｏ．１に着目して説明すると、データ列Ｎｏ．１は上述の第２チャネルのＤＭＡ転送（図４、図１０、図１２参照）によりメモリ２１１０からシンドローム計算回路２１４０に転送される。転送されたデータの取得と並行してシンドローム計算回路２１４０はシンドローム計算を行い、シンドローム計算の完了は第２チャネルのＤＭＡ転送の終了とほぼ同時となるため、ＣＰＵ２１６０を含む誤り訂正制御部は、ＤＭＡコントローラ２１２２による第２チャネルのＤＭＡ転送の終了を示す割込みによってシンドローム計算の完了を知る。
【０１１５】
割込受付部２１６１が第２チャネルのＤＭＡ転送の終了を示す割込みを受け付けると、制御部２１６２の制御によりシンドローム計算結果取込部２１６３は、シンドローム計算回路からデータ列Ｎｏ．１についてのシンドローム値を読み出し（ステップＳ５１１０）、データＲＡＭ２１８０中のシンドローム計算結果格納用キュー領域２１６６に格納する（ステップＳ５１２０）。なお、シンドローム計算回路２１４０は、シンドローム計算の最終段階で計算結果を内部バッファに格納するものであり、この内部バッファからシンドローム計算結果取込部２１６３はシンドローム値を読み出すが、シンドローム計算回路２１４０は前記の読み出しがなされる前に次のデータ列についてのシンドローム値が当該内部バッファに上書きされることはない。
【０１１６】
ユークリッド計算部２１６４は、シンドローム値がシンドローム計算結果格納用キュー領域２１６６に格納される前は動作を進めていないが（ステップＳ５０１０）、データ列Ｎｏ．１についてのシンドローム値がシンドローム計算結果格納用キュー領域２１６６に格納された時点から動作を進め、シンドローム値が０か否かを判断し（ステップＳ５０２０、Ｓ５０３０）、０でないため、ユークリッド計算を行う（ステップＳ５０４０）。
【０１１７】
ユークリッド計算部２１６４がユークリッド計算を行っている間に、シンドローム計算回路２１４０がデータ列Ｎｏ．２のシンドローム計算を完了し、割込受付部２１６１を介して第２チャネルのＤＭＡ転送終了割込みを受けた制御部２１６２は、ユークリッド計算部２１６４によるユークリッド計算を中断し、シンドローム計算結果取込部２１６３によりシンドローム計算回路２１４０から計算結果を読み出し（ステップＳ５１１０）、シンドローム計算結果格納用キュー領域２１６６にデータ列Ｎｏ．２についてのシンドローム値を格納し（ステップＳ５１２０）、その後、ユークリッド計算部２１６４によるユークリッド計算の処理を続行させる。
【０１１８】
その後データ列Ｎｏ．１についてのユークリッド計算を終えたユークリッド計算部２１６４は、チェン計算起動部を介して、チェン計算回路２１５０を起動する（ステップＳ５０５０）。これによりチェン計算回路２１５０はデータ列Ｎｏ．１についてのチェン計算を開始する。
ユークリッド計算部２１６４は、チェン計算回路２１５０を起動すると、シンドローム計算結果格納用キュー領域２１６６に既にデータ列Ｎｏ．２についてのシンドローム値が格納されているので（ステップＳ５０１０）、これを読み出して０か否か判断する（ステップＳ５０２０、Ｓ５０３０）。データ列Ｎｏ．２についてのシンドローム値は０でないので、ユークリッド計算部２１６４は、ユークリッド計算を行う（ステップＳ５０４０）。
【０１１９】
こうしてユークリッド計算部２１６４がユークリッド計算を行っている間に、シンドローム計算回路２１４０がデータ列Ｎｏ．３のシンドローム計算を完了し、制御部２１６２は、第２チャネルのＤＭＡ転送終了割込みを受けた時点でユークリッド計算を中断し、シンドローム計算結果取込部２１６３によりシンドローム計算回路２１４０から計算結果を読み出し（ステップＳ５１１０）、シンドローム計算結果格納用キュー領域２１６６にデータ列Ｎｏ．３についてのシンドローム値を格納し（ステップＳ５１２０）、その後ユークリッド計算部２１６４にユークリッド計算の処理を続行させる。
【０１２０】
その後、ユークリッド計算部２１６４がユークリッド計算を続行している間に、チェン計算回路２１５
０がデータ列Ｎｏ．１についてのチェン計算を完了し、制御部２１６２は割込受付部２１６１を介してチェン計算回路２１５０からの割込みを受け付け、ユークリッド計算を中断し、エラーデータ訂正部２１６８にエラーデータ訂正処理を実行させる。
【０１２１】
エラーデータ訂正部２１６８は、チェン計算結果取込部２１６５を介してデータ列Ｎｏ．１についてのチェン計算の結果をチェン計算回路２１５０から読み出し（ステップＳ５２１０）、誤り数値を求め（ステップＳ５２２０）、メモリ２１１０にアクセスしてデータ列Ｎｏ．１に関連した誤りのあるデータを訂正する（ステップＳ５２３０、Ｓ５２４０、Ｓ５２５０）。
【０１２２】
エラーデータ訂正部２１６８によるエラーデータ訂正処理の終了後に、制御部２１６２は、ユークリッド計算部２１６４に中断していたデータ列Ｎｏ．２のユークリッド計算を続行させる。
その後、またシンドローム計算回路２１４０がデータ列Ｎｏ．４のシンドローム計算を完了すると、誤り訂正制御部は、上述したのと同様にユークリッド計算を中断し、データ列Ｎｏ．４シンドローム値がシンドローム計算結果格納用キュー領域２１６６に読み込み、ユークリッド計算を続行する。
【０１２３】
ユークリッド計算が終了したとき、ユークリッド計算部２１６４は、チェン計算回路２１５０を起動する（ステップＳ５０５０）。これによりチェン計算回路２１５０はデータ列Ｎｏ．２についてのチェン計算を開始する。
ユークリッド計算部２１６４は、チェン計算回路２１５０を起動した後、シンドローム計算結果格納用キュー領域２１６６に既にデータ列Ｎｏ．３についてのシンドローム値とデータ列Ｎｏ．４についてのシンドローム値が格納されているので（ステップＳ５０１０）、先に格納されたデータ列Ｎｏ．３についてのシンドローム値を読み出して０か否か判断する（ステップＳ５０２０、Ｓ５０３０）。
【０１２４】
データ列Ｎｏ．３についてのシンドローム値は０であるため、ユークリッド計算部２１６４は、ユークリッド計算等は行わずに、シンドローム計算結果格納用キュー領域２１６６からデータ列Ｎｏ．４についてのシンドローム値を読み出して０か否か判断する（ステップＳ５０１０、Ｓ５０２０、Ｓ５０３０）。
データ列Ｎｏ．４についてのシンドローム値も０であるため、ユークリッド計算部２１６４は、ユークリッド計算等は行わず、シンドローム計算結果格納用キュー領域２１６６にシンドローム値が格納されるまで待つ（ステップＳ５０１０）。
【０１２５】
これ以後も誤り訂正部２１０１は同様に動作を進める。
上述のように誤り訂正部２１０１は、シンドローム計算とシンドローム計算以外の処理とを並行動作する構成とし、１つのデータ列についてシンドローム計算が終了した時点で、シンドローム計算の結果をキューに格納してシンドローム計算以外の処理に引き渡すように制御している。
【０１２６】
従って、シンドローム値が０であるか否かの判断に要する時間がユークリッド計算及びエラーデータ訂正にかかる時間と比べて非常に小さいことと、シンドローム値が０以外であるデータ列のデータ列全体に対する割合はかなり少ないことという一般的事実に鑑みれば、上述のような誤り訂正部２１０１は、多数のデータ列を処理対象とした場合に、データ列毎に要するシンドローム計算に必要な時間の合計にほぼ等しい時間で処理を完了するものであることが明らかである。
【０１２７】
以上、本発明に係るデータ入出力装置について、実施形態の１つである光ディスク読み取り装置に関して説明したが、本発明は、この実施形態に示した形態に限られないことは言うまでもない。即ち、
（１）実施形態では、光ディスク１０１０がＤＶＤ−ＲＯＭであるとしたが、ＣＤ−ＲＯＭ等の他の媒体であってもよい。さらに、光ディスク制御部２１００へのデータを入力する回路はフロントエンドプロセッサ１０４０であり、光ディスク制御部２１００からデータを受け取る装置はホストコンピュータ１０７０であるとしたが（図２参照）、光ディスク制御部２１００へデータを入力する回路はいかなる回路又は装置であってもよく、光ディスク制御部２１００からデータを受け取る装置もいかなる回路又は装置であってもよい。この場合、入力されるデータが変調されたものでなければディスクインタフェース部２１３０は復調を行う必要はない。
【０１２８】
即ち、本発明に係るデータ入出力装置についてのデータ入出力のインタフェースはＳＣＳＩその他どのようなものであってもよく、あらゆる場合においてデータ入出力装置は、入力されたデータに誤り訂正等の演算を施して出力する機能を提供する。例えば、データ入出力装置は、ホストコンピュータから転送された情報データを受け取り、当該データに誤り訂正のパリティデータを付加して、ディスクインターフェース経由で記憶メディアに情報データとパリティデータを書き込むものであってもよい。
（２）実施形態では、ＣＰＵ２１６０により実行されるプログラムは命令ＲＯＭ２１７０に格納していることとしたが、この限りではなく、プログラムは外部から供給されデータＲＡＭ２１８０に格納されることとしてもよい。
（３）実施形態では、誤り訂正はＣ１方向、Ｃ２方向、Ｃ１方向と行うこととしたが、これに限定されることはなく、例えばＣ１方向１回のみでもよい。また、実施形態では、符号化が積符号としてなされているものとしているが、これに限定されることはなく、別の符号化方法によって符号化された情報データであってもよく、この場合には当該符号化方法に対応した誤り訂正を行うこととすればよい。
（４）実施形態では、図１２に示すように、ディスクインタフェース部２１３０とメモリ２１１０との間のデータ転送の優先度が最も高く、ホストインタフェース部２１９０とメモリ２１１０との間のデータ転送の優先度が次に高いこととしていたが、これに限定されることはなく、ホストインタフェース部２１９０とメモリ２１１０との間のデータ転送の優先度が最も高く、ディスクインタフェース部２１３０とメモリ２１１０との間のデータ転送の優先度が次に高いこととしてもよい。これらはデータ入出力装置に入力するデータの転送速度の条件や演算処理後にデータ入出力装置から出力されるデータの転送速度の条件等のデータ入出力装置に対するインタフェースがどのように定められているか等の事情に応じて定めればよい。
（５）実施形態では、シンドローム計算回路２１４０と、チェン計算回路２１５０と、プログラムを実行するＣＰＵ２１６０とにより誤り訂正を行うこととしたが、誤り訂正を行うための回路構成はこの限りではない。
【０１２９】
例えば、チェン計算回路が行っているチェン計算をプログラムによりＣＰＵ２１６０に実行させることとしてもよい。この場合でも多数のデータ列に対して誤り訂正処理を行ったときには、データ列毎に要するシンドローム計算に必要な時間の合計にある程度近い時間で処理を完了する。
また、ユークリッド計算をハードウェア回路によって行うようにしてもよい。
【０１３０】
即ち、シンドローム計算を行う回路とシンドローム計算以後に必要な処理を行う回路とを並列動作可能とし、シンドローム計算の結果をキューに格納しするようにし、シンドローム計算以後に必要な処理を行う回路は当該キューに格納されたシンドローム計算結果に基づいて処理を行うことができる構成とするならば、誤り訂正の高速化という本発明の第２の目的を達成することができる。
【０１３１】
また、誤り訂正の高速化にはつながらないが、本発明の第１の目的を達成するための構成としては、シンドローム計算とチェン計算との両方をもプログラムによりＣＰＵ２１６０に実行させてもよい。
図１９は、シンドローム計算とチェン計算との両方をプログラムによりＣＰＵ２１６０に実行させる場合の光ディスク制御部７１００の構成図である。光ディスク制御部７１００は光ディスク制御部２１００とほとんど同じであり、同一の構成要素には同図中で同一符号を付している。
【０１３２】
この場合には、実施形態においてＣＰＵ２１６０がＤＭＡコントローラ２１２２の第２チャネルに情報を設定することによりメモリ２１１０からシンドローム計算回路２１４０にデータを転送させていたことに代えて、ＣＰＵ２１６０はＤＭＡコントローラ７１２２の第２チャネルにメモリ２１１０からデータＲＡＭ２１８０に１ブロック分のデータを転送するように情報を設定して、データＲＡＭ２１８０にデータを転送させて、このデータを対象としてシンドローム計算等をするようなプログラムが命令ＲＯＭ２１７０に格納されている必要がある。即ち、図４のフローチャートにおけるステップＳ３０５０の動作を、メモリからデータＲＡＭへの１ブロック分のデータ転送の指示に代え、ステップＳ３０９０とステップＳ３１００を削除した動作をＣＰＵ２１６０が行う。なお、ＣＰＵ２１６０はＣ１方向、Ｃ２方向、再度のＣ１方向のパリティに基づく誤り訂正をすべて完了した段階で、次のステップＳ３１１０の動作を行う。
【０１３３】
ここで、ＤＭＡコントローラ７１２２は、ＤＭＡコントローラ２１２２と同等の動作に加えて、第２チャネルのＤＭＡ転送においては、図１０に示したステップＳ４１１０の動作を８バイトのデータの転送毎に行うものである。
なお、光ディスク制御部７１００を図１９に示すものとした場合、複数の誤り訂正方式のうちのいずれかにより符号化されたデータを、命令ＲＯＭ２１７０に複数の誤り訂正方式に対応するプログラムを格納しておき、そのいずれかを選択して実行することにより、誤り訂正することができるので、ハードウェアの変更を伴わず複数の誤り訂正方式に対応できる。
【０１３４】
また、誤り訂正のための演算内容については実施形態で示したものに限定されない。即ち、実施形態では、誤り訂正のための誤り位置多項式及び誤り数値多項式を求めるためにはユークリッド法によることとしたが、他の方法によって誤り位置多項式及び誤り数値多項式を求めることとしてもよく、誤り位置多項式の根を求めるのにチェン検索と呼ばれる方法を用いることとしたが、他の方法で誤り位置多項式の根を求めてもよい。
（６）実施形態では、メモリ２１１０は１５ブロック分のデータを格納できる容量としたが、これに限定されることはなく、データを入力して誤り訂正等の演算を施してその後にデータを出力することを前提とし、前記演算を施すのに適当なまとまったサイズをｎバイトとすると、ｎバイトの２倍以上のメモリがあればよい。また、メモリ２１１０は光ディスク制御部２１００の外部に存在するものであってもよい。
【０１３５】
また、実施形態では、１ブロック分のデータは約３８ＫＢｙｔｅとしたが、この数値に限定されることはない。
（７）実施形態では、ＣＰＵ２１６０は、図７に示すメモリ管理情報を用いて所定の演算によりＤＭＡコントローラに設定するためのアドレスを取得することとしているが、ＤＭＡコントローラに設定するためのアドレスの記憶方法やメモリ２１１０の内容の管理方法はこれに限定されることはなく、例えば、データを入力すべきメモリ内のアドレスと、誤り訂正が可能なメモリ内のアドレスと、出力可能なデータのメモリ内のアドレスとをそれぞれ記憶し、これを参照・更新するような方式を用いてもよい。
（８）実施形態では、メモリと他の回路間でのデータのＤＭＡ転送については８バイト毎に、リクエストをチェックしつつ行うこととしたが（図９〜図１２参照）、この８バイトというサイズに限定されることはない。ディスクインタフェース部２１３０に入力されるデータの転送速度と、ホストインタフェース部２１９０から出力されるデータの転送速度とをそれぞれある値に保つ必要がある場合において、前記のＤＭＡ転送をする単位であるデータサイズを大きくすると、大きくするにつれてディスクインタフェース部２１３０とホストインタフェース部２１９０とは大きなサイズのＦＩＦＯを必要とするようになる。
【０１３６】
また、１データ列が８バイトで割り切れない場合は、余りのバイト数を最後に転送すればよい。
（９）実施形態では、シンドローム計算結果格納用キュー領域２１６６は、シンドローム計算の結果を１０個分格納できるキューとしたが、この１０個という数値に限定されることはなく、シンドローム計算に必要な時間、誤り訂正のための処理のうちシンドローム計算以外にかかる時間、誤りの発生率等に基づいて、キューを通常はあふれないような大きさとすればよい。
（１０）実施形態では、シンドローム計算回路２１４０は内部バッファを持ち、計算結果が上書きされることのないように処理時間等が調整されていることとしたが、例えば当該内部バッファをＦＩＦＯとしていてもよい。
（１１）実施形態における誤り訂正制御部の処理手順（図１５〜図１７のフローチャートの手順）等を機械語プログラムにより実現し、これを記録媒体に記録して流通・販売の対象にしても良い。このような記録媒体には、ＩＣカードや光ディスク、フロッピーディスク、ＲＯＭ等があるが、これらに記録された機械語プログラムは汎用のハードウェアにインストールされることにより利用に供される。ここでいう汎用ハードウェアは、一般のパーソナルコンピュータやプログラム実行能力を有する家電機器等であり、インストールした上記機械語プログラムを逐次実行して、前記誤り訂正制御部の機能を実現する。
【０１３７】
【発明の効果】
以上の説明から明らかなように、本発明に係るデータ入出力装置は、外部の第１装置から受け取ったデータについて演算をして外部の第２装置に出力するデータ入出力装置であって、第１装置から継続的にデータを受け取る入力手段と、与えられたデータについて演算を行う演算手段と、データを第２装置に出力する出力手段と、データを格納するための１つのメモリと、前記入力手段、前記演算手段及び前記出力手段と前記メモリとを接続するバスである１つのメモリバスと、前記入力手段を転送元とし、前記メモリを転送先とした第１ＤＭＡ転送を行う第１データ転送手段と、前記第１データ転送手段による第１バイト数分の第１ＤＭＡ転送が終了した場合に第１ＤＭＡ転送によりデータが格納された前記メモリ中の領域を転送元とし前記演算手段を転送先として前記演算手段に演算対象のデータを与えるための第２ＤＭＡ転送を行う第２データ転送手段と、前記演算手段による第１バイト数分のデータについての演算が終了した場合に当該データが格納されている前記メモリ中の領域を転送元とし前記出力手段を転送先とした第３ＤＭＡ転送を行う第３データ転送手段と、前記第１データ転送手段と前記第２データ転送手段と前記第３データ転送手段とが排他的にデータ転送を実行するよう制御するデータ転送制御手段とを備え、前記データ入出力装置における前記入力手段と前記演算手段と前記出力手段とは、並列にそれぞれの動作を実行することを特徴とする。
【０１３８】
これにより、上述の第１の目的を達成し、第１ＤＭＡ転送と第２ＤＭＡ転送と第３ＤＭＡ転送とをデータ転送制御手段により排他的に実行するので、継続的に入力されるデータを受け取り、当該データに演算を施した後に当該データを出力する一連の処理を１つのメモリのみを使用して行うことのできるデータ入出力装置が実現される。
【０１３９】
また、前記データ転送制御手段は、第２バイト数分のデータについての第１ＤＭＡ転送、第２ＤＭＡ転送又は第３ＤＭＡ転送の必要性が生じた場合に、前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段であって当該必要性が生じたデータ転送を行うものに、第２バイト数分のデータを連続して転送させ、第１ＤＭＡ転送、第２ＤＭＡ転送又は第３ＤＭＡ転送のうちの複数につきデータ転送の必要性が競合したときには、前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段であって当該必要性が生じたデータ転送を行うもののうち所定の優先度に基づいて定めたものに、第２バイト数分のデータを連続して転送させることとすることもできる。
【０１４０】
これにより、優先度に基づいてメモリアクセスが制御されるので、前記データ入出力装置に対し外部の装置からデータが送られてくる速度や、当該データ入出力装置からデータを受け取る外部の装置が要求する転送速度について、規格等により一定の速度が定められている場合に、これらの転送速度の要求に応えた制御を行うことができる。即ち、このような構成によれば、転送速度要求がなされているものの優先度を高く設定することにより、そのようなものについてのデータ転送の必要性に即応することができる。
【０１４１】
また、これにより、データ転送を第２バイト数分まとめて行うため、データ毎に換算した場合のメモリアクセス速度が向上し、上述のようなデータの転送速度についての要求に対応しやすくなる。
また、前記メモリは、ダイナミックメモリであり、第２バイト数は、前記メモリを転送先又は転送元として第２バイト数分のデータを連続してＤＭＡ転送する場合に１バイト当たりのメモリアクセスに要する時間をｔ秒とし、前記入力手段が第１装置から受け取るデータの平均転送速度をｖバイト／秒とし、あるデータにつき第２ＤＭＡ転送が必要な回数をｎとすると、ｔｖ（ｎ＋２）＜１を満たすように定めた数であることとすることもできる。
【０１４２】
これにより、継続的にデータが入力されても、メモリをオーバフローさせることがないデータ入出力装置が実現される。
また、前記入力手段は、第１装置から受け取ったデータを一時的に蓄積するための第１ＦＩＦＯを有し、前記出力手段は、第２装置に出力するデータを一時的に蓄積するための第２ＦＩＦＯを有し、前記第１データ転送手段は、前記入力手段中の第１ＦＩＦＯを第１ＤＭＡ転送の転送元とし、前記第３データ転送手段は、前記出力手段中の第２ＦＩＦＯを第３ＤＭＡ転送の転送先とし、第１ＤＭＡ転送の必要性は、第１ＦＩＦＯに第２バイト数分のデータが蓄積された場合に生じ、第３ＤＭＡ転送の必要性は、前記メモリ中に前記演算手段による演算が終了した第２バイト数分のデータが存在する場合であって、第２ＦＩＦＯに第２バイト数分のデータの空きが生じたときに生じることとすることもできる。
【０１４３】
これにより、あるデータ転送のためにメモリアクセスがなされていること等により、第１ＤＭＡ転送又は第３ＤＭＡ転送の必要性に即時に対応できない場合においても、ＦＩＦＯにより、入力されるデータを受け取り損なうことや出力するデータが途切れることを防止することができる。即ち、データ入出力装置に対し外部の装置から継続的にデータが送られてくる状況下で、当該データ入出力装置からデータを受け取る外部の装置が要求するデータの転送速度を確実に保証することができるデータ入出力装置が実現される。
【０１４４】
また、前記優先度は、前記第１データ転送手段による第１ＤＭＡ転送が最も高く、前記データ転送制御手段は、前記第１ＤＭＡ転送の必要性が生じた時に既に前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段のうちいずれかにＤＭＡ転送を実行させている場合には、実行中の第２バイト数分のＤＭＡ転送の終了後に前記第１データ転送手段に第１ＤＭＡ転送を実行させ、前記第１ＤＭＡ転送の必要性が生じた時に既に前記第１データ転送手段、前記第２データ転送手段又は前記第３データ転送手段のうちいずれかにＤＭＡ転送を実行させていない場合には、即時に前記第１データ転送手段に第１ＤＭＡ転送を実行させ、第２バイト数は、第１ＦＩＦＯの容量をｍバイトとし、前記メモリを転送先又は転送元として第２バイト数分のデータを連続してＤＭＡ転送する場合にメモリアクセスに要する時間をＴ秒とし、前記入力手段が第１装置から受け取るデータの平均転送速度をｖバイト／秒とすると、ｍ／ｖ＞Ｔを満たすように定めた数であることとすることもできる。
【０１４５】
これにより、データ入出力装置に継続的に送られてくるデータを即座にメモリに格納でき、データを受け取り損なうことのないデータ入出力装置が実現される。
また、前記優先度は、前記第１データ転送手段及び前記第３データ転送手段によるＤＭＡ転送よりも前記第２データ転送手段による第２ＤＭＡ転送の方が低く、前記データ転送制御手段は、第１ＤＭＡ転送の必要性及び第３ＤＭＡ転送の必要性の生じていない場合に限り第２データ転送手段に第２ＤＭＡ転送を実行させることとすることもできる。
【０１４６】
これにより、演算処理のためのＤＭＡ転送は、入力手段からメモリへのＤＭＡ転送と、メモリから出力手段へのＤＭＡ転送との合間に行われることとなるため、データ入力とデータ出力との双方のデータ転送速度が定まっている場合に対応しうるデータ入出力装置が実現される。
また、前記入力手段が第１装置から受け取るデータには誤り訂正符号が含まれ、前記演算は、誤り訂正であり、前記演算手段は、前記誤り訂正を行うために前記メモリにアクセスして前記誤り訂正符号に基づいて前記メモリ中に格納されているデータを参照及び更新し、前記データ転送制御手段はさらに、前記第１データ転送手段と前記第２データ転送手段と前記第３データ転送手段とがデータ転送を実行していない間に限り前記演算手段に誤り訂正のための前記メモリへのアクセスを許可することとすることもできる。
【０１４７】
これにより、入力されたデータについて誤り訂正を施して出力するデータ入出力装置が実現される。
また、前記第１装置は、光ディスクからデータを読み出す装置であり、前記光ディスクは、第２バイト数以上の数である第３バイト数毎に積符号による符号化がされたデータを記録しており、前記メモリは、第３バイト数の２倍以上のサイズであることとすることもできる。
【０１４８】
これにより、光ディスクから読み出したデータについて誤り訂正を施して出力するデータ入出力装置が実現される。
また、前記演算手段は、第４バイト数のデータが与えられると当該データに対応するシンドロームを算出するシンドローム計算処理を連続的に複数回行うシンドローム計算部と、複数のシンドロームを格納可能なキューであるシンドローム格納キューと、前記シンドローム計算部が算出したシンドロームを前記シンドローム格納キューに格納するシンドローム格納部と、前記シンドローム格納キューにシンドロームが１つ以上格納されている場合に当該シンドローム格納キューから１つのシンドロームを取り出し、取り出した当該シンドロームが０でないときのみに、当該シンドロームに基づき当該シンドロームに対応するデータの誤りを訂正する訂正部とを有し、前記演算手段における前記シンドローム計算部と前記訂正部とは、並行してそれぞれの動作を実行することとすることもできる。
【０１４９】
これにより、シンドローム計算を、シンドローム計算以外の誤り訂正処理と独立した実行速度で行うことができるようになるため、従来の誤り訂正の方式のようにシンドローム計算の実行速度をユークリッド計算の実行速度と統一する必要がなくなり、誤り訂正全体としての実行速度を高速化できるデータ入出力装置が実現される。
【０１５０】
即ち、シンドローム計算と、シンドローム計算以外の誤り訂正処理とを並行して実行することにより、誤り訂正全体に必要な時間は、シンドローム計算に必要な時間とほぼ等しくなり、高速な誤り訂正を行うデータ入出力装置が実現される。
従って、本発明は、これにより上述の第２の目的をも達成する。なお、このように第１の目的と第２の目的とをともに達成することにより、小型高速化に最適なデータ入出力装置が実現されることになる。
【０１５１】
また、前記訂正部は、前記シンドロームに基づき誤り位置多項式及び誤り数値多項式を求める多項式算出部と、前記多項式算出部が求めた誤り位置多項式の根である誤り位置を求める誤り位置算出部と、前記多項式算出部が求めた誤り数値多項式と、前記誤り位置算出部が求めた誤り位置とに基づき誤り数値を求め、これらに基づき前記メモリ中のデータを訂正するデータ訂正部とを含み、前記誤り位置算出部は、前記多項式算出部又はデータ訂正部と並行して動作を行うこととすることもできる。
【０１５２】
これにより、シンドローム計算以外の誤り訂正処理において、あるデータ列に対する誤り位置の算出と、別のデータ列に対する誤り位置多項式及び誤り数値多項式の算出とを同時に行うことができるため、誤り訂正全体に必要な時間は、シンドローム計算に必要な時間に一層近くなり、高速な誤り訂正を行うデータ入出力装置が実現される。
【０１５３】
また、上述の第２の目的を達成するために、本発明は、ブロック符号化された複数の受信語のそれぞれについて誤り訂正を連続して行う誤り訂正装置であって、受信語を逐次取得して当該受信語に基づき当該受信語に対応するシンドロームを算出するシンドローム計算処理を連続的に複数回行うシンドローム計算手段と、複数のシンドロームを格納可能なキューであるシンドローム格納キューと、前記シンドローム計算手段が算出したシンドロームを前記シンドローム格納キューに格納するシンドローム格納手段と、前記シンドローム格納キューにシンドロームが１つ以上格納されている場合に当該シンドローム格納キューから１つのシンドロームを取り出し、取り出した当該シンドロームが０でないときのみに、当該シンドロームに基づき当該シンドロームに対応する受信語の誤りを訂正する訂正手段とを備え、前記誤り訂正装置における前記シンドローム計算手段と前記訂正手段とは、並行してそれぞれの動作を実行することを特徴とする。
【０１５４】
これにより、シンドローム計算を、シンドローム計算以外の誤り訂正処理と独立した実行速度で行うことができるようになるため、従来の誤り訂正の方式のようにシンドローム計算の実行速度をユークリッド計算の実行速度と統一する必要がなくなり、同一データ列に対するシンドローム計算に必要な時間がユークリッド計算に必要な時間より長い場合であっても、誤り訂正全体としての実行速度を高速化できる誤り訂正装置が実現される。
【０１５５】
即ち、シンドローム計算と、シンドローム計算以外の誤り訂正処理とを並行して実行するので、誤り訂正全体に必要な時間は、シンドローム計算に必要な時間とほぼ等しくなり、高速な誤り訂正を行う誤り訂正装置が実現される。
また、前記誤り訂正装置はさらに、前記シンドローム計算手段が取得する受信語が複数格納されている受信語記憶手段を備え、前記訂正手段は、前記受信語記憶手段に格納されている受信語を更新することにより前記訂正を行うこととすることもできる。
【０１５６】
これにより、メモリ内に格納されている複数の受信語に対しての誤り訂正を高速に行える誤り訂正装置が実現される。
また、前記訂正手段は、前記シンドロームに基づき誤り位置多項式及び誤り数値多項式を求める多項式算出手段と、前記多項式算出手段が求めた誤り位置多項式の根である誤り位置を求める誤り位置算出手段と、前記多項式算出手段が求めた誤り数値多項式と、前記誤り位置算出手段が求めた誤り位置とに基づき誤り数値を求め、これらに基づき前記受信語中のデータを訂正するデータ訂正手段とを有し、前記誤り位置算出手段は、前記多項式算出手段又はデータ訂正手段と並行して動作を行うこととすることもできる。
【０１５７】
これにより、シンドローム計算以外の誤り訂正処理において、あるデータ列に対する誤り位置の算出と、別のデータ列に対する誤り位置多項式及び誤り数値多項式の算出とを同時に行うことができるため、誤り訂正全体に必要な時間は、シンドローム計算に必要な時間に一層近くなり、高速な誤り訂正を行う誤り訂正装置が実現される。
【図面の簡単な説明】
【図１】本発明の実施の形態である光ディスク読み取り装置の概略構成図である。
【図２】光ディスク制御部２１００の回路構成図である。
【図３】光ディスク制御部２１００におけるデータの流れを示す図である。
【図４】光ディスク制御部２１００の動作概要を示すフローチャートである。
【図５】光ディスク制御部２１００が複数ブロックのデータを処理する場合の各部の動作タイミングを示す図である。
【図６】メモリ２１１０の内部へのアクセスのイメージを示す概念図である。
【図７】メモリ管理情報のイメージを示す図である。
【図８】バス制御部２１２０の機能ブロック図である。
【図９】ディスクインタフェース部２１３０の動作の一部を示すフローチャートである。
【図１０】シンドローム計算回路２１４０の動作の一部を示すフローチャートである。
【図１１】ホストインタフェース部２１９０の動作の一部を示すフローチャートである。
【図１２】バス制御部２１２０の動作の一部を示すフローチャートである。
【図１３】メモリ２１１０を対象とするデータ転送のタイミングの例を示す図である。
【図１４】誤り訂正制御部に関する機能ブロック図である。
【図１５】誤り訂正制御部の通常動作を示すフローチャートである。
【図１６】第２チャネル転送終了割込処理を示すフローチャートである。
【図１７】チェン計算終了割込処理を示すフローチャートである。
【図１８】誤り訂正部２１０１内の各部の動作タイミングの例を示す図である。
【図１９】シンドローム計算とチェン計算との両方をプログラムによりＣＰＵ２１６０に実行させる場合の光ディスク制御部７１００の構成図である。
【図２０】従来の光ディスク読み取り装置の概略構成図である。
【図２１】従来の光ディスク制御部１１００の構成図である。
【図２２】誤り訂正符号の例を示す図である。
【図２３】従来の誤り訂正部１１５０の構成図である。
【図２４】従来の誤り訂正部１１５０における並列処理の様子を示す図である。
【符号の説明】
１０１０    光ディスク
１０２０    ピックアップ
１０３０    増幅器
１０４０    フロントエンドプロセッサ
１０５０    回転モータ
１０６０    サーボコントローラ
１０７０    ホストコンピュータ
１１５４    エラーデータ訂正回路
１１６０    ホストインタフェース部
２０００    光ディスク読み取り装置
２１００    光ディスク制御部
２１０１    誤り訂正部
２１１０    メモリ
２１２０    バス制御部
２１２１    バス調停部
２１２２    ＤＭＡコントローラ
２１２３    転送制御情報記憶部
２１２４    リクエスト受付部
２１３０    ディスクインタフェース部
２１４０    シンドローム計算回路
２１５０    チェン計算回路
２１６０    ＣＰＵ
２１６１    割込受付部
２１６２    制御部
２１６３    シンドローム計算結果取込部
２１６４    ユークリッド計算部
２１６５    チェン計算結果取込部
２１６６    シンドローム計算結果格納用キュー領域
２１６７    チェン計算起動部
２１６８    エラーデータ訂正部
２１６９    データ入出力部
２１７０    命令ＲＯＭ
２１８０    データＲＡＭ
２１９０    ホストインタフェース部
２２００    システム制御部
【図１】
0003968167.tif 000002
【図２】
0003968167.tif 000003
【図３】
0003968167.tif 000004
【図４】
0003968167.tif 000005
【図５】
0003968167.tif 000006
【図６】
0003968167.tif 000007
【図７】
0003968167.tif 000008
【図８】
0003968167.tif 000009
【図９】
0003968167.tif 000010
【図１０】
0003968167.tif 000011
【図１１】
0003968167.tif 000012
【図１２】
0003968167.tif 000013
【図１３】
0003968167.tif 000014
【図１４】
0003968167.tif 000015
【図１５】
0003968167.tif 000016
【図１６】
0003968167.tif 000017
【図１７】
0003968167.tif 000018
【図１８】
0003968167.tif 000019
【図１９】
0003968167.tif 000020
【図２０】
0003968167.tif 000021
【図２１】
0003968167.tif 000022
【図２２】
0003968167.tif 000023
【図２３】
0003968167.tif 000024
【図２４】
0003968167.tif 000025