(57)【要約】【課題】ＥＣＣ機能を搭載しても回路規模が著しく増大しない半導体装置を提供する。【解決手段】フラッシュメモリ内蔵マイコン１００Ａは、リードサイクル内のある時点で誤り検出信号ＥＤＳがＨレベルであるか、または前リードサイクルの誤り検出信号ＥＤＳがＨレベルだったのが現リードサイクルではＬレベルに変化した時のみ、センスアンプ活性化信号ＳＡＡに１ウェイトＷＴを挿入する。これにより、出力データ信号に誤りがあった場合にのみ、誤り訂正後の出力データ信号が確定するのを待ってから出力データ信号の取込みを行なうようにできる。【選択図】図５
2007241625.tif 000002
【特許請求の範囲】
【請求項１】
データ信号およびパリティ信号を記憶するメモリセルアレイと、
前記記憶されているデータ信号およびパリティ信号を読み出すセンスアンプと、
前記読み出されたデータ信号およびパリティ信号を受けて前記データ信号に含まれるエラーを訂正するエラー訂正回路と、
前記エラー訂正回路から出力される出力データ信号を取り込んでデータバスに出力するメモリモジュールインターフェイス回路とを備え、
前記エラー訂正回路は、
前記読み出されたデータ信号とパリティ信号とを組み合わせてシンドローム信号を生成するシンドローム生成部と、
前記シンドローム信号から前記データ信号の誤りビットを特定するデコード部と、
前記デコード部の出力信号に基づいて前記データ信号のエラーを訂正するエラー訂正部とを含み、
前記メモリモジュールインターフェイス回路は、
前記出力データ信号を取り込むタイミングを与えるデータバッファ取込クロック信号、および前記データ信号に誤りが含まれているかどうか判定するタイミングを与える誤り検出信号判定クロック信号を生成するデータ取込クロック生成部と、
前記データバッファ取込クロック信号に応答して前記出力データ信号を取り込むデータバッファとを含み、
前記データ信号に誤りが含まれているかどうかを検出する誤り検出部と、
前記センスアンプの動作を活性化するセンスアンプ活性化信号を生成するセンスアンプ活性化信号生成部とをさらに備え、
前記誤り検出信号判定クロック信号が変化した時点で前記誤り検出信号が活性化されているとき、前記データバッファ取込クロックおよび前記センスアンプ活性化信号を所定時間遅延させる、半導体装置。
【請求項２】
前記半導体装置は、前記誤り検出信号判定クロック信号が変化した時点で前記誤り検出信号が活性化されているとき、前記データバッファ取込クロックを前記所定時間後に発生させることで前記センスアンプ活性化信号を前記所定時間遅延させる、請求項１に記載の半導体装置。
【請求項３】
前記半導体装置は、前リードサイクルと現リードサイクルとで前記誤り検出信号判定クロック信号の変化時における前記誤り検出信号が活性状態から非活性状態に変化したとき、前記データバッファ取込クロックおよび前記センスアンプ活性化信号を前記所定時間遅延させる、請求項１に記載の半導体装置。
【請求項４】
前記半導体装置は、前リードサイクルと現リードサイクルとで前記誤り検出信号判定クロック信号の変化時における前記誤り検出信号が活性状態から非活性状態に変化したとき、前記エラー訂正部がエラー訂正を完了した後に前記データバッファ取込クロックを発生させることで前記センスアンプ活性化信号を前記所定時間遅延させる、請求項３に記載の半導体装置。
【請求項５】
前記データ取込クロック生成部は、前記センスアンプ活性化信号に同期するように前記データバッファの出力信号を取り込むタイミングを与えるレジスタ取込クロック信号を生成し、
前記メモリモジュールインターフェイス回路は、前記レジスタ取込クロック信号に応答して前記データバッファからの出力信号を取り込むレジスタをさらに含む、請求項１に記載の半導体装置。
【請求項６】
前記誤り検出部は、
前記シンドローム信号の論理和をとることにより、前記データ信号に誤りが含まれているかどうかを示す誤り検出信号を出力する論理和段と、
前記誤り検出信号をバッファリングし、前記バッファリングされた誤り検出信号を前記データ取込クロック生成部および前記センスアンプ活性化信号生成部に出力するバッファ段とを含む、請求項１に記載の半導体装置。
【請求項７】
前記センスアンプ活性化信号に応答して、前記誤り検出信号を入力し、かつ前記デコード部の動作を制御するエラー訂正活性化信号を前記デコード部に出力するエラー訂正活性化信号発生回路をさらに備え、
前記エラー訂正活性化信号発生回路は、前記センスアンプ活性化信号が活性化されたとき、前記誤り検出信号および前記センスアンプ活性化信号に基づいて、前記エラー訂正部の活性化および非活性化を制御するエラー訂正活性化信号を前記デコード部に出力し、前記デコード部は、前記エラー訂正活性化信号が非活性化されて入力された場合に前記エラー訂正部を非活性化する信号を出力する、請求項１に記載の半導体装置。
【請求項８】
前記エラー訂正活性化信号発生回路は、前記センスアンプ活性化信号を前記所定時間遅延させた信号に同期して前記誤り検出信号を取り込み、前記デコード部に前記エラー訂正活性化信号を出力し、前記センスアンプ活性化信号に同期してリセットされるフリップフロップ回路を含む、請求項７に記載の半導体装置。
【請求項９】
前記所定時間は、前記データ取込クロック生成部および前記センスアンプ活性化信号生成部の動作を制御する制御クロック信号の１クロックに相当する、請求項１〜８のいずれかに記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体装置に関し、より特定的には、ＥＣＣ（Error Checking and Correcting）機能を搭載したマイコン混載の半導体装置に関する。
【背景技術】
【０００２】
半導体メモリにおいて、ソフトエラーやリテンション不良で書き込まれたデータに対して誤ったデータが読み出された場合に、ＥＣＣを用いて読出データを訂正することが従来から行なわれていた。半導体メモリにＥＣＣを適用している例としては、たとえば非特許文献１がある。また、読出しデータに誤りが存在した場合に活性化される誤り検出信号を出力する手法として、以下のような従来技術がある。
【０００３】
従来のメモリアクセス制御装置は、データと誤り検出・訂正コードとが記憶される記憶モジュールと、その記憶モジュールから読み出されるデータの誤りを検出／訂正する誤り検出・訂正回路と、その誤り検出・訂正回路によって訂正されたデータを保持する機構とを備える。当該メモリアクセス制御装置は、読出データを直接処理装置へ転送するモードでの処理の際に誤り検出・訂正回路が読み出したデータのエラーを検出した場合、エラー発生を処理装置に通知し、保持されている訂正済みのデータを処理装置に転送する（たとえば、特許文献１参照）。
【０００４】
従来のエラー検出・訂正システムは、データメモリおよびチェックビットメモリから読み出されるデータおよびチェックビットに基づきエラーシンドロームを生成するシンドローム生成手段と、生成されたシンドロームに基づきデータメモリから読み出されたデータのエラーを検出するエラー検出手段と、シンドロームラッチおよびデータラッチにそれぞれ一時記憶されたシンドロームおよびデータに基づいてエラーを訂正するエラー訂正手段と、エラー検出手段のエラー検出出力をデータ読出しの再試行指示信号として与える手段とを備える（たとえば、特許文献２参照）。
【０００５】
従来の記憶装置のリトライリード制御方式は、主記憶制御部によって制御される主記憶装置のリードデータにエラーを検出した際に実行されるリトライリードアクセスの制御方式に関する。主記憶制御部は、リトライリードアクセス時にアドレスバッファを参照し、該当するアドレスが存在する時には、通常のリトライリードアクセスとは区別されるリトライリードアクセスを発行する。主記憶装置は、通常とは異なるリトライリードアクセスを認識した時に、メモリを起動することなく、データバッファによって訂正されたリードデータを主記憶制御部に送り返す（たとえば、特許文献３参照）。
【非特許文献１】Ｈ．Ｄａｖｉｓ  他，「オンチップ誤り訂正回路を備えた７０ｎｓワード幅の１ＭビットＲＯＭ（A 70-ns word-wide 1-Mbit ROM with on-chip error-correction circuits」），ＩＥＥＥ  Ｊ．Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ，ｖｏｌ．２０，ｐｐ．９５８−９６３，１９８５年
【特許文献１】特開平９−１３４３１４号公報
【特許文献２】特公平６−７０７７５号公報
【特許文献３】特開平３−４１５３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１および３に記載の従来技術では、訂正なしのデータをラッチするデータラッチと訂正後のデータをラッチするデータラッチとを別々に設けており、エラー検出結果に応じてセレクタでこれらを切換える構成を有する。したがって、特にワイドバス構成を採用する場合に、回路規模が著しく増大するという問題点がある。
【０００７】
特許文献２に記載の従来技術では、ラッチから訂正データを出力する３ステートバッファとデータメモリからの出力とを排他的に制御しており、データバスに２つの経路が存在している。したがって、特にワイドバス構成を採用する場合に、配線が混んで回路規模が著しく増大する可能性がある。
【０００８】
それゆえに、この発明の目的は、ＥＣＣ機能を搭載しても回路規模が著しく増大しない半導体装置を提供することである。
【課題を解決するための手段】
【０００９】
この発明による半導体装置は、データ信号およびパリティ信号を記憶するメモリセルアレイと、記憶されているデータ信号およびパリティ信号を読み出すセンスアンプと、読み出されたデータ信号およびパリティ信号を受けてデータ信号に含まれるエラーを訂正するエラー訂正回路と、エラー訂正回路から出力される出力データ信号を取り込んでデータバスに出力するメモリモジュールインターフェイス回路とを備える。エラー訂正回路は、読み出されたデータ信号とパリティ信号とを組み合わせてシンドローム信号を生成するシンドローム生成部と、シンドローム信号からデータ信号の誤りビットを特定するデコード部と、デコード部の出力信号に基づいてデータ信号のエラーを訂正するエラー訂正部とを含む。メモリモジュールインターフェイス回路は、出力データ信号を取り込むタイミングを与えるデータバッファ取込クロック信号、およびデータ信号に誤りが含まれているかどうか判定するタイミングを与える誤り検出信号判定クロック信号を生成するデータ取込クロック生成部と、データバッファ取込クロック信号に応答して出力データ信号を取り込むデータバッファとを含む。半導体装置は、データ信号に誤りが含まれているかどうかを検出する誤り検出部と、センスアンプの動作を活性化するセンスアンプ活性化信号を生成するセンスアンプ活性化信号生成部とをさらに備え、誤り検出信号判定クロック信号が変化した時点で誤り検出信号が活性化されているとき、データバッファ取込クロックおよびセンスアンプ活性化信号を所定時間遅延させる。
【発明の効果】
【００１０】
この発明によれば、ＥＣＣ機能を搭載しても回路規模が著しく増大しない。
【発明を実施するための最良の形態】
【００１１】
以下、この発明の実施の形態について図面を参照して詳しく説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００１２】
図１は、この発明の実施の形態を説明する背景としてのフラッシュメモリ内蔵マイコン１００の構成を示した概略図である。
【００１３】
図１を参照して、フラッシュメモリ内蔵マイコン１００は、フラッシュメモリモジュール１と、ＣＰＵ（Central Processing Unit）２と、ＲＡＭ（Random Access Memory）３と、ＤＭＡ（Direct Memory Access）コントローラ４と、データバス５と、フラッシュメモリモジュールＩ／Ｆ（Interface）回路６とを備える。フラッシュメモリモジュール１は、フラッシュメモリモジュールＩ／Ｆ回路６を介してデータバス５に接続されている。フラッシュメモリモジュール１は、ＣＰＵ２、ＲＡＭ３およびＤＭＡコントローラ４等とデータバス５を共有している。
【００１４】
フラッシュメモリモジュール１は、センスアンプ（Ｓ／Ａ）群７と、メモリセルアレイ８と、エラー訂正回路１１とを含む。センスアンプ群７は、データ信号を読み出すセンスアンプＳＡ０〜ＳＡ６３と、パリティ信号を読み出すセンスアンプＳＡＰ０〜ＳＡＰ６とを含む。メモリセルアレイ８は、データ信号を記憶するメモリアレイＭ０〜Ｍ６３と、パリティ信号を記憶するメモリアレイＭＰ０〜ＭＰ６とを含む。
【００１５】
センスアンプＳＡ０〜ＳＡ６３は、ビット線ＢＬ０〜ＢＬ６３を介して、メモリアレイＭ０〜Ｍ６３にそれぞれ接続されている。センスアンプＳＡ０〜ＳＡ６３は、データ信号Ｄ０〜Ｄ６３をエラー訂正回路１１にそれぞれ出力する。センスアンプＳＡＰ０〜ＳＡＰ６は、ビット線ＢＬＰ０〜ＢＬＰ６を介して、メモリアレイＭＰ０〜ＭＰ６にそれぞれ接続されている。センスアンプＳＡＰ０〜ＳＡＰ６は、パリティ信号Ｐ０〜Ｐ６をエラー訂正回路１１にそれぞれ出力する。エラー訂正回路１１は、データ信号Ｄ０〜Ｄ６３およびパリティ信号Ｐ０〜Ｐ６を受けて、データ信号Ｄ０〜Ｄ６３に含まれるエラーが訂正された出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ６３をフラッシュメモリモジュールＩ／Ｆ回路６に出力する。
【００１６】
フラッシュメモリモジュールＩ／Ｆ回路６は、データ取込クロック生成部９と、データバスドライバ１０と、データバッファ１５と、レジスタ１６とを含む。データバッファ１５は、データ取込クロック生成部９から出力されるデータバッファ取込クロックＣＬＫｄに同期して、出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ６３を一時的に保持する。レジスタ１６は、データ取込クロック生成部９から出力されるレジスタ取込クロックＣＬＫｒに同期して、データバッファ１５の出力信号を一時的に保持する。
【００１７】
データ取込クロック生成部９は、ＣＰＵ２を制御するＣＰＵクロックＣＬＫｃｐｕに基づいて、データバッファ取込クロックＣＬＫｄおよびレジスタ取込クロックＣＬＫｒを生成する。データバスドライバ１０は、レジスタ１６の出力信号を受けるとともに、データバスドライバ活性化信号ＤＢＳに応じてデータバス５を駆動する。
【００１８】
フラッシュメモリモジュール１からデータ等を読み出す経路について説明する。
センスアンプ群７は、メモリセルアレイ８からのデータの読出しを行なう。データ等の読出し時には、フラッシュメモリモジュール１に入力されるアドレス信号に従って、図示しないワード線およびコラム選択線を介して１つのメモリセルが選択される。選択されたメモリセルは、対応するビット線を介してセンスアンプ群７に接続される。
【００１９】
図２は、図１のセンスアンプ群７におけるセンスアンプＳ／Ａの構成の一例を示した回路図である。
【００２０】
図２を参照して、センスアンプＳ／Ａは、カレントミラー型のセンスアンプ部７０と、インバータ８１，８２と、ＰチャネルＭＯＳトランジスタ８３と、ラッチ回路９０，９５とを含む。センスアンプ部７０は、ＰチャネルＭＯＳトランジスタ７１，７２と、ＮチャネルＭＯＳトランジスタ７３，７４，７５とを含む。ラッチ回路９０は、互いに環状に接続されているインバータ９１，９２を含む。ラッチ回路９５は、互いに環状に接続されているインバータ９６，９７を含む。
【００２１】
ＰチャネルＭＯＳトランジスタ７１は、電源電圧Ｖｄｄを与える電源ノードとノードＮ１との間に接続され、ゲートがノードＮ２に接続されている。ＰチャネルＭＯＳトランジスタ７２は、電源ノードとノードＮ２との間に接続され、ゲートがノードＮ２に接続されている。ＮチャネルＭＯＳトランジスタ７３は、ノードＮ１とノードＮ３との間に接続され、ゲートがビット線ＢＬに接続されている。ビット線ＢＬは、抵抗値Ｒの抵抗を介して電源ノードに接続されている。ＮチャネルＭＯＳトランジスタ７４は、ノードＮ２とノードＮ３との間に接続され、ゲートに基準電圧Ｖｒｅｆが印加される。
【００２２】
ＮチャネルＭＯＳトランジスタ７５は、ノードＮ３と接地ノードとの間に接続され、ゲートにセンスアンプ活性化信号ＳＡＡを受ける。センスアンプ活性化信号ＳＡＡは、センスアンプＳ／Ａの動作を活性化または非活性化する信号であって、インバータ８１，９２，９７およびＰチャネルＭＯＳトランジスタ８３にも供給される。インバータ８１は、ノードＮ１とラッチ回路９０との間に接続されている。ＰチャネルＭＯＳトランジスタ８３は、ラッチ回路９０とラッチ回路９５との間に接続されている。インバータ８２は、ラッチ回路９５と出力端子ＴＲとの間に接続されている。
【００２３】
センスアンプＳ／Ａの動作について説明する。
フラッシュメモリでは、選択されたメモリセルが流す電流がある一定値より多いか少ないかによって、当該メモリセルに蓄えられた情報が１であるか０であるかを判別する。図２に示したセンスアンプＳ／Ａの回路構成では、センスアンプ活性化信号ＳＡＡがＨレベル（論理ハイ）の期間中に（Ｖｄｄ−Ｖｒｅｆ）／Ｒより電流が少ないと０、多いと１と判定される。この判定結果を受けて、センスアンプＳ／Ａの出力端子ＴＲより、対応するＨレベルまたはＬレベル（論理ロー）のデータが出力される。センスアンプＳ／Ａは、センスアンプ活性化信号ＳＡＡがＬレベルになったところで、その時点の出力データをラッチ回路９５に保持する。
【００２４】
センスアンプ群７から出力される信号は、ＥＣＣによってデータの誤りを検出・訂正するエラー訂正回路１１に入力される。ＥＣＣとは、Ｍビットのデータ信号に対してＮビットのパリティ信号を追加し、（Ｍ＋Ｎ）ビットの信号の中にデータが反転している誤りのビットがあった場合にこれを訂正する技術である。具体的には、Ｍビットのデータ信号に対して１ビットの誤り訂正を行なう場合、
【００２５】
【数１】
2007241625.tif 000003
【００２６】
の関係を満たすビット数のパリティ信号をＮビット追加する必要がある。一例として、４ビットのデータ信号Ｄ３〜Ｄ０に３ビットのパリティ信号Ｐ２〜Ｐ０を付加した計７ビットの信号に対して１ビットのエラー訂正を行なうエラー訂正回路の動作を説明する。ここで、パリティ信号Ｐ２〜Ｐ０は、
Ｄ０ ｘｏｒ Ｄ２ ｘｏｒ Ｐ０ ｘｏｒ Ｐ２＝０                  （２１）
Ｄ１ ｘｏｒ Ｄ２ ｘｏｒ Ｐ１ ｘｏｒ Ｐ２＝０                  （２２）
Ｄ３ ｘｏｒ Ｐ０ ｘｏｒ Ｐ１ ｘｏｒ Ｐ２＝０                  （２３）
の関係を満たすように、
Ｐ２＝Ｄ０ ｘｏｒ Ｄ２ ｘｏｒ Ｄ３                            （３１）
Ｐ１＝Ｄ０ ｘｏｒ Ｄ１ ｘｏｒ Ｄ３                            （３２）
Ｐ０＝Ｄ１ ｘｏｒ Ｄ２ ｘｏｒ Ｄ３                            （３３）
と決めておく。なお、ｘｏｒは排他的論理和を意味する。半導体メモリの任意のアドレスにデータを書き込むとき、式（３１）〜（３３）に従ってデータ信号Ｄ３〜Ｄ０からパリティ信号Ｐ２〜Ｐ０を生成し、当該アドレスのパリティビット空間にパリティビットを書き込む。書き込まれた信号を読み出すとき、たとえばデータ信号Ｄ２が反転して誤ったデータが読み出されエラー訂正回路１１に入力される場合を次図を用いて説明する。
【００２７】
図３は、図１のエラー訂正回路１１の具体的な構成の一例を示した回路図である。
図３を参照して、エラー訂正回路１１は、シンドロームを生成するシンドローム生成部１２と、シンドロームから誤っているビットを特定するデコード部１３と、誤りビットを反転して訂正を行なうエラー訂正部１４とを含む。
【００２８】
シンドローム生成部１２は、ＸＯＲ回路１２１〜１２３を含む。ＸＯＲ回路１２１〜１２３は、以下の式（４１）〜（４３）を満たすようにシンドロームＳ０〜Ｓ２をそれぞれ生成する。
【００２９】
Ｓ０＝Ｐ２ ｘｏｒ Ｐ０ ｘｏｒ Ｄ２ ｘｏｒ Ｄ０                （４１）
Ｓ１＝Ｐ２ ｘｏｒ Ｐ１ ｘｏｒ Ｄ２ ｘｏｒ Ｄ１                （４２）
Ｓ２＝Ｐ２ ｘｏｒ Ｐ１ ｘｏｒ Ｐ０ ｘｏｒ Ｄ３                （４３）
仮に、データ信号Ｄ０〜Ｄ３およびパリティ信号Ｐ０〜Ｐ２がすべて誤りなく読み出されていれば、式（４１）〜（４３）より、シンドロームＳ０〜Ｓ２は全て０となる。しかし、データ信号Ｄ２が誤って反転して読み出された場合、シンドロームＳ０〜Ｓ２は、Ｓ０＝１，Ｓ１＝１，Ｓ２＝０となる。デコード部１３は、当該シンドロームＳ０〜Ｓ２に基づいて誤りビットを特定する。
【００３０】
デコード部１３は、ＡＮＤ回路１３１〜１３４を含む。ＡＮＤ回路１３１は、シンドロームＳ０とシンドロームＳ１，Ｓ２の反転信号との論理積を出力する。ＡＮＤ回路１３２は、シンドロームＳ１とシンドロームＳ０，Ｓ２の反転信号との論理積を出力する。ＡＮＤ回路１３３は、シンドロームＳ０，Ｓ１とシンドロームＳ２の反転信号との論理積を出力する。ＡＮＤ回路１３４は、シンドロームＳ２とシンドロームＳ０，Ｓ１の反転信号との論理積を出力する。
【００３１】
上記のＡＮＤ回路１３１〜１３４の構成により、データ信号Ｄ２が誤って反転して読み出された場合、ＡＮＤ回路１３２のみが「１」を出力し、ＡＮＤ回路１３１，１３３，１３４は「０」を出力する。この結果に基づいて、エラー訂正部１４は、データ信号Ｄ２を反転して誤りを訂正する。
【００３２】
エラー訂正部１４は、ＸＯＲ回路１４１〜１４４を含む。ＸＯＲ回路１４１は、データ信号Ｄ０とＡＮＤ回路１３１の出力信号との排他的論理和である出力データ信号Ｄｏｕｔ０を出力する。ＸＯＲ回路１４２は、データ信号Ｄ１とＡＮＤ回路１３２の出力信号との排他的論理和である出力データ信号Ｄｏｕｔ１を出力する。ＸＯＲ回路１４３は、データ信号Ｄ２とＡＮＤ回路１３３の出力信号との排他的論理和である出力データ信号Ｄｏｕｔ２を出力する。ＸＯＲ回路１４４は、データ信号Ｄ３とＡＮＤ回路１３４の出力信号との排他的論理和である出力データ信号Ｄｏｕｔ３を出力する。
【００３３】
上記のようにして、エラー訂正回路１１は、誤りが訂正された出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ３を出力する。半導体メモリに上記のようなＥＣＣによるエラー訂正回路を搭載することによって、ソフトエラーやリテンション不良によるデータ誤りの訂正が可能となり、半導体メモリの信頼性が向上する。
【００３４】
再び図１を参照して、フラッシュメモリモジュールＩ／Ｆ回路６は、出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ６３を受ける。出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ６３は、データバッファ１５、レジスタ１６などを経て、データバス５に出力される。フラッシュメモリ内蔵マイコン１００の動作について次図を用いて説明する。
【００３５】
図４は、図１のフラッシュメモリ内蔵マイコン１００の動作を説明するための波形図である。
【００３６】
図４を参照して、時刻ｔ１，ｔ３，ｔ５において、アドレスラッチ信号ＡＤＬが立上がる。リードサイクルＲｃｙｃ１Ｎ（時刻ｔ１〜ｔ３）では読み出されるデータに誤りがなく、リードサイクルＲｃｙｃ２Ｅ（時刻ｔ３〜ｔ５）では読み出されるデータに誤りが存在するものと仮定する。
【００３７】
リードサイクルＲｃｙｃ１Ｎ，Ｒｃｙｃ２Ｅのいずれにおいても、センスアンプ活性化信号ＳＡＡの立上がり／立下がりを受けて、センスアンプ群７でデータ信号Ｄ６３〜Ｄ０およびパリティ信号Ｐ６〜Ｐ０が生成される。この後、データに含まれる誤りが訂正された出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０がエラー訂正回路１１のエラー訂正部１４から出力される。
【００３８】
リードサイクルＲｃｙｃ２Ｅでは読み出すデータ（ＲＤ２Ａ）に誤りが存在するため、出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０が確定する際にエラー訂正による遅延ＤＬＹが余分にかかる。そのため、時刻ｔ４後の時刻ｔ５まで待たないと、データバッファ取込クロックＣＬＫｄに同期してデータ（ＲＤ２Ｂ）を取り込むことができない。
【００３９】
リードサイクルＲｃｙｃ１Ｎでは読み出すデータ（ＲＤ１）に誤りがないため、時刻ｔ２において既に出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０が確定している。しかし、時刻ｔ２の時点では出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０が正しいのか誤っているのかが判明していないため、誤っている場合に備えて、結局は遅延ＤＬＹを見込んだ時刻ｔ３まで待ってからデータ（ＲＤ１）を取り込む必要がある。
【００４０】
以上のように、図１のフラッシュメモリ内蔵マイコン１００では、メモリセルのデータを読み出すアクセス経路にエラー訂正回路１１が挿入されている。フラッシュメモリ内蔵マイコン１００は、センスアンプ群７で読み出されるデータ信号Ｄ６３〜Ｄ０およびパリティ信号Ｐ６〜Ｐ０をエラー訂正回路１１に出力する。エラー訂正回路１１では、シンドロームの生成、誤りビットの特定、および誤りビットの訂正を順次実行する。
【００４１】
上記のような構成のため、フラッシュメモリ内蔵マイコン１００では、誤り訂正前のデータ入力が遷移してから訂正が実行されるまでの期間、当該データが誤っているのか正しいのか不明である。ゆえに、エラー訂正回路１１のデータ入力が遷移してからエラー訂正が実行されるまでの時間を見込んで待った後に、確定した出力データ信号を取り込む必要が生じる。その結果、実際にデータが誤っているか否かに関わらず、メモリのアドレスアクセスにエラー訂正回路１１での遅延が上乗せされる形となっていた。
【００４２】
特に、オンチップのメモリでは、データの転送レートを高くするために、データバス５のバス幅を大きくとることが行なわれる。その場合、エラー訂正回路１１においてシンドローム生成部１２のＸＯＲ回路が多入力となり、シンドロームのビット数も増える。この結果、デコード部１３のＡＮＤ回路もより多入力となるので、エラー訂正回路１１での遅延が一層大きくなる。
【００４３】
近年、半導体チップの動作周波数は向上している。このことを考えると、実際にデータが誤っているか否かに関わらず、必ずエラー訂正回路１１での遅延を見込んでアドレスアクセスを規定しなければならない状況では、半導体チップを含むシステムのパフォーマンスに及ぼす影響は大きい。
【００４４】
以下の実施の形態では、前述の発明の目的を達成するとともに、アドレスアクセスの規定においてエラー訂正回路での遅延を常に見込む必要のないフラッシュメモリ内蔵マイコンの構成および動作について詳述する。
【００４５】
［実施の形態１］
図５は、この発明の実施の形態１によるフラッシュメモリ内蔵マイコン１００Ａの構成を示した概略図である。
【００４６】
図５を参照して、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａは、論理和段１７、バッファ段１８、およびセンスアンプ活性化信号生成部２０が付加され、フラッシュメモリモジュールＩ／Ｆ回路６がフラッシュメモリモジュールＩ／Ｆ回路６Ａに置き換えられた点において、図１のフラッシュメモリ内蔵マイコン１００と異なる。したがって、図１と重複する部分の説明は、ここでは繰り返さない。
【００４７】
フラッシュメモリモジュールＩ／Ｆ回路６Ａは、データ取込クロック生成部９がデータ取込クロック生成部９Ａに置き換えられた点において、フラッシュメモリモジュールＩ／Ｄ回路６と異なる。データ取込クロック生成部９Ａは、データ信号Ｄ０〜Ｄ６３に誤りが含まれているかどうかを検出する誤り検出信号ＥＤＳを受ける。
【００４８】
なお、図５のフラッシュメモリ内蔵マイコン１００Ａでは、フラッシュメモリモジュール１の構成要素のうちエラー訂正回路１１のみを図示している。エラー訂正回路１１は、シンドローム生成部１２と、デコード部１３と、エラー訂正部１４とを含み、６４ビットのデータ信号Ｄ０〜Ｄ６３に対して１ビットの誤り訂正を行なうものとする。このとき、式（１１）により、７ビットのパリティ信号Ｐ０〜Ｐ６が必要とされる。
【００４９】
論理和段１７は、シンドローム生成部１２から出力されるシンドロームＳ０〜Ｓ６の論理和をとることにより、誤り検出信号ＥＤＳを生成する。誤り検出信号ＥＤＳは、シンドローム生成部１２に入力するデータ信号Ｄ０〜Ｄ６３に１つでも誤りが含まれる場合にＨレベル、誤りがない場合にＬレベルとなる。バッファ段１８は、誤り検出信号ＥＤＳをバッファリングし、それをデータ取込クロック生成部９Ａ、センスアンプ活性化信号生成部２０およびＣＰＵ２に出力する。
【００５０】
誤り検出信号ＥＤＳの確定は、エラー訂正回路１１において誤り訂正後の出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ６３が確定するよりも早い。なぜなら、誤り検出信号ＥＤＳはシンドロームＳ０〜Ｓ６が論理和段１７およびバッファ段１８のみを経て確定するのに対し、誤り訂正後の出力データ信号が確定するのはシンドロームＳ０〜Ｓ６がデコード部１３を通過して誤りビットが特定された後となるからである。デコード部１３におけるＡＮＤ回路の段数は、論理和段１７とバッファ段１８とを合わせた段数より多い。
【００５１】
上記により、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａは、誤り検出信号ＥＤＳの論理値を参照すれば、誤り訂正後の出力データ信号が確定する前に、誤り訂正が行なわれるかどうかを予め知ることができる。
【００５２】
具体的には、フラッシュメモリ内蔵マイコン１００Ａは、リードサイクル内のある時点で誤り検出信号ＥＤＳがＨレベルであるか、または前リードサイクルの誤り検出信号ＥＤＳがＨレベルだったのが現リードサイクルではＬレベルに変化した時のみ、センスアンプ活性化信号ＳＡＡに１ウェイトＷＴを挿入する。これにより、出力データ信号に誤りがあった場合にのみ、誤り訂正後の出力データ信号が確定するのを待ってから出力データ信号の取込みを行なうようにできる。
【００５３】
データ取込クロック生成部９Ａは、ＣＰＵクロックＣＬＫｃｐｕおよび誤り検出信号ＥＤＳに基づいて、データバッファ取込クロックＣＬＫｄおよびレジスタ取込クロックＣＬＫｒの生成タイミングを調整する。センスアンプ活性化信号生成部２０は、ＣＰＵクロックＣＬＫｃｐｕおよび誤り検出信号ＥＤＳに基づいて、センスアンプ活性化信号ＳＡＡの生成タイミングを調整する。
【００５４】
図１のフラッシュメモリ内蔵マイコン１００は、ＥＣＣによってエラー訂正を実際に行なうか否かに関わらず、エラー訂正を行なうことに起因する遅延分を見込んでデータの取込みを遅らせていた。これに対し、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａは、読み出されるデータに誤りが存在した時のみウェイトＷＴを挿入してデータを取り直すため、データの転送レートの低下を抑制することができる。このようなフラッシュメモリ内蔵マイコン１００Ａの動作について次図を用いて説明する。
【００５５】
図６は、図５のフラッシュメモリ内蔵マイコン１００Ａの動作を説明するための波形図である。
【００５６】
図６を参照して、時刻ｔ１〜ｔ５の各時点において、アドレスラッチ信号ＡＤＬが立上がる。リードサイクルＲｃｙｃ１Ｎ（時刻ｔ１〜ｔ２），Ｒｃｙｃ３Ｎ（時刻ｔ３〜ｔ４），Ｒｃｙｃ４Ｎ（時刻ｔ４〜ｔ５）では読み出されるデータに誤りがなく、リードサイクルＲｃｙｃ２Ｅ（時刻ｔ２〜ｔ３）では読み出されるデータに誤りが存在するものと仮定する。
【００５７】
リードサイクルＲｃｙｃ１Ｎ〜Ｒｃｙｃ４Ｎのいずれにおいても、センスアンプ活性化信号ＳＡＡの立上がり／立下がりを受けて、センスアンプ群７でデータ信号Ｄ６３〜Ｄ０およびパリティ信号Ｐ６〜Ｐ０が生成される。この後、データに含まれる誤りが訂正された出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０がエラー訂正回路１１のエラー訂正部１４から出力される。
【００５８】
（１）リードサイクルＲｃｙｃ１Ｎ〜Ｒｃｙｃ２Ｅ
リードサイクルＲｃｙｃ１Ｎでは、誤りのないデータ（ＲＤ１）が読み出される。この場合、時刻ｔ２において、データ取込クロック生成部９Ａは、ＣＰＵクロックＣＬＫｃｐｕの立下がりエッジに同期するように、データバッファ取込クロックＣＬＫｄの立上がりエッジを発生させる。これを受けて、データバッファ１５は、エラー訂正回路１１のエラー訂正部１４からのデータ（ＲＤ１）を取り込む。
【００５９】
データ取込クロック生成部９Ａは、上記データバッファ取込クロックＣＬＫｄの立上がりエッジの次のＣＰＵクロックＣＬＫｃｐｕの立上がりエッジに同期するように、誤り検出信号判定クロックＣＬＫｅの立上がりエッジを発生させる。誤り検出信号判定クロックＣＬＫｅの立上がりエッジ時点で誤り検出信号ＥＤＳがＬレベルであるため、データ取込クロック生成部９Ａは、引き続き、ＣＰＵクロックＣＬＫｃｐｕの立下がりエッジに同期するように、レジスタ取込クロックＣＬＫｒの立上がりエッジを発生させる。
【００６０】
レジスタ取込クロックＣＬＫｒの立上がりエッジを受けて、レジスタ１６はデータバッファ１５の出力信号を取り込む。以上のように、読み出されるデータに誤りのないリードサイクルＲｃｙｃ１Ｎの場合、エラー訂正回路１１を経由することによる遅延はエラー訂正部１４でのゲート遅延のみとなるため、データ信号のエラー訂正を行なわない場合と同等のアクセスタイムとなる。
【００６１】
（２）リードサイクルＲｃｙｃ２Ｅ〜Ｒｃｙｃ３Ｎ
リードサイクルＲｃｙｃ２Ｅでは、誤りのあるデータ（ＲＤ２Ａ）が読み出される。この場合も、上記のリードサイクルＲｃｙｃ１Ｎ〜Ｒｃｙｃ２Ｅの場合と同様に、データバッファ１５は、時刻ｔ３でのデータバッファ取込クロックＣＬＫｄの立上がりエッジを受けて、エラー訂正回路１１からの出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０を取り込む。ただし、このときの出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０は、誤りが訂正される前のデータ（ＲＤ２Ａ）であるため、誤りを含んでいる。
【００６２】
データ取込クロック生成部９Ａは、上記データバッファ取込クロックＣＬＫｄの立上がりエッジの次のＣＰＵクロックＣＬＫｃｐｕの立上がりエッジに同期するように、誤り検出信号判定クロックＣＬＫｅの立上がりエッジを発生させる。誤り検出信号判定クロックＣＬＫｅの立上がりエッジ時点で誤り検出信号ＥＤＳがＨレベルであるため、この時点でデータバッフ１５に取り込まれた出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０が誤っていることが分かる。
【００６３】
そこで、データ取込クロック生成部９Ａは、次のＣＰＵクロックＣＬＫｃｐｕの立下がりエッジに同期するように、データバッファ取込クロックＣＬＫｄの立上がりエッジを再度発生させる。再度のデータバッファ取込クロックＣＬＫｄの立上がりエッジを受けて、データバッファ１５は、誤り訂正後のデータ（ＲＤ２Ｂ）をエラー訂正回路１１のエラー訂正部１４から取り直す。この結果、それ以降のレジスタ取込クロックＣＬＫｒの発生も順次遅延させられる。
【００６４】
上記において、誤り訂正後のデータ（ＲＤ２Ｂ）をエラー訂正部１４からデータバッファ１５に取り込んでいる間にリードサイクルＲｃｙｃ３Ｎでセンスアンプ活性化信号ＳＡＡが活性化されてしまうと、出力データ信号の値が変わってしまいリードサイクルＲｃｙｃ２Ｅの出力データ信号が取り込めなくなる。そこで、センスアンプ活性化信号生成部２０は、センスアンプ活性化信号ＳＡＡの生成時にＣＰＵクロックＣＬＫｃｐｕ１サイクル分のウェイトＷＴを挿入する。これにより、リードサイクルＲｃｙｃ２Ｅの出力データ信号の再取込みを妨げないようにしている。
【００６５】
（３）リードサイクルＲｃｙｃ３Ｎ〜Ｒｃｙｃ４Ｎ
リードサイクルＲｃｙｃ３Ｎ，Ｒｃｙｃ４Ｎでは、再び誤りのないデータ信号が読み出される。この場合、フラッシュメモリ内蔵マイコン１００Ａの動作は、基本的にリードサイクルＲｃｙｃ１Ｎの場合と同様である。ただし、リードサイクルＲｃｙｃ３Ｎでは、リードサイクルＲｃｙｃ３Ｎの読出しデータ自体に誤りはないもののリードサイクルＲｃｙｃ２Ｅで誤りがあったことによる影響が残る。この影響を回避するフラッシュメモリ内蔵マイコン１００Ａの動作について以下に説明する。
【００６６】
時刻ｔ４において、データ取込クロック生成部９Ａは、ＣＰＵクロックＣＬＫｃｐｕの立下がりエッジに同期するように、データバッファ取込クロックＣＬＫｄの立上がりエッジを発生させる。これを受けて、データバッファ１５は、リードサイクルＲｃｙｃ２Ｅのデータ読出し時に誤りビットを反転して訂正されていたデータ（ＲＤ２Ｂ）に代わり、新たに誤りのない出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０を取り込もうとする。
【００６７】
しかし、この時点ではデコード部１３からリードサイクルＲｃｙｃ２Ｅにおける誤りビットを特定した信号が出力されているため、データバッファ１５に取り込まれる出力データ信号は誤訂正されたデータ（ＲＤ３Ｅ）となる。その後、誤り検出信号ＥＤＳがＨレベルからＬレベルに変化し、デコード部１３からリードサイクルＲｃｙｃ２Ｅにおける誤りビットを特定した信号が出力されなくなると、誤訂正されたデータ（ＲＤ３Ｅ）は誤りのないデータ（ＲＤ３Ｎ）に遷移する。
【００６８】
したがって、データ取込クロック生成部９Ａは、この誤りのないデータ（ＲＤ３Ｎ）が最終的に取り込まれるように、データバッファ取込クロックＣＬＫｄの立上がりエッジを再度発生させる。再度のデータバッファ取込クロックＣＬＫｄの立上がりエッジを受けて、データバッファ１５は、誤りのないデータ（ＲＤ３Ｎ）をエラー訂正回路１１のエラー訂正部１４から取り直す。
【００６９】
上記において、誤りのないデータ（ＲＤ３Ｎ）をエラー訂正部１４からデータバッファ１５に取り込んでいる間にリードサイクルＲｃｙｃ４Ｎでセンスアンプ活性化信号ＳＡＡが活性化されてしまうと、出力データ信号の値が変わってしまいリードサイクルＲｃｙｃ３Ｎの出力データ信号が取り込めなくなる。そこで、センスアンプ活性化信号生成部２０は、リードサイクルＲｃｙｃ３Ｎの場合と同様に、センスアンプ活性化信号ＳＡＡの生成時にＣＰＵクロックＣＬＫｃｐｕ１サイクル分のウェイトＷＴを挿入する。
【００７０】
以上のように、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａは、エラー検出時を含む３サイクル内では、次の第１または第２の場合にのみデータを取り込む。第１の場合は、あるリードサイクルの誤り検出信号判定クロックＣＬＫｅの立上がりエッジ時点で、誤り検出信号ＥＤＳがＨレベルのときである。第２の場合は、前リードサイクルと現リードサイクルとで誤り検出信号判定クロックＣＬＫｅの立上がりエッジ時点における誤り検出信号ＥＤＳがＨレベルからＬレベルに変化したときである。
【００７１】
上記の第１または第２の場合、フラッシュメモリ内蔵マイコン１００Ａは、データ取込クロック生成部９Ａでデータバッファ取込クロックＣＬＫｄの立上がりエッジを再度発生させるとともに、センスアンプ活性化信号生成部２０でのセンスアンプ活性化信号ＳＡＡ発生時にＣＰＵクロックＣＬＫｃｐｕ１サイクル分のウェイトＷＴを挿入する。
【００７２】
すなわち、実施の形態１のフラッシュメモリ内蔵マイコンは、ＥＣＣを用いたエラー訂正回路を搭載した半導体メモリを混載したＳｏＣ（System on a Chip）であって、読み出されるデータに誤りが存在した場合に活性化される誤り検出信号を出力する回路を設けており、データ誤りが検出されたときおよび誤り検出信号ＥＤＳがＬレベルに変化したときにはウェイトを挿入してデータの再取込みを行なうように構成されている。
【００７３】
つまり、フラッシュメモリ内蔵マイコン１００Ａは、誤り検出信号判定クロックＣＬＫｅが変化した時点で誤り検出信号ＥＤＳが活性化されているとき、または、前リードサイクルと現リードサイクルとで誤り検出信号判定クロックＣＬＫｅの変化時における誤り検出信号ＥＤＳがＨレベルからＬレベルに変化したときに、データバッファ取込クロックＣＬＫｄおよびセンスアンプ活性化信号ＳＡＡを所定時間だけ遅延させる。
【００７４】
図１のフラッシュメモリ内蔵マイコン１００は、エラーが発生したか否かに関わらず、エラー訂正にかかる遅延時間を見込んでデータバッファ１５へのデータの取込みを全リードサイクルについて遅らせていた。これに対し、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａは、ＥＣＣによる誤り訂正が起こる頻度が低ければウェイトＷＴの挿入の頻度もそれにともなって低くなるため、ＥＣＣ訂正によるシステムパフォーマンスの低下を抑えることができる。
【００７５】
また、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａは、データラッチが１組であり、訂正後データのバスと訂正前データのバスとが並走する箇所もないので、回路の占有面積の点でも有利である。
【００７６】
［実施の形態２］
実施の形態１のフラッシュメモリ内蔵マイコン１００Ａでは、現リードサイクルでの読出しデータに誤りがなくても、前リードサイクルの読出しデータに誤りがあれば、データの取込み時に１ウェイトＷＴを挿入していた。そのため、誤ったデータを読み出したリードサイクルが１サイクル単発で起こっただけだったとしても、２サイクルのリードサイクルにわたってウェイトＷＴの挿入を行なう必要があった。
【００７７】
上記に対し、実施の形態２のフラッシュメモリ内蔵マイコン１００Ｂは、以下で説明するように、読み出されるデータに誤りがあった場合にのみ、その誤ったデータの取込み時にウェイトＷＴを挿入する構成を有する。これにより、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａよりも、データ誤りによるデータ転送レートの低下をさらに抑えることが可能となる。
【００７８】
図７は、この発明の実施の形態２によるフラッシュメモリ内蔵マイコン１００Ｂの構成を示した概略図である。
【００７９】
図７を参照して、実施の形態２のフラッシュメモリ内蔵マイコン１００Ｂは、ＥＣＣ活性化信号発生回路２１が付加された点において、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａと異なる構成を有する。したがって、図１と重複する部分の説明は、ここでは繰り返さない。
【００８０】
なお、図７のフラッシュメモリ内蔵マイコン１００Ｂでは、実施の形態１と同じく、フラッシュメモリモジュール１の構成要素のうちエラー訂正回路１１のみを図示している。エラー訂正回路１１は、実施の形態１と同じく、シンドローム生成部１２と、デコード部１３と、エラー訂正部１４とを含み、６４ビットのデータ信号Ｄ０〜Ｄ６３に対して１ビットの誤り訂正を行なうものとする。このとき、式（１１）により、７ビットのパリティ信号Ｐ０〜Ｐ６が必要とされる。
【００８１】
論理和段１７は、シンドローム生成部１２から出力されるシンドロームＳ０〜Ｓ６の論理和をとることにより、誤り検出信号ＥＤＳを生成する。誤り検出信号ＥＤＳは、シンドローム生成部１２に入力するデータ信号Ｄ０〜Ｄ６３に１つでも誤りが含まれる場合にＨレベル、誤りがない場合にＬレベルとなる。バッファ段１８は、誤り検出信号ＥＤＳをバッファリングし、それをＥＣＣ活性化信号発生回路２１に出力する。
【００８２】
ＥＣＣ活性化信号発生回路２１は、遅延素子２２，２３と、ＮＡＮＤ回路２４と、フリップフロップ回路２５とを含む。ＮＡＮＤ回路２４は、センスアンプ活性化信号ＳＡＡと遅延素子２３を通過したセンスアンプ活性化信号ＳＡＡの反転信号とを受けて、フリップフロップ回路２５のＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴを出力する。センスアンプ活性化信号ＳＡＡは、実施の形態１の図５で示したセンスアンプ活性化信号生成部２０により生成される。
【００８３】
フリップフロップ回路２５は、ＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫに同期するように、誤り検出信号ＥＤＳを入力し、デコード部１３にＥＣＣ回路活性化信号ＥＣＣＡを出力する。ＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫは、センスアンプ活性化信号ＳＡＡを遅延素子２２によって遅延させることにより得られる。
【００８４】
デコード部１３は、ＡＮＤ回路１３０１〜１３６３を含む。ＡＮＤ回路１３０１〜１３６３は、シンドロームＳ０〜Ｓ６またはその反転信号とＥＣＣ回路活性化信号ＥＣＣＡとの論理積を出力する。エラー訂正部１４は、ＸＯＲ回路１４０１〜１４６３を含む。ＸＯＲ回路１４０１〜１４６３は、データ信号Ｄ０〜Ｄ６３とＡＮＤ回路１３０１〜１３６３の出力信号との排他的論理和である出力データ信号Ｄｏｕｔ０〜Ｄｏｕｔ６３をそれぞれ出力する。
【００８５】
上記のように、実施の形態２のフラッシュメモリ内蔵マイコン１００Ｂは、ＥＣＣ活性化信号発生回路２１が付加され、エラー訂正回路１１のデコード部１３にＥＣＣ活性化信号発生回路２１で生成されたＥＣＣ活性化信号ＥＣＣＡが入力される点で、実施の形態１のフラッシュメモリ内蔵マイコン１００Ａと異なる。フラッシュメモリ内蔵マイコン１００Ｂは、ＥＣＣ活性化信号ＥＣＣＡがＬレベルの時、シンドローム生成部１２から出力されるシンドロームＳ０〜Ｓ６の値によらずデータ訂正を行なわない。
【００８６】
ＥＣＣ活性化信号発生回路２１は、センスアンプ活性化信号ＳＡＡの立上がりエッジからワンショットパルスでＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴを活性化し、これによりＥＣＣ回路活性化信号ＥＣＣＡを非活性とする。また、ＥＣＣ活性化信号発生回路２１は、センスアンプ活性化信号ＳＡＡを遅延させて得たＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫの立下がりエッジで誤り検出信号ＥＤＳを取り込む。以上のようなフラッシュメモリ内蔵マイコン１００Ｂの動作について次図を用いて説明する。
【００８７】
図８は、図７のフラッシュメモリ内蔵マイコン１００Ｂの動作を説明するための波形図である。
【００８８】
図８を参照して、時刻ｔ１〜ｔ４，ｔ６の各時点において、アドレスラッチ信号ＡＤＬが立上がる。実施の形態１と同様に、リードサイクルＲｃｙｃ１Ｎ（時刻ｔ１〜ｔ２），Ｒｃｙｃ３Ｎ（時刻ｔ３〜ｔ４），Ｒｃｙｃ４Ｎ（時刻ｔ４〜ｔ６）では読み出されるデータに誤りがなく、リードサイクルＲｃｙｃ２Ｅ（時刻ｔ２〜ｔ３）では読み出されるデータに誤りが存在するものと仮定する。
【００８９】
リードサイクルＲｃｙｃ１Ｎ〜Ｒｃｙｃ４Ｎのいずれにおいても、センスアンプ活性化信号ＳＡＡの立上がり／立下がりを受けて、センスアンプ群７でデータ信号Ｄ６３〜Ｄ０およびパリティ信号Ｐ６〜Ｐ０が生成される。この後、データに含まれる誤りが訂正された出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０がエラー訂正回路１１のエラー訂正部１４から出力される。
【００９０】
（１）リードサイクルＲｃｙｃ１Ｎ〜Ｒｃｙｃ２Ｅ
リードサイクルＲｃｙｃ１Ｎでは、誤りのないデータ（ＲＤ１）が読み出される。リードサイクルＲｃｙｃ１Ｎ〜Ｒｃｙｃ２Ｅでのデータ取込み動作は、以下のＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴ，ＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫ等の変化を除き、実施の形態１と基本的には同様の動作でデータの取込みが行なわれる。
【００９１】
リードサイクルＲｃｙｃ１Ｎでは、センスアンプ活性化信号ＳＡＡの立上がりエッジを受けて、ＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴが立下がる。このときＥＣＣ回路活性化信号ＥＣＣＡは活性化していないため、ＥＣＣ回路活性化信号ＥＣＣＡに変化はない。
【００９２】
その後、センスアンプ活性化信号ＳＡＡの立下がりエッジを受けて、ＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫが立上がる。しかし、リードサイクルＲｃｙｃ１Ｎでは誤りのないデータ（ＲＤ１）が読み出されるため、ＥＣＣ回路活性化信号ＥＣＣＡは立上がらない。
【００９３】
（２）リードサイクルＲｃｙｃ２Ｅ〜Ｒｃｙｃ３Ｎ
リードサイクルＲｃｙｃ２Ｅでは、誤りのあるデータ（ＲＤ２Ａ）が読み出される。リードサイクルＲｃｙｃ２Ｅ〜Ｒｃｙｃ３Ｎでのデータ取込み動作は、以下のように、ＥＣＣ回路活性化信号ＥＣＣＡがフラッシュメモリモジュールＩ／Ｆ回路６Ａのデータバッファ１５およびレジスタ１６でのデータ取込みに重なる形で活性化されるため、実施の形態１と基本的には同様の動作でデータの取込みが行なわれる。
【００９４】
リードサイクルＲｃｙｃ２Ｅでは、リードサイクルＲｃｙｃ１Ｎと同様に、センスアンプ活性化信号ＳＡＡの立上がりエッジを受けて、ＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴが立下がる。このときＥＣＣ回路活性化信号ＥＣＣＡは活性化していないため、ＥＣＣ回路活性化信号ＥＣＣＡに変化はない。
【００９５】
その後、センスアンプ活性化信号ＳＡＡの立下がりエッジを受けて、ＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫが立上がる。リードサイクルＲｃｙｃ２Ｅでは誤りのあるデータ（ＲＤ２Ａ）が読み出されるため、ＥＣＣクロック信号ＥＣＣＥＮ＿ＣＬＫの立下がりエッジを受けてＥＣＣ回路活性化信号ＥＣＣＡが活性化する。
【００９６】
（３）リードサイクルＲｃｙｃ３Ｎ〜Ｒｃｙｃ４Ｎ
リードサイクルＲｃｙｃ３Ｎ，Ｒｃｙｃ４Ｎでは、再び誤りのないデータ信号が読み出される。この場合、フラッシュメモリ内蔵マイコン１００Ｂの動作は、基本的にリードサイクルＲｃｙｃ１Ｎの場合と同様である。ただし、リードサイクルＲｃｙｃ３Ｎでは、リードサイクルＲｃｙｃ３Ｎの読出しデータ自体に誤りはないもののリードサイクルＲｃｙｃ２Ｅで誤りがあったことによる影響が残る。この影響を回避するフラッシュメモリ内蔵マイコン１００Ｂの動作について以下に説明する。
【００９７】
リードサイクルＲｃｙｃ２Ｅ〜Ｒｃｙｃ３Ｎにおいて、データバッファ１５は、再度のデータバッファ取込クロックＣＬＫｄの立上がりエッジを受けて、誤り訂正後のデータ（ＲＤ２Ｂ）をエラー訂正回路１１のエラー訂正部１４から取り直す。
【００９８】
上記の後、リードサイクルＲｃｙｃ３ＮでウェイトＷＴが挿入されたセンスアンプ活性化信号ＳＡＡの立上がりエッジを受けて、ＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴが立下がる。このとき、ＥＣＣ回路活性化信号ＥＣＣＡが活性化されているため、ＥＣＣリセット信号／ＥＣＣＥＮ＿ＲＳＴの立下がりエッジを受けて、ＥＣＣ回路活性化信号ＥＣＣＡがＨレベルからＬレベルに変化する。すなわち、ＥＣＣ活性化信号ＥＣＣＡを保持するフリップフロップ回路２５は、センスアンプ活性化信号ＳＡＡの立上がりエッジから形成されたワンショットパルスを受けてリセットされることになる。
【００９９】
このＥＣＣリセットの結果、フラッシュメモリモジュールＩ／Ｆ回路６Ａのデータバッファ１５に取り込まれる出力データ信号Ｄｏｕｔ６３〜Ｄｏｕｔ０は、リードサイクルＲｃｙｃ２Ｅにおける一旦訂正済みのデータ（ＲＤ２Ｂ）から、リードサイクルＲｃｙｃ２Ｅでの誤りを含んだ訂正されないままのデータ（ＲＤ２Ａ）に戻る。しかし、この時には既にリードサイクルＲｃｙｃ２Ｅの訂正後のデータ（ＲＤ２Ｂ）はデータバッファ１５によって取込み済みとなっているため、フラッシュメモリ内蔵マイコン１００Ｂの動作上に問題は生じない。その後、リードサイクルＲｃｙｃ３Ｎで読み出されるデータ（ＲＤ３）は誤りを含まないため、時刻ｔ４のタイミングでそのまま取り込むことができる。
【０１００】
以上のように、実施の形態２のフラッシュメモリ内蔵マイコンは、ＥＣＣを用いたエラー訂正回路を搭載した半導体メモリを混載したＳｏＣであって、読み出されるデータに誤りが存在した場合に活性化される誤り検出信号を出力する回路と、エラー訂正の活性化／非活性化を制御する端子を有するエラー訂正回路とを搭載した半導体メモリを備える。当該半導体メモリは、誤り検出信号の論理値によらず、一旦エラー訂正回路を非活性として、その後確定した誤り検出信号の論理値がＨレベルである場合にのみウェイトを挿入してデータの再取込みを行なうように構成されている。
【０１０１】
実施の形態１のフラッシュメモリ内蔵マイコン１００Ａでは、誤りを含むリードサイクルのデータを取り込んだ次のリードサイクルにおいて、仮にそのリードサイクルで誤りのないデータが読み出されていても、ＣＰＵクロック１サイクル分のウェイトＷＴを挿入する必要があった。なぜなら、読み出されたデータに誤りがないことがエラー訂正回路１１のデコーダ出力に反映されるまでの遅延時間を見込んで待ってからでないと、正しいデータがデータバッファに到達しないからである。
【０１０２】
これに対し、実施の形態２のフラッシュメモリ内蔵マイコン１００Ｂは、センスアンプ活性化信号ＳＡＡの立上がりエッジが来るごとに、ＥＣＣ回路活性化信号ＥＣＣＡがＨレベルに活性化されていればＬレベルにリセットする。これにより、センスアンプ活性化信号ＳＡＡの立上がりエッジが来るごとに、いったんエラー訂正を行なわずにエラー訂正回路１１からデータを出力する状態に遷移させる。
【０１０３】
データバッファ１５がデータを取り込んだ後、フリップフロップ回路２５は、誤り検出信号ＥＤＳを受けて、ＨレベルまたはＬレベルのＥＣＣ回路活性化信号ＥＣＣＡを出力する。誤り検出信号ＥＤＳがＬレベルの状態でデータの再取込みを行なう場合には、エラー訂正されていなデータがデータバッファ１５に到達する。誤り検出信号ＥＤＳがＨレベルの状態でデータの再取込みを行なう場合には、エラー訂正後のデータがデータバッファ１５に到達する。
【０１０４】
また、実施の形態２のフラッシュメモリ内蔵マイコン１００Ｂは、実施の形態１と同じく、データラッチが１組であり、訂正後データのバスと訂正前データのバスとが並走する箇所もないので、回路の占有面積の点でも有利である。
【０１０５】
なお、本発明のフラッシュメモリモジュール１で用いられるメモリセルアレイ８の種類は、フラッシュメモリに限られるわけではなく、フラッシュメモリ以外の不揮発性メモリであってもよく、さらにはＳＲＡＭ等の揮発性メモリであっても構わない。
【０１０６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０１０７】
本発明は、一例として、ＥＣＣを搭載したメモリ、ＥＣＣを搭載したメモリを混載したメモリ内蔵マイコン等のＳｏＣに適用される。
【図面の簡単な説明】
【０１０８】
【図１】この発明の実施の形態を説明する背景としてのフラッシュメモリ内蔵マイコン１００の構成を示した概略図である。
【図２】図１のセンスアンプ群７におけるセンスアンプＳ／Ａの構成の一例を示した回路図である。
【図３】図１のエラー訂正回路１１の具体的な構成の一例を示した回路図である。
【図４】図１のフラッシュメモリ内蔵マイコン１００の動作を説明するための波形図である。
【図５】この発明の実施の形態１によるフラッシュメモリ内蔵マイコン１００Ａの構成を示した概略図である。
【図６】図５のフラッシュメモリ内蔵マイコン１００Ａの動作を説明するための波形図である。
【図７】この発明の実施の形態２によるフラッシュメモリ内蔵マイコン１００Ｂの構成を示した概略図である。
【図８】図７のフラッシュメモリ内蔵マイコン１００Ｂの動作を説明するための波形図である。
【符号の説明】
【０１０９】
１  フラッシュメモリモジュール、２  ＣＰＵ、３  ＲＡＭ、４  ＤＭＡコントローラ、５  データバス、６，６Ａ  フラッシュメモリモジュールＩ／Ｆ回路、７  センスアンプ群、８  メモリセルアレイ、９，９Ａ  データ取込クロック生成部、１０  データバスドライバ、１１  エラー訂正回路、１２  シンドローム生成部、１３  デコード部、１４  エラー訂正部、１５  データバッファ、１６  レジスタ、１７  論理和段、１８  バッファ段、２０  センスアンプ活性化信号生成部、２１  ＥＣＣ活性化信号発生回路、２２，２３  遅延素子、２４  ＮＡＮＤ回路、２５  フリップフロップ回路、７０  センスアンプ部、８１，８２，９１，９２，９６，９７  インバータ、７１，７２，８３  ＰチャネルＭＯＳトランジスタ、９０，９５  ラッチ回路、７３，７４，７５  ＮチャネルＭＯＳトランジスタ、１００，１００Ａ，１００Ｂ  フラッシュメモリ内蔵マイコン、１２１〜１２３，１４１〜１４４，１４０１〜１４６３  ＸＯＲ回路、１３１〜１３４，１３０１〜１３６３  ＡＮＤ回路。
【図１】
2007241625.tif 000004
【図２】
2007241625.tif 000005
【図３】
2007241625.tif 000006
【図４】
2007241625.tif 000007
【図５】
2007241625.tif 000008
【図６】
2007241625.tif 000009
【図７】
2007241625.tif 000010
【図８】
2007241625.tif 000011