(57)【要約】【課題】  マイクロプロセッサの誤動作を低減することが可能な技術を提供する。【解決手段】  周辺Ｉ／Ｏ３０，３１はクロック生成部５から出力される周辺クロックＰＣＬＫに基づいて動作を行う。ＣＰＵ１は周辺クロックＰＣＬＫの周波数に対しての変更要求をクロック生成部５に通知し、クロック生成部５はこの変更要求に基づいて周辺クロックＰＣＬＫの周波数を変更する。割り込み発生部４は、クロック生成部５での周辺クロックＰＣＬＫの周波数の変更が完了すると、ＣＰＵ１に割り込み要求を通知する。【選択図】        図１
2005071203.tif 000002
【特許請求の範囲】
【請求項１】
割り込み機能を有するＣＰＵと、
周波数可変にクロックを出力するクロック生成部と、
前記クロックに基づいて動作を行い、前記ＣＰＵからアクセスされる周辺Ｉ／Ｏと、
割り込み発生部と
を備え、
前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、
前記割り込み発生部は、前記クロック生成部での前記クロックの周波数の変更が完了すると、前記ＣＰＵに割り込み要求を通知する、マイクロプロセッサ。
【請求項２】
ＣＰＵと、
周波数可変にクロックを出力するクロック生成部と、
前記クロックに基づいて動作を行い、前記ＣＰＵからのアクセス要求に対する確認応答信号を前記ＣＰＵに出力する周辺Ｉ／Ｏと、
クロック変更完了判定部と
を備え、
前記ＣＰＵは、前記周辺Ｉ／Ｏに前記アクセス要求を通知した際には、前記周辺Ｉ／Ｏから前記確認応答信号を受け取った後に次の動作を行い、
前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、
前記クロック変更完了判定部は、前記クロック生成部での前記クロックの周波数の変更中を示すビジー信号と、前記クロック生成部での前記クロックの周波数の変更の完了を示す完了信号とを前記周辺Ｉ／Ｏに出力し、
前記周辺Ｉ／Ｏは、前記ビジー信号が入力されている状態で前記ＣＰＵから前記アクセス要求があるときには、前記完了信号の入力後に、前記確認応答信号を出力する、マイクロプロセッサ。
【請求項３】
前記周辺Ｉ／Ｏは、前記ビジー信号が入力されている状態で前記ＣＰＵから前記アクセス要求があるときには、前記完了信号の入力後に、前記アクセス要求に対して所定の動作を行う、請求項２に記載のマイクロプロセッサ。
【請求項４】
ＣＰＵと、
周波数可変にクロックを出力するクロック生成部と、
前記クロックに基づいて動作を行う周辺Ｉ／Ｏと、
前記クロックの前記周辺Ｉ／Ｏへの供給を制御するクロック供給制御部と
を備え、
前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、
前記クロック供給制御部は、前記クロック生成部における前記クロックの変更先の周波数が所定の周波数と一致するかどうかを検出する検出回路を有し、前記検出回路の検出結果に基づき前記クロックを前記周辺Ｉ／Ｏへ供給するか否かを制御する、マイクロプロセッサ。
【請求項５】
前記ＣＰＵは割り込み機能を有し、
前記クロック供給制御部が、前記周辺Ｉ／Ｏへ前記クロックを供給していない場合に、前記ＣＰＵが前記周辺Ｉ／Ｏにアクセスすると、前記ＣＰＵへ割り込み要求を通知する割り込み発生部を更に備える、請求項４に記載のマイクロプロセッサ。
【請求項６】
ＣＰＵと、
周波数可変にクロックを出力するクロック生成部と、
前記クロックに基づいて動作する周辺Ｉ／Ｏと、
前記ＣＰＵからの前記周辺Ｉ／Ｏへのアクセスを制御するアクセス制御部と
を備え、
前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、
前記アクセス制御部は、前記クロック生成部における前記クロックの変更先の周波数が所定の周波数と一致するかどうかを検出する検出回路を有し、前記検出回路の検出結果に基づき前記ＣＰＵからの前記周辺Ｉ／Ｏへのアクセスを許可するか否かを制御する、マイクロプロセッサ。
【請求項７】
前記ＣＰＵは割り込み機能を有し、
前記アクセス制御部が、前記ＣＰＵからの前記周辺Ｉ／Ｏへのアクセスを禁止している場合に、前記ＣＰＵが前記周辺Ｉ／Ｏにアクセスしようとすると、前記ＣＰＵへ割り込み要求を通知する割り込み発生部を更に備える、請求項６に記載のマイクロプロセッサ。
【請求項８】
周波数可変にクロックを出力するクロック生成部と、
前記クロックに基づいて動作を行う周辺Ｉ／Ｏと、
前記クロックの周波数に対する変更要求を前記クロック生成部に出力するＣＰＵと、
前記クロック生成部への前記変更要求の通知を許可するか否かの制御を行うクロック変更制御部と
を備え、
前記クロック変更制御部は、前記制御において、
前記周辺Ｉ／Ｏが動作していないときには、前記クロック生成部への前記変更要求の通知を許可し、
前記周辺Ｉ／Ｏが動作中のときには、前記クロック生成部への前記変更要求の通知を許可せず、
前記クロック生成部は、前記変更要求に基づいて前記クロックの周波数を変更する、マイクロプロセッサ。
【請求項９】
周波数可変にクロックを出力するクロック生成部と、
前記クロックに基づいて動作を行う周辺Ｉ／Ｏと、
前記クロックの周波数に対する変更要求と、前記クロックの周波数の変更先を示す第１の情報とを前記クロック生成部に出力するＣＰＵと、
前記クロック生成部への前記変更要求の通知を許可するか否かの制御を行うクロック変更制御部と
を備え、
前記クロック変更制御部は、前記第１の情報が示す周波数が所定の周波数と一致するかどうかを検出する検出回路を有し、前記検出回路の検出結果に基づき前記クロック生成部への前記変更要求の通知を許可するか否かを制御し、
前記クロック生成部は、前記第１の情報及び前記変更要求に基づいて前記クロックの周波数を変更する、マイクロプロセッサ。
【請求項１０】
前記ＣＰＵは割り込み機能を有し、
前記クロック変更制御部が前記クロック生成部への前記変更要求の通知を許可しない状況下で、前記ＣＰＵが前記変更要求を出力したときには前記ＣＰＵに割り込み要求を通知する割り込み発生部を更に備える、請求項８及び請求項９のいずれか一つに記載のマイクロプロセッサ。
【請求項１１】
前記クロック変更制御部は、
前記制御の実行／不実行を示す第２の情報を書き込むことが可能なレジスタを有し、
前記クロック変更制御部は、前記レジスタに書き込まれた第２の情報が前記制御の実行を示す場合には前記制御を実行し、前記制御の不実行を示す場合には前記クロック生成部への前記変更要求の通知を常に許可する、請求項８乃至請求項１０のいずれか一つに記載のマイクロプロセッサ。
【請求項１２】
前記検出回路は、記憶情報が書き換え可能なメモリと、比較器とを有し、
前記メモリは、前記所定の周波数を示す情報を記憶し、
前記比較器は、前記情報が示す周波数と、前記クロックの変更先の周波数とを比較する、請求項４及び請求項６のいずれか一つに記載のマイクロプロセッサ。
【請求項１３】
前記検出回路は、記憶情報が書き換え可能なメモリと、比較器とを有し、
前記メモリは、前記所定の周波数を示す第２の情報を記憶し、
前記比較器は、前記第１の情報と前記第２の情報とを比較する、請求項９に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マイクロプロセッサに関する。
【背景技術】
【０００２】
従来から、タイマやシリアルＩ／Ｏポートなどの周辺Ｉ／Ｏを内蔵し、かかる周辺Ｉ／Ｏに供給されるクロックの周波数を変更することが可能なマイクロプロセッサが提案されている。なお、マイクロプロセッサに関する技術が特許文献１に開示されている。
【０００３】
【特許文献１】特開平８−２４９０８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来のマイクロプロセッサにおいては、周辺Ｉ／Ｏに供給するクロックの周波数を変更する際、ＣＰＵが周波数の変更の要求を行ってから実際に変更されるまで時間差を生じる。そのため、周波数が切り替わる前に周辺Ｉ／Ｏを動作させてしまうことがあり、これによってマイクロプロセッサが誤動作することがある。また、周辺Ｉ／Ｏに供給されるクロックの周波数は可変であるため、ＣＰＵの実行プログラムの不具合等により、周辺Ｉ／Ｏの動作仕様外の周波数を有するクロックが周辺Ｉ／Ｏに入力されたり、周辺Ｉ／Ｏの動作中に周辺Ｉ／Ｏへ供給されるクロックの周波数が変更されることがあり、これらによってマイクロプロセッサが誤動作することがある。
【０００５】
そこで、本発明は上述の問題に鑑みて成されたものであり、マイクロプロセッサの誤動作を低減することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明の第１のマイクロプロセッサは、割り込み機能を有するＣＰＵと、周波数可変にクロックを出力するクロック生成部と、前記クロックに基づいて動作を行い、前記ＣＰＵからアクセスされる周辺Ｉ／Ｏと、割り込み発生部とを備え、前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、前記割り込み発生部は、前記クロック生成部での前記クロックの周波数の変更が完了すると、前記ＣＰＵに割り込み要求を通知する。
【０００７】
また、この発明の第２のマイクロプロセッサは、ＣＰＵと、周波数可変にクロックを出力するクロック生成部と、前記クロックに基づいて動作を行い、前記ＣＰＵからのアクセス要求に対する確認応答信号を前記ＣＰＵに出力する周辺Ｉ／Ｏと、クロック変更完了判定部とを備え、前記ＣＰＵは、前記周辺Ｉ／Ｏに前記アクセス要求を通知した際には、前記周辺Ｉ／Ｏから前記確認応答信号を受け取った後に次の動作を行い、前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、前記クロック変更完了判定部は、前記クロック生成部での前記クロックの周波数の変更中を示すビジー信号と、前記クロック生成部での前記クロックの周波数の変更の完了を示す完了信号とを前記周辺Ｉ／Ｏに出力し、前記周辺Ｉ／Ｏは、前記ビジー信号が入力されている状態で前記ＣＰＵから前記アクセス要求があるときには、前記完了信号の入力後に、前記確認応答信号を出力する。
【０００８】
また、この発明の第３のマイクロプロセッサは、ＣＰＵと、周波数可変にクロックを出力するクロック生成部と、前記クロックに基づいて動作を行う周辺Ｉ／Ｏと、前記クロックの前記周辺Ｉ／Ｏへの供給を制御するクロック供給制御部とを備え、前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、前記クロック供給制御部は、前記クロック生成部における前記クロックの変更先の周波数が所定の周波数と一致するかどうかを検出する検出回路を有し、前記検出回路の検出結果に基づき前記クロックを前記周辺Ｉ／Ｏへ供給するか否かを制御するの検出結果に基づき前記クロックを前記周辺Ｉ／Ｏへ供給するか否かを制御する。
【０００９】
また、この発明の第４のマイクロプロセッサは、ＣＰＵと、周波数可変にクロックを出力するクロック生成部と、前記クロックに基づいて動作する周辺Ｉ／Ｏと、前記ＣＰＵからの前記周辺Ｉ／Ｏへのアクセスを制御するアクセス制御部とを備え、前記クロック生成部は、前記ＣＰＵからの変更要求に基づいて前記クロックの周波数を変更し、前記アクセス制御部は、前記クロック生成部における前記クロックの変更先の周波数が所定の周波数と一致するかどうかを検出する検出回路を有し、前記検出回路の検出結果に基づき前記ＣＰＵからの前記周辺Ｉ／Ｏへのアクセスを許可するか否かを制御する。
【００１０】
また、この発明の第５のマイクロプロセッサは、周波数可変にクロックを出力するクロック生成部と、前記クロックに基づいて動作を行う周辺Ｉ／Ｏと、前記クロックの周波数に対する変更要求を前記クロック生成部に出力するＣＰＵと、前記クロック生成部への前記変更要求の通知を許可するか否かの制御を行うクロック変更制御部とを備え、前記クロック変更制御部は、前記制御において、前記周辺Ｉ／Ｏが動作していないときには、前記クロック生成部への前記変更要求の通知を許可し、前記周辺Ｉ／Ｏが動作中のときには、前記クロック生成部への前記変更要求の通知を許可せず、前記クロック生成部は、前記変更要求に基づいて前記クロックの周波数を変更する。
【００１１】
また、この発明の第６のマイクロプロセッサは、周波数可変にクロックを出力するクロック生成部と、前記クロックに基づいて動作を行う周辺Ｉ／Ｏと、前記クロックの周波数に対する変更要求と、前記クロックの周波数の変更先を示す第１の情報とを前記クロック生成部に出力するＣＰＵと、前記クロック生成部への前記変更要求の通知を許可するか否かの制御を行うクロック変更制御部とを備え、前記クロック変更制御部は、前記第１の情報が示す周波数が所定の周波数と一致するかどうかを検出する検出回路を有し、前記検出回路の検出結果に基づき前記クロック生成部への前記変更要求の通知を許可するか否かを制御し、前記クロック生成部は、前記第１の情報及び前記変更要求に基づいて前記クロックの周波数を変更する。
【発明の効果】
【００１２】
この発明の第１のマイクロプロセッサによれば、周辺Ｉ／Ｏに入力されるクロックの周波数が変更された後にＣＰＵに割り込み要求が通知される。これにより、ＣＰＵは、クロック生成部でのクロック周波数の変更が完了したことを認識することができる。従って、ＣＰＵが、割り込み発生部から割り込み要求を受け取った後に周辺Ｉ／Ｏにアクセスすることによって、クロック周波数が変更される前にＣＰＵが周辺Ｉ／Ｏにアクセスすることを防止することができる。その結果、マイクロプロセッサの誤動作を防止することができる。
【００１３】
また、この発明の第２のマイクロプロセッサによれば、クロック生成部でのクロック周波数の変更中にＣＰＵからのアクセス要求が通知された場合には、クロック周波数の変更が完了した後に、周辺Ｉ／Ｏは確認応答信号をＣＰＵに出力している。従って、クロック周波数の変更中にＣＰＵが再度周辺Ｉ／Ｏにアクセスすることを防止することができる。その結果、クロック周波数が変更されていない状態で周辺Ｉ／Ｏが動作することを低減できる。その結果、マイクロプロセッサの誤動作を低減することができる。
【００１４】
また、この発明の第３のマイクロプロセッサによれば、検出回路での所定の周波数として、周辺Ｉ／Ｏにとっての不当な周波数、例えば周辺Ｉ／Ｏの動作仕様外の周波数を採用することによって、ＣＰＵの実行プログラムの不具合等により、クロックの周波数が不当な周波数に変更された場合であっても、周辺Ｉ／Ｏには当該不当な周波数を有するクロックは入力されない。そのため、周辺Ｉ／Ｏの誤動作を低減することができ、マイクロプロセッサの誤動作を低減できる。
【００１５】
また、この発明の第４のマイクロプロセッサによれば、検出回路での所定の周波数として、周辺Ｉ／Ｏにとっての不当な周波数、例えば周辺Ｉ／Ｏの動作仕様外の周波数を採用することによって、ＣＰＵの実行プログラムの不具合等により、不当な周波数を有するクロックが入力された状態でＣＰＵが周辺Ｉ／Ｏにアクセスしようとしたとしても、実際にアクセスされることを防止することができる。その結果、不当な周波数を有するクロックが入力されている周辺Ｉ／Ｏを動作させることがないため、マイクロプロセッサの誤動作を低減できる。
【００１６】
また、この発明の第５のマイクロプロセッサによれば、周辺Ｉ／Ｏの動作中には、クロック周波数に対する変更要求はクロック生成部には通知されない。そのため、周辺Ｉ／Ｏの動作中にクロック周波数が変更されることがない。従って、周辺Ｉ／Ｏの誤動作を低減でき、マイクロプロセッサの誤動作を低減できる。
【００１７】
また、この発明の第６のマイクロプロセッサによれば、検出回路での所定の周波数として、周辺Ｉ／Ｏにとっての不当な周波数、例えば周辺Ｉ／Ｏの動作仕様外の周波数を採用することによって、ＣＰＵの実行プログラムの不具合等により、ＣＰＵがクロック周波数を不当な周波数に変更しようとしたとしても、変更要求はクロック生成部には通知されない。従って、クロック周波数が不当な周波数に変更されることがない。その結果、周辺Ｉ／Ｏの誤動作を低減でき、マイクロプロセッサの誤動作を低減できる。
【発明を実施するための最良の形態】
【００１８】
実施の形態１．
図１は本発明の実施の形態１に係るマイクロプロセッサ１００の構成を示すブロック図である。図１に示されるように、本実施の形態１に係るマイクロプロセッサ１００は、割り込み機能を有するＣＰＵ１と、アドレスデコーダ２と、周辺Ｉ／Ｏ部３と、割り込み発生部４と、クロック生成部５とを備えている。
【００１９】
ＣＰＵ１は、クロック生成部５から出力されるＣＰＵクロックＣＣＬＫに基づいて動作し、周辺Ｉ／Ｏ部３やクロック生成部５の動作を制御する。ＣＰＵ１は、アドレスデコーダ２及びクロック生成部５に、Ｉ／Ｏアクセス要求信号ＡＲＥＱ及び書き込み有効信号ＷＥＮをそれぞれ出力する。なお、書き込み有効信号ＷＥＮはＨｉｇｈレベルの信号である。
【００２０】
周辺Ｉ／Ｏ部３は周辺Ｉ／Ｏ３０，３１を備えており、各周辺Ｉ／Ｏ３０，３１はクロック生成部５から出力される周辺クロックＰＣＬＫに基づいて動作を行う。周辺Ｉ／Ｏ３０，３１は、例えばシリアルＩ／ＯポートやパラレルＩ／Ｏポート、あるいはタイマなどであって、制御レジスタ群３０ａ，３１ａをそれぞれ有している。制御レジスタ群３０ａ，３１ａは、複数のレジスタから成り、ＣＰＵ１が当該レジスタにデータを書き込むことによって周辺Ｉ／Ｏ３０，３１の動作が制御される。
【００２１】
例えば、周辺Ｉ／Ｏ３０がタイマである場合、周辺Ｉ／Ｏ３０はクロック生成部５からの周辺クロックＰＣＬＫをカウントしてタイマ動作を行う。このときの制御レジスタ群３０ａは、タイマ動作の開始あるいは停止を指示するためのレジスタや、カウント時間を設定するレジスタなどから成る。また、例えば周辺Ｉ／Ｏ３１が非同期式のシリアルＩ／Ｏポートの場合、周辺Ｉ／Ｏ３１は、クロック生成部５からの周辺クロックＰＣＬＫをデータ受信時のサンプリングクロックとして用いたり、周辺クロックＰＣＬＫに基づいて通信速度を決定したりする。このときの制御レジスタ群３１ａは、送信を開始したり、受信を許可するためのレジスタや、通信速度を設定するためのレジスタなどから成る。
【００２２】
クロック生成部５は、クロック選択回路５０と、Ｄフリップフロップ（以後「Ｄ−ＦＦ」と呼ぶ）５１と、レジスタ５２とを備えており、周辺クロックＰＣＬＫ及びＣＰＵクロックＣＣＬＫを周波数可変に出力する。レジスタ５２はＣＰＵ１によってデータが書き込まれ、書き込まれたデータをデータＦＤＡＴＡ０として出力する。Ｄ−ＦＦ５１は、クロック選択回路５０から出力されるクロックＤＣＬＫの立ち上がりに同期してデータＦＤＡＴＡ０を取り込んで、それをデータＦＤＡＴＡ１として出力する。
【００２３】
図２はクロック選択回路５０の構成を示すブロック図である。図２に示されるように、クロック選択回路５０は、セレクタ５０ａ，５０ｂと、逓倍器５０ｃ〜５０ｅと、分周器５０ｆ〜５０ｈとを備えている。逓倍器５０ｃ〜５０ｅのそれぞれには、マイクロプロセッサ１００の外部からシステムクロックＳＣＬＫが入力されている。逓倍器５０ｃはシステムクロックＳＣＬＫの周波数を４倍にしてセレクタ５０ａに出力し、逓倍器５０ｄはシステムクロックＳＣＬＫの周波数を２倍にしてセレクタ５０ａに出力する。また、逓倍器５０ｅはシステムクロックＳＣＬＫの周波数を１倍にして、つまりシステムクロックＳＣＬＫをそのままセレクタ５０ａに出力する。
【００２４】
データＦＤＡＴＡ１は、クロック選択回路５０での逓倍比を示す逓倍比選択信号ＳＥＬＡと、クロック選択回路５０での分周比を示す分周比選択信号ＳＥＬＢとから成り、セレクタ５０ａは、逓倍比選択信号ＳＥＬＡに基づいて、入力されたクロックのうちのいずれか一つを選択して出力する。具体的には、逓倍比選択信号ＳＥＬＡが逓倍比“４”を示す場合には逓倍器５０ｃの出力を選択し、逓倍比“２”を示す場合には逓倍器５０ｄの出力を選択し、逓倍比“１”を示す場合には逓倍器５０ｅの出力を選択する。このように、セレクタ５０ａが選択するクロックによって、クロック選択回路５０での逓倍比が決定される。
【００２５】
分周器５０ｆは、セレクタ５０ａから出力されるクロックをそのままセレクタ５０ｂに出力する。分周器５０ｇは、セレクタ５０ａから出力されるクロックの周波数を１／２倍にしてセレクタ５０ｂに出力し、分周器５０ｈはセレクタ５０ａから出力されるクロックの周波数を１／４倍にしてセレクタ５０ｂに出力する。セレクタ５０ｂは、データＦＤＡＴＡ１に含まれる分周比選択信号ＳＥＬＢに基づいて、入力されたクロックのうちいずれか一つを選択して周辺クロックＰＣＬＫとして出力する。具体的には、分周比選択信号ＳＥＬＢが分周比“１”を示す場合には分周器５０ｆの出力を選択し、分周比“１／２”を示す場合には分周器５０ｇの出力を選択し、分周比“１／４”を示す場合には分周器５０ｈの出力を選択する。このように、セレクタ５０ｂが選択するクロックによって、クロック選択回路５０での分周比が決定される。
【００２６】
また分周器５０ｆは、セレクタ５０ａから出力されるクロックをそのままＣＰＵクロックＣＣＬＫとして出力し、分周器５０ｈは、セレクタ５０ａから出力されるクロックの周波数を１／４倍にしてクロックＤＣＬＫとして出力する。
【００２７】
クロック生成部５は以上のように構成されているため、ＣＰＵ１がレジスタ５２に設定するデータを変更することによって、クロック選択回路５０での逓倍比あるいは分周比を変更することができ、クロック生成部５から出力されるＣＰＵクロックＣＣＬＫ、周辺クロックＰＣＬＫ、及びクロックＤＣＬＫの周波数を変更することができる。なお、周辺クロックＰＣＬＫの周波数は、システムクロックＳＣＬＫの周波数に、クロック選択回路５０での逓倍比と分周比とを掛け合わせたものであり、ＣＰＵクロックＣＣＬＫの周波数は、システムクロックＳＣＬＫにクロック選択回路５０での逓倍比を掛け合わせたものである。また、クロックＤＣＬＫの周波数は、クロック選択回路５０で設定可能な分周比の中での最小公倍数の分周比である１／４を、システムクロックＳＣＬＫの周波数に掛け合わせたものである。
【００２８】
割り込み発生部４は、比較器４０，４１と、割り込み発生回路４２と、Ｄ−ＦＦ４３，４４とを備えている。比較器４０は、データＦＤＡＴＡ０，１を互いに比較して、一致すればＨｉｇｈレベルの信号を、不一致であればＬｏｗレベルの信号を出力する。Ｄ−ＦＦ４４は、クロックＤＣＬＫの立ち上がりに同期して比較器４０の出力を取り込んで出力する。Ｄ−ＦＦ４３は、Ｄ−ＦＦ４４の出力を、クロックＤＣＬＫの立ち上がりに同期して取り込んで出力する。比較器４１は、Ｄ−ＦＦ４３，４４の出力を互いに比較して、一致すればＨｉｇｈレベルの信号を、不一致であればＬｏｗレベルの信号を割り込み発生回路４２に出力する。割り込み発生回路４２は、比較器４１の出力レベルが変化すると、ＣＰＵ１に対して割り込み要求信号ＩＲＥＱを出力する。ＣＰＵ１は割り込み要求信号ＩＲＥＱを受け取ると、割り込み処理を行う。
【００２９】
アドレスデコーダ２は、Ｉ／Ｏ選択信号ＰＳＥＬ０，１を周辺Ｉ／Ｏ部３に出力しており、ＣＰＵ１からのＩ／Ｏアクセス要求信号ＡＲＥＱを受け取ると、そのときのアドレスバスＡＢＵＳの値を読み込む。そして、読み込んだアドレスの値に基づいてＩ／Ｏ選択信号ＰＳＥＬ０，１のどちらか一方をＨｉｇｈレベルにする。具体的には、読み込んだアドレスの値が、周辺Ｉ／Ｏ３０のアドレスを示す場合には、Ｉ／Ｏ選択信号ＰＳＥＬ０，１をそれぞれＨｉｇｈレベル及びＬｏｗレベルにし、周辺Ｉ／Ｏ３１のアドレスを示す場合には、Ｉ／Ｏ選択信号ＰＳＥＬ０，１をそれぞれＬｏｗレベル及びＨｉｇｈレベルにする。
【００３０】
周辺Ｉ／３０にはＩ／Ｏ選択信号ＰＳＥＬ０が入力されており、その信号がＬｏｗレベルからＨｉｇｈレベルになると確認応答信号（以後「確認応答信号ＡＣＫ０」と呼ぶ）を出力する。また周辺Ｉ／Ｏ３１にはＩ／Ｏ選択信号ＰＳＥＬ１が入力されており、その信号がＬｏｗレベルからＨｉｇｈレベルになると確認応答信号（以後「確認応答信号ＡＣＫ１」と呼ぶ）を出力する。周辺Ｉ／Ｏ３０，３１からそれぞれ出力された確認応答信号ＡＣＫ０，１は、確認応答信号ＡＣＫとしてＣＰＵ１に出力される。
【００３１】
このように、Ｉ／Ｏ選択信号ＰＳＥＬ０，１のどちらか一方がＨｉｇｈレベルになると、周辺Ｉ／Ｏ部３からは確認応答信号ＡＣＫが出力され、それがＣＰＵ１に入力される。
【００３２】
次に、周辺Ｉ／Ｏ部３の制御レジスタ群３０ａ，３１ａにデータを設定する際のマイクロプロセッサ１００の動作について説明する。ここでは、代表的に周辺Ｉ／Ｏ３０の制御レジスタ群３０ａにデータを設定する際の動作について説明する。
【００３３】
ＣＰＵ１は、周辺Ｉ／Ｏ３０が内蔵する制御レジスタ群３０ａのあるレジスタに所定のデータを設定する際には、アドレスデコーダ２に対して、Ｉ／Ｏアクセス要求信号ＡＲＥＱを出力するとともに、設定を行うレジスタのアドレスをアドレスバスＡＢＵＳに出力する。また、それと同時に、設定するデータをデータバスＤＢＵＳに出力する。アドレスデコーダ２は、Ｉ／Ｏアクセス要求信号ＡＲＥＱを受け取ると、アドレスバスＡＢＵＳの値を読み込んで、Ｉ／Ｏ選択信号ＰＳＥＬ０をＨｉｇｈレベルにする。このように、Ｉ／Ｏ選択信号ＰＳＥＬ０がＨｉｇｈレベルになることによって、ＣＰＵ１からのアクセス要求が周辺Ｉ／Ｏ３０に通知される。
【００３４】
周辺Ｉ／Ｏ３０は、Ｉ／Ｏ選択信号ＰＳＥＬ０がＨｉｇｈレベルになると、ＣＰＵ１からのアクセス要求に対する確認応答信号ＡＣＫ０を出力し、これが確認応答信号ＡＣＫとしてＣＰＵ１に入力される。これと同時に、アドレスバスＡＢＵＳの値を読み込み、その値が示すレジスタに、データバスＤＢＵＳのデータを書き込む。
【００３５】
以上のようにして、周辺Ｉ／Ｏ３０の制御レジスタ群３０ａにデータが設定される。ＣＰＵ１は、確認応答信号ＡＣＫを受け取ると、周辺Ｉ／Ｏ３０へのアクセスが受け付けられたと判断し、次の動作を開始する。
【００３６】
次に、クロック生成部５から出力される周辺クロックＰＣＬＫの周波数を変更する際のマイクロプロセッサ１００の動作について説明する。図３は、このときのマイクロプロセッサ１００の動作を示すタイミングチャートである。本実施の形態１では、一例として、クロック選択回路５０での逓倍比は一定とし、そこでの分周比を変更することによって、周辺クロックＰＣＬＫの周波数を変更する場合について説明する。具体的には、クロック選択回路５０での分周比を“１”から“１／２”に変更して周辺クロックＰＣＬＫの周波数を一度変更し、その後分周比を“１／２”から“１／４”に変更して周辺クロックＰＣＬＫの周波数を再度変更する際のマイクロプロセッサ１００の動作について説明する。なお、以下の説明では、クロック選択回路５０での逓倍比は常に“１”であって、セレクタ５０ａは逓倍器５０ｅの出力を常に選択するものとする。
【００３７】
図３に示される時刻ｔ１において、ＣＰＵ１は、書き込み有効信号ＷＥＮをレジスタ５２に出力して、周辺クロックＰＣＬＫの周波数に対する変更要求（以後「変更要求ＣＲ」と呼ぶ）をクロック生成部５に通知する。これと同時に、ＣＰＵ１は周波数の変更先を示す情報（以後「変更先情報ＶＩ」と呼ぶ）を含むデータをデータバスＤＢＵＳに出力する。このデータを「変更データＶＤ」と呼ぶ。
【００３８】
変更データＶＤには、変更先情報ＶＩとして、クロック選択回路５０に設定する分周比の値、ここでは値“１／２”と、クロック選択回路５０に設定する逓倍比の値とが含まれている。上述のように、本実施の形態１では、周辺クロックＰＣＬＫの周波数を変更する際には逓倍比は変更しないため、変更データＶＤに含まれている逓倍比の値は“１”である。
【００３９】
レジスタ５２は、書き込み有効信号ＷＥＮを受け取ると、データバスＤＢＵＳを介して変更データＶＤをそれ自身に書き込む。そして、書き込んだ変更データＶＤをデータＦＤＡＴＡ０として出力する。このようにして、図３に示されるように、時刻ｔ１において、レジスタ５２に設定されている分周比の値が“１”から“１／２”に変化し、データＦＤＡＴＡ０の値が変化する。なお図３における、レジスタ５２に設定されているデータ、あるいはＤ−ＦＦ５１の出力データを示す欄に示されている「×１」、「×１／２」及び「×１／４」は、そのデータに含まれる分周比の値を意味している。
【００４０】
時刻ｔ１において、Ｄ−ＦＦ５１はデータＦＤＡＴＡ０の以前の値を保持しているため、データＦＤＡＴＡ０の値が変化すると、データＦＤＡＴＡ０，１は互い一致せず、時刻ｔ１において、比較器４０の出力はＨｉｇｈレベルからＬｏｗレベルに遷移する。その後、時刻ｔ２においてクロックＤＣＬＫが立ち上がると、Ｄ−ＦＦ５１は変化後のデータＦＤＡＴＡ０を取り込んで出力するため、クロック選択回路５０には、時刻ｔ１でレジスタ５２に設定された変更データＶＤがデータＦＤＡＴＡ１として入力される。そして、その変更データＶＤのうち、分周比を示すデータは分周比選択信号ＳＥＬＢとしてセレクタ５０ｂに入力され、逓倍比を示すデータは逓倍比選択信号ＳＥＬＡとしてセレクタ５０ａに入力される。このときの分周比選択信号ＳＥＬＢは分周比“１／２”を示すため、セレクタ５０ｂは分周器５０ｇの出力を選択して出力する。その結果、図３に示されるように、時刻ｔ２において、周辺クロックＰＣＬＫの周波数が、システムクロックＳＣＬＫの周波数の１倍から１／２倍に変更される。
【００４１】
このように、本実施の形態１に係るクロック生成部５では、クロックＤＣＬＫの立ち上がりタイミングで周辺クロックＰＣＬＫの周波数を変更している。そして、クロック選択回路５０で設定可能な分周比の最小公倍数の分周比でセレクタ５０ａの出力を分周する分周器５０ｈの出力を、クロックＤＣＬＫとして採用している。これは、周辺クロックＰＣＬＫの周波数を変更した場合に、デューティが異常なクロックが周辺Ｉ／Ｏ部３に入力されないようにするためである。
【００４２】
時刻ｔ２において、データＦＤＡＴＡ１が変化すると、データＦＤＡＴＡ０，１は互いに一致するようになり、比較器４０の出力はＬｏｗレベルからＨｉｇｈレベルに遷移する。これと同時に、Ｄ−ＦＦ４４の出力がＨｉｇｈレベルからＬｏｗレベルに遷移する。このとき、Ｄ−ＦＦ４３の出力はＨｉｇｈレベルであるため、比較器４１の出力はＨｉｇｈレベルからＬｏｗレベルに遷移する。比較器４１の出力レベルが変化すると、割り込み発生回路４２は、ＣＰＵ１に割り込み要求信号ＩＲＥＱを出力し、ＣＰＵ１は割り込み処理を行う。
【００４３】
ここで、図３に示されるように、周辺クロックＰＣＬＫの周波数が変更されるタイミングとほぼ同じタイミングで比較器４１の出力は変化する。そして、割り込み発生回路４２は、比較器４１の出力レベルの変化を検出して割り込み要求信号ＩＲＥＱを出力する。従ってＣＰＵ１は、周辺クロックＰＣＬＫの周波数の変更が完了した後に割り込み要求を受け取ることになる。
【００４４】
このように、本実施の形態１に係る割り込み発生部４は、クロック生成部５における周辺クロックＰＣＬＫの周波数変更の完了を検出してＣＰＵ１に割り込み要求を通知する。
【００４５】
ＣＰＵ１は、割り込み発生部４から割り込み要求が通知されることによって、周辺クロックＰＣＬＫの周波数が変更されたことを認識し、その後、周辺Ｉ／Ｏ３０や周辺Ｉ／Ｏ３１にアクセスしてそれらを動作させる。
【００４６】
次に、図３に示す時刻ｔ１１において、ＣＰＵ１は、書き込み有効信号ＷＥＮを再度レジスタ５２に出力する。これと同時に、ＣＰＵ１は新たな変更先情報ＶＩを含む変更データＶＤをデータバスＤＢＵＳに出力する。このときの変更データＶＤには、変更先情報ＶＩとして、分周比の値“１／４”と逓倍比の値“１”とが含まれている。
【００４７】
レジスタ５２は、書き込み有効信号ＷＥＮを受け取ると、データバスＤＢＵＳを介して変更データＶＤをそれ自身に書き込んで、書き込んだ変更データＶＤをデータＦＤＡＴＡ０として出力する。このようにして、図３に示されるように、時刻ｔ１１において、レジスタ５２に設定されている分周比の値が“１／２”から“１／４”に変化し、データＦＤＡＴＡ０の値が変化する。
【００４８】
時刻ｔ１１において、Ｄ−ＦＦ５１はデータＦＤＡＴＡ０の以前の値を保持しているため、時刻ｔ１のときと同様に、比較器４０の出力はＨｉｇｈレベルからＬｏｗレベルに遷移する。その後、時刻ｔ１２において、クロックＤＣＬＫが立ち上がると、Ｄ−ＦＦ５１は変化後のデータＦＤＡＴＡ０を取り込んで出力するため、クロック選択回路５０には、時刻ｔ１１でレジスタ５２に設定された変更データＶＤがデータＦＤＡＴＡ１として入力される。そして、その変更データＶＤのうち、分周比を示すデータは分周比選択信号ＳＥＬＢとしてセレクタ５０ｂに入力され、逓倍比を示すデータは逓倍比選択信号ＳＥＬＡとしてセレクタ５０ａに入力される。このときの分周比選択信号ＳＥＬＢは分周比“１／４”を示すため、セレクタ５０ｂは分周器５０ｈの出力を選択して出力する。その結果、図３に示されるように、時刻ｔ１２において、周辺クロックＰＣＬＫの周波数が、システムクロックＳＣＬＫの周波数の１／２倍から１／４倍に変更される。
【００４９】
また時刻ｔ１２において、データＦＤＡＴＡ１が変化すると、データＦＤＡＴＡ０，１は互いに一致するようになり、比較器４０の出力はＬｏｗレベルからＨｉｇｈレベルに遷移する。
【００５０】
時刻ｔ１２の直前では、比較器４０の出力はＬｏｗレベルであるため、時刻ｔ１２では、Ｄ−ＦＦ４４の出力は変化せず、Ｌｏｗレベルが維持される。そして、時刻ｔ１２の直前では、Ｄ−ＦＦ４４の出力はＬｏｗレベルであるため、時刻ｔ１２において、Ｄ−ＦＦ４３の出力がＨｉｇｈレベルからＬｏｗレベルに遷移する。その結果、時刻ｔ１２において、Ｄ−ＦＦ４３，４４の出力が互いに一致するようになり、比較器４１の出力はＬｏｗレベルからＨｉｇｈレベルに遷移する。
【００５１】
比較器４１の出力レベルが変化すると、割り込み発生回路４２は、ＣＰＵ１に割り込み要求信号ＩＲＥＱを出力する。上述のように、周辺クロックＰＣＬＫの周波数が変更されるタイミングとほぼ同じタイミングで比較器４１の出力は変化し、割り込み発生回路４２は、比較器４１の出力レベルの変化を検出して割り込み要求信号ＩＲＥＱを出力するため、ＣＰＵ１は、周辺クロックＰＣＬＫの周波数の変更が完了した後に割り込み要求を受け取ることになる。
【００５２】
その後ＣＰＵ１は、周辺Ｉ／Ｏ部３の周辺Ｉ／Ｏ３０や、周辺Ｉ／Ｏ３１にアクセスして、それらを動作させる。
【００５３】
このように本実施の形態１に係るマイクロプロセッサ１００では、クロック生成部５がＣＰＵ１から通知される変更要求ＣＲ及び変更先情報ＶＩに基づいて周辺クロックＰＣＬＫの周波数を変更している。クロック生成部５は、クロックＤＣＬＫの立ち上がりタイミングで周辺クロックＰＣＬＫの周波数を変更しているため、クロック生成部５へのＣＰＵ１の変更要求ＣＲの通知から、実際に周辺クロックＰＣＬＫの周波数が変更されるまで時間差を生じる。そのため、ＣＰＵ１が変更要求ＣＲを出力した後、すぐに周辺Ｉ／Ｏ３０，３１にアクセスすると、周辺クロックＰＣＬＫの周波数が変更されおらず、周辺Ｉ／Ｏ３０，３１が誤動作することがある。
【００５４】
例えば、周辺Ｉ／Ｏ３０がシリアルＩ／Ｏポートである場合、周辺クロックＰＣＬＫの周波数が変更される前に制御レジスタ群３１ａに所定のデータが設定されて、当該シリアルＩ／Ｏポートが通信動作を行うと、所望の通信速度が実現できない。また、周辺Ｉ／Ｏ３０がタイマである場合、周辺クロックＰＣＬＫの周波数が変更される前に制御レジスタ群３１ａに所定のデータが設定されて、当該タイマがタイマ動作を行うと、所望の時間を計測できなくなる。
【００５５】
しかしながら、本実施の形態１では、割り込み発生部４が、周辺クロックＰＣＬＫの周波数が実際に変更された後にＣＰＵ１に割り込み要求を通知しているため、ＣＰＵ１は、クロック生成部５での周辺クロックＰＣＬＫの周波数の変更が完了したことを認識することができる。従って、ＣＰＵ１が割り込み発生部４から割り込み要求を受け取った後に、周辺Ｉ／Ｏ３０，３１にアクセスすることによって、周辺クロックＰＣＬＫの周波数が変更される前にＣＰＵ１が周辺Ｉ／Ｏ３０，３１にアクセスすることを防止することができる。その結果、周辺Ｉ／Ｏ３０，３１の誤動作を低減でき、マイクロプロセッサ１００の誤動作を低減することができる。
【００５６】
実施の形態２．
図４は本発明の実施の形態２に係るマイクロプロセッサ２００の構成を示すブロック図である。本実施の形態２に係るマイクロプロセッサ２００は、上述の実施の形態１に係るマイクロプロセッサ１００において、構成としては、割り込み発生部４の代わりにクロック変更完了判定部６を備えるものである。
【００５７】
クロック変更完了判定部６は、上述の比較器４０を備えている。比較器４０は、データＦＤＡＴＡ０，１を相互に比較して、一致すればＨｉｇｈレベルの信号である完了信号ＦＮＳを、不一致であればＬｏｗレベルの信号であるビジー信号ＢＳＹを、周辺Ｉ／Ｏ部３に出力する。
【００５８】
周辺Ｉ／Ｏ３０，３１のそれぞれには、完了信号ＦＮＳ及びビジー信号ＢＳＹが入力される。周辺Ｉ／Ｏ３０は、ビジー信号ＢＳＹが入力されている状態でＣＰＵ１からアクセス要求があると、つまり、クロック変更完了判定部６の出力がＬｏｗレベルのときにＩ／Ｏ選択信号ＰＳＥＬ０がＨｉｇｈレベルになると、制御レジスタ群３０ａへのデータ書き込みと、確認応答信号ＡＣＫ０の出力を保留する。そして、比較器４０の出力がビジー信号ＢＳＹから完了信号ＦＮＳに切り替わり、周辺Ｉ／Ｏ３０に完了信号ＦＮＳが入力されると、周辺Ｉ／Ｏ３０は、保留しておいた制御レジスタ群３０ａへのデータ書き込みを実行する。同時に、周辺Ｉ／Ｏ３０はＣＰＵ１に確認応答信号ＡＣＫ０を出力し、この信号が確認応答信号ＡＣＫとしてＣＰＵ１に入力される。
【００５９】
同様に、周辺Ｉ／Ｏ３１は、ビジー信号ＢＳＹが入力されている状態でＣＰＵ１からアクセス要求があると、つまり、クロック変更完了判定部６の出力がＬｏｗレベルのときにＩ／Ｏ選択信号ＰＳＥＬ１がＨｉｇｈレベルになると、制御レジスタ群３１ａへのデータ書き込みと、確認応答信号ＡＣＫ１の出力を保留する。そして、比較器４０の出力がビジー信号ＢＳＹから完了信号ＦＮＳに切り替わり、周辺Ｉ／Ｏ３１に完了信号ＦＮＳが入力されると、周辺Ｉ／Ｏ３１は、保留しておいた制御レジスタ群３１ａへのデータ書き込みを実行する。同時に、周辺Ｉ／Ｏ３１はＣＰＵ１に確認応答信号ＡＣＫ１を出力し、この信号が確認応答信号ＡＣＫとしてＣＰＵ１に入力される。
【００６０】
ＣＰＵ１は、確認応答信号ＡＣＫを受け取ると、周辺Ｉ／Ｏ３０，３１へのアクセスが受け付けられたものと認識し、次の動作を開始する。その他の構成及び動作について、実施の形態１に係るマイクロプロセッサ１００と同じであるためその説明は省略する。
【００６１】
実施の形態１で図３を参照して説明したように、周辺クロックＰＣＬＫの周波数を変更する際には、ＣＰＵ１から書き込み有効信号ＷＥＮがレジスタ５２に入力されて、変更データＶＤがレジスタ５２に設定される。レジスタ５２に変更データＶＤが設定されると、比較器４０の出力はＨｉｇｈレベルからＬｏｗレベルとなり、比較器４０はビジー信号ＢＳＹを出力する。そして、比較器４０は、その後のクロックＤＣＬＫの立ち上がりタイミングで、ビジー信号ＢＳＹ出力から完了信号ＦＮＳ出力に切り替える。また、ビジー信号ＢＳＹ出力から完了信号ＦＮＳ出力に切り替わるタイミングで、周辺クロックＰＣＬＫの周波数が変更される。
【００６２】
このようにビジー信号ＢＳＹは、ＣＰＵ１がクロック生成部５に変更要求ＣＲを通知してから、実際に周辺クロックＰＣＬＫの周波数が変更されるまで比較器４０から出力されているため、周辺クロックＰＣＬＫの周波数の変更中を示す信号であると言える。
【００６３】
一方、完了信号ＦＮＳは、クロック生成部５において周辺クロックＰＣＬＫの周波数が実際に変更されるタイミングで比較器４０から出力されるため、周辺クロックＰＣＬＫの周波数の変更の完了を示す信号であると言える。
【００６４】
このように本実施の形態２に係るマイクロプロセッサ２００では、周辺Ｉ／Ｏ３０，３１は、ビジー信号ＢＳＹが入力されている状態でＣＰＵ１からアクセス要求があるときには、完了信号ＦＮＳの入力後に、確認応答信号ＡＣＫ０，１をそれぞれＣＰＵ１に出力している。つまり、クロック生成部５での周辺クロックＰＣＬＫの周波数の変更中に、ＣＰＵ１からのアクセス要求が通知された場合には、周辺クロックＰＣＬＫの周波数の変更が完了した後に、周辺Ｉ／Ｏ３０，３１は確認応答信号ＡＣＫ０，１をそれぞれＣＰＵ１に出力する。従って、周辺クロックＰＣＬＫの周波数の変更中にＣＰＵ１が再度周辺Ｉ／Ｏ３０，３１にアクセスすることを防止することができる。
【００６５】
本実施の形態２に係るマイクロプロセッサ２００と異なり、周辺Ｉ／Ｏ部３が周辺クロックＰＣＬＫの周波数の変更中でも確認応答信号ＡＣＫをＣＰＵ１に通知する場合であって、周辺Ｉ／Ｏ３０がシリアルＩ／Ｏポートである場合、ＣＰＵ１は確認応答信号ＡＣＫを受け取ると次の動作に移行するため、周辺クロックＰＣＬＫの周波数が変更されていない状態で、ＣＰＵ１は周辺Ｉ／Ｏ３０に通信動作を実行させてしまうことがある。そのため、所望の通信速度が実行できないことがある。
【００６６】
本実施の形態２では、周辺クロックＰＣＬＫの周波数の変更中にＣＰＵ１が再度周辺Ｉ／Ｏ部３にアクセスすることを防止することができるため、周辺クロックＰＣＬＫの周波数が変更されていない状態で、周辺Ｉ／Ｏ３０が通信動作を行うことを低減できる。その結果、所望の通信速度が実現でき、マイクロプロセッサ２００の誤動作を低減することができる。
【００６７】
また本実施の形態２では、周辺Ｉ／Ｏ３０，３１は、クロック生成部５でのクロック周波数の変更が完了した後にＣＰＵ１からのアクセス要求に対しての所定の動作、本実施の形態２では制御レジスタ群３０ａ，３１ａへのデータの書き込みを行っている。そのため、周辺クロックＰＣＬＫの周波数が変更される前に、周辺Ｉ／Ｏ３０，３１が動作することを防止することができる。従って、周辺Ｉ／Ｏ３０，３１の誤動作を低減でき、その結果、マイクロプロセッサ２００の誤動作を更に低減することができる。
【００６８】
実施の形態３．
図５は本発明の実施の形態３に係るマイクロプロセッサ３００の構成を示すブロック図である。本実施の形態３に係るマイクロプロセッサ３００は、上述の実施の形態１において、構成としては、割り込み発生部４の替わりに割り込み発生部１４を備え、クロック供給制御部７ａ，７ｂを更に備えるものである。
【００６９】
クロック供給制御部７ａ，７ｂは、周辺Ｉ／Ｏ３０，３１にそれぞれ対応して設けられており、周辺Ｉ／Ｏ３０，３１への周辺クロックＰＣＬＫの供給をそれぞれ制御する。各クロック供給制御部７ａ，７ｂは、比較器７０及びメモリ７１を有する検出回路７３とＯＲ回路７２とを備えている。
【００７０】
図６は比較器７０とメモリ７１の構成を示すブロック図である。図６に示されるように、メモリ７１は複数個のレジスタＲ１〜Ｒｎ（ｎ≧２）で構成されている。各レジスタＲ１〜Ｒｎは、記憶情報の書き換えが可能であって、データバスＤＢＵＳを介してＣＰＵ１によって読み書きされる。なお、レジスタＲ１〜Ｒｎを特に区別する必要が無い場合には、これらを総称してレジスタＲｎと呼ぶ。
【００７１】
クロック供給制御部７ａにおけるメモリ７１のレジスタＲｎには、所定の周波数を示す情報が記憶されている。例えば、クロック生成部５に設定可能な周辺クロックＰＣＬＫの周波数のうち、周辺Ｉ／Ｏ３０の動作仕様外の周波数を示す情報（以後「禁止クロック情報ＦＩ１Ａ」と呼ぶ）がレジスタＲｎに記憶されている。そして、クロック供給制御部７ａのメモリ７１に記憶されている禁止クロック情報ＦＩ１Ａ全体で情報テーブルを構成している。以後、この情報テーブルを「禁止テーブルＴ１Ａ」と呼ぶ。
【００７２】
また、クロック供給制御部７ｂにおけるメモリ７１のレジスタＲｎにも所定の周波数を示す情報が記憶されている。例えば、クロック生成部５に設定可能な周辺クロックＰＣＬＫの周波数のうち、周辺Ｉ／Ｏ３１の動作仕様外の周波数を示す情報（以後「禁止クロック情報ＦＩ１Ｂ」と呼ぶ）がレジスタＲｎに記憶されている。そして、クロック供給制御部７ｂのメモリ７１に記憶されている禁止クロック情報ＦＩ１Ｂ全体で情報テーブルを構成している。以後、この情報テーブルを「禁止テーブルＴ１Ｂ」と呼ぶ。
【００７３】
このように、本実施の形態３に係るメモリ７１には、周辺Ｉ／Ｏに入力すべきでない周辺クロックＰＣＬＫの周波数を示す情報が記憶されている。
【００７４】
本実施の形態３では、クロック選択回路５０に設定可能な逓倍比と分周比との組み合わせのうち、周辺クロックＰＣＬＫの周波数が周辺Ｉ／Ｏ３０，３１の動作仕様外の値となるような組み合わせが、禁止クロック情報ＦＩ１Ａ，ＦＩ１Ｂとしてそれぞれ採用されている。
【００７５】
例えば、システムクロックＳＣＬＫが１０ＭＨｚ、周辺Ｉ／Ｏ３０が最大１０ＭＨｚで動作することが可能な場合、逓倍比“４”と分周比“１”との組み合わせと、逓倍比“４”と分周比“１／２”との組み合わせと、逓倍比“２”と分周比“１”との組み合わせとが、レジスタＲ１〜Ｒ３にそれぞれ記憶されており、禁止テーブルＴ１Ａにこれらの組み合わせが含まれている。また例えば、システムクロックＳＣＬＫが１０ＭＨｚであって、周辺Ｉ／Ｏ３１が最大２０ＭＨｚで動作することが可能な場合、逓倍比“４”と分周比“１”との組み合わせがレジスタＲ１に記憶されており、この組み合わせが禁止テーブルＴ１Ｂに含まれている。
【００７６】
比較器７０は、図６に示されるように、ｎ個の比較回路ＣＭ１〜ＣＭｎと、ＯＲ回路ＯＲとを備えている。比較回路ＣＭ１〜ＣＭｎは、レジスタＲ１〜Ｒｎにそれぞれ対応して設けられている。クロック供給制御部７ａにおける各比較回路ＣＭ１〜ＣＭｎは、それに対応するレジスタＲｎに記憶されている禁止クロック情報ＦＩ１Ａと、データＦＤＡＴＡ１とを比較して、一致すればＨｉｇｈレベルを出力し、不一致であればＬｏｗレベルを出力する。同様に、クロック供給制御部７ｂにおける各比較回路ＣＭ１〜ＣＭｎは、それに対応するレジスタＲｎに記憶されている禁止クロック情報ＦＩ１Ｂと、データＦＤＡＴＡ１とを比較して、一致すればＨｉｇｈレベルを出力し、不一致であればＬｏｗレベルを出力する。そして、ＯＲ回路ＯＲは、比較回路ＣＭ１〜ＣＭｎの出力の論理和を演算して、その演算結果を検出回路７３の出力としてＯＲ回路７２に出力する。
【００７７】
これにより、クロック供給制御部７ａのメモリ７１に記憶されている禁止テーブルＴ１Ａ内に、データＦＤＡＴＡ１の値が存在するときには、検出回路７３からＨｉｇｈレベルが出力され、存在しないときにはＬｏｗレベルが出力される。また、クロック供給制御部７ｂのメモリ７１に記憶されている禁止テーブルＴ１Ｂ内に、データＦＤＡＴＡ１の値が存在するときには、Ｈｉｇｈレベルが出力され、存在しないときにはＬｏｗレベルを出力される。
【００７８】
以上のように、検出回路７３の比較器７０では、メモリ７１に記憶されている所定の周波数を示す情報と、データＦＤＡＴＡ１とを比較している。ここで、上述のように、データＦＤＡＴＡ１には、逓倍比選択信号ＳＥＬＡと分周比選択信号ＳＥＬＢとが含まれているため、ＣＰＵ１が周辺クロックＰＣＬＫの周波数を変更する場合には、データＦＤＡＴＡ１は周辺クロックＰＣＬＫの変更先の周波数を示している。従って、メモリ７１に記憶されている情報と、データＦＤＡＴＡ１とを比較することによって、その情報が示す周波数、本実施の形態３では周辺Ｉ／Ｏの動作仕様外の周波数と、周辺クロックＰＣＬＫの変更先の周波数とが比較される。つまり、本実施の形態３に係る比較器７０は、メモリ７１が記憶する情報が示す周波数と、周辺クロックＰＣＬＫの変更先の周波数とを比較し、その比較結果を出力している。
【００７９】
このように、検出回路７３では、周辺クロックＰＣＬＫの変更先の周波数と、メモリ７１が記憶する情報が示す周波数とを比較することによって、その変更先の周波数が、当該情報が示す周波数と一致するかどうかを検出している。本実施の形態３に係る検出回路７３では、周辺クロックＰＣＬＫの変更先の周波数と、周辺Ｉ／Ｏの動作仕様外の周波数とが一致するか否かを検出している。そして、一致する場合にはＨｉｇｈレベルを、一致しない場合にはＬｏｗレベルをそれぞれ検出結果としてＯＲ回路７２に出力している。
【００８０】
クロック供給制御部７ａのＯＲ回路７２は、検出回路７３の出力と、クロック選択回路５０から出力される周辺クロックＰＣＬＫとの論理和を演算して周辺Ｉ／Ｏ３０に出力する。これにより、周辺Ｉ／Ｏ３０には、検出回路７３の出力がＨｉｇｈレベルのときには周辺クロックＰＣＬＫが供給されず、Ｌｏｗレベルのときには周辺クロックＰＣＬＫが供給される。このように、クロック供給制御部７ａは、検出回路７３から出力される検出結果に基づき、周辺クロックＰＣＬＫを周辺Ｉ／Ｏ３０へ供給するか否かを制御している。
【００８１】
同様にクロック供給制御部７ｂのＯＲ回路７２は、検出回路７３の出力と、クロック選択回路５０から出力される周辺クロックＰＣＬＫとの論理和を演算して周辺Ｉ／Ｏ３１に出力する。これにより、周辺Ｉ／Ｏ３１には、検出回路７３の出力がＨｉｇｈレベルのときには周辺クロックＰＣＬＫが供給されず、Ｌｏｗレベルのときには周辺クロックＰＣＬＫが供給される。このように、クロック供給制御部７ｂは、検出回路７３から出力される検出結果に基づき、周辺クロックＰＣＬＫを周辺Ｉ／Ｏ３１へ供給するか否かを制御している。なお、メモリ７１のレジスタＲｎへの値の書き込みは、マイクロプロセッサ３００の電源投入時又はリセット時の初期化の時にＣＰＵ１によって行われる。
【００８２】
また、クロック供給制御部７ａ，７ｂの検出回路７３の出力は、それぞれ比較結果信号ＣＲＡ，ＣＲＢとして割り込み発生部１４に入力される。割り込み発生部１４にはＩ／Ｏ選択信号ＰＳＥＬ０，ＰＳＥＬ１も入力されている。割り込み発生部１４は、比較結果信号ＣＲＡがＨｉｇｈレベルのときＩ／Ｏ選択信号ＰＳＥＬ０がＬｏｗレベルからＨｉｇｈレベルに遷移すると、割り込み要求信号ＩＲＥＱをＣＰＵ１に出力する。更に、割り込み発生部１４は、比較結果信号ＣＲＢがＨｉｇｈレベルのときＩ／Ｏ選択信号ＰＳＥＬ１がＬｏｗレベルからＨｉｇｈレベルに遷移すると、割り込み要求信号ＩＲＥＱをＣＰＵ１に出力する。その他の構成及び動作について実施の形態１に係るマイクロプロセッサ１００と同じであるためその説明は省略する。
【００８３】
以上のように、本実施の形態３に係るマイクロプロセッサ３００では、クロック生成部５における周辺クロックＰＣＬＫの変更先の周波数が、メモリ７１に記憶されている情報が示す周波数と一致すると、周辺Ｉ／Ｏ３０，３１には周辺クロックＰＣＬＫが供給されない。従って、周辺Ｉ／Ｏ３０，３１に入力すべきでない周辺クロックＰＣＬＫが有する不当な周波数を示す情報を、メモリ７１に記憶させることによって、ＣＰＵ１の実行プログラムの不具合等で、周辺クロックＰＣＬＫが不当な周波数に設定された場合には、周辺クロックＰＣＬＫの周辺Ｉ／Ｏ３０，３１への供給が停止する。
【００８４】
例えば、本実施の形態３のように、メモリ７１に、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示す情報を記憶させることによって、周辺クロックＰＣＬＫの周波数が周辺Ｉ／Ｏ３０，３１の動作仕様外に設定された場合には、周辺クロックＰＣＬＫの変更先の周波数が周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数であることが検出回路７３で検出され、その検出結果に基づき、周辺Ｉ／Ｏ３０，３１への周辺クロックＰＣＬＫの入力が停止される。
【００８５】
また、ＣＰＵ１で高速処理を実行させるためにＣＰＵ１に入力されるＣＰＵクロックＣＣＬＫの周波数を大きくする場合に、周辺クロックＰＣＬＫの周波数も変更されて周辺Ｉ／Ｏ３０，３１の動作仕様外に設定された場合であっても、周辺Ｉ／Ｏ３０，３１にはそのような周辺クロックＰＣＬＫは入力されない。
【００８６】
以上のように、本実施の形態３に係るマイクロプロセッサ３００では、周辺Ｉ／Ｏ３０，３１に、不当な周波数を有する周辺クロックＰＣＬＫが入力されることを防止できるため、周辺Ｉ／Ｏ３０，３１の誤動作を低減することができ、その結果、マイクロプロセッサ３００の誤動作を低減できる。
【００８７】
また、本実施の形態３に係る割り込み発生部１４は、比較結果信号ＣＲＡがＨｉｇｈレベルのときにＩ／Ｏ選択信号ＰＳＥＬ０が立ち上がると、ＣＰＵ１に割り込み要求信号ＩＲＥＱを出力している。比較結果信号ＣＲＡのＨｉｇｈレベルは、周辺Ｉ／Ｏ３０に周辺クロックＰＣＬＫが供給されていない状態を示しており、Ｉ／Ｏ選択信号ＰＳＥＬ０の立ち上がりは、ＣＰＵ１から周辺Ｉ／Ｏ３０へアクセス要求があったことを示している。従って、割り込み発生部１４は、クロック供給制御部７ａが周辺Ｉ／Ｏ３０へ周辺クロックＰＣＬＫを供給していない場合に、ＣＰＵ１が周辺Ｉ／Ｏ３０にアクセスすると、ＣＰＵ１へ割り込み要求を通知している。同様にして、割り込み発生部１４は、クロック供給制御部７ｂが周辺Ｉ／Ｏ３１へ周辺クロックＰＣＬＫを供給していない場合に、ＣＰＵ１が周辺Ｉ／Ｏ３１にアクセスすると、ＣＰＵ１へ割り込み要求を通知している。
【００８８】
このように本実施の形態３では、ＣＰＵ１の実行プログラムの不具合等により、周辺クロックＰＣＬＫが供給されていない周辺Ｉ／Ｏ３０，３１にＣＰＵ１がアクセスした場合には、割り込み発生部１４から割り込み要求がＣＰＵ１に通知されるため、ＣＰＵ１は周辺Ｉ／Ｏ３０，３１に周辺クロックＰＣＬＫが供給されていないことを認識することができる。そのため、周辺クロックＰＣＬＫが供給されていない周辺Ｉ／Ｏ３０，３１にＣＰＵ１が再度アクセスすることを防止することができる。
【００８９】
例えば、割り込み発生部１４から割り込み要求を受けたＣＰＵ１が、レジスタ５２に所定のデータを設定することによって周辺クロックＰＣＬＫの周波数を周辺Ｉ／Ｏ３０，３１の動作仕様内に変更し、その後に周辺Ｉ／Ｏ３０，３１にアクセスすることが可能になる。その結果、マイクロプロセッサ３００の誤動作を低減することができる。
【００９０】
また、ＣＰＵ１には割り込み発生部１４から割り込み要求が通知されるため、ＣＰＵ１の実行プログラムの開発段階において、当該実行プログラムのデバッグが行いやすくなる。その結果、周辺クロックＰＣＬＫが供給されていない状態の周辺Ｉ／Ｏ３０，３１にＣＰＵ１がアクセスするといった誤動作の発生を低減することができる。
【００９１】
また、本実施の形態３に係るメモリ７１は、記憶情報を書き換えることが可能であるため、マイクロプロセッサ３００の設計後あるいは製造後であっても、メモリ７１の内容を変更することによって、メモリ７１に記憶されている情報が示す所定の周波数を変更することができる。従って、マイクロプロセッサ３００の設計後あるいは製造後に、メモリ７１に設定された周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を変更することができる。
【００９２】
通常は、設計後あるいは製造後に周辺Ｉ／Ｏ３０，３１の動作を確認して、周辺Ｉ／Ｏ３０，３１の動作を保証できる周波数、すなわち動作仕様内の周波数が最終的に決定される。従って、メモリ７１に書き換え可能な記憶装置を採用することによって、最終決定後の周辺Ｉ／Ｏ３０，３１の動作仕様に基づて、動作仕様外の周波数を示す情報をメモリ７１に書き込むことができる。その結果、確実に周辺Ｉ／Ｏ３０，３１の誤動作を低減できる。
【００９３】
実施の形態４．
図７は本発明の実施の形態４に係るマイクロプロセッサ４００の構成を示すブロック図である。本実施の形態４に係るマイクロプロセッサ４００は、上述の実施の形態１に係るマイクロプロセッサ１００において、構成としては、割り込み発生部４の替わりに割り込み発生部２４を備え、アクセス制御部８を更に備えるものである。
【００９４】
アクセス制御部８は、検出回路８０ａ，８０ｂと、ＡＮＤ回路８１，８２とを備えており、ＣＰＵ１からの周辺Ｉ／Ｏ３０，３１へのアクセスを制御する。各検出回路８０ａ，８０ｂは、実施の形態３に係る検出回路７３と同様に、上述の比較器７０とメモリ７１とを備えている。検出回路８０ａのメモリ７１には、例えば禁止クロック情報ＦＩ１Ａが記憶されており、当該メモリ７１に記憶されている禁止クロック情報ＦＩ１Ａ全体で禁止テーブルＴ１Ａを構成している。また、検出回路８０ｂのメモリ７１には、例えば禁止クロック情報ＦＩ１Ｂが記憶されており、当該メモリ７１に記憶されている禁止クロック情報ＦＩ１Ｂ全体で禁止テーブルＴ１Ｂを構成している。
【００９５】
本実施の形態４では、実施の形態３と同様に、クロック選択回路５０に設定可能な逓倍比と分周比との組み合わせのうち、周辺クロックＰＣＬＫの周波数が周辺Ｉ／Ｏ３０，３１の動作仕様外の値となる組み合わせが、禁止クロック情報ＦＩ１Ａ，ＦＩ１Ｂとしてそれぞれ採用されている。
【００９６】
検出回路８０ａの比較器７０から出力される比較結果信号ＣＲＡは、ＡＮＤ回路８１と割り込み発生部２４に入力されている。ＡＮＤ回路８１は、比較結果信号ＣＲＡの反転信号と、Ｉ／Ｏ選択信号ＰＳＥＬ０との論理積を演算して周辺Ｉ／Ｏ３０に出力する。その結果、周辺Ｉ／Ｏ３０には、検出回路８０ａの出力がＨｉｇｈレベルのときには、Ｉ／Ｏ選択信号ＰＳＥＬ０が入力されず、Ｌｏｗレベルのときに入力される。ここで、上述のように、Ｉ／Ｏ選択信号ＰＳＥＬ０がＨｉｇｈレベルになることによって、ＣＰＵ１からのアクセス要求が周辺Ｉ／Ｏ３０に通知される。従って、アクセス制御部８が、比較器７０の出力に基づいてＩ／Ｏ選択信号ＰＳＥＬ０の周辺Ｉ／Ｏ３０への入力を制御することによって、ＣＰＵ１からの周辺Ｉ／Ｏ３０へのアクセスを許可するか否かの制御が行われる。つまり、アクセス制御部８は、検出回路８０ａから出力される検出結果に基づき、ＣＰＵ１からの周辺Ｉ／Ｏ３０へのアクセスを許可するか否かの制御を行っている。
【００９７】
検出回路８０ｂの比較器７０から出力される比較結果信号ＣＲＢは、ＡＮＤ回路８２と割り込み発生部２４に入力されている。ＡＮＤ回路８２は、比較結果信号ＣＲＢの反転信号と、Ｉ／Ｏ選択信号ＰＳＥＬ１との論理積を演算して周辺Ｉ／Ｏ３１に出力する。その結果、周辺Ｉ／Ｏ３１には、検出回路８０ｂの出力がＨｉｇｈレベルのときには、Ｉ／Ｏ選択信号ＰＳＥＬ１が入力されず、Ｌｏｗレベルのときに入力される。ここで、上述のように、Ｉ／Ｏ選択信号ＰＳＥＬ１がＨｉｇｈレベルになることによって、ＣＰＵ１からのアクセス要求が周辺Ｉ／Ｏ３１に通知される。従って、アクセス制御部８が、比較器７０の出力に基づいてＩ／Ｏ選択信号ＰＳＥＬ１の周辺Ｉ／Ｏ３１への入力を制御することによって、ＣＰＵ１からの周辺Ｉ／Ｏ３１へのアクセスを許可するか否かの制御が行われる。つまり、アクセス制御部８は、検出回路８０ｂから出力される検出結果に基づき、ＣＰＵ１からの周辺Ｉ／Ｏ３１へのアクセスを許可するか否かの制御を行っている。
【００９８】
割り込み発生部２４にはＩ／Ｏ選択信号ＰＳＥＬ０，ＰＳＥＬ１も入力されている。割り込み発生部２４は、比較結果信号ＣＲＡがＨｉｇｈレベルのときにＩ／Ｏ選択信号ＰＳＥＬ０がＬｏｗレベルからＨｉｇｈレベルに遷移すると、割り込み要求信号ＩＲＥＱをＣＰＵ１に出力する。更に、割り込み発生部２４は、比較結果信号ＣＲＢがＨｉｇｈレベルのときにＩ／Ｏ選択信号ＰＳＥＬ１がＬｏｗレベルからＨｉｇｈレベルに遷移すると、割り込み要求信号ＩＲＥＱをＣＰＵ１に出力する。その他の構成及び動作について実施の形態１に係るマイクロプロセッサ１００と同じであるためその説明は省略する。
【００９９】
このように本実施の形態４に係るマイクロプロセッサ４００では、検出回路８０ａ，８０ｂの出力がＨｉｇｈレベルのときには、ＣＰＵ１からの周辺Ｉ／Ｏ３０，３１へのアクセスがそれぞれ禁止される。実施の形態３の内容からも理解できるように、検出回路８０ａ，８０ｂは、クロック生成部５における周辺クロックＰＣＬＫの変更先の周波数が、メモリ７１に記憶されている情報のいずれかが示す周波数に一致するとＨｉｇｈレベルを出力する。従って、アクセス制御部８の働きによって、周辺クロックＰＣＬＫの変更先の周波数が、メモリ７１に記憶されている情報が示す周波数と一致するときには、ＣＰＵ１からの周辺Ｉ／Ｏ３０，３１へのアクセスが禁止される。
【０１００】
その結果、例えばメモリ７１に、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示す情報を記憶させることによって、ＣＰＵ１の実行プログラムの不具合等により、動作仕様外の周辺クロックＰＣＬＫが入力された状態でＣＰＵ１が周辺Ｉ／Ｏ３０，３１にアクセスしようとしたとしても、実際にアクセスされることを防止することができる。その結果、動作仕様外の周辺クロックＰＣＬＫが入力されている周辺Ｉ／Ｏ３０，３１を動作させることがないため、マイクロプロセッサ４００の誤動作を低減できる。
【０１０１】
また、本実施の形態４に係る割り込み発生部２４は、比較結果信号ＣＲＡがＨｉｇｈレベルのときにＩ／Ｏ選択信号ＰＳＥＬ０が立ち上がると、ＣＰＵ１に割り込み要求信号ＩＲＥＱを出力している。本実施の形態４では、比較結果信号ＣＲＡのＨｉｇｈレベルは、周辺Ｉ／Ｏ３０に動作仕様外の周波数を有する周辺クロックＰＣＬＫが入力されていることを示しており、Ｉ／Ｏ選択信号ＰＳＥＬ０の立ち上がりは、ＣＰＵ１が周辺Ｉ／Ｏ３０へアクセスしようとしたことを示している。従って、割り込み発生部２４は、アクセス制御部８がＣＰＵ１からの周辺Ｉ／Ｏ３０へアクセスを禁止している場合に、ＣＰＵ１が周辺Ｉ／Ｏ３０にアクセスしようとすると、ＣＰＵ１へ割り込み要求を通知している。同様にして、割り込み発生部２４は、アクセス制御部８がＣＰＵ１からの周辺Ｉ／Ｏ３１へのアクセスを禁止している場合に、ＣＰＵ１が周辺Ｉ／Ｏ３１にアクセスしようとすると、ＣＰＵ１へ割り込み要求を通知している。
【０１０２】
このように、アクセス制御部８がＣＰＵ１による周辺Ｉ／Ｏ３０，３１へのアクセスを禁止している場合に、ＣＰＵ１が周辺Ｉ／Ｏ３０，３１にアクセスしようとすると、ＣＰＵ１には割り込み要求が通知されるため、ＣＰＵ１は周辺Ｉ／Ｏ３０，３１に不当な周波数を有する周辺クロックＰＣＬＫが供給されていることを認識することができる。そのため、例えば動作仕様外の周辺クロックＰＣＬＫが供給されている周辺Ｉ／Ｏ３０，３１に、ＣＰＵ１が再度アクセスしようとすることを防止することができる。その結果、マイクロプロセッサ４００の誤動作を低減することができる。
【０１０３】
また、ＣＰＵ１には割り込み発生部２４から割り込み要求が通知されるため、ＣＰＵ１の実行プログラムの開発段階において、当該実行プログラムのデバッグが行いやすくなる。その結果、不当な周波数を有する周辺クロックＰＣＬＫが供給されている状態の周辺Ｉ／Ｏ３０，３１にＣＰＵ１がアクセスするといった誤動作の発生を低減することができる。
【０１０４】
また、検出回路８０ａ，８０ｂのメモリ７１は、記憶情報を書き換えることが可能であるため、マイクロプロセッサ４００の設計後あるいは製造後であっても、メモリ７１の内容を変更することによって、メモリ７１に記憶されている情報が示す所定の周波数を変更することができる。従って、マイクロプロセッサ４００の設計後あるいは製造後に、メモリ７１に設定された、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を変更することができる。その結果、設計後や製造後に最終決定された周辺Ｉ／Ｏ３０，３１の動作仕様に基づいて、動作仕様外の周波数を示す情報をメモリ７１に書き込むことができ、それにより確実に周辺Ｉ／Ｏ３０，３１の誤動作を低減できる。
【０１０５】
実施の形態５．
図８は本発明の実施の形態５に係るマイクロプロセッサ５００の構成を示すブロック図である。本実施の形態５に係るマイクロプロセッサ５００は、上述の実施の形態１に係るマイクロプロセッサ１００において、構成としては、割り込み発生部４の替わりに割り込み発生部３４を備え、クロック変更制御部９を更に備えるものである。
【０１０６】
クロック変更制御部９は、検出回路９０と、レジスタ９２と、ＯＲ回路９３と、ＡＮＤ回路９４，９５とを備えている。上述のように、ＣＰＵ１は周辺クロックＰＣＬＫの周波数に対する変更要求ＣＲをクロック生成部５に出力する。クロック変更制御部９は、クロック生成部５への変更要求ＣＲの通知を許可するか否かの制御を行う。以後、この制御を「通知許可制御ＣＮＴ」と呼ぶ。
【０１０７】
検出回路９０は、実施の形態３に係る検出回路７３と同様に、比較器７０とメモリ７１とを備えており、本実施の形態４に係るメモリ７１には、所定の周波数を示す情報が記憶されている。例えば、メモリ７１の各レジスタＲ１〜Ｒｎには、クロック生成部５に設定可能な周辺クロックＰＣＬＫの周波数のうち、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示す情報（以後「禁止クロック情報ＦＩ２」と呼ぶ）が記憶されている。そして、メモリ７１に記憶されている禁止クロック情報ＦＩ２全体で情報テーブルを構成している。以後、この情報テーブルを「禁止テーブルＴ２」と呼ぶ。なお、本実施の形態５では、周辺クロックＰＣＬＫに対する周辺Ｉ／Ｏ３０，３１の動作仕様の最大値は互いに同じである。
【０１０８】
本実施の形態５では、クロック選択回路５０に設定可能な逓倍比と分周比との組み合わせのうち、周辺クロックＰＣＬＫが周辺Ｉ／Ｏ３０，３１の動作仕様外となるような組み合わせが、禁止クロック情報ＦＩ２として採用されている。例えば、システムクロックＳＣＬＫが１０ＭＨｚであって、周辺Ｉ／Ｏ３０，３１がともに最大１０ＭＨｚで動作することが可能な場合、逓倍比“４”と分周比“１”との組み合わせと、逓倍比“４”と分周比“１／２”との組み合わせと、逓倍比“２”と分周比“１”との組み合わせとが、レジスタＲ１〜Ｒ３にそれぞれ記憶されており、これらの組み合わせが禁止テーブルＴ２に含まれている。
【０１０９】
このように、本実施の形態５に係るメモリ７１には、周辺Ｉ／Ｏ３０，３１の両方に入力すべきでない周辺クロックＰＣＬＫの周波数を示す情報が記憶されている。
【０１１０】
上述の実施の形態３に係る比較器７０には、データＦＤＡＴＡ１が入力されていたが、本実施の形態５に係る比較器７０には、周辺クロックＰＣＬＫの周波数を変更する際にＣＰＵ１から出力される変更データＶＤがその代わりに入力される。具体的には、図６に示される比較器７０のブロック図において、比較回路ＣＭ１〜ＣＭｎのそれぞれにＣＰＵ１から出力される変更データＶＤがデータＦＤＡＴＡ１の代わりに入力される。従って、本実施の形態５に係る比較器７０では、メモリ７１に記憶されている情報と変更データＶＤとが比較され、変更データがＶＤが、メモリ７１に記憶されている情報のいずれかに一致すれば、ＯＲ回路ＯＲからＨｉｇｈレベルが出力され、一致しないときにはＬｏｗレベルが出力される。
【０１１１】
本実施の形態５では、メモリ７１に記憶する情報として、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示す情報が採用されているため、本実施の形態５に係る比較器７０では、メモリ７１に記憶されている禁止テーブルＴ２の内容と、周辺クロックＰＣＬＫの周波数を変更する際にＣＰＵ１から出力される変更データＶＤとが比較され、変更データＶＤに含まれている分周比と逓倍比との組み合わせが、禁止テーブルＴ２内に存在するときには、Ｈｉｇｈレベルが出力され、存在しないときにはＬｏｗレベルが出力される。
【０１１２】
以上のように、検出回路９０の比較器７０は、メモリ７１に記憶されている所定の周波数を示す情報と、変更データＶＤとを比較している。ここで、上述のように、変更データＶＤには、周辺クロックＰＣＬＫの変更先の周波数を示す変更先情報ＶＩが含まれている。従って、メモリ７１に記憶されている情報と、変更データＶＤとを比較することによって、メモリ７１内の情報が示す周波数、本実施の形態５では周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数と、周辺クロックＰＣＬＫの変更先の周波数とが比較される。つまり、本実施の形態５に係る比較器７０は、メモリ７１が記憶する情報が示す周波数と、周辺クロックＰＣＬＫの変更先の周波数とを比較し、その比較結果を出力している。
【０１１３】
このように、検出回路９０では、周辺クロックＰＣＬＫの変更先の周波数と、メモリ７１が記憶する情報が示す周波数とを比較することによって、その変更先の周波数が、メモリ７１内の情報が示す周波数と一致するかどうかを検出している。本実施の形態５に係る検出回路９０では、周辺クロックＰＣＬＫの変更先の周波数と、周辺Ｉ／Ｏの動作仕様外の周波数とが一致するか否かを検出している。そして、一致する場合にはＨｉｇｈレベルを、一致しない場合にはＬｏｗレベルをそれぞれ検出結果としてＯＲ回路９３に出力している。
【０１１４】
ＯＲ回路９３は、検出回路９０の出力と、周辺Ｉ／Ｏ部３から出力されるＩ／Ｏ実行信号ＥＸとの論理和を演算して出力する。ここでＩ／Ｏ実行信号ＥＸは、周辺Ｉ／Ｏ３０，３１の少なくとも一方が動作中の場合にはＨｉｇｈレベルを示し、両方が動作していない場合にはＬｏｗレベルを示す。例えば、周辺Ｉ／Ｏ３０，３１がそれぞれタイマ及びシリアルＩ／Ｏポートである場合、周辺Ｉ／Ｏ３０がタイマ動作を行って時間計測を実行しているとき、あるいは周辺Ｉ／Ｏ３１が外部機器とシリアル通信を行っているときにはＩ／Ｏ実行信号ＥＸはＨｉｇｈレベルを示す。
【０１１５】
レジスタ９２には通知許可制御ＣＮＴの実行／不実行を示す情報が書き込まれる。本実施の形態５では、通知許可制御ＣＮＴの実行を示す情報として“１”がレジスタ５２に書き込まれ、不実行を示す情報として“０”がレジスタ５２に書き込まれる。そして、レジスタ９２は、記憶する値をＡＮＤ回路９４に出力する。なお、レジスタ９２への値の書き込みは、例えばＣＰＵ１が行う。
【０１１６】
ＡＮＤ回路９４は、レジスタ９２の出力と、ＡＮＤ回路９３の出力との論理積を演算して出力する。ＡＮＤ回路９５は、ＡＮＤ回路９３の出力の反転信号と、ＣＰＵ１から出力される書き込み有効信号ＷＥＮとの論理積を演算してレジスタ５２に出力する。これにより、レジスタ５２には、ＡＮＤ回路９４の出力がＬｏｗレベルのときには書き込み有効信号ＷＥＮが入力され、Ｈｉｇｈレベルのときには入力されない。
【０１１７】
割り込み発生部３４には、ＡＮＤ回路９４の出力と、書き込み有効信号ＷＥＮとが入力される。割り込み発生部３４は、ＡＮＤ回路９４の出力がＨｉｇｈレベルのときに書き込み有効信号ＷＥＮが入力されるとＣＰＵ１に割り込み要求信号ＩＲＥＱを出力する。
【０１１８】
なお、本実施の形態５に係るＣＰＵ１は、実施の形態１〜４に係るＣＰＵ１と異なり、周辺クロックＰＣＬＫの周波数を変更する際、変更データＶＤの出力後、ＡＮＤ回路９４の出力が確定してから、書き込み有効信号ＷＥＮを出力する。その他の構成及び動作について実施の形態１に係るマイクロプロセッサ１００と同じであるためその説明は省略する。
【０１１９】
次に、クロック変更制御部９の動作について詳細に説明する。まず、検出回路９０の出力がＬｏｗレベルの場合のクロック変更制御部９の動作について説明する。
【０１２０】
レジスタ９２に“１”が書き込まれている場合、つまり、レジスタ９２に書き込まれている情報が通知許可制御ＣＮＴの実行を示す場合、周辺Ｉ／Ｏ３０，３１の少なくとも一方が動作中のときには、クロック変更制御部９ではＡＮＤ回路９４の出力がＨｉｇｈレベルとなる。そのため、ＡＮＤ回路９５の出力がＬｏｗレベルに固定され、クロック生成部５へのＣＰＵ１による変更要求ＣＲの通知が許可されない。そして、周辺Ｉ／Ｏ３０，３１の両方ともが動作していないときには、ＡＮＤ回路９４の出力がＬｏｗレベルとなり、ＣＰＵ１から出力される変更要求ＣＲのクロック生成部５への通知が許可される。
【０１２１】
また、レジスタ９２に“０”が書き込まれている場合、つまり、レジスタ９２に書き込まれている情報が通知許可制御ＣＮＴの不実行を示す場合、周辺Ｉ／Ｏ３０，３１の動作に関わらず、クロック変更制御部９ではＡＮＤ回路９４の出力が常にＬｏｗとなり、クロック生成部５への変更要求ＣＲの通知が常に許可される。
【０１２２】
このようにして、レジスタ９２に“１”が設定されている場合には、クロック変更制御部９は、周辺Ｉ／Ｏ３０，３１が動作中であるか否かに基づく通知許可制御ＣＮＴを実行し、レジスタ９２に“０”が設定されている場合にはかかる通知許可制御ＣＮＴを実行しない。
【０１２３】
ここでＣＰＵ１は、上述のように、周辺クロックＰＣＬＫの周波数を変更する際、変更データＶＤの出力後、ＡＮＤ回路９４の出力が確定してから、書き込み有効信号ＷＥＮを出力する。従って、クロック変更制御部９が通知許可制御ＣＮＴを実行する際には、ＣＰＵ１の実行プログラムの不具合等により、周辺Ｉ／Ｏ３０，３１の動作中にＣＰＵ１が周辺クロックＰＣＬＫの周波数を変更しようとしたとしても、変更要求ＣＲはクロック生成部５には通知されない。そのため、周辺Ｉ／Ｏ３０，３１の動作中に周辺クロックＰＣＬＫの周波数が変更されることがない。従って、周辺Ｉ／Ｏ３０，３１の誤動作を低減でき、マイクロプロセッサ５００の誤動作を低減できる。
【０１２４】
次に、Ｉ／Ｏ実行信号ＥＸがＬｏｗレベルの場合のクロック変更制御部９の動作について説明する。
【０１２５】
レジスタ９２に“１”が書き込まれている場合、変更データＶＤが検出回路９０のメモリ７１に記憶されている情報のいずれかに一致するときには、クロック変更制御部９ではＡＮＤ回路９４の出力がＨｉｇｈレベルとなる。本実施の形態５では、メモリ７１には周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示す情報が記憶されているため、変更データＶＤに含まれる変更先情報ＶＩが周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示すときにはＡＮＤ回路９４の出力がＨｉｇｈレベルとなる。そのため、ＡＮＤ回路９５の出力がＬｏｗレベルに固定され、クロック生成部５へのＣＰＵ１による変更要求ＣＲの通知が許可されない。
【０１２６】
そして、変更データＶＤが検出回路９０のメモリ７１に記憶されている情報のいずれにも一致しないときには、ＡＮＤ回路９４の出力がＬｏｗレベルとなる。本実施の形態５では、変更データＶＤに含まれる変更先情報ＶＩが周辺Ｉ／Ｏ３０，３１の動作仕様内の周波数を示すときにはＡＮＤ回路９４の出力がＬｏｗレベルとなる。従って、ＣＰＵ１から出力される変更要求ＣＲのクロック生成部５への通知が許可される。
【０１２７】
このように、本実施の形態５に係るクロック変更制御部９は、検出回路９０の検出結果に基づき、クロック生成部５への変更要求ＣＲの通知を許可するか否かを制御している。
【０１２８】
また、レジスタ９２に“０”が書き込まれている場合、変更データＶＤに含まれる変更先情報ＶＩの内容に関わらず、クロック変更制御部９ではＡＮＤ回路９４の出力が常にＬｏｗレベルとなる。そのため、クロック生成部５への変更要求ＣＲの通知が常に許可される。
【０１２９】
このようにして、レジスタ９２に“１”が設定されている場合には、クロック変更制御部９は、変更先情報ＶＩが周辺Ｉ／Ｏ３０，３１の動作仕様外を示すか否かに基づく通知許可制御ＣＮＴを実行し、レジスタ９２に“０”が設定されている場合にはかかる通知許可制御ＣＮＴを実行しない。
【０１３０】
以上のように、本実施の形態５に係るマイクロプロセッサ５００では、クロック変更制御部９が通知許可制御ＣＮＴを実行するときであって、変更先情報ＶＩが示す周波数がメモリ７１に記憶されている情報が示す周波数と一致するときには、クロック生成部５へ変更要求ＣＲが通知されない。ここで、上述のように、本実施の形態５に係るＣＰＵ１は、周辺クロックＰＣＬＫの周波数を変更する際、変更データＶＤの出力後、ＡＮＤ回路９４の出力が確定してから、書き込み有効信号ＷＥＮを出力する。従って、例えばメモリ７１に、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を示す情報を記憶させることによって、ＣＰＵ１の実行プログラムの不具合等により、ＣＰＵ１が周辺クロックＰＣＬＫの周波数を周辺Ｉ／Ｏ３０，３１の動作仕様外に設定しようとしたとしても、変更要求ＣＲはクロック生成部５には通知されない。そのため、周辺クロックＰＣＬＫの周波数が不当な周波数に変更されることがない。その結果、周辺Ｉ／Ｏ３０，３１の誤動作を低減でき、マイクロプロセッサ５００の誤動作を低減できる。
【０１３１】
また、本実施の形態５に係る割り込み発生部３４は、クロック変更制御部９がクロック生成部５への変更要求ＣＲの通知を許可していない状況下で、ＣＰＵ１から当該変更要求ＣＲが出力されたときには、ＣＰＵ１に対して割り込み要求を通知する。従って、ＣＰＵ１の実行プログラムの開発段階において、当該実行プログラムのデバッグが行いやすくなる。その結果、ＣＰＵ１が周辺クロックＰＣＬＫを周辺Ｉ／Ｏ３０，３１の動作仕様外に変更しようとするといった不要な動作の発生や、周辺Ｉ／Ｏ３０，３１の動作中にＣＰＵ１が周辺クロックＰＣＬＫの周波数を変更しようとするといった不要な動作の発生を低減することができる。
【０１３２】
また、本実施の形態５に係るクロック変更制御部９は、通知許可制御ＣＮＴの実行／不実行を示す情報を書き込むことが可能なレジスタ９２を備えているため、通知許可制御ＣＮＴを実行するか否かの選択を行うことができる。
【０１３３】
なお本実施の形態５では、ＣＰＵ１は変更データＶＤを出力した後に書き込み有効信号ＷＥＮを出力していたが、実施の形態１〜４に係るＣＰＵと同様に、変更データＶＤと書き込み有効信号ＷＥＮとを同時に出力しても良い。この場合には、変更データＶＤの出力からＡＮＤ回路９４の出力が確定するまで、ＡＮＤ回路９５及び割り込み発生部３４への書き込み有効信号ＷＥＮの入力を遅延する遅延回路を設けることによって、クロック生成部５への変更要求ＣＲの通知を制御することが可能となる。
【０１３４】
また、検出回路９０のメモリ７１は、記憶情報を書き換えることが可能であるため、マイクロプロセッサ５００の設計後あるいは製造後であっても、メモリ７１の内容を変更することによって、メモリ７１に記憶されている情報が示す所定の周波数を変更することができる。従って、マイクロプロセッサ５００の設計後あるいは製造後に、例えば、メモリ７１に設定された、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を変更することができる。その結果、設計後や製造後に最終決定された周辺Ｉ／Ｏ３０，３１の動作仕様に基づいて、動作仕様外の周波数を示す情報をメモリ７１に書き込むことができ、それにより確実に周辺Ｉ／Ｏ３０，３１の誤動作を低減できる。
【０１３５】
なお、本明細書の実施の形態３〜５では、メモリ７１を複数のレジスタＲ１〜Ｒｎで構成したが、１個のレジスタＲ１で構成しても良い。この場合には、比較器７０内の比較回路は１個の比較回路ＣＭ１でよく、ＯＲ回路ＯＲが不要となる。そして、比較回路ＣＭ１の出力が検出回路７３の出力として出力される。
【０１３６】
また、メモリ７１を構成するレジスタＲ１〜Ｒｎの一部のレジスタを、周辺Ｉ／Ｏ３０，３１の動作仕様外の周波数を保持するために使用し、他のレジスタを使用しないときには、後段の比較回路ＣＭ１〜ＣＭｎのうち、当該他のレジスタに対応する比較回路が常にＬｏｗレベルを出力するような工夫を行う。
【０１３７】
例えば、各レジスタＲ１〜Ｒｎの最上位ビット（ＭＳＢ）に有効ビットを設けて、使用するレジスタＲｎの有効ビットを有効に設定し、未使用のレジスタＲｎの有効ビットを無効に設定する。そして、レジスタＲｎの有効ビットを利用して、当該未使用のレジスタＲｎに対応する後段の比較回路が常にＬｏｗレベルを出力するように検出回路を構成しておく。これにより、レジスタＲ１〜Ｒｎの一部を使用する場合でも、図６に示される基本構成を利用することができる。
【０１３８】
また実施の形態３〜５では、メモリ７１をレジスタで構成していたが、ＲＡＭまたは書き込み可能なＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）で構成しても良い。なおＰＲＯＭには、再書き換え不可能なＰＲＯＭ、例えばフューズＲＯＭ、あるいは再書き換え可能なＰＲＯＭ、例えばＥＥＰＲＯＭなどのどちらのＲＯＭを採用しても良い。
【０１３９】
また回路設計の段階で、周辺Ｉ／Ｏ３０，３１の動作仕様外・仕様内の周波数を決定することができるのであれば、比較回路ＣＭ１〜ＣＭｎにおいて、データＦＤＡＴＡ１あるいは変更データＶＤと比較される対象の値は固定値にしても良い。例えば、レジスタＲｎの出力を比較回路ＣＭ１〜ＣＭｎに入力する代わりに、電源線やグランド線の配線から得られるＨｉｇｈレベルとＬｏｗレベルの組み合わせから成るデジタル値を各比較回路ＣＭ１〜ＣＭｎに入力しても良い。
【図面の簡単な説明】
【０１４０】
【図１】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図３】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図４】本発明の実施の形態２に係るマイクロプロセッサの構成を示すブロック図である。
【図５】本発明の実施の形態３に係るマイクロプロセッサの構成を示すブロック図である。
【図６】本発明の実施の形態３に係るマイクロプロセッサの構成を示すブロック図である。
【図７】本発明の実施の形態４に係るマイクロプロセッサの構成を示すブロック図である。
【図８】本発明の実施の形態４に係るマイクロプロセッサの構成を示すブロック図である。
【符号の説明】
【０１４１】
１  ＣＰＵ、４，１４，２４，３４  割り込み発生部、５  クロック生成部、６  クロック変更完了判定部、７ａ，７ｂ  クロック供給制御部、８  アクセス制御部、９  クロック変更制御部、３０，３１  周辺Ｉ／Ｏ、７０  比較器、７１  メモリ、７３，８０ａ，８０ｂ，９０  検出回路、９２  レジスタ。
【図１】
2005071203.tif 000003
【図２】
2005071203.tif 000004
【図３】
2005071203.tif 000005
【図４】
2005071203.tif 000006
【図５】
2005071203.tif 000007
【図６】
2005071203.tif 000008
【図７】
2005071203.tif 000009
【図８】
2005071203.tif 000010