(57)【要約】【課題】メモリ領域の利用効率を向上させることができる、半導体装置及びデータアクセス方法を提供する。【解決手段】フラッシュメモリ１２のメモリ領域を、書き換え頻度が低い命令等のプログラムを記憶するプログラム領域１２Ａと、書き換え頻度が高いデータを記憶するデータフラッシュ領域１２Ｂとにわけている。データフラッシュ領域１２Ｂに書き込みを行う場合は、１６ビット長のライトデータをデータ分割回路２２で分割した８ビット長のライトデータに、制御回路３２が８ビット長のダミーデータを付加して１６ビット長のデータ生成する。暗号化制御部１４Ｂが、５ビット長のＥＣＣ用データを付加して２１ビット長の暗号化データを生成する。制御回路３４は、暗号化データから８ビット長のダミーデータを削除し、３ビット長のダミーデータを付加した１６ビット長のデータを生成してフラッシュメモリ１２に出力する。【選択図】図１
2014134932.tif 000002
【特許請求の範囲】
【請求項１】
書き換え頻度に応じて予め定められたメモリの所定領域に記憶させる記憶対象データに、前記記憶対象データの長さ及び第１書込ダミーデータの長さを合わせた長さが所定の長さとなるように、前記第１書込ダミーデータを付加して第１ライトデータを生成して出力する第１書込制御部と、
前記所定領域から前記記憶対象データを読み出した際に、読み出した前記記憶対象データの誤りを訂正するために用いられる所定の訂正用データを、前記第１書込制御部から出力された前記第１ライトデータに付加して第２ライトデータを生成して出力する訂正部と、
を備えた半導体装置。
【請求項２】
前記訂正部から出力された、前記第２ライトデータから前記第１書込ダミーデータを削除する第２書込制御部を備えた、
請求項１に記載の半導体装置。
【請求項３】
前記第２書込制御部は、前記第１書込ダミーデータの削除後、第２書込ダミーデータを付加して第３ライトデータを生成し、前記記憶対象データの長さ、前記訂正用データの長さ、及び前記第２書込ダミーデータの長さを合わせた長さを前記所定の長さすると共に、前記記憶対象データに前記訂正用データ及び前記第２ダミーデータが付加された前記第３ライトデータを前記メモリに出力する、請求項２に記載の半導体装置。
【請求項４】
前記所定の長さは、前記メモリの前記所定領域の１アドレスと同じ長さである、請求項３に記載の半導体装置。
【請求項５】
前記記憶対象データを、全ビットが記憶対象となる前記所定の長さのライトデータを複数に分割して生成し、前記第１書込制御部に出力する分割部を備えた、請求項１から請求項４のいずれか１項に記載の半導体装置。
【請求項６】
前記メモリの前記所定領域に前記ライトデータを記憶させる場合は、前記訂正部を介して、前記記憶対象データに前記訂正用データ及び前記第２ダミーデータが付加された前記第３データを、前記所定領域に記憶させ、前記メモリの前記所定領域外に前記ライトデータを記憶させる場合は、直接、前記ライトデータを記憶させる、請求項５に記載の半導体装置。
【請求項７】
前記所定の長さは１６ビットであり、前記記憶対象データの長さは８ビットである、請求項１から請求項６のいずれか１項に記載の半導体装置。
【請求項８】
第１データに第１ダミーデータを付加して、所定のデータ長である第２データを生成し、生成した前記第２データに対する冗長ビットを作成した後、前記第１データ及び前記冗長ビットに第２ダミーデータを付加して前記所定のデータ長である第３データを生成する、半導体装置。
【請求項９】
書き換え頻度に応じて予め定められたメモリの所定領域から読み出した、記憶対象データに訂正用データが付加された第１リードデータに、前記記憶対象データの長さ及び第１読出ダミーデータの長さを合わせた長さが所定の長さとなるように第１読出ダミーデータを付加して第２リードデータを生成して出力する第１読出制御部と、
前記第１読出制御部から出力された前記第２リードデータから前記訂正用データを削除し、前記第１読出ダミーデータが付加された前記記憶対象データのエラーを前記訂正用データに基づいて訂正した第３リードデータを出力する訂正部と、
を備えた半導体装置。
【請求項１０】
前記メモリの前記所定領域の１アドレスに記憶されている前記第１リードデータは、前記訂正用データ及び第２読出ダミーデータが付加された前記記憶対象データであり、
前記第１読出制御部は、前記メモリの前記所定領域から読み出した前記第１リードデータから、前記第２読出ダミーデータを削除した後、前記第１読出ダミーデータを付加する、請求項９に記載の半導体装置。
【請求項１１】
前記記憶対象データの長さ、前記訂正用データの長さ、及び前記第２読出ダミーデータの長さを合わせた長さが、前記所定の長さである、請求項１０に記載の半導体装置。
【請求項１２】
前記所定の長さは、前記メモリの前記所定領域の１アドレスと同じ長さである、請求項１０または請求項１１に記載の半導体装置。
【請求項１３】
前記訂正部から出力された前記第３リードデータから、前記第１読出ダミーデータを削除する第２読出制御部を備えた、請求項９から請求項１２のいずれか１項に記載の半導体装置。
【請求項１４】
前記メモリの前記所定領域から前記第１リードデータを読み出す場合は、前記訂正部を介して、前記訂正用データによりエラーが訂正された前記第３リードデータを読み出し、かつ、前記メモリの前記所定領域外からリードデータを読み出す場合は、直接、前記リードデータを読み出す、請求項９から請求項１３のいずれか１項に記載の半導体装置。
【請求項１５】
前記所定の長さは１６ビットであり、前記記憶対象データの長さは８ビットである、請求項９から請求項１４のいずれか１項に記載の半導体装置。
【請求項１６】
書き換え頻度に応じて予め定められたメモリの所定領域に記憶させる記憶対象データに、前記記憶対象データの長さ及び第１書込ダミーデータの長さを合わせた長さが所定の長さとなるように、前記第１書込ダミーデータを付加して第１ライトデータを生成して出力する第１書込制御工程と、
前記所定領域から前記記憶対象データを読み出した際に、読み出した前記記憶対象データの誤りを訂正するために用いられる所定の訂正用データを、前記第１書込制御部から出力された前記第１ライトデータに付加して第２ライトデータを生成して出力する訂正工程と、
を備えたデータアクセス方法。
【請求項１７】
書き換え頻度に応じて予め定められたメモリの所定領域から読み出した、記憶対象データに訂正用データが付加された第１リードデータに、前記記憶対象データの長さ及び第１読出ダミーデータの長さを合わせた長さが所定の長さとなるように第１読出ダミーデータを付加して第２リードデータを生成して出力する第１読出工程部と、
前記第１読出工程により出力された前記第２リードデータから前記訂正用データを削除し、前記第１読出ダミーデータが付加された前記記憶対象データのエラーを前記訂正用データに基づいて訂正した第３リードデータを出力する訂正工程と、
を備えたデータアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びデータアクセス方法に関するものである。
【背景技術】
【０００２】
一般に、半導体装置では、メモリに記憶されているデータの誤りを訂正する方法として、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）機能を搭載することが知られている。このようなＥＣＣ機能を搭載する場合、例えば、１６ビットのデータに対して、エラー検知と修正を可能とするＥＣＣでは、メモリに記憶する１６ビットのデータとは別に、チェックビットとなるＥＣＣ用データとして５ビットのデータが必要になる。すなわち、メモリの１アドレス当たりのビット数は、１６ビット＋５ビット＝２１ビットが必要となる。
【０００３】
このようにＥＣＣ用データもメモリに記憶させるため、メモリ領域に大きな面積を要したり、記憶領域の利用効率が低下したりする場合がある。
【０００４】
これに対して、メモリ領域の利用効率を向上させる技術が知られている。例えば、特許文献１には、エラー訂正処理が必要な情報と、不要な情報とを分離することにより、エラー訂正処理が必要な情報のみをＥＣＣの対象としてＥＣＣコードを付加することにより、メモリ領域の利用効率を向上させる技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−９１８３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、メモリ領域の利用効率を向上させられない場合があった。例えば、特許文献１に記載の技術では、ＥＣＣ機能を実行するために付加されたＥＣＣコードが、拡張ビットとして扱われており、拡張データを扱えないマイコンでは、ＥＣＣ機能を活用することができない。
【０００７】
本発明は、上述した問題を解決するために提案されたものであり、メモリ領域の利用効率を向上させることができる、半導体装置及びデータアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の半導体装置は、書き換え頻度に応じて予め定められたメモリの所定領域に記憶させる記憶対象データに、前記記憶対象データの長さ及び第１書込ダミーデータの長さを合わせた長さが所定の長さとなるように、前記第１書込ダミーデータを付加して第１ライトデータを生成して出力する第１書込制御部と、前記所定領域から前記記憶対象データを読み出した際に、読み出した前記記憶対象データの誤りを訂正するために用いられる所定の訂正用データを、前記第１書込制御部から出力された前記第１ライトデータに付加して第２ライトデータを生成して出力する訂正部と、を備える。
【０００９】
また、本発明の半導体装置は、第１データに第１ダミーデータを付加して、所定のデータ長である第２データを生成し、生成した前記第２データに対する冗長ビットを作成した後、前記第１データ及び前記冗長ビットに第２ダミーデータを付加して前記所定のデータ長である第３データを生成するものである。
【００１０】
また、本発明の半導体装置は、書き換え頻度に応じて予め定められたメモリの所定領域から読み出した、記憶対象データに訂正用データが付加された第１リードデータに、前記記憶対象データの長さ及び第１読出ダミーデータの長さを合わせた長さが所定の長さとなるように第１読出ダミーデータを付加して第２リードデータを生成して出力する第１読出制御部と、前記第１読出制御部から出力された前記第２リードデータから前記訂正用データを削除し、前記第１読出ダミーデータが付加された前記記憶対象データのエラーを前記訂正用データに基づいて訂正した第３リードデータを出力する訂正部と、を備える。
【００１１】
また、本発明のデータアクセス方法は、書き換え頻度に応じて予め定められたメモリの所定領域に記憶させる記憶対象データに、前記記憶対象データの長さ及び第１書込ダミーデータの長さを合わせた長さが所定の長さとなるように、前記第１書込ダミーデータを付加して第１ライトデータを生成して出力する第１書込制御工程と、前記所定領域から前記記憶対象データを読み出した際に、読み出した前記記憶対象データの誤りを訂正するために用いられる所定の訂正用データを、前記第１書込制御部から出力された前記第１ライトデータに付加して第２ライトデータを生成して出力する訂正工程と、を備える。
【００１２】
また、本発明のデータアクセス方法は、書き換え頻度に応じて予め定められたメモリの所定領域から読み出した、記憶対象データに訂正用データが付加された第１リードデータに、前記記憶対象データの長さ及び第１読出ダミーデータの長さを合わせた長さが所定の長さとなるように第１読出ダミーデータを付加して第２リードデータを生成して出力する第１読出工程部と、前記第１読出工程により出力された前記第２リードデータから前記訂正用データを削除し、前記第１読出ダミーデータが付加された前記記憶対象データのエラーを前記訂正用データに基づいて訂正した第３リードデータを出力する訂正工程と、を備える。
【発明の効果】
【００１３】
本発明によれば、メモリ領域の利用効率を向上させることができる、という効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態の半導体装置の一例を示す概略構成図である。
【図２】本実施の形態のフラッシュメモリの具体的一例を示すアドレスマップである。
【図３】本実施の形態のフラッシュメモリのプログラム領域にデータを書き込む動作の流れの一例を示す流れ図である。
【図４】本実施の形態のフラッシュメモリのプログラム領域からデータを読み出す動作の流れの一例を示す流れ図である。
【図５】本実施の形態の半導体装置における１６ビット長のフラッシュメモリ及び比較例の半導体装置における２１ビット長のフラッシュメモリにおけるメモリ使用量を比較したグラフである。
【図６】本実施の形態の半導体装置における、比較例に対する、フラッシュメモリのメモリ領域のビット数の削減率を表したグラフである。
【図７】比較例の半導体装置の一例を示す概略構成図である。
【図８】ＥＣＣ用データが付加されない場合のフラッシュメモリの具体的一例を示すアドレスマップである。
【図９】比較例のフラッシュメモリの具体的一例を示すアドレスマップである。
【発明を実施するための形態】
【００１５】
（比較例）
まず、本実施の形態のＥＣＣ機能を備えた半導体装置１０について説明する前に、比較のため、データ長が１６ビットのデータに対する従来の１６ビット用ＥＣＣ回路１１４の適用例について説明する。
【００１６】
図７には、比較例となる半導体装置の一例の概略構成図を示す。従来の半導体装置１００は、復号化制御部１１４Ａ及び暗号化制御部１１４Ｂを有するＥＣＣ回路１１４を備えている。フラッシュメモリ１１２へ書き込むライトデータは、１６ビット長のｗｄａｔａ［１５：０］である。一方、フラッシュメモリ１１２から読み出したリードデータは、１６ビット長のｒｄａｔａ［１５：０］である。
【００１７】
暗号化制御部１１４Ｂは、ライトデータ（ｗｄａｔａ［１５：０］）に５ビット長のチェックビットとなるＥＣＣ用データを付加して、２１ビットの暗号化されたデータ（ｆｌａｓｈ＿ｗｄａｔａ［２０：０］）を生成して、フラッシュメモリ１１２に書き込む。なお、ここでは、ｆｌａｓｈ＿ｗｄａｔａ［２０：０］のうち、下位の１６ビットが、ライトデータ（ｗｄａｔａ［１５：０］）に対応し、上位の５ビットが、ＥＣＣ用データに対応している。一方、復号化制御部１１４Ａは、フラッシュメモリ１１２から読み出した、２１ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［２０：０］）から、暗号化制御部１１４Ｂで付加したＥＣＣ用データを削除して、１６ビット長のリードデータ（ｒｄａｔａ［１５：０］）に復号して出力する。
【００１８】
１６ビット長のデータを記憶させる一般的なフラッシュメモリ１１２のアドレスマップの具体的一例を図８に示す。また、当該比較例におけるフラッシュメモリ１１２のアドレスマップの具体的一例を図９に示す。図８及び図９には、具体的一例として、セグメント０にあたるプログラム領域１２Ａを６４Ｋバイト、セグメント１にあたるデータフラッシュ領域１１２Ｂを８Ｋバイトとした、合計７２Ｋバイトのアドレスマップ仕様例を示している。図８に示すように、ＥＣＣ用データが付加されていない場合、フラッシュメモリ１１２は、１アドレスが１６ビットとなっている。
【００１９】
一方、当該比較例では、ＥＣＣ用データを付加したため、フラッシュメモリ１１２は、１アドレスが１６ビット＋５ビット＝２１ビットとなっている。ここで、プログラム領域１１２Ａに記憶されるデータは、比較的書き換え頻度が低い（少なくとも、データフラッシュ領域１１２Ｂよりも低い、詳細後述）ため、ＥＣＣ用データを付加せずに、プログラム領域１１２Ａに記憶させるようにすることができる。しかしながら、このような場合でも、フラッシュメモリ１１２の一部の領域（セグメント）を、他の領域と異なるビット長で構成することが一般的に困難であるため、図９に示した、１アドレスが２１ビットのフラッシュメモリ１１２を用いることになる。この場合では、プログラム領域１１２Ａは、本来、１アドレスが１６ビットでよいにも係わらず２１ビットとしているため、メモリ領域の利用効率の低下を招くと共に、チップサイズの増大やコストに影響を与える懸念が生じる。
【００２０】
（本実施の形態）
以下では、上述した比較例に対する本実施の形態の半導体装置を、図面を参照して詳細に説明する。
【００２１】
まず、本実施の形態の半導体装置１０の構成について説明する。図１には、本実施の形態の半導体装置の一例を示す概略構成図を示す。本発明の半導体装置１０は、１アドレスが１６ビットのフラッシュメモリ１２に記憶されているデータの誤りを検出して訂正する１６ビット用のＥＣＣ回路１４を備えている。このような半導体装置１０の具体的一例としては、１６ビット長の命令（プログラム等）を扱うことができる８ビットマイコンが挙げられる。当該８ビットマイコンでは、命令は１６ビット長、一度に扱えるデータ長が８ビットとなるため、８ビット長の命令を扱う一般的な８ビットマイコンとは、フラッシュメモリ１２へのアクセス（書き込み及び読み出し）の仕方が異なる。
【００２２】
このような命令等のプログラム、及び個人データやセーブデータ等は、フラッシュメモリ１２に記憶される。本実施の形態のフラッシュメモリ１２のアドレスマップの具体的一例を図２に示す。なお、図２に示したフラッシュメモリ１２は、具体的一例として、プログラム領域１２Ａを６４Ｋバイト、データフラッシュ領域１２Ｂを８Ｋバイトとした、合計７２Ｋバイトのアドレスマップ仕様例を示している。図２に示すように、フラッシュメモリ１２は、６４Ｋバイト単位で区切られており、プログラム領域１２Ａをセグメント０、データフラッシュ領域１２Ｂをセグメント１としている。さらに本実施の形態のフラッシュメモリ１２のデータフラッシュ領域１２Ｂは、図２に示すようにＥＣＣ用データ領域１２ＢＡと、データ領域１２ＢＢとを有している。
【００２３】
フラッシュメモリ１２に記憶されているこのような命令等のプログラムは、例えば、プログラムアップデート機能が搭載されている場合等を除き、一般的には、書き換えられることが少ない。そのため、命令等のプログラムが記憶されているフラッシュメモリ１２のプログラム領域１２Ａでは、メモリセルの劣化があまり生じないことが多い。
【００２４】
一方、フラッシュメモリ１２において、個人データやセーブデータ等は、頻繁に書き換えられることが多い。そのため、個人データやセーブデータ等が記憶されているフラッシュメモリ１２のデータフラッシュ領域１２Ｂでは、メモリセルの劣化を促進させることになるため、ＥＣＣ回路１４によりエラー検知及び訂正を行うことが必要となる。
【００２５】
そのため、本実施の形態の半導体装置１０では、プログラム領域１２Ａへのアクセスは、ＥＣＣ回路１４を介さずに行われる。すなわち、プログラム領域１２Ａへのアクセスでは、エラー検知及び訂正が行われない。一方、データフラッシュ領域１２Ｂへのアクセスは、ＥＣＣ回路１４を介すため、エラー検知及び訂正が行われる。
【００２６】
本実施の形態のＥＣＣ回路１４は、１６ビットのメモリに対して、１ビットのエラー検知及び訂正を可能とするものであり、チェックビットとなる５ビット長のＥＣＣ用データに基づいて、１６ビット長のデータのエラー検知及び訂正を行う。なお、ＥＣＣ機能及びＥＣＣ用データとしては、たとば、ハミング符号を用いるものが挙げられるが、特に限定されず、その他、一般的なＥＣＣ機能に関する技術を適用してもよい。
【００２７】
具体的には、本実施の形態のＥＣＣ回路１４は、図１に示すように復号化制御部１４Ａ及び暗号化制御部１４Ｂを備えている。暗号化制御部１４Ｂは、制御回路３２から入力された１６ビット長のデータに対して、５ビット長のＥＣＣ用データを付加して、２１ビット長の暗号化された暗号化データ（ｅｃｃｄａｔａ［２０：０］）を生成して出力する。なお、ここでは、暗号化データ（ｅｃｃｄａｔａ［２０：０］）のうち、上位の５ビットが、ＥＣＣ用データに対応している。一方、復号化制御部１４Ａは、セレクタ４０から入力された、２１ビット長のデータから、暗号化制御部１４Ｂで付加したＥＣＣ用データを削除し、ＥＣＣ用データに基づいてエラー検知及び訂正を行って復号化して、出力する。
【００２８】
本実施の形態の半導体装置１０は、さらに、ダミーデータ除去回路２０、データ分割回路２２、選択信号生成回路２４、制御回路３０、制御回路３２、制御回路３４、制御回路３６、セレクタ４０、セレクタ４２、セレクタ４４、及びセレクタ４６を備えている。なお、本実施の形態の制御回路３０が、本発明の第１読出制御部に対応し、制御回路３２が、本発明の第１書込制御部に対応し、制御回路３４が、本発明の第２書込制御部に対応し、ダミーデータ除去回路２０が、本発明の第２読出制御部に対応する。
【００２９】
選択信号生成回路２４は、フラッシュメモリ１２のアドレス（ｆｌａｓｈ＿ａｄｄｒｅｓｓ［１５：０］）をデコードして、現在アクセスしているアドレスがプログラム領域１２Ａ及びデータフラッシュ領域１２Ｂのいずれであるかを示す信号ｓｅｌｅｃｔ１信号を生成してセレクタ４０、４２、４４、４６に出力する機能を有している。なお、本実施の形態では、ｓｅｌｅｃｔ１信号が「０」の場合は、プログラム領域１２Ａにアクセスしていることを示している。また、ｓｅｌｅｃｔ１信号が「１」の場合は、データフラッシュ領域１２Ｂにアクセスしていることを示している。
【００３０】
セレクタ４０、４２、４４、４６は、それぞれｓｅｌｅｃｔ１信号により入力信号を選択して出力する機能を有する回路である。
【００３１】
データ分割回路２２は、データフラッシュ領域１２Ｂに書き込む１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）を分割（ここでは２分割）して８ビット長のライトデータを生成して出力する機能を有する回路である。
【００３２】
制御回路３２は、データ分割回路２２から入力された８ビット長のライトデータにダミーデータを付加して１６ビット長のデータを生成してＥＣＣ回路１４（暗号化制御部１４Ｂ）に出力する機能を有している。
【００３３】
制御回路３４は、ＥＣＣ回路１４（暗号化制御部１４Ｂ）から出力された２１ビット長の暗号化データ（ｅｃｃｄａｔａ［２０：０］）から、データフラッシュ領域１２Ｂに実際に書き込むための１６ビット長のデータ（ｆｌａｓｈ＿ｗｄａｔａ［１５：０］）を生成して出力する機能を有している。
【００３４】
制御回路３０は、データフラッシュ領域１２Ｂから読み出された１６ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［１５：０］）からＥＣＣ回路１４（復号化制御部１４Ａ）に入力するための２１ビット長のデータを生成する機能を有している。
【００３５】
ダミーデータ除去回路２０は、ＥＣＣ回路１４（復号化制御部１４Ａ）から出力された１６ビット長のデータからダミーデータを除去して、実際に有効な８ビット長のリードデータを生成して出力する機能を有している。
【００３６】
次に、本実施の形態の半導体装置１０のフラッシュメモリ１２へのアクセス動作（書き込み及び読み出し）について詳細に説明する。
【００３７】
まず、データフラッシュ領域１２Ｂへのアクセス動作のうち、書き込み動作について詳細に説明する。図３には、本実施の形態のフラッシュメモリ１２のデータフラッシュ領域１２Ｂへの書き込み動作の流れの一例を示す。
【００３８】
データフラッシュ領域１２Ｂへアクセスを行う場合は、選択信号生成回路２４は「１」のｓｅｌｅｃｔ１信号を各セレクタ４０、４２、４４、４６に出力する。
【００３９】
本実施の形態では、フラッシュメモリ１２のデータフラッシュ領域１２Ｂに書き込むライトデータ（ｗｄａｔａ［１５：０］）は、実際には、１６ビット長である。しかしながら、当該１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）にＥＣＣ用データを付加してしまうと、上述の比較例で述べたように、２１ビット長のデータになってしまう。比較例のように２１ビット長とならないように、本実施の形態では、１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）を分割（具体的には、２分割）した８ビット長のライトデータにＥＣＣ用データを付加して、データフラッシュ領域１２Ｂに書き込む。そこで本実施の形態では、図２に示すように、データフラッシュ領域１２Ｂに、ＥＣＣ用データ領域１２ＢＡ及びデータ領域１２ＢＢの２つの領域を設けている。なお、１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）を２分割して８ビット長のライトデータとして扱っているため、データフラッシュ領域１２Ｂの領域は、従来（図８、図９参照）に比べて、２倍のアドレスを要している。
【００４０】
まず、データ分割回路２２では、入力された１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）を２分割して、２つの８ビット長のライトデータ（ｗｄａｔａ［７：０］）を生成して出力する（図３、Ｓ１．データ分割参照）。データ分割回路２２から出力された８ビット長のライトデータ（ｗｄａｔａ［７：０］）は、制御回路３２に入力される。
【００４１】
制御回路３２は、入力された８ビット長のライトデータ（ｗｄａｔａ［７：０］）に、所定の８ビット長のダミーデータを付加して、１６ビット長のデータ（｛８’ｄ０、ｗｄａｔａ［７：０］｝）生成してＥＣＣ回路１４（暗号化制御部１４Ｂ）へ出力する（図３、Ｓ２．ダミーデータ発生参照）。
【００４２】
ＥＣＣ回路１４の暗号化制御部１４Ｂでは、制御回路３２から入力された１６ビット長のデータ（｛８’ｄ０、ｗｄａｔａ［７：０］｝）に応じた５ビット長のＥＣＣ用データを上位に付加して、２１ビット長の暗号化データ（ｅｃｃｄａｔａ［２０：０］）を生成して、制御回路３４に出力する（図３、Ｓ３．チェックビット発生参照）。
【００４３】
制御回路３４は、ＥＣＣ回路１４（暗号化制御部１４Ｂ）から出力された２１ビット長の暗号化データ（ｅｃｃｄａｔａ［２０：０］）から実際に、フラッシュメモリ１２のデータフラッシュ領域１２Ｂに書き込む１６ビット長のデータを生成する。具体的一例として、本実施の形態の制御回路３４では、２１ビット長の暗号化データ（ｅｃｃｄａｔａ［２０：０］）から、制御回路３２で付加した８ビット長のダミーデータを削除する。さらに制御回路３４は、３ビット長（全長１６ビット−ライトデータ８ビット−ＥＣＣ用データ５ビット＝３ビット）の所定のダミーデータを上位ビットに新たに付加した１６ビット長のデータ（｛３’ｄ０、ｅｃｃｄａｔａ［２０：１６］、ｅｃｃｄａｔａ［７：０］｝）を生成してセレクタ４６に出力する（図３、Ｓ４．書込データ生成参照）。
【００４４】
セレクタ４６は、ｓｅｌｅｃｔ１信号に応じて、制御回路３４から入力された１６ビット長のデータ（｛３’ｄ０、ｅｃｃｄａｔａ［２０：１６］、ｅｃｃｄａｔａ［７：０］｝）をライトデータ（ｆｌａｓｈ＿ｗｄａｔａ［１５：０］）として選択して、フラッシュメモリ１２に出力する。
【００４５】
一方、制御回路３６は、フラッシュメモリ１２のデータフラッシュ領域１２Ｂにアクセスする際に、入力されたアドレス（ａｄｄｒｅｓｓ［１５：０］）の変換を行う機能を有している。上述したように、本実施の形態のデータフラッシュ領域１２Ｂでは、１アドレスをＥＣＣ用データ領域１２ＢＡとデータ領域１２ＢＢとに分けている。また、データフラッシュ領域１２Ｂでは、本来、１アドレスが１６ビットであるところを、１アドレスが８ビットとして扱っているため、アドレスの変換を制御回路３６により行っている。なお、具体的一例として、本実施の形態では、データフラッシュ領域１２Ｂを１：００００Ｈ〜１：１ＦＦＦＨとしている。
【００４６】
データフラッシュ領域１２Ｂにアクセスする際は、制御回路３６により変換されたアドレス（ｆｌａｓｈ＿ａｄｄｒｅｓｓ［１５：０］）が、フラッシュメモリ１２に出力される。
【００４７】
フラッシュメモリ１２では、データフラッシュ領域１２Ｂの、セレクタ４４から入力されたアドレス（ｆｌａｓｈ＿ａｄｄｒｅｓｓ［１５：０］）に、１６ビット長のライトデータ（ｆｌａｓｈ＿ｗｄａｔａ［１５：０］）が書き込まれる。この際、上述したように、データ領域１２ＢＢには、８ビット長の実際のライトデータが書き込まれ、ＥＣＣ用データ領域１２ＢＡには、３ビット長のダミーデータと、ライトデータに応じた５ビット長のＥＣＣ用データとが書き込まれる。
【００４８】
次に、データフラッシュ領域１２Ｂへのアクセス動作のうち、読み出し動作について詳細に説明する。図４には、本実施の形態のフラッシュメモリ１２のデータフラッシュ領域１２Ｂからの読み出し動作の流れの一例を示す。
【００４９】
なお、読み出し動作においても、選択信号生成回路２４は「１」のｓｅｌｅｃｔ１信号を各セレクタ４０、４２、４４、４６に出力する。
【００５０】
まず、制御回路３０では、フラッシュメモリ１２（データフラッシュ領域１２Ｂ）のセレクタ４４から入力されたアドレス（ｆｌａｓｈ＿ａｄｄｒｅｓｓ［１５：０］）から読み出した１６ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［１５：０］）から、ＥＣＣ回路１４の復号化制御部１４Ａに入力される２１ビット長のデータを生成する。なお、本実施の形態では、図４等に示すように、データフラッシュ領域１２Ｂから読み出された１６ビット長のリードデータは、３ビット長のダミーデータと、５ビット長のＥＣＣ用データと、実際に有効な８ビット長のリードデータと、を含んでいる。具体的一例として、本実施の形態の制御回路３０では、１６ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［１５：０］）から、制御回路３４で付加した３ビット長のダミーデータを削除する。さらに制御回路３０は、８ビット長の所定のダミーデータを新たに、付加した２１ビット長のデータ（｛ｆｌａｓｈ＿ｒｄａｔａ［１２：８］、８’ｄ０、ｆｌａｓｈ＿ｒｄａｔａ［７：０］｝）を生成してセレクタ４６に出力する（図４、Ｓ１．ダミーデータ発生参照）。なお、制御回路３０で付加する８ビット長の所定のダミーデータは、制御回路３２で付加したものと同一となっている。
【００５１】
セレクタ４０は、ｓｅｌｅｃｔ１信号に応じて、制御回路３０から入力された２１ビット長のデータ（｛ｆｌａｓｈ＿ｒｄａｔａ［１２：８］、８’ｄ０、ｆｌａｓｈ＿ｒｄａｔａ［７：０］｝）を選択して、ＥＣＣ回路１４（復号化制御部１４Ａ）に出力する。
【００５２】
ＥＣＣ回路１４の復号化制御部１４Ａは、セレクタ４０から入力された２１ビット長のデータ（｛ｆｌａｓｈ＿ｒｄａｔａ［１２：８］、８’ｄ０、ｆｌａｓｈ＿ｒｄａｔａ［７：０］｝）から５ビット長のＥＣＣ用データを削除する。さらに、復号化制御部１４Ａは、１６ビット長のデータ（ダミーデータ８ビット＋リードデータ８ビット）に対して、ＥＣＣ用データに基づいて、エラー検知及び訂正を行って復号した後、１６ビット長の復号化データをセレクタ４２に出力する（図４、Ｓ２．ＥＣＣ復号参照）。
【００５３】
セレクタ４２は、ｓｅｌｅｃｔ１信号に応じて、復号化制御部１４Ａから入力された１６ビット長の復号化データを、１６ビット長のリードデータ（ｒａｄａｔａ［１５：０］として選択して、ダミーデータ除去回路２０に出力する。
【００５４】
セレクタ４２から出力された１６ビット長のリードデータ（ｒａｄａｔａ［１５：０］のうち、上位８ビットは、ダミーデータであり、下位８ビットが実際に有効なリードデータとなる。ダミーデータ除去回路２０では、１６ビット長のリードデータ（ｒａｄａｔａ［１５：０］）からダミーデータを除去して、有効な８ビットのリードデータを生成する（図４、Ｓ３．ダミーデータ削除参照）。
【００５５】
さらに、本実施の形態の半導体装置１０における、プログラム領域１２Ａへのアクセス動作を説明する。プログラム領域１２Ａへアクセスを行う場合は、選択信号生成回路２４は、「０」のｓｅｌｅｃｔ１信号を、各セレクタ４０、４２、４４、４６に出力する。また、セレクタ４４は、直接入力されたアドレス（ａｄｄｒｅｓｓ［１５：０］）を選択して、フラッシュメモリ１２に出力する。
【００５６】
アクセス動作が書き込み動作の場合は、セレクタ４６は、ＥＣＣ回路１４を介さずに入力された１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）を選択する。選択された１６ビット長のライトデータ（ｗｄａｔａ［１５：０］）は、プログラム領域１２Ａの、セレクタ４４から入力されたアドレスに書き込まれる。
【００５７】
一方、アクセス動作が読み出し動作の場合は、セレクタ４０には、フラッシュメモリ１２（プログラム領域１２Ａ）から制御回路３０を介して入力された２１ビット長のデータと、２１ビット長の所定のダミーデータ（２１’ｄ０）が入力される。セレクタ４０は、ｓｅｌｅｃｔ１信号に応じて、２１ビット長のダミーデータを選択してＥＣＣ回路１４（復号化制御部１４Ａ）に出力する。復号化制御部１４Ａでは、ＥＣＣ用データに相当する上位５ビットを削除し、エラーの検出及び訂正処理を行った後、セレクタ４２に出力する。
【００５８】
セレクタ４２の「１」側には、ＥＣＣ回路１４（復号化制御部１４Ａ）から出力された１６ビット長のデータ復号化データが入力される。一方、セレクタ４２の「０」側には、ＥＣＣ回路１４を介さずにフラッシュメモリ１２（プログラム領域１２Ａ）から読み出された１６ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［１５：０］）が入力される。
【００５９】
セレクタ４２では、ｓｅｌｅｃｔ１信号に応じて、フラッシュメモリ１２（プログラム領域１２Ａ）から直接入力された１６ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［１５：０］）を選択し、１６ビット長のリードデータ（ｒｄａｔａ［１５：０］）として出力する。なお、この場合は、１６ビット長のリードデータ（ｒｄａｔａ［１５：０］）にはダミーデータが含まれていないため、ダミーデータ除去回路２０におけるダミーデータの除去は行われない。
【００６０】
以上説明したように本実施の形態の半導体装置１０では、フラッシュメモリ１２のメモリ領域を、プログラム領域１２Ａとデータフラッシュ領域１２Ｂとにわけている。書き換え頻度が低い命令等のプログラムは、プログラム領域１２Ａに記憶される。書き換え頻度が高いデータは、データフラッシュ領域１２Ｂに記憶される。
【００６１】
本実施の形態の半導体装置１０では、プログラム領域１２Ａへアクセス（書き込み及び読み出し）する際は、ＥＣＣ回路１４を介さずに直接アクセスする。
【００６２】
一方、本実施の形態の半導体装置１０では、データフラッシュ領域１２Ｂへアクセスする際は、ＥＣＣ回路１４を介してアクセスする。データフラッシュ領域１２Ｂに書き込みを行う場合は、１６ビット長のライトデータをデータ分割回路２２で分割して８ビット長のライトデータを生成する。制御回路３２は、８ビット長のライトデータに８ビット長のダミーデータを付加して生成した１６ビット長のデータをＥＣＣ回路１４の暗号化制御部１４Ｂに出力する。暗号化制御部１４Ｂでは、５ビット長のＥＣＣ用データを付加した２１ビット長の暗号化データ（ｅｃｃｄａｔａ［２０：０］）を生成して、制御回路３４に出力する。制御回路３４は、２１ビット長の暗号化データ（ｅｃｃｄａｔａ［２０：０］）から制御回路３２で付加した８ビット長のダミーデータを削除すると共に、３ビット長のダミーデータを付加して、データフラッシュ領域１２Ｂに実際に書き込むための１６ビット長のデータを生成する。この１６ビット長のデータがライトデータ（ｆｌａｓｈ＿ｗｄａｔａ［１５：０］）としてフラッシュメモリ１２に出力される。
【００６３】
データフラッシュ領域１２Ｂから読み出しを行う場合は、制御回路３０は、フラッシュメモリ１２のデータフラッシュ領域１２Ｂから読み出された１６ビット長のリードデータ（ｆｌａｓｈ＿ｒｄａｔａ［１５：０］）から、制御回路３４で付加された３ビット長のダミーデータを削除する。さらに、制御回路３０は、制御回路３２で付加したのと同一の８ビット長のダミーデータを付加して、セレクタ４０を介してＥＣＣ回路１４の復号化制御部１４Ａに出力する。復号化制御部１４Ａでは、暗号化制御部１４Ｂで付加した５ビット長のＥＣＣ用データを削除し、エラーの検知及び訂正を行って復号化した１６ビットの復号化データをセレクタ４２を介してリードデータ（ｒｄａｔａ［１５：０］）としてダミーデータ除去回路２０に出力する。ダミーデータ除去回路２０では、リードデータから制御回路３０で付加された８ビット長のダミーデータを削除して、実際に有効な８ビット長のリードデータを生成して出力する。
【００６４】
これにより、本実施の形態の半導体装置１０では、フラッシュメモリ１２の１アドレスのデータ長が１６ビットのままで、ＥＣＣ回路１４によるエラーの検出及び訂正処理を行うことができる。
【００６５】
また、フラッシュメモリ１２のメモリ領域の利用効率を向上させることができる。上述した比較例の半導体装置１００では、プログラム領域１１２Ａにおいて、１アドレスあたり５ビット長の不要なビットが生じる。一方、本実施の形態の半導体装置１０では、データフラッシュ領域１２Ｂにおいて、１アドレスあたり３ビット長の不要なビットが生じるが、実際には、２アドレスが１つの有効な１６ビット長のデータに対応するため、１つの有効な１６ビット長のデータに対しては、６ビット長の不要なビットが生じることになる。しかしながら、一般的に、データフラッシュ領域１２Ｂは、プログラム領域１２Ａに比べて小さい（記憶するデータ量が少ない）ことが多い。そのため、半導体装置１０では、データフラッシュ領域１２Ｂに対するプログラム領域１２Ａの比率が増加するほど、メモリ領域の利用効率を向上させることができる。図５には、本実施の形態の半導体装置１０におけるフラッシュメモリ１２、及び上述した比較例の半導体装置１００におけるアドレスのデータ長が２１ビットのフラッシュメモリ１１２における、各フラッシュメモリ（１２、１１２）のメモリ使用量を比較したグラフを示す。また、図６には、比較例に対する、フラッシュメモリ１２のメモリ領域のビット数の削減率を表したグラフを示す。図５及び図６からも、半導体装置１０では、データフラッシュ領域１２Ｂに対するプログラム領域１２Ａの比率が増加するほど、メモリ領域の利用効率を向上させることができることがわかる。
【００６６】
また、上述したように、フラッシュメモリ１２のメモリ領域を小さくすることができるため、チップサイズの縮小やコストアップの抑制等の効果が得られる。
【００６７】
なお、本実施の形態の半導体装置１０では、上述したように１６ビット用のＥＣＣ回路１４を用いているがこれに限らず、例えば、その他のビット数葉のＥＣＣ回路を用いても良い。なお、本実施の形態のように１６ビット用のＥＣＣ回路１４を用いることにより、一般的に用いられているＥＣＣ機能を有する回路をＥＣＣ回路１４として流用することができるため、例えば、半導体装置１０の開発期間の短縮や、コストアップの抑制等の効果が得られる。
【００６８】
また、本実施の形態の半導体装置１０では、フラッシュメモリ１２に適用した場合を説明しているが、これに限らず、フラッシュメモリ以外のその他の不揮発性や揮発性の各種メモリに対しても同様に適用することができる。
【００６９】
なお、本実施の形態の半導体装置１０では、各ダミーデータとして、各ビットを「０」値に固定したダミーデータを用いているがこれに限らず、その他の所定のダミーデータを用いてもよい。
【００７０】
また、その他の本実施の形態で説明した半導体装置１０、フラッシュメモリ１２、及びＥＣＣ回路１４の構成及び動作や具体的なビット数等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることはいうまでもない。
【符号の説明】
【００７１】
１０  半導体装置
１２  フラッシュメモリ
１２Ａ  プログラム領域  （所定領域外）
１２Ｂ  データフラッシュ領域  （所定領域）
１２ＢＡ  ＥＣＣ用データ領域
１２ＢＢ  データ領域
１４  ＥＣＣ回路  （訂正部）
１４Ａ  復号化制御部
４Ｂ  暗号化制御部
２０  ダミーデータ除去回路  （第２読出制御部）
２２  データ分割回路  （分割部）
２４  選択信号生成回路
３０  制御回路  （第１読出制御部）
３２  制御回路  （第１書込制御部）
３４  制御回路  （第２書込制御部）
３６  制御回路
４０、４２、４４、４６  セレクタ
【図１】
2014134932.tif 000003
【図２】
2014134932.tif 000004
【図３】
2014134932.tif 000005
【図４】
2014134932.tif 000006
【図５】
2014134932.tif 000007
【図６】
2014134932.tif 000008
【図７】
2014134932.tif 000009
【図８】
2014134932.tif 000010
【図９】
2014134932.tif 000011