(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-08
(45)【発行日】2022-11-16
(54)【発明の名称】半導体集積回路、及び、同半導体集積回路を備えた装置
(51)【国際特許分類】
G06F 1/06 20060101AFI20221109BHJP
H03L 7/08 20060101ALI20221109BHJP
【FI】
G06F1/06 590
H03L7/08 210
(21)【出願番号】P 2018204235
(22)【出願日】2018-10-30
【審査請求日】2021-10-01
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】島村 光太郎
(72)【発明者】
【氏名】池田 尚弘
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開平06-177754(JP,A)
【文献】特開平06-140930(JP,A)
【文献】特開2011-071816(JP,A)
【文献】特開平05-158572(JP,A)
【文献】特開2008-234046(JP,A)
【文献】国際公開第2008/126239(WO,A1)
【文献】特許第5077067(JP,B2)
【文献】特開平11-143574(JP,A)
【文献】特開昭59-195726(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/04- 1/14
H03L 7/08
(57)【特許請求の範囲】
【請求項1】
クロック生成回路を有する半導体集積回路であって、
前記クロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、
前記クロック生成回路は、
複数の周波数の中から一の周波数に基づくクロック信号である第2のクロック信号を生成し、当該第2のクロック信号を出力する可変発振回路と、
外部から入力された第1のクロック信号と前記可変発振回路から入力された前記第2のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号である制御クロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号であり、
前記第1のクロック信号の周期と前記第2のクロック信号の周期との比を特定する第1の計測処理が実行されるクロック制御回路を更に有する
ことを特徴とする半導体集積回路。
【請求項2】
請求項
1に記載の半導体集積回路において、
前記第1の計測処理は、前記選択回路に前記第1のクロック信号を選択させることと、前記制御クロック信号の周期と前記第2のクロック信号の周期との比を特定することとを含む
ことを特徴とする半導体集積回路。
【請求項3】
請求項
1に記載の半導体集積回路において、
前記第1の計測処理において特定された比に基づく周波数は、制御処理での前記第2のクロック信号の周波数として前記可変発振回路に指定され、
前記可変発振回路は、前記指定された周波数を、前記第2のクロック信号の周波数として決定する
ことを特徴とする半導体集積回路。
【請求項4】
クロック生成回路を有する半導体集積回路であって、
前記クロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、
前記クロック生成回路は、
複数の周波数の中から一の周波数に基づくクロック信号である第2のクロック信号を生成し、当該第2のクロック信号を出力する可変発振回路と、
外部から入力された第1のクロック信号と前記可変発振回路から入力された前記第2のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号である制御クロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号であり、
一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部を有し、
前記プロセッサ部が、前記第2のクロック信号についてテスト処理を正しく行える周波数と前記テスト処理を正しく行えない周波数とを特定する第2の計測処理を行う
ことを特徴とする半導体集積回路。
【請求項5】
請求項
4に記載の半導体集積回路において、
前記第2の計測処理は、下記の(a)乃至(d)を含み、
(a)前記第2のクロック信号について選択可能な周波数のうち当該第2の計測処理において未決定の周波数を決定すること、
(b)(a)で決定された周波数の前記第2のクロック信号に基づくクロック信号で処理のテストを行うこと、
(c)前記テストの結果が正しいか否かの判断を行うこと、
(d)(c)の結果が肯定であれば、(a)を行うこと
前記テスト処理を正しく行えない周波数は、(c)の結果が否定のときの周波数であり、
前記テスト処理を正しく行える周波数は、結果が否定となった(c)の直前回の(c)の結果が肯定のときの周波数である
ことを特徴とする半導体集積回路。
【請求項6】
クロック生成回路を有する半導体集積回路であって、
前記クロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、
前記クロック生成回路は、
複数の周波数の中から一の周波数に基づくクロック信号である第2のクロック信号を生成し、当該第2のクロック信号を出力する可変発振回路と、
外部から入力された第1のクロック信号と前記可変発振回路から入力された前記第2のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号である制御クロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号であり、
前記第1のクロック信号の周期と前記第2のクロック信号の周期との比を特定する第1の計測処理、及び、前記第2のクロック信号について制御処理を正しく行える周波数と前記制御処理を正しく行えない周波数とを特定する第2の計測処理、のうちの少なくとも一つの計測処理は、前記クロック生成回路から出力され入力されたクロック信号に同期して動作する一つ以上の回路による制御処理が行われていない期間に行われる
ことを特徴とする半導体集積回路。
【請求項7】
クロック生成回路を有する半導体集積回路であって、
前記クロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、
前記クロック生成回路は、
複数の周波数の中から一の周波数に基づくクロック信号である第2のクロック信号を生成し、当該第2のクロック信号を出力する可変発振回路と、
外部から入力された第1のクロック信号と前記可変発振回路から入力された前記第2のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号である制御クロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号であり、
前記選択回路は、
前記制御クロック信号の周波数に高い精度が求められる制御処理を行う時刻には前記第1のクロック信号を選択し、
前記制御クロック信号の周波数を高い分解能で変更する必要がある前記制御処理を行う時刻には前記第2のクロック信号を選択する
ことを特徴とする半導体集積回路。
【請求項8】
クロック生成回路を有する半導体集積回路であって、
前記クロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、
前記クロック生成回路は、
複数の周波数の中から一の周波数に基づくクロック信号である第2のクロック信号を生成し、当該第2のクロック信号を出力する可変発振回路と、
外部から入力された第1のクロック信号と前記可変発振回路から入力された前記第2のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号である制御クロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号であり、
一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部を有し、
前記クロック生成回路からクロック信号を受け取る前記一つ又は複数の回路のいずれかが、前記プロセッサ部であり、
前記クロック生成回路を前記プロセッサ部が制御すること
を特徴とする半導体集積回路。
【請求項9】
請求項
6に記載の半導体集積回路において、
一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部を有し、
前記プロセッサ部が、前記一つ又は複数のコンピュータプログラムを実行することにより、前記制御処理が行われていない期間に前記少なくとも一つの計測処理を行う
ことを特徴とする半導体集積回路。
【請求項10】
請求項1乃至
9のうちのいずれか1項に記載の半導体集積回路と、
前記第1のクロック信号のソースであるクロックソースと
を有することを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、クロック生成回路、半導体集積回路、及び、同半導体集積回路を備えた装置に関する。
【背景技術】
【0002】
本技術分野の背景技術として、特許第5077067号公報(特許文献1)がある。この公報には、PLL回路を使用して入力クロックのN/M倍のクロックを生成することにより、内部回路の動作周波数を変更可能な半導体集積回路が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
通常、外部から入力されるクロック信号の周波数は高くなく、故に、PLLにより周波数が高くされる。
【0005】
しかし、一般に、PLLでは、生成したクロック信号の時間精度(周波数制度)を向上するためにNの値に制限がある。このため、内部回路の動作周波数の調整の分解能は、PLLの性能に依存する。
【0006】
本発明は、PLLの性能に依存しない高い分解能で内部回路の動作周波数を変更可能とすることを課題とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明は様々な実施形態をとり得るが、その一例であるクロック生成回路は「半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力するクロック生成回路において、複数の周波数の中から一の周波数に基づくクロック信号である第2のクロック信号を生成し、当該第2のクロック信号を出力する可変発振回路と、前記外部から入力された第1のクロック信号と前記可変発振回路から入力された前記第2のクロック信号とのいずれか一方を出力する選択回路とを有し、前記回路に対して出力されるクロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号である」ことを特徴とする。
【発明の効果】
【0008】
PLLの性能に依存しない高い分解能で内部回路の動作周波数を変更することが可能となる。
【0009】
上記した以外の課題、構成及び効果は、以下の説明により明らかにされる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施例に係る半導体集積回路の例を示す図である。
【
図2】
図1の半導体集積回路のPLLと分周回路の動作を示すタイミングチャートである。
【
図3】
図1の半導体集積回路のクロック制御回路の例を示す図である。
【
図4】
図3の第1の状態遷移回路とカウンタの動作を示すタイミングチャートである。
【
図5】
図3の第2の状態遷移回路の動作を示すタイミングチャートである。
【
図6】
図1の半導体集積回路を備えた制御装置の例を示す図である。
【
図7】
図6の制御装置で
図1の半導体集積回路の限界動作周波数を計測するフローの例を示す図である。
【
図8】
図6の制御装置で制御処理と計測処理を時分割で処理する第1の例を示す図である。
【
図9】
図6の制御装置で制御処理と計測処理を時分割で処理する第2の例を示す図である。
【発明を実施するための形態】
【0011】
以下、一実施例を図面を用いて説明する。
【0012】
図1は、本発明の一実施例に係る半導体集積回路の例である。
【0013】
本実施例の半導体集積回路100は、クロック生成回路(図では「CPG」)110、メモリ制御回路(図では「MC」と表記)112、CPU(Central Processing Unit)114、ウォッチドックタイマ(図では「WDT」)116、システムバス制御回路(図では「SBC」)118、及び、バス158を有する。バス158に、クロック生成回路110内のクロック制御回路(図では「CTL」)124、メモリ制御回路112、CPU114、ウォッチドックタイマ116及びシステムバス制御回路118が接続される。CPU114は、プロセッサ部(一つ以上のプロセッサ)の一例でよい。
【0014】
クロック生成回路110は、選択回路120(図では「MUX」と表記)、周波数を変更可能な発振回路である可変発振回路(図では「VFO」と表記)122、クロック制御回路124、PLL(Phase Locked Loop)126、分周回路128(図では「DIV」と表記)、及び、AND回路130を有する。
【0015】
選択回路120は、選択信号146に従い、クロック生成回路110の外部から入力されたクロック信号140(第1のクロック信号の一例)、又は、可変発振回路122から出力されたクロック信号142(第2のクロック信号の一例)のいずれか一方を選択し、選択された方のクロック信号148を出力する。具体的には、制御回路120は、クロック信号156(後述)の周波数に高い精度が求められる制御処理を行う時刻にはクロック信号140を選択する(例えば、当該時刻には、クロック信号140の選択を示す選択信号146が入力されるためにクロック信号140を選択する)。
【0016】
可変発振回路122は、複数の周波数の中から一の周波数を動的に決定し、当該決定された周波数のクロック信号を生成し、当該生成したクロック信号を出力する発振回路である。具体的には、可変発振回路122は、周波数コード144として指定され得る異なる複数の値にそれぞれ対応した異なる複数の周波数のうち周波数コード144として指定されている値に対応した周波数のクロック信号を生成し生成したクロック信号142を出力する。可変発振回路122の構成としては、既知の構成(例えば、特開昭59-113517号公報、或いは、特開平7-74623号公報に開示の構成)を採用することが可能である。
【0017】
なお、可変発振回路122においては、製造時のばらつきによる個体差や、動作温度や、電源電圧などの影響のより、周波数コード144として同じ値が指定されてもクロック信号142の周波数は必ずしも同じとはならないことがある。そこで、本実施例では、クロック信号142の周波数を測定する機能が半導体集積回路100(例えばクロック生成回路110)に設けられる。クロック信号142の周波数を測定する機能に関しては後述する。
【0018】
クロック制御回路124は、バス158を介して周波数コード書き込み指令(周波数コード144を書き込むことの指令)を受けると、当該受けた指令で指定されている値を示す周波数コード144を可変発振回路122に出力する。クロック制御回路124はまた、バス158を介して周波数測定指令(周波数を測定することの指令)を受けると、予め定められた時間内のクロック信号142の立ち上がりエッジの回数を測定し、測定された回数を内部(例えば、クロック制御回路124内の記憶領域)に記憶する。クロック制御回路124はまた、バス158を介して周波数測定状態読み出し指令(周波数の測定状態を読み出すことの指令)を受けると、測定状態(例えば、周波数測定中は“1”、それ以外は“0”)をバス158に出力する。クロック制御回路124はまた、バス158を介して周波数読み出し指令(周波数を読み出すことの指令)を受けると、測定した周波数の値をバス158に出力する。クロック制御回路124はまた、バス158を介してクロック切り替え指令(クロック信号を切り替えることの指令)を受けると、選択回路120への選択信号146とAND回路130への制御信号150を制御してクロック信号の切り替えを行う。
【0019】
PLL126は、入力されたクロック信号148と入力されたクロック信号152の位相が合う様に、出力するクロック信号154の周波数を制御する。具体的には、PLL126は、クロック信号152の位相がクロック信号148より遅れている時はクロック信号154の周波数を増加させ、進んでいる時は減少させる。
【0020】
分周回路128は、クロック信号154を分周することにより得られたクロック信号152を出力する。
【0021】
AND回路130は、入力された制御信号150がハイの時はクロック信号154と同じ値のクロック信号156を出力する。AND回路130は、制御信号150がロウの期間中はクロック信号156をロウに固定(維持)する。
【0022】
クロック信号156(制御クロック信号の一例)は、クロック制御回路124、メモリ制御回路112、CPU114、ウォッチドックタイマ116、システムバス制御回路118に入力される。これらの回路112、114、116及び118は、クロック信号156に同期して動作する。
【0023】
メモリ制御回路112は、バス158を介して読み出し要求を受けると、バス162を介して外部のメモリから読み出し対象(例えば値やプログラム)を読み出し、読み出した読み出し対象をバス158に出力する。メモリ制御回路112はまた、バス158を介して書き込み要求を受けると、バス162を介して外部のメモリに書き込み対象(例えば値やプログラム)を書き込む。
【0024】
CPU114は、バス158を介してメモリ制御回路112に読み出し要求を出力することで、バス162を介して外部のメモリからプログラムを読み出す。CPU114は、読み出されたプログラムを実行する。実行したプログラムの中に読み出し、又は書き込みを指示する命令があった場合には、CPU114は、バス158を介してクロック制御回路124、メモリ制御回路112、ウォッチドックタイマ116、又はシステムバス制御回路118に、読み出し要求又は書き込み要求を出力する。
【0025】
ウォッチドックタイマ116は、内部に設けられたカウンタの値をクロック信号156の1周期ごとに1ずつインクリメントする。ウォッチドックタイマ116はまた、バス158を介してカウンタクリア要求を受けると、カウンタの値を“0”(初期値の一例)にクリアする(つまり、カウンタの値を初期値に戻す)。ウォッチドックタイマ116はまた、カウンタの値が予め定められた基準値を超えた場合には、CPU114にリセット信号160を出力する。リセット信号160を出力するか否かの基準となる上記の基準値は、固定値であってもよいし、ウォッチドックタイマ116の内部に設けられたレジスタに設定された値を基にCPU114により変更されてもよい。
【0026】
システムバス制御回路118は、バス158を介して読み出し要求を受けると、システムバス164を介して外部のデバイス(外部のメモリ以外のデバイス)から読み出し対象を読み出し、読み出した読み出し対象をバス158に出力する。システムバス制御回路118はまた、バス158を介して書き込み要求を受けると、システムバス164を介して外部のデバイスに書き込み対象を書き込む。システムバス制御回路118はまた、システムバス164を介して読み出し要求を受けると、バス158及びメモリ制御回路112を介してバス162に接続された外部のメモリから読み出し対象を読み出し、読み出した読み出し対象をシステムバス164に出力する。システムバス制御回路118はまた、システムバス164を介して書き込み要求を受けると、バス158、メモリ制御回路112を介してバス162に接続された外部のメモリに書き込み対象を書き込む。読み出し要求に応答して外部のデバイスと外部のメモリのいずれから読み出しを行うかは、読み出し要求(例えば、当該要求で指定されているアドレス)に依存する。同様に、書き込み要求に応答して外部のデバイスと外部のメモリのいずれに対して書き込みを行うかは、書き込み要求に依存する。
【0027】
図2は、
図1の半導体集積回路100のPLL126と分周回路128の動作を示すタイミングチャートである。
【0028】
分周回路128は、クロック信号154を1/4に分周した結果としてのクロック信号152を出力する。PLL126はクロック信号148とクロック信号152の位相が合う様に動作するため、クロック信号148とクロック信号152はほぼ同一の波形となる。従って、クロック信号154はクロック信号148の4倍の周波数となる。
【0029】
本実施例では、分周回路128の分周比は1/4に固定しているが、分周比は異なる値でもよく、また、レジスタに設定された値に従う値に動的に変更されてもよい。
【0030】
図3は、
図1の半導体集積回路100のクロック制御回路124の例を示す図である。
【0031】
本実施例のクロック制御回路124は、カウンタ(図では「CNT」)300、レジスタ(図では「REG」)302、第1の状態遷移回路(図では「ST1」)304、第2の状態遷移回路(図では「ST2」)306、及び、バスインタフェース(図では「BIF」)308を有する。
【0032】
クロック制御回路124には、4つのクロック信号140、142、154及び156が入力される。カウンタ300は、クロック信号142に同期して動作する。レジスタ302、第1の状態遷移回路304及びバスインタフェース308は、クロック信号156に同期して動作する。第2の状態遷移回路306は、クロック信号140に同期して動作する回路と、クロック信号154に同期して動作する回路を含んでいる。
【0033】
カウンタ300は、入力されたクリア信号312がハイとなると、内蔵するカウンタ値(カウンタ300の値)を“0”(初期値の一例)にクリアする(戻す)。カウンタ300はまた、入力されたイネーブル信号314がハイである期間において、クロック信号142の立ち上がりエッジが発生する毎に内蔵するカウンタ値に1を加算する。カウンタ300はまた、入力されたイネーブル信号314がロウである期間において、クロック信号142の立ち上がりエッジが発生する毎に内蔵するカウンタ値に1を加算することを行わない。カウンタ300はまた、カウンタ値310を出力する。
【0034】
レジスタ302は、書き込み要求316を受けると、書き込み要求316に従う書き込み対象を格納する。レジスタ302はまた、格納した書込み対象(例えば値)の一例である値としての周波数コード144を出力する。
【0035】
第1の状態遷移回路304は、カウント指令320を受けると、クリア信号312とイネーブル信号314を制御してカウンタ300を動作させる。第1の状態遷移回路304はまた、カウンタ300を動作させている期間にカウンタ動作信号318をハイとし、それ以外の期間にカウンタ動作信号318をロウにする。なお、第1の状態遷移回路304の動作の詳細は後述する。
【0036】
第2の状態遷移回路306は、クロック切り替え要求322を受けると、選択信号146及び制御信号150を制御してクロック切り替えを制御する。詳細は後述する。
【0037】
バスインタフェース308は、バス158を介して読み出し要求を受けると、読み出しアドレス(当該要求で指定されているアドレス)に応じてカウンタ値310又はカウンタ動作信号318の値をバス158に出力する。バスインタフェース308はまた、バス158を介して書き込み要求を受けると、書き込みアドレス(当該要求で指定されているアドレス)に応じて書き込み要求316、カウント指令320、又は、クロック切り替え要求322を出力する。
【0038】
図4は、第1の状態遷移回路304とカウンタ300の動作を示すタイミングチャートである。なお、以下の説明では、n番目のサイクルを「サイクルn」と表記する。なお、
図4(及び
図5)において、サイクルは、クロック信号156のサイクルである。
【0039】
バスインタフェース308は、サイクル1において、バス158を介して第1の状態遷移回路304に対する書き込み要求を受け、当該要求に応答して、サイクル2において、カウント指令320をハイにする。
【0040】
第1の状態遷移回路304は、サイクル2において、ハイ状態のカウント指令320を受けると、クリア信号312をハイとし、イネーブル信号314を、サイクル4からサイクル4099の期間にハイにし、カウンタ動作信号318をサイクル2からサイクル4099にハイにする。
【0041】
カウンタ300は、サイクル2においてハイ状態のクリア信号312を受けると、カウンタ値310を“0”にする。カウンタ300はまた、サイクル4からサイクル4099の期間にハイ状態のイネーブル信号314を受けると、その期間のクロック信号142の立ち上がりの都度にカウンタ値310に1を加算する。
図4の例は、クロック信号142の周波数がクロック信号156の周波数の1/3の場合を示している。このため、カウンタ値310は、サイクル4において“1”、サイクル7において“2”、サイクル4099において“1366”となる。カウンタ300はまた、サイクル4100以降にロウ状態のイネーブル信号314を受けると、クロック信号142の立ち上がりエッジでもカウンタ値310に1を加算しない。結果として、現在の値が維持される。イネーブル信号314がハイ状態となっているサイクル数(サイクル4からサイクル4099の4096サイクル)と、イネーブル信号314がロウ状態となって以降のカウンタ値310(“1366”)の比がクロック信号156とクロック信号142の周波数の比と量子化誤差を除き等しくなる。
【0042】
本実施例では、イネーブル信号314がハイ状態となっているサイクル数は4096サイクルで固定としたが、レジスタで指定可能とする方法も考えられる。クロック信号142の周波数測定の量子化誤差は、イネーブル信号314がロウ状態となって以降のカウンタ値310の値の逆数に比例するためイネーブル信号314がハイ状態となっているサイクル数を多くするほど量子化誤差を削減することができる。
【0043】
図5は、
図3の第2の状態遷移回路306の動作を示すタイミングチャートである。
【0044】
本実施例は、選択回路120がクロック信号140を選択している状態からクロック信号142を選択する状態に切り替える例を示している。逆方向に切り替える場合も動作は同様である。
【0045】
バスインタフェース308は、サイクル1においてバス158を介して第2の状態遷移回路306に対する書き込み要求を受け、当該要求に応答してサイクル2においてクロック切り替え要求322をハイにする。
【0046】
第2の状態遷移回路306は、サイクル2において、ハイ状態のクロック切り替え要求322を受けると、サイクル2でのクロック信号154の立ち下がりに同期して制御信号150をロウにし、サイクル17でのクロック信号154の立ち下がりに同期して制御信号150をハイにする。これによって、サイクル3からサイクル17までクロック信号156がロウとなる。これは、クロック信号154の不定がクロック信号156に現れない様にするための措置である。
【0047】
第2の状態遷移回路306はまた、サイクル5において選択信号146をロウからハイに変化させる。これによって、クロック信号148としてクロック信号142が出力される。クロック信号148の周波数が変化することによって、PLL126の動作が不安定となり、クロック信号154が不定となるが、一定時間後に動作が安定しクロック信号154はクロック信号148の4倍の周波数となる。PLL126の動作が安定するまでの時間はクロック信号156をロウに維持すべく制御信号150をロウとする必要がある。このため、制御信号150をロウとする期間は、クロック信号140で予め定められた周期を経過する時間で定められる。
【0048】
図6は、
図1の半導体集積回路100を備えた制御装置の例を示す図である。
【0049】
図6の制御装置600は、
図1の半導体集積回路(図では「LSI」)100に加えて、クロック発振器(図では「CO」)610、ROM(Read Only Memory)612、RAM(Random Access Memory)614、入出力回路(図では「IO」)616、及び、通信回路(図ではCOM))618を有する。
【0050】
クロック発振器610(クロックソースの一例)は、あらかじめ定められた周波数のクロックを出力する回路である。水晶振動子を使用したものが用いられる場合が多いが、必要な精度を満たしていればそれ以外のものでもよい。
【0051】
ROM612は、バス162を介して読み出し要求を受けると、指定されたアドレス(当該要求で指定されているアドレス)の読み出し対象(例えば値)をバス162に出力する。
【0052】
RAM614は、バス162を介して読み出し要求を受けると、指定されたアドレスの読み出し対象(例えば値)をバス162に出力する。RAM614はまた、バス162を介して書き込み要求を受けると、指定されたアドレスに書き込み対象(例えば値)を書き込む。
【0053】
入出力回路616は、バス162を介して読み出し要求を受けると、指定されたアドレスに対応する機器602の状態を示す読み出し対象を信号線620から取り込み、当該読み出し対象をバス162に出力する。入出力回路616はまた、バス162を介して書き込み要求を受けると、指定されたアドレスに対応する機器602の制御のための値を、信号線620を介して、バス162を介して受けた書き込み対象としての値に書き換える。
【0054】
通信回路618は、システムバス164を介して送信要求を受けると、システムバス164を経由して送信データを受け、当該送信データを通信線622(例えばパーソナルコンピュータ(PC)のような機器に接続されている線)に出力する。通信回路618はまた、通信線622から受信データを受けると、システムバス164を介して、受信したデータを半導体集積回路100に出力する。
【0055】
図7は、
図6の制御装置600で
図1の半導体集積回路100の限界動作周波数を計測するフローの例を示す図である。「限界動作周波数」とは、半導体集積回路100の内部回路(例えばCPU114やメモリ制御回路112といった個々の回路)が正常に動作する周波数と正常に動作しない周波数の境界値である。
【0056】
ステップ702では、CPU114が、RAM614に格納されている変数tの値を“0”とする。変数tの値は、レジスタ302に書き込まれ周波数コード144に出力される値である。本実施例では、tの値が大きいほどクロック信号142の周波数が高い。
【0057】
ステップ704では、CPU114が、変数tの値をレジスタ302に書き込む。結果として、変数tの値が周波数コード144として可変発振回路122に出力される。これにより、可変発振回路122が、当該周波数コード144が示す値に対応した周波数のクロック信号142を生成し出力する。
【0058】
ステップ706では、CPU114が、第2の状態遷移回路306に対する書き込みを行い、クロック信号142を選択する状態に切り替える。具体的には、バスインタフェース308がCPU114からの書き込み要求を受け、第2の状態遷移回路306にクロック切り替え要求322を送信する。当該要求322に応答して、第2の状態遷移回路306が、クロック信号142を選択する選択信号146を出力する。第2の状態遷移回路306はまた、選択信号146が変化する前後の期間に制御信号150にロウを出力し、その後ハイを出力する。これにより、当該選択信号146が入力された選択回路120が、クロック信号142を選択し、当該クロック信号142に基づくクロック信号156がAND回路130から出力される。
【0059】
ステップ708では、CPU114が、内部回路が正常に動作しているかどうかを判定するためのテストプログラムを実行する。テストプログラムでどの機能を使用するかによって限界動作周波数は異なるため、ユーザによって予めROM612に限界動作周波数を測定したい機能を使用する様なテストプログラムが格納されている。
【0060】
テストプログラム実行中にプログラムが暴走した場合は、ステップ710に進むことができない。この場合、CPU114によるウォッチドックタイマ116のカウンタクリア動作が行われなくなるため、一定時間後にカウンタの値が予め定められた基準値を超え、ウォッチドックタイマ116がCPU114にリセット信号160を出力する。これが、ステップ712での処理である。その後、処理が、ステップ718に進む。
【0061】
ステップ710では、CPU114が、第2の状態遷移回路306に対する書き込みを行い、クロック信号140を選択する状態に切り替える。具体的には、バスインタフェース308がCPU114からの書き込み要求を受け、第2の状態遷移回路306にクロック切り替え要求322を送信する。当該要求322に応答して、第2の状態遷移回路306が、クロック信号140を選択する選択信号146を出力する。第2の状態遷移回路306はまた、選択信号146が変化する前後の期間に制御信号150にロウを出力し、その後ハイを出力する。これにより、当該選択信号146が入力された選択回路120が、クロック信号140を選択し、当該クロック信号140に基づくクロック信号156がAND回路130から出力される。結果として、選択する信号がクロック信号142からクロック信号140に変更されたことになる。
【0062】
ステップ714では、CPU114が、テストプログラムの実行結果が正常であったかどうかを判断する。
【0063】
テストプログラムの実行結果が正常であった場合には、CPU114が、ステップ716で変数tに1を加算する。その後、処理が、ステップ704に戻る。
【0064】
テストプログラムの実行結果が正常でなかった場合には、処理がステップ718に進む。
【0065】
ステップ718では、CPU114が、第1の状態遷移回路304に対する書き込みを行い、カウンタ300でクロック信号142の周波数を測定する。具体的には、バスインタフェース308が、CPU114からの書き込み要求を受け、カウント指令320を第1の状態遷移回路304に送信する。当該カウント指令320が入力された第1の状態遷移回路304が、ハイ状態のクリア信号312とハイ状態のイネーブル信号314を出力する。これにより、カウンタ300のカウンタ値が初期化され(本実施例では“0”とされ)、イネーブル信号314がハイである期間中、カウンタ300により、クロック信号142の立ち上がりエッジが発生する毎にカウンタ値が1インクリメントされる。カウンタ値310は、CPU114により読み出される。当該期間の長さと、読み出されたカウンタ値310とを基に、CPU114により、クロック信号142の周波数が測定(算出)される。
【0066】
ステップ720では、CPU114が、変数tの値から1を減じた値をレジスタ302に書き込む。結果として、変数tの値(1減じられた値)が周波数コード144として可変発振回路122に出力される。これにより、可変発振回路122が、当該周波数コード144が示す値に対応した周波数のクロック信号142を生成し出力する。
【0067】
ステップ722の動作はステップ718と同様である。
【0068】
ステップ722で測定された周波数は、テストプログラムの実行結果が正常であったときの周波数である。一方、ステップ718で測定した周波数は、テストプログラムの実行結果が正常でなかったときの周波数である。このため、両者の周波数の間に限界動作周波数が存在していることがわかる。両者の周波数の間に存在するいずれかの値が、限界動作周波数として、CPU114により決定されてよい。なお、ステップ718、及びステップ722で測定しているのはクロック信号142の周波数であり、クロック信号156の周波数はその4倍となる。
【0069】
限界動作周波数は、一般に、製造時のばらつきによる個体差、動作温度、電源電圧の影響を受ける他、半導体集積回路100の長期間の稼働によって半導体素子の特性が劣化することに伴い低下する。限界動作周波数の計測結果は、動作温度や電源電圧の変動に対する動作速度のマージンが十分あるかどうかの確認に使用することができる。動作速度のマージンが不十分な半導体集積回路は動作温度や電源電圧が変動した時に誤動作する可能性があるため、誤動作が発生する前に動作速度のマージンが十分あるものと交換することにより、誤動作のリスクを軽減することができる。限界動作周波数の計測結果はまた、長時間稼働した後の半導体素子の特性劣化の度合いを推定するのにも用いることができる。特性劣化の時間変化と動作速度のマージンを組み合わせると、計測した半導体集積回路が正常に動作できる期間を推定することができる。
【0070】
図8は、
図6の制御装置600で制御処理と計測処理(限界動作周波数を計測する処理)を時分割で処理する第1の例を示す図である。
【0071】
図8によれば、制御装置600の制御処理(例えば、クロック信号156に基づき動作する半導体集積回路100による制御に従い機器602を制御する処理)は一定の周期で行われる。制御処理が実行される周期に対して制御処理に必要な時間は短い。そこで、
図8によれば、各周期において、制御処理が終了した後の空き時間(制御処理が終了してから次の周期が開始するまでの空き時間)に計測処理が実行される。
【0072】
図9は、
図6の制御装置600で制御処理と計測処理を時分割で処理する第2の例を示す図である。
【0073】
図9によれば、制御対象の機器602が動作状態と停止状態を繰り返す。そこで、機器602が停止している時間に、計測処理が行われる。
図8に比べると、計測処理を行う時間を長く確保できる。
【0074】
上記の説明を、下記のように総括することができる。なお、下記は、上記の説明に無い事項を含んでいてもよい。
【0075】
半導体集積回路100内のクロック生成回路110は、クロック発振器610(外部の一例)からクロック信号140が入力され一つ又は複数の回路(例えば回路112、114、116及び118)に対してクロック信号156を出力する回路である。クロック生成回路110は、可変発振回路122と、選択回路120とを有する。可変発振回路122は、CPU114によって指定された複数の周波数の中の一の周波数に従ったクロック信号142を生成し、当該クロック信号142を出力する。選択回路120は、入力されたクロック信号140及び142のいずれか一方をクロック信号148として出力する。クロック信号156は、選択回路120から出力されたクロック信号148に基づくクロック信号(例えば、PLL126により周波数が高くされたクロック信号)である。
【0076】
これにより、PLL126の性能に依存しない高い分解能で内部回路の動作周波数を変更することと高い精度のクロック信号を出力することが可能である。なお、クロック信号140及び142のいずれを選択するかは、CPU114が所定のプログラムを実行することにより、CPU114からクロック制御回路124を介して選択回路120に指定されてよい。クロック信号140及び142のいずれを選択するかは、何番目の周期での制御処理であるかに応じて切り替えられてもよいし、少なくとも一つの制御処理において動的に切り替えられてもよい。
【0077】
半導体集積回路100(例えばクロック生成回路110)は、クロック制御回路124を更に有する。クロック制御回路124によって、クロック信号140の周期とクロック信号142の周期との比を特定する第1の計測処理(例えば
図4を参照して説明した処理)が実行される。クロック信号140は、クロック信号142よりも高精度であるため、クロック信号140の周期を基準としてクロック信号142の周期を計測することで、クロック信号142の周期を高い精度で測定することが可能である。
【0078】
第1の計測処理は、選択回路120にクロック信号140を選択させることと、クロック信号156の周期とクロック信号142の周期との比を特定することとを含む。クロック信号140が選択されれば、クロック信号156はクロック信号140に基づく信号となるため、クロック信号156は周期の精度が高い信号となる。
【0079】
また、第1の計測処理において特定された比に基づく周波数は、制御処理でのクロック信号142の周波数(具体的には、当該周波数のクロック信号142を生成するための周波数コード144)として可変発振回路122に指定される。可変発振回路122は、指定された周波数をクロック信号142の周波数として決定する。このようにすることで、高い精度で測定された周波数に従ったクロック信号142を制御処理に利用することができる。
【0080】
CPU114は、クロック制御回路124を介して、クロック信号142についてテスト処理を正しく行える周波数とテスト処理を正しく行えない周波数とを特定する第2の計測処理(例えば
図7を参照して説明した処理)を行う。これにより、テスト処理を正しく行える周波数とテスト処理を正しく行えない周波数との間の周波数である限界動作周波数を特定することができる。なお、「テスト処理」とは、例えば、上述したテストプログラムを処理することを意味する。
【0081】
第2の計測処理は、下記の(a)乃至(d)を含む。テスト処理を正しく行えない周波数は、(c)の結果が否定のときの周波数である。テスト処理を正しく行える周波数は、結果が否定となった(c)の直前回の(c)の結果が肯定のときの周波数である。
(a)クロック信号142について選択可能な周波数のうち当該第2の計測処理において未決定の周波数を決定すること(例えばステップ704又は716)。
(b)(a)で決定された周波数のクロック信号142に基づくクロック信号156で処理のテストを行うこと(例えばステップ708)。
(c)テストの結果が正しいか否かの判断を行うこと(例えばステップ714)。
(d)(c)の結果が肯定であれば、(a)を行うこと(例えばステップ716)。
【0082】
第1の計測処理と第2の計測処理のうちの少なくとも一つの計測処理は、前記クロック生成回路から出力され入力されたクロック信号に同期して動作する一つ以上の回路による制御処理が行われていない期間に行われる。これにより、制御処理に影響が出ることを避けることができる。なお、制御処理が行われていない期間とは、下記の(P)及び(Q)の少なくとも一つである(x及びyはいずれも自然数)。
(P)x番目の周期で行われる制御処理の終了から(x+1)番目の周期で行われる制御処理の開始までの期間(例えば、
図8を参照して説明した期間)。
(Q)制御処理として一つ又は複数の回路の停止に相当する処理が行われるy番目の周期と、制御処理として一つ又は複数の回路の停止に相当する処理が行われる(y+2)番目の周期との間にある(y+1)番目の周期としての期間(例えば、
図9を参照して説明した期間(例えば周期(n+2))。
【0083】
上記外部は、水晶振動子を使用した発振回路(例えばクロックソースの一例であるクロック発振器610)である。このため、クロック信号140の周波数の精度は高い。
【0084】
半導体集積回路100は、上述したクロック生成回路110と、CPU114(一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部の一例)とを有する。クロック生成回路110からクロック信号を受け取る一つ又は複数の回路のいずれかが、CPU114である。クロック生成回路110をCPU114が制御する。CPU114は、一つ又は複数のコンピュータプログラムを実行することにより、制御処理が行われていない期間に少なくとも一つの計測処理を行う。プログラムを実行するCPU114は、制御処理が行われていない期間を把握できるため、CPU114により計測処理の開始が制御されれば、制御処理が行われていない期間に計測処理を行うことができる。なお、計測処理は、計測処理を行うことの指令がバス158を介してクロック制御回路124に入力された場合に当該クロック制御回路124によって行われてよい。
【符号の説明】
【0085】
100 半導体集積回路