(57)【特許請求の範囲】
【請求項１】
マイクロコントローラと、揮発性メモリと、前記マイクロコントローラを制御するプログラムデータと前記揮発性メモリに書込む制御データとが混在して格納されるブロック毎にデータの消去、書込みが可能な不揮発性メモリと、前記プログラムデータ及び前記制御データの書込みあるいは読出しを制御する制御回路と、あるいはさらに別の記憶装置とを備えた半導体集積回路において、
前記制御回路は、前記不揮発性メモリの初期化要求の信号を検知し、初期化前に、前記不揮発性メモリから前記制御データを読出し、該読出した制御データを前記揮発性メモリあるいは前記別の記憶装置に書込む制御を行うとともに、前記不揮発性メモリの初期化後に、前記揮発性メモリあるいは前記別の記憶装置から前記制御データを読出し、該読出した制御データを前記不揮発性メモリに書込む制御を行うことを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路において、
前記制御回路は、初期化後に前記制御データが書込まれた前記不揮発性メモリに前記プログラムデータを書込む際、前記制御データが書込まれた前記不揮発性メモリのアドレスをスキップして前記プログラムデータを書込む制御を行うことを特徴とする半導体集積回路。
【請求項３】
請求項１又は２いずれか記載の半導体集積回路において、  
前記制御回路は、前記半導体装置の電源投入の信号を検知し、前記不揮発性メモリから前記制御データを読出し、該読出した制御データを前記揮発性メモリに書込む制御を行うことを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロコントローラと不揮発性メモリとその制御回路とを備えた半導体集積回路に関し、特に、データの書込みあるいは読出しを自動的に行う制御回路を備えた半導体集積回路に関する。
【背景技術】
【０００２】
無線やオーディオ等のアナログ回路とマイクロコントローラや各種メモリ等のデジタル回路を一つの半導体集積回路にまとめて実装する場合、製造プロセスのばらつきによってアナログ回路の特性が変動し、特性が劣化することがある。そのため、予め、アナログ回路に抵抗やコンデンサ等の値を調整するトリミング回路を形成しておき、トリミングによりアナログ回路の特性改善を図っている。
【０００３】
図９は従来のこの種の半導体集積回路の説明図である。半導体集積回路１００には、トリミング回路を含むアナログ回路２００とマイクロコントローラ１０や各種記憶装置等を含むデジタル回路３００が実装されている。デジタル回路３００内のマイクロコントローラ１０は、ブロック毎にデータの消去、書込みが可能な不揮発性メモリであるフラッシュメモリ２０へのアクセス制御、プログラミング装置４００からフラッシュメモリ２０へのプログラムの書込み制御、トリミング用のレジスタ４０、４２の制御等を行っている。フラッシュメモリプログラミング回路２２は、プログラミング装置４００から送られてくるプログラムやデータをフラッシュメモリ制御回路用データに変換するインターフェース回路であり、フラッシュメモリ制御回路用データは、フラッシュメモリ２０のプログラム領域３０及びデータ領域３１に記憶（格納）される。
【０００４】
図１０はトリミング回路の一例であり、トリミング制御回路４５としてトランジスタを使った抵抗５０のトリミング回路を示す。図１０に示すように各抵抗５０間にトランジスタ５２が接続されており、レジスタ４０（「レジスタ１」と表示）の端子５４〜５８から各トラジスタ５２のゲートに所定のゲート電圧を印加することにより、各トランジスタ５２をオン／オフ制御し、端子４７と端子４８に必要な抵抗値を生成し、アナログ回路２００の特性改善を図ることができる。
【０００５】
同様に図１１は別のトリミング回路の一例であり、トランジスタ５２を使ったコンデンサ５１のトリミング回路を示す。図１１に示すように各コンデンサ５１にトランジスタ５２が接続されており、レジスタ４２（「レジスタ２」と表示）の端子５４〜５８から各トラジスタ５２のゲートに所定のゲート電圧を印加することにより、各トランジスタ５２をオン／オフ制御し、端子４７と端子４８に必要なコンデンサ値を生成し、アナログ回路２００の特性改善を図ることができる。
【０００６】
この種の半導体集積回路１００では、半導体集積回路の製造が終わると、トリミング調整装置５００を使い、アナログ回路２００の特性試験を行い、アナログ回路２００が正常に動作するかを確認する。アナログ回路２００の特性が規定値からずれている場合、アナログ回路２００の特性が規定値となるようにレジスタ４０、４２の値を調整し、これをトリミングデータとしてレジスタ４０、４２に記憶される。
【０００７】
ここで、通常のレジスタは半導体集積回路に供給する電源を遮断するとトリミングデータが消えてしまう揮発性メモリであるので、このトリミングデータを不揮発メモリに保持しておく必要がある。図９に示す回路では、後述するフラッシュメモリの書込み工程に従い、フラッシュメモリ２０のトリミングデータ領域３２にトリミングデータ３３、３４が保持されている。そして半導体集積回路を使用する時（電源が投入される毎）に、フラッシュメモリ２０に記憶されたトリミングデータをレジスタ４０、４２に転送し、アナログ回路の特性が規定値となるようにしている。例えば、特許文献１の段落番号００７０にフラッシュメモリに記憶されたトリミングデータをレジスタに転送する記述がある。また、マイクロコントローラのプログラムの一部にトリミングデータを格納しておき、プログラムを実行することで、トリミングデータをレジスタに設定する方法もある。
【０００８】
フラッシュメモリの書込み工程は、次のように行われる。図１２は、フラッシュメモリ２０にトリミングデータとマイクロコントローラ１０のプログラムデータを書込むフローチャートである。半導体集積回路１００が完成すると、アナログ回路の特性評価を行い（工程８１）、アナログ回路の特性が規定値を満たしていることを確認する。ここで特性値が規定値を満たしていない場合は、トリミング用レジスタの値（トリミングデータ）を変更して（工程８２）、再度アナログ回路の特性評価を行う（工程８１）。アナログ回路の特性が規定値を満たすトリミングデータが見つかると、トリミングデータを確定する（工程８３）。次に、フラッシュメモリ２０の初期化を行い（工程８４）、フラッシュメモリ２０へ工程８３で確定したトリミングデータの書込みを行う（工程８５）。一般的にはこの段階で、半導体集積回路１００がユーザーに提供される。
【０００９】
ユーザーに提供された半導体集積回路１００は、ユーザーの仕様に合わせて、プログラミング装置２によってフラッシュメモリ２０のプログラム領域３０にマイクロコントローラ１０を制御するためのプログラムの書込みが行われる（工程９５）。さらにデータ領域があれば、データ領域３１にデータ書込みも行われる（工程９６）。ここで、破線９０で囲まれた処理は、一般的には、ユーザーが行う処理を示している。一旦書込んだプログラムを書換える場合は、半導体集積回路内あるいは外付けの記憶装置に、一旦トリミングデータを読み出し（工程９１）、フラッシュメモリを初期化（工程９３）した後、記憶装置からフラッシュメモリへトリミングデータの書込みを行うことになる（工程９４）。
【特許文献１】特開２００２−７４９９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上のように従来の半導体集積回路では、トリミングデータをフラッシュメモリ２０のトリミングデータ領域に保持していた。図１３に従来のフラッシュメモリのデータ構成を示す。例えば６４Ｋバイトのフラッシュメモリ２０の場合、マイクロコントローラ１０のプログラム領域３０、プログラム以外のデータ領域３１、トリミングデータ領域３２から構成され、左側に示す値は、アドレスを示している。一般的にフラッシュメモリは、２５６バイトや５１２バイトと一定のサイズで消去される。そのため、トリミングデータが数バイトの場合であっても、トリミングデータ領域を一定サイズ確保する必要があり、プログラム領域３０やデータ領域３１が相対的に小さくなるという問題がある。
【００１１】
また、フラッシュメモリ２０を効率的に使用するため、トリミングデータ領域３２とプログラム領域３０を区分させず、混在させて記憶させる場合がある。その場合、プログラムデータの書換えが必要となったときには、外付けの記憶装置にトリミングデータ３３、３４を一旦読み出し、プログラム内にその読み出したトリミングデータを書込んだプログラムとトリミングデータをフラッシュメモリに書込むという工程が必要となる。
【００１２】
さらにまた、フラッシュメモリ２０に書込まれているトリミングデータ３３、３４を外部から読み出せない構造としている場合、予めトリミングデータを別の記憶装置に記憶しておき、プログラムの書換え時に、そのトリミングデータを書込む必要がある。多数の半導体集積回路毎にそれぞれ異なるトリミングデータを管理することは、非常に煩雑になるという問題があった。さらにトリミングデータが不明となった場合は、再度アナログ回路の特性評価を行い、図１２に示すようにトリミングデータの再検出を行う（工程９２）必要があるという問題があった。
【００１３】
以上のように従来の半導体集積回路では、不揮発性メモリを効率的に使用できないという問題や、不揮発性メモリの書き換えが煩雑であるという問題があった。本発明はこのような問題を解決し、不揮発性メモリを効率的に使用することができ、かつ書き換えの利便性を向上させた半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本願請求項１に係る発明は、マイクロコントローラと、揮発性メモリと、前記マイクロコントローラを制御するプログラムデータと前記揮発性メモリに書込む制御データとが混在して格納されるブロック毎にデータの消去、書込みが可能な不揮発性メモリと、前記プログラムデータ及び前記制御データの書込みあるいは読出しを制御する制御回路と、あるいはさらに別の記憶装置とを備えた半導体集積回路において、前記制御回路は、前記不揮発性メモリの初期化要求の信号を検知し、初期化前に、前記不揮発性メモリから前記制御データを読出し、該読出した制御データを前記揮発性メモリあるいは前記別の記憶装置に書込む制御を行うとともに、前記不揮発性メモリの初期化後に、前記揮発性メモリあるいは前記別の記憶装置から前記制御データを読出し、該読出した制御データを前記不揮発性メモリに書込む制御を行うことを特徴とする。
【００１５】
本願請求項２に係る発明は、請求項１記載の半導体集積回路において、前記制御回路は、初期化後に前記制御データが書込まれた前記不揮発性メモリに前記プログラムデータを書込む際、前記制御データが書込まれた前記不揮発性メモリのアドレスをスキップして前記プログラムデータを書込む制御を行うことを特徴とする。
【００１６】
本願請求項３に係る発明は、請求項１又は２いずれか記載の半導体集積回路において、  前記制御回路は、前記半導体装置の電源投入の信号を検知し、前記不揮発性メモリから前記制御データを読出し、該読出した制御データを前記揮発性メモリに書込む制御を行うことを特徴とする。
【発明の効果】
【００１７】
本発明の半導体集積回路の制御回路は、半導体集積回路の不揮発性メモリの初期化前あるいは電源投入後に、その信号を検知し、不揮発性メモリに格納されたトリミングデータなどの制御データを、自動的に揮発性メモリ等に書込む制御を行う。また不揮発性メモリの初期化後に、その信号を検知し、制御データを自動的に揮発性メモリ等から読出し、不揮発性メモリに書込む制御を行う構成となっている。従って、半導体集積回路の電源投入時、不揮発性メモリの初期化やプログラムデータの書換え時に、ユーザーは何ら操作を要求されないので、煩雑さがなくなるという利点がある。
【００１８】
制御データは所定のアドレスに自動的に書込まれるので、ユーザーの操作ミスによって制御データが誤って消去され、あるいは書換えられる可能性がないという利点もある。
【００１９】
制御データは半導体集積回路内部に保持されており、外部の記憶装置に読出されることはないので、制御データの秘匿性が保たれるという利点もある。
【００２０】
フラッシュメモリのひとつの消去ブロックに制御データとプログラムデータとを混在させることができるので、フラッシュメモリの使用効率が向上するという利点もある。
【発明を実施するための最良の形態】
【００２１】
本発明の半導体集積回路は、マイクロコントローラと、揮発性メモリと、プログラムデータと制御データを格納されている不揮発性メモリと、不揮発性メモリの書込みや読出しを制御する制御回路を備えている。あるいはさらに別の記憶装置を備えている。本発明の制御回路は、半導体集積回路への電源投入あるいは不揮発性メモリの初期化を行う際、それに伴い発生する信号を検知し、不揮発性メモリから制御データを読出し、制御データを保持するための揮発性メモリに、自動的に書込む構成となっている。また不揮発性メモリの初期化が完了した際、それに伴い発生する信号を検知し、揮発性メモリから制御データを読出し、不揮発性メモリに書込むように制御している。そして制御データを記憶したアドレスをスキップしてプログラムデータを書込む構成となっている。以下、本発明の半導体集積回路について制御データがトリミングデータである場合を例に取り、詳細に説明する。
【実施例１】
【００２２】
図１は本発明の半導体集積回路の構成を示す説明図である。半導体集積回路１００には、トリミング回路を含むアナログ回路２００とマイクロコントローラ１０等を含むデジタル回路３００が実装されている。デジタル回路３００内のマイクロコントローラ１０は、フラッシュメモリ２０へのアクセス制御、プログラミング装置４００からフラッシュメモリ２０へのプログラムの書込み制御、トリミング用のレジスタ４０、４２の制御を行う。フラッシュメモリプログラミング回路２２は、プログラミング装置４００から送られてくる初期化の要求、プログラムやデータをフラッシュメモリ制御回路用データに変換するインターフェース回路である。リセット検出回路１５は、外部からのリセット信号や、電源のオン／オフを検出する。
【００２３】
アナログ回路２００には、図１０、図１１で説明した構造のトリミング回路を備えており、アナログ回路２００の特性が期待値となるようにトリミングデータが、レジスタ４０、４２に保持されている。なおトリミング回路は、トリミング対象を抵抗やコンデンサとする場合に限らず、オペアンプのゲイン調整や電圧調整回路等のアナログ回路の特性をレジスタで制御できるものを用いることができる。
【００２４】
図２は、本発明のフラッシュメモリ２０のデータ構造を示す図である。図１３に示した従来のフラッシュメモリのデータ構造と比較して、トリミングデータ３３、３４をプログラム領域３０に挿入している点が異なる。プログラム領域３０に挿入することにより、図１３に示したトリミングデータ領域３２が不要となり、フラッシュメモリの容量を削減できる。図２において、左側に示す値はフラッシュメモリのアドレスを示している。
【００２５】
トリミングデータ３３（「トリミングデータ１」と表示）とトリミングデータ３４（「トリミングデータ２」と表示）は、それぞれ「Ｔ０１」と「Ｔ０２」と指定されたアドレスに書込まれている。アドレス「Ｔ０１」とアドレス「Ｔ０２」は半導体集積回路により固定されたアドレスを使用する。ここで、マイクロコントローラ１０を制御するプログラムを実行する場合には、トリミングデータが書かれている領域をジャンプする必要がある。そこで本発明では図２で示すように、トリミングデータが書かれたアドレス「Ｔ０１」とアドレス「Ｔ０２」をジャンプするため、アドレス「Ａ０１」に「ＪＭＰ Ａ０２」３７という命令を記述し、アドレス「Ａ０２」に無条件でジャンプするようにプログラムを作成する。このように特定領域のジャンプ処理は、プログラムのコンパイラの設定で容易に実現できるので、マイクロコントローラを制御するためのプログラムを作成する場合に、特別意識する必要がない。
【００２６】
以上のように、フラッシュメモリ２０のプログラム領域３０に、トリミングデータ３３、３４を容易に組み込むことが可能となる。なお、本発明では、後述するように自動的にトリミングデータをトリミングレジスタに書込む構成となっているので、マイクロコントローラを制御するためのプログラム中に、トリミングデータをトリミングデータ用のレジスタに書込むプログラムを組み込む必要はない。
【００２７】
次に、図３のフローチャートを用いて、図１に示す半導体集積回路におけるフラッシュメモリにトリミングデータとプログラムデータを書込む工程について説明する。また図４に、図３に示すフラッシュメモリの書込み工程において、フラッシュメモリ内部のデータ構造を示している。
【００２８】
まず、アナログ回路の特性評価を行い（工程８１）、アナログ回路の特性が規定値を満たしていることを確認する。ここで、規定値からずれている場合には、トリミング用レジスタの値（トリミングデータ）を変更して（工程８２）、再度アナログ回路の特性評価を行う（工程８１）。アナログ回路の特性が規定値を満たすトリミングデータが見つかると、規定値を満たすトリミングデータを確定する（工程８３）。
【００２９】
次にフラッシュメモリ２０の初期化を行う（工程８４）。初期化されたフラッシュメモリの構造を図４（１）示す。全てＦＦｈとなる。
【００３０】
初期化されたフラッシュメモリ２０に、トリミングデータの書込みを行う（工程８５）。この工程では、図１に示すプログラミング装置４００から工程８３で確定したトリミングデータがフラッシュメモリ２０に書込まれる。フラッシュメモリの状態を図４（２）に示す。アドレス「Ｔ０１」とアドレス「Ｔ０２」にトリミングデータ３３及びトリミングデータ３４が書込まれている。
【００３１】
次に、初期プログラムを書込む（工程８６）。初期プログラムの書込みを終えたフラッシュメモリの状態を図４（３）に示す。ここで、「ＩＮＳＴ００」３５、「ＩＮＳＴ０１」３６・・・はそれぞれアドレス「００００Ｈ」、アドレス「０００１Ｈ」・・・に書込まれたマイクロコントローラの命令コードである。アドレス「Ａ０１」からアドレス「Ａ０２」へのＪＭＰ命令「ＪＭＰＡ０２」３７は、次にあるトリミングデータ３７、３８をマイクロコードとして実行しないためにスキップするためのものであり、これは前述したようにコンパイラの設定等で行えばよい。
【００３２】
初期プログラムの書込みまで終了すると、半導体集積回路の電源を一旦遮断し、ユーザーに提供される。図３に示す破線内の領域９０は、ユーザーが行う処理を示している。
【００３３】
ユーザーが半導体集積回路に再度電源を投入すると、後述するように、フラッシュメモリ制御回路２１には、電源がオン時またはリセット解除を検出した時に、フラッシュメモリ２０のアドレスＴ０１とアドレスＴ０２に書込まれているトリミングデータ３３とトリミングデータ３４をそれぞれレジスタ４０とレジスタ４２に転送し、その後にマイクロコントローラのリセット解除を行う。このように電源投入直後に、マイクロコントローラ１０のリセットが解除するまでにトリミングデータ３３、３４がレジスタ４０、４２に書込まれ、その後初期プログラムが実行される。
【００３４】
次に、マイクロコントローラを制御するプログラムを書換える場合について説明する。まず、フラッシュメモリ２０の初期化を行う（工程９１）。その後、レジスタ４０、４２に記憶されているトリミングデータ３３、３４をフラッシュメモリ２０のアドレスＴ０１とアドレスＴ０２に自動的に書込む（工程９２）。
【００３５】
プログラミング装置４００から、フラッシュメモリプログラミング回路２２を介して、フラッシュメモリ２０に新しいプログラムを書込む（工程９５）。このとき、フラッシュメモリ制御回路２１は、フラッシュメモリ２０のアドレスが「Ｔ０１」とアドレス「Ｔ０２」に一致したとき、先に書込んだトリミングデータ３３、３４が書き換わらないように、プログラムの書込みをスキップする。その結果、第４図（４）に示すように、新しいプログラムとトリミングデータが書込まれた状態となる。ここで、「ＩＮＳＴ  １０」３５、「ＩＮＳＴ  １１」３６等は、それぞれのアドレスにある新しいプログラムのマイクロコントローラ用の命令コードを示している。さらにプログラム以外のデータ領域がある場合は、データ領域３１にデータの書込みも行われる（工程９６）。
【００３６】
以下、上記のフローを実現するための本発明の半導体集積回路の主要部の具体例とその動作タイミングの一例について図５〜図８を用いて説明する。
【００３７】
図５はフラッシュメモリ制御回路２１を中心に本発明の半導体集積回路の主要部を詳細に示した図である。フラッシュメモリ制御回路２１には、制御信号コントローラ２３とアドレスコントローラ２４とデータセレクタ２５が含まれている。
【００３８】
制御信号コントローラ２３は、フラッシュメモリプログラミング回路２２からの「ＭＯＤＥ」信号６９、リセット検出回路１５からのリセット解除信号「ＲＥＳＥＴＩ」１６、マイクロコントローラ１０からのリード信号「ＲＤＣ」７４、ライト信号「ＷＥＣ」７５、アドレスコントローラ２４からの「ＴＲＷＥ」信号７６の各入力状態から、フラッシュメモリへのリード信号「ＲＤＦ」６４、ライト信号「ＷＥＦ」６５、消去信号「ＥＲＡＳＥ」６６、マイクロコントローラ１０へのリセット解除信号「ＲＥＳＥＴＣ」１７、レジスタ４０へのライト信号「ＷＥＴ１」７８、レジスタ４２へのライト信号「ＷＥＴ２」７９、アドレスコントローラ２４への「ＴＲＷＥＲ」信号７７の出力状態を制御する。
【００３９】
アドレスコントローラ２４は、マイクロコントローラ１０からのアドレス信号「ＡＤＲＣ」７１、フラッシュメモリプログラミング回路２２からのアドレス信号「ＰＡ」６８、および制御信号コントローラ２３からの「ＴＲＷＥＲ」信号７７により、フラッシュメモリのアドレス信号「ＡＤＲＦ」６１を生成する。ここで、「ＴＲＷＥ」信号７６は、アドレス信号「ＰＡ」６８がフラッシュメモリ２０上のトリミングデータのアドレス「Ｔ０１」とアドレス「Ｔ０２」が一致したことを示す信号であり、「ＴＲＷＥＲ」信号７７は、フラッシュメモリ２０上のトリミングデータのアドレス「Ｔ０１」とアドレス「Ｔ０２」を選択する信号である。
【００４０】
セレクタ２５は、制御信号コントローラ２３の「ＳＤ」信号により制御され、フラッシュメモリ２０に書かれるデータ「ＰＤ」６７、レジスタ４０のデータ「ＴＲＥＧ１」４１、レジスタ４２のデータ「ＴＲＥＧ２」４３を切替えるために使用する。図５では、マイクロコントローラ１０からフラッシュメモリ２０への書込みは明示していないが、フラッシュメモリ制御回路２１でタイミングを生成すれば容易に実現できる。
【００４１】
図６にフラッシュメモリプログラミング回路２２からフラッシュメモリ２０の初期化、トリミングデータの書込み及びプログラムデータの書込みのタイミング図を示す。「ＭＯＤＥ」信号６９は、フラッシュメモリプログラミング回路２２からの制御信号で、フラッシュメモリの消去信号「ＥＲＡＳＥ」６６、トリミングデータの書込み信号「ＴＲＧＷＴ」７７、プログラムの書込み信号「ＰＲＧＷＴ」からなる。図６のＳ１からＳ１３は、タイミングのステートを示す。
【００４２】
図６のＳ１において、図５のフラッシュメモリプログラミング回路２２からフラッシュメモリの消去信号「ＥＲＡＳＥ」６６が制御信号コントローラ２３に入力されると、制御信号コントローラはフラッシュメモリのＥＲＡＳＥ処理用の制御信号タイミングを生成し、フラッシュメモリの全部または指定した一定の領域のデータが初期化される。
【００４３】
次に、図６のＳ２、Ｓ３において、図５のフラッシュメモリプログラミング回路２２からトリミングデータの書込み信号「ＴＲＧＷＴ」が制御信号コントローラ２３に入力されると、制御信号コントローラ２３はフラッシュメモリ上のトリミングデータアドレス「ＴＡ１」、「ＴＡ２」にそれぞれのトリミングデータ「ＴＤ１」、「ＴＤ２」を書込む。
【００４４】
次に、図６のＳ４からＳ１３は、プログラムをトリミングデータと同じ領域に書込む場合のタイミングを示す。図５のフラッシュメモリプログラミング回路２２からプログラムの書込み信号「ＰＲＧＷＲ」が制御信号コントローラ２３に入力されると、フラッシュメモリプログラミング２２からフラッシュメモリのアドレス「ＰＡ」６８とそのプログラムデータ「ＰＤ」６７が出力され、アドレス「ＰＡ」６８はアドレスコントローラ２４を介してフラッシュメモリにフラッシュメモリのアドレス信号「ＡＤＲＦ」６１を出力する。プログラムデータ「ＰＤ」６８はセレクタ２５で「１」が選択されフラッシュメモリに信号「ＤＩＦ」６３を出力される。
【００４５】
ここで、フラッシュメモリのアドレス「ＰＡ」６８がトリミンデータのアドレス「ＴＡ１」、「ＴＡ２」と同じ場合は、アドレスコントローラ２４は「ＴＲＷＥＲ」信号７７をアサートする。制御信号コントローラ２３は「ＴＲＷＥ」信号７６を受け取った場合は、そのアドレスはトリミングデータのアドレスなので、プログラムを書込まないように、図６のＳ８とＳ９において、フラッシュメモリ上のライト信号「ＷＥＦ」６５をネゲートする。以上のように制御することにより、トリミングデータとプログラムの書込みを制御することが可能になる。
【００４６】
図７は、リセット検出回路１５がリセット信号を解除して、フラッシュメモリ２０上のトリミングデータをレジスタ４０およびレジスタ４２に書込むタイミングと、マイクロコントローラ１０のリセット信号「ＲＥＳＥＴＣ」１７を解除して、マイクロコントローラのプログラム実行のタイミング図を示す。図７のＳ１からＳ１３は、タイミングのステートを示す。
【００４７】
図７のＳ１は、外部リセットもしくは電源オフの状態であり、リセット検出回路から、「ＥＳＥＴＩ」号１６がアサート（Ｌｏｗアクティブ）されている状態を示す。Ｓ２において「ＥＳＥＴＩ」がネゲートされると、図５の制御信号コントローラ２３は、フラッシュメモリ２０に記録されているトリミングデータ「ＴＤ１」、「ＴＤ２」をフラッシュメモリから読み出して、ライト信号「ＷＥＴ１」７８、「ＷＥＴ２」７９の信号をアサートしてレジスタ４０とレジスタ４２にトリミングデータを書込む。Ｓ２とＳ３の期間は、「ＲＥＳＥＴＣ」信号１７はアサート（Ｌｏｗアクティブ）状態であり、マイクロコントローラはリセット状態である。
【００４８】
次にＳ４において、トリミングレジスタへトリミングデータの書込みが終了すると、制御信号コントローラ２３は、「ＲＥＳＥＴＣ」信号１７をネゲートして、マイクロコントローラのリセットを解除する。
【００４９】
マイクロコントローラへのリセットが解除されるとマイクロコントローラは、アドレス信号「ＡＤＲＣ」７１を出力し、アドレスコントローラを介してフラッシュメモリへアドレス信号「ＡＤＲＦ」６１を出力し、プログラムデータ「ＤＯＦ」６２を読み込み、図７のＳ５からＳ１３において、プログラムを実行する。プログラム実行においては、トリミングデータをジャンプする命令が組み込まれているので、間違ってトリミングデータをプログラムデータとして読出されることはない。
【００５０】
図８にフラッシュメモリプログラミング回路２２からフラッシュメモリを消去して、レジスタ４０およびレジスタ４２に書かれているトリミングデータをフラッシュメモリに書込むタイミングと、新しいプログラムの再書込みのタイミング図を示す。
【００５１】
「ＭＯＤＥ」信号６９は、フラッシュメモリプログラミング回路２２からの制御信号で、フラッシュメモリの消去とトリミングデータの自動書込みの「ＥＲＡＳＥＴＲＧ」信号、プログラムの書込み「ＰＲＧＷＴ」信号を発生する。図８のＳ１からＳ１３は、タイミングのステートを示す。
【００５２】
図６に示した手順によりフラッシュメモリのアドレス「ＴＡ１」、「ＴＡ２」に書込まれたトリミングデータは、図７に示した手順で図５のレジスタ４０とレジスタ４２に既に書込まれている。
【００５３】
この状態で、図５のフラッシュメモリプログラミング回路２２から「ＥＲＡＳＥＴＲＧ」信号を送ると、制御信号コントローラ２３は、図８のＳ１に示すように、フラッシュメモリに対して初期化のタイミングを生成し、その初期化が終わると、Ｓ２とＳ３のタイミングで、図５のレジスタ４０とレジスタ４２に書込まれているトリミングデータを、セレクタ２５で選択して、フラッシュメモリ上のアドレス「ＴＡ１」、「ＴＡ２」にトリミングデータ「ＴＤ１」、「ＴＤ２」を書込む。ここで、図８の「ＴＲＥＷＲ」信号は、制御信号コントローラ２３が、アドレスコントローラ２４に対して、フラッシュメモリのアドレス「ＴＡ１」、「ＴＡ２」を生成するタイミングを制御する信号である。
【００５４】
図８のＳ４からＳ１３における、新しいプログラムの再書込み手順は、図６のＳ４からＳ１３におけるプログラムの書込み手順と同じである。
【００５５】
この後は図７の手順に戻ってリセット操作を行えば、トリミングデータの値は維持されたままで、再書込みされた新しいプログラムが実行される。
【００５６】
以上のようにフラッシュメモリを制御することにより、一度、フラッシュメモリに保持された半導体集積回路のトリミングデータを意識することなく、フラッシュメモリの初期化、プログラム等のデータの書込みが可能になる。
【００５７】
なお、ここに示したのは本発明の一つの実施例であり、請求の範囲を逸脱することなく種々の改変か可能である。本実施例ではトリミングデータを例にとって説明したが、トリミングデータに限らず、集積回路のＩＤやシステム情報等、継続して使用する必要のあるデータであれば、同様の取り扱いにより同様の効果を得ることが可能である。
【００５８】
また、トリミングデータをユーザーに対して秘匿したい場合、トリミングデータを外部に読み出すことができないように設定する必要があるが、本発明は半導体集積回路内部でデータの読出し、書込みを行うため、秘匿性を保つことができる。
【００５９】
また、本実施例ではフラッシュメモリ上のトリミングデータを電源投入またはリセット直後にトリミングレジスタに書込む例を示したが、フラッシュメモリを初期化する前に、フラッシュメモリ上のトリミングデータを半導体集積回路内の汎用レジスタや内部ＲＡＭ等の記憶装置に記憶させておき、初期化後に書き戻すことも可能である。
【図面の簡単な説明】
【００６０】
【図１】本発明の半導体集積回路の構成を示す説明図である。
【図２】本発明のフラッシュメモリのデータ構造を示す図である。
【図３】本発明のフラッシュメモリにトリミングデータとプログラムデータを書込む工程のフローチャートである。
【図４】図３に示すフラッシュメモリの書込工程の各工程のおけるメモリのデータ構成を示す図である。
【図５】本発明の半導体集積回路の主要部を詳細に示すた図である。
【図６】本発明の半導体集積回路おけるトリミングデータ及びプログラムデータの書込のタイミング図である。
【図７】本発明の実施例におけるプログラムの実行を示すタイミングチャートである。
【図８】本発明の実施例におけるプログラムデータの書込みを示すタイミングチャートである。
【図９】従来のこの種の半導体集積回路の説明図である。
【図１０】トリミング回路の一例である。
【図１１】トリミング回路の別の一例である。
【図１２】フラッシュメモリにトリミングデータとプログラムデータを書込む工程のフローチャートである。
【図１３】従来のフラッシュメモリのデータ構造を示す図である。
【符号の説明】
【００６１】
１００：半導体集積回路、２００：アナログ回路、３００：デジタル回路、４００：プログラミング装置、５００：トリミング調整装置、
１０：マイクロコントローラ、１１：揮発メモリ、１５：リセット検出回路、
２０：フラッシュメモリ、２１：フラッシュメモリ制御回路、２２：フラッシュメモリプログラミング回路、
３０：プログラム領域、３１：データ領域、３２：トリミングデータ領域、
４０、４１：レジスタ、４５、４６：トリミング制御回路、
５０：抵抗、５１：コンデンサ、５２：トランジスタ、５３：ヒューズ
【図１】
0005052221.tif 000002
【図２】
0005052221.tif 000003
【図３】
0005052221.tif 000004
【図４】
0005052221.tif 000005
【図５】
0005052221.tif 000006
【図６】
0005052221.tif 000007
【図７】
0005052221.tif 000008
【図８】
0005052221.tif 000009
【図９】
0005052221.tif 000010
【図１０】
0005052221.tif 000011
【図１１】
0005052221.tif 000012
【図１２】
0005052221.tif 000013
【図１３】
0005052221.tif 000014