(57)【要約】【課題】クロック信号により動作する機器の処理速度を低下させることなく安全にクロック信号の周波数を切り替える制御装置、その制御装置に実行させるコンピュータプログラムを生成するプログラム生成装置を提供する。【解決手段】複数のモード情報から組み合わせた２つのモード情報に係る分周値の変化量を算出し、算出結果に基づいて、分周値を変更する分周器２２，２３，２４の順序を決定する。そして、組み合わせた２つの設定情報の一方を変更前の設定情報とし、他方を変更後の設定情報として、この２つが変更前後の設定情報である場合には、決定した順序で分周器２２，２３，２４に分周値が設定されるようコンピュータプログラムを生成する。生成したコンピュータプログラムを、クロック信号により動作する機器の処理速度を低下させることなく安全にクロック信号の周波数を切り替えるマイコン１０で実行する。【選択図】図６
2010218435.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号を分周する複数の分周器それぞれに分周値を設定するための設定情報が異なる設定情報に変更された場合、複数の分周器に分周値が設定される順序を決定するコンピュータプログラムを生成するプログラム生成装置であって、
複数の設定情報から２つの設定情報の可能な組み合わせを全て生成する組み合わせ生成手段と、
該組み合わせ生成手段が生成した全ての組み合わせについて、組み合わせた２つの設定情報に係る各分周値の変化量を算出する算出手段と、
該算出手段が算出した分周値の変化量に基づいて、分周値を設定する分周器の順序を決定する決定手段と、
前記組み合わせ生成手段が組み合わせた２つの設定情報の一方を変更前の設定情報に、他方を変更後の設定情報として設定し、変更前後の設定情報に基づいて前記決定手段が決定した順序で複数の分周器に分周値が設定されるようにするコンピュータプログラムを生成するプログラム生成手段と
を備えることを特徴とするプログラム生成装置。
【請求項２】
前記組み合わせ生成手段が生成した全ての組み合わせについて、組み合わせた２つの設定情報の一方を他方より時間的に先として、取り得る全ての時系列順序を設定する設定手段と、
該設定手段が設定した時系列順序の先と後とで、前記設定情報に係る分周値が減少している分周器を検出する検出手段と
をさらに備え、
前記決定手段は、
前記検出手段が検出した分周器で、かつ、前記算出手段が算出した分周値の変化量が大きい分周器から順に分周値が設定されるように順序を決定するようにしてある
ことを特徴とする請求項１に記載のプログラム生成装置。
【請求項３】
複数の分周器には、優先度が設定されており、
前記決定手段は、
複数の分周器に設定された優先度に基づいて順序を決定するようにしてある
ことを特徴とする請求項１又は２に記載のプログラム生成装置。
【請求項４】
前記プログラム生成手段は、
複数の設定情報それぞれを変更後の設定情報として設定し、変更前の設定情報に拘わらずに、変更後の設定情報に基づいて、所定の分周値が分周器それぞれに設定されるようにするコンピュータプログラムを生成するようにしてある
ことを特徴とする請求項１から３の何れか一つに記載のプログラム生成装置。
【請求項５】
クロック信号を分周する複数の分周器それぞれに分周値を設定するための設定情報が異なる設定情報に変更された場合、複数の分周器に分周値が設定される順序を決定するコンピュータプログラムを、コンピュータに生成させるプログラム生成プログラムであって、
コンピュータを、
複数の設定情報から２つの設定情報の可能な組み合わせを全て生成する組み合わせ生成手段、
該組み合わせ生成手段が生成した全ての組み合わせについて、組み合わせた２つの設定情報に係る分周値の変化量を算出する算出手段、
該算出手段が算出した分周値の変化量に基づいて、分周値を設定する分周器の順序を決定する決定手段、及び、
前記組み合わせ生成手段が組み合わせた２つの設定情報の一方を変更前の設定情報とし、他方を変更後の設定情報として設定し、変更前後の設定情報に基づいて前記決定手段が決定した順序で複数の分周器に分周値が設定されるようにするコンピュータプログラムを生成するプログラム生成手段
として機能させることを特徴とするプログラム生成プログラム。
【請求項６】
クロック信号を分周する複数の分周器それぞれに分周値を設定するための設定情報が異なる設定情報に変更された場合、複数の分周器に分周値が設定される順序を決定するコンピュータプログラムを生成するプログラム生成方法であって、
複数の設定情報から２つの設定情報の可能な組み合わせを全て生成し、
生成した全ての組み合わせについて、組み合わせた２つの設定情報に係る分周値の変化量を算出し、
算出した分周値の変化量に基づいて、分周値を設定する分周器の順序を決定し、
組み合わせた２つの設定情報の一方を変更前の設定情報とし、他方を変更後の設定情報として設定し、変更前後の設定情報に基づいて決定した順序で複数の分周器に分周値が設定されるようにするコンピュータプログラムを生成する
ことを特徴とするプログラム生成方法。
【請求項７】
請求項６に記載のプログラム生成方法によって作成されたコンピュータプログラムを実行する制御装置であって、
前記コンピュータプログラムを実行した場合、変更時に前記分周器それぞれに設定されている分周値及び設定すべき分周値に基づいて、前記分周器に係る分周値を変更する順序を決定する決定手段と、
該決定手段が決定した順序に基づいて、複数の分周器に分周値を設定する設定手段と
を備えることを特徴とする制御装置。
【請求項８】
コンピュータに、請求項６に記載のプログラム生成方法によって作成されたコンピュータプログラムを実行させるコンピュータプログラムにおいて、
コンピュータを、
前記コンピュータプログラムを実行した場合、変更時に前記分周器それぞれに設定されている分周値及び設定すべき分周値に基づいて、前記分周器に係る分周値を変更する順序を決定する決定手段、及び、
該決定手段が決定した順序に基づいて、複数の分周器に分周値を設定する設定手段
として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにクロック信号を分周する複数の分周器それぞれに分周値を設定させるプログラムを生成するプログラム生成装置、プログラム生成プログラム、プログラム生成方法、生成したコンピュータプログラムを実行する制御装置及びコンピュータプログラムに関する。
【背景技術】
【０００２】
特許文献１には、クロック信号で動作するマイクロコンピュータ（以下、マイコンと言う）等に対してクロック信号を供給するクロック発生回路が開示されている。特許文献１に記載のクロック発生回路は、高い周波数のクロック信号を発生させるクロック発生源と、低い周波数のクロック発生源との２種類のクロック発生源とが搭載されている。そして、マイコンを高い周波数のクロック信号で動作させることで高速処理を可能とし、低い周波数のクロック信号で動作させることで処理速度は低下するが消費電力を低減させることを可能としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−３２９１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、１つの基板上に、マイコンの他に複数の周辺機器が搭載される場合がある。マイコン及び各周辺機器は、動作可能なクロック信号の周波数が決まっており、マイコン等が所定値以上のクロック信号の周波数が供給された場合、誤動作又故障を引き起こすおそれがある。このため、クロック発生源からマイコン等にクロック信号を供給する場合、最小の周波数に切り替えたクロック信号をマイコン等に供給して誤動作等の発生を防ぐことが一般的となっている。
【０００５】
図８は、クロック信号の周波数を切り替える場合について説明するための模式図である。例として、上限値が６０ＭＨｚのマイコン１０、及び３０ＭＨｚの周辺機器３０が、２４０ＭＨｚの周波数のクロック信号を発生するＰＬＬ（Phase Locked Loop）回路２１からクロック信号が供給される場合について説明する。マイコン１０は、ＰＬＬ回路２１から第１分周器２２及び第２分周器２３を介してクロック信号が供給される。周辺機器３０は、マイコン１０が動作制御する機器、又はＥＣＵの処理能力を向上させるためのマイコン１０とは異なるマイコン等である。周辺機器３０は、ＰＬＬ回路２１から第１分周器２２及び第３分周器２４を介してクロック信号が供給される。
【０００６】
この場合において、第１分周器２２の分周値が「１／４」、第２分周器２３が「１／１」に設定されている場合、マイコン１０は、６０ＭＨｚで動作する。また、第３分周器２４の分周値が「１／２」に設定されている場合、周辺機器３０は、３０ＭＨｚで動作する。このとき、マイコン１０を４０ＭＨｚで動作させる場合、第１分周器２２の分周値を「１／２」とし、第２分周器２３の分周値を「１／３」とすることで、マイコン１０には４０ＭＨｚの周波数のクロック信号が供給される。このとき、第３分周器２４の分周値を変更しなければ、周辺機器３０には６０ＭＨｚの周波数のクロック信号が供給される。この場合、周辺機器３０の上限値を超えてクロック信号が供給されることで、周辺機器３０は誤動作又は故障となるおそれがある。
【０００７】
そこで、各機器に供給するクロック信号を切り替える場合には、分周器から出力される周波数が最小となるように全ての分周器の分周値を再設定して、各機器に最低周波数のクロック信号を供給するようになっている。この場合、一時的でも各機器は、最低周波数で動作するため、各機器の処理速度は著しく低下するといった問題が発生する。
【０００８】
本発明はかかる事情に鑑みてなされたものであり、その目的とするところは、コンピュータに、クロック信号により動作する機器の処理速度を低下させることなく安全にクロック信号の周波数を切り替えさせるコンピュータプログラムを生成するプログラム生成装置、プログラム生成プログラム、プログラム生成方法、安全にクロック信号の周波数を切り替える制御装置及びその制御装置に実行させるコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係るプログラム生成装置は、クロック信号を分周する複数の分周器それぞれに分周値を設定するための設定情報が異なる設定情報に変更された場合、複数の分周器に分周値が設定される順序を決定するコンピュータプログラムを生成するプログラム生成装置であって、複数の設定情報から２つの設定情報の可能な組み合わせを全て生成する組み合わせ生成手段と、該組み合わせ生成手段が生成した全ての組み合わせについて、組み合わせた２つの設定情報に係る各分周値の変化量を算出する算出手段と、該算出手段が算出した分周値の変化量に基づいて、分周値を設定する分周器の順序を決定する決定手段と、前記組み合わせ生成手段が組み合わせた２つの設定情報の一方を変更前の設定情報に、他方を変更後の設定情報として設定し、変更前後の設定情報に基づいて前記決定手段が決定した順序で複数の分周器に分周値が設定されるようにするコンピュータプログラムを生成するプログラム生成手段とを備えることを特徴とする。
【００１０】
本発明に係るプログラム生成装置は、前記組み合わせ生成手段が生成した全ての組み合わせについて、組み合わせた２つの設定情報の一方を他方より時間的に先として、取り得る全ての時系列順序を設定する設定手段と、該設定手段が設定した時系列順序の先と後とで、前記設定情報に係る分周値が減少している分周器を検出する検出手段とをさらに備え、前記決定手段は、前記検出手段が検出した分周器で、かつ、前記算出手段が算出した分周値の変化量が大きい分周器から順に分周値が設定されるように順序を決定するようにしてあることを特徴とする。
【００１１】
本発明に係るプログラム生成装置は、複数の分周器には、優先度が設定されており、前記決定手段は、複数の分周器に設定された優先度に基づいて順序を決定するようにしてあることを特徴とする。
【００１２】
本発明に係るプログラム生成装置は、前記プログラム生成手段は、複数の設定情報それぞれを変更後の設定情報として設定し、変更前の設定情報に拘わらずに、変更後の設定情報に基づいて、所定の分周値が分周器それぞれに設定されるようにするコンピュータプログラムを生成するようにしてあることを特徴とする。
【００１３】
本発明に係るプログラム生成プログラムは、クロック信号を分周する複数の分周器それぞれに分周値を設定するための設定情報が異なる設定情報に変更された場合、複数の分周器に分周値が設定される順序を決定するコンピュータプログラムを、コンピュータに生成させるプログラム生成プログラムであって、コンピュータを、複数の設定情報から２つの設定情報の可能な組み合わせを全て生成する組み合わせ生成手段、該組み合わせ生成手段が生成した全ての組み合わせについて、組み合わせた２つの設定情報に係る分周値の変化量を算出する算出手段、該算出手段が算出した分周値の変化量に基づいて、分周値を設定する分周器の順序を決定する決定手段、及び、前記組み合わせ生成手段が組み合わせた２つの設定情報の一方を変更前の設定情報とし、他方を変更後の設定情報として設定し、変更前後の設定情報に基づいて前記決定手段が決定した順序で複数の分周器に分周値が設定されるようにするコンピュータプログラムを生成するプログラム生成手段として機能させることを特徴とする。
【００１４】
本発明に係るプログラム生成方法は、クロック信号を分周する複数の分周器それぞれに分周値を設定するための設定情報が異なる設定情報に変更された場合、複数の分周器に分周値が設定される順序を決定するコンピュータプログラムを生成するプログラム生成方法であって、複数の設定情報から２つの設定情報の可能な組み合わせを全て生成し、生成した全ての組み合わせについて、組み合わせた２つの設定情報に係る分周値の変化量を算出し、算出した分周値の変化量に基づいて、分周値を設定する分周器の順序を決定し、組み合わせた２つの設定情報の一方を変更前の設定情報とし、他方を変更後の設定情報として設定し、変更前後の設定情報に基づいて決定した順序で複数の分周器に分周値が設定されるようにするコンピュータプログラムを生成することを特徴とする。
【００１５】
本発明に係る制御装置は、本発明に係るプログラム生成方法によって作成されたコンピュータプログラムを実行する制御装置であって、前記コンピュータプログラムを実行した場合、変更時に前記分周器それぞれに設定されている分周値及び設定すべき分周値に基づいて、前記分周器に係る分周値を変更する順序を決定する決定手段と、該決定手段が決定した順序に基づいて、複数の分周器に分周値を設定する設定手段とを備えることを特徴とする。
【００１６】
本発明に係るコンピュータプログラムは、コンピュータに、本発明に係るプログラム生成方法によって作成されたコンピュータプログラムを実行させるコンピュータプログラムにおいて、コンピュータを、前記コンピュータプログラムを実行した場合、変更時に前記分周器それぞれに設定されている分周値及び設定すべき分周値に基づいて、前記分周器に係る分周値を変更する順序を決定する決定手段、及び、該決定手段が決定した順序に基づいて、複数の分周器に分周値を設定する設定手段として機能させることを特徴とする。
【００１７】
本発明では、複数の設定情報から組み合わせた２つの設定情報に係る分周値の変化量を算出し、算出結果に基づいて、分周値を変更する分周器の順序を決定する。そして、組み合わせた２つの設定情報の一方を変更前の設定情報とし、他方を変更後の設定情報として、この２つが変更前後の設定情報である場合には、決定した順序で複数の分周器に分周値が設定されるようコンピュータプログラムを生成する。
【００１８】
このように生成したコンピュータプログラムを、分周器に分周値を設定するコンピュータで実行させることで、コンピュータは、分周器に設定された分周値を変更する場合、変更前後の２つの設定情報から分周値を変更する分周器の順序を取得することができる。そして、コンピュータは、取得した順序で分周器の分周値を変更する。変更する順序を、例えば変更前後で分周値が小さくなり、かつ、変化量が大きい順に決定することで、コンピュータは、クロック信号の周波数を大きく低下させる分周器から、分周値を切り替えるようになる。周波数を大きく変化させる分周器の分周値を後に切り替えた場合、切替前の周波数が、分周器に接続されている機器の上限値を超える可能性がある。このため、最初にクロック信号の周波数を大きく低下させる分周器の分周値を切り替えることで、機器の上限値の周波数を超えたクロック信号が、機器に供給されないようにできるため、機器の誤動作又は故障を防止できる。また、機器の誤動作又は故障を防止するために全分周器の分周値を最小にした場合、機器には最低周波数のクロック信号が供給されるため、一の分周器の分周値のみを大きく下げることで、機器の処理速度が低下し過ぎることを防止できる。
【００１９】
本発明では、設定情報の変更前後で、分周値が小さくなり、かつ、分周値の変化量が大きい分周器から分周値を先に設定するようにする。これにより、クロック信号の周波数を小さくし、かつ、変化量が大きい分周器から、分周値が切り替わるようになる。分周器は、クロック信号の周波数を一度大きく下げ、その後、小さく上げるため、分周器から機器に供給されるクロック信号を、最低周波数とせず、かつ、機器の上限値を超えない周波数とすることができる。その結果、処理速度を低下させることなく、安全にクロック信号の周波数を切り替えることを実現することができる。
【００２０】
本発明においては、分周器に設定された優先度を考慮して、分周値を変更する順序が決定されるため、製造者が予め優先度を設定しておくことで、より安全にクロック信号の周波数を分周する分周値を変更することが可能となる。
【００２１】
本発明においては、設定情報を取得できない場合であっても、より安全にクロック信号の周波数を分周する分周値を変更することが可能となる。
【発明の効果】
【００２２】
本発明では、生成したコンピュータプログラムを、分周器に分周値を設定するコンピュータで実行させることで、コンピュータは、分周器に設定された分周値を変更する場合、変更前後の２つの設定情報から分周値を変更する分周器の順序を取得することができる。そして、コンピュータは、取得した順序で分周器の分周値を変更する。変更する順序を、例えば変更前後で分周値が小さくなり、かつ、変化量が大きい順に決定することで、コンピュータは、クロック信号の周波数を大きく低下させる分周器から、分周値を切り替えるようになる。周波数を大きく変化させる分周器の分周値を後に切り替えた場合、切替前の周波数が、分周器に接続されている機器の上限値を超える可能性がある。このため、最初にクロック信号の周波数を大きく低下させる分周器の分周値を切り替えることで、機器の上限値の周波数を超えたクロック信号が、機器に供給されないようにできるため、機器の誤動作又は故障を防止できる。また、機器の誤動作又は故障を防止するために全分周器の分周値を最小にした場合、機器には最低周波数のクロック信号が供給されるため、一の分周器の分周値のみを大きく下げることで、機器の処理速度が低下し過ぎることを防止できる。
【図面の簡単な説明】
【００２３】
【図１】プログラム生成装置の構成を模式的に示すブロック図である。
【図２】モード・周波数テーブルを模式的に示す図である。
【図３】クロック切替パターンテーブルを模式的に示す図である。
【図４】クロック切替パターンテーブルに基づいて生成されたコンピュータプログラムのソースコードを示す図である。
【図５】ＣＰＵが実行するプログラム生成処理のフローチャートである。
【図６】マイコンを備えるＥＣＵの概略的な構成を示す図である。
【図７】ＣＰＵが実行する処理のフローチャートである。
【図８】クロック信号の周波数を切り替える場合について説明するための模式図である。
【発明を実施するための形態】
【００２４】
以下、本発明の好適な実施形態について図面を参照して説明する。
【００２５】
本実施形態に係るプログラム生成装置は、ソフトウェアの開発環境が整ったコンピュータである。プログラム生成装置は、図８で説明した構成において、第１、第２及び第３分周器２１，２２，２３に分周値を設定する図示しない制御部（例えば、ＣＰＵ：Central Processing Unit）で実行されるコンピュータプログラムを生成する。
【００２６】
本実施形態では、第１、第２及び第３分周器２２，２３，２４は、モード情報（設定情報）に基づいて分周値が設定される。モード情報は、各分周器２２，２３，２４と、それぞれに設定する分周値とが対応付けられたデータである。各分周器２２，２３，２４は、あるモード情報に基づいて設定されている分周値が、別のモード情報に基づいて切り替えられる際に、所定の順序（以下、切替順序と言う）で分周値が切り替えられる。本実施形態に係るプログラム生成装置は、切替順序を決定し、決定した切替順序をプログラムコード内で定義付けたコンピュータプログラムを生成する。
【００２７】
図１は、プログラム生成装置の構成を模式的に示すブロック図である。
【００２８】
プログラム生成装置は、ＣＰＵ１、記憶部２、入力部３、表示部４及び大容量記憶部５を備えている。記憶部２は、例えばＲＯＭ(Read Only Memory)であって、本実施形態に係るプログラム生成プログラムが記憶されており、ＣＰＵ１は、記憶部２からプログラムを読み出して、プログラム生成処理を実行する。入力部３は、ユーザーが文字又は数字等のプログラムコードを入力するためのキーボード又はポインティングデバイス等である。表示部４は、例えば液晶表示ディスプレイであり、ユーザーが入力部３から入力したプログラムコード又はＣＰＵ１の処理結果等を表示する。
【００２９】
大容量記憶部５は、例えばＨＤＤ(Hard Disk Drive)であって、モード・周波数テーブルが記憶されている。図２は、モード・周波数テーブルを模式的に示す図である。モード・周波数テーブルは、例えばプログラム作成者が予め用意したデータテーブルである。モード・周波数テーブルは、「Ｎｏｒｍａｌ」、「Ｓｌｅｅｐ１」及び「Ｓｌｅｅｐ２」の３つのモード情報を格納している。各分周器は、モード情報に基づいて分周値が設定される。例えば、「Ｎｏｒｍａｌ」のモード情報に基づいて分周値を設定する場合、第１、第２及び第３分周器２２，２３，２４には、「１／４」、「１／１」及び「１／２」の分周値が設定される。これらモード情報には、モードＩＤ「０」、「１」及び「２」が割り当てられている。
【００３０】
また、モード・周波数テーブルは、モード情報毎にマイコン１０及び周辺機器３０に供給されるクロック信号の周波数を格納している。例えば、「Ｎｏｒｍａｌ」のモード情報に基づいて分周値を設定する場合、マイコン１０には、２４０×１／４×１／１＝６０ＭＨｚのクロック信号が供給される（図８参照）。周辺機器３０には、２４０×１／４×１／２＝３０ＭＨｚのクロック信号が供給される。なお、モード・周波数テーブルは、マイコン及び周辺機器に供給されるクロック信号の周波数の情報が格納されていなくてもよい。
【００３１】
さらに、モード・周波数テーブルは、第１、第２及び第３分周器に設定された優先度を格納している。後に詳述するが、優先度は、切替順序を決定する際に用いられ、優先度が高い分周器は、優先度が低い分周器より切替順序が先となるよう決定される。従って、図２では、第１、第２及び第３分周器２２，２３，２４には、「１」、「２」及び「２」の優先度が設定されているため、第２及び第３分周器２３，２４は、第１分周器２２より切替順序が先となる。なお、優先度は、分周器の数、又は回路構成によって決定されてもよいし、分周器に接続される機器に応じて決定されてもよい。
【００３２】
上述のように構成されたプログラム生成装置は、例えばユーザーが入力部３から処理の開始操作が入力されることで、切替順序を決定するコンピュータプログラムを生成するプログラム生成処理を実行し、プログラムコードを生成する。以下、プログラム生成処理について説明する。
【００３３】
ＣＰＵ１は、大容量記憶部５に記憶されるモード・周波数テーブルから、２つのモードＩＤの組み合わせを全て生成する。図２のモード・周波数テーブルの場合、ＣＰＵ１は、モードＩＤ「０」及び「１」と、モードＩＤ「０」及び「２」と、モードＩＤ「１」及び「２」との３つの組み合わせを生成する。
【００３４】
次に、ＣＰＵ１は、各組み合わせに、可能な全ての時間列順序を設定する。例えばモードＩＤ「０」及び「１」の組み合わせの場合、「０」、「１」の順序と、「１」、「０」の順序とを設定する。従って、図２のモード・周波数テーブルの場合、合計６通りの順序が設定される。
【００３５】
ＣＰＵ１は、設定した６通りの順序それぞれについて、分周器２２，２３，２４の切替順序を決定する。まず、ＣＰＵ１は、設定した時間列順序が先のモードＩＤ及び後のモードＩＤとで、分周値が小さくなっている分周器を検出する。そして、ＣＰＵ１は、検出した分周器に対応する分周値が、設定された時間列順序の先後で変化した変化量を算出し、変化量が大きい順に切替順序を決定する。さらに変化量が等しい場合には、優先度に従って切替順序を決定する。
【００３６】
例えば、モードＩＤ「０」及び「１」の組み合わせで、「０」、「１」の順に順序が設定されている場合について説明する。図２において、第２分周器２３の分周値は、「１／１」から「１／３」に切り替わっており、その変化量は「１−（（１／３）／（１／１））＝２／３」である。また、第３分周器２４の分周値は、「１／２」から「１／４」に切り替わっており、その変化量は「（１−（（１／４）／（１／２）））＝１／２」である。従って、第３分周器２４より第２分周器２３の分周値の変化量は大きく、ＣＰＵ１は、第２分周器２３の順序を、第３分周器２４より先に決定する。その結果、ＣＰＵ１は、切替順序を、「第２分周器２３、第３分周器２４、第１分周器２２」の順に決定する。なお、分周値の変化量は、単純に（切替前の分周値）／（切替後の分周値）と定義してもよい。また、分周値の変化量を逆に（切替後の分周値）／（切替前の分周値）としてもよく、この場合は変化量の小さいものから先に分周値を切り替えるように決定する。
【００３７】
また、変化量を（１−（切替後の分周値）／（切替前の分周値））と定義して、モードＩＤ「２」、「０」の順に順序が設定されている場合について説明する。この場合、第２分周器２３の分周値は、「１／３」から「１／１」に切り替わっており、その変化量は「−２」である。また、第３分周器２４の分周値は、「１／８」から「１／２」に切り替わっており、その変化量は「−３」である。この場合、変化量が大きい方から変更順位を決定するため、「−２」＞「−３」より、ＣＰＵ１は、切替順序を、「第２分周器２３、第３分周器２４、第１分周器２２」の順に決定する。即ち、周波数を上げる設定の変更順位が後になる。
【００３８】
次に、ＣＰＵ１は、上述の分周値の変化量が等しい場合、各分周器２２，２３，２４に設定された優先度に基づいて分周値を設定する順序を修正する。本実施形態では、第１、第２及び第３分周器２２，２３，２４には、「１」、「２」及び「２」の優先度が設定されているため、ＣＰＵ１は、第１分周器２２よりも、第２又は第３分周器２３，２４の順序が先となるように、順序を修正する。
【００３９】
ＣＰＵ１は、設定した６通りの時間列順序それぞれについて分周器の切替順序を決定した後、クロック切替パターンテーブルを生成する。図３は、クロック切替パターンテーブルを模式的に示す図である。クロック切替パターンテーブルは、分周器２２，２３，２４に分周値を設定する制御部に実行させるコンピュータプログラムを生成するためのデータである。
【００４０】
クロック切替パターンテーブルは、時間列順序が設定された２つのモードＩＤと、２つのモードＩＤに基づいて決定した切替順序とが対応付けられて格納しており、それぞれに「０」から「５」のクロックＩＤを割り当てている。例えば、クロックＩＤ「０」の場合、「０」、「１」の順に時系列順序が設定されたモードＩＤに、「第２分周器２３、第３分周器２４、第１分周器２２」の順に決定された切替順序が割り当てられている。
【００４１】
クロック切替パターンテーブルにおいて、時系列順序が先に設定されたモードＩＤは、分周値が切り替えられる前の分周器の設定に用いられたモード情報のモードＩＤとして設定される。また、時系列順序が後に設定されたモードＩＤは、分周値が切り替えられる際に分周器の設定に用いられるモード情報のモードＩＤとして設定される。従って、クロック切替パターンテーブルでは、切替順序を、分周値の切替前後でモード情報がどのように変化しているかが対応付けている。
【００４２】
また、クロック切替パターンテーブルは、例外処理としてのデータを格納しており、それぞれに「６」から「８」のクロックＩＤを割り当てている。例外処理としてのデータは、時系列順序を先に設定するモードＩＤがなく、モードＩＤ「０」、「１」、「２」それぞれが時系列順序の後に設定されている場合に、全分周器２２，２３，２４を全て一度に最小の分周値に設定してから後のモードの分周値に設定されるよう対応付けている。
【００４３】
このクロック切替パターンテーブルから生成したコンピュータプログラムを実行することで、分周器２２，２３，２４に分周値を設定する制御部は、分周値の切替前後のモード情報を取得するだけで、切替順序を取得することができる。切替順序は、切替前後で分周値が小さくなった分周器、かつ、分周値の変化量が大きい分周器が先となるように決定されている。従って、制御部は分周値を切り替える際には、最初に、クロック信号の周波数を大きく低下させる分周器の分周値を切り替える。
【００４４】
周波数が高くなるように変化させる分周器の分周値を後に切り替えた場合、切替前の周波数が、分周器に接続されている機器の上限値を超える可能性がある。このため、最初にクロック信号の周波数を大きく低下させる分周器の分周値を切り替えることで、機器の上限値の周波数を超えたクロック信号が、機器に供給されないようにできるため、機器の誤動作又は故障を防止できる。また、機器の誤動作又は故障を防止するために全分周器の分周値を最小にした場合、機器には最低周波数のクロック信号が供給されるため、必要な分周器の分周値のみを必要なだけ下げることで、機器の処理速度が低下し過ぎることを防止できる。
【００４５】
また、クロック切替パターンテーブルが例外処理としてのデータを格納しているため、制御部は、切替前のモード情報が取得できない場合には、まず全分周器２２，２３，２４に最小の分周値を設定する。この結果、各分周器からは最低周波数のクロック信号が出力されるため、切替後のモードがどんなモードであっても、切替途中で各分周器に接続されている機器の上限値の周波数を超えたクロック信号が、機器に供給されないようにして、機器の誤動作又は故障を防止できる。
【００４６】
ＣＰＵ１は、クロック切替パターンテーブルの生成後、クロック切替パターンテーブルに基づいて、Ｃ言語及びアセンブリ言語等のソースコードを生成する。図４は、クロック切替パターンテーブルに基づいて生成されたコンピュータプログラムのソースコードを示す図である。図４に示すソースコードは、オブジェクトコードに変換され、分周器２２，２３，２４に分周値を設定する制御部により実行される。
【００４７】
例えば「Ｎｏｒｍａｌ」のモード情報に基づいて分周器に分周値が設定されており、「Ｓｌｅｅｐ１」のモード情報に基づいて分周値が切り替えられる場合、制御部は、分周値の切替前後のモード情報のモードＩＤ「０」及び「１」を取得する。モードＩＤ「０」、「１」の時系列順序には、クロックＩＤ「０」が割り当てられているため、制御部は、ソースコードの「case 0」に係るプログラムを実行し、第２分周器２３に分周値「１／３」を設定し、次に第３分周器２４に分周値「１／４」を設定し、最後に第１分周器２２に分周値「１／２」を設定する処理を実行する。
【００４８】
次に、プログラム生成装置のＣＰＵ１が実行する処理の動作について説明する。図５は、ＣＰＵ１が実行するプログラム生成処理のフローチャートである。
【００４９】
ＣＰＵ１は、大容量記憶部５からモード・周波数テーブルを取得する（Ｓ１）。次に、ＣＰＵ１は、取得したテーブルから２つのモードＩＤの組み合わせを全て生成し（Ｓ２）、各組み合わせに、可能な全ての時系列順序を設定する（Ｓ３）。ＣＰＵ１は、分周値が小さくなっている分周器を検出し（Ｓ４）、検出した分周器に対応する分周値が、設定された時間列順序の先後で変化した変化量を算出する（Ｓ５）。そして、ＣＰＵ１は、変化量が大きい順に切替順序を決定する（Ｓ６）。
【００５０】
次に、ＣＰＵ１は、算出した変化量で等しいものがあるか否かを判定する（Ｓ７）。算出した変化量で等しいものがない場合（Ｓ７：ＮＯ）、ＣＰＵ１は、処理をＳ９に移行する。一方、変化量が等しいものがある場合（Ｓ７：ＹＥＳ）、ＣＰＵ１は、変化量が等しい分周器の優先度を取得して、優先度に基づく切替順序を修正する（Ｓ８）。具体的には、優先度が高い分周器を、低い分周器より順序を先にする。その後、ＣＰＵ１は、例外処理としてのデータを生成する（Ｓ９）。
【００５１】
そして、ＣＰＵ１は、生成したクロック切替パターンテーブルに基づいて、図４に示すソースコードを生成する（Ｓ１０）。このとき、ＣＰＵ１は、時系列順序が先に設定されたモードＩＤを、分周値が切り替えられる前の分周器の設定に用いられたモード情報のモードＩＤとして設定する。また、ＣＰＵ１は、時系列順序が後に設定されたモードＩＤを、分周値が切り替えられる際に分周器の設定に用いられるモード情報のモードＩＤとして設定する。これにより、分周値の切替前後でモード情報がどのように変化しているかに従って、切替順序を決定することができる。その後、ＣＰＵ１は、本処理を終了する。
【００５２】
以上説明したように、切替順序を、切替前後で分周値が小さくなった分周器、かつ、分周値の変化量が大きい分周器が先となるように決定されている。従って、制御部は分周値を切り替える際には、最初に、クロック信号の周波数を大きく低下させる分周器の分周値を切り替える。これにより、機器の上限値の周波数を超えたクロック信号が、機器に供給されないようにできるため、機器の誤動作又は故障を防止できる。また、各分周器の分周値を最低値まで落とすことなく一度で切り替えるため、機器の処理速度が低下し過ぎることを防止できる。
【００５３】
次に、上述のプログラム生成装置で生成したコンピュータプログラムを実行するマイコンと、それを備えるＥＣＵとについて説明する。図６は、マイコンを備えるＥＣＵの概略的な構成を示す図である。
【００５４】
ＥＣＵ（Electronic Control Unit）は、マイコン１０と、クロック信号生成回路２０と、周辺機器３０とを備えている。ＥＣＵは、例えばエンジン制御又はトランスミッション制御等を実行し、各種制御に応じてマイコン１０が処理を実行することにより、車両を適切な状態にしている。
【００５５】
マイコン１０は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、及びＲＡＭ（Random Access Memory）１３を備えている。ＲＯＭ１２には、プログラム生成装置が生成したコンピュータプログラムが記憶されており、ＣＰＵ１１は、ＲＯＭ１２に記憶されたプログラムを適宜読み出して、ＲＡＭ１３にデータを記憶しつつ、各種処理を実行する。例えば、ＣＰＵ１１は、クロック信号生成回路２０が有する分周器２２，２３，２４に分周値を設定し、クロック信号の周波数を切り替える。
【００５６】
マイコン１０のＣＰＵ１１、及び周辺機器３０は、クロック信号生成回路２０から、所定周波数の動作クロック信号に同期して動作する。クロック信号生成回路２０は、ＰＬＬ回路２１と、複数の第１、第２及び第３分周器２２，２３，２４とを備えている。ＰＬＬ回路２１は、図示しない発振器が出力するクロック信号の基準周波数を整数倍した周波数（２４０ＭＨｚ）のクロック信号を生成する。発振器は、例えば、水晶振動子・セラミックス発振子等を用いた一般的な発振回路である。第１、第２及び第３分周器２２，２３，２４は、ＰＬＬ回路２１が出力するクロック信号を設定された分周値１／Ｎで分周して出力する。第１分周器２２は、ＰＬＬ回路２１に接続されており、第１分周器２２には、第２及び第３分周器２３，２４それぞれが接続されている。そして、第２分周器２３には、ＣＰＵ１１が接続され、第３分周器２４には周辺機器３０が接続されている。
【００５７】
このクロック信号生成回路２０において、例えば、図２で説明した「Ｎｏｒｍａｌ」のモード情報に基づいて分周器２２，２３，２４に分周値が設定されている場合、第２分周器２３から出力されるクロック信号の周波数は２４０×１／４×１／１＝６０ＭＨｚとなる。従って、マイコン１０には、６０ＭＨｚのクロック信号が供給される。
【００５８】
このように、ＰＬＬ回路２１の分周器２２，２３，２４の分周値を変えることにより、ＰＬＬ回路２１から出力されるクロック信号の周波数を変化させることができる。可変する周波数範囲は、ＰＬＬ回路２１に接続されるマイコン１０のＣＰＵ１１及び周辺機器３０に依存する。例えば、ＣＰＵ１１又は周辺機器３０は、クロック信号の周波数に対して限界動作周波数を持っている。このため、ＣＰＵ１１又は周辺機器３０に入力されるクロック信号の周波数が、限界動作周波数を超えないように、第１、第２及び第３分分周器２２，２３，２４の分周値を設定する。
【００５９】
次に、上述のように構成されるＥＣＵにおいて、ＣＰＵ１１の動作について説明する。図７は、ＣＰＵ１１が実行する処理のフローチャートである。
【００６０】
ＣＰＵ１１は、分周値を切り替えるか否かを判定する（Ｓ２０）。分周値の切り替えは、例えば、自身又は周辺機器３０の動作状況に応じて決定される。分周値を切り替えない場合（Ｓ２０：ＮＯ）、ＣＰＵ１１は、本処理を終了する。分周値を切り替える場合（Ｓ２０：ＹＥＳ）、ＣＰＵ１は、分周値の切替前後のモード情報を取得する（Ｓ２１）。切替前のモード情報は、例えばＲＡＭ１３に記憶されている。切替後のモード情報は、例えば分周値の切り替えと共に決定される。
【００６１】
ＣＰＵ１１は、切替前のモード情報を取得できたか否かを判定する（Ｓ２２）。切替前のモード情報を取得できない場合（Ｓ２２：ＮＯ）、即ち、切替前のモード情報が不明である場合、ＣＰＵ１１は、例外処理（図３におけるクロックＩＤ６，７，８）を実行し、全分周器２２，２３，２４に最小の分周値を設定する（Ｓ２３）。その後、切替後の分周値に切り替える（Ｓ２５）これにより、各分周器からは一旦最低周波数のクロック信号が出力され、その後切替後の周波数に設定されるため、各分周器に接続されている機器の上限値の周波数を超えたクロック信号が、機器に供給されないようにして、クロックの切り替えができ、機器の誤動作又は故障を防止できる。その後、ＣＰＵ１１は、本処理を終了する。
【００６２】
一方、切替前のモード情報を取得できた場合（Ｓ２２：ＹＥＳ）、ＣＰＵ１１は、切替前後のモード情報から、クロックＩＤを特定し、これにより図４のソースコードに相当する部分の実行により、切替順序を取得し（Ｓ２４）、取得した切替順序に基づいて、順に分周値を切り替える（Ｓ２５）。例えば、「Ｎｏｒｍａｌ」のモード情報に基づいて分周器に分周値が設定されており、「Ｓｌｅｅｐ１」のモード情報に基づいて分周値を切り替える場合、ＣＰＵ１１は、分周値の切替前後のモード情報のモードＩＤ「０」及び「１」を取得する。モードＩＤ「０」、「１」の時系列順序には、クロックＩＤ「０」が割り当てられているため、ＣＰＵ１１は、図４に示すソースコードの「case 0」に係る処理を実行し、第２分周器２３に分周値「１／３」を設定し、次に第３分周器２４に分周値「１／４」を設定し、最後に第１分周器２２に分周値「１／２」を設定する。その後、ＣＰＵ１１は、本処理を終了する。
【００６３】
以上のように、各分周器の分周値を設定するＣＰＵ１１は、プログラム生成装置で生成したコンピュータプログラムを実行した場合、切替前後のモード情報を取得することで、分周器の切替順序を取得することができる。また、エラー等によりＣＰＵ１１が切替前のモード情報を取得できなかった場合でも、ＣＰＵ１１は、例外処理として、最小の分周値を各分周器に一旦設定した後、切替後の分周値（周波数）に設定するため、より安全にクロック信号の周波数を切り替えることができる。
【００６４】
なお、本実施形態では、クロック信号生成回路２０は、３つの分周器を備えているが、分周器の数及び回路構成等は適宜変更可能である。また、マイコン１０が各分周器に分周値を設定しているが、マイコン１０以外に処理装置を設け、その処理装置でクロック信号生成回路２の動作制御を行うようにしてもよい。さらに、プログラム生成装置は、図４に示すソースコードを生成するものとして説明したが、オブジェクトコードを生成し、ＣＰＵに直接書き込むようにしてもよい。
【００６５】
以上、本発明の好適な実施形態について、具体的に説明したが、各構成及び動作等は適宜変更可能であって、上述の実施の形態に限定されることはない。
【符号の説明】
【００６６】
１    ＣＰＵ
２    記憶部
１０  マイコン
２１  ＰＬＬ回路
２２，２３，２４  分周器
３０  周辺機器
【図１】
2010218435.tif 000003
【図２】
2010218435.tif 000004
【図３】
2010218435.tif 000005
【図４】
2010218435.tif 000006
【図５】
2010218435.tif 000007
【図６】
2010218435.tif 000008
【図７】
2010218435.tif 000009
【図８】
2010218435.tif 000010