以下に、各実施形態に係る符号化装置について説明する。理解を容易とするために、先ず、各実施形態の前提となる符号化装置について説明する。図1は、各実施形態の前提となる、既知の構成による符号化装置1の例を示す。符号化装置1は、符号化部10、出力選択部11およびパラメータ保持部12を有する。
符号化装置1において、符号化部10は、パラメータ保持部12に保持されるパラメータを用いて符号化対象データである入力データを所定単位毎に符号化して出力する。ここで、このパラメータは、符号化部10における符号化処理の特性を決定するための値である。符号化処理の特性は、符号化処理の動作を含む。符号化部10で入力データが符号化された符号化データは、出力データとして符号化装置1から出力される。
符号化部10は、例えば生成多項式を用い入力データを符号化する。この場合、パラメータは、生成多項式を表現する値となる。一例として、生成多項式における各次元の係数を、パラメータとして用いることができる。符号化部10が用いるパラメータを変更することで、符号化能力などの符号化部10の特性を変更することができる。
より詳細には、例えば、符号化部10が符号化処理に用いるパラメータが外部から供給され、例えばレジスタからなるパラメータ保持部12に保持される。符号化対象の入力データが符号化部10に入力されると共に、出力選択部11の一方の選択入力端に入力される。出力選択部11の他方の選択入力端には、符号化部10の出力が入力される。出力選択部11は、一方および他方の選択入力端を、符号化部10から供給される符号化処理完了信号に応じて切り替える。
図2は、符号化装置1の動作を示す一例のフローチャートである。符号化装置1が起動されると、例えば外部から供給されたパラメータがパラメータ保持部12に保持される(ステップS100)。次のステップS101で、入力データとしての符号化対象データが待機される。符号化対象データが符号化装置1に受信されると、次のステップS102で、符号化装置1は、受信した符号化対象データを符号化部10に供給すると共に、出力選択部11の一方の選択入力端に入力する。
符号化部10は、符号化対象データが供給されると、パラメータ保持部12に保持されるパラメータを用いて符号化対象データの符号化を行う(ステップS103)。一方、この段階では、出力選択部11では一方の選択入力端が選択されており、符号化対象データがそのまま出力データとして出力される(ステップS104)。
次のステップS105で、符号化装置1は、符号化対象データがまだ残っているか否か、すなわち、符号化部10において所定量の符号化対象データに対して符号化処理を行ったか否かを判定する。若し、所定量の符号化対象データに対する符号化処理が完了しておらず、符号化対象データがまだ残っていると判定した場合は、処理がステップS102に戻され、残りの符号化対象データに対する処理が繰り返される。
一方、ステップS105で、所定量の符号化対象データに対する符号化処理が完了し、符号化対象データが残っていないと判定した場合、処理がステップS106に移行される。ステップS106では、符号化部10は、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号を出力選択部11に対して出力する。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS101に戻される。
このようにして、符号化装置1では、符号化処理に際して、符号化対象データに対して符号化処理を施した符号化データと、符号化対象データとを出力する。
このような構成において、パラメータ保持部12がパラメータを保持している間に、例えば2次宇宙線などの影響によりパラメータ保持部12においてソフトエラーが発生した場合、符号化部10に適用されるパラメータが所期のものとは異なってしまう。この場合、符号化部10は、期待される符号化処理とは異なった処理を行うことになり、正しい符号化データを得ることができなくなる。
そこで、各実施形態においては、パラメータ保持部12に保持されるパラメータに対して誤り検出および誤り訂正処理を施し、ソフトエラーによる符号化部10の誤動作を防ぐ。
(第1の実施形態)
次に、第1の実施形態について説明する。図3は、本第1の実施形態に係る符号化装置2の一例の構成を示す。なお、図3において、上述した図1と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置2は、図1の符号化装置1と同様に符号化部10、出力選択部11およびパラメータ保持部12を有し、加えて、誤り符号生成部20と、誤り検出符号保持部21と、誤り検出部22と、誤り訂正部23と、パラメータ選択部24とを有する。
符号化部10における符号化処理の特性を決定するためのパラメータが、パラメータ保持部12に供給され保持されると共に、誤り検出符号生成部20に供給される。誤り検出符号生成部20は、供給されたパラメータに基づき、当該パラメータの誤りを少なくとも検出可能な誤り検出符号を生成する。このとき、誤り検出符号生成部20は、当該パラメータの誤りを検出すると共に、当該誤りを訂正する能力を持つ誤り検出・訂正符号を生成してもよい。
誤り検出符号生成部20で生成する誤り検出符号としては、例えばパリティビットやCRC(cyclic redundancy check)符号などが適用可能である。また、誤り訂正能力を持った誤り検出・訂正符号としては、例えばリード・ソロモン符号、BCH(Bose-Chaudhuri-Hocquenghem)符号、ハミング符号などを適用可能である。ここでは、誤り検出符号生成部20では、BCH符号を生成するものとする。また、以下では、特に記載のない限り、誤り検出符号と、誤り検出・訂正符号とを纏めて誤り検出符号と呼ぶ。
誤り検出符号生成部20で生成された誤り検出符号は、例えばレジスタからなる誤り検出符号保持部21に保持される。
誤り検出部22は、パラメータ保持部12に保持されるパラメータと、誤り検出符号保持部21に保持される誤り検出符号とを用いて、パラメータの誤りを検出する。誤り検出符号としてBCH符号を用いたこの例では、誤り検出部22は、誤り検出符号保持部21に保持される誤り検出符号と、パラメータ保持部12に保持されるパラメータとを用いてシンドロームを計算する。そして、計算されたシンドロームの値が全て「0」であれば、パラメータおよび誤り検出符号に誤りが無いと判定する。一方、求めたシンドロームの値のうち1つでも「0」ではない値が存在する場合、パラメータおよび誤り検出符号のうち少なくとも一方に誤りが有ると判定する。誤り検出部22は、誤り検出結果を、誤り検出信号として出力し、パラメータ選択部24に供給する。
誤り訂正部23は、パラメータ保持部12に保持されるパラメータと、誤り検出符号保持部21に保持される誤り検出符号とを用いて、パラメータの誤りを訂正する。誤り検出符号としてBCH符号を用いたこの例では、誤り訂正部23は、誤り検出符号保持部21に保持される誤り検出符号と、パラメータ保持部12に保持されるパラメータとを用いてシンドロームを計算する。誤り訂正部23は、誤り検出部22から、上述したシンドローム計算の結果を受け取ってもよい。そして、計算されたシンドロームの値に基づきパラメータ中の誤り位置を求め、誤り位置のビット値を反転させて誤り訂正を行う。
パラメータ選択部24は、一方の選択入力端に対してパラメータ保持部12の出力が入力され、他方の選択入力端に対して誤り訂正部23の誤り訂正出力が入力される。パラメータ選択部24は、誤り検出部22から供給される誤り検出信号に応じて、これら一方および他方の選択入力端のうち一方を選択する。パラメータ選択部24の出力が、符号化部10に供給される。
なお、符号化部10は、例えば生成多項式G(x)を用いた符号化を行う構成を適用できる。一例として、符号化部10は、生成多項式G(x)の最大次数の個数分のレジスタを有し、生成多項式G(x)の各次元において係数が「1」となっている次元のレジスタの入力にXOR(排他的論理和)回路を配してなる。各XOR回路の一方および他方の入力に対し、それぞれレジスタの出力と、入力データとが供給される。入力データと、次元数が「1」のレジスタの直前のレジスタの出力とのXOR演算の結果が、当該次元数が「1」のレジスタに入力されて、入力データが例えばクロックに従い各レジスタおよびXOR回路を巡回する。各レジスタから、符号化出力が取り出される。
このような構成の場合、生成多項式G(x)の各次元の係数が、符号化部10の特性を決定するパラメータとなる。例えば、符号化部10が有する全てのレジスタの入力に対してXOR回路をそれぞれ配し、各XOR回路の有効/無効をパラメータに基づき設定する。これにより、符号化部10をパラメータに応じて構成できる。
図4−1は、本第1の実施形態による符号化装置2の動作を示す一例のフローチャートである。符号化装置2が起動されると、例えば外部からパラメータが供給され(ステップS110)、次のステップS111で、供給されたパラメータがパラメータ保持部12に保持される。このとき、パラメータ保持部12に保持したパラメータを、さらに符号化部10に供給してもよい。また、パラメータは、誤り検出符号生成部20にも供給される。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に供給し、保持させる(ステップS112)。
次のステップS113で、符号化装置2は、符号化対象データが入力データとして入力されるのを待機し、符号化対象データが受信されると、次のステップS114で、受信した符号化対象データを符号化部10に供給すると共に、出力選択部11の一方の選択入力端に入力する。
次のステップS115で、誤り検出部22が、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータの誤り検出を行う。誤り検出部22は、誤り検出の結果に基づき、ステップS116で、パラメータに誤りがあるか否かを判定する。
若し、パラメータに誤りが無いと判定した場合、誤り検出部22は、パラメータに誤りが無い旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理をステップS117に移行させる。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、パラメータ保持部12が接続される一方の選択入力端が選択される。ステップS117では、パラメータ保持部12に保持されたパラメータが、パラメータ選択部24を介して符号化部10に供給される。
一方、ステップS116で、パラメータに誤りが有ると判定した場合、誤り検出部22は、パラメータに誤りが有る旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理がステップS118に移行させる。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、誤り訂正部23の出力が接続される他方の選択入力端が選択される。ステップS118では、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータの誤りが訂正される。誤りが訂正された訂正済みパラメータは、パラメータ選択部24を介して符号化部10に供給される。
ステップS117またはステップS118の処理が終了すると、処理がステップS119に移行される。ステップS119では、符号化部10により、パラメータ選択部24から供給されたパラメータを用いて、ステップS114で供給された符号化対象データの符号化処理が行われる。この段階では、出力選択部11では一方の選択入力端が選択されており、符号化対象データがそのまま出力データとして出力される(ステップS120)。
次のステップS121で、符号化装置2は、符号化対象データがまだ残っているか否か、すなわち、所定量の符号化対象データに対して符号化処理を行ったか否かを判定する。若し、所定量の符号化対象データに対する符号化処理が完了しておらず、符号化対象データがまだ残っていると判定した場合は、処理がステップS114に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS121で、所定量の符号化対象データに対する符号化処理が完了し、符号化対象データが残っていないと判定した場合、処理がステップS122に移行される。ステップS122では、符号化部10は、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号を出力選択部11に対して出力する。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から、符号化部10の出力が接続される他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS113に戻される。
このようにして、符号化装置2では、符号化処理に際して、符号化対象データに対して符号化処理を施した符号化データと、符号化対象データとを出力することができる。このとき、符号化部10が符号化処理に用いるパラメータの誤り検出を行い、誤りが有る場合には当該パラメータに対して誤り訂正を行って、符号化部10に供給している。そのため、パラメータ保持部12に保持されるパラメータにソフトエラーなどにより誤りが発生していても、正しく符号化を行うことができる。
(第1の実施形態の第1の変形例)
次に、第1の実施形態の第1の変形例について説明する。上述の図4−1のフローチャートでは、ステップS114〜ステップS121の処理が順次に実行されるように示されているが、これはこの例に限定されない。一例として、符号化部10に上述した生成多項式G(x)を用いた場合について考える。この場合、ステップS114の符号化対象データの入力と、ステップS119の符号化処理とが並行して行われる。すなわち、クロック毎に1ビットずつ入力された符号化対象データが(ステップS114)、生成多項式G(x)の最大次元に対応する個数の各レジスタに対して、順次シフトされて格納される。また、各レジスタに格納されるデータは、クロック毎に、符号化された出力データとして取り出される(ステップS119)。さらに、ステップS115、ステップS116およびステップS118の、パラメータの誤り検出および誤り訂正処理を、符号化対象データの入力および符号化処理と並行して実行することができる。
このように、各処理が並行して実行される構成においては、ステップS116でパラメータに誤りが検出された場合に、符号化部10において誤ったパラメータのまま、意図しない動作で符号化処理が行われてしまうことになる。本第1の実施形態の第1の変形例では、ステップS116でパラメータに誤りが検出された場合に符号化部10における符号化処理を一時的に停止させる。
図4−2は、本第1の実施形態の第1の変形例による符号化装置2の動作を示す一例のフローチャートである。なお、図4−2のフローチャートにおいて、上述した図4−1のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。図4−2のフローチャートでは、上述の図4−1のフローチャートに対して、ステップS118の前後に、符号化処理を中断させるステップS118aと、中断した符号化処理を再開させるステップS118bとが追加されている。
より具体的に説明する。ステップS116でパラメータに誤りが有ると判定した場合、誤り検出部22は、パラメータに誤りが有る旨を示す検出信号をパラメータ選択部24に対して出力し、処理をステップS118aに移行させる。ステップS118aで、例えば誤り検出部22は、符号化部10に対して符号化処理の一時的な停止を指示する。より具体的には、誤り検出部22は、例えば符号化部10に対してイネーブル信号などの制御信号を出力し(図示しない)、符号化部10における符号化処理を一時的に停止させる。これに限らず、符号化部10に対するクロックを停止させるなど、他の方法を用いて符号化部10における符号化処理を停止させてもよい。
ステップS118aで符号化部10における符号化処理が停止されると、処理がステップS118に移行される。ステップS118では、上述と同様にして、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータの誤りが訂正され、訂正済みパラメータがパラメータ選択部24を介して符号化部10に供給される。
ステップS118で誤り訂正された訂正済みパラメータが符号化部10に供給されると、処理がステップS118bに移行される。ステップS118bでは、例えば誤り検出部22により、符号化部10に対して符号化処理の再開が指示される。例えば、誤り検出部22は、符号化部10に対して、符号化処理を再開させるための制御信号を出力する。符号化部10に対する誤り訂正処理の再開が指示されると、処理がステップS119に移行され、符号化部10における符号化処理が再開される。
(第1の実施形態の第2の変形例)
次に、第1の実施形態の第2の変形例について説明する。例えば、所定量の符号化データが連続して出力される必要がある場合に、上述した第1の実施形態の第1の変形例では、符号化処理の一時停止および再開により符号化データが一時的に途切れ、不具合が生じる可能性がある。そこで、本第2の変形例では、ステップS116においてパラメータに誤りが検出されたと判定した場合に、符号化部10における符号化処理をやり直す。
図4−3は、本第1の実施形態の第2の変形例による符号化装置2の動作を示す一例のフローチャートである。なお、図4−3のフローチャートにおいて、上述した図4−1のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。図4−3のフローチャートでは、上述の図4−1のフローチャートに対して、ステップS118の後に、符号化対象データの再供給を要求するステップS118cを設け、その後、処理をステップS113に戻している。
より具体的に説明する。ステップS116でパラメータに誤りが有ると判定した場合、誤り検出部22は、パラメータに誤りが有る旨を示す検出信号をパラメータ選択部24に対して出力し、処理をステップS118に移行させる。ステップS118では、上述と同様にして、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータの誤りが訂正され、訂正済みパラメータがパラメータ選択部24を介して符号化部10に供給される。
ステップS118でのパラメータに対する誤り訂正処理が完了すると、処理がステップS118cに移行される。ステップS118cでは、例えば誤り訂正部23から符号化対象データの供給元(ホスト装置)に対して、符号化対象データの再供給が要求される。例えば、符号化処理が所定サイズのデータブロック単位で行われる場合において、この符号化対象データブロックの符号化の途中で、ステップS116によりパラメータに誤りが検出された際には、当該符号化対象データブロックを再供給するように、誤り訂正部23からホスト装置に対してこの要求がなされる。
ステップS118cで符号化対象データの再供給が要求されると、処理がステップS113に戻されて、要求した符号化対象データの入力が待機される。
このように、第1の実施形態の第2の変形例では、符号化部10で用いるパラメータに誤りが検出された場合に、パラメータの誤りを訂正すると共に、誤りが検出された時点で符号化処理が行われている符号化対象データの再供給を要求している。そのため、所定サイズの符号化対象データブロック単位で符号化データが必要な場合に、不具合が発生するのを防ぐことができる。
一例として、符号化部10で符号化され、出力選択部11から出力された符号化データがNANDフラッシュメモリに書き込まれる場合について考える。周知のように、NANDフラッシュメモリは、所定サイズのブロック単位でデータの書き込みを行う必要がある。そのため、少なくとも符号化対象データブロック分の符号化データは、出力選択部11から連続して、すなわち、間を空けずに出力されなければならない。
この第1の実施形態の第2の変形例によれば、パラメータに誤りが検出された場合に、誤りが検出された時点での符号化対象データブロックに対する符号化処理をやり直すため、ブロック単位での連続した符号化データの出力が可能である。したがって、この第1の実施形態の第2の変形例による符号化装置2は、全体をNANDフラッシュメモリのコントローラの一部として使用するような場合に用いて好適である。
(第2の実施形態)
次に、第2の実施形態について説明する。図5は、本第2の実施形態に係る符号化装置3の一例の構成を示す。なお、図5において、上述した図3と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置3は、構成要素に関しては、図3を用いて説明した符号化装置2と共通である。
本第2の実施形態の符号化装置3は、誤り訂正部23でパラメータの誤りを訂正した訂正済みパラメータをパラメータ保持部12に供給し、既にパラメータ保持部12に保持されているパラメータに対して上書きして保持する。同様に、符号化装置3は、誤り訂正部23で誤り検出符号の誤りを検出した訂正済み検出符号を誤り検出符号保持部21に供給し、既に誤り検出符号保持部21に保持されている誤り検出符号に対して上書きして保持する。
図6は、本第2の実施形態による符号化装置3の動作を示す一例のフローチャートである。符号化装置3が起動されると、例えば外部からパラメータが供給され(ステップS130)、次のステップS131で、供給されたパラメータがパラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に保持させる(ステップS132)。
次のステップS133で、符号化部10は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップS134で、受信した符号化対象データが符号化部10に供給されると共に、出力選択部11の一方の選択入力端に入力される。
次のステップS135で、誤り検出部22が、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータについて誤り検出を行う。誤り検出部22は、誤り検出の結果に基づき、ステップS136で、誤りが検出されたか否かを判定する。
若し、誤りが検出されなかったと判定した場合、誤り検出部22は、誤りが無い旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理をステップS137に移行させる。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、パラメータ保持部12の出力が接続される一方の選択入力端が選択される。ステップS137では、パラメータ保持部12に保持されたパラメータが、パラメータ選択部24を介して符号化部10に供給される。
一方、ステップS136で、誤りが検出されたと判定した場合、誤り検出部22は、処理をステップS138に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部24に対して出力する。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、誤り訂正部23の出力が接続される他方の選択入力端が選択される。
ステップS138では、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータおよび誤り検出符号保持部21に保持される誤り検出符号に対して誤り訂正処理が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部24を介して符号化部10に供給されると共に、パラメータ保持部12に供給され、パラメータ保持部12に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部21に供給され、誤り検出符号保持部21に既に保持されている誤り検出符号に対して上書きして保持される。
ステップS137またはステップS138の処理が終了すると、処理がステップS139に移行される。ステップS139では、符号化部10により、パラメータ選択部24から供給されたパラメータを用いて、ステップS134で供給された符号化対象データの符号化処理が行われる。この段階では、出力選択部11では一方の選択入力端が選択されており、符号化対象データがそのまま出力データとして出力される(ステップS140)。
次のステップS141で、符号化装置3は、符号化対象データがまだ残っているか否か、すなわち、所定量の符号化対象データに対して符号化処理を行ったか否かを判定する。若し、所定量の符号化対象データに対する符号化処理が完了しておらず、符号化対象データがまだ残っていると判定した場合は、処理がステップS134に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS141で、所定量の符号化対象データに対する符号化処理が完了し、符号化対象データが残っていないと判定した場合、処理がステップS142に移行される。ステップS142では、符号化部10は、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号を出力選択部11に対して出力する。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS133に戻される。
このようにして、符号化装置3では、符号化部10が符号化処理に用いるパラメータの誤り検出を行い、誤りが有る場合には当該パラメータに対して誤り訂正を行って符号化部10に供給している。それと共に、符号化装置3では、パラメータ保持部12に保持されるパラメータに誤りが検出される毎に当該パラメータの誤り訂正を行い、誤りが訂正されたパラメータでパラメータ保持部12に保持されるパラメータを上書きするようにしている。そのため、パラメータ保持部12に保持されるパラメータにソフトエラーが発生していても、正しく符号化を行うことができると共に、より高い信頼性を実現することができる。
なお、本第2の実施形態においても、ステップS136でパラメータに誤りが検出された場合に、上述の第1の実施形態の第1の変形例で説明したように、ステップS138のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。同様に、ステップS136でパラメータに誤りが検出された場合に、上述の第1の実施形態の第2の変形例で説明したように、ステップS138のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップS133で符号化対象データの入力を待機する処理を適用することができる。
(第3の実施形態)
次に、第3の実施形態について説明する。図7は、本第3の実施形態に係る符号化装置4の一例の構成を示す。なお、図7において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置4は、構成要素に関しては、図5を用いて説明した符号化装置3とほぼ共通である。
符号化装置4は、符号化装置3に対して、誤り訂正部23から誤り訂正不能通知を出力する機能が追加されている。すなわち、符号化装置4において、誤り訂正部23のパラメータおよび誤り検出符号に対する誤り訂正処理において、当該パラメータおよび誤り検出符号に、誤り検出符号(誤り検出・訂正符号)が持つ誤り訂正能力を超える誤りが存在する場合に、当該パラメータおよび誤り検出符号の誤り訂正が不能であるとして、その旨示す誤り訂正不能通知を外部に出力する。
図8は、本第3の実施形態による符号化装置4の動作を示す一例のフローチャートである。この図8のフローチャートにおけるステップS158およびステップS160の処理以外は、図6のフローチャートによる各処理と同等である。すなわち、符号化装置4が起動されると、外部から供給されたパラメータ(ステップS150)がパラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される(ステップS151)。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に保持させる(ステップS152)。
次のステップS153で、符号化装置4は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップS154で、受信した符号化対象データを符号化部10に供給すると共に、出力選択部11の一方の選択入力端に入力する。
次のステップS155で、誤り検出部22が、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する(ステップS156)。
若し、誤りが検出されなかったと判定した場合、誤り検出部22は、誤りが無い旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理をステップS157に移行させる。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、パラメータ保持部12が接続される一方の選択入力端が選択される。ステップS157では、パラメータ保持部12に保持されたパラメータが、パラメータ選択部24を介して符号化部10に供給される。
一方、ステップS156で、誤りが検出されたと判定した場合、誤り検出部22は、処理をステップS158に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部24に対して出力する。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、誤り訂正部23が接続される他方の選択入力端が選択される。
ステップS158で、誤り訂正部23は、ステップS155の誤り検出部22による誤り検出結果に基づき、検出された誤りが誤り検出符号(誤り検出・訂正符号)の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。
若し、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正可能であると判定した場合、処理がステップS159に移行される。ステップS159では、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータと、当該誤り検出符号とに対して誤り訂正処理が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部24を介して符号化部10に供給されると共に、パラメータ保持部12に供給され、パラメータ保持部12に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部21に供給され、誤り検出符号保持部21に既に保持されている誤り検出符号に対して上書きして保持される。
ステップS157またはステップS159の処理が終了すると、処理がステップS161に移行される、符号化部10により、パラメータ選択部24から供給されたパラメータを用いて、ステップS154で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部11では一方の選択入力端が選択されているため、符号化対象データがそのまま出力データとして出力される(ステップS162)。
次のステップS163で、符号化装置4は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップS154に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS163で、符号化対象データが残っていないと判定した場合、処理がステップS164に移行され、符号化部10により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部11に対して出力される。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS153に戻される。
一方、上述のステップS158において、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップS160に移行される。ステップS160で、誤り訂正部23は、誤り訂正が不能であることを示す誤り訂正不能通知を外部に出力する。そして、この図8のフローチャートによる一連の処理を終了させる。例えば、ステップS160で誤り訂正不能通知が出力された時点で符号化部10における符号化処理を終了させ、符号化データを符号化装置4から出力しないようにする。
このようにして、符号化装置4では、符号化部10が符号化処理に用いるパラメータの誤り検出および誤り訂正を行って符号化部10に供給すると共に、パラメータに誤りが検出される毎に当該パラメータの誤り訂正を行い、誤りが訂正されたパラメータでパラメータ保持部12に保持されるパラメータを上書きするようにしている。そのため、ソフトエラーに対処できると共に、より高い信頼性を実現することができる。
さらに、パラメータ保持部12に保持されるパラメータに対する誤り検出の結果、誤り検出符号の持つ誤り訂正能力を超えて誤りが検出された場合に、外部にその旨を通知するようにしているため、誤った符号化処理を回避することができる。
なお、本第3の実施形態においても、ステップS156でパラメータに誤りが検出された場合に、上述の第1の実施形態の第1の変形例で説明したように、ステップS159のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。同様に、ステップS156でパラメータに誤りが検出された場合に、上述の第1の実施形態の第2の変形例で説明したように、ステップS159のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップS153で符号化対象データの入力を待機する処理を適用することができる。
(第4の実施形態)
次に、第4の実施形態について説明する。図9は、本第4の実施形態に係る符号化装置5の一例の構成を示す。なお、図9において、上述した図7と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置5は、上述の符号化装置4において、誤り検出符号としてハミング符号を用いた例である。すなわち、符号化装置5は、図7の符号化装置4の誤り検出符号生成部20および誤り検出符号保持部21をそれぞれハミング符号生成部30およびハミング符号保持部31に置き換えている。また、誤り検出部22は、ハミング符号を用いた誤り検出を行う誤り検出部32と置き換え、同様に、誤り訂正部23は、ハミング符号を用いた誤り訂正を行う誤り訂正部33と置き換えている。
図9において、符号化部10が符号化処理に用いるパラメータがパラメータ保持部12に供給され保持されると共に、ハミング符号生成部30に供給される。ハミング符号生成部30は、供給されたパラメータからハミング符号による符号を生成する。生成された符号は、例えばレジスタからなるハミング符号保持部31に供給され、保持される。この符号とパラメータとにより、ハミング符号が構成される。
誤り検出部32は、パラメータ保持部12に保持されるパラメータと、ハミング符号保持部31に保持される符号とを用いて、誤り検出を行う。誤り検出部32は、ハミング符号保持部31に保持される符号と、パラメータ保持部12に保持されるパラメータとを用いてシンドロームを計算する。そして、計算されたシンドロームの値が全て「0」であれば、パラメータおよび符号に誤りが無いと判定する。一方、求めたシンドロームの値のうち1つでも「0」ではない値が存在する場合、パラメータまたは符号のうち少なくとも一方に誤りが有ると判定する。誤り検出部32は、誤り検出結果を、誤り検出信号として出力し、パラメータ選択部24に供給する。
誤り訂正部33は、パラメータ保持部12に保持されるパラメータと、ハミング符号保持部31に保持される符号とを用いて、誤り訂正を行う。誤り訂正部33は、ハミング符号保持部31に保持される符号と、パラメータ保持部12に保持されるパラメータとを用いて、シンドロームを計算する。誤り訂正部33は、誤り検出部32から、上述したシンドローム計算の結果を受け取ってもよい。そして、計算されたシンドロームの値に基づき誤りが1ビットであれば、誤り位置を特定して誤り位置のビット値を反転させて誤り訂正を行う。
一方、誤りが2ビット以上である場合には、ハミング符号の誤り訂正能力を超えているため、誤り訂正を行うことができない。この場合、誤り訂正部33は、誤り訂正が不能であることを示す誤り訂正不能通知を出力する。
図10は、本第4の実施形態による符号化装置5の動作を示す一例のフローチャートである。この図10のフローチャートは、誤り検出をハミング符号を用いて行っている点以外は、図8のフローチャートによる各処理と同等である。すなわち、符号化装置5が起動されると、外部から供給されたパラメータ(ステップS170)がパラメータ保持部12に保持されると共に、ハミング符号生成部30に供給される(ステップS171)。ハミング符号生成部30は、供給されたパラメータからハミング符号による符号を生成し、生成した符号をハミング符号保持部31に保持させる(ステップS172)。
次のステップS173で、符号化部10は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップS174で、受信した符号化対象データが符号化部10に供給されると共に、出力選択部11の一方の選択入力端に入力される。
次のステップS175で、誤り検出部32が、ハミング符号保持部21に保持される符号と、パラメータ保持部12に保持されるパラメータとを用いて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する(ステップS176)。
若し、誤りが検出されなかったと判定した場合、誤り検出部32は、誤りが無い旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理をステップS177に移行させる。パラメータ選択部24では、誤り検出部32から供給された誤り検出信号に応じて、一方の選択入力端が選択される。ステップS177では、パラメータ保持部12に保持されたパラメータが、パラメータ選択部24を介して符号化部10に供給される。
一方、ステップS176で、誤りが検出されたと判定した場合、誤り検出部32は、処理をステップS178に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部24に対して出力する。パラメータ選択部24では、誤り検出部32から供給された誤り検出信号に応じて、他方の選択入力端が選択される。
ステップS178で、誤り訂正部33は、ステップS175の誤り検出部32による誤り検出結果に基づき、検出された誤りが、ハミング符号の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。より具体的には、誤り訂正部33は、検出された誤りが1ビットの誤りであるか否かを判定する。
若し、検出された誤りが1ビットの誤りであれば、誤りを訂正可能であるので、誤り訂正部33は、処理をステップS179に移行させる。ステップS179では、誤り訂正部33は、シンドロームの値に基づき誤りビットを特定して、特定されたビットの値を反転させて誤りを訂正する。誤りが訂正された訂正済みパラメータは、パラメータ選択部24を介して符号化部10に供給されると共に、パラメータ保持部12に供給され、パラメータ保持部12に既に保持されているパラメータに対して上書きして保持される。また、誤りが訂正された訂正済み符号をハミング符号保持部31に供給し、ハミング符号保持部31に既に保持されている符号に対して上書きして保持する。
ステップS177またはステップS179の処理が終了すると、処理がステップS181に移行される、符号化部10により、パラメータ選択部24から供給されたパラメータを用いて、ステップS174で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部11において一方の選択入力端が選択されているので、符号化対象データがそのまま出力データとして出力される(ステップS182)。
次のステップS183で、符号化部10は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップS174に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS183で、符号化対象データが残っていないと判定した場合、処理がステップS184に移行され、符号化部10により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部11に対して出力される。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS173に戻される。
一方、上述のステップS178において、検出された誤りが2ビット以上の誤りであって、ハミング符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップS180に移行される。ステップS180で、誤り訂正部33は、誤り訂正が不能であることを示す誤り訂正不能通知を外部に出力する。そして、この図10のフローチャートによる一連の処理を終了させる。例えば、ステップS180で誤り訂正不能通知が出力された時点で符号化部10における符号化処理を終了させ、符号化データを符号化装置5から出力しないようにする。
このようにして、符号化装置5では、符号化部10が符号化処理に用いるパラメータの誤り検出および誤り訂正をハミング符号を用いて行っている。ハミング符号による誤り検出部32および誤り訂正部33は、それぞれ組み合わせ回路のみで構成可能である。そのため、誤りが検出され、検出された誤りが誤り訂正可能な場合、誤りが検出されたサイクルと同一サイクルで誤り訂正が行われ、符号化部10における符号化処理を一時停止させることなく継続させることができる。
図11は、組み合わせ回路を用いて誤り検出部32および誤り訂正部33を構成した例を示す。図11において、図9の各部と対応する部分には、同一の符号を付して示している。図11は、データが4ビット、ハミング符号による符号、すなわち、誤り訂正用の冗長ビットが3ビット、全体の符号長が7ビットになるハミング(7,4)符号に対応した構成例を示している。
パラメータ保持部12は、それぞれ1ビットを格納する4のレジスタを有し、4ビットのパラメータの各ビットが各レジスタに格納される。ハミング符号保持部31も同様に、それぞれ1ビットを格納する3のレジスタを有し、3ビットの冗長ビットの各ビットが各レジスタに格納される。
誤り検出部32は、それぞれ4入力の3のXOR回路2001〜2003と、各XOR回路2001〜2003の出力が反転されてそれぞれ入力される3入力のOR回路203とを有する。各XOR回路2001〜2003は、4の入力がそれぞれパラメータ保持部12および誤り検出符号保持部31の各ビットに所定に接続され、シンドロームビットS0、S1およびS2を出力する。
また、OR回路203の出力が誤り検出信号として取り出される。すなわち、シンドロームビットS0、S1およびS2が全て値「0」のときに、OR回路203の出力が値「0」となり、誤りが検出されなかったことが示される。一方、シンドロームビットS0、S1およびS2のうち少なくとも1が値「1」のときにOR回路203の出力が値「1」となり、誤りが検出されたことが示される。
誤り訂正部33は、それぞれ2入力の7のXOR回路2021〜2027と、それぞれ3入力の7のAND回路2011〜2017とを有する。AND回路2011〜2017は、2以下の各組み合わせで反転される3の入力が、各XOR回路2001〜2003の出力にそれぞれ接続される。各AND回路2011〜2017の出力e0、e1、…、e6において、誤りが1ビットの場合の誤り位置に対応する出力が値「1」となる。
各XOR回路2021〜2027は、パラメータ保持部12の各ビット、ならびに、ハミング符号保持部31の各ビットと、AND回路2011〜2017の各出力とのXOR演算を行う。各XOR回路2021〜2027において、パラメータ保持部12の各ビット、ならびに、ハミング符号保持部31の各ビットのうち、各AND回路2011〜2017のうち出力が値「1」のビットが反転されて誤り訂正される。
各XOR回路2021〜2027から、誤りが訂正されたパラメータおよび誤り符号が出力される。訂正済みパラメータは、符号化部10に供給される。また、各XOR回路2021〜2027の出力が、それぞれパラメータ保持部12およびハミング符号保持部31の各ビットに格納され、パラメータ保持部12およびハミング符号保持部31の保持内容に対する誤り訂正も行われる。
このように、誤り検出および誤り訂正をハミング符号を用いて行う場合、誤り検出部32および誤り訂正部33を、AND回路、インバータ、XOR回路といった組み合わせ回路のみで構成することができる。周知のように、組み合わせ回路では、入力の状態に応じて出力が決まるので、誤り検出および誤り訂正、ならびに、誤り検出信号の出力をほぼ同時に実行することができる。
(第5の実施形態)
次に、第5の実施形態について説明する。図12は、本第5の実施形態に係る符号化装置6の一例の構成を示す。なお、図12において、上述した図7と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置6は、構成要素に関しては、図7を用いて説明した符号化装置4と略共通である。
符号化装置6は、誤り訂正部23から出力される誤り訂正不能通知を、パラメータ保持部12にパラメータを供給するパラメータ供給元40に対して送信する。すなわち、図12に例示されるように、パラメータ供給元40は、誤り訂正不能通知受信部41を有し、誤り訂正部23から出力された誤り訂正不能通知は、この誤り訂正不能通知受信部41に受信される。
パラメータ供給元40は、誤り訂正不能通知受信部41に誤り訂正不能通知が受信されると、符号化装置6に対して、符号化部10が符号化処理を行う際に用いるパラメータを送信する。このパラメータは、パラメータ保持部12に供給され、既に保持されているパラメータに対して上書きされて保持される。換言すれば、パラメータ保持部12に保持されるパラメータが、パラメータ供給元40から送信されるパラメータによって初期化される。
同様に、パラメータ供給元40から符号化装置6に送信されたパラメータは、誤り検出符号生成部20にも供給される。誤り検出符号生成部20は、パラメータ供給元40から送信されたパラメータに基づき誤り検出符号を生成する。生成されたこの誤り検出符号は、誤り検出符号保持部21に供給され、既に誤り検出符号保持部21に保持される誤り検出符号に対して上書きして保持される。換言すれば、誤り検出符号保持部21に保持される誤り検出符号が、パラメータ供給元40から送信されるパラメータに基づき初期化される。
また、パラメータ供給元40は、誤り訂正不能通知受信部41に誤り訂正不能通知が受信されると、符号化装置6に対して、符号化制御信号を送信する。この符号化制御信号は、符号化部10に供給される。符号化部10は、この符号化制御信号が供給されると、符号化処理を停止させる。
図13は、本第5の実施形態による符号化装置6の動作を示す一例のフローチャートである。符号化装置6が起動されると、パラメータ供給元40から、符号化部10が符号化処理を行う際に用いるパラメータが符号化装置6に供給される(ステップS200)。パラメータ供給元40から供給されたこのパラメータは、パラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される(ステップS201)。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に保持させる(ステップS202)。
次のステップS203で、符号化装置6は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップS204で、受信した符号化対象データを符号化部10に供給すると共に、出力選択部11の一方の選択入力端に入力する。
次のステップS205で、誤り検出部22が、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する(ステップS206)。
若し、誤りが検出されなかったと判定した場合、誤り検出部22は、誤りが無い旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理をステップS207に移行させる。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、一方の選択入力端が選択される。ステップS207では、パラメータ保持部12に保持されたパラメータが、パラメータ選択部24を介して符号化部10に供給される。
一方、ステップS206で、誤りが検出されたと判定した場合、誤り検出部22は、処理をステップS208に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部24に対して出力する。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、他方の選択入力端が選択される。
ステップS208で、誤り訂正部23は、ステップS205の誤り検出部22による誤り検出結果に基づき、検出された誤りが誤り検出符号(誤り検出・訂正符号)の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。
若し、上述のステップS208において、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップS209に移行される。ステップS209で、誤り訂正部23は、誤り訂正が不能であることを示す誤り訂正不能通知を出力する。
誤り訂正部23から出力された誤り訂正不能通知は、パラメータ供給元40の誤り訂正不能通知受信部41に受信される(ステップS210)。パラメータ供給元40は、誤り訂正不能通知受信部41に誤り訂正不能通知が受信されると、符号化部10による符号化処理を一時的に停止させる符号化制御信号を出力する。この符号化制御信号は、符号化装置6に受信され、符号化部10に入力される。符号化部10は、符号化制御信号が入力されると、符号化処理を一時的に停止する。
次のステップS211で、パラメータ供給元40から符号化装置6対して、符号化部10が符号化処理に用いるためのパラメータが送信される。このパラメータは、パラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される(ステップS212)。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に保持させる(ステップS213)。
パラメータ供給元40は、符号化装置6に対してパラメータを送信した後、符号化部10による符号化処理の再開を指示する符号化制御信号を出力する(ステップS214)。パラメータ供給元40は、パラメータ保持部12や誤り検出符号生成部20から、パラメータの受信を示す通知を受け取ってから、この符号化制御信号を出力するようにしてもよい。符号化部10は、この符号化制御信号を受信すると、符号化処理を再開させる。符号化処理が再開されると、処理が上述したステップS207に移行される。
一方、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正可能であると判定した場合、処理がステップS215に移行される。ステップS215では、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータと、当該誤り検出符号とに対する誤り訂正が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部24を介して符号化部10に供給されると共に、パラメータ保持部12に供給され、パラメータ保持部12に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部21に供給され、誤り検出符号保持部21に既に保持されている誤り検出符号に対して上書きして保持される。
ステップS214またはステップS215の処理が終了すると、処理がステップS216に移行される、符号化部10により、パラメータ選択部24から供給されたパラメータを用いて、ステップS204で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部11において一方の選択入力端が選択されているため、符号化対象データがそのまま出力データとして出力される(ステップS217)。
次のステップS218で、符号化装置6は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップS204に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS218で、符号化対象データが残っていないと判定した場合、処理がステップS219に移行され、符号化部10により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部11に対して出力される。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS203に戻される。
このように、符号化装置6は、誤り検出され誤り訂正不能な場合であっても、パラメータ保持部12に保持されるパラメータを初期化できるため、より信頼性が向上される。
なお、本第5の実施形態においても、ステップS206でパラメータに誤りが検出された場合に、上述の第1の実施形態の第1の変形例で説明したように、ステップS215のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。同様に、ステップS206でパラメータに誤りが検出された場合に、上述の第1の実施形態の第2の変形例で説明したように、ステップS215のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップS203で符号化対象データの入力を待機する処理を適用することができる。
(第5の実施形態の変形例)
なお、ここでは、誤り訂正能力を持つ誤り検出符号を用いた例について説明したが、これはこの例に限定されない。本第5の実施形態の変形例は、パリティビットやCRC符号といった、誤り訂正能力を持たない誤り検出符号を用いた場合の例である。この場合、誤り検出符号を用いてパラメータの誤り検出を行った結果、誤りが検出された場合、符号化処理を一時的に停止させると共にパラメータ供給元からパラメータを供給させ、パラメータ保持部12に保持されるパラメータを初期化して符号化処理を再開させる。
図14は、本第5の実施形態の変形例による符号化装置6’の一例の構成を示す。なお、図14において、上述の図12と共通する部分については同一の符号を付して、詳細な説明を省略する。符号化装置6’は、誤り訂正を行わないため、上述の符号化装置6における誤り訂正に関連する部分である、誤り訂正部23およびパラメータ選択部24が省略されている。また、図14では、上述した図12における誤り訂正不能通知部41が、誤り検出通知受信部41’に変更されている。
すなわち、符号化装置6’において、パラメータ保持部12に保持されるパラメータは、直接的に符号化部10に供給される。また、誤り検出部22は、パラメータ保持部12に保持されるパラメータに対して、誤り検出符号保持部21に保持される誤り検出符号を用いて誤り検出を行い、誤りが検出された場合は、誤り検出通知をパラメータ供給元40に送信する。
パラメータ供給元40は、誤り検出通知が誤り検出通知受信部41’に受信されると、符号化部10における符号化処理を一時的に停止させるための符号化制御信号と、パラメータとを符号化装置6’に送信する。
図15は、本第5の実施形態の変形例による符号化装置6’の動作を示す一例のフローチャートである。符号化装置6’が起動されると、パラメータ供給元40から、符号化部10が符号化処理を行う際に用いるパラメータが符号化装置6に供給され(ステップS300)、パラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される(ステップS301)。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成して誤り検出符号保持部21に保持させる(ステップS302)。
次のステップS303で、符号化部10は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップS304で、受信した符号化対象データが符号化部10に供給されると共に、出力選択部11の一方の選択入力端に入力される。
次のステップS305で、誤り検出部22が、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、パラメータに誤りがあるか否かを判定する(ステップS306)。若し、パラメータに誤りが無いと判定した場合、処理がステップS307に移行され、パラメータ保持部12に保持されたパラメータが符号化部10に供給される。
一方、ステップS306で、パラメータに誤りが有ると判定した場合、誤り検出部22は、処理をステップS320に移行させ、誤りが検出されたことを示す誤り検出通知を出力する。誤り検出部22から出力されたこの誤り検出通知は、パラメータ供給元40の誤り検出通知受信部41’に受信される。
パラメータ供給元40は、誤り検出通知受信部41’に誤り検出通知が受信されると、符号化部10による符号化処理を一時的に停止させる符号化制御信号を出力する。この符号化制御信号は、符号化装置6に入力され、符号化部10に供給される。符号化部10は、符号化制御信号を受信すると、符号化処理を一時的に停止する(ステップS321)。
次のステップS322で、パラメータ供給元40から符号化装置6’に対して、符号化部10が符号化処理に用いるためのパラメータが送信される。このパラメータは、パラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される(ステップS323)。若し、パラメータ保持部12に保持されているパラメータに誤りが存在していた場合、この誤りは、パラメータ供給元40から供給されたパラメータで、パラメータ保持部12に保持されるパラメータを上書きすることで訂正されることになる。
また、誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に保持させる(ステップS324)。若し、誤り検出符号保持部21に保持されている検出符号に誤りが存在していた場合、この誤りは、パラメータ供給元40から供給されたパラメータから生成した検出符号で、誤り検出符号保持部21に保持される検出符号を上書きすることで訂正されることになる。
パラメータ供給元40は、符号化装置6’に対してパラメータを送信した後、符号化部10による符号化処理の再開を指示する符号化制御信号を出力する(ステップS325)。パラメータ供給元40は、パラメータ保持部12や誤り検出符号生成部20から、パラメータの受信を示す通知を受け取ってから、この符号化制御信号を出力するようにしてもよい。符号化部10は、この符号化制御信号を受信すると、符号化処理を再開させる。
符号化処理が再開されると、処理が上述したステップS307に移行され、パラメータ保持部12に保持されたパラメータが符号化部10に供給される。
ステップS307でパラメータが符号化部10に供給されると、処理がステップS308に移行される。ステップS308では、符号化部10により、パラメータ保持部12から供給されたパラメータを用いて、ステップS304で供給された符号化対象データの符号化処理が行われる。このとき、符号化対象データがそのまま出力データとして出力される(ステップS309)。
次のステップS310で、符号化装置6’は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップS304に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS310で、符号化対象データが残っていないと判定した場合、処理がステップS311に移行され、符号化部10により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部11に対して出力される。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。その後、処理がステップS303に戻される。
このように、符号化装置6’は、誤り検出の結果、誤りが検出された場合にパラメータ保持部12に保持されるパラメータを初期化できるため、簡易な構成で高い信頼性が得られる。
(第6の実施形態)
次に、第6の実施形態について説明する。本第6の実施形態は、上述した第1〜第5の実施形態による各符号化装置2〜6のうち何れか1の出力選択部11の出力に対して記憶素子を接続し、出力選択部11から出力された符号化対象データおよび符号化データを、この記憶素子に記憶させるようにしたメモリシステムの例である。
図16は、第6の実施形態によるメモリシステムの一例の構成を示す。この図16は、図7を用いて説明した符号化装置4に対して記憶素子50を接続して構成したメモリシステムの例が示されている。このメモリシステムは、例えば、情報処理装置などの外部機器から供給されたデータを記憶素子50に記憶させると共に、当該データに対して符号化処理を行い、この符号化処理により生成された符号化データを当該データと対応付けて記憶素子50に記憶させる。なお、図16において、図7と共通する部分には同一の符号を付して、詳細な説明を省略する。
出力選択部11の出力に、記憶素子50が接続される。出力選択部11から出力された符号化対象データおよび符号化データが記憶素子50に記憶される。出力選択部11の出力に接続される記憶素子50の種類は、データの書き込みが可能な素子であれば、特に限定されない。例えば、DRAM(Dynamic Random Access Memory)やNAND型フラッシュメモリといった半導体メモリを記憶素子50として用いることができる。
図17は、本第6の実施形態によるメモリシステムの動作を示す一例のフローチャートである。この図17のフローチャートに示す各処理は、ステップS243およびステップS244の、出力選択部11から出力される符号化データまたは符号化対象データを記憶素子50に記憶させる処理以外は、図8のフローチャートを用いて説明した、符号化装置4の動作における各処理と略同一である。
図17において、メモリシステムが起動されると、外部から供給されたパラメータ(ステップS230)がパラメータ保持部12に保持されると共に、誤り検出符号生成部20に供給される(ステップS231)。誤り検出符号生成部20は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部21に保持させる(ステップS232)。
次のステップS233で、符号化装置4は、例えば外部の情報処理装置から入力データとして供給される符号化対象データを待機し、符号化対象データが受信されると、次のステップS234で、受信した符号化対象データが符号化部10に供給されると共に、出力選択部11の一方の選択入力端に入力される。
次のステップS235で、誤り検出部22が、誤り検出符号保持部21に保持される誤り検出符号を用いて、パラメータ保持部12に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する(ステップS236)。
若し、誤りが検出されなかったと判定した場合、誤り検出部22は、誤りが無い旨を示す誤り検出信号をパラメータ選択部24に対して出力し、処理をステップS237に移行させる。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、一方の選択入力端が選択される。ステップS237では、パラメータ保持部12に保持されたパラメータが、パラメータ選択部24を介して符号化部10に供給される。
一方、ステップS236で、誤りが検出されたと判定した場合、誤り検出部22は、処理をステップS238に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部24に対して出力する。パラメータ選択部24では、誤り検出部22から供給された誤り検出信号に応じて、他方の選択入力端が選択される。
ステップS238で、誤り訂正部23は、ステップS235の誤り検出部22による誤り検出結果に基づき、検出された誤りが誤り検出符号(誤り検出・訂正符号)の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。
若し、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正可能であると判定した場合、処理がステップS239に移行される。ステップS239では、誤り訂正部23により、誤り検出符号保持部21に保持される誤り検出符号と、パラメータ保持部12に保持されるパラメータとを用いて誤り訂正が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部24を介して符号化部10に供給されると共に、パラメータ保持部12に供給され、パラメータ保持部12に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部21に供給され、誤り検出符号保持部21に既に保持されているパラメータに対して上書きして保持される。
ステップS237またはステップS239の処理が終了すると、処理がステップS241に移行される、符号化部10により、パラメータ選択部24から供給されたパラメータを用いて、ステップS234で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部11では一方の選択入力端が選択されており、出力選択部11から、符号化対象データがそのまま出力データとして出力される(ステップS242)。この出力選択部11から出力された符号化対象データは、記憶素子50に供給され、記憶される。
次のステップS244で、符号化装置4は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップS234に戻され、残りの符号化対象データに対して繰り返して処理を行う。
一方、ステップS244で、符号化対象データが残っていないと判定した場合、処理がステップS245に移行され、符号化部10により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部11に対して出力される。出力選択部11は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部10で符号化対象データを符号化した符号化データは、出力データとして出力選択部11から出力される。出力選択部11から出力された符号化データは、記憶素子50に供給され、記憶される。その後、処理がステップS233に戻される。
一方、上述のステップS238において、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップS240に移行される。ステップS240で、誤り訂正部23は、誤り訂正が不能であることを示す誤り訂正不能通知を外部、例えば符号化対象データの供給元の情報処理装置に対して出力する。そして、この図17のフローチャートによる一連の処理を終了させる。例えば、ステップS240で誤り訂正不能通知が出力された時点で符号化部10における符号化処理を終了させ、符号化データを符号化装置4から出力しないようにする。
このように、本第6の実施形態によるメモリシステムでは、符号化部10が符号化処理に用いるパラメータの誤り検出および誤り訂正を行って符号化部10に供給すると共に、パラメータに誤りが検出される毎に当該パラメータの誤り訂正を行い、誤りが訂正されたパラメータでパラメータ保持部12に保持されるパラメータを上書きするようにしている。そのため、符号化データの信頼性が高まり、記憶素子50に記憶されるデータの信頼性も向上できる。
なお、本第6の実施形態においても、ステップS236でパラメータに誤りが検出された場合に、上述の第1の実施形態の第1の変形例で説明したように、ステップS239のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。
同様に、ステップS236でパラメータに誤りが検出された場合に、上述の第1の実施形態の第2の変形例で説明したように、ステップS239のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップS233で符号化対象データの入力を待機する処理を適用することができる。これは、記憶素子50が例えばNANDフラッシュメモリである場合に、特に好ましい。
(第7の実施形態)
次に、第7の実施形態について説明する。本第7の実施形態は、符号化部10に生成多項式を適用した場合のより具体的な符号化装置の例である。先ず、図18を用いて、生成多項式を適用した符号化装置100について原理的に説明する。図18は、生成多項式G(x)をx8+x7+x6+x4+1とした場合の符号化装置100の一例の構成を示す。
符号化装置100は、生成多項式G(x)の最大次数(この例では8次)の個数分のレジスタ1101、1102、…、1108と、生成多項式G(x)の各次元において、係数が「1」となっている次元のレジスタの入力に配置されるXOR回路1111、1112、1113および1114とを有し、循環構造を持ったシフトレジスタを構成する。符号化対象データは、ビット毎にXOR回路112に入力されてレジスタ1108の出力とでXOR演算されて、XOR回路1114、1113、1112および1111にそれぞれ入力され、各レジスタ1101、1102、…、1108を循環される。
各レジスタ1101、1102、…、1108には、符号化途中結果の値が格納される。所定量の符号化対象データが入力されることで、各レジスタ1101、1102、…、1108から符号化出力が取り出される。
この符号化装置100は、各レジスタ1101、1102、…、1108と、各XOR回路1111、1112、1113および1114との関係が、生成多項式G(x)に従い固定され、生成多項式G(x)=x8+x7+x6+x4+1に専用の構成となっている。したがって、他の生成多項式G(x)に対応する符号化装置が必要な場合には、別途、回路を用意する必要がある。
図19は、本第7の実施形態による符号化装置120の一例の構成を示す。この符号化装置120は、パラメータの設定により異なる生成多項式G(x)を実現することができると共に、パラメータに対する誤り検出および誤り訂正を行うことができる。なお、ここでは、符号化装置120は、BCH符号の符号化を行う最大次数が「8」の符号化装置であるものとする。
図19において、符号化装置120は、レジスタ設定回路130と、誤り検出・訂正回路131と、符号化部300と、パラメータ保持部301と、パラメータ選択部302と、誤り検出符号保持部303とを有する。これらのうち、誤り検出・訂正回路131は、例えば図3の誤り検出部22の機能と誤り訂正部23の機能とを併せ持つ。符号化部300、パラメータ保持部301、パラメータ選択部302および誤り検出符号保持部303は、それぞれ、例えば図3の符号化部10、パラメータ保持部12、パラメータ選択部24および誤り検出符号保持部21に対応する。
符号化部300は、それぞれ対応可能な最大次数の個数分(この例では8個)のレジスタ1360、1361、…、1367と、これら各レジスタ1360、1361、…、1367の間にそれぞれ配置されるXOR回路1371、1372、…、1378と、XOR回路1378を除く各XOR回路1371、1372、…、1377の有効/無効を設定するAND回路1351、1352、…、1357とを有し、循環構造を持ったシフトレジスタを構成する。
符号化対象データは、XOR回路1378に入力されてレジスタ1367の出力とでXOR演算されて各AND回路1351、1352、…、1357の一方の入力端にそれぞれ供給される。各AND回路1351、1352、…、1357の出力が各XOR回路1371、1372、…、1377に供給される。このとき、各AND回路1351、1352、…、1357のうち、他方の入力端に値「0」が入力されたAND回路の出力が入力されるXOR回路は、無効とされ、入力値がそのまま出力に現れる。符号化対象データは、XOR回路1378、ならびに、XOR回路1371、1372、…、1377のうち有効とされているXOR回路で、直前のレジスタの出力とXOR演算がなされ、各レジスタ1360、1361、…、1367を循環される。
各レジスタ1360、1361、…、1367には、符号化途中結果の値が格納される。所定量の符号化対象データが入力されることで、各レジスタ1360、1361、…、1367から符号化データが取り出される。
パラメータ保持部301は、それぞれ次数に対応する最大次数の個数分より1少ない(最大次数が8のこの例では7個になる)のレジスタ1331、1332、…、1337を有する。また、誤り検出符号保持部303は、誤り検出符号の各ビットを格納する複数のレジスタ1321、1322、…、1325を有する。
レジスタ設定回路130は、パラメータ保持部301の各レジスタ1331、1332、…、1337に格納する各パラメータを生成する。また、レジスタ設定回路130は、誤り検出符号生成部を有し、この各パラメータから誤り検出符号を生成する。レジスタ設定回路130で生成された各パラメータは、各レジスタ1331、1332、…、1337に格納される。また、レジスタ設定回路130で生成された各誤り検出符号は、各レジスタ1321、1322、…、1325に格納される。
パラメータ選択部302は、最大次数の個数分より1少ない数のセレクタ1341、1342、…、1347を有する。各セレクタ1341、1342、…、1347は、一方の選択入力端に対して各レジスタ1331、1332、…、1337の出力がそれぞれ接続される。また、他方の選択入力端に対して、誤り検出・訂正部131から出力された、各次数に対応する訂正済みパラメータがそれぞれ入力される。
符号化部300において、各XOR回路1371、1372、…、1377の一方の入力端には各AND回路1351、1352、…、1357の出力が接続される。なお、最大次数に対応するXOR回路1378は、常に有効である必要があるため、AND回路は接続されない。さらに、各AND回路1351、1352、…、1357の一方の入力端には、XOR回路1378の出力が接続されて符号化対象データが入力され、他方の入力端にはそれぞれセレクタ1341、1342、…、1347の出力が接続される。各セレクタ1341、1342、…、1347は、レジスタ1331、1332、…、1337に格納されたパラメータと、誤り検出・訂正回路131からそれぞれ供給された訂正済みパラメータとのうち何れを用いるかを選択する。
この構成によれば、各セレクタ1341、1342、…、1347の出力に応じて、各XOR回路1371、1372、…、1377の有効/無効を切り替えることができ、生成多項式G(x)の構成を変更することが可能となる。したがって、各レジスタ1331、1332、…、1337に格納された値をパラメータとして、生成多項式G(x)の構成を決定できる。例えば、各レジスタ1331、1332、…、1337には値「0」または値「1」が格納され、値「1」が格納されるレジスタに対応する次元の項からなる生成多項式が構成される。
一方、誤り検出・訂正回路131は、パラメータ保持部301の各レジスタ1331、1332、…、1337に格納された各パラメータと、各レジスタ1321、1322、…、1325に格納された各誤り検出符号とを用いて誤り検出および誤り訂正を行う。誤り訂正された訂正済みパラメータおよび訂正済み検出符号は、レジスタ設定回路130を介して、各レジスタ1331、1332、…、1337、ならびに、各レジスタ1321、1322、…、1325に供給され、上書き保持される。
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。