(57)【要約】【課題】プログラムメモリとしてＮＡＮＤ型フラッシュメモリを使用しながらも、ＣＰＵがエラーの無いプログラムをメモリ３０から直接読み込み、これを実行することを可能とする制御装置を提供する。【解決手段】制御装置２０は、ＣＰＵ１０が実行するプログラムデータと該プログラムデータに対応する基準のＥＣＣとを予め格納したメモリ３０から該プログラムデータを受信し、該プログラムデータに基づいて対象のＥＣＣを計算するＥＣＣ計算回路２５と、基準のＥＣＣと対象のＥＣＣとを比較するＥＣＣ比較器２７と、基準のＥＣＣと対象のＥＣＣとの比較結果に基づいてプログラムデータのうちエラーデータを訂正するエラー訂正回路２９とを備え、訂正後のプログラムデータをＣＰＵ１０へ送信する。【選択図】　図２
2004126911.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵが実行するプログラムデータと該プログラムデータに対応する第１のエラー修正用コードとを予め格納したメモリから該プログラムデータを受信し、該プログラムデータに基づいて第２エラー修正用コードを計算するエラー修正用コード計算回路と、
前記第１のエラー修正用コードと前記第２のエラー修正用コードとを比較するエラー修正用コード比較器と、
前記第１のエラー修正用コードと前記第２のエラー修正用コードとの比較結果に基づいて前記プログラムデータのうちエラーデータを訂正するエラー訂正回路とを備え、
訂正後の前記プログラムデータを前記ＣＰＵへ送信する制御装置。
【請求項２】
前記ＣＰＵから前記メモリへ所定のアドレス値を送信するインタフェース回路と、
当該ＣＰＵ制御装置が前記所定のアドレス値に従って前記メモリから読み込んだ前記プログラムデータおよび前記第１のエラー修正用コードを格納する格納部とをさらに備え、
前記格納部が前記プログラムを格納するときに並行して、前記エラー修正用コード計算回路が、前記メモリから該プログラムを受信して前記第２のエラー修正用コードを計算することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記ＣＰＵから前記メモリへ所定のアドレス値を送信するインタフェース回路と、
前記所定のアドレス値に従って前記メモリから前記プログラムおよび前記第１のエラー修正用コードを外部に設けられた格納部へ転送するＤＭＡコントローラとをさらに備え、
前記エラー修正用コード計算回路が、前記格納部から前記プログラムを受信して第２のエラー修正用コードを計算し、
前記格納部から前記ＣＰＵへ訂正後の前記プログラムを送信することを特徴とする請求項１に記載の制御装置。
【請求項４】
前記インタフェース回路は、前記ＣＰＵから最初に読み込むページのプログラムデータのアドレス値を受け取るときに前記ＣＰＵへ待機命令を発し、前記ＣＰＵへ該ページの訂正後のプログラムデータを送信した後に該ＣＰＵへ実行命令を発することを特徴とする請求項２または請求項３に記載の制御装置。
【請求項５】
前記メモリはＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１から請求項４のいずれかに記載の制御装置。
【請求項６】
前記格納部はＳＲＡＭであることを特徴とする請求項２または請求項３に記載の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は制御装置に関する。
【０００２】
【従来の技術】
従来からデジタルカメラの画像データ用記憶媒体、メモリカード、音声録音用の半導体メモリ等に、ＮＡＮＤ型フラッシュメモリやＮＯＲ型フラッシュメモリが使用されている。近年、デジタル画像の高画質化等により、ますます大容量の半導体メモリが要求されている。
【０００３】
一般に、ＮＡＮＤ型フラッシュメモリはＮＯＲ型フラッシュメモリに比べ高集積化に優れているので、ＮＡＮＤ型フラッシュメモリはＮＯＲ型フラッシュメモリよりも単位面積内に大きな容量を有し得る。また、ＮＡＮＤ型フラッシュメモリは、ＮＯＲ型フラッシュメモリに比べ、メモリセルへの書換えに要する消費電力が少なく、書換え速度も速い。従って、今後、ＮＡＮＤ型フラッシュメモリの需要がますます高まるものと予想される。
【０００４】
【発明が解決しようとする課題】
しかし、ＮＯＲ型メモリやＤＲＡＭは従来からプログラムメモリおよびデータメモリとして使用されているが、ＮＡＮＤ型フラッシュメモリはプログラムメモリではなくデータメモリとしてしか使用されなかった。これは、ＮＡＮＤ型フラッシュメモリが主にエラービットを有することを前提として用いられているからである。
【０００５】
ＮＡＮＤ型フラッシュメモリは、各ページ毎に、データを格納するデータ領域のほかに、冗長メモリ領域を予め備える。この冗長メモリ領域には、例えば、エラーを検出しさらにエラーを訂正するＥＣＣ（Ｅｒｒｏｒ　Ｃｏｒｒｅｃｔｉｎｇ　Ｃｏｄｅ）が格納される。典型的には、１ページは、５１２バイトのデータ領域および１６バイトの冗長メモリ領域で構成される。
【０００６】
このようなＮＡＮＤ型フラッシュメモリに格納されたプログラムを実行するときには、１ページ分のデータの読み出しと同時に冗長メモリに格納されたＥＣＣも読み出され、一旦、揮発性メモリであるＳＲＡＭへ書き込まれる。このＳＲＡＭは、ＣＰＵに付随するメモリ、例えば、キャッシュメモリなどである。次に、ＥＣＣがチェックされ、エラー検出およびエラー訂正が実行された後、ＣＰＵがＳＲＡＭからプログラムコードを読み出して実行する。これらの読み出し動作並びにエラー検出および訂正は総てＣＰＵが他のプログラムを実行することによって行われる。よって、ＮＡＮＤ型フラッシュメモリに格納されたプログラムをＣＰＵが実行するためには、ＮＡＮＤ型フラッシュメモリからＳＲＡＭへプログラムデータを書き込む段階、ＳＲＡＭ上のデータのエラー検出・訂正を行う段階およびＣＰＵがＳＲＡＭからプログラムデータを読み出す段階の３段階が必要であった。
【０００７】
一般に、ＳＲＡＭは、ＮＡＮＤ型フラッシュメモリよりも集積度が低い。従って、プログラマは、ＮＡＮＤ型フラッシュメモリに格納されているプログラムを如何にＳＲＡＭに格納するかを考慮する必要があった。即ち、プログラマは、ＳＲＡＭのメモリ構成などのハードウェアを意識してプログラムを作成しなければならないという問題があった。
【０００８】
また、ＮＡＮＤ型フラッシュメモリからＳＲＡＭへプログラムコードを転送するためには前記の転送用のプログラムが必要である。この転送用プログラムを格納するために不揮発性メモリがさらに必要となり、コストを増加させてしまうという問題があった。
【０００９】
一方で、データメモリおよびプログラムメモリに互いに異なる種類のメモリを使用することは製造コストを増加させる。従って、データメモリとしてＮＡＮＤ型フラッシュメモリを用い、尚且つ、プログラムメモリとしてＮＯＲ型フラッシュメモリを用いることはコストの観点から好ましくない。
【００１０】
そこで、本発明の目的は、プログラムメモリとしてＮＡＮＤ型フラッシュメモリを使用しながらも、ＣＰＵがエラーの無いプログラムコードをメモリ３０から直接読み込み、これを実行することを可能とする制御装置を提供することである。
【００１１】
また、本発明の目的は、プログラムメモリとしてＮＡＮＤ型フラッシュメモリを使用しながらも、プログラマがハードウェアを意識することなくプログラムを作成することを可能とする制御装置を提供することである。
【００１２】
【課題を解決するための手段】
本発明に従った実施の形態による制御装置は、ＣＰＵが実行するプログラムデータと該プログラムデータに対応する第１のエラー修正用コードとを予め格納したメモリから該プログラムデータを受信し、該プログラムデータに基づいて第２エラー修正用コードを計算するエラー修正用コード計算回路と、前記第１のエラー修正用コードと前記第２のエラー修正用コードとを比較するエラー修正用コード比較器と、前記第１のエラー修正用コードと前記第２のエラー修正用コードとの比較結果に基づいて前記プログラムデータのうちエラーデータを訂正するエラー訂正回路とを備え、訂正後の前記プログラムデータを前記ＣＰＵへ送信する。
【００１３】
【発明の実施の形態】
以下、図面を参照し、本発明による実施の形態を説明する。尚、本実施の形態は本発明を限定するものではない。
【００１４】
図１は、本発明に従った実施の形態によるＮＡＮＤ型フラッシュメモリ制御装置２０を用いたプログラム処理システムのブロック図である。ＣＰＵ１０とＮＡＮＤ型フラッシュメモリ３０（以下単に、メモリ３０ともいう）との間にＮＡＮＤ型フラッシュメモリ制御装置２０（以下単に、制御装置２０ともいう）が通信可能に接続されている。
【００１５】
ＣＰＵ１０は、実行しようとするプログラムが格納されているアドレスを発信し、そのアドレスをもとに受信したプログラムを処理する。
【００１６】
メモリ３０は、ＮＡＮＤ型フラッシュメモリであるので、プログラムデータのほかに、プログラムデータのエラービットを訂正するために用いられるＥＣＣ（Ｅｒｒｏｒ　Ｃｏｒｒｅｃｔｉｎｇ　Ｃｏｄｅ）を予め格納する。ここで、メモリ３０に予め格納されているＥＣＣは、プログラムデータのエラービットを検出するときに比較の基準となるので、以下、“基準のＥＣＣ”ともいう。
【００１７】
制御装置２０は、メモリ３０からプログラムデータをバッファリングし、プログラムデータのエラービットを訂正し、その後、ＣＰＵ１０へ訂正後のプログラムデータを送信する。
【００１８】
ＣＰＵ１０と制御装置２０との間には、内部アドレスバス、内部データバス、内部ステータスバスおよび内部ウェイト要求バスが接続されている。内部アドレスバスはＣＰＵ１０が制御装置２０へアドレスを出力するために用いられる。内部データバスは、制御装置２０がＣＰＵ１０へプログラムデータを送信するために用いられる。内部ステータスバスは、ＣＰＵ１０の内部ステータスを制御装置２０へ出力するために用いられる。内部ウェイト要求バスは、制御装置２０からＣＰＵ１０を待機させるための信号を出力するために用いられる。
【００１９】
制御装置２０とメモリ３０との間には、外部データバスおよび外部制御バスが接続されている。外部データバスは、制御装置２０がメモリ３０からプログラムデータを受信するために用いられる。外部制御バスは、制御装置２０がメモリ３０の所定のアドレスからデータを読み出す場合に制御装置２０がメモリ３０を制御するために用いられる。
【００２０】
図２は、ＮＡＮＤ型フラッシュメモリ制御装置２０の第１の実施形態である制御装置２０ａのブロック図である。制御装置２０ａは、インタフェース回路２１、データバッファ２３、ＥＣＣコード計算回路２５、ＥＣＣコード比較器２７、並びに、エラー判定および訂正場所計算回路２９を備える。
【００２１】
インタフェース回路２１は、プログラムを実行するＣＰＵ１０が出力するアドレスを受信し、制御装置２０ａへそのアドレス値を送信する。データバッファ２３は、アドレス値に従ってメモリ３０からプログラムデータおよびＥＣＣを読み込み、これらを格納する。
【００２２】
ＥＣＣ計算回路２５は、メモリ３０からプログラムデータを受信し、このプログラムデータに基づいてＥＣＣを計算する。ここで、ＥＣＣ計算回路２５によって計算されたＥＣＣは、プログラムデータのエラービットを検出するときに比較の対象となるので、以下、“対象のＥＣＣ”ともいう。
【００２３】
ＥＣＣ比較器２７は、データバッファ２３から基準のＥＣＣを獲得し、ＥＣＣ計算回路２５から対象のＥＣＣを獲得し、基準のＥＣＣと対象のＥＣＣとを比較する。
【００２４】
エラー判定および訂正場所計算回路２９は、ＥＣＣ比較器２７から比較結果を獲得し、エラーを判定し、そのエラービットの場所を計算する。データバッファ２３に格納されているプログラムデータのうち、エラー判定および訂正場所計算回路２９によって計算された場所のデータが訂正される。
【００２５】
データバッファ２３は、例えば、ＳＲＡＭなどによって形成され得る。インタフェース回路２１、ＥＣＣコード計算回路２５、ＥＣＣコード比較器２７、並びに、エラー判定および訂正場所計算回路２９は、デジタルロジック回路として構成されている。
【００２６】
図３は、制御装置２０ａの動作を示すタイミングチャートである。図２および図３を参照しつつ、制御装置２０ａの動作を説明する。
【００２７】
まず、制御装置２０ａは、内部アドレスバスおよび内部ステータスバスを介して、ＣＰＵ１０が出力するアドレスおよびステータスを確認する。それにより、制御装置２０ａは、ＣＰＵ１０が実行しようとするプログラムがメモリ３０に格納されているプログラムデータか否かを判断する。ＣＰＵ１０が実行しようとするプログラムがメモリ３０に格納されていると判断した場合には、ＣＰＵ１０を待機させるために、インタフェース回路２１がＣＰＵ１０へ内部ウエイト要求バスを介して内部ウエイト要求をアサートする（Ｓ０）。
【００２８】
次に、インタフェース回路１０は、ＣＰＵ１０が出力したアドレス値に基づいたアドレス入力コマンドを実行する（Ｓ１）。これによって、制御装置２０ａは、ＣＰＵ１０が出力したアドレスに従ってメモリ３０からＣＰＵ１０が要求するプログラムを獲得することができる。
【００２９】
次に、制御装置２０ａが、メモリ３０から最初の１ページ分のプログラムデータを連続的に読み込み、データバッファ２３へこれを格納する（Ｓ２）。
【００３０】
プログラムデータがデータバッファ２３へ格納される動作と並行して、ＥＣＣ計算回路２５は、このプログラムデータに基づいて“対象のＥＣＣ”を算出する（Ｓ２）。このとき、ＥＣＣ計算回路２５は対象のＥＣＣを論理演算回路とラッチにより求める。好ましくは、ＥＣＣ計算回路２５は、データバッファ２３を介することなく、プログラムデータをメモリ３０から直接読み込んで、“対象のＥＣＣ”を算出する。ただし、ＥＣＣ計算回路２５は、データバッファ２３に一旦格納されたプログラムデータを読み込んで“対象のＥＣＣ”を算出してもよい。
【００３１】
次に、制御装置２０ａは、最初の１ページ分の“基準のＥＣＣ”をメモリ３０から読み込む（Ｓ３）。基準のＥＣＣはデータバッファ２３へ格納される。最初の１ページのアドレス値は、図３に示すように、例えば、１０００Ｈである。
【００３２】
基準のＥＣＣはデータバッファ２３からＥＣＣ比較器２７へ送信され、対象のＥＣＣはＥＣＣ計算回路２５からＥＣＣ比較器２７へ送信される。ＥＣＣ比較器２７は基準のＥＣＣと対象のＥＣＣとを比較する。好ましくは、ＥＣＣ比較器２７によるこの比較動作は、“基準のＥＣＣ”をデータバッファ２３へ格納する動作と並行して実行される。
【００３３】
次に、エラー判定および訂正場所計算回路２９がエラービットの検出およびその訂正を行う（Ｓ４）。エラー判定および訂正場所計算回路２９は、ＥＣＣ比較器２７から基準のＥＣＣと対象のＥＣＣとの比較結果を獲得する。続いて、エラー判定および訂正場所計算回路２９は、基準のＥＣＣに対して対象のＥＣＣが異なる場合にはそのページのデータにエラービットが在ると判定し、エラービットが在る場所を計算する。その計算結果に基づいて、データバッファ２３に格納されているプログラムデータのうち、エラー判定および訂正場所計算回路２９によって計算された場所のデータが訂正される。一方、基準のＥＣＣと対象のＥＣＣとが一致する場合には、エラー判定および訂正場所計算回路２９はデータバッファ２３に格納されているプログラムデータにエラービットが無いと判定する。
【００３４】
次に、制御装置２０ａは、内部ウエイト要求をデアサートすると共に、ＣＰＵ１０に対しプログラムデータを送信し、ＣＰＵ１０がこのプログラムデータを処理する（Ｓ５）。
【００３５】
ＣＰＵ１０が最初の１ページ目のプログラムデータ以外のアドレスを出力したときには、制御装置２０ａは該ページのプログラムデータを同様に読み込む。該ページのアドレス値は、例えば、３０００Ｈである。該ページも１ページ目と同様に上述したステップＳ１からステップＳ５に従って処理される。尚、一般的な単位ページのデータ量を上述したが、本発明において単位ページのデータ量は特に限定しない。
【００３６】
従来、プログラムデータの転送やエラービットの検出および訂正はＣＰＵが転送用プログラムやエラー検出および訂正用のプログラムを実行することによって処理されていた。即ち、従来は、ソフトウェアを利用して、プログラムデータのエラービットの検出および訂正が行われていた。
【００３７】
しかし、本実施の形態によれば、このエラービットの検出および訂正は、ＥＣＣ計算回路２５、ＥＣＣ比較器２７、並びに、エラー判定および訂正場所計算回路２９によって処理される。ＥＣＣ計算回路２５、ＥＣＣ比較器２７、並びに、エラー判定および訂正場所計算回路２９はいずれも論理演算回路である。よって、制御装置２０ａは、ソフトウェアを用いることなく、ハードウェアを用いてエラービットの検出および訂正を行う。それによって、ＣＰＵ１０はエラービットの検出および訂正のためのソフトウェアを処理する必要がなくなる。また、このようなソフトウェアを格納するための追加の格納部が不要となる。よって、本実施の形態によれば、プログラム処理システムのコストを低減することができる。
【００３８】
図４は、ＮＡＮＤ型フラッシュメモリ制御装置２０の第２の実施形態である制御装置２０ｂのブロック図である。本実施の形態は、専用のデータバッファを有さず、ＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）コントローラ２２を備えている点で第１の実施の形態と異なる。本実施の形態は、専用のデータバッファを有していないので、外部メモリ４０（例えば、ＣＰＵに付随する外部ＳＲＡＭ）をバッファとして利用する。
【００３９】
ＤＭＡコントローラ２２は、ＣＰＵを介することなく、メモリ３０内のプログラムデータを外部メモリ４０へ転送することができる。よって、本実施の形態において、転送用プログラムは不要である。
【００４０】
制御装置２０ｂの動作を説明する。制御装置２０ｂの動作のタイミングチャートは、図３に示したタイミングチャートと同様である。従って、図３および図４を参照して制御装置２０ｂの動作を説明する。
【００４１】
制御装置２０ｂのステップＳ０における動作は、制御装置２０ａのステップＳ０における動作と同様である。
【００４２】
次に、インタフェース回路１０は、ＣＰＵ１０が出力したアドレス値に基づいたアドレス入力コマンドを実行する（Ｓ１）。これによって、ＤＭＡコントローラ２２は、ＣＰＵ１０が出力したアドレスに従ってメモリ３０から外部メモリ４０へプログラムを転送することができる。
【００４３】
次に、ＤＭＡコントローラ２２は、メモリ３０から最初の１ページ分のプログラムデータを連続的に外部メモリ４０へ転送する（Ｓ２）。外部メモリ４０へ転送されたプログラムデータは、随時、外部データバスを介して外部メモリ４０からＥＣＣ計算回路２５へ送信される。ＥＣＣ計算回路２５は、外部メモリ４０へのプログラムデータ転送に並行して、プログラムデータに基づいて“対象のＥＣＣ”を計算する。
【００４４】
次に、ＤＭＡコントローラ２２は、最初の１ページ分の“基準のＥＣＣ”をメモリ３０から外部メモリ４０へ転送する（Ｓ３）。基準のＥＣＣが外部メモリ４０へ転送されたときに、随時、この基準のＥＣＣは、外部データバスを介して外部メモリ４０からＥＣＣ比較器２７へ送信される。最初の１ページのアドレス値は、図３に示すように、例えば、１０００Ｈである。
【００４５】
対象のＥＣＣはＥＣＣ計算回路２５からＥＣＣ比較器２７へ送信される。ＥＣＣ比較器２７は基準のＥＣＣと対象のＥＣＣとを比較する。好ましくは、ＥＣＣ比較器２７によるこの比較動作は、“基準のＥＣＣ”を外部メモリ４０へ転送する動作と並行して実行される。
【００４６】
次に、エラー判定および訂正場所計算回路２９がエラービットの検出およびその訂正を行う（Ｓ４）。エラー判定および訂正場所計算回路２９は、ＥＣＣ比較器２７から基準のＥＣＣと対象のＥＣＣとの比較結果を獲得する。続いて、エラー判定および訂正場所計算回路２９は、基準のＥＣＣに対して対象のＥＣＣが異なる場合にはそのアドレスバスにエラービットが在ると判定し、エラービットが在る場所を計算する。その計算結果に基づいて、外部メモリ４０に格納されているプログラムデータのうち、エラーと判定された場所のデータが訂正される。一方、基準のＥＣＣと対象のＥＣＣとが一致する場合には、エラー判定および訂正場所計算回路２９は外部メモリ４０に格納されているプログラムデータにエラービットが無いと判定する。
【００４７】
次に、制御装置２０ｂは、内部ウエイト要求をデアサートすると共に、外部メモリ４０からＣＰＵ１０へプログラムデータを送信し、ＣＰＵ１０がこのプログラムデータを処理する（Ｓ５）。
【００４８】
本実施の形態によれば、第１の実施の形態と同様の効果を得ることができる。さらに、本実施の形態は、制御装置２０ｂ内にデータバッファを有しないので、第１の実施の形態よりも小型化され、コストが低下し得る。
【００４９】
【発明の効果】
本発明に従った制御装置によれば、プログラムメモリとしてＮＡＮＤ型フラッシュメモリを使用しながらも、ＣＰＵがエラーの無いプログラムをメモリ３０から直接読み込み、これを実行することができる。
【００５０】
本発明に従った制御装置によれば、プログラムメモリとしてＮＡＮＤ型フラッシュメモリを使用しながらも、プログラマがハードウェアを意識することなくプログラムを作成することができる。
【図面の簡単な説明】
【図１】本発明に従った実施の形態によるＮＡＮＤ型フラッシュメモリ制御装置２０を用いたプログラム処理システムのブロック図。
【図２】ＮＡＮＤ型フラッシュメモリ制御装置２０の第１の実施形態である制御装置２０ａのブロック図。
【図３】制御装置２０ａの動作を示すタイミングチャート。
【図４】ＮＡＮＤ型フラッシュメモリ制御装置２０の第２の実施形態である制御装置２０ｂのブロック図。
【符号の説明】
１０　ＣＰＵ
２０、２０ａ、２０ｂ　ＮＡＮＤ型フラッシュメモリ制御装置
３０　ＮＡＮＤ型フラッシュメモリ
２１　インタフェース回路
２２　ＤＭＡコントローラ
２３　データバッファ
２５　ＥＣＣコード計算回路
２７　ＥＣＣコード比較器
２９　エラー判定および訂正場所計算回路
４０　外部メモリ
【図１】
2004126911.tif 000003
【図２】
2004126911.tif 000004
【図３】
2004126911.tif 000005
【図４】
2004126911.tif 000006