(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-28
(45)【発行日】2023-12-06
(54)【発明の名称】時間計測回路
(51)【国際特許分類】
G04F 10/04 20060101AFI20231129BHJP
H03K 5/26 20060101ALI20231129BHJP
G04G 3/02 20060101ALI20231129BHJP
【FI】
G04F10/04 Z
H03K5/26 C
H03K5/26 P
G04G3/02 E
(21)【出願番号】P 2020091207
(22)【出願日】2020-05-26
【審査請求日】2023-03-24
(73)【特許権者】
【識別番号】000006666
【氏名又は名称】アズビル株式会社
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】栗林 英毅
【審査官】細見 斉子
(56)【参考文献】
【文献】特開2012-229986(JP,A)
【文献】特開2004-117356(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G04F 7/00-13/06
H03K 5/00- 5/26
G04G 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
外部からの開始信号の入力のタイミングで有意となり、外部からの停止信号の入力のタイミングで無意となる発振許可信号を出力するように構成されたフリップフロップ回路と、
前記発振許可信号が有意の期間中に第1のクロックを生成するように構成された発振回路と、
前記第1のクロックと、前記第1のクロックを反転させた第2のクロックと、前記第1、第2のクロックと位相が異なる第3のクロックとをそれぞれ前記停止信号でマスクするように構成された論理回路と、
前記停止信号でマスクされた第1のクロックを数えるように構成された第1のカウンタと、
前記停止信号でマスクされた第2のクロックを数えるように構成された第2のカウンタと、
前記停止信号でマスクされた第3のクロックを数えるように構成された第3のカウンタと、
前記第1、第2、第3のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していないカウンタによって得られた計数結果を選択するように構成されたセレクタと、
前記停止信号の入力後に前記セレクタによって選択された計数結果を基に前記開始信号の入力から前記停止信号の入力までの時間間隔を算出するように構成された時間算出部とを備えることを特徴とする時間計測回路。
【請求項2】
請求項1記載の時間計測回路において、
前記セレクタは、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第1の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値未満の範囲では前記第3のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第2の位相値以上、かつ前記第2の位相値よりも大きく360°よりも小さい所定の第3の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第3の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択することを特徴とする時間計測回路。
【請求項3】
請求項2記載の時間計測回路において、
前記時間算出部は、前記第1のクロックの位相が前記第1の位相値以上360°未満の範囲のときに前記セレクタによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから前記時間間隔を算出することを特徴とする時間計測回路。
【請求項4】
請求項1記載の時間計測回路において、
前記セレクタは、外部から入力されるモード切替信号がカウンタ3個使用モードを指定している場合に、前記第1、第2、第3のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していないカウンタによって得られた計数結果を選択し、前記モード切替信号がカウンタ2個使用モードを指定している場合に、前記第1、第2のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していない方のカウンタによって得られた計数結果を選択することを特徴とする時間計測回路。
【請求項5】
請求項4記載の時間計測回路において、
前記セレクタは、外部から入力される位相値変更信号に応じて、前記カウンタ3個使用モードにおける前記第1、第2、第3のカウンタの計数結果の選択の境界、または前記カウンタ2個使用モードにおける前記第1、第2のカウンタの計数結果の選択の境界を変更することを特徴とする時間計測回路。
【請求項6】
請求項4記載の時間計測回路において、
前記セレクタは、前記モード切替信号がカウンタ3個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第1の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値未満の範囲では前記第3のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第2の位相値以上、かつ前記第2の位相値よりも大きく360°よりも小さい所定の第3の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第3の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択し、前記モード切替信号がカウンタ2個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第4の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第4の位相値以上、かつ360°よりも小さい所定の第5の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第5の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択することを特徴とする時間計測回路。
【請求項7】
請求項5記載の時間計測回路において、
前記セレクタは、前記モード切替信号がカウンタ3個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第1の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値未満の範囲では前記第3のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第2の位相値以上、かつ前記第2の位相値よりも大きく360°よりも小さい所定の第3の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第3の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択し、前記モード切替信号がカウンタ2個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第4の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第4の位相値以上、かつ360°よりも小さい所定の第5の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第5の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択し、
外部から入力される第1の前記位相値変更信号に応じて前記第3の位相値および前記第5の位相値の設定を変更し、外部から入力される第2の前記位相値変更信号に応じて前記第2の位相値および前記第4の位相値の設定を変更し、外部から入力される第3の前記位相値変更信号に応じて前記第1の位相値の設定を変更することを特徴とする時間計測回路。
【請求項8】
請求項6または7記載の時間計測回路において、
前記時間算出部は、前記モード切替信号がカウンタ3個使用モードを指定している場合には、前記第1のクロックの位相が前記第1の位相値以上360°未満の範囲のときに前記セレクタによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから前記時間間隔を算出し、前記モード切替信号がカウンタ2個使用モードを指定している場合には、前記第1のクロックの位相が前記第4の位相値以上360°未満の範囲のときに前記セレクタによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから前記時間間隔を算出することを特徴とする時間計測回路。
【請求項9】
請求項4乃至8のいずれか1項に記載の時間計測回路において、
前記論理回路と前記第3のカウンタとの間に設けられ、前記モード切替信号と前記第3のクロックとの論理積の結果をクロック入力として前記第3のカウンタに与えるように構成されたAND回路をさらに備えることを特徴とする時間計測回路。
【請求項10】
請求項1乃至9のいずれか1項に記載の時間計測回路において、
前記論理回路は、
前記発振回路から出力された第1のクロックを入力とするバッファ回路と、
前記発振回路から出力された第1のクロックを反転させて前記第2のクロックを生成するように構成された第1のインバータと、
前記発振回路から出力された第1のクロックよりも位相の遅れたクロックを反転させて前記第3のクロックを生成するように構成された第2のインバータと、
前記バッファ回路から出力された第1のクロックを前記停止信号でORマスクするように構成された第1のOR回路と、
前記第1のインバータから出力された第2のクロックを前記停止信号でORマスクするように構成された第2のOR回路と、
前記第2のインバータから出力された第3のクロックを前記停止信号でORマスクするように構成された第3のOR回路とから構成されることを特徴とする時間計測回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高精度な時間測定を行うことが可能な時間計測回路に関するものである。
【背景技術】
【0002】
psecオーダーの高分解能な時間測定を行う場合、論理回路のゲート遅延を用いるTDC(Time-to-Digital Converter)と呼ばれる手法(非特許文献1参照)が広く知られている。このTDCは、DLL(Delay Locked Loop)、またはPLL(Phase Locked Loop)をベースとした構成とするのが一般的であるが、DLLやPLLはクロックの発振の安定化に時間を要するので、時間計測開始前にTDCを動作させておく必要があり、低消費電力化の実現が難しいという問題点があった。
【0003】
例えばガスメータ向け超音波流量計は、超音波の伝搬時間差を低消費電力かつ高精度、高分解能で測定する必要があるため、高速カウンタの動作期間(高速クロックの発振期間)をできる限り短くする必要がある。しかし、上記のとおりDLL方式のTDCとPLL方式のTDCは遅延回路の発振安定化に時間を要するため、高速クロックの発振期間が長くなり消費電力面で不利である。
【0004】
TDCの動作時間(高速クロックの発振時間)を最小にして、低消費電力動作を目指す場合、例えば特許文献1に開示されたリングオシレータ型の構成が考えられる。
図20は、従来のリングオシレータ型TDCの構成を示す回路図である。リングオシレータ型TDCは、1ビットの2進数“1”(1’b1)をD入力とし、発振開始信号ROSC_STARTをクロック入力とし、発振停止信号ROSC_STOPをリセット入力とし、発振許可信号TDC_ENを出力するDフリップフロップ回路10と、発振許可信号TDC_ENが有意の期間中に高速クロックTAP[2]を生成するリングオシレータ11と、高速クロックをカウントする高速カウンタ12とから構成される。
【0005】
図21は、
図20のリングオシレータ型TDCの動作を説明するタイミングチャートである。Dフリップフロップ回路10は、1ビットの2進数“1”(1’b1)をD入力とし、発振開始信号ROSC_STARTをクロック入力とし、発振停止信号ROSC_STOPをリセット入力とし、
図21に示すように発振開始信号ROSC_STARTの立ち上がりで有意(High)となり、発振停止信号ROSC_STOPの立ち上がりで無意(Low)となる発振許可信号TDC_ENを出力する。
【0006】
リングオシレータ11は、発振許可信号TDC_ENと高速クロックTAP[2]との否定論理積をとるNAND回路110と、NAND回路110の出力TAP[0]を入力とするバッファ回路111-1と、バッファ回路111-1の出力TAP[1]を入力とし、その出力TAP[2]を高速クロックとして出力するバッファ回路111-2とから構成される。リングオシレータ11は、Dフリップフロップ回路10から出力された発振許可信号TDC_ENが有意の期間中に、
図21に示すように、低速クロック(ROSC_STOP)よりも高速なクロックTAP[2]を生成する。
高速カウンタ12は、高速クロックTAP[2]の立ち上がりをカウントして計数結果HS_CNTを出力する。
【0007】
ただし、
図20に示したリングオシレータ型TDCでは、発振停止信号ROSC_STOPのタイミング次第で、
図21の100で示すように、高速カウンタ12を構成するフリップフロップが受け付け不可能なLow幅のクロックをリングオシレータ11が出力してしまい、高速カウンタ12の計数結果HS_CNTの値が不定となり、正しい時間を計測できないという課題があった。以下、本発明では、この意図しないタイミングで発生する微小な幅のパルスをグリッチと呼ぶ。
【0008】
例えば、リングオシレータ11の出力である高速クロックTAP[2]の周波数を600MHzとすると、高速カウンタ12のカウント値がグリッチにより“1”大きくなるということは、時間計測値が期待値よりも1.67nsec大きな値となることを示す。特許文献1に開示されたような超音波流量計は、微小流量計測のためにサブナノオーダーの精度での時間計測が求められるため、流量計測値が期待値と比較して±1.67ns異なるという仕様では製品スペックを満たすことができない。
【0009】
そこで、発明者は、リングオシレータ出力信号とリングオシレータ出力反転信号をそれぞれ別のカウンタでカウントし、得られた2つのカウント結果からグリッチが発生していない方のカウント値を選択することで正確な時間計測を実現する構成を提案した(特願2019-062885号)。
【0010】
図22は、発明者が特願2019-062885号で提案した時間計測回路の構成を示す回路図である。時間計測回路は、1ビットの2進数“1”(1’b1)をD入力とし、外部からの発振開始信号ROSC_STARTをクロック入力とし、外部からの発振停止信号ROSC_STOPをリセット入力とし、発振許可信号TDC_ENを出力するDフリップフロップ回路10と、発振許可信号TDC_ENが有意の期間中に高速クロックTAP[15]を生成するリングオシレータ11aと、高速クロックTAP[15]を入力として高速クロックRCLK1を出力するバッファ回路13と、高速クロックTAP[15]を反転させた高速クロックRCLK2を出力するインバータ14と、バッファ回路13の出力RCLK1と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK1として出力するOR回路15と、インバータ14の出力RCLK2と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK2として出力するOR回路16とを備えている。また、時間計測回路は、高速クロックROSC_CLK1をカウントする高速カウンタ12aと、高速クロックROSC_CLK2をカウントする高速カウンタ12bと、発振停止信号ROSC_STOPと低速クロックMCLKを基に発振停止信号ROSC_STOPの立ち上がりエッジを検出するエッジ検出回路17と、高速カウンタ12aの8ビットの計数結果HS_CNT1[8:0]をラッチするDフリップフロップ回路18aと、高速カウンタ12bの8ビットの計数結果HS_CNT2[8:0]をラッチするDフリップフロップ回路18bと、リングオシレータ11aの出力の位相値を示す5ビットのタイミング信号HS_PHASE[4:0]を出力するエンコーダ19と、Dフリップフロップ回路18a,18bの8ビットの出力LATCH1[8:0],LATCH2[8:0]のいずれかを選択するセレクタ20と、セレクタ20によって選択された計数結果に基づいて、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する時間算出部21とを備えている。
【0011】
リングオシレータ11aは、NAND回路110と、15個のバッファ回路111-1~111-15と、16個のDフリップフロップ回路112-1~112-16とから構成される。
【0012】
図23は
図22の時間計測回路の動作を説明するタイミングチャートである。Dフリップフロップ回路10は、1ビットの2進数“1”(1’b1)をD入力とし、発振開始信号ROSC_STARTをクロック入力とし、発振停止信号ROSC_STOPをリセット入力とし、発振開始信号ROSC_STARTの立ち上がりで有意(High)となり、発振停止信号ROSC_STOPの立ち上がりで無意(Low)となる発振許可信号TDC_ENを出力する。
【0013】
リングオシレータ11aは、Dフリップフロップ回路10から出力された発振許可信号TDC_ENが有意の期間中に、低速クロックMCLKよりも高速なクロックTAP[15]を生成する。
バッファ回路13は、リングオシレータ11aから出力された高速クロックTAP[15]を入力とし、高速クロックRCLK1を出力する。インバータ14は、リングオシレータ11aから出力された高速クロックTAP[15]を論理反転した高速クロックRCLK2を出力する。
【0014】
OR回路15は、バッファ回路13から出力された高速クロックRCLK1と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK1として出力する。OR回路16は、インバータ14から出力された高速クロックRCLK2と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK2として出力する。
【0015】
エッジ検出回路17は、発振停止信号ROSC_STOPと低速クロックMCLKとに基づいて、高速カウンタ12aの8ビットの計数結果HS_CNT1[8:0]および高速カウンタ12bの8ビットの計数結果HS_CNT2[8:0]をラッチするタイミングを示す取り込み許可信号HS_CNT_LATと、高速カウンタ12a,12bをリセットするための高速カウンタリセット信号HS_CNT_CLRと、Dフリップフロップ回路18a,18bに有効なデータが格納されていることを示す取り込み許可信号HS_CNT_ENとを生成する。
【0016】
高速カウンタ12aは、高速カウンタリセット信号HS_CNT_CLRが無意(High)の期間中に、高速クロックROSC_CLK1の立ち上がりをカウントして、8ビットの計数結果HS_CNT1[8:0]を出力する。高速カウンタ12bは、高速カウンタリセット信号HS_CNT_CLRが無意の期間中に、高速クロックROSC_CLK2の立ち上がりをカウントして、8ビットの計数結果HS_CNT2[8:0]を出力する。
【0017】
Dフリップフロップ回路18aは、取り込み許可信号HS_CNT_LATの立ち上がりで高速カウンタ12aの8ビットの計数結果HS_CNT1[8:0]をラッチする。Dフリップフロップ回路18bは、取り込み許可信号HS_CNT_LATの立ち上がりで高速カウンタ12bの8ビットの計数結果HS_CNT2[8:0]をラッチする。
【0018】
エンコーダ19は、Dフリップフロップ回路112-1~112-16から出力される16ビットの信号ROSC_PHASE[15:0]を基に、リングオシレータ11aの出力の位相値を示す5ビットのタイミング信号HS_PHASE[4:0]を出力する。
【0019】
セレクタ20は、エンコーダ19から出力された5ビットのタイミング信号HS_PHASE[4:0]に基づいて、Dフリップフロップ回路18a,18bによってラッチされた8ビットの計数結果LATCH1[8:0],LATCH2[8:0]のうち、グリッチ(計数エラー)が発生していない方の高速カウンタによって得られた計数結果を真値として選択する。
【0020】
時間算出部21は、取り込み許可信号HS_CNT_ENが有意(High)になった時点でセレクタ20から出力された計数結果を取り込む。時間算出部21は、取り込んだ計数結果に基づいて、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する。
【0021】
リングオシレータ型TDCは計測開始を示す発振開始信号ROSC_STARTを受け付けるとリングオシレータ11aが発振し始めるので、計測停止を示す発振停止信号ROSC_STOPを受け取るまでの期間、リングオシレータ11aの出力であるTAP[15]の立ち上がりを高速カウンタを用いて数えればいいのであるが、前述のとおり発振停止信号ROSC_STOPのタイミング次第ではリングオシレータ11aの出力にグリッチが発生し、高速カウンタが誤作動してしまう可能性がある。
【0022】
そこで、
図22の時間計測回路では、リングオシレータ11aの出力TAP[15]とその反転信号とをそれぞれ別の高速カウンタ12a,12bでカウントし、得られた計数結果からグリッチが発生していない方の計数結果を選択するようにすることで、低消費電力動作と正確な時間計測とを実現している。
【0023】
より具体的には、リングオシレータ11aから出力された高速クロックTAP[15]をバッファ回路13に通した高速クロックRCLK1と、高速クロックTAP[15]をインバータ14によって論理反転した高速クロックRCLK2とを、それぞれOR回路15,16において発振停止信号ROSC_STOPでORマスクし、そのORマスクした高速クロックROSC_CLK1,ROSC_CLK2をそれぞれ別の高速カウンタ12a,12bでカウントする。
【0024】
発振開始信号ROSC_STARTを受け付けるタイミング次第では、前述のグリッチが発生する可能性があるが、発振開始信号ROSC_STARTの立ち上がりエッジと高速クロックRCLK1,RCLK2の位相関係については、タイミング信号HS_PHASE[4:0]から判定できるため、グリッチが発生していない方の高速カウンタによって得られた計数結果を真値として選択すればよい。
【0025】
高速クロックRCLK1,RCLK2とタイミング信号HS_PHASE[4:0]との関係を
図24に示す。
図24では、高速カウンタ12a,12bが受け付け不可能な最低Low幅(Min Error)と、このMin Errorに基づいて決定されたLATCH1[8:0]とLATCH2[8:0]の選択の境界を示している。
【0026】
以上のような構成により、
図22の時間計測回路では、発振停止信号ROSC_STOPの入力タイミングによらない正確な時間計測を実現できる、としている。
しかしながら、実際の回路では、信号同士の遅延時間の差(スキュー)が発生してしまうことと、信号の遅延値が温度や電圧によって変動することから、
図22に示した構成においても、高速カウンタ12a,12bが受け付け不可能な最低Low幅(Min Error)保持期間を満たせず、高速カウンタ12a,12bの誤動作を引き起こしてしまい、結果として正確な時間計測ができないというケースが発生してしまうことがあり得る。
【0027】
図25はスキューが発生した場合の高速クロックRCLK1,RCLK2とタイミング信号HS_PHASE[4:0]との関係の例を示している。
図25の例では、配線遅延により、
図25の1000で示すようにタイミング信号HS_PHASE[4:0]に対して高速クロックRCLK1,RCLK2が300ps遅れている。
【0028】
このような遅延が発生してしまうと、発振停止信号ROSC_STOPをタイミング信号HS_PHASE[4:0]が9または10のときに受け取った場合に、最低Low幅(Min Error)保持期間を満たせず、高速カウンタ12a,12bが誤動作してしまう。
【先行技術文献】
【特許文献】
【0029】
【非特許文献】
【0030】
【文献】Stephan Henzler,“Time-to-Digital Converters”,Springer,2010
【発明の概要】
【発明が解決しようとする課題】
【0031】
本発明は、上記課題を解決するためになされたもので、配線レイアウトや温度によって信号間にタイミングのずれが発生したとしても、正確な時間計測を低消費電力で実現することができる時間計測回路を提供することを目的とする。
【課題を解決するための手段】
【0032】
本発明の時間計測回路は、外部からの開始信号の入力のタイミングで有意となり、外部からの停止信号の入力のタイミングで無意となる発振許可信号を出力するように構成されたフリップフロップ回路と、前記発振許可信号が有意の期間中に第1のクロックを生成するように構成された発振回路と、前記第1のクロックと、前記第1のクロックを反転させた第2のクロックと、前記第1、第2のクロックと位相が異なる第3のクロックとをそれぞれ前記停止信号でマスクするように構成された論理回路と、前記停止信号でマスクされた第1のクロックを数えるように構成された第1のカウンタと、前記停止信号でマスクされた第2のクロックを数えるように構成された第2のカウンタと、前記停止信号でマスクされた第3のクロックを数えるように構成された第3のカウンタと、前記第1、第2、第3のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していないカウンタによって得られた計数結果を選択するように構成されたセレクタと、前記停止信号の入力後に前記セレクタによって選択された計数結果を基に前記開始信号の入力から前記停止信号の入力までの時間間隔を算出するように構成された時間算出部とを備えることを特徴とするものである。
また、本発明の時間計測回路の1構成例(第1の実施例)において、前記セレクタは、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第1の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値未満の範囲では前記第3のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第2の位相値以上、かつ前記第2の位相値よりも大きく360°よりも小さい所定の第3の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第3の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択することを特徴とするものである。
【0033】
また、本発明の時間計測回路の1構成例(第1の実施例)において、前記時間算出部は、前記第1のクロックの位相が前記第1の位相値以上360°未満の範囲のときに前記セレクタによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから前記時間間隔を算出することを特徴とするものである。
また、本発明の時間計測回路の1構成例(第2、第3の実施例)において、前記セレクタは、外部から入力されるモード切替信号がカウンタ3個使用モードを指定している場合に、前記第1、第2、第3のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していないカウンタによって得られた計数結果を選択し、前記モード切替信号がカウンタ2個使用モードを指定している場合に、前記第1、第2のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していない方のカウンタによって得られた計数結果を選択することを特徴とするものである。
また、本発明の時間計測回路の1構成例(第3の実施例)において、前記セレクタは、外部から入力される位相値変更信号に応じて、前記カウンタ3個使用モードにおける前記第1、第2、第3のカウンタの計数結果の選択の境界、または前記カウンタ2個使用モードにおける前記第1、第2のカウンタの計数結果の選択の境界を変更することを特徴とするものである。
【0034】
また、本発明の時間計測回路の1構成例(第2の実施例)において、前記セレクタは、前記モード切替信号がカウンタ3個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第1の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値未満の範囲では前記第3のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第2の位相値以上、かつ前記第2の位相値よりも大きく360°よりも小さい所定の第3の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第3の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択し、前記モード切替信号がカウンタ2個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第4の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第4の位相値以上、かつ360°よりも小さい所定の第5の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第5の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択することを特徴とするものである。
また、本発明の時間計測回路の1構成例(第3の実施例)において、前記セレクタは、前記モード切替信号がカウンタ3個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第1の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値未満の範囲では前記第3のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第2の位相値以上、かつ前記第2の位相値よりも大きく360°よりも小さい所定の第3の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第3の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択し、前記モード切替信号がカウンタ2個使用モードを指定している場合には、前記第1のクロックの位相が0°以上、かつ180°よりも小さい所定の第4の位相値未満の範囲では前記第1のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第4の位相値以上、かつ360°よりも小さい所定の第5の位相値未満の範囲では前記第2のカウンタの計数結果を選択し、前記第1のクロックの位相が前記第5の位相値以上360°未満の範囲では前記第1のカウンタの計数結果を選択し、外部から入力される第1の前記位相値変更信号に応じて前記第3の位相値および前記第5の位相値の設定を変更し、外部から入力される第2の前記位相値変更信号に応じて前記第2の位相値および前記第4の位相値の設定を変更し、外部から入力される第3の前記位相値変更信号に応じて前記第1の位相値の設定を変更することを特徴とするものである。
【0035】
また、本発明の時間計測回路の1構成例(第2、第3の実施例)において、前記時間算出部は、前記モード切替信号がカウンタ3個使用モードを指定している場合には、前記第1のクロックの位相が前記第1の位相値以上360°未満の範囲のときに前記セレクタによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから前記時間間隔を算出し、前記モード切替信号がカウンタ2個使用モードを指定している場合には、前記第1のクロックの位相が前記第4の位相値以上360°未満の範囲のときに前記セレクタによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから前記時間間隔を算出することを特徴とするものである。
また、本発明の時間計測回路の1構成例(第2、第3の実施例)は、前記論理回路と前記第3のカウンタとの間に設けられ、前記モード切替信号と前記第3のクロックとの論理積の結果をクロック入力として前記第3のカウンタに与えるように構成されたAND回路をさらに備えることを特徴とするものである。
また、本発明の時間計測回路の1構成例(第1~第3の実施例)において、前記論理回路は、前記発振回路から出力された第1のクロックを入力とするバッファ回路と、前記発振回路から出力された第1のクロックを反転させて前記第2のクロックを生成するように構成された第1のインバータと、前記発振回路から出力された第1のクロックよりも位相の遅れたクロックを反転させて前記第3のクロックを生成するように構成された第2のインバータと、前記バッファ回路から出力された第1のクロックを前記停止信号でORマスクするように構成された第1のOR回路と、前記第1のインバータから出力された第2のクロックを前記停止信号でORマスクするように構成された第2のOR回路と、前記第2のインバータから出力された第3のクロックを前記停止信号でORマスクするように構成された第3のOR回路とから構成されることを特徴とするものである。
【発明の効果】
【0036】
本発明によれば、発振回路によって生成された第1のクロックと、第1のクロックを反転させた第2のクロックと、第1、第2のクロックと位相が異なる第3のクロックとをそれぞれ停止信号でマスクする論理回路と、停止信号でマスクされた第1のクロックを数える第1のカウンタと、停止信号でマスクされた第2のクロックを数える第2のカウンタと、停止信号でマスクされた第3のクロックを数える第3のカウンタと、第1、第2、第3のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していないカウンタによって得られた計数結果を選択するセレクタとを設けることにより、配線レイアウトや温度によって信号間にタイミングのずれが発生したとしても、正確な時間計測を低消費電力で実現することができる。
【0037】
また、本発明では、モード切替信号がカウンタ3個使用モードを指定している場合に、第1、第2、第3のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していないカウンタによって得られた計数結果をセレクタが選択し、モード切替信号がカウンタ2個使用モードを指定している場合に、第1、第2のカウンタの計数結果のうち、受付不可能な時間幅のクロック入力が発生していない方のカウンタによって得られた計数結果をセレクタが選択することにより、製品に必要な時間分解能に応じて時間計測回路の消費電流を削減することができる。
【0038】
また、本発明では、セレクタが、外部から入力される位相値変更信号に応じて、カウンタ3個使用モードにおける第1、第2、第3のカウンタの計数結果の選択の境界、またはカウンタ2個使用モードにおける第1、第2のカウンタの計数結果の選択の境界を変更することにより、回路レイアウト完了後に信号間のタイミングのずれが設計時に想定した関係と異なっていることが分かった場合でも、回路修正ではなく設定変更で正常な時間計測を行うことができる。
【図面の簡単な説明】
【0039】
【
図1】
図1は、本発明の第1の実施例に係る時間計測回路の構成を示す回路図である。
【
図2】
図2は、本発明の第1の実施例に係る時間計測回路のエッジ検出回路の構成を示す回路図である。
【
図3】
図3は、本発明の第1の実施例における高速クロックとタイミング信号との関係を示す図である。
【
図4】
図4は、本発明の第1の実施例においてスキューが発生した場合の高速クロックとタイミング信号との関係を示す図である。
【
図5】
図5は、本発明の第1の実施例における高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図6】
図6は、本発明の第1の実施例における高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図7】
図7は、本発明の第1の実施例における高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図8】
図8は、本発明の第1の実施例における高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図9】
図9は、本発明の第1の実施例における高速クロックの計数結果の補正の要否を説明する図である。
【
図10】
図10は、本発明の第2の実施例に係る時間計測回路の構成を示す回路図である。
【
図11】
図11は、本発明の第2の実施例の高速カウンタ2個使用モードにおいてスキューが発生した場合の高速クロックとタイミング信号との関係を示す図である。
【
図12】
図12は、本発明の第2の実施例の高速カウンタ2個使用モードにおける高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図13】
図13は、本発明の第2の実施例の高速カウンタ2個使用モードにおける高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図14】
図14は、本発明の第2の実施例の高速カウンタ2個使用モードにおける高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図15】
図15は、本発明の第2の実施例の高速カウンタ2個使用モードにおける高速クロックの計数結果の補正方法を説明するタイミングチャートである。
【
図16】
図16は、本発明の第2の実施例の高速カウンタ2個使用モードにおける高速クロックの計数結果の補正の要否を説明する図である。
【
図17】
図17は、本発明の第3の実施例に係る時間計測回路の構成を示す回路図である。
【
図18】
図18は、本発明の第3の実施例の高速カウンタ2個使用モードにおける計数結果の選択開始位相値の変更例を示す図である。
【
図19】
図19は、本発明の第1~第3の実施例に係る時間計測回路の時間算出部を実現するコンピュータの構成例を示すブロック図である。
【
図20】
図20は、従来のリングオシレータ型TDCの構成例を示す回路図である。
【
図21】
図21は、従来のリングオシレータ型TDCの動作を説明するタイミングチャートである。
【
図22】
図22は、従来の時間計測回路の構成を示す回路図である。
【
図23】
図23は、従来の時間計測回路の動作を説明するタイミングチャートである。
【
図24】
図24は、従来の時間計測回路における高速クロックとタイミング信号との関係を示す図である。
【
図25】
図25は、従来の時間計測回路の問題点を説明する図である。
【発明を実施するための形態】
【0040】
[第1の実施例]
以下、本発明の実施例について図面を参照して説明する。
図1は本発明の第1の実施例に係る時間計測回路の構成を示す回路図である。本実施例の時間計測回路は、1ビットの2進数“1”(1’b1)をD入力とし、外部からの発振開始信号ROSC_STARTをクロック入力とし、外部からの発振停止信号ROSC_STOPをリセット入力とし、発振許可信号TDC_ENを出力するDフリップフロップ回路10と、発振許可信号TDC_ENが有意の期間中に高速クロックTAP[15](第1のクロック)を生成するリングオシレータ11a(発振回路)と、高速クロックTAP[15]を入力として高速クロックRCLK1(第1のクロック)を出力するバッファ回路13と、高速クロックTAP[15]を反転させた高速クロックRCLK2(第2のクロック)を出力するインバータ14と、バッファ回路13の出力RCLK1と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK1として出力するOR回路15と、インバータ14の出力RCLK2と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK2として出力するOR回路16と、高速クロックTAP[7]を反転させた高速クロックRCLK3(第3のクロック)を出力するインバータ23と、インバータ23の出力RCLK3と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK3として出力するOR回路24とを備えている。
【0041】
また、時間計測回路は、高速クロックROSC_CLK1をカウントする高速カウンタ12a(第1のカウンタ)と、高速クロックROSC_CLK2をカウントする高速カウンタ12b(第2のカウンタ)と、高速クロックROSC_CLK3をカウントする高速カウンタ12c(第3のカウンタ)と、発振停止信号ROSC_STOPと低速クロックMCLKを基に発振停止信号ROSC_STOPの立ち上がりエッジを検出するエッジ検出回路17と、高速カウンタ12aの8ビットの計数結果HS_CNT1[8:0]をラッチするDフリップフロップ回路18aと、高速カウンタ12bの8ビットの計数結果HS_CNT2[8:0]をラッチするDフリップフロップ回路18bと、高速カウンタ12cの8ビットの計数結果HS_CNT3[8:0]をラッチするDフリップフロップ回路18cと、リングオシレータ11aの出力の位相値を示す5ビットのタイミング信号HS_PHASE[4:0]を出力するエンコーダ19と、Dフリップフロップ回路18a,18b,18cの8ビットの出力LATCH1[8:0],LATCH2[8:0],LATCH3[8:0]のいずれかを選択するセレクタ20aと、セレクタ20aによって選択された計数結果に基づいて、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する時間算出部21aとを備えている。
【0042】
バッファ回路13とインバータ14,23とOR回路15,16,24とは、論理回路25を構成している。
従来と同様に、リングオシレータ11aは、発振許可信号TDC_ENと高速クロックTAP[15]との否定論理積をとるNAND回路110と、NAND回路110の出力に縦続接続された15個のバッファ回路111-1~111-15と、NAND回路110と各バッファ回路111-1~111-15の出力をそれぞれD入力とし、発振停止信号ROSC_STOPをクロック入力とする16個のDフリップフロップ回路112-1~112-16とから構成される。
【0043】
Dフリップフロップ回路10は、1ビットの2進数“1”(1’b1)をD入力とし、発振開始信号ROSC_STARTをクロック入力とし、発振停止信号ROSC_STOPをリセット入力とし、発振開始信号ROSC_STARTの立ち上がりで有意(High)となり、発振停止信号ROSC_STOPの立ち上がりで無意(Low)となる発振許可信号TDC_ENを出力する。
【0044】
リングオシレータ11aは、Dフリップフロップ回路10から出力された発振許可信号TDC_ENが有意の期間中に、低速クロックMCLKよりも高速なクロックTAP[15]を生成する。
【0045】
バッファ回路13は、リングオシレータ11aから出力された高速クロックTAP[15]を入力とし、高速クロックRCLK1を出力する。インバータ14は、リングオシレータ11aから出力された高速クロックTAP[15]を論理反転した高速クロックRCLK2を出力する。インバータ23は、リングオシレータ11aのバッファ回路111-7から出力された高速クロックTAP[7]を論理反転した高速クロックRCLK3を出力する。なお、バッファ回路13は、高速クロックRCLK1とRCLK2,RCLK3の位相を揃えるために挿入されている。
こうして、本実施例では、高速クロックTAP[7]を論理反転することで、高速クロックRCLK1から90°位相が遅れた高速クロックRCLK3を生成する。
【0046】
OR回路15は、バッファ回路13から出力された高速クロックRCLK1と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK1として出力する。OR回路16は、インバータ14から出力された高速クロックRCLK2と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK2として出力する。OR回路24は、インバータ23から出力された高速クロックRCLK3と発振停止信号ROSC_STOPの論理和の結果を高速クロックROSC_CLK3として出力する。
【0047】
エッジ検出回路17は、発振停止信号ROSC_STOPと低速クロックMCLKとに基づいて、高速カウンタ12aの8ビットの計数結果HS_CNT1[8:0]と高速カウンタ12bの8ビットの計数結果HS_CNT2[8:0]と高速カウンタ12cの8ビットの計数結果HS_CNT3[8:0]とをラッチするタイミングを示す取り込み許可信号HS_CNT_LATと、高速カウンタ12a,12b,12cをリセットするための高速カウンタリセット信号HS_CNT_CLRと、Dフリップフロップ回路18a,18b,18cに有効なデータが格納されていることを示す取り込み許可信号HS_CNT_ENとを生成する。
【0048】
図2はエッジ検出回路17の構成を示す回路図である。エッジ検出回路17は、発振停止信号ROSC_STOPをクロック入力とするDフリップフロップ回路170と、Dフリップフロップ回路170の出力信号STOP_DETを反転させた信号をDフリップフロップ回路170のD入力とするインバータ171と、Dフリップフロップ回路170の出力信号STOP_DETをD入力とし、低速クロックMCLKをクロック入力とするDフリップフロップ回路172と、Dフリップフロップ回路172の出力信号をD入力とし、低速クロックMCLKをクロック入力とするDフリップフロップ回路173と、Dフリップフロップ回路173の出力信号をD入力とし、低速クロックMCLKをクロック入力とするDフリップフロップ回路174と、Dフリップフロップ回路173の出力信号とDフリップフロップ回路174の出力信号の排他的論理和の結果を取り込み許可信号HS_CNT_LATとして出力するXOR回路175と、取り込み許可信号HS_CNT_LATをD入力とし、低速クロックMCLKをクロック入力として、取り込み許可信号HS_CNT_ENを出力するDフリップフロップ回路176と、取り込み許可信号HS_CNT_LATをD入力とし、低速クロックMCLKを反転させた結果をクロック入力として、高速カウンタリセット信号HS_CNT_CLRを出力するDフリップフロップ回路178とから構成される。
【0049】
高速カウンタ12aは、高速カウンタリセット信号HS_CNT_CLRが無意(High)の期間中に、高速クロックROSC_CLK1の立ち上がりをカウントして、8ビットの計数結果HS_CNT1[8:0]を出力する。高速カウンタ12bは、高速カウンタリセット信号HS_CNT_CLRが無意の期間中に、高速クロックROSC_CLK2の立ち上がりをカウントして、8ビットの計数結果HS_CNT2[8:0]を出力する。高速カウンタ12cは、高速カウンタリセット信号HS_CNT_CLRが無意の期間中に、高速クロックROSC_CLK3の立ち上がりをカウントして、8ビットの計数結果HS_CNT3[8:0]を出力する。これら高速カウンタ12a,12b,12cの計数結果HS_CNT1[8:0],HS_CNT2[8:0],HS_CNT3[8:0]は、高速カウンタリセット信号HS_CNT_CLRの立ち下がりで0に初期化される。
【0050】
Dフリップフロップ回路18aは、取り込み許可信号HS_CNT_LATの立ち上がりで高速カウンタ12aの8ビットの計数結果HS_CNT1[8:0]をラッチして、次に取り込み許可信号HS_CNT_LATが立ち上がるまで保持する。Dフリップフロップ回路18bは、取り込み許可信号HS_CNT_LATの立ち上がりで高速カウンタ12bの8ビットの計数結果HS_CNT2[8:0]をラッチして、次に取り込み許可信号HS_CNT_LATが立ち上がるまで保持する。Dフリップフロップ回路18cは、取り込み許可信号HS_CNT_LATの立ち上がりで高速カウンタ12cの8ビットの計数結果HS_CNT3[8:0]をラッチして、次に取り込み許可信号HS_CNT_LATが立ち上がるまで保持する。
【0051】
エンコーダ19は、Dフリップフロップ回路112-1~112-16から出力される16ビットの信号ROSC_PHASE[15:0]を基に、リングオシレータ11aの出力の位相値を示す5ビットのタイミング信号HS_PHASE[4:0]を出力する。タイミング信号HS_PHASE[4:0]は、16ビットの信号ROSC_PHASE[15:0]を5ビットにエンコードした信号である。
【0052】
セレクタ20aは、エンコーダ19から出力された5ビットのタイミング信号HS_PHASE[4:0]に基づいて、Dフリップフロップ回路18a,18b,18cによってラッチされた8ビットの計数結果LATCH1[8:0],LATCH2[8:0],LATCH3[8:0]のうちいずれかを選択する。
【0053】
時間算出部21aは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でセレクタ20aから出力された計数結果を取り込む。時間算出部21aは、取り込んだ計数結果に基づいて、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する。
【0054】
リングオシレータ型TDCは計測開始を示す発振開始信号ROSC_STARTを受け付けるとリングオシレータ11aが発振し始めるので、計測停止を示す発振停止信号ROSC_STOPを受け取るまでの期間、リングオシレータ11aの出力であるTAP[15]の立ち上がりを高速カウンタを用いて数えればいいのであるが、前述のとおり発振停止信号ROSC_STOPのタイミング次第ではリングオシレータ11aの出力にグリッチが発生し、高速カウンタが誤作動してしまう可能性がある。
【0055】
そこで、本実施例では、リングオシレータ11aの出力TAP[15]の正転信号(RCLK1)と論理反転した信号(RCLK2)とをそれぞれ別の高速カウンタ12a,12bでカウントすると共に、リングオシレータ11aの中途のバッファ回路111-1の出力TAP[7]を論理判定した信号(RCLK3)を高速カウンタ12cでカウントし、得られた計数結果からグリッチが確実に発生していない計数結果を選択する。
【0056】
より具体的には、リングオシレータ11aから出力された高速クロックTAP[15]をバッファ回路13に通した高速クロックRCLK1と、高速クロックTAP[15]をインバータ14によって論理反転した高速クロックRCLK2と、高速クロックTAP[7]をインバータ23によって論理反転した高速クロックRCLK3とを、それぞれOR回路15,16,24において発振停止信号ROSC_STOPでORマスクし、そのORマスクした高速クロックROSC_CLK1,ROSC_CLK2,ROSC_CLK3をそれぞれ別の高速カウンタ12a,12b,12cでカウントする。
【0057】
発振開始信号ROSC_STARTを受け付けるタイミング次第では、前述のグリッチが発生する可能性があるが、発振開始信号ROSC_STARTの立ち上がりエッジと高速クロックRCLK1,RCLK2,RCLK3の位相関係については、タイミング信号HS_PHASE[4:0]から判定できるため、グリッチが確実に発生していない高速カウンタによって得られた計数結果を真値として選択すればよい。
【0058】
高速クロックRCLK1,RCLK2,RCLK3とタイミング信号HS_PHASE[4:0]との関係を
図3に示す。
図3では、高速カウンタ12a,12b,12cが受け付け不可能な最低Low幅(Min Error)と、このMin Errorに基づいて決定されたLATCH1[8:0]とLATCH2[8:0]とLATCH3[8:0]の選択の境界を示している。なお、
図3のΔtはリングオシレータ11aの遅延回路(NAND回路110とバッファ回路111-1~111-15)の1段(1TAP)あたりの遅延時間を示している。
【0059】
本実施例では、セレクタ20aは、Dフリップフロップ回路18a,18b,18cによってラッチされた8ビットの計数結果LATCH1[8:0],LATCH2[8:0],LATCH3[8:0]のうち、グリッチ(計数エラー)が発生していない高速カウンタによって得られた計数結果を真値として選択する。このような選択は、5ビットのタイミング信号HS_PHASE[4:0]の値に基づいて行うことができる。
【0060】
図3の例では、セレクタ20aは、高速クロックRCLK1の位相が0°(タイミング信号HS_PHASE[4:0]の値が0)以上、かつ180°よりも小さい所定の第1の位相値(本実施例では90°、タイミング信号HS_PHASE[4:0]の値が8)未満の範囲では、計数結果LATCH1[8:0]を選択する。
【0061】
また、セレクタ20aは、高速クロックRCLK1の位相が第1の位相値以上、かつ360°よりも小さい所定の第2の位相値(本実施例では180°、タイミング信号HS_PHASE[4:0]の値が16)未満の範囲では、計数結果LATCH3[8:0]を選択する。
【0062】
また、セレクタ20aは、高速クロックRCLK1の位相が第2の位相値以上、かつ第2の位相値よりも大きく360°よりも小さい所定の第3の位相値(本実施例では315°、タイミング信号HS_PHASE[4:0]の値が28)未満の範囲では、計数結果LATCH2[8:0]を選択し、高速クロックRCLK1の位相が第3の位相値以上360°未満の範囲では、計数結果LATCH1[8:0]を選択する。
【0063】
例えば高速クロックRCLK2,RCLK3の立ち下がりからの経過時間が最低Low幅(Min Error)に対して十分な余裕がなく、高速クロックRCLK1の立ち下がりからの経過時間が最低Low幅に対して十分な余裕がある期間では、セレクタ20aは、計数結果LATCH1[8:0]を選択する。また、高速クロックRCLK2の立ち下がりからの経過時間が最低Low幅(Min Error)に対して十分な余裕がなく、高速クロックRCLK1,RCLK3の立ち下がりからの経過時間が最低Low幅に対して十分な余裕がある期間では、セレクタ20aは、計数結果LATCH3[8:0]を選択する。さらに、高速クロックRCLK1の立ち下がりからの経過時間が最低Low幅に対して十分な余裕がなく、高速クロックRCLK2,RCLK3の立ち下がりからの経過時間が最低Low幅に対して十分な余裕がある期間では、セレクタ20aは、計数結果LATCH2[8:0]を選択する。
【0064】
なお、実際の設計時はIC(Integrated Circuit)製造会社のデータシートや回路レイアウト情報を元にLow幅違反となるHS_PHASEの範囲とLATCH1[8:0],LATCH2[8:0],LATCH3[8:0]の選択の境界とを決定することになる。
図3の例では、高速カウンタ12a,12b,12cを構成するフリップフロップのクロックの最低Low幅保持期間(Min Error)を250ps、TDCの分解能を50psとした前提で境界を決定している。
【0065】
図4は本実施例においてスキューが発生した場合の高速クロックRCLK1,RCLK2,RCLK3とタイミング信号HS_PHASE[4:0]との関係の例を示している。
図4の例では、配線遅延により、
図4の4000,4001で示すようにタイミング信号HS_PHASE[4:0]に対して高速クロックRCLK1,RCLK2,RCLK3が300ps遅れている。
【0066】
このような遅延が発生している場合に、発振停止信号ROSC_STOPをタイミング信号HS_PHASE[4:0]が9または10のときに受け取ったとしても、最低Low幅(Min Error)保持期間を満たすことができるので、高速カウンタ12a,12b,12cの誤動作を回避することができる。
【0067】
リングオシレータ11aに対して非同期で発振停止信号ROSC_STOPが入力されることにより発生するグリッチに対しては、高速クロックRCLK1,RCLK2,RCLK3を発振停止信号ROSC_STOPでORマスクした高速クロックROSC_CLK1,ROSC_CLK2,ROSC_CLK3を高速カウンタ12a,12b,12cのクロックとして使用することで回避することができる。
【0068】
ただし、時間算出部21aは、高速クロックROSC_CLK1,ROSC_CLK2,ROSC_CLK3と発振停止信号ROSC_STOPの位相関係によっては、計数結果LATCH1[8:0],LATCH2[8:0],LATCH3[8:0]のいずれかの値を1減算してから、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する必要がある。
【0069】
例えば
図5の例では、タイミング信号HS_PHASE[4:0]の値が0(高速クロックRCLK1の位相が0°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。
図5の101では、高速クロックROSC_CLK2にグリッチが発生している。セレクタ20aは、上記の動作により計数結果LATCH1[8:0](HS_CNT1[8:0])を選択する。時間算出部21aは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が0の場合は、取り込んだ計数結果LATCH1[8:0]を1減算する必要はない。
【0070】
図6の例は、タイミング信号HS_PHASE[4:0]の値が9(高速クロックRCLK1の位相が101.25°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。セレクタ20aは、上記の動作により計数結果LATCH3[8:0](HS_CNT3[8:0])を選択する。時間算出部21aは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が9の場合は、取り込んだ計数結果LATCH3[8:0]を1減算してから時間間隔を算出する。
【0071】
図7の例は、タイミング信号HS_PHASE[4:0]の値が16(高速クロックRCLK1の位相が180°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。
図7の102では、高速クロックROSC_CLK1にグリッチが発生している。セレクタ20aは、上記の動作により計数結果LATCH2[8:0](HS_CNT2[8:0])を選択する。時間算出部21aは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が16の場合は、取り込んだ計数結果LATCH2[8:0]を1減算してから時間間隔を算出する。
【0072】
図8の例は、タイミング信号HS_PHASE[4:0]の値が25(高速クロックRCLK1の位相が281.25°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。
図8の103では、高速クロックROSC_CLK3にグリッチが発生している。セレクタ20aは、上記の動作により計数結果LATCH2[8:0](HS_CNT2[8:0])を選択する。時間算出部21aは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が25の場合は、取り込んだ計数結果LATCH2[8:0]を1減算してから時間間隔を算出する。
【0073】
以上の計数結果の補正の要否を
図3に記述すると、
図9のようになる。時間算出部21aは、高速クロックRCLK1の位相が第1の位相値以上360°未満の範囲のときにセレクタ20aによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから時間間隔を算出すればよい。
【0074】
以上の構成により、本実施例では、各高速カウンタ12a,12b,12cの最低Low幅保持期間の余裕を拡張した。その結果、配線レイアウトにより高速クロックRCLK1,RCLK2,RCLK3とタイミング信号HS_PHASE[4:0]との位相関係が崩れたとしても、正確な時間計測を低消費電力で実現することができる。
【0075】
なお、本実施例では、リングオシレータ11aの遅延回路(NAND回路110とバッファ回路111-1~111-15)の段数を16段(TAP[0]~TAP[15])としているが、この段数は16以外でも本発明にとっては問題とならない。ただし、2のべき乗数の段数としておくと、高速カウンタ12a,12bのカウント値(LATCH1[8:0],LATCH2[8:0])とリングオシレータ11aの位相値(HS_PHASE[4:0])の結合を単純化できる。
【0076】
例えば、LATCH1[8:0]を選択した場合の時間計測値は、{LATCH1[8:0],HS_PHASE[4:0]}というようにHS_PHASEを下位ビット側、LATCH1を上位ビット側に連接することで得られる。リングオシレータ11aの段数が2のべき乗数でない場合のカウント値と位相値の結合の単純化案については例えば、特許第2868266号で述べられている。
【0077】
[第2の実施例]
次に、本発明の第2の実施例について説明する。第1の実施例では、高速カウンタを3個用意し、これら3個の高速カウンタの中からカウント値を1つ選択する構成としたが、リングオシレータの発振周波数を310MHzに落として時間計測をする場合などにおいては1TAPあたりの遅延値が約100ps((1/300MHz)/32Tap=100.8ps)となり、
図4に示した場合でも高速カウンタの最低Low幅保持期間を満たすことができる。
【0078】
そこで、高速カウンタを2個使用するモードと3個使用するモードの切り替えを可能とし、必要な時間計測分解能が100psよりも小さい場合は高速カウンタ3個使用モード、必要な時間計測分解能が100psよりも大きい場合は高速カウンタ2個使用モードとすることで、製品に必要な時間分解能に応じて時間計測回路の消費電流を削減することができる。
【0079】
図10は本実施例に係る時間計測回路の構成を示す回路図であり、
図1と同一の構成には同一の符号を付してある。本実施例の時間計測回路は、Dフリップフロップ回路10と、リングオシレータ11aと、高速カウンタ12a,12b,12cと、バッファ回路13と、インバータ14,23と、OR回路15,16,24と、エッジ検出回路17と、Dフリップフロップ回路18a,18b,18cと、エンコーダ19と、セレクタ20bと、時間算出部21bと、OR回路24と高速カウンタ12cとの間に挿入され、モード切替信号FINE_MODEと高速クロックROSC_CLK3との論理積の結果をクロック入力として高速カウンタ12cに与えるAND回路26とを備えている。
【0080】
高速カウンタ3個使用モードの場合、外部から入力される1ビットのモード切替信号FINE_MODEが“1”(1’b1)となる。この場合、AND回路26の出力は高速クロックROSC_CLK3と同じである。
モード切替信号FINE_MODEが“1”の場合、セレクタ20b、時間算出部21bは、第1の実施例のセレクタ20a、時間算出部21aと同じ処理を行う。
【0081】
一方、高速カウンタ2個使用モードの場合、モード切替信号FINE_MODEが“0”(1’b0)となる。この場合、AND回路26の出力は常に“0”である。高速カウンタ12cへの入力クロックを停止させることで、高速カウンタ12cの消費電流を低減することができる。
【0082】
モード切替信号FINE_MODEが“0”の場合、セレクタ20bは、
図22のセレクタ20と同じ処理を行う。このときのセレクタ20bの処理を
図24を用いて説明する。モード切替信号FINE_MODEが“0”の場合、セレクタ20bは、Dフリップフロップ回路18a,18bによってラッチされた8ビットの計数結果LATCH1[8:0],LATCH2[8:0]のうち、グリッチ(計数エラー)が発生していない方の高速カウンタによって得られた計数結果を真値として選択する。
【0083】
図24の例では、セレクタ20bは、高速クロックRCLK1の位相が0°(タイミング信号HS_PHASE[4:0]の値が0)以上、かつ180°よりも小さい所定の第4の位相値(
図24の例では101.25°、タイミング信号HS_PHASE[4:0]の値が9)未満の範囲では、計数結果LATCH1[8:0]を選択する。
【0084】
また、セレクタ20bは、高速クロックRCLK1の位相が第4の位相値以上、かつ360°よりも小さい所定の第5の位相値(
図24の例では281.25°、タイミング信号HS_PHASE[4:0]の値が25)未満の範囲では、計数結果LATCH2[8:0]を選択し、高速クロックRCLK1の位相が第5の位相値以上360°未満の範囲では、計数結果LATCH1[8:0]を選択する。
【0085】
図11は高速カウンタ2個使用モードにおいてスキューが発生した場合の高速クロックRCLK1,RCLK2とタイミング信号HS_PHASE[4:0]との関係の例を示している。
図11の例では、配線遅延により、
図11の1100で示すようにタイミング信号HS_PHASE[4:0]に対して高速クロックRCLK1,RCLK2が約600ps遅れている。
【0086】
1TAPあたりの遅延値を100psとすると、発振停止信号ROSC_STOPをタイミング信号HS_PHASE[4:0]が9または10のときに受け取ったとしても、最低Low幅(Min Error)保持期間250psを満たすことができるので、高速カウンタ12a,12bの誤動作を回避することができる。
【0087】
モード切替信号FINE_MODEが“0”の場合、時間算出部21bは、
図22の時間算出部21と同様に、取り込み許可信号HS_CNT_ENが有意(High)になった時点でセレクタ20bから出力された計数結果を取り込む。時間算出部21bは、取り込んだ計数結果に基づいて、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する。
【0088】
高速カウンタ3個使用モードの場合と同様に、時間算出部21bは、高速クロックROSC_CLK1,ROSC_CLK2と発振停止信号ROSC_STOPの位相関係によっては、計数結果LATCH1[8:0]またはLATCH2[8:0]の値を1減算してから、発振開始信号ROSC_STARTの立ち上がりから発振停止信号ROSC_STOPの立ち上がりまでの時間間隔を算出する必要がある。
【0089】
例えば
図12の例では、タイミング信号HS_PHASE[4:0]の値が0(高速クロックRCLK1の位相が0°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。
図12の104では、高速クロックROSC_CLK2にグリッチが発生している。セレクタ20bは、上記の動作により計数結果LATCH1[8:0](HS_CNT1[8:0])を選択する。時間算出部21bは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が0の場合は、取り込んだ計数結果LATCH1[8:0]を1減算する必要はない。
【0090】
図13の例は、タイミング信号HS_PHASE[4:0]の値が9(高速クロックRCLK1の位相が101.25°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。セレクタ20bは、上記の動作により計数結果LATCH2[8:0](HS_CNT2[8:0])を選択する。時間算出部21bは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が9の場合は、取り込んだ計数結果LATCH2[8:0]を1減算してから時間間隔を算出する。
【0091】
図14の例は、タイミング信号HS_PHASE[4:0]の値が16(高速クロックRCLK1の位相が180°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。
図14の105では、高速クロックROSC_CLK1にグリッチが発生している。セレクタ20bは、上記の動作により計数結果LATCH2[8:0](HS_CNT2[8:0])を選択する。時間算出部21bは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が16の場合は、取り込んだ計数結果LATCH2[8:0]を1減算してから時間間隔を算出する。
【0092】
図15の例は、タイミング信号HS_PHASE[4:0]の値が25(高速クロックRCLK1の位相が281.25°)のタイミングで発振停止信号ROSC_STOPの立ち上がりを受け取った場合を示している。セレクタ20bは、上記の動作により計数結果LATCH1[8:0](HS_CNT1[8:0])を選択する。時間算出部21bは、取り込み許可信号HS_CNT_ENが有意(High)になった時点でタイミング信号HS_PHASE[4:0]の値が25の場合は、取り込んだ計数結果LATCH1[8:0]を1減算してから時間間隔を算出する。
【0093】
以上の計数結果の補正の要否を
図24に記述すると、
図16のようになる。時間算出部21bは、高速クロックRCLK1の位相が第4の位相値以上360°未満の範囲のときにセレクタ20bによって選択された計数結果を取り込んだ場合に、この計数結果を1減算してから時間間隔を算出すればよい。
【0094】
[第3の実施例]
次に、本発明の第3の実施例について説明する。
図17は本実施例に係る時間計測回路の構成を示す回路図であり、
図1、
図10と同一の構成には同一の符号を付してある。本実施例の時間計測回路は、Dフリップフロップ回路10と、リングオシレータ11aと、高速カウンタ12a,12b,12cと、バッファ回路13と、インバータ14,23と、OR回路15,16,24と、エッジ検出回路17と、Dフリップフロップ回路18a,18b,18cと、エンコーダ19と、セレクタ20cと、時間算出部21cと、AND回路26とを備えている。
【0095】
第2の実施例と同様に、高速カウンタ2個使用モードの場合、外部から入力されるモード切替信号FINE_MODEが“0”(1’b0)となる。第2の実施例では、セレクタ20bによるLATCH1[8:0]とLATCH2[8:0]の選択の境界は固定であった。
【0096】
これに対して、本実施例では、外部から入力される3ビットの位相値変更信号LAT1_STRT[2:0],LAT2_STRT[2:0]によって、セレクタ20cによるLATCH1[8:0]とLATCH2[8:0]の選択の境界を変更することができる。高速カウンタ2個使用モードにおいてグリッチが発生した計数結果の使用を位相値変更信号LAT1_STRT[2:0],LAT2_STRT[2:0]によって避けた例を
図18(A)、
図18(B)に示す。
【0097】
以下の説明では、位相値をタイミング信号HS_PHASE[4:0]の値で記述する。セレクタ20cと時間算出部21cとは、モード切替信号FINE_MODEが“0”で、位相値変更信号LAT1_STRT[2:0]が“000”(3’b000)の場合、第5の位相値(計数結果LATCH1[8:0]の選択開始位相値)を24とする。同様に、セレクタ20cと時間算出部21cとは、位相値変更信号LAT1_STRT[2:0]が“001”,“010”,“011”,“100”,“101”,“110”,“111”の場合、それぞれ第5の位相値を25,26,27,28,29,30,31とする。この位相値変更信号LAT1_STRT[2:0]と第5の位相値との関係を表1に示す。
【0098】
【0099】
また、セレクタ20cと時間算出部21cとは、モード切替信号FINE_MODEが“0”で、位相値変更信号LAT2_STRT[2:0]が“000”(3’b000)の場合、第4の位相値(計数結果LATCH2[8:0]の選択開始位相値)を8とする。同様に、セレクタ20cと時間算出部21cとは、位相値変更信号LAT2_STRT[2:0]が“001”,“010”,“011”,“100”,“101”,“110”,“111”の場合、それぞれ第4の位相値を9,10,11,12,13,14,15とする。この位相値変更信号LAT2_STRT[2:0]と第4の位相値との関係を表2に示す。
【0100】
【0101】
図18(A)の例では、位相値変更信号LAT1_STRT[2:0],LAT2_STRT[2:0]が共に“001”に設定されていることにより、第4の位相値が9、第5の位相値が25である。この場合、発振停止信号ROSC_STOPをタイミング信号HS_PHASE[4:0]が9または10のときに受け取ったときに、セレクタ20cが計数結果LATCH2[8:0]を選択するため、高速カウンタ12bの最低Low幅(Min Error)保持期間を満たせず、異常な計測結果となる虞れがある。
【0102】
一方、
図18(A)の例では、位相値変更信号LAT1_STRT[2:0]を“100”、LAT2_STRT[2:0]を“101”に設定したことにより、第4の位相値が13、第5の位相値が28に変更されている。このように、計数結果LATCH1[8:0]とLATCH2[8:0]の選択の境界を変更することにより、グリッチが発生したクロックでカウントした計数結果を避けることができ、正確な時間計測を行うことができる。
【0103】
なお、時間算出部21cの動作は第2の実施例の時間算出部21bと同様であるが、高速カウンタ2個使用モードにおける第4の位相値の変更により、時間算出部21cが計数結果から1を減算するRCLK1の位相の範囲も変更されることは言うまでもない。
【0104】
次に、高速カウンタ3個使用モードにおいても、高速カウンタ2個使用モードと同様に、外部から入力される3ビットの位相値変更信号LAT1_STRT[2:0],LAT2_STRT[2:0],LAT3_STRT[2:0]によって、セレクタ20cによるLATCH1[8:0]とLATCH2[8:0]とLATCH3[8:0]の選択の境界を変更することが可能である。
【0105】
セレクタ20cと時間算出部21cとは、モード切替信号FINE_MODEが“1”で、位相値変更信号LAT1_STRT[2:0]が“000”(3’b000)の場合、第3の位相値(計数結果LATCH1[8:0]の選択開始位相値)を24とする。同様に、セレクタ20cと時間算出部21cとは、位相値変更信号LAT1_STRT[2:0]が“001”,“010”,“011”,“100”,“101”,“110”,“111”の場合、それぞれ第3の位相値を25,26,27,28,29,30,31とする。この位相値変更信号LAT1_STRT[2:0]と第3の位相値との関係を表3に示す。
【0106】
【0107】
また、セレクタ20cと時間算出部21cとは、モード切替信号FINE_MODEが“1”で、位相値変更信号LAT2_STRT[2:0]が“000”(3’b000)の場合、第2の位相値(計数結果LATCH2[8:0]の選択開始位相値)を12とする。同様に、セレクタ20cと時間算出部21cとは、位相値変更信号LAT2_STRT[2:0]が“001”,“010”,“011”,“100”,“101”,“110”,“111”の場合、それぞれ第2の位相値を13,14,15,16,17,18,19とする。この位相値変更信号LAT2_STRT[2:0]と第2の位相値との関係を表4に示す。
【0108】
【0109】
また、セレクタ20cと時間算出部21cとは、モード切替信号FINE_MODEが“1”で、位相値変更信号LAT3_STRT[2:0]が“000”(3’b000)の場合、第1の位相値(計数結果LATCH3[8:0]の選択開始位相値)を4とする。同様に、セレクタ20cと時間算出部21cとは、位相値変更信号LAT3_STRT[2:0]が“001”,“010”,“011”,“100”,“101”,“110”,“111”の場合、それぞれ第1の位相値を5,6,7,8,9,10,11とする。この位相値変更信号LAT3_STRT[2:0]と第1の位相値との関係を表5に示す。
【0110】
【0111】
こうして、高速カウンタ3個使用モードにおいても、計数結果LATCH1[8:0]とLATCH2[8:0]とLATCH3[8:0]の選択の境界を変更することができる。したがって、本実施例によれば、回路レイアウト完了後に高速クロックRCLK1,RCLK2,RCLK3とタイミング信号HS_PHASE[4:0]との位相関係が設計時に想定した関係と異なっていることが分かった場合、回路修正ではなく設定変更で正常な時間計測を行うことができる。
【0112】
なお、時間算出部21cの動作は第2の実施例の時間算出部21bと同様であるが、高速カウンタ3個使用モードにおける第1の位相値の変更により、時間算出部21cが計数結果から1を減算するRCLK1の位相の範囲も変更されることは言うまでもない。
【0113】
第1~第3の実施例では、リングオシレータ11aのバッファ回路111-7から出力された高速クロックTAP[7]を論理反転したものを高速クロックRCLK3としたが、高速クロックRCLK1,RCLK2と位相が異なるのであれば、例えば高速クロックTAP[8]やTAP[9]などを論理反転したものを高速クロックRCLK3としてもよい。高速クロックRCLK3は、高速クロックRCLK1よりも位相が遅れ、高速クロックRCLK2よりも位相が進んでいるものであればよい。
【0114】
第1~第3の実施例で説明した時間計測回路の時間算出部21a~21cは、CPU(Central Processing Unit)、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。このコンピュータの構成例を
図19に示す。
【0115】
コンピュータは、CPU300と、記憶装置301と、インターフェース装置(以下、I/Fと略する)302とを備えている。I/F302には、セレクタ20a~20cとエッジ検出回路17とDフリップフロップ回路18a~18cとエンコーダ19などが接続される。このようなコンピュータにおいて、本発明を実現させるためのプログラムは記憶装置301に格納される。CPU300は、記憶装置301に格納されたプログラムに従って第1~第3の実施例で説明した処理を実行する。
【産業上の利用可能性】
【0116】
本発明は、psecオーダーの時間を計測する技術に適用することができる。
【符号の説明】
【0117】
10,18a~18c,112-1~112-16…Dフリップフロップ回路,11a…リングオシレータ、12a~12c…高速カウンタ、13,111-1~111-15…バッファ回路、14,23…インバータ、15,16,24,…OR回路、17…エッジ検出回路、19…エンコーダ、20a~20c…セレクタ、21a~21c…時間算出部、25…論理回路、26…AND回路、110…NAND回路。