(57)【要約】【課題】発振周波数変動の許容範囲を任意に設定可能にする。【解決手段】半導体装置（２１）は、トリミングレジスタ（１１）に保持されたトリミング値によって発振周波数が変更される発振器（１２）と、発振周波数を補正可能な補正回路（２０）とを含む。上記補正回路は、上限値を設定可能な上限値レジスタ（６）と、下限値を設定可能な下限値レジスタ（７）と、発振周波数を分周するための分周回路（１３）と、分周回路の出力をカウントするカウンタ（３）とを含む。さらに上記補正回路は、カウンタの出力を保持可能なバッファレジスタ（４）と、バッファレジスタの保持値が、上限値と下限値との間に入っているか否かを判別する比較器（５）と、その判別結果に基づいてトリミング値を補正するトリミング値補正制御回路（８）とを含む。ユーザは、上限値と下限値とによって、発振周波数変動の許容範囲を任意に設定することができる。【選択図】図１
2013098614.tif 000002
【特許請求の範囲】
【請求項１】
トリミング値を格納可能なトリミングレジスタと、
上記トリミングレジスタ内のトリミング値に応じて発振周波数が変更される発振器と、
上記発振器の発振周波数を補正可能な補正回路と、を含み、
上記補正回路は、
周波数トリミングについての上限値を設定可能な上限値レジスタと、
周波数トリミングについての下限値を設定可能な下限値レジスタと、
上記発振器の発振周波数を分周するための分周回路と、
上記分周回路の出力をカウントするカウンタと、
上記カウンタの出力を保持可能なバッファレジスタと、
上記バッファレジスタの保持値が、上記上限値レジスタの保持値と上記下限値レジスタの保持値との間に入っているか否かを判別するための比較器と、
上記比較器での判別結果に基づいて上記トリミングレジスタのトリミング値を補正するトリミング値補正制御回路と、を含んで成る半導体装置。
【請求項２】
上記半導体装置は、上記発振器の発振周波数のトリミング値を保持する不揮発性メモリを含み、パワーオンリセット処理により、上記不揮発性メモリの保持値が上記トリミングレジスタに書き込まれる請求項１記載の半導体装置。
【請求項３】
上記トリミング値補正回路によって上記トリミングレジスタのトリミング値が補正された場合に、当該補正後のトリミング値によって、上記不揮発性メモリ内のトリミング値が更新される請求項２記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、さらにはそれに含まれる内蔵発振器（ＯＣＯ；On-Chip Oscillator）における発振周波数変動の許容範囲を半導体装置のユーザ（顧客）が任意に設定可能とするための技術に関する。
【背景技術】
【０００２】
特許文献１には、マイクロコンピュータのシステムクロックにばらつきが発生しても精度の高いカウント動作を実現するためのタイマ装置が記載されている。
【０００３】
特許文献２には、マイクロコンピュータのシステムクロック発振器周波数を高精度に保ち、且つ、切り換えることができる発振制御装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３３４５７７号公報
【特許文献２】特開平７−１５２３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願発明者は、半導体装置の一例とされるマイクロコンピュータの内蔵発振器について検討し、以下の課題を見いだした。
【０００６】
内蔵発振器の周波数は温度依存性があり、広範囲の温度で高精度な周波数を保つためには、常時周波数トリミングを行うことで周波数を補正する必要がある。しかも、内蔵発振器の発振周波数やその変動の許容範囲は、マイクロコンピュータが搭載されるシステムによって異なる。特許文献１，２によれば、発振周波数の補正は可能であるが、発振周波数変動の許容範囲を任意に設定することができない。例えばマイクロコンピュータに内蔵される発振器の発振周波数を４０〔ＭＨｚ〕±１．０％保証をユーザが望んでいるにもかかわらず、そのような設定をユーザ自身がマイクロコンピュータに対して行うことができない。
【０００７】
本発明の目的は、内蔵発振器における発振周波数変動の許容範囲を任意に設定可能な半導体装置を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、半導体装置は、トリミング値を格納可能なトリミングレジスタと、上記トリミングレジスタ内のトリミング値に応じて発振周波数が変更される発振器と、上記発振器の発振周波数を補正可能な補正回路とを含む。このとき上記補正回路は、周波数トリミングについての上限値を設定可能な上限値レジスタと、周波数トリミングについての下限値を設定可能な下限値レジスタと、上記発振器の発振周波数を分周するための分周回路と、上記分周回路の出力をカウントするカウンタとを含む。さらに上記補正回路は、上記カウンタの出力を保持可能なバッファレジスタと、上記バッファレジスタの保持値が、上記上限値レジスタの保持値と上記下限値レジスタの保持値との間に入っているか否かを判別するための比較器と、上記比較器での判別結果に基づいて上記トリミングレジスタのトリミング値を補正するトリミング値補正制御回路とを含む。
【発明の効果】
【００１１】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１２】
すなわち、内蔵発振器における発振周波数変動の許容範囲を任意に設定可能な半導体装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明にかかる半導体装置の一例とされるマイクロコンピュータの構成例ブロック図である。
【図２】図１に示されるマイクロコンピュータにおける主要部の動作の流れを示すフローチャートである。
【図３】図１に示されるマイクロコンピュータにおける主要部の動作タイミング図である。
【図４】図１に示されるマイクロコンピュータにおける主要部の動作タイミング図である。
【図５】本発明にかかる半導体装置の一例とされるマイクロコンピュータの別の構成例ブロック図である。
【発明を実施するための形態】
【００１４】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係る半導体装置（２１）は、トリミング値を格納可能なトリミングレジスタ（１１）と、上記トリミングレジスタ内のトリミング値に応じて発振周波数が変更される発振器（１２）と、上記発振器の発振周波数を補正可能な補正回路（２０）とを含む。上記補正回路は、周波数トリミングについての上限値を設定可能な上限値レジスタ（６）と、周波数トリミングについての下限値を設定可能な下限値レジスタ（７）と、上記発振器の発振周波数を分周するための分周回路（１３）と、上記分周回路の出力をカウントするカウンタ（３）とを含む。さらに上記補正回路は、上記カウンタの出力を保持可能なバッファレジスタ（４）と、上記バッファレジスタの保持値が、上記上限値レジスタの保持値と上記下限値レジスタの保持値との間に入っているか否かを判別するための比較器（５）と、上記比較器での判別結果に基づいて上記トリミングレジスタのトリミング値を補正するトリミング値補正制御回路（８）とを含む。
【００１６】
上記の構成によれば、上限値及び下限値の設定後は、トリミング値補正制御回路８によってトリミング値が補正されるため、発信周波数の安定化を図ることができる。半導体装置のユーザは、用途に応じて、発振器における発振周波数変動の許容範囲を任意に設定することができる。また、この設定は、上限値と下限値とをそれぞれ上限値レジスタ及び下限値レジスタに設定するだけで良いので容易である。
【００１７】
〔２〕上記〔１〕における半導体装置は、上記発振器の発振周波数のトリミング値を保持する不揮発性メモリ（１８，１９）を含み、パワーオンリセット処理において、上記不揮発性メモリの保持値が上記トリミングレジスタに書き込まれるように構成することができる。
【００１８】
〔３〕上記〔２〕において、上記トリミング値補正回路によって上記トリミングレジスタのトリミング値が補正された場合に、当該補正後のトリミング値によって、不揮発性メモリ（１９）内のトリミング値が更新されるように構成することができる。これにより、パワーオンリセット処理後の上記トリミングレジスタの初期値は、前回の電源遮断直前のトリミング値となるので、半導体装置に電源が投入されてから発振周波数が安定するまでの時間短縮を図ることができる。
【００１９】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２０】
《実施の形態１》
図１には、本発明にかかる半導体装置の一例とされるマイクロコンピュータの構成例が示される。
【００２１】
図１に示されるマイクロコンピュータ２１は、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコンなどの一つの半導体基板に形成される。
【００２２】
図１に示されるマイクロコンピュータ２１は、ＯＣＯ周波数トリミングレジスタ１１、ＯＣＯ（On-Chip Oscillator；内蔵発振器）１２、ＳＵＢクロック発振器１４、ＣＰＵ（Central Processing Unit）１６、ＲＡＭ（Random Access Memory）１７、ＲＯＭ（Read Only Memory）１８、ＯＣＯ周波数自動補正回路２０を含む。ＯＣＯ周波数トリミングレジスタ１１、ＣＰＵ１６、ＲＡＭ１７、ＲＯＭ１８、ＯＣＯ周波数自動補正回路２０は、内部データバス１５を介して、互いに信号のやり取りが可能に結合されている。
【００２３】
ＯＣＯ周波数トリミングレジスタ１１は、ＯＣＯ周波数のトリミング値を保持する。ＯＣＯ１２は、ＯＣＯ周波数トリミングレジスタ１１内のトリミング値に応じて発振周波数が変更される発振器とされる。ＳＵＢクロック発振器１４は、３２〔ｋＨｚ〕のＳＵＢクロック（基準クロック）を生成する。この３２〔ｋＨｚ〕のＳＵＢクロックは、マイクロコンピュータ２１に外付けされた水晶振動子によって形成されるため、周波数が安定している。このＳＵＢクロック発振器１４で発生されたＳＵＢクロック信号は、ＯＣＯ周波数自動補正回路２０に供給される。ＣＰＵ１６は予め設定されたプログラムを実行することにより所定の演算処理を実行する。ＲＡＭ１７は、ＣＰＵ１６での演算処理の作業領域などに利用される。ＲＯＭ１８は不揮発性メモリであり、このＲＯＭ１８には、ＣＰＵ１６で実行されるプログラムや、ＯＣＯトリミングレジスタ値が格納されている。ＲＯＭ１８内のＯＣＯトリミングレジスタ値は、マイクロコンピュータ２１の工場出荷前に書き込まれたものである。ＲＯＭ１８内のＯＣＯトリミングレジスタ値は、ＣＰＵ１６で実行されるパワーオンリセット処理によってＯＣＯ周波数トリミングレジスタ１１にその初期値として設定される。
【００２４】
ＯＣＯ周波数自動補正回路２０は、特に制限されないが、ＳＵＢクロック分周回路１、エッジ選択回路２、カウンタ３、バッファレジスタ４、比較器５、上限値レジスタ６、下限値レジスタ７、トリミング値補正制御回路８、フラグステータスレジスタ９、トリミング値補正コントロールレジスタ１０、ＯＣＯ分周回路１３を含む。ＳＵＢクロック分周回路１は、ＳＵＢクロック発振器１４から出力されたＳＵＢクロック信号を分周する。ＳＵＢクロック信号の周期をφとするとき、ＳＵＢクロック分周回路１の分周出力は、例えばφ，φ／３２，φ／１２８，φ／１０２４，φ／８１９２とされる。エッジ選択回路２は、ＳＵＢクロック分周回路１の出力に基づいて、カウンタ３でのカウント動作を制御するための測定用クロック信号ＳＣＫを形成する。測定用クロック信号ＳＣＫは、ＳＵＢクロック分周回路１の出力波形の立ち上がりエッジ、波形立ち下がりエッジ、波形立ち上がり立ち下がり両エッジの何れかに基づいて形成される。ＯＣＯ分周回路１３は、ＯＣＯ１２から出力されたＯＣＯクロック信号を分周する。ＯＣＯクロック信号の周期をφとするとき、ＯＣＯ分周回路１３の分周出力は、例えばφ，φ／２，φ／４，φ／８，φ／４０とされる。ＯＣＯ分周回路１３の分周出力は、マイクロコンピュータ２１内の内部回路に供給される。カウンタ３は、クロック監視イネーブル信号ＣＫＮがイネーブル状態のとき、エッジ選択回路２によって形成された測定用クロック信号ＳＣＫに基づいて、ＯＣＯ分周回路１３の出力をカウントする。クロック監視イネーブル信号ＣＫＮは、ＣＰＵ１６で形成することができる。バッファレジスタ４は、カウンタ３のカウント値を保持する。カウント値がバッファレジスタ４に保持された時点でカウンタ３がクリアされ、次の測定が開始される。上限値レジスタ６は、周波数トリミングについての上限値を保持する。下限値レジスタ７は、周波数トリミングについての下限値を保持する。周波数トリミングについての上限値や下限値は、ＣＰＵ１６によって設定することができる。比較器５は、バッファレジスタ４の保持値が、上限値レジスタ６の保持値と下限値レジスタ７の保持値との間に入っているか否かを判別する。トリミング値補正制御回路８は、比較器５での判別結果に基づいて、ＯＣＯ周波数トリミングレジスタ１１内のトリミング値の補正を制御する。トリミング値補正制御回路８は、バッファレジスタ４の保持値が、上限値レジスタ６の保持値と下限値レジスタ７の保持値との間に入っている場合にはトリミング値の補正を行わない。トリミング値補正制御回路８は、バッファレジスタ４の保持値が、上限値レジスタ６の保持値より大きい場合、ＯＣＯ周波数を下げるようにＯＣＯ周波数トリミングレジスタ１１内のトリミング値を補正する。トリミング値補正制御回路８は、バッファレジスタ４の保持値が、下限値レジスタの保持値より小さい場合には、ＯＣＯ周波数を上げるようにＯＣＯ周波数トリミングレジスタ１１内のトリミング値を補正する。フラグステータスレジスタ９は、周波数正常フラグ、上限オーバーフラグの状態及び下限未達フラグの状態を保持する。バッファレジスタ４の保持値が、上限値レジスタ６の保持値より大きい場合、トリミング値補正制御回路８によって、フラグステータスレジスタ９内の上限オーバーフラグが立てられる。バッファレジスタ４の保持値が、下限値レジスタ７の保持値より小さい場合、トリミング値補正制御回路８によって、フラグステータスレジスタ９内の下限未達フラグが立てられる。ＣＰＵ１６は、内部データバス１５を介して、上限オーバーフラグの状態や下限未達フラグの状態をモニタすることができる。トリミング値補正コントロールレジスタ１０には、トリミング値補正コントロール信号（命令）が設定される。このトリミング値補正コントロール信号は、内部データバス１５を介してＣＰＵ１６によって設定される。トリミング値補正制御回路８の動作は、トリミング値補正コントロールレジスタ１０に設定されたトリミング値補正コントロール信号によって制御される。
【００２５】
次に、上記構成の動作について説明する。
【００２６】
図２には、図１に示されるマイクロコンピュータ２１における主要動作の流れが示される。また、図３及び図４には、図１に示されるマイクロコンピュータ２１における主要部の動作タイミングが示される。
【００２７】
本例では、４０〔ＭＨｚ〕について、±１．０〔％〕保証を行う場合について説明する。
【００２８】
ＣＰＵ１６によって、上限値レジスタ６及び下限値レジスタ７の設定が行われる（２０１）。上限値及び下限値として、４０〔ＭＨｚ〕±０．７５〔％〕相当の値が格納される。±０．７５〔％〕としているのは、±１．０〔％〕に対してマージンを持たせているためである。ＣＰＵ１６によって、クロック監視イネーブル信号ＣＫＮハイレベルに設定されると、カウンタ３でのカウント動作が開始される（２０２）。エッジ選択回路２によって測定用クロック信号ＳＣＫが形成される毎に、カウンタ３でのカウント値がバッファレジスタ４に保持され、それが比較器５において上限値及び下限値と比較される（２０３〜２０５）。本例の場合、３２〔ｋＨｚ〕の基準クロックに基づいて４０〔ＭＨｚ〕クロックを測定することから、カウンタ３でのカウント数は、理想的には、１／３２ｋ÷（１／４０Ｍ）≒１２５０とされる。また本例において、上限値は１２６０（≒４０．３〔ＭＨｚ〕）とされ、下限値は１２４０（≒３９．７〔ＭＨｚ〕）とされる。
【００２９】
バッファレジスタ４の保持値が、上限値より大きくて、下限値よりも小さい場合（２０６）、不正状態とされ（２０７）、ＣＰＵ１６によるリセット又は所定の割り込み処理が行われる（２０８）。
【００３０】
図４に示されるように、ＯＣＯ１２の発振周波数が下限値（３９．７〔ＭＨｚ〕）以下の場合、すなわち、バッファレジスタ４の保持値が、上限値より小さくて、下限値よりも小さい場合には（２０９）、トリミング値補正制御回路８によって下限未達フラグが立てられる（２１０）。それによりＯＣＯ１２での発振周波数を上げるようにＯＣＯ周波数トリミングレジスタ１１のトリミング値が補正され、それによってＯＣＯ周波数トリミングレジスタ１１のトリミング用タップ切り換えが行われることで発振周波数が上げられる（２１１）。
【００３１】
図３に示されるように、ＯＣＯ１２の発振周波数が上限値（４０．３〔ＭＨｚ〕）以上の場合、すなわち、バッファレジスタ４の保持値が、上限値より大きくて、下限値よりも大きい場合には（２１２）、トリミング値補正制御回路８によって、フラグステータスレジスタ９内の上限オーバーフラグが立てられる（２１３）。それによりＯＣＯ１２での発振周波数を下げるようにＯＣＯ周波数トリミングレジスタ１１のトリミング値が補正され、それによってＯＣＯ１２におけるトリミング用タップ切り換えが行われることで発振周波数が低下される（２１４）。
【００３２】
バッファレジスタ４の保持値が、上限値より小さくて、下限値よりも大きい場合（２１５）、トリミング値補正制御回路８によって周波数正常フラグが立てられる（２１６）。この場合、トリミング値補正は行われない。
【００３３】
上記マイクロコンピュータ２１は、自動車の制御装置や、家電製品の制御装置などに適用することができ、ユーザは、用途に応じて、内蔵発振器１２における発振周波数変動の許容範囲を任意に設定することができる。また、この設定は、ＣＰＵ１６を介して上限値と下限値とをそれぞれ上限値レジスタ６及び下限値レジスタ７に設定するだけで良いので容易である。上限値及び下限値の設定後は、トリミング値補正制御回路８によってＯＣＯ周波数のトリミング値が補正されるため、ＯＣＯ周波数の安定化を図ることができる。
【００３４】
《実施の形態２》
図５には、本発明にかかる半導体装置の一例とされるマイクロコンピュータの別の構成例が示される。図５に示されるマイクロコンピュータ２１が、図１に示されるのと大きく相違するのは、ＲＯＭ１８に代えて、フラッシュメモリが設けられている点である。フラッシュメモリは、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）の一種であり、記憶情報の書換えが可能な不揮発性メモリとされる。このフラッシュメモリ１９には、ＣＰＵ１６で実行されるプログラムや、ＯＣＯトリミングレジスタ値が格納されている。また本例では、ＯＣＯ周波数トリミングレジスタ１１のトリミング値がトリミング値補正制御回路８によって補正された場合に、ＯＣＯ周波数トリミングレジスタ１１内の補正後のトリミング値によって、フラッシュメモリ１９内のトリミング値が更新される。この更新は、ＣＰＵ１６の制御によって行われる。そして、マイクロコンピュータ２１の電源が遮断されても、フラッシュメモリ１９には、電源遮断直前のＯＣＯ周波数トリミングレジスタ１１内のトリミング値が保持されている。そして、次にマイクロコンピュータ２１に電源が投入された場合には、ＣＰＵ１６で実行されるパワーオンリセット処理において、フラッシュメモリ１９内のトリミング値がＯＣＯ周波数トリミングレジスタ１１に書き込まれる。これにより、パワーオンリセット処理後のＯＣＯ周波数トリミングレジスタ１１の初期値は、前回の電源遮断直前のトリミング値となる。このため、図１に示されるマイクロコンピュータ２１のように、工場出荷前に設定されたトリミング値を初期値とする場合に比べて、電源が投入されてから発振周波数が安定するまでの時間短縮を図ることができる。
【００３５】
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００３６】
１  ＳＵＢクロック分周回路
２  エッジ選択回路
３  カウンタ
４  バッファレジスタ
５  比較器
６  上限値レジスタ
７  下限値レジスタ
８  トリミング値補正制御回路
９  フラグステータスレジスタ
１０  トリミング値補正コントロールレジスタ
１１  ＯＣＯ周波数トリミングレジスタ
１２  ＯＣＯ
１３  ＯＣＯ分周回路
１４  ＳＵＢクロック発振器
１５  内蔵データバス
１６  ＣＰＵ
１７  ＲＡＭ
１８  ＲＯＭ
１９  フラッシュメモリ
【図１】
2013098614.tif 000003
【図２】
2013098614.tif 000004
【図３】
2013098614.tif 000005
【図４】
2013098614.tif 000006
【図５】
2013098614.tif 000007