(57)【要約】 【課題】信頼性の高い誤り訂正処理を行う。【解決手段】誤り訂正回路は、複数ビットからなる入力データのシンドローム情報を演算するシンドローム演算部と、シンドローム情報に基づいて入力データの誤り位置情報を演算する誤り位置演算部と、所定のタイミングでシンドローム情報又は誤り位置情報を保持する保持部と、誤り位置情報に基づく入力データの誤り訂正データと入力データとの一方を選択してシンドローム演算部に入力する入力切替部と、誤り訂正データをシンドローム演算部に入力して演算されたシンドローム情報に基づいて、入力データの誤りが正しく検知されたか否かを判断する誤り検知判断部と、誤り検知判断部にて誤りが正しく検知されたと判断されると、保持部に保持された情報に基づいて入力データを誤り訂正して出力し、誤り検知判断部にて誤りが正しく検知されなかったと判断されると、入力データを誤り訂正なしで出力する誤り訂正部と、を備える【選択図】図１
2020150515.tif 000002
【特許請求の範囲】
【請求項１】
複数ビットからなる入力データのシンドローム情報を演算するシンドローム演算部と、
前記シンドローム情報に基づいて前記入力データの誤り位置情報を演算する誤り位置演算部と、
所定のタイミングで前記シンドローム情報又は前記誤り位置情報を保持する保持部と、
前記誤り位置情報に基づく前記入力データの誤り訂正データと、前記入力データと、の一方を選択して前記シンドローム演算部に入力する入力切替部と、
前記誤り訂正データを前記シンドローム演算部に入力して演算されたシンドローム情報に基づいて、前記入力データの誤りが正しく検知されたか否かを判断する誤り検知判断部と、
前記誤り検知判断部にて誤りが正しく検知されたと判断されると、前記保持部に保持された情報に基づいて前記入力データを誤り訂正して出力し、前記誤り検知判断部にて誤りが正しく検知されなかったと判断されると、前記入力データを誤り訂正なしで出力する誤り訂正部と、を備える、誤り訂正回路。
【請求項２】
前記保持部は、前記誤り位置演算部が前記誤り位置情報を出力した後の前記所定のタイミングで、前記シンドローム情報又は前記誤り位置情報を保持し、
前記シンドローム演算部は、前記保持部が前記シンドローム情報又は前記誤り位置情報を保持した後に、前記誤り訂正データの前記シンドローム情報を演算する、請求項１に記載の誤り訂正回路。
【請求項３】
前記入力切替部は、前記所定のタイミング以前は、前記入力データを前記シンドローム演算部に入力し、前記所定のタイミング以後は、前記誤り位置情報に基づく前記入力データの誤り訂正データを前記シンドローム演算部に入力する、請求項２に記載の誤り訂正回路。
【請求項４】
前記保持部は、前記所定のタイミングで論理が変化する切替信号に同期して、前記シンドローム情報又は前記誤り位置情報を保持し、
前記入力切替部は、前記切替信号に同期して、前記入力データと前記誤り訂正データとを切り替えて前記シンドローム演算部に入力する、請求項２又は３に記載の誤り訂正回路。
【請求項５】
前記誤り検知判断部は、前記シンドローム情報を構成する全ビットが同一論理か否かで、前記入力データの誤りが正しく検知されたか否かを判断する、請求項１乃至４のいずれか一項に記載の誤り訂正回路。
【請求項６】
前記入力データに含まれるパリティビットに基づいて、前記入力データに奇数個のビット誤りがあるか否かを演算するパリティ演算部と、
前記パリティ演算部の演算結果と前記シンドローム情報とに基づいて、前記シンドローム演算部の誤り検知能力を超える所定のビット数以下の誤りを検知する誤り検知演算部と、を備え、
前記誤り訂正部は、前記誤り検知演算部の演算結果にかかわらず、前記誤り検知判断部にて前記入力データの誤りが正しく検知されなかったと判断された場合には、前記入力データを誤り訂正なしで出力する、請求項１乃至５のいずれか一項に記載の誤り訂正回路。
【請求項７】
前記誤り位置情報のビット数を前記入力データのビット数に変換するデコード演算部を備え、
前記誤り訂正部は、前記デコード演算部でビット数を変換した後の誤り位置情報に基づいて、前記入力データの誤り訂正を行い、
前記保持部は、前記所定のタイミングまでは前記誤り位置演算部から出力された前記誤り位置情報を前記デコード演算部に入力し、前記所定のタイミングにて前記誤り位置演算部から出力された前記誤り位置情報を保持して前記デコード演算部に入力する、請求項１乃至６のいずれか一項に記載の誤り訂正回路。
【請求項８】
前記保持部は、前記所定のタイミングまでは前記シンドローム演算部から出力された前記シンドローム情報を前記誤り位置演算部に入力し、前記所定のタイミングにて前記シンドローム演算部から出力された前記シンドローム情報を保持して、保持されたシンドローム情報を前記誤り位置演算部に入力する、請求項１乃至６のいずれか一項に記載の誤り訂正回路。
【請求項９】
メモリと、
前記メモリから読み出した複数ビットからなる読出データの誤り訂正を行う誤り訂正回路と、を備えるメモリシステムであって、
前記誤り訂正回路は、
前記読出データのシンドローム情報を演算するシンドローム演算部と、
前記シンドローム情報に基づいて前記読出データの誤り位置情報を演算する誤り位置演算部と、
所定のタイミングで前記シンドローム情報又は前記誤り位置情報を保持する保持部と、
前記誤り位置情報に基づく前記読出データの誤り訂正データと、前記読出データと、の一方を選択して前記シンドローム演算部に入力する入力切替部と、
前記誤り訂正データを前記シンドローム演算部に入力して演算されたシンドローム情報に基づいて、前記読出データの誤りが正しく検知されたか否かを判断する誤り検知判断部と、
前記誤り検知判断部にて誤りが正しく検知されたと判断されると、前記保持部に保持された情報に基づいて前記読出データを誤り訂正して出力し、前記誤り検知判断部にて誤りが正しく検知されなかったと判断されると、前記読出データを誤り訂正なしで出力する誤り訂正部と、を有するメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、誤り訂正回路及びメモリシステムに関する。
【背景技術】
【０００２】
最近のＤＲＡＭ等の揮発メモリやフラッシュメモリ等の不揮発メモリは、微細化及び高速化が進んだ影響で、書き込んだデータの信頼性が低下する傾向にあり、読み出したデータを誤り訂正する誤り訂正回路が求められている。
【０００３】
誤り訂正回路は、誤り訂正可能なビット数に制限があり、誤り訂正回路の誤り訂正能力を超えるビット数を含むデータが誤り訂正回路に入力されると、正しくない誤り訂正を行ってしまい、却って誤りビット数が増えるおそれがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許１０，０９７，２０７号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、信頼性の高い誤り訂正処理を行うことが可能な誤り訂正回路及びメモリシステムを提供するものである。
【課題を解決するための手段】
【０００６】
本実施形態によれば、複数ビットからなる入力データのシンドローム情報を演算するシンドローム演算部と、
前記シンドローム情報に基づいて前記入力データの誤り位置情報を演算する誤り位置演算部と、
所定のタイミングで前記シンドローム情報又は前記誤り位置情報を保持する保持部と、
前記誤り位置情報に基づく前記入力データの誤り訂正データと、前記入力データと、の一方を選択して前記シンドローム演算部に入力する入力切替部と、
前記誤り訂正データを前記シンドローム演算部に入力して演算されたシンドローム情報に基づいて、前記入力データの誤りが正しく検知されたか否かを判断する誤り検知判断部と、
前記誤り検知判断部にて誤りが正しく検知されたと判断されると、前記保持部に保持された情報に基づいて前記入力データを誤り訂正して出力し、前記誤り検知判断部にて誤りが正しく検知されなかったと判断されると、前記入力データを誤り訂正なしで出力する誤り訂正部と、を備える、誤り訂正回路が提供される。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態による誤り訂正回路を備えたメモリシステムの概略構成を示すブロック図。
【図２】第２の実施形態による誤り訂正回路を備えたメモリシステムの概略構成を示すブロック図。
【図３】１ビット分のラッチの内部構成の一例を示す回路図。
【図４】図３のメモリシステムのタイミング図。
【図５】第３の実施形態による誤り訂正回路を備えたメモリシステムの概略構成を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施の形態について説明する。なお、本件明細書と添付図面においては、理解のしやすさと図示の便宜上、一部の構成部分を省略、変更または簡易化して説明および図示しているが、同様の機能を期待し得る程度の技術内容も、本実施の形態に含めて解釈することとする。
【０００９】
（第１の実施形態）
図１は第１の実施形態による誤り訂正回路１を備えたメモリシステム２の概略構成を示すブロック図である。図１のメモリシステム２は、メモリ３と、誤り訂正回路１とを備えている。本実施形態によるメモリシステム２は、不図示のメモリコントローラ等も備えているが、図１では省略している。
【００１０】
メモリ３は、揮発メモリでも不揮発メモリでもよい。揮発メモリは、例えばＤＲＡＭ（Dynamic Random Access Memory）又はＳＲＡＭ（Static Random Access Memory）でもよい。不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）又はＰＲＡＭ（Phase-change Random Access Memory）でもよい。
【００１１】
図１の誤り訂正回路１は、シンドローム演算部４と、誤り位置演算部５と、誤り訂正部６と、保持部７と、入力切替部８と、誤り検知判断部９とを備えている。
【００１２】
シンドローム演算部４は、複数ビットからなる入力データのシンドローム情報を演算する。図１のメモリシステム２では、入力データはメモリ３から読み出した複数ビットからなる読出データである。以下では、メモリ３からの読出データを入力データｄ’と呼ぶ。
【００１３】
シンドローム演算部４は、例えばｎビットの入力データｄ’からｍビット（例えばｍ＜ｎ）のシンドローム情報ｓを生成する。シンドローム情報ｓを構成する全ビットが０であれば、入力データｄ’に誤りがないことを示している。シンドローム情報ｓを構成するｍビットのビット列の少なくとも１ビットが１であれば、入力データｄ’に誤りがあることを示している。シンドローム情報ｓは、入力データｄ’に誤りがあるか否かの情報だけでなく、入力データｄ’中の誤り位置を示す情報を含んでいる。
【００１４】
誤り位置演算部５は、シンドローム情報ｓに基づいて入力データｄ’の誤り位置情報を演算する。誤り位置情報は、シンドローム情報ｓと同じビット数（例えばｍビット）である。
【００１５】
誤り訂正部６は、誤り位置情報に基づいて、入力データｄ’の誤り訂正を行って出力データを生成する。誤り位置情報と入力データｄ’は一般にはビット数が異なるため、図１では省略しているが、誤り位置情報のビット数を入力データｄ’のビット数に合わせるデコード処理を行った後に、誤り訂正部６は、デコード処理後の誤り位置情報に基づいて、入力データｄ’の誤り訂正処理を行う。より具体的には、誤り訂正部６は、入力データｄ’の中で、誤っているビットを反転する処理を行う。
【００１６】
誤り訂正部６が入力データｄ’中の何ビットまでの誤り訂正ができるかは、シンドローム演算部４の構成に依存する。入力データｄ’中にシンドローム演算部４の誤り検知能力以上の誤りビットがある場合、シンドローム演算部４から出力されるシンドローム情報ｓは信頼性のない情報になるため、誤り訂正部６による誤り訂正も信頼性のないものになる。
【００１７】
保持部７は、所定のタイミングでシンドローム情報ｓ又は誤り位置情報を保持する。本実施形態では、誤り位置演算部５から出力された誤り位置情報に基づいて入力データｄ’の誤り訂正を行った誤り訂正データをシンドローム演算部４に入力してシンドローム情報ｓを再演算する。再演算により、シンドローム情報ｓが変わってしまうため、本実施形態では、元のシンドローム情報ｓ、又は元のシンドローム情報ｓに基づいて演算された誤り位置情報を保持部７に保持する。
【００１８】
保持部７は、誤り位置演算部５が誤り位置情報を出力した後の所定のタイミングで、シンドローム情報ｓ又は誤り位置情報を保持する。シンドローム演算部４は、保持部７がシンドローム情報ｓ又は誤り位置情報を保持した後に、誤り位置情報に基づく入力データｄ’の誤り訂正データのシンドローム情報ｓを演算する。
【００１９】
入力切替部８は、誤り位置情報に基づく入力データｄ’の誤り訂正データと、入力データｄ’と、の一方を選択してシンドローム演算部４に入力する。入力切替部８は、所定のタイミング以前は、入力データｄ’をシンドローム演算部４に入力し、所定のタイミング以後は、誤り訂正データをシンドローム演算部４に入力する。
【００２０】
保持部７は、所定のタイミングで論理が変化する切替信号に同期して、シンドローム情報ｓ又は誤り位置情報を保持し、入力切替部８は、切替信号に同期して、入力データｄ’又は誤り訂正データを切り替えてシンドローム演算部４に入力する。
【００２１】
誤り検知判断部９は、誤り訂正データをシンドローム演算部４に入力して演算されたシンドローム情報ｓに基づいて、入力データｄ’の誤りが正しく検知されたか否かを判断する。より具体的には、誤り検知判断部９は、シンドローム情報ｓを構成する全ビットが同一論理か否かで、入力データｄ’の誤りが正しく検知されたか否かを判断する。
【００２２】
誤り訂正部６は、誤り検知判断部９にて誤りが正しく検知されたと判断されると、保持部７に保持された情報に基づいて入力データを誤り訂正して出力し、誤り検知判断部９にて誤りが正しく検知されなかったと判断されると、入力データを誤り訂正なしで出力する。
【００２３】
次に、図１の誤り訂正回路１の動作を説明する。図１の誤り訂正回路１では、メモリ３から読み出したデータを入力データｄ’としてシンドローム演算部４に入力する。シンドローム演算部４は、入力データｄ’に誤りがあるか否かを検出し、誤りがあるか否かの情報と、誤りがある場合には誤り位置に関する情報とを含むシンドローム情報ｓを演算する。なお、シンドローム演算部４は、誤り訂正能力を超えないビット数以内の誤りが入力データｄ’にある場合には、信頼性のあるシンドローム情報ｓを生成する。仮に誤り訂正能力を超えるビット数以上の誤りが入力データｄ’にある場合には、シンドローム演算部４で演算されたシンドローム情報ｓは信頼性のない情報である。
【００２４】
誤り位置演算部５は、シンドローム情報ｓに基づいて誤り位置情報を演算する。シンドローム情報ｓが信頼性のある情報の場合には、誤り位置情報も信頼性のある情報になるが、シンドローム情報ｓが信頼性のない情報の場合には、誤り位置情報も信頼性のない情報になる。保持部７は、シンドローム情報ｓ又は誤り位置情報を保持する。
【００２５】
誤り位置演算部５は、シンドローム情報ｓが信頼性のある情報か否かを判断できないため、本実施形態では、シンドローム演算部４で再演算を行うことで、元のシンドローム情報ｓが信頼性のある情報か否かを判断する。
【００２６】
より具体的には、入力切替部８は、誤り位置情報に基づく入力データｄ’の誤り訂正データをシンドローム演算部４に入力する。誤り位置情報に基づく入力データｄ’の誤り訂正データとは、入力データｄ’を誤り位置情報で誤り訂正した後のデータである。仮に誤り位置情報が信頼性のある情報の場合には、誤り位置情報に基づく入力データｄ’の誤り訂正データは、誤りを含まないデータになるはずである。よって、この誤り訂正データをシンドローム演算部４に入力して再演算すると、再演算されたシンドローム情報ｓは、オールゼロになるはずである。
【００２７】
誤り検知判断部９は、再演算されたシンドローム情報ｓがオールゼロか否かにより、入力データｄ’をシンドローム演算部４に入力して演算された元のシンドローム情報ｓが信頼性のある情報であったか否かを判断する。
【００２８】
誤り検知判断部９にて、シンドローム情報ｓが信頼性のある情報であったと判断されると、誤り訂正部６は、保持部７に保持されたシンドローム情報ｓ又は誤り位置情報に基づく入力データｄ’の誤り訂正を行う。この場合は、誤り訂正部６から出力されるデータは、誤りが正しく訂正されたデータになる。一方、誤り検知判断部９にて、シンドローム情報ｓが信頼性のない情報であったと判断されると、誤り訂正部６は、誤り訂正を行うことなく、入力データｄ’をそのまま出力する。この場合、入力データｄ’にはシンドローム演算部４の誤り検知能力を超えたビット数の誤りが含まれているが、誤り訂正回路１を通すことで、さらに入力データｄ’の誤りが増えるおそれはなくなる。
【００２９】
このように、第１の実施形態では、シンドローム情報ｓに基づいて演算された誤り位置情報を用いて入力データｄ’を誤り訂正した誤り訂正データをシンドローム演算部４に入力してシンドローム情報ｓを再演算するため、元のシンドローム情報ｓが信頼性のある情報であったか否かを簡易かつ迅速に把握できる。元のシンドローム情報ｓが信頼性のない情報であったと判断された場合は、入力データｄ’を誤り訂正することなく、そのまま出力するため、信頼性のないシンドローム情報ｓに基づいて入力データｄ’を誤り訂正することで、さらに誤りビット数が増えるという不具合が生じなくなる。
【００３０】
（第２の実施形態）
第２の実施形態による誤り訂正回路１は、第１の実施形態による誤り訂正回路１をより具体化したものである。
【００３１】
図２は第２の実施形態による誤り訂正回路１を備えたメモリシステム２の概略構成を示すブロック図である。図２では、図１と共通する構成部分には同一符号を付しており、以下では相違点を中心に説明する。
【００３２】
図２の誤り訂正回路１は、図１の誤り訂正回路１の構成に加えて、誤り訂正制御部１０と、デコード演算部１１と、誤り訂正出力部１２と、パリティ演算部１３と、誤り検知演算部１４とを備えている。
【００３３】
誤り訂正制御部１０は、誤り検知判断部９にて誤りが正しく検知されたと判断されると、保持部７に保持されたシンドローム情報ｓ又は誤り位置情報に基づく入力データｄ’の誤り訂正を誤り訂正部６に行わせ、誤り検知判断部９にて誤りが正しく検知されなかったと判断されると、誤り訂正部６に対して入力データｄ’を誤り訂正なしで出力させる。
【００３４】
デコード演算部１１は、誤り位置演算部５から出力された誤り位置情報をデコードして、入力データｄ’と同じビット数の誤り位置情報に変換する。誤り位置情報のビット数が例えばｍビットの場合、デコード演算部１１は、ｎビット（例えばｎ＞ｍ）の誤り位置情報に変換して出力する。ｎ＝２ｍ−１＋α、ただし、０＜α＜２ｍ−１である。
【００３５】
誤り訂正出力部１２は、誤り訂正部６で誤り訂正されたデータを所定のタイミング、例えばECC_end信号の立ち上がりエッジで保持して出力する。ECC_end信号は、保持部７が保持するタイミングよりも遅いタイミングで論理が変化する信号であり、誤り訂正回路１の外部から入力される信号である。誤り訂正出力部１２は、入力データｄ’と同じビット数分のｎ個のラッチを有する。
【００３６】
パリティ演算部１３は、入力データｄ’の各ビットの値と、１ビットのパリティビットの値とを足し合わせた値の最下位ビットが０になれば誤りなしと判断し、１になれば奇数個のビット誤りがあると判断する。このように、パリティ演算部１３は、入力データｄ’に含まれる奇数ビット分の誤りを迅速に検出できる。
【００３７】
誤り検知演算部１４は、パリティ演算部１３の出力値とシンドローム情報ｓとに基づいて、シンドローム演算部４の誤り検知能力よりも所定ビット数多いビット数までの誤りを検知する。より具体的には、誤り検知演算部１４は、シンドローム演算部４の誤り検知能力よりも１ビット多いビット数までの誤りを検知する。誤り検知演算部１４の出力である誤り検知情報は１ビットデータであり、例えば０であれば誤りを検知したことを示し、１であれば誤りを検知しなかったことを示す。
【００３８】
保持部７は、シンドローム演算部４から出力されたシンドローム情報ｓを保持する。保持部７は、シンドローム情報ｓと同じビット数（例えばｍビット）分のラッチ１５である。
【００３９】
図３は１ビット分のラッチ１５の内部構成の一例を示す回路図である。図３のラッチ１５は、複数のインバータ１６〜１９と、トランスファゲート２０を有する。トランスファゲート２０は、ECC_verify信号が非アクティブ（例えばロー論理）のときに、入力ビットDataを通過させる。トランスファゲート２０の後段の２つのインバータ１７，１８で保持動作を行う。ECC_verify信号は、誤り位置演算部が誤り位置情報を出力した後に非アクティブからアクティブ（例えばハイ論理）に論理が変化する信号である。上述したECC_end信号が非アクティブ（例えばロー論理）からアクティブ（例えばハイ論理）に変化するタイミングは、ECC_verify信号が非アクティブからアクティブに変化した後である。
【００４０】
図３のラッチ１５は、ECC_verify信号が非アクティブの間は、入力ビットDataをそのまま出力する。ECC_verify信号がアクティブになると、トランスファゲート２０は入力ビットDataを遮断する。トランスファゲート２０の後段側の２つのインバータ１７，１８は、入出力端子が互いに接続されているため、これらインバータ１７，１８は、トランスファゲート２０が閉じる直前の入力ビットDataを反転した論理を保持する保持動作を行う。これらインバータ１７，１８の後段にインバータ１９があるため、トランスファゲート２０が閉じる直前の入力ビットDataと同じ論理のデータが出力される。
【００４１】
このように、図３のラッチ１５は、ECC_verify信号が非アクティブの間は入力ビットDataをそのままの論理で出力し、ECC_verify信号がアクティブの間は、ECC_verify信号がアクティブになる直前の入力ビットDataの論理を保持する。
【００４２】
ここで、ECC_verify信号は、誤り位置演算部５が誤り位置情報を出力した後に論理が変化する切替信号であり、誤り訂正回路１の外部から入力される信号である。
【００４３】
保持部７は、図３のラッチ１５を例えばｍ個有する。なお、ｍの値は誤り訂正を行うビット数に応じて変化し、１ビット訂正の際に必要なラッチ１５の数がｍ個の場合、ｔビット訂正の際にはｍ×ｔ個のラッチ１５が必要になる。保持部７を通過、又は保持部７で保持されたシンドローム情報ｓは、誤り位置演算部５と誤り検知演算部１４に入力される。誤り位置演算部５は、保持部７を通過、又は保持部７で保持されたシンドローム情報ｓの誤り位置を演算して、誤り位置情報を出力する。誤り検知演算部１４は、保持部７を通過、又は保持部７で保持されたシンドローム情報ｓとパリティ情報とに基づいて、誤り検知情報を出力する。
【００４４】
誤り検知判断部９は、例えばｍビット入力のＯＲゲート２１を有する。このＯＲゲート２１には、シンドローム情報ｓの各ビットが入力される。シンドローム情報ｓの全ビットがゼロの場合のみ、ＯＲゲート２１はゼロを出力する。シンドローム情報ｓの少なくとも１ビットが１の場合には、ＯＲゲート２１は１を出力する。ＯＲゲート２１の出力がゼロであれば、シンドローム演算部４は入力データｄ’に誤りがないと判断したことを示している。
【００４５】
誤り訂正制御部１０は、例えばｎビット分のｎ個のＡＮＤゲート２２と、その後段側に配置されるｎ個のＡＮＤゲート２３とを有する。前段側のｎ個のＡＮＤゲート２２は、デコード演算部１１でデコードされた誤り位置情報の対応ビットと、誤り検知演算部１４の出力の反転データとの論理積を演算する。すなわち、前段側のｎ個のＡＮＤゲート２２は、誤り検知演算部１４が誤りを検知した場合には、誤り位置情報の対応ビットの論理をそのまま出力し、誤り検知演算部１４が誤りを検知しなかった場合には、ゼロを出力する。
【００４６】
後段側のｎ個のＡＮＤゲート２３は、前段側のｎ個のＡＮＤゲート２２の各出力と、誤り検知判断部９の出力の反転データとの論理積を演算する。すなわち、後段側のｎ個のＡＮＤゲート２３は、誤り検知判断部９が誤りなしと判断した場合には、前段側のｎ個のＡＮＤゲート２２の出力をそのまま出力し、誤り検知判断部９が誤りありと判断した場合には、ゼロを出力する。
【００４７】
このように、誤り訂正制御部１０は、誤り検知判断部９がシンドローム情報ｓに誤りがあると判断した場合にはゼロを出力し、誤り検知判断部９がシンドローム情報ｓに誤りがないと判断した場合には、デコードされた誤り位置情報を出力する。
【００４８】
誤り訂正部６は、入力データｄ’のｎビット分のｎ個のＥｘＯＲゲート２４を有する。各ＥｘＯＲゲート２４は、入力データｄ’の対応ビットと、誤り訂正制御部１０内の後段側のＡＮＤゲート２３の出力との排他的論理和を演算する。すなわち、誤り訂正制御部１０の出力の対応ビットがゼロであれば、入力データｄ’の対応ビットをそのまま出力し、誤り訂正制御部１０の出力の対応ビットが１であれば、入力データｄ’の対応ビットを反転して出力する。
【００４９】
入力切替部８は、例えば入力データｄ’と同じビット数分のｎ個のＡＮＤゲート２５と、ｎ個のＥｘＯＲゲート２６とを有する。各ＡＮＤゲート２５は、ECC_verify信号がアクティブのときに、誤り訂正制御部１０内の前段側のＡＮＤゲート２２の出力の対応ビットをそのまま出力し、ECC_verify信号が非アクティブのときは、ゼロを出力する。このように、ｎ個のＡＮＤゲート２５は、ECC_verify信号がアクティブのときに、誤り位置情報をシンドローム演算部４の入力側に帰還させる。
【００５０】
各ＥｘＯＲゲート２６は、入力データｄ’の対応ビットと、対応するＡＮＤゲート２５の出力との排他的論理和を演算する。ｎ個のＥｘＯＲゲート２６の出力は、シンドローム演算部４とパリティ演算部１３に入力される。誤り訂正処理を始めた直後は、ECC_verify信号が非アクティブであるため、ｎ個のＥｘＯＲゲート２６は、入力データｄ’をそのままシンドローム演算部４とパリティ演算部１３に入力する。
【００５１】
ECC_verify信号がアクティブになると、ｎ個のＥｘＯＲゲート２６は、誤り訂正制御部１０内の前段側のｎ個のＡＮＤゲート２２の出力をシンドローム演算部４とパリティ演算部１３に入力する。
【００５２】
図４は図３のメモリシステム２のタイミング図である。時刻ｔ０でメモリシステム２から読み出されたデータ（入力データｄ’）が誤り訂正回路１に入力される。シンドローム演算部４は、時刻ｔ０〜ｔ１までの間にシンドローム演算を行ってシンドローム情報ｓを出力する。
【００５３】
その後、誤り位置演算部５は、時刻ｔ１〜ｔ２の間に誤り位置を演算して、誤り位置情報を出力する。図４に示すように、誤り位置の演算は、シンドローム演算よりも長時間を要する。
【００５４】
時刻ｔ２にECC_verify信号がアクティブになると、誤り位置情報がシンドローム演算部４の入力側に帰還されてＥｘＯＲゲート２６にて入力データｄ’の誤り訂正が行われ、誤り訂正データがシンドローム演算部４に入力される。シンドローム演算部４は、時刻ｔ２〜ｔ３の間にシンドローム演算を再度行って、シンドローム情報ｓを再度出力する。再度出力されたシンドローム情報ｓに基づいて、誤り検知判断部９は誤り訂正を行うか否かを判断し、その判断結果に基づいて、誤り訂正部６は入力データｄ’を誤り訂正して出力するか、あるいは入力データｄ’をそのまま出力する。時刻ｔ３で、ECC_end信号がアクティブになったタイミングで、誤り訂正出力部１２は誤り訂正部６の出力を保持して出力する。
【００５５】
このように、第２の実施形態では、パリティ演算部１３と誤り検知演算部１４を設けることで、シンドローム演算部４の誤り検知能力よりも１ビット多い誤りを検知できるようにしているが、シンドローム演算部４の演算結果に基づいて正しく誤り訂正できない場合には、誤り訂正なしで入力データｄ’をそのまま出力する。これにより、誤り訂正回路１は、入力データｄ’に含まれる誤りビット数以上の誤りを含むデータを出力するおそれがなくなる。
【００５６】
（第３の実施形態）
第３の実施形態は、第２の実施形態とは保持部７の配置場所が異なっている。
【００５７】
図５は第３の実施形態による誤り訂正回路１を備えたメモリシステム２の概略構成を示すブロック図である。図５の誤り訂正回路１は、図３の誤り訂正回路１と比べて、保持部７の配置場所が異なる他は共通する。
【００５８】
図５の保持部７は、誤り位置演算部５から出力された誤り位置情報を保持する。誤り位置情報は、例えばｍビットである。よって、保持部７は、誤り位置情報の各ビットを保持するｍ個のラッチ１５を有する。図３のラッチ１５もｍ個必要だったため、ラッチ１５の必要数としては図３と図５の保持部７で同じである。各ラッチ１５は、ECC_verify信号が非アクティブの間は、誤り位置演算部５から出力された誤り位置情報をそのまま出力し、ECC_verify信号がアクティブになったタイミングで、誤り位置情報を保持する。
【００５９】
図５のデコード演算部１１は、ｍ個のラッチ１５から出力された誤り位置情報をデコードして、ｎビット（例えばｎ＞ｍ）の誤り位置情報に変換する。デコード演算部１１から出力されたｎビットの誤り位置情報は、ECC_verify信号がアクティブになったタイミングで、入力切替部８内のＡＮＤゲート２５を通過して、シンドローム演算部４の入力側に帰還される。より具体的には、入力切替部８内のＥｘＯＲゲート２６は、入力データｄ’を誤り位置情報で誤り訂正した誤り訂正データを生成し、この誤り訂正データがシンドローム演算部４に入力される。よって、ECC_verify信号がアクティブの間、シンドローム演算部４は、誤り訂正データのシンドローム情報ｓを生成する。
【００６０】
このように、ECC_verify信号が非アクティブからアクティブになると、シンドローム情報ｓが変化し、それに応じて誤り位置演算部５で演算される誤り位置情報も変化する。しかしながら、ECC_verify信号がアクティブの間は、保持部７は以前の保持動作を継続しているため、誤り位置演算部５から出力される誤り位置情報が変化しても、デコード演算部１１の入力データｄ’は変化しない。よって、デコード演算部１１は、シンドローム演算部４が最初に演算したシンドローム情報ｓに応じた誤り位置情報をデコードして出力し続ける。
【００６１】
図５の誤り訂正回路１のタイミング図は図４と同様である。誤り訂正部６は、シンドローム演算部４で再演算したシンドローム情報ｓに誤りがなければ、誤り位置情報に基づいて入力データｄ’の該当ビットを反転する。一方、誤り訂正部６は、再演算したシンドローム情報ｓに誤りがあれば、入力データｄ’を誤り訂正することなく、そのまま出力する。
【００６２】
このように、図５の誤り訂正回路１は、誤り位置演算部５から出力された誤り位置情報をECC_verify信号がアクティブになったタイミングで保持するとともに、誤り位置情報をシンドローム演算部４の入力側に帰還させるため、シンドローム演算部４にて誤り訂正データのシンドローム情報ｓを再演算することができる。再演算したシンドローム情報ｓがオールゼロでの場合のみ、保持している誤り位置情報を用いて入力データｄ’の誤り訂正を行い、オールゼロでない場合は、入力データｄ’をそのまま出力するため、入力データｄ’を誤り訂正回路１に通すことで、入力データｄ’の誤りビット数が増えるという不具合が生じなくなる。図５の誤り訂正回路１は、図４の誤り訂正回路１と同様のハードウェア規模で実現されることができ、得られる作用効果も第２の実施形態と同様である。
【００６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６４】
１  誤り訂正回路、２  メモリシステム、３  メモリ、４  シンドローム演算部、５  誤り位置演算部、６  誤り訂正部、７  保持部、８  入力切替部、９  誤り検知判断部、１０  誤り訂正制御部、１１  デコード演算部、１２  誤り訂正出力部、１３  パリティ演算部、１４  誤り検知演算部、１５  ラッチ、１６、１７、１８、１９  インバータ、２０  トランスファゲート
【図１】
2020150515.tif 000003
【図２】
2020150515.tif 000004
【図３】
2020150515.tif 000005
【図４】
2020150515.tif 000006
【図５】
2020150515.tif 000007