(57)【特許請求の範囲】
【請求項１】
パラメータを保持するパラメータ保持部と、
前記パラメータから生成した誤り検出符号を保持する誤り検出符号保持部と、
前記誤り検出符号保持部に保持される前記誤り検出符号を用いて前記パラメータ保持部に保持されるパラメータの誤りを検出する誤り検出部と、
前記誤り検出部で検出された前記誤りを訂正する誤り訂正部と、
前記誤り訂正部で誤りを訂正されたパラメータを用いてデータを符号化する符号化部と
を有する
ことを特徴とする符号化装置。
【請求項２】
前記誤り検出部は、
前記誤り検出符号を用いてシンドロームを計算して前記誤りを検出し、
前記誤り訂正部は、
前記誤り検出部で計算された前記シンドロームを用いて誤り位置を特定し、特定された該誤り位置に対応する値を反転させることで誤りを訂正する
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記パラメータは、パラメータ供給部から供給されて前記パラメータ保持部に保持され、
前記誤り訂正部は、
前記誤り検出部で前記誤りが検出された場合に、前記パラメータ供給部にパラメータを要求し、要求に応じて得られたパラメータを前記パラメータ保持部に保持させることで前記パラメータの誤りを訂正する
ことを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記誤り訂正部は、
前記誤りを訂正したパラメータを前記パラメータ保持部に保持させる
ことを特徴とする請求項１に記載の符号化装置。
【請求項５】
前記誤り訂正部の誤り訂正能力を超える前記誤りが存在する場合に、誤り訂正不能である旨を通知する通知部をさらに有する
ことを特徴とする請求項１に記載の符号化装置。
【請求項６】
前記パラメータは、パラメータ供給部から供給されて前記パラメータ保持部に保持され、
前記通知部は、
前記パラメータ供給部に対して前記誤り訂正不能である旨を通知する
ことを特徴とする請求項５に記載の符号化装置。
【請求項７】
前記誤り訂正部は、組み合わせ回路により構成され、
前記誤り検出部で前記誤りが検出された場合に、前記符号化部による符号化処理を一時停止することなく継続させる
ことを特徴とする請求項１に記載の符号化装置。
【請求項８】
前記請求項１乃至請求項７の何れか１項に記載の符号化装置と、
前記符号化部により符号化された前記データを記憶する記憶素子と
を有する
ことを特徴とする記憶装置。
【請求項９】
誤り検出部が、パラメータ保持部に保持されるパラメータから生成され誤り検出符号保持部に保持される誤り検出符号を用いて該パラメータ保持部に保持されるパラメータの誤りを検出する誤り検出ステップと、
誤り訂正部が、前記誤り検出ステップにより検出された前記誤りを訂正する誤り訂正ステップと、
符号化部が、前記誤り訂正ステップにより誤りを訂正されたパラメータを用いてデータを符号化する符号化ステップと
を有する
ことを特徴とする符号化装置の制御方法。
【請求項１０】
パラメータを保持するパラメータ保持部と、
前記パラメータから生成した誤り検出符号を保持する誤り検出符号保持部と、
前記誤り検出符号保持部に保持される前記誤り検出符号を用いて前記パラメータ保持部に保持されるパラメータの誤りを検出する誤り検出部と、
前記誤り検出部で前記誤りが検出された場合に、前記誤りを訂正する誤り訂正部と、
前記誤り検出部で前記誤りが検出された場合には、前記誤り訂正部で誤りを訂正されたパラメータを選択し、前記誤り検出部で前記誤りが検出されない場合に、前記パラメータ保持部が保持するパラメータを選択する選択部と、
前記選択部で選択されたパラメータを用いてデータを符号化する符号化部と
を有する
ことを特徴とする符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、符号化装置および符号化装置の制御方法、ならびに、記憶装置
に関する。
【背景技術】
【０００２】
メモリ、無線通信、衛星放送、光ディスクなど情報処理に関する様々な分野では、システム全体の信頼性を向上させるために、誤り検出や誤り訂正が可能な符号化技術が採用されている。このような符号化技術としては、リード・ソロモン符号、ＢＣＨ(Bose-Chaudhuri-Hocquenghem)符号、畳み込み符号、ＬＤＰＣ(Low-Density  Parity-Check)符号などが知られている。例えば半導体メモリを用いたメモリシステムにおいては、半導体プロセスの微細化や積層技術の採用に伴い、誤り発生率が顕著になってきており、上述したような符号化技術を適用することにより、メモリシステム全体の信頼性向上を図っている。
【０００３】
このような符号化処理を行う符号化装置において、誤り訂正能力など装置の特性を決定するパラメータを保持するレジスタを設けることで、要求される特性に応じた符号化装置を容易に提供することができ、有用である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許３９５３３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、符号化装置の特性を決定するパラメータをレジスタなどに保持する場合、レジスタにソフトエラーが発生して保持されているパラメータの値が変化してしまうと、符号化処理に誤りが生じ、システムが正常に動作しなくなるという問題点があった。
【０００６】
本発明が解決しようとする課題は、装置の特性を決定するパラメータを保持する場合において、保持されるパラメータが意図せず変化した場合の誤動作を防ぐことが可能な符号化装置および符号化方法を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態の符号化装置は、パラメータ保持部に保持されるパラメータから生成され誤り検出符号保持部に保持される誤り検出符号を用いて該パラメータ保持部に保持されるパラメータの誤りを検出し、検出された誤りを訂正する。符号化部が、誤りを訂正されたパラメータを用いてデータを符号化する。
【図面の簡単な説明】
【０００８】
【図１】既知の構成の符号化装置例を示すブロック図。
【図２】既知の構成の符号化装置の動作例のフローチャート。
【図３】第１の実施形態に係る符号化装置の構成例を示すブロック図。
【図４−１】第１の実施形態による符号化装置の動作例のフローチャート。
【図４−２】第１の実施形態の第１変形例の符号化装置の動作例のフローチャート。
【図４−３】第１の実施形態の第２変形例の符号化装置の動作例のフローチャート。
【図５】第２の実施形態に係る符号化装置の構成例を示すブロック図。
【図６】第２の実施形態による符号化装置の動作例のフローチャート。
【図７】第３の実施形態に係る符号化装置の構成例を示すブロック図。
【図８】第３の実施形態による符号化装置の動作例のフローチャート。
【図９】第４の実施形態に係る符号化装置の構成例を示すブロック図。
【図１０】第４の実施形態による符号化装置の動作例のフローチャート。
【図１１】組み合わせ回路を用いた誤り検出部および誤り訂正部の例を示す図。
【図１２】第５の実施形態に係る符号化装置の構成例を示すブロック図。
【図１３】第５の実施形態による符号化装置の動作例のフローチャート。
【図１４】第５の実施形態の変形例の符号化装置の構成例を示すブロック図。
【図１５】第５の実施形態の変形例の符号化装置の動作例のフローチャート。
【図１６】第６の実施形態によるメモリシステムの構成例を示すブロック図。
【図１７】第６の実施形態によるメモリシステムの動作例のフローチャート。
【図１８】生成多項式を適用した符号化装置を原理的を示す略線図。
【図１９】第７の実施形態による符号化装置の構成例を示すブロック図。
【発明を実施するための形態】
【０００９】
以下に、各実施形態に係る符号化装置について説明する。理解を容易とするために、先ず、各実施形態の前提となる符号化装置について説明する。図１は、各実施形態の前提となる、既知の構成による符号化装置１の例を示す。符号化装置１は、符号化部１０、出力選択部１１およびパラメータ保持部１２を有する。
【００１０】
符号化装置１において、符号化部１０は、パラメータ保持部１２に保持されるパラメータを用いて符号化対象データである入力データを所定単位毎に符号化して出力する。ここで、このパラメータは、符号化部１０における符号化処理の特性を決定するための値である。符号化処理の特性は、符号化処理の動作を含む。符号化部１０で入力データが符号化された符号化データは、出力データとして符号化装置１から出力される。
【００１１】
符号化部１０は、例えば生成多項式を用い入力データを符号化する。この場合、パラメータは、生成多項式を表現する値となる。一例として、生成多項式における各次元の係数を、パラメータとして用いることができる。符号化部１０が用いるパラメータを変更することで、符号化能力などの符号化部１０の特性を変更することができる。
【００１２】
より詳細には、例えば、符号化部１０が符号化処理に用いるパラメータが外部から供給され、例えばレジスタからなるパラメータ保持部１２に保持される。符号化対象の入力データが符号化部１０に入力されると共に、出力選択部１１の一方の選択入力端に入力される。出力選択部１１の他方の選択入力端には、符号化部１０の出力が入力される。出力選択部１１は、一方および他方の選択入力端を、符号化部１０から供給される符号化処理完了信号に応じて切り替える。
【００１３】
図２は、符号化装置１の動作を示す一例のフローチャートである。符号化装置１が起動されると、例えば外部から供給されたパラメータがパラメータ保持部１２に保持される（ステップＳ１００）。次のステップＳ１０１で、入力データとしての符号化対象データが待機される。符号化対象データが符号化装置１に受信されると、次のステップＳ１０２で、符号化装置１は、受信した符号化対象データを符号化部１０に供給すると共に、出力選択部１１の一方の選択入力端に入力する。
【００１４】
符号化部１０は、符号化対象データが供給されると、パラメータ保持部１２に保持されるパラメータを用いて符号化対象データの符号化を行う（ステップＳ１０３）。一方、この段階では、出力選択部１１では一方の選択入力端が選択されており、符号化対象データがそのまま出力データとして出力される（ステップＳ１０４）。
【００１５】
次のステップＳ１０５で、符号化装置１は、符号化対象データがまだ残っているか否か、すなわち、符号化部１０において所定量の符号化対象データに対して符号化処理を行ったか否かを判定する。若し、所定量の符号化対象データに対する符号化処理が完了しておらず、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ１０２に戻され、残りの符号化対象データに対する処理が繰り返される。
【００１６】
一方、ステップＳ１０５で、所定量の符号化対象データに対する符号化処理が完了し、符号化対象データが残っていないと判定した場合、処理がステップＳ１０６に移行される。ステップＳ１０６では、符号化部１０は、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号を出力選択部１１に対して出力する。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ１０１に戻される。
【００１７】
このようにして、符号化装置１では、符号化処理に際して、符号化対象データに対して符号化処理を施した符号化データと、符号化対象データとを出力する。
【００１８】
このような構成において、パラメータ保持部１２がパラメータを保持している間に、例えば２次宇宙線などの影響によりパラメータ保持部１２においてソフトエラーが発生した場合、符号化部１０に適用されるパラメータが所期のものとは異なってしまう。この場合、符号化部１０は、期待される符号化処理とは異なった処理を行うことになり、正しい符号化データを得ることができなくなる。
【００１９】
そこで、各実施形態においては、パラメータ保持部１２に保持されるパラメータに対して誤り検出および誤り訂正処理を施し、ソフトエラーによる符号化部１０の誤動作を防ぐ。
【００２０】
（第１の実施形態）
次に、第１の実施形態について説明する。図３は、本第１の実施形態に係る符号化装置２の一例の構成を示す。なお、図３において、上述した図１と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置２は、図１の符号化装置１と同様に符号化部１０、出力選択部１１およびパラメータ保持部１２を有し、加えて、誤り符号生成部２０と、誤り検出符号保持部２１と、誤り検出部２２と、誤り訂正部２３と、パラメータ選択部２４とを有する。
【００２１】
符号化部１０における符号化処理の特性を決定するためのパラメータが、パラメータ保持部１２に供給され保持されると共に、誤り検出符号生成部２０に供給される。誤り検出符号生成部２０は、供給されたパラメータに基づき、当該パラメータの誤りを少なくとも検出可能な誤り検出符号を生成する。このとき、誤り検出符号生成部２０は、当該パラメータの誤りを検出すると共に、当該誤りを訂正する能力を持つ誤り検出・訂正符号を生成してもよい。
【００２２】
誤り検出符号生成部２０で生成する誤り検出符号としては、例えばパリティビットやＣＲＣ(cyclic  redundancy  check)符号などが適用可能である。また、誤り訂正能力を持った誤り検出・訂正符号としては、例えばリード・ソロモン符号、ＢＣＨ(Bose-Chaudhuri-Hocquenghem)符号、ハミング符号などを適用可能である。ここでは、誤り検出符号生成部２０では、ＢＣＨ符号を生成するものとする。また、以下では、特に記載のない限り、誤り検出符号と、誤り検出・訂正符号とを纏めて誤り検出符号と呼ぶ。
【００２３】
誤り検出符号生成部２０で生成された誤り検出符号は、例えばレジスタからなる誤り検出符号保持部２１に保持される。
【００２４】
誤り検出部２２は、パラメータ保持部１２に保持されるパラメータと、誤り検出符号保持部２１に保持される誤り検出符号とを用いて、パラメータの誤りを検出する。誤り検出符号としてＢＣＨ符号を用いたこの例では、誤り検出部２２は、誤り検出符号保持部２１に保持される誤り検出符号と、パラメータ保持部１２に保持されるパラメータとを用いてシンドロームを計算する。そして、計算されたシンドロームの値が全て「０」であれば、パラメータおよび誤り検出符号に誤りが無いと判定する。一方、求めたシンドロームの値のうち１つでも「０」ではない値が存在する場合、パラメータおよび誤り検出符号のうち少なくとも一方に誤りが有ると判定する。誤り検出部２２は、誤り検出結果を、誤り検出信号として出力し、パラメータ選択部２４に供給する。
【００２５】
誤り訂正部２３は、パラメータ保持部１２に保持されるパラメータと、誤り検出符号保持部２１に保持される誤り検出符号とを用いて、パラメータの誤りを訂正する。誤り検出符号としてＢＣＨ符号を用いたこの例では、誤り訂正部２３は、誤り検出符号保持部２１に保持される誤り検出符号と、パラメータ保持部１２に保持されるパラメータとを用いてシンドロームを計算する。誤り訂正部２３は、誤り検出部２２から、上述したシンドローム計算の結果を受け取ってもよい。そして、計算されたシンドロームの値に基づきパラメータ中の誤り位置を求め、誤り位置のビット値を反転させて誤り訂正を行う。
【００２６】
パラメータ選択部２４は、一方の選択入力端に対してパラメータ保持部１２の出力が入力され、他方の選択入力端に対して誤り訂正部２３の誤り訂正出力が入力される。パラメータ選択部２４は、誤り検出部２２から供給される誤り検出信号に応じて、これら一方および他方の選択入力端のうち一方を選択する。パラメータ選択部２４の出力が、符号化部１０に供給される。
【００２７】
なお、符号化部１０は、例えば生成多項式Ｇ(ｘ)を用いた符号化を行う構成を適用できる。一例として、符号化部１０は、生成多項式Ｇ(ｘ)の最大次数の個数分のレジスタを有し、生成多項式Ｇ(ｘ)の各次元において係数が「１」となっている次元のレジスタの入力にＸＯＲ（排他的論理和）回路を配してなる。各ＸＯＲ回路の一方および他方の入力に対し、それぞれレジスタの出力と、入力データとが供給される。入力データと、次元数が「１」のレジスタの直前のレジスタの出力とのＸＯＲ演算の結果が、当該次元数が「１」のレジスタに入力されて、入力データが例えばクロックに従い各レジスタおよびＸＯＲ回路を巡回する。各レジスタから、符号化出力が取り出される。
【００２８】
このような構成の場合、生成多項式Ｇ(ｘ)の各次元の係数が、符号化部１０の特性を決定するパラメータとなる。例えば、符号化部１０が有する全てのレジスタの入力に対してＸＯＲ回路をそれぞれ配し、各ＸＯＲ回路の有効／無効をパラメータに基づき設定する。これにより、符号化部１０をパラメータに応じて構成できる。
【００２９】
図４−１は、本第１の実施形態による符号化装置２の動作を示す一例のフローチャートである。符号化装置２が起動されると、例えば外部からパラメータが供給され（ステップＳ１１０）、次のステップＳ１１１で、供給されたパラメータがパラメータ保持部１２に保持される。このとき、パラメータ保持部１２に保持したパラメータを、さらに符号化部１０に供給してもよい。また、パラメータは、誤り検出符号生成部２０にも供給される。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に供給し、保持させる（ステップＳ１１２）。
【００３０】
次のステップＳ１１３で、符号化装置２は、符号化対象データが入力データとして入力されるのを待機し、符号化対象データが受信されると、次のステップＳ１１４で、受信した符号化対象データを符号化部１０に供給すると共に、出力選択部１１の一方の選択入力端に入力する。
【００３１】
次のステップＳ１１５で、誤り検出部２２が、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータの誤り検出を行う。誤り検出部２２は、誤り検出の結果に基づき、ステップＳ１１６で、パラメータに誤りがあるか否かを判定する。
【００３２】
若し、パラメータに誤りが無いと判定した場合、誤り検出部２２は、パラメータに誤りが無い旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ１１７に移行させる。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、パラメータ保持部１２が接続される一方の選択入力端が選択される。ステップＳ１１７では、パラメータ保持部１２に保持されたパラメータが、パラメータ選択部２４を介して符号化部１０に供給される。
【００３３】
一方、ステップＳ１１６で、パラメータに誤りが有ると判定した場合、誤り検出部２２は、パラメータに誤りが有る旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理がステップＳ１１８に移行させる。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、誤り訂正部２３の出力が接続される他方の選択入力端が選択される。ステップＳ１１８では、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータの誤りが訂正される。誤りが訂正された訂正済みパラメータは、パラメータ選択部２４を介して符号化部１０に供給される。
【００３４】
ステップＳ１１７またはステップＳ１１８の処理が終了すると、処理がステップＳ１１９に移行される。ステップＳ１１９では、符号化部１０により、パラメータ選択部２４から供給されたパラメータを用いて、ステップＳ１１４で供給された符号化対象データの符号化処理が行われる。この段階では、出力選択部１１では一方の選択入力端が選択されており、符号化対象データがそのまま出力データとして出力される（ステップＳ１２０）。
【００３５】
次のステップＳ１２１で、符号化装置２は、符号化対象データがまだ残っているか否か、すなわち、所定量の符号化対象データに対して符号化処理を行ったか否かを判定する。若し、所定量の符号化対象データに対する符号化処理が完了しておらず、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ１１４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【００３６】
一方、ステップＳ１２１で、所定量の符号化対象データに対する符号化処理が完了し、符号化対象データが残っていないと判定した場合、処理がステップＳ１２２に移行される。ステップＳ１２２では、符号化部１０は、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号を出力選択部１１に対して出力する。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から、符号化部１０の出力が接続される他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ１１３に戻される。
【００３７】
このようにして、符号化装置２では、符号化処理に際して、符号化対象データに対して符号化処理を施した符号化データと、符号化対象データとを出力することができる。このとき、符号化部１０が符号化処理に用いるパラメータの誤り検出を行い、誤りが有る場合には当該パラメータに対して誤り訂正を行って、符号化部１０に供給している。そのため、パラメータ保持部１２に保持されるパラメータにソフトエラーなどにより誤りが発生していても、正しく符号化を行うことができる。
【００３８】
（第１の実施形態の第１の変形例）
次に、第１の実施形態の第１の変形例について説明する。上述の図４−１のフローチャートでは、ステップＳ１１４〜ステップＳ１２１の処理が順次に実行されるように示されているが、これはこの例に限定されない。一例として、符号化部１０に上述した生成多項式Ｇ(ｘ)を用いた場合について考える。この場合、ステップＳ１１４の符号化対象データの入力と、ステップＳ１１９の符号化処理とが並行して行われる。すなわち、クロック毎に１ビットずつ入力された符号化対象データが（ステップＳ１１４）、生成多項式Ｇ(ｘ)の最大次元に対応する個数の各レジスタに対して、順次シフトされて格納される。また、各レジスタに格納されるデータは、クロック毎に、符号化された出力データとして取り出される（ステップＳ１１９）。さらに、ステップＳ１１５、ステップＳ１１６およびステップＳ１１８の、パラメータの誤り検出および誤り訂正処理を、符号化対象データの入力および符号化処理と並行して実行することができる。
【００３９】
このように、各処理が並行して実行される構成においては、ステップＳ１１６でパラメータに誤りが検出された場合に、符号化部１０において誤ったパラメータのまま、意図しない動作で符号化処理が行われてしまうことになる。本第１の実施形態の第１の変形例では、ステップＳ１１６でパラメータに誤りが検出された場合に符号化部１０における符号化処理を一時的に停止させる。
【００４０】
図４−２は、本第１の実施形態の第１の変形例による符号化装置２の動作を示す一例のフローチャートである。なお、図４−２のフローチャートにおいて、上述した図４−１のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。図４−２のフローチャートでは、上述の図４−１のフローチャートに対して、ステップＳ１１８の前後に、符号化処理を中断させるステップＳ１１８ａと、中断した符号化処理を再開させるステップＳ１１８ｂとが追加されている。
【００４１】
より具体的に説明する。ステップＳ１１６でパラメータに誤りが有ると判定した場合、誤り検出部２２は、パラメータに誤りが有る旨を示す検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ１１８ａに移行させる。ステップＳ１１８ａで、例えば誤り検出部２２は、符号化部１０に対して符号化処理の一時的な停止を指示する。より具体的には、誤り検出部２２は、例えば符号化部１０に対してイネーブル信号などの制御信号を出力し（図示しない）、符号化部１０における符号化処理を一時的に停止させる。これに限らず、符号化部１０に対するクロックを停止させるなど、他の方法を用いて符号化部１０における符号化処理を停止させてもよい。
【００４２】
ステップＳ１１８ａで符号化部１０における符号化処理が停止されると、処理がステップＳ１１８に移行される。ステップＳ１１８では、上述と同様にして、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータの誤りが訂正され、訂正済みパラメータがパラメータ選択部２４を介して符号化部１０に供給される。
【００４３】
ステップＳ１１８で誤り訂正された訂正済みパラメータが符号化部１０に供給されると、処理がステップＳ１１８ｂに移行される。ステップＳ１１８ｂでは、例えば誤り検出部２２により、符号化部１０に対して符号化処理の再開が指示される。例えば、誤り検出部２２は、符号化部１０に対して、符号化処理を再開させるための制御信号を出力する。符号化部１０に対する誤り訂正処理の再開が指示されると、処理がステップＳ１１９に移行され、符号化部１０における符号化処理が再開される。
【００４４】
（第１の実施形態の第２の変形例）
次に、第１の実施形態の第２の変形例について説明する。例えば、所定量の符号化データが連続して出力される必要がある場合に、上述した第１の実施形態の第１の変形例では、符号化処理の一時停止および再開により符号化データが一時的に途切れ、不具合が生じる可能性がある。そこで、本第２の変形例では、ステップＳ１１６においてパラメータに誤りが検出されたと判定した場合に、符号化部１０における符号化処理をやり直す。
【００４５】
図４−３は、本第１の実施形態の第２の変形例による符号化装置２の動作を示す一例のフローチャートである。なお、図４−３のフローチャートにおいて、上述した図４−１のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。図４−３のフローチャートでは、上述の図４−１のフローチャートに対して、ステップＳ１１８の後に、符号化対象データの再供給を要求するステップＳ１１８ｃを設け、その後、処理をステップＳ１１３に戻している。
【００４６】
より具体的に説明する。ステップＳ１１６でパラメータに誤りが有ると判定した場合、誤り検出部２２は、パラメータに誤りが有る旨を示す検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ１１８に移行させる。ステップＳ１１８では、上述と同様にして、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータの誤りが訂正され、訂正済みパラメータがパラメータ選択部２４を介して符号化部１０に供給される。
【００４７】
ステップＳ１１８でのパラメータに対する誤り訂正処理が完了すると、処理がステップＳ１１８ｃに移行される。ステップＳ１１８ｃでは、例えば誤り訂正部２３から符号化対象データの供給元（ホスト装置）に対して、符号化対象データの再供給が要求される。例えば、符号化処理が所定サイズのデータブロック単位で行われる場合において、この符号化対象データブロックの符号化の途中で、ステップＳ１１６によりパラメータに誤りが検出された際には、当該符号化対象データブロックを再供給するように、誤り訂正部２３からホスト装置に対してこの要求がなされる。
【００４８】
ステップＳ１１８ｃで符号化対象データの再供給が要求されると、処理がステップＳ１１３に戻されて、要求した符号化対象データの入力が待機される。
【００４９】
このように、第１の実施形態の第２の変形例では、符号化部１０で用いるパラメータに誤りが検出された場合に、パラメータの誤りを訂正すると共に、誤りが検出された時点で符号化処理が行われている符号化対象データの再供給を要求している。そのため、所定サイズの符号化対象データブロック単位で符号化データが必要な場合に、不具合が発生するのを防ぐことができる。
【００５０】
一例として、符号化部１０で符号化され、出力選択部１１から出力された符号化データがＮＡＮＤフラッシュメモリに書き込まれる場合について考える。周知のように、ＮＡＮＤフラッシュメモリは、所定サイズのブロック単位でデータの書き込みを行う必要がある。そのため、少なくとも符号化対象データブロック分の符号化データは、出力選択部１１から連続して、すなわち、間を空けずに出力されなければならない。
【００５１】
この第１の実施形態の第２の変形例によれば、パラメータに誤りが検出された場合に、誤りが検出された時点での符号化対象データブロックに対する符号化処理をやり直すため、ブロック単位での連続した符号化データの出力が可能である。したがって、この第１の実施形態の第２の変形例による符号化装置２は、全体をＮＡＮＤフラッシュメモリのコントローラの一部として使用するような場合に用いて好適である。
【００５２】
（第２の実施形態）
次に、第２の実施形態について説明する。図５は、本第２の実施形態に係る符号化装置３の一例の構成を示す。なお、図５において、上述した図３と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置３は、構成要素に関しては、図３を用いて説明した符号化装置２と共通である。
【００５３】
本第２の実施形態の符号化装置３は、誤り訂正部２３でパラメータの誤りを訂正した訂正済みパラメータをパラメータ保持部１２に供給し、既にパラメータ保持部１２に保持されているパラメータに対して上書きして保持する。同様に、符号化装置３は、誤り訂正部２３で誤り検出符号の誤りを検出した訂正済み検出符号を誤り検出符号保持部２１に供給し、既に誤り検出符号保持部２１に保持されている誤り検出符号に対して上書きして保持する。
【００５４】
図６は、本第２の実施形態による符号化装置３の動作を示す一例のフローチャートである。符号化装置３が起動されると、例えば外部からパラメータが供給され（ステップＳ１３０）、次のステップＳ１３１で、供給されたパラメータがパラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に保持させる（ステップＳ１３２）。
【００５５】
次のステップＳ１３３で、符号化部１０は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップＳ１３４で、受信した符号化対象データが符号化部１０に供給されると共に、出力選択部１１の一方の選択入力端に入力される。
【００５６】
次のステップＳ１３５で、誤り検出部２２が、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータについて誤り検出を行う。誤り検出部２２は、誤り検出の結果に基づき、ステップＳ１３６で、誤りが検出されたか否かを判定する。
【００５７】
若し、誤りが検出されなかったと判定した場合、誤り検出部２２は、誤りが無い旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ１３７に移行させる。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、パラメータ保持部１２の出力が接続される一方の選択入力端が選択される。ステップＳ１３７では、パラメータ保持部１２に保持されたパラメータが、パラメータ選択部２４を介して符号化部１０に供給される。
【００５８】
一方、ステップＳ１３６で、誤りが検出されたと判定した場合、誤り検出部２２は、処理をステップＳ１３８に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部２４に対して出力する。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、誤り訂正部２３の出力が接続される他方の選択入力端が選択される。
【００５９】
ステップＳ１３８では、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータおよび誤り検出符号保持部２１に保持される誤り検出符号に対して誤り訂正処理が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部２４を介して符号化部１０に供給されると共に、パラメータ保持部１２に供給され、パラメータ保持部１２に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部２１に供給され、誤り検出符号保持部２１に既に保持されている誤り検出符号に対して上書きして保持される。
【００６０】
ステップＳ１３７またはステップＳ１３８の処理が終了すると、処理がステップＳ１３９に移行される。ステップＳ１３９では、符号化部１０により、パラメータ選択部２４から供給されたパラメータを用いて、ステップＳ１３４で供給された符号化対象データの符号化処理が行われる。この段階では、出力選択部１１では一方の選択入力端が選択されており、符号化対象データがそのまま出力データとして出力される（ステップＳ１４０）。
【００６１】
次のステップＳ１４１で、符号化装置３は、符号化対象データがまだ残っているか否か、すなわち、所定量の符号化対象データに対して符号化処理を行ったか否かを判定する。若し、所定量の符号化対象データに対する符号化処理が完了しておらず、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ１３４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【００６２】
一方、ステップＳ１４１で、所定量の符号化対象データに対する符号化処理が完了し、符号化対象データが残っていないと判定した場合、処理がステップＳ１４２に移行される。ステップＳ１４２では、符号化部１０は、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号を出力選択部１１に対して出力する。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ１３３に戻される。
【００６３】
このようにして、符号化装置３では、符号化部１０が符号化処理に用いるパラメータの誤り検出を行い、誤りが有る場合には当該パラメータに対して誤り訂正を行って符号化部１０に供給している。それと共に、符号化装置３では、パラメータ保持部１２に保持されるパラメータに誤りが検出される毎に当該パラメータの誤り訂正を行い、誤りが訂正されたパラメータでパラメータ保持部１２に保持されるパラメータを上書きするようにしている。そのため、パラメータ保持部１２に保持されるパラメータにソフトエラーが発生していても、正しく符号化を行うことができると共に、より高い信頼性を実現することができる。
【００６４】
なお、本第２の実施形態においても、ステップＳ１３６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第１の変形例で説明したように、ステップＳ１３８のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。同様に、ステップＳ１３６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第２の変形例で説明したように、ステップＳ１３８のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップＳ１３３で符号化対象データの入力を待機する処理を適用することができる。
【００６５】
（第３の実施形態）
次に、第３の実施形態について説明する。図７は、本第３の実施形態に係る符号化装置４の一例の構成を示す。なお、図７において、上述した図５と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置４は、構成要素に関しては、図５を用いて説明した符号化装置３とほぼ共通である。
【００６６】
符号化装置４は、符号化装置３に対して、誤り訂正部２３から誤り訂正不能通知を出力する機能が追加されている。すなわち、符号化装置４において、誤り訂正部２３のパラメータおよび誤り検出符号に対する誤り訂正処理において、当該パラメータおよび誤り検出符号に、誤り検出符号（誤り検出・訂正符号）が持つ誤り訂正能力を超える誤りが存在する場合に、当該パラメータおよび誤り検出符号の誤り訂正が不能であるとして、その旨示す誤り訂正不能通知を外部に出力する。
【００６７】
図８は、本第３の実施形態による符号化装置４の動作を示す一例のフローチャートである。この図８のフローチャートにおけるステップＳ１５８およびステップＳ１６０の処理以外は、図６のフローチャートによる各処理と同等である。すなわち、符号化装置４が起動されると、外部から供給されたパラメータ（ステップＳ１５０）がパラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される（ステップＳ１５１）。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に保持させる（ステップＳ１５２）。
【００６８】
次のステップＳ１５３で、符号化装置４は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップＳ１５４で、受信した符号化対象データを符号化部１０に供給すると共に、出力選択部１１の一方の選択入力端に入力する。
【００６９】
次のステップＳ１５５で、誤り検出部２２が、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する（ステップＳ１５６）。
【００７０】
若し、誤りが検出されなかったと判定した場合、誤り検出部２２は、誤りが無い旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ１５７に移行させる。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、パラメータ保持部１２が接続される一方の選択入力端が選択される。ステップＳ１５７では、パラメータ保持部１２に保持されたパラメータが、パラメータ選択部２４を介して符号化部１０に供給される。
【００７１】
一方、ステップＳ１５６で、誤りが検出されたと判定した場合、誤り検出部２２は、処理をステップＳ１５８に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部２４に対して出力する。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、誤り訂正部２３が接続される他方の選択入力端が選択される。
【００７２】
ステップＳ１５８で、誤り訂正部２３は、ステップＳ１５５の誤り検出部２２による誤り検出結果に基づき、検出された誤りが誤り検出符号（誤り検出・訂正符号）の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。
【００７３】
若し、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正可能であると判定した場合、処理がステップＳ１５９に移行される。ステップＳ１５９では、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータと、当該誤り検出符号とに対して誤り訂正処理が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部２４を介して符号化部１０に供給されると共に、パラメータ保持部１２に供給され、パラメータ保持部１２に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部２１に供給され、誤り検出符号保持部２１に既に保持されている誤り検出符号に対して上書きして保持される。
【００７４】
ステップＳ１５７またはステップＳ１５９の処理が終了すると、処理がステップＳ１６１に移行される、符号化部１０により、パラメータ選択部２４から供給されたパラメータを用いて、ステップＳ１５４で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部１１では一方の選択入力端が選択されているため、符号化対象データがそのまま出力データとして出力される（ステップＳ１６２）。
【００７５】
次のステップＳ１６３で、符号化装置４は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ１５４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【００７６】
一方、ステップＳ１６３で、符号化対象データが残っていないと判定した場合、処理がステップＳ１６４に移行され、符号化部１０により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部１１に対して出力される。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ１５３に戻される。
【００７７】
一方、上述のステップＳ１５８において、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップＳ１６０に移行される。ステップＳ１６０で、誤り訂正部２３は、誤り訂正が不能であることを示す誤り訂正不能通知を外部に出力する。そして、この図８のフローチャートによる一連の処理を終了させる。例えば、ステップＳ１６０で誤り訂正不能通知が出力された時点で符号化部１０における符号化処理を終了させ、符号化データを符号化装置４から出力しないようにする。
【００７８】
このようにして、符号化装置４では、符号化部１０が符号化処理に用いるパラメータの誤り検出および誤り訂正を行って符号化部１０に供給すると共に、パラメータに誤りが検出される毎に当該パラメータの誤り訂正を行い、誤りが訂正されたパラメータでパラメータ保持部１２に保持されるパラメータを上書きするようにしている。そのため、ソフトエラーに対処できると共に、より高い信頼性を実現することができる。
【００７９】
さらに、パラメータ保持部１２に保持されるパラメータに対する誤り検出の結果、誤り検出符号の持つ誤り訂正能力を超えて誤りが検出された場合に、外部にその旨を通知するようにしているため、誤った符号化処理を回避することができる。
【００８０】
なお、本第３の実施形態においても、ステップＳ１５６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第１の変形例で説明したように、ステップＳ１５９のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。同様に、ステップＳ１５６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第２の変形例で説明したように、ステップＳ１５９のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップＳ１５３で符号化対象データの入力を待機する処理を適用することができる。
【００８１】
（第４の実施形態）
次に、第４の実施形態について説明する。図９は、本第４の実施形態に係る符号化装置５の一例の構成を示す。なお、図９において、上述した図７と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置５は、上述の符号化装置４において、誤り検出符号としてハミング符号を用いた例である。すなわち、符号化装置５は、図７の符号化装置４の誤り検出符号生成部２０および誤り検出符号保持部２１をそれぞれハミング符号生成部３０およびハミング符号保持部３１に置き換えている。また、誤り検出部２２は、ハミング符号を用いた誤り検出を行う誤り検出部３２と置き換え、同様に、誤り訂正部２３は、ハミング符号を用いた誤り訂正を行う誤り訂正部３３と置き換えている。
【００８２】
図９において、符号化部１０が符号化処理に用いるパラメータがパラメータ保持部１２に供給され保持されると共に、ハミング符号生成部３０に供給される。ハミング符号生成部３０は、供給されたパラメータからハミング符号による符号を生成する。生成された符号は、例えばレジスタからなるハミング符号保持部３１に供給され、保持される。この符号とパラメータとにより、ハミング符号が構成される。
【００８３】
誤り検出部３２は、パラメータ保持部１２に保持されるパラメータと、ハミング符号保持部３１に保持される符号とを用いて、誤り検出を行う。誤り検出部３２は、ハミング符号保持部３１に保持される符号と、パラメータ保持部１２に保持されるパラメータとを用いてシンドロームを計算する。そして、計算されたシンドロームの値が全て「０」であれば、パラメータおよび符号に誤りが無いと判定する。一方、求めたシンドロームの値のうち１つでも「０」ではない値が存在する場合、パラメータまたは符号のうち少なくとも一方に誤りが有ると判定する。誤り検出部３２は、誤り検出結果を、誤り検出信号として出力し、パラメータ選択部２４に供給する。
【００８４】
誤り訂正部３３は、パラメータ保持部１２に保持されるパラメータと、ハミング符号保持部３１に保持される符号とを用いて、誤り訂正を行う。誤り訂正部３３は、ハミング符号保持部３１に保持される符号と、パラメータ保持部１２に保持されるパラメータとを用いて、シンドロームを計算する。誤り訂正部３３は、誤り検出部３２から、上述したシンドローム計算の結果を受け取ってもよい。そして、計算されたシンドロームの値に基づき誤りが１ビットであれば、誤り位置を特定して誤り位置のビット値を反転させて誤り訂正を行う。
【００８５】
一方、誤りが２ビット以上である場合には、ハミング符号の誤り訂正能力を超えているため、誤り訂正を行うことができない。この場合、誤り訂正部３３は、誤り訂正が不能であることを示す誤り訂正不能通知を出力する。
【００８６】
図１０は、本第４の実施形態による符号化装置５の動作を示す一例のフローチャートである。この図１０のフローチャートは、誤り検出をハミング符号を用いて行っている点以外は、図８のフローチャートによる各処理と同等である。すなわち、符号化装置５が起動されると、外部から供給されたパラメータ（ステップＳ１７０）がパラメータ保持部１２に保持されると共に、ハミング符号生成部３０に供給される（ステップＳ１７１）。ハミング符号生成部３０は、供給されたパラメータからハミング符号による符号を生成し、生成した符号をハミング符号保持部３１に保持させる（ステップＳ１７２）。
【００８７】
次のステップＳ１７３で、符号化部１０は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップＳ１７４で、受信した符号化対象データが符号化部１０に供給されると共に、出力選択部１１の一方の選択入力端に入力される。
【００８８】
次のステップＳ１７５で、誤り検出部３２が、ハミング符号保持部２１に保持される符号と、パラメータ保持部１２に保持されるパラメータとを用いて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する（ステップＳ１７６）。
【００８９】
若し、誤りが検出されなかったと判定した場合、誤り検出部３２は、誤りが無い旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ１７７に移行させる。パラメータ選択部２４では、誤り検出部３２から供給された誤り検出信号に応じて、一方の選択入力端が選択される。ステップＳ１７７では、パラメータ保持部１２に保持されたパラメータが、パラメータ選択部２４を介して符号化部１０に供給される。
【００９０】
一方、ステップＳ１７６で、誤りが検出されたと判定した場合、誤り検出部３２は、処理をステップＳ１７８に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部２４に対して出力する。パラメータ選択部２４では、誤り検出部３２から供給された誤り検出信号に応じて、他方の選択入力端が選択される。
【００９１】
ステップＳ１７８で、誤り訂正部３３は、ステップＳ１７５の誤り検出部３２による誤り検出結果に基づき、検出された誤りが、ハミング符号の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。より具体的には、誤り訂正部３３は、検出された誤りが１ビットの誤りであるか否かを判定する。
【００９２】
若し、検出された誤りが１ビットの誤りであれば、誤りを訂正可能であるので、誤り訂正部３３は、処理をステップＳ１７９に移行させる。ステップＳ１７９では、誤り訂正部３３は、シンドロームの値に基づき誤りビットを特定して、特定されたビットの値を反転させて誤りを訂正する。誤りが訂正された訂正済みパラメータは、パラメータ選択部２４を介して符号化部１０に供給されると共に、パラメータ保持部１２に供給され、パラメータ保持部１２に既に保持されているパラメータに対して上書きして保持される。また、誤りが訂正された訂正済み符号をハミング符号保持部３１に供給し、ハミング符号保持部３１に既に保持されている符号に対して上書きして保持する。
【００９３】
ステップＳ１７７またはステップＳ１７９の処理が終了すると、処理がステップＳ１８１に移行される、符号化部１０により、パラメータ選択部２４から供給されたパラメータを用いて、ステップＳ１７４で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部１１において一方の選択入力端が選択されているので、符号化対象データがそのまま出力データとして出力される（ステップＳ１８２）。
【００９４】
次のステップＳ１８３で、符号化部１０は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ１７４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【００９５】
一方、ステップＳ１８３で、符号化対象データが残っていないと判定した場合、処理がステップＳ１８４に移行され、符号化部１０により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部１１に対して出力される。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ１７３に戻される。
【００９６】
一方、上述のステップＳ１７８において、検出された誤りが２ビット以上の誤りであって、ハミング符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップＳ１８０に移行される。ステップＳ１８０で、誤り訂正部３３は、誤り訂正が不能であることを示す誤り訂正不能通知を外部に出力する。そして、この図１０のフローチャートによる一連の処理を終了させる。例えば、ステップＳ１８０で誤り訂正不能通知が出力された時点で符号化部１０における符号化処理を終了させ、符号化データを符号化装置５から出力しないようにする。
【００９７】
このようにして、符号化装置５では、符号化部１０が符号化処理に用いるパラメータの誤り検出および誤り訂正をハミング符号を用いて行っている。ハミング符号による誤り検出部３２および誤り訂正部３３は、それぞれ組み合わせ回路のみで構成可能である。そのため、誤りが検出され、検出された誤りが誤り訂正可能な場合、誤りが検出されたサイクルと同一サイクルで誤り訂正が行われ、符号化部１０における符号化処理を一時停止させることなく継続させることができる。
【００９８】
図１１は、組み合わせ回路を用いて誤り検出部３２および誤り訂正部３３を構成した例を示す。図１１において、図９の各部と対応する部分には、同一の符号を付して示している。図１１は、データが４ビット、ハミング符号による符号、すなわち、誤り訂正用の冗長ビットが３ビット、全体の符号長が７ビットになるハミング（７，４）符号に対応した構成例を示している。
【００９９】
パラメータ保持部１２は、それぞれ１ビットを格納する４のレジスタを有し、４ビットのパラメータの各ビットが各レジスタに格納される。ハミング符号保持部３１も同様に、それぞれ１ビットを格納する３のレジスタを有し、３ビットの冗長ビットの各ビットが各レジスタに格納される。
【０１００】
誤り検出部３２は、それぞれ４入力の３のＸＯＲ回路２００1〜２００3と、各ＸＯＲ回路２００1〜２００3の出力が反転されてそれぞれ入力される３入力のＯＲ回路２０３とを有する。各ＸＯＲ回路２００1〜２００3は、４の入力がそれぞれパラメータ保持部１２および誤り検出符号保持部３１の各ビットに所定に接続され、シンドロームビットＳ0、Ｓ1およびＳ2を出力する。
【０１０１】
また、ＯＲ回路２０３の出力が誤り検出信号として取り出される。すなわち、シンドロームビットＳ0、Ｓ1およびＳ2が全て値「０」のときに、ＯＲ回路２０３の出力が値「０」となり、誤りが検出されなかったことが示される。一方、シンドロームビットＳ0、Ｓ1およびＳ2のうち少なくとも１が値「１」のときにＯＲ回路２０３の出力が値「１」となり、誤りが検出されたことが示される。
【０１０２】
誤り訂正部３３は、それぞれ２入力の７のＸＯＲ回路２０２1〜２０２7と、それぞれ３入力の７のＡＮＤ回路２０１1〜２０１7とを有する。ＡＮＤ回路２０１1〜２０１7は、２以下の各組み合わせで反転される３の入力が、各ＸＯＲ回路２００1〜２００3の出力にそれぞれ接続される。各ＡＮＤ回路２０１1〜２０１7の出力ｅ0、ｅ1、…、ｅ6において、誤りが１ビットの場合の誤り位置に対応する出力が値「１」となる。
【０１０３】
各ＸＯＲ回路２０２1〜２０２7は、パラメータ保持部１２の各ビット、ならびに、ハミング符号保持部３１の各ビットと、ＡＮＤ回路２０１1〜２０１7の各出力とのＸＯＲ演算を行う。各ＸＯＲ回路２０２1〜２０２7において、パラメータ保持部１２の各ビット、ならびに、ハミング符号保持部３１の各ビットのうち、各ＡＮＤ回路２０１1〜２０１7のうち出力が値「１」のビットが反転されて誤り訂正される。
【０１０４】
各ＸＯＲ回路２０２1〜２０２7から、誤りが訂正されたパラメータおよび誤り符号が出力される。訂正済みパラメータは、符号化部１０に供給される。また、各ＸＯＲ回路２０２1〜２０２7の出力が、それぞれパラメータ保持部１２およびハミング符号保持部３１の各ビットに格納され、パラメータ保持部１２およびハミング符号保持部３１の保持内容に対する誤り訂正も行われる。
【０１０５】
このように、誤り検出および誤り訂正をハミング符号を用いて行う場合、誤り検出部３２および誤り訂正部３３を、ＡＮＤ回路、インバータ、ＸＯＲ回路といった組み合わせ回路のみで構成することができる。周知のように、組み合わせ回路では、入力の状態に応じて出力が決まるので、誤り検出および誤り訂正、ならびに、誤り検出信号の出力をほぼ同時に実行することができる。
【０１０６】
（第５の実施形態）
次に、第５の実施形態について説明する。図１２は、本第５の実施形態に係る符号化装置６の一例の構成を示す。なお、図１２において、上述した図７と共通する部分には同一の符号を付して、詳細な説明を省略する。符号化装置６は、構成要素に関しては、図７を用いて説明した符号化装置４と略共通である。
【０１０７】
符号化装置６は、誤り訂正部２３から出力される誤り訂正不能通知を、パラメータ保持部１２にパラメータを供給するパラメータ供給元４０に対して送信する。すなわち、図１２に例示されるように、パラメータ供給元４０は、誤り訂正不能通知受信部４１を有し、誤り訂正部２３から出力された誤り訂正不能通知は、この誤り訂正不能通知受信部４１に受信される。
【０１０８】
パラメータ供給元４０は、誤り訂正不能通知受信部４１に誤り訂正不能通知が受信されると、符号化装置６に対して、符号化部１０が符号化処理を行う際に用いるパラメータを送信する。このパラメータは、パラメータ保持部１２に供給され、既に保持されているパラメータに対して上書きされて保持される。換言すれば、パラメータ保持部１２に保持されるパラメータが、パラメータ供給元４０から送信されるパラメータによって初期化される。
【０１０９】
同様に、パラメータ供給元４０から符号化装置６に送信されたパラメータは、誤り検出符号生成部２０にも供給される。誤り検出符号生成部２０は、パラメータ供給元４０から送信されたパラメータに基づき誤り検出符号を生成する。生成されたこの誤り検出符号は、誤り検出符号保持部２１に供給され、既に誤り検出符号保持部２１に保持される誤り検出符号に対して上書きして保持される。換言すれば、誤り検出符号保持部２１に保持される誤り検出符号が、パラメータ供給元４０から送信されるパラメータに基づき初期化される。
【０１１０】
また、パラメータ供給元４０は、誤り訂正不能通知受信部４１に誤り訂正不能通知が受信されると、符号化装置６に対して、符号化制御信号を送信する。この符号化制御信号は、符号化部１０に供給される。符号化部１０は、この符号化制御信号が供給されると、符号化処理を停止させる。
【０１１１】
図１３は、本第５の実施形態による符号化装置６の動作を示す一例のフローチャートである。符号化装置６が起動されると、パラメータ供給元４０から、符号化部１０が符号化処理を行う際に用いるパラメータが符号化装置６に供給される（ステップＳ２００）。パラメータ供給元４０から供給されたこのパラメータは、パラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される（ステップＳ２０１）。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に保持させる（ステップＳ２０２）。
【０１１２】
次のステップＳ２０３で、符号化装置６は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップＳ２０４で、受信した符号化対象データを符号化部１０に供給すると共に、出力選択部１１の一方の選択入力端に入力する。
【０１１３】
次のステップＳ２０５で、誤り検出部２２が、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する（ステップＳ２０６）。
【０１１４】
若し、誤りが検出されなかったと判定した場合、誤り検出部２２は、誤りが無い旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ２０７に移行させる。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、一方の選択入力端が選択される。ステップＳ２０７では、パラメータ保持部１２に保持されたパラメータが、パラメータ選択部２４を介して符号化部１０に供給される。
【０１１５】
一方、ステップＳ２０６で、誤りが検出されたと判定した場合、誤り検出部２２は、処理をステップＳ２０８に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部２４に対して出力する。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、他方の選択入力端が選択される。
【０１１６】
ステップＳ２０８で、誤り訂正部２３は、ステップＳ２０５の誤り検出部２２による誤り検出結果に基づき、検出された誤りが誤り検出符号（誤り検出・訂正符号）の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。
【０１１７】
若し、上述のステップＳ２０８において、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップＳ２０９に移行される。ステップＳ２０９で、誤り訂正部２３は、誤り訂正が不能であることを示す誤り訂正不能通知を出力する。
【０１１８】
誤り訂正部２３から出力された誤り訂正不能通知は、パラメータ供給元４０の誤り訂正不能通知受信部４１に受信される（ステップＳ２１０）。パラメータ供給元４０は、誤り訂正不能通知受信部４１に誤り訂正不能通知が受信されると、符号化部１０による符号化処理を一時的に停止させる符号化制御信号を出力する。この符号化制御信号は、符号化装置６に受信され、符号化部１０に入力される。符号化部１０は、符号化制御信号が入力されると、符号化処理を一時的に停止する。
【０１１９】
次のステップＳ２１１で、パラメータ供給元４０から符号化装置６対して、符号化部１０が符号化処理に用いるためのパラメータが送信される。このパラメータは、パラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される（ステップＳ２１２）。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に保持させる（ステップＳ２１３）。
【０１２０】
パラメータ供給元４０は、符号化装置６に対してパラメータを送信した後、符号化部１０による符号化処理の再開を指示する符号化制御信号を出力する（ステップＳ２１４）。パラメータ供給元４０は、パラメータ保持部１２や誤り検出符号生成部２０から、パラメータの受信を示す通知を受け取ってから、この符号化制御信号を出力するようにしてもよい。符号化部１０は、この符号化制御信号を受信すると、符号化処理を再開させる。符号化処理が再開されると、処理が上述したステップＳ２０７に移行される。
【０１２１】
一方、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正可能であると判定した場合、処理がステップＳ２１５に移行される。ステップＳ２１５では、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータと、当該誤り検出符号とに対する誤り訂正が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部２４を介して符号化部１０に供給されると共に、パラメータ保持部１２に供給され、パラメータ保持部１２に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部２１に供給され、誤り検出符号保持部２１に既に保持されている誤り検出符号に対して上書きして保持される。
【０１２２】
ステップＳ２１４またはステップＳ２１５の処理が終了すると、処理がステップＳ２１６に移行される、符号化部１０により、パラメータ選択部２４から供給されたパラメータを用いて、ステップＳ２０４で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部１１において一方の選択入力端が選択されているため、符号化対象データがそのまま出力データとして出力される（ステップＳ２１７）。
【０１２３】
次のステップＳ２１８で、符号化装置６は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ２０４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【０１２４】
一方、ステップＳ２１８で、符号化対象データが残っていないと判定した場合、処理がステップＳ２１９に移行され、符号化部１０により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部１１に対して出力される。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ２０３に戻される。
【０１２５】
このように、符号化装置６は、誤り検出され誤り訂正不能な場合であっても、パラメータ保持部１２に保持されるパラメータを初期化できるため、より信頼性が向上される。
【０１２６】
なお、本第５の実施形態においても、ステップＳ２０６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第１の変形例で説明したように、ステップＳ２１５のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。同様に、ステップＳ２０６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第２の変形例で説明したように、ステップＳ２１５のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップＳ２０３で符号化対象データの入力を待機する処理を適用することができる。
【０１２７】
（第５の実施形態の変形例）
なお、ここでは、誤り訂正能力を持つ誤り検出符号を用いた例について説明したが、これはこの例に限定されない。本第５の実施形態の変形例は、パリティビットやＣＲＣ符号といった、誤り訂正能力を持たない誤り検出符号を用いた場合の例である。この場合、誤り検出符号を用いてパラメータの誤り検出を行った結果、誤りが検出された場合、符号化処理を一時的に停止させると共にパラメータ供給元からパラメータを供給させ、パラメータ保持部１２に保持されるパラメータを初期化して符号化処理を再開させる。
【０１２８】
図１４は、本第５の実施形態の変形例による符号化装置６’の一例の構成を示す。なお、図１４において、上述の図１２と共通する部分については同一の符号を付して、詳細な説明を省略する。符号化装置６’は、誤り訂正を行わないため、上述の符号化装置６における誤り訂正に関連する部分である、誤り訂正部２３およびパラメータ選択部２４が省略されている。また、図１４では、上述した図１２における誤り訂正不能通知部４１が、誤り検出通知受信部４１’に変更されている。
【０１２９】
すなわち、符号化装置６’において、パラメータ保持部１２に保持されるパラメータは、直接的に符号化部１０に供給される。また、誤り検出部２２は、パラメータ保持部１２に保持されるパラメータに対して、誤り検出符号保持部２１に保持される誤り検出符号を用いて誤り検出を行い、誤りが検出された場合は、誤り検出通知をパラメータ供給元４０に送信する。
【０１３０】
パラメータ供給元４０は、誤り検出通知が誤り検出通知受信部４１’に受信されると、符号化部１０における符号化処理を一時的に停止させるための符号化制御信号と、パラメータとを符号化装置６’に送信する。
【０１３１】
図１５は、本第５の実施形態の変形例による符号化装置６’の動作を示す一例のフローチャートである。符号化装置６’が起動されると、パラメータ供給元４０から、符号化部１０が符号化処理を行う際に用いるパラメータが符号化装置６に供給され（ステップＳ３００）、パラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される（ステップＳ３０１）。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成して誤り検出符号保持部２１に保持させる（ステップＳ３０２）。
【０１３２】
次のステップＳ３０３で、符号化部１０は、入力データとしての符号化対象データを待機し、符号化対象データが受信されると、次のステップＳ３０４で、受信した符号化対象データが符号化部１０に供給されると共に、出力選択部１１の一方の選択入力端に入力される。
【０１３３】
次のステップＳ３０５で、誤り検出部２２が、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、パラメータに誤りがあるか否かを判定する（ステップＳ３０６）。若し、パラメータに誤りが無いと判定した場合、処理がステップＳ３０７に移行され、パラメータ保持部１２に保持されたパラメータが符号化部１０に供給される。
【０１３４】
一方、ステップＳ３０６で、パラメータに誤りが有ると判定した場合、誤り検出部２２は、処理をステップＳ３２０に移行させ、誤りが検出されたことを示す誤り検出通知を出力する。誤り検出部２２から出力されたこの誤り検出通知は、パラメータ供給元４０の誤り検出通知受信部４１’に受信される。
【０１３５】
パラメータ供給元４０は、誤り検出通知受信部４１’に誤り検出通知が受信されると、符号化部１０による符号化処理を一時的に停止させる符号化制御信号を出力する。この符号化制御信号は、符号化装置６に入力され、符号化部１０に供給される。符号化部１０は、符号化制御信号を受信すると、符号化処理を一時的に停止する（ステップＳ３２１）。
【０１３６】
次のステップＳ３２２で、パラメータ供給元４０から符号化装置６’に対して、符号化部１０が符号化処理に用いるためのパラメータが送信される。このパラメータは、パラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される（ステップＳ３２３）。若し、パラメータ保持部１２に保持されているパラメータに誤りが存在していた場合、この誤りは、パラメータ供給元４０から供給されたパラメータで、パラメータ保持部１２に保持されるパラメータを上書きすることで訂正されることになる。
【０１３７】
また、誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に保持させる（ステップＳ３２４）。若し、誤り検出符号保持部２１に保持されている検出符号に誤りが存在していた場合、この誤りは、パラメータ供給元４０から供給されたパラメータから生成した検出符号で、誤り検出符号保持部２１に保持される検出符号を上書きすることで訂正されることになる。
【０１３８】
パラメータ供給元４０は、符号化装置６’に対してパラメータを送信した後、符号化部１０による符号化処理の再開を指示する符号化制御信号を出力する（ステップＳ３２５）。パラメータ供給元４０は、パラメータ保持部１２や誤り検出符号生成部２０から、パラメータの受信を示す通知を受け取ってから、この符号化制御信号を出力するようにしてもよい。符号化部１０は、この符号化制御信号を受信すると、符号化処理を再開させる。
【０１３９】
符号化処理が再開されると、処理が上述したステップＳ３０７に移行され、パラメータ保持部１２に保持されたパラメータが符号化部１０に供給される。
【０１４０】
ステップＳ３０７でパラメータが符号化部１０に供給されると、処理がステップＳ３０８に移行される。ステップＳ３０８では、符号化部１０により、パラメータ保持部１２から供給されたパラメータを用いて、ステップＳ３０４で供給された符号化対象データの符号化処理が行われる。このとき、符号化対象データがそのまま出力データとして出力される（ステップＳ３０９）。
【０１４１】
次のステップＳ３１０で、符号化装置６’は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ３０４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【０１４２】
一方、ステップＳ３１０で、符号化対象データが残っていないと判定した場合、処理がステップＳ３１１に移行され、符号化部１０により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部１１に対して出力される。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。その後、処理がステップＳ３０３に戻される。
【０１４３】
このように、符号化装置６’は、誤り検出の結果、誤りが検出された場合にパラメータ保持部１２に保持されるパラメータを初期化できるため、簡易な構成で高い信頼性が得られる。
【０１４４】
（第６の実施形態）
次に、第６の実施形態について説明する。本第６の実施形態は、上述した第１〜第５の実施形態による各符号化装置２〜６のうち何れか１の出力選択部１１の出力に対して記憶素子を接続し、出力選択部１１から出力された符号化対象データおよび符号化データを、この記憶素子に記憶させるようにしたメモリシステムの例である。
【０１４５】
図１６は、第６の実施形態によるメモリシステムの一例の構成を示す。この図１６は、図７を用いて説明した符号化装置４に対して記憶素子５０を接続して構成したメモリシステムの例が示されている。このメモリシステムは、例えば、情報処理装置などの外部機器から供給されたデータを記憶素子５０に記憶させると共に、当該データに対して符号化処理を行い、この符号化処理により生成された符号化データを当該データと対応付けて記憶素子５０に記憶させる。なお、図１６において、図７と共通する部分には同一の符号を付して、詳細な説明を省略する。
【０１４６】
出力選択部１１の出力に、記憶素子５０が接続される。出力選択部１１から出力された符号化対象データおよび符号化データが記憶素子５０に記憶される。出力選択部１１の出力に接続される記憶素子５０の種類は、データの書き込みが可能な素子であれば、特に限定されない。例えば、ＤＲＡＭ(Dynamic  Random  Access  Memory)やＮＡＮＤ型フラッシュメモリといった半導体メモリを記憶素子５０として用いることができる。
【０１４７】
図１７は、本第６の実施形態によるメモリシステムの動作を示す一例のフローチャートである。この図１７のフローチャートに示す各処理は、ステップＳ２４３およびステップＳ２４４の、出力選択部１１から出力される符号化データまたは符号化対象データを記憶素子５０に記憶させる処理以外は、図８のフローチャートを用いて説明した、符号化装置４の動作における各処理と略同一である。
【０１４８】
図１７において、メモリシステムが起動されると、外部から供給されたパラメータ（ステップＳ２３０）がパラメータ保持部１２に保持されると共に、誤り検出符号生成部２０に供給される（ステップＳ２３１）。誤り検出符号生成部２０は、供給されたパラメータから誤り検出符号を生成し、生成した誤り検出符号を誤り検出符号保持部２１に保持させる（ステップＳ２３２）。
【０１４９】
次のステップＳ２３３で、符号化装置４は、例えば外部の情報処理装置から入力データとして供給される符号化対象データを待機し、符号化対象データが受信されると、次のステップＳ２３４で、受信した符号化対象データが符号化部１０に供給されると共に、出力選択部１１の一方の選択入力端に入力される。
【０１５０】
次のステップＳ２３５で、誤り検出部２２が、誤り検出符号保持部２１に保持される誤り検出符号を用いて、パラメータ保持部１２に保持されるパラメータについて誤り検出を行い、誤り検出の結果に基づき、誤りが検出されたか否かを判定する（ステップＳ２３６）。
【０１５１】
若し、誤りが検出されなかったと判定した場合、誤り検出部２２は、誤りが無い旨を示す誤り検出信号をパラメータ選択部２４に対して出力し、処理をステップＳ２３７に移行させる。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、一方の選択入力端が選択される。ステップＳ２３７では、パラメータ保持部１２に保持されたパラメータが、パラメータ選択部２４を介して符号化部１０に供給される。
【０１５２】
一方、ステップＳ２３６で、誤りが検出されたと判定した場合、誤り検出部２２は、処理をステップＳ２３８に移行させると共に、誤りが有る旨を示す誤り検出信号をパラメータ選択部２４に対して出力する。パラメータ選択部２４では、誤り検出部２２から供給された誤り検出信号に応じて、他方の選択入力端が選択される。
【０１５３】
ステップＳ２３８で、誤り訂正部２３は、ステップＳ２３５の誤り検出部２２による誤り検出結果に基づき、検出された誤りが誤り検出符号（誤り検出・訂正符号）の持つ誤り訂正能力で誤り訂正可能であるか否かを判定する。
【０１５４】
若し、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正可能であると判定した場合、処理がステップＳ２３９に移行される。ステップＳ２３９では、誤り訂正部２３により、誤り検出符号保持部２１に保持される誤り検出符号と、パラメータ保持部１２に保持されるパラメータとを用いて誤り訂正が行われる。誤り訂正処理された訂正済みパラメータは、パラメータ選択部２４を介して符号化部１０に供給されると共に、パラメータ保持部１２に供給され、パラメータ保持部１２に既に保持されているパラメータに対して上書きして保持される。また、誤り訂正処理された訂正済み検出符号は、誤り検出符号保持部２１に供給され、誤り検出符号保持部２１に既に保持されているパラメータに対して上書きして保持される。
【０１５５】
ステップＳ２３７またはステップＳ２３９の処理が終了すると、処理がステップＳ２４１に移行される、符号化部１０により、パラメータ選択部２４から供給されたパラメータを用いて、ステップＳ２３４で供給された符号化対象データの符号化処理が行われる。このとき、出力選択部１１では一方の選択入力端が選択されており、出力選択部１１から、符号化対象データがそのまま出力データとして出力される（ステップＳ２４２）。この出力選択部１１から出力された符号化対象データは、記憶素子５０に供給され、記憶される。
【０１５６】
次のステップＳ２４４で、符号化装置４は、符号化対象データがまだ残っているか否かを判定する。若し、符号化対象データがまだ残っていると判定した場合は、処理がステップＳ２３４に戻され、残りの符号化対象データに対して繰り返して処理を行う。
【０１５７】
一方、ステップＳ２４４で、符号化対象データが残っていないと判定した場合、処理がステップＳ２４５に移行され、符号化部１０により、所定量の符号化対象に対する符号化処理が完了したことを示す符号化処理完了信号が出力選択部１１に対して出力される。出力選択部１１は、この符号化処理完了信号に応じて入力端を一方の選択入力端から他方の選択入力端に切り替える。符号化部１０で符号化対象データを符号化した符号化データは、出力データとして出力選択部１１から出力される。出力選択部１１から出力された符号化データは、記憶素子５０に供給され、記憶される。その後、処理がステップＳ２３３に戻される。
【０１５８】
一方、上述のステップＳ２３８において、検出された誤りが誤り検出符号の持つ誤り訂正能力で訂正不能であると判定した場合、処理がステップＳ２４０に移行される。ステップＳ２４０で、誤り訂正部２３は、誤り訂正が不能であることを示す誤り訂正不能通知を外部、例えば符号化対象データの供給元の情報処理装置に対して出力する。そして、この図１７のフローチャートによる一連の処理を終了させる。例えば、ステップＳ２４０で誤り訂正不能通知が出力された時点で符号化部１０における符号化処理を終了させ、符号化データを符号化装置４から出力しないようにする。
【０１５９】
このように、本第６の実施形態によるメモリシステムでは、符号化部１０が符号化処理に用いるパラメータの誤り検出および誤り訂正を行って符号化部１０に供給すると共に、パラメータに誤りが検出される毎に当該パラメータの誤り訂正を行い、誤りが訂正されたパラメータでパラメータ保持部１２に保持されるパラメータを上書きするようにしている。そのため、符号化データの信頼性が高まり、記憶素子５０に記憶されるデータの信頼性も向上できる。
【０１６０】
なお、本第６の実施形態においても、ステップＳ２３６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第１の変形例で説明したように、ステップＳ２３９のパラメータの誤り訂正の前後に符号化処理の停止および再開を行う処理を適用することができる。
【０１６１】
同様に、ステップＳ２３６でパラメータに誤りが検出された場合に、上述の第１の実施形態の第２の変形例で説明したように、ステップＳ２３９のパラメータに誤り訂正の後、符号化対象データを供給する供給元に対して符号化対象データの再供給を要求し、その後、ステップＳ２３３で符号化対象データの入力を待機する処理を適用することができる。これは、記憶素子５０が例えばＮＡＮＤフラッシュメモリである場合に、特に好ましい。      
【０１６２】
（第７の実施形態）
次に、第７の実施形態について説明する。本第７の実施形態は、符号化部１０に生成多項式を適用した場合のより具体的な符号化装置の例である。先ず、図１８を用いて、生成多項式を適用した符号化装置１００について原理的に説明する。図１８は、生成多項式Ｇ(ｘ)をｘ8＋ｘ7＋ｘ6＋ｘ4＋１とした場合の符号化装置１００の一例の構成を示す。
【０１６３】
符号化装置１００は、生成多項式Ｇ(ｘ)の最大次数（この例では８次）の個数分のレジスタ１１０1、１１０2、…、１１０8と、生成多項式Ｇ(ｘ)の各次元において、係数が「１」となっている次元のレジスタの入力に配置されるＸＯＲ回路１１１1、１１１2、１１１3および１１１4とを有し、循環構造を持ったシフトレジスタを構成する。符号化対象データは、ビット毎にＸＯＲ回路１１２に入力されてレジスタ１１０8の出力とでＸＯＲ演算されて、ＸＯＲ回路１１１4、１１１3、１１１2および１１１1にそれぞれ入力され、各レジスタ１１０1、１１０2、…、１１０8を循環される。
【０１６４】
各レジスタ１１０1、１１０2、…、１１０8には、符号化途中結果の値が格納される。所定量の符号化対象データが入力されることで、各レジスタ１１０1、１１０2、…、１１０8から符号化出力が取り出される。
【０１６５】
この符号化装置１００は、各レジスタ１１０1、１１０2、…、１１０8と、各ＸＯＲ回路１１１1、１１１2、１１１3および１１１4との関係が、生成多項式Ｇ(ｘ)に従い固定され、生成多項式Ｇ(ｘ)＝ｘ8＋ｘ7＋ｘ6＋ｘ4＋１に専用の構成となっている。したがって、他の生成多項式Ｇ(ｘ)に対応する符号化装置が必要な場合には、別途、回路を用意する必要がある。
【０１６６】
図１９は、本第７の実施形態による符号化装置１２０の一例の構成を示す。この符号化装置１２０は、パラメータの設定により異なる生成多項式Ｇ(ｘ)を実現することができると共に、パラメータに対する誤り検出および誤り訂正を行うことができる。なお、ここでは、符号化装置１２０は、ＢＣＨ符号の符号化を行う最大次数が「８」の符号化装置であるものとする。
【０１６７】
図１９において、符号化装置１２０は、レジスタ設定回路１３０と、誤り検出・訂正回路１３１と、符号化部３００と、パラメータ保持部３０１と、パラメータ選択部３０２と、誤り検出符号保持部３０３とを有する。これらのうち、誤り検出・訂正回路１３１は、例えば図３の誤り検出部２２の機能と誤り訂正部２３の機能とを併せ持つ。符号化部３００、パラメータ保持部３０１、パラメータ選択部３０２および誤り検出符号保持部３０３は、それぞれ、例えば図３の符号化部１０、パラメータ保持部１２、パラメータ選択部２４および誤り検出符号保持部２１に対応する。
【０１６８】
符号化部３００は、それぞれ対応可能な最大次数の個数分（この例では８個）のレジスタ１３６0、１３６1、…、１３６7と、これら各レジスタ１３６0、１３６1、…、１３６7の間にそれぞれ配置されるＸＯＲ回路１３７1、１３７2、…、１３７8と、ＸＯＲ回路１３７8を除く各ＸＯＲ回路１３７1、１３７2、…、１３７7の有効／無効を設定するＡＮＤ回路１３５1、１３５2、…、１３５7とを有し、循環構造を持ったシフトレジスタを構成する。
【０１６９】
符号化対象データは、ＸＯＲ回路１３７8に入力されてレジスタ１３６7の出力とでＸＯＲ演算されて各ＡＮＤ回路１３５1、１３５2、…、１３５7の一方の入力端にそれぞれ供給される。各ＡＮＤ回路１３５1、１３５2、…、１３５7の出力が各ＸＯＲ回路１３７1、１３７2、…、１３７7に供給される。このとき、各ＡＮＤ回路１３５1、１３５2、…、１３５7のうち、他方の入力端に値「０」が入力されたＡＮＤ回路の出力が入力されるＸＯＲ回路は、無効とされ、入力値がそのまま出力に現れる。符号化対象データは、ＸＯＲ回路１３７8、ならびに、ＸＯＲ回路１３７1、１３７2、…、１３７7のうち有効とされているＸＯＲ回路で、直前のレジスタの出力とＸＯＲ演算がなされ、各レジスタ１３６0、１３６1、…、１３６7を循環される。
【０１７０】
各レジスタ１３６0、１３６1、…、１３６7には、符号化途中結果の値が格納される。所定量の符号化対象データが入力されることで、各レジスタ１３６0、１３６1、…、１３６7から符号化データが取り出される。
【０１７１】
パラメータ保持部３０１は、それぞれ次数に対応する最大次数の個数分より１少ない（最大次数が８のこの例では７個になる）のレジスタ１３３1、１３３2、…、１３３７を有する。また、誤り検出符号保持部３０３は、誤り検出符号の各ビットを格納する複数のレジスタ１３２1、１３２2、…、１３２5を有する。
【０１７２】
レジスタ設定回路１３０は、パラメータ保持部３０１の各レジスタ１３３1、１３３2、…、１３３７に格納する各パラメータを生成する。また、レジスタ設定回路１３０は、誤り検出符号生成部を有し、この各パラメータから誤り検出符号を生成する。レジスタ設定回路１３０で生成された各パラメータは、各レジスタ１３３1、１３３2、…、１３３7に格納される。また、レジスタ設定回路１３０で生成された各誤り検出符号は、各レジスタ１３２1、１３２2、…、１３２5に格納される。
【０１７３】
パラメータ選択部３０２は、最大次数の個数分より１少ない数のセレクタ１３４1、１３４2、…、１３４7を有する。各セレクタ１３４1、１３４2、…、１３４7は、一方の選択入力端に対して各レジスタ１３３1、１３３2、…、１３３7の出力がそれぞれ接続される。また、他方の選択入力端に対して、誤り検出・訂正部１３１から出力された、各次数に対応する訂正済みパラメータがそれぞれ入力される。
【０１７４】
符号化部３００において、各ＸＯＲ回路１３７1、１３７2、…、１３７7の一方の入力端には各ＡＮＤ回路１３５1、１３５2、…、１３５7の出力が接続される。なお、最大次数に対応するＸＯＲ回路１３７8は、常に有効である必要があるため、ＡＮＤ回路は接続されない。さらに、各ＡＮＤ回路１３５1、１３５2、…、１３５7の一方の入力端には、ＸＯＲ回路１３７8の出力が接続されて符号化対象データが入力され、他方の入力端にはそれぞれセレクタ１３４1、１３４2、…、１３４7の出力が接続される。各セレクタ１３４1、１３４2、…、１３４7は、レジスタ１３３1、１３３2、…、１３３7に格納されたパラメータと、誤り検出・訂正回路１３１からそれぞれ供給された訂正済みパラメータとのうち何れを用いるかを選択する。
【０１７５】
この構成によれば、各セレクタ１３４1、１３４2、…、１３４7の出力に応じて、各ＸＯＲ回路１３７1、１３７2、…、１３７7の有効／無効を切り替えることができ、生成多項式Ｇ(ｘ)の構成を変更することが可能となる。したがって、各レジスタ１３３1、１３３2、…、１３３7に格納された値をパラメータとして、生成多項式Ｇ(ｘ)の構成を決定できる。例えば、各レジスタ１３３1、１３３2、…、１３３7には値「０」または値「１」が格納され、値「１」が格納されるレジスタに対応する次元の項からなる生成多項式が構成される。
【０１７６】
一方、誤り検出・訂正回路１３１は、パラメータ保持部３０１の各レジスタ１３３1、１３３2、…、１３３7に格納された各パラメータと、各レジスタ１３２1、１３２2、…、１３２5に格納された各誤り検出符号とを用いて誤り検出および誤り訂正を行う。誤り訂正された訂正済みパラメータおよび訂正済み検出符号は、レジスタ設定回路１３０を介して、各レジスタ１３３1、１３３2、…、１３３7、ならびに、各レジスタ１３２1、１３２2、…、１３２5に供給され、上書き保持される。
【０１７７】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１７８】
１，２，３，４，５，６，１００，１２０  符号化装置
１０，３００  符号化部
１１  出力選択部
１２，３０１  パラメータ保持部
２０  誤り検出符号生成部
２１，３０３  誤り検出符号保持部
２２，３２  誤り検出部
２３，３３  誤り訂正部
２４，３０２  パラメータ選択部
３０  ハミング符号生成部
３１  ハミング符号保持部
４０  パラメータ供給元
４１  誤り訂正不能通知受信部
４１’  誤り検出通知受信部
５０  記憶素子
【図１】
0005674700.tif 000002
【図２】
0005674700.tif 000003
【図３】
0005674700.tif 000004
【図４−１】
0005674700.tif 000005
【図４−２】
0005674700.tif 000006
【図４−３】
0005674700.tif 000007
【図５】
0005674700.tif 000008
【図６】
0005674700.tif 000009
【図７】
0005674700.tif 000010
【図８】
0005674700.tif 000011
【図９】
0005674700.tif 000012
【図１０】
0005674700.tif 000013
【図１１】
0005674700.tif 000014
【図１２】
0005674700.tif 000015
【図１３】
0005674700.tif 000016
【図１４】
0005674700.tif 000017
【図１５】
0005674700.tif 000018
【図１６】
0005674700.tif 000019
【図１７】
0005674700.tif 000020
【図１８】
0005674700.tif 000021
【図１９】
0005674700.tif 000022